最新

Deliverer 1.0.8 支持 PHP5 了

周梦康 发表于 2021-07-03 870 次浏览 标签 : Deliverer

经历了两周的迭代,Deliverer 目前更新到了 1.0.8 。

因为是为了解决祖传代码的问题,也听到群友的一些声音,还是很有必要支持下 PHP5 的,所以这段时间一直在着力解决这个版本兼容问题,没想到问题比较我预计的要难很多。

记录下开发中遇到的问题,主要是体力活,也想分享之后,有兴趣的朋友可以fork一份之后,对代码为什么这么写不那么陌生,期待各位个 PR。

聊一聊 Deliverer 与 Xhprof 的区别

周梦康 发表于 2021-06-27 1052 次浏览 标签 : Deliverer

前几天有位朋友在公众号问我,DelivererXhprof 有什么区别吗?一句话:Xhprof是一个排查性能问题的工具,为系统性能做保障;Deliverer 是一个排查 Bug 的工具,为系统可用性服务。

PHP 祖传代码拯救者 Deliverer 他,来了!

周梦康 发表于 2021-06-22 1724 次浏览 标签 : php 原创

前几日有位群友接手一段祖传代码,排查很久没有解决,准备体统跑路,最终帮其解决,完整的过程见 https://mengkang.net/1470.html 但是最后代码的定位我有一些基于个人经验,实际调用的链路和我预计的不一样,都是靠猜。没有看到完整的调用链路,所以我想着需要一个工具来辅助明确查询到整个完整的调用链。

所以搞了这么个工具,主要是用于一些不熟悉的项目,而且日常环境不好复现的线上场景。

deliverer 祖传代码跑路拯救者 https://github.com/zhoumengkang/deliverer

面向祖传代码 Debug,我挽回了一位准备跑路的程序员

周梦康 发表于 2021-06-14 3339 次浏览 标签 : 原创

交流群的风格突然骤变,没有了往日的灌水扯淡,居然聊起了技术。
看了大家的全部的聊天记录,发现问题并没解决。群里难得这么多人聊技术,抱着问答不断,必有回响的原则,主动勾搭一起看看是什么问题。

大概了解其问题是这样,apache 子进程一直异常退出

聊一聊限流、降级、熔断

周梦康 发表于 2021-05-23 2293 次浏览

熔断

小时候村里一到夏天,全村都开空调,村里总闸的保险丝就会因为用电量太大,自动熔断了,直接停服。股市也有一些极端情况开启熔断处理,不到万不得已,不会熔断。在 Web 工程中熔断的最小单元,也不一定是整个应用,可能只是某个服务。这里不深究学术名词定义。

限流

限流场景我们经常遇到,有时候地铁里就被保安人员给我限流了,双十一抢购也被爸爸限流了。坐地铁之所以能限流是因为我们都要安检,有这个统一的地铁入口;浏览网站被限流是因为访问有统一的域名入口。

当我们需要根据路由规则进行限流,只要把握好网关就很方便的实现限流了

《JustCC》- 一本 Linux C 开发入门小册

周梦康 发表于 2021-03-14 2883 次浏览

缘起

C 语言的教程很多,却缺少一本把基础知识和GNU Linux生态衔接起来的教程,赠人玫瑰,手有余香,索性把自己学习的知识点梳理编辑成册,希望能对新人朋友有所帮助。

在线阅读地址 https://justcc.mengkang.net 水平有限,错误肯定有很多,如果有读者发现了,请留言反馈,感激不尽。

本书的受众

如果你是一名有开发经验的程序员,对 C 语言语法也有所了解,但是却一直觉得自己没有入门,那么希望这本书能帮你打通 C 语言的任督二脉。

本书的定位

它不是一本大而全的书,而是一本衔接各个知识点的书,并不适合当手册来查询,本书只能是一道好吃快餐,没有其他书难啃。

一方面很多知识点本书都会省略,比如一些分支语法、循环语法;另一方面很多知识点,我不会循规蹈矩一次讲全,而是结合难度和场景循序渐进,大而全不仅很难理解,同时也消耗大家的学习热情。

整体脉络上,以 C 语言的发展历史,并结合 GNU/Linux 生态,从基础到项目实战。最后希望大家通过学习,能对开源软件的基础世界有一个全新的认识。

当然要真正入门成为一名专业的 C 语言开发者,我推荐大家,常备着几本秘籍:

  • 《C程序设计语言》
  • 《C专家编程》
  • 《C陷阱与权限》
  • 《Linux C编程一站式学习》

阿里云 - 开发者云招聘 Java 研发/专家(3个坑、北京杭州均可)

周梦康 发表于 2019-11-26 4937 次浏览
工作经验大中型项目三年到五年
学历统招本科
主要技能Java
工作地点北京 / 杭州
级别P6~P7
想做业务负责阿里云开发者云的业务支撑
想做架构整个阿里云用户生态底层架构与服务支撑(挑战巨大)

