顶置

PHP 进阶之路 (3275)

最新

一次 java.io.IOException: Connection reset by peer 故障排查

周梦康 发表于 2017-12-19 4832 次浏览 标签 : Java

我的弹幕服务,代码换了个环境运行,虽然服务可用,但是发现出现了如下情况,基本1秒输出来一次:

java.io.IOException: Connection reset by peer
  at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
  at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
...

因为我有两个网卡,请求是从 eth0 进,从 eth1 出,我尝试使用tcpdump -i any 发现第三次握手输出的 askno 数据不对。(为什么会这样呢,还不知道,谁知道请告知下

关于提高视觉交互和前后端协同工作效率的一想法

周梦康 发表于 2017-12-10 1685 次浏览

初衷

通过一些明确的规范来提高云栖社区 UED、前端、后端的工作效率。

现状

视觉交互半规范化,不够系统,需要不断的完善

我从聊天记录来看,爱申是做了一些色值等方面的标准和规范,而且交付给了前端同学,前端同学在工作的时候能快速的工作。点赞。

但是没有全部明文列出,不够系统。打个比方,一般的封面图片 hover 需要出现一个放大效果的。由于我们每次外包同学都不一样,导致新外包介入时,就忘了这个效果。
使得5个页面上的有封面的地方都需要去加一个遮罩,然后做完以后,后端同学(我)再把对应的模板也都修改一遍。

这样类似的返工还有很多,比如字号,行间距,padding,margin 等,不仅每次需要 UED 的同学仔细审查,也会需要前端同学不断返工。

ACBA大阿里云事业群首届篮球联赛

周梦康 发表于 2017-12-02 1399 次浏览 标签 : 篮球

早上去没吃饭,帮忙做技术统计,学习新技能了。(汉字不是我写的,我写的没这么丑)下午替补出场,罚球100%命中率,投篮命中率50%,怒砍4分,大获全胜。好久不打球,打了20分钟左右,感觉不怎么累,对方防守强度不够。

感谢公司组织文化部的同学发起了本次比赛。公司的宣传海报都换成了篮球赛的,想必费用也不少吧,每队的球服费用,场地费用,报名人员的保险费用。记得刚来阿里云的时候,因为组织阿里云和追光动画打球,组织文化部的同学在自己周末的时间专程从杭州飞过来租场地,买水果等,忙到好晚。比赛的时候也全程陪同,给大家加油打气。那段时间虽然加班很多,但是那次的确给人一种家的感觉,虽然加班也不那么苦了。

temp4cj.png

为什么鸟哥说 int 再怎么随机也申请不到奇数地址

周梦康 发表于 2017-10-23 4925 次浏览 标签 : C C语言快速入门

鸟哥微博

DingTalk20171023172325.png

为什么要字节对齐

需要字节对齐的根本原因在于CPU访问数据的效率问题。因为CPU每次都是从以4字节(32位CPU)或是8字节(64位CPU)的整数倍的内存地址中读进数据的。(更深入的原因,谁告知下),如果不对齐的话,很有可能一个4字节int需要分两次读取。

数据类型自身的对齐值

按各数据类型自身大小进行对齐。变量的内存地址正好位于它长度的整数倍

PHP 源码探秘 - 为什么 trim 会导致乱码

周梦康 发表于 2017-10-18 3491 次浏览 标签 : php

以下代码:

$tag = "互联网产品、";
$text = rtrim($tag, "、");
print_r($text);

运行,我们可能以为会得到的结果是互联网产品,实际结果是互联网产�。为什么会这样呢?

原理

trim 函数文档

string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] )

该函数不是多字节函数,也就是说,汉字这样的多字节字符,会拿其头或尾的单字节来和后面的$character_mask对应的char数组进行匹配,如果在后面的数组中,则删掉,继续匹配。比如:

echo ltrim("bcdf","abc"); // df

服务治理深入浅出(2)- 远程方法调用的实现

周梦康 发表于 2017-10-17 2457 次浏览

需求

在了解了前面我们关于服务治理出现的必要性之后。我们知道服务治理是建立在众多“服务”基础之上的,那么,第一步,打通这些服务是基础,也就是我们常说的 RPC 远程调用。要像调用本地方法一样调用远程服务器上的方法。

现在简单粗暴口语化的方式来介绍一个需求:

A 服务器上部署的项目中,有一个UserService里面有一个getUserInfo的方法。
B 服务器上想"直接"调用该方法,怎么办?

分析

我们以 PHP 为例来进行分析。
我们希望在 B 服务器上实现类似于 A 服务器上直接调用方式

$userService = new UserService();
$userService->getUserInfo($uid);

构建高性能的弹幕应用 - 小项目也能做性能提升

周梦康 发表于 2017-10-01 3930 次浏览

