嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

最新

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

周梦康 发表于 2017-10-18 367 次浏览 标签 : 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 140 次浏览

需求

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

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

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

分析

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

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

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

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

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

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

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

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

2017 年四季度规划

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

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

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

博客升级啦

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

全站响应式支持

博客一直没有使用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 168 次浏览

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

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

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

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

推荐

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

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

优惠链接

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

热身篇

服务治理原理深入浅出

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

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

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

一个小需求

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

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

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

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

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

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

入门不要拿着放大镜去学

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

做的玩,给单调的内部分享视频加上一个 chrome 弹幕插件

周梦康 发表于 2017-03-10 5069 次浏览

只有直播没有弹幕,能行吗?昨天公司举行了一场大会,我们只能在屏幕前看直播,所以我做了这个插件来给直播加上弹幕。

项目地址:https://github.com/zhoumengkang/chrome-plugin-danmu

演示地址:http://mengkang.net/demo/websocket/

src 目录是源代码,src.crx是打包的扩展,将src.crx拖入chrome插件列表就安装成功了,然后对比演示地址的前后效果。

chrome.png

AIR JORDAN 13 RETRO OG 'WHITE/RED'

周梦康 发表于 2017-02-16 1262 次浏览

看到微博上有 aj13 发售,虽然不是我最最喜欢的款,也是非常喜欢的了!准备出手!

Air Jordan XIII 的设计灵感来自 MJ 黑猫一般的天性。1997-1998 年赛季,MJ 穿上这款由汀克·哈特菲尔德打造的设计,完成了职业生涯第六冠的拼夺。在此期间,该设计推出了多款芝加哥灵感配色。如今,近二十年过去,Air Jordan XIII 以元年配色重归大众视野。

 

2 月 18 日在 Nike.com 推出男码和儿童码。


http://www.nike.com/cn/zh_cn/launch/c/2017-02/air-jordan-13-retro-og-white-red

AIR-JORDAN-13-RETRO-OG-WHITE-RED-PAIR.jpg

valgrind 检测 php-fpm 内存泄漏

周梦康 发表于 2016-12-09 7362 次浏览

最近线上服务器安装了一些扩展,导致 php-fpm 内存增长过快,虽然可以通过配置最大请求数和定时脚本来重启 php-fpm ,但是也抱着学习折腾的精神来学习下valgrind的使用。

下面的配置都是在我自己的服务器上测试,就是该博客运行的服务器上。

接触了下 ansible 不错,也推荐给大家哈

周梦康 发表于 2016-12-05 7395 次浏览

作为一个伪运维,肯定要批量操作服务器集群了,单台依次操作,真是难受啊。有没有工具能够一次执行多端显示呢?听说ansible很强大,瞎折腾了下,ok,满足需求,非常实用。不过自己还是比较笨,学一些新工具总是很慢。

搭同事的车一起玩了下influxdb

周梦康 发表于 2016-10-21 8635 次浏览 标签 : influxdb

之前有一个需求,运营需要能看到某某功能长连接在线人数是多少,比如发完 push 之后是多少,能够实时得到运营手段的反馈。

我比较懒,能用简单的办法搞定,就不喜欢习惯用开源的东西,因为觉得自己学习的也比较慢,但是不得不说这种快速上手一个陌生产品的能力很重要,我很缺乏这种能力。

我们提供一个长连接服务,占用端口8080,我最初的方式通过 shell 脚本做一个简单的监控,数据都直接写在了日志文件里。

快速使用 netty 轻松打造一个 websocket 服务

周梦康 发表于 2016-07-02 14398 次浏览 标签 : Java netty

今年被称为直播元年,有直播就有聊天,如果你这时候还不接触下websocket,那就太 out 了。

我们下面则将一些实际场景都添加进去,比如用户身份的验证,游客只能浏览不能发言,多房间(频道)的聊天。

该博客非常适合和我一样的 Java 新手,非常适合作为学习 Java 的切入点,不需要考虑tomcatspringmybatis等。