有兴趣的简历直接发我邮箱 mengkang.zmk@alibaba-inc.com

薪资大家得自己谈,P6~P7的薪资范围很大,阿里云基本上16~19薪
不管合适与否我一定及时给大家回复

PHP 中通过 getopt 解析 GNU C 风格命令行选项

周梦康 发表于 2019-11-16 4421 次浏览

在 PHP 中,当我们在获取命令行参数时,可以通过遍历$argv来获取,其实呢是有规范可循的,也就是 GNU C-style parser for command line options 。

比如使用命令wget下载文件时,使用下面的一些方式来指定option都可以

wget http://mengkang.net/a.jpg -O b.jpg
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -b
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd

我们整理下command line options的规则,首先参数分为短选项名和完整选项名,而且一些还有映射关系。

总结 options 使用规范

  • 短选项名,有一个限制,只能是一个char字符,只能1字节,不能超过1字节,比如上面的第四个命令的最后一个参数就不知道是一个选项还是三个选项了。
  • 短选项名用单个连字符(-)开始
  • 短选项可以一个-后面跟多个选项名
  • 长选项名,则是多字节的的,两个连字符(--)开始
  • 选项与实参之间,可以直接连接,也可以用空格隔开,还可以用等号连接
  • 但是短选项用等号连接值,等号会被视为值的一部分(但是在 php 里面却又兼容了这一点)
  • 选项分为没有值,必须传值,可选传值(也就是可传可不传)

如何定制一款属于程序员的卫衣

周梦康 发表于 2019-10-19 5236 次浏览

我翻开自己的 git commit 一查,这代码没有年代,歪歪斜斜的每行都写着 "业务驱动" 四个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满屏都写着两个词是 "CURD Boy"!

WechatIMG143.png

彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值

周梦康 发表于 2019-10-10 4728 次浏览 标签 : C 汇编

最近准备一个教程,案例的过程中准备了如下代码碎片,演示解析http scheme

char *parse_scheme(const char *url)
{
    char *p = strstr(url,"://");
    return strndup(url,p-url);
}

上面是通过strndup的方式,实际就是malloc,所以最后也需要free
我们知道栈上的数组也能用来存储字符串,那我们可以改写成下面这样吗?

char *parse_scheme(const char *url)
{
    char *p = strstr(url,"://");
    long l = p - url + 1;
    char scheme[l];
    strncpy(scheme, url, l-1);
    return scheme;
}

大多数人都知道不能这样写,因为返回的是栈上的地址,当从该函数返回之后,那段栈空间的操作权也释放了,当再次使用该地址的时候,值就是不确定的了。

那我们今天就一起探讨下出现这样情况的背后的真正原理。

http client 实现 keep-alive 源码探究

周梦康 发表于 2019-10-04 4935 次浏览

前几天在分享"实现自己的wget"的时候,因为我们的请求是一次性的,http 头里设置的Connection: Close。在HTTP/1.1为了提升HTTP 1.0的网络性能,增加了keepalive的特性。那么浏览器在请求的时候都会加上Connection: Keep-Alive的头信息,是如何实现的呢?
我们知道在服务端(nginx)可以通过设置keepalive_timeout来控制连接保持时间,那么http连接的保持需要浏览器(客户端)支持吗?今天咱们一起来通过java.net.HttpURLConnection源码看看客户端是如何维护这些http连接的。

Phper 学 C 兴趣入门 -为什么有时候字符串可以截取有时候又不行

周梦康 发表于 2019-09-09 4822 次浏览

需求

假如有这样的一个需求,有个日期,想要截取获得其年份。我们用 php 可以使用explode,也可以使用strtok

$a = "2019-09-10 00:00:00";
echo strtok($a,"-"); // 2019

可能大家对strtok不太熟悉,它的作用是用-来分割$a获取子串,循环调用可以达到和explode差不多的效果。具体可以看下官方手册里面的 demo https://www.php.net/manual/zh/function.strtok.php

实验

实验1

我之所以用strtok呢,是因为C 语言里也有这个函数,这个函数比较“怪”,每一次调用,是将字符串中找到的-替换为\0,然后返回标记字符串的首地址。

Phper 学 C 兴趣入门 - 为什么 php 手册里经常说某个字符串函数是二进制安全的

周梦康 发表于 2019-09-05 4845 次浏览 标签 : C php

引子

为什么 php 手册里经常说某个函数是二级制安全的?我们平常使用函数的时候也没发现有什么区别呀,那么二进制安全到底是什么意思呢?

Php 实验

<?php
echo strlen("abc"); // 3
echo strlen("abc\0"); // 4
echo strlen("abc\0d"); // 5
echo strlen("abc\0def"); // 7