之前在直播的时候总有同学反映自己做的项目太小,没有优化的场景,那么可以看看我这篇博客,其实优化无处不在,心有多大舞台就有多大,实际没有那么多的流量,可以为那么大的量做准备。

直播是云栖社区的主要模块之一,弹幕服务是在直播频道上线之后,为了更多的互动,提出的。

我主要做了下面的一些迭代:

  • 使用 netty 构建弹幕应用
  • 授权服务与弹幕服务的分离
  • 专题页本地缓存
  • 使用 nginx lua 为 web 应用加速
  • 实时监控在线人数

2017 年四季度规划

周梦康 发表于 2017-09-30 2120 次浏览

依稀记得高中寒暑假大家都会带很多书、试卷回家,结果怎带回家的又怎么带回学校。

但是计划还是要有的,万一实现了呢。至少完成一半吧!

博客升级啦

周梦康 发表于 2017-09-23 2208 次浏览

全站响应式支持

博客一直没有使用boostrap
一是,觉得我的博客太简单没必要弄那么多的css和js,二也能锻炼下自己简单的前端技能。
很多地方都是到处乱抄,不过也还算是比较满意。

博客编辑

去除了原来的百度编辑器,使用markdown编辑器。
markdown 编辑器使用的是 https://github.com/zhoumengkang/mditor 原作者的有点 bug,就是光标总是乱跳,修改了。
markdown 渲染在后端做的,使用 https://github.com/SegmentFault/HyperDown

搜索

之前博客不太多,搜索功能没用,现在有时候自己的博客都找不到了,所以还是加上搜索。
使用国产 http://www.xunsearch.com/doc/php/guide/start.installation

新开两场直播分享 - 零基础打造属于自己的服务治理框架

周梦康 发表于 2017-09-22 1836 次浏览

之前有问过群里同学们对学习服务治理的意向,大家都表示想听。但是备课是在太累,所以后面一直懒得弄。

昨天又有一位同学在群里@我,问什么时候讲服务治理呢。我想自己也不能偷懒了,之前承诺过的课,应该讲讲了,对自己的知识体系也是一个梳理。

很多东西可能你懂,但是要讲出来,其实又好难,备课的时候会发现好多你不知道的细节。

看着大家报名的热情,挺开心;但是想着后面的备课,就心累了哟。真是坐着收钱爽,备课时叫惨

推荐

的确,在后端发展的道路上,在没有大平台的协同实践的实际操作,对服务治理的感觉总是那么高大上却又遥不可及,朦朦胧胧。

但是面试的时候这个点,却又是考核一个人技术高端的重要考点,所以如果大家能真正掌握了它的核心思想那当然是面试加分的利器了。

优惠链接

零基础构建自己的服务治理框架(上)
零基础构建自己的服务治理框架(下)

热身篇

服务治理原理深入浅出

快速上手 nginx lua 开发 - 由 user_agent 来判断显示不同的页面

周梦康 发表于 2017-09-19 3675 次浏览 标签 : Nginx Lua

怎么快速学习一门新的语言呢?如果你已经熟练掌握了一门语言,那么其他语言都是想通的。一个小小的需求,可能会遇到很多问题,但是搜索相关的关键字,就能快速实现出来,完成一个小目标,事半功倍。死记硬背手册,太枯燥了,反正我是看不下去,不如直接来个小项目。

一个小需求

pc、mobile 一个地址有两套页面,需要在后端根据浏览器的 user_agent 来显示不同的页面。
通过 php 来做,当然可以,但是活动页面访问量一般都比较大,想优化些,所以想尝试下 lua。

PHP 进阶之路 - 后端多元化之快速切入 Java 开发

周梦康 发表于 2017-07-28 3551 次浏览 标签 : Java

下面是我直播的文字版,直播地址:https://segmentfault.com/l/1500000009988553

代码:https://github.com/zhoumengkang/netty-http-demo

整个项目我们我又细分了6个版本来演进,希望更加便于大家对比学习。

入门不要拿着放大镜去学

就像盲人摸象一样,他要想弄清楚大象的真实面貌可能要摸很久,就好比我们拿着放大镜在学习 java 一样,java 经过这么多年的发展,可以说非常庞大。如果我们要知道大象长什么样,就应该放下手中的放大镜,向后退远点,反而能够非常清晰的看到它的全貌。学习一门新的语言也一样,有很多很多网上的教程,非常的大而全,一般得系统的学习30~60小时之后才能正式的接触项目开发。基础很重要,但是学习了太多的基础会让大家失去学习的乐趣和自信心。很多知识点其实可以项目之后再补。按需去学,反而是自我驱动着去学习的最佳方式。
比如 hashmap 的哈希分布、哈希碰撞、动态扩容,这些都是我们后期深入提高需要理解的内容,初期,我们只需要知道能拿 hashmap 做什么就行。