PHP Internals Book 中文版

你看到的是PHP内核中文版,翻译自PHP Internals Book。为什么要翻译对技术的饥渴对英语的热爱方便汉语作为母语的人学习交流官方网站PHP Internals BooGithub(更新最快https://github.com/GenialX/php-internals-book-in-chines关于作者Genial内容目录IntroductioUsing the PHP build systeBuilding PHBuilding PHP extensionCreating PHP extensionZvalBasic structurMemory managemenCasts and operationImplementing functionHashtableBasic structurHashtable APSymtable and array AP...阅读全文

禁止tmux窗口自动命名

关于tmux的多窗口,用起来可谓非常方便。但,也许在默认的tmux配置下,一样和我被一个小问题困扰。那就是,tmux的窗口名称总是会随着执行的命令不同而变动。关于这一点,可用如下的方式来解决更改tmux配置文件打开~/tmux.conf文件,增加(或修改)如下内容更改oh-my-zsh配置文件当然,如果你在用oh-my-zsh的话。那么,还需要进行如下修改打开~/.zshrc文件,增加(或修改)如下内容参考文章:https://stackoverflow.com/questions/38543763/tmux-will-not-stop-auto-renaming-window阅读全文

3年PHPer的面试总结

之前看到一篇文章《八年phper的高级工程师面试之路》,然后最近我也在面试,面了有百度、360、滴滴、小米、微博、58赶集、搜狗、瓜子二手车等公司,最后也进了心仪的公司,面试过程中学到了很多东西,所以也想和大家分享一下,虽然我的工作经验才3年左右。 注:下面题目的答案只是我思考和查询资料的结果,并不代表完全准确,有错误的地方大家可以指正,有更好的方案可以提出,大家一起讨论。算法1.反转函数的实现2.两个有序int集合是否有相同元素的最优算法3.将一个数组中的元素随机(打乱4.给一个有数字和字母的字符串,让连着的数字和字母对应5.求n以内的质数(质数的定义:在大于1的自然数中,除了1和它本身意外,无法被其他自然数整除的数思路: 1.(质数筛选定理)n不能够被不大于根号n的任何质数整除,则n是一个质数 2.除了2的偶数都不是质数 代码如下6.约瑟夫环问题相关题目:一群猴子排成一圈,按1,...阅读全文

ZigZag Conversion(math)

QuestioThe string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibilityP A H A P L S I I Y I And then read line by line: "PAHNAPLSIIGYIR"Write the code that will take a string and make this conversion given a number of rowsstring convert(string text, int nRows);convert("PAYPAL...阅读全文

翻转整型数(水题)

正题Reverse digits of an integer.Example1: x = 123, return 32Example2: x = -123, return -32思考改题为简单难度(水题),根据题意可以依次取到给定的整型数x的最高位到最低的数,然后依次将其乘10的x次幂后进行累加即可得到结果。这里,要知道32位的整型一共有九个0,故声明i=1000000000;代码原题:https://leetcode.com/problems/reverse-integer/description阅读全文

最长回文字符串题解(动态规划)

LeetCode正题Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.ExampleInput: "babad"Output: "bab"Note: "aba" is also a valid answer.ExampleInput: "cbbd"Output: "bb"思考回文字符串即正向顺序和反向顺序的字幕排序是一致的字段串。题的大意为寻找一个指定字符串中的最长的回文字符串。首选,暴力解法需要遍历所有子串并判断子串是否为回文字符串。假设给定字符串长度n,那么子串的总数为​n(n+1)/2(即1 2 3 ... n的和),即需要O(n^2),然后判断每个子串是否为回文字符串的时间复杂度为O(n),即总共需要...阅读全文

最长不重复子字符串问题(动态规划)

问题Given a string, find the length of the longest substring without repeating characters.ExamplesGiven "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the length of 1.Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequenceand not a substring.分析首先,这种题肯定不能暴力来解决,否则肯定会超时。所以,考虑用一个哈希表(Map&l...阅读全文

修正 Vim(Mac) 有时无法正确提交 Git Commit Message 的问题

和 Subversion 一样,Git 也可以为 Commit Message 设置一个默认的编辑器,命令如下git config --global core.editor vi不过我在 Mac OS X 系统使用 Git 的过程中,偶尔会遇到如下的情况*** Commands **1: status 2: update 3: revert 4: add untracke5: patch 6: diff 7: quit 8: helWhat now>Bye.error: There was a problem with the editor 'vim'.Please supply the message using either -m or -F option.这种情况基本上都是出现在我打错字的时候,开始以为是输入法引起的 Vim 状态异常,不过出现...阅读全文

公司没大牛带,需要离职么?

最近,我小密圈的一位圈友问了我这么一个问题张哥,我在想要不要辞职了,我来公司 8 个月了,也确实学到了好多东西,但我最近感觉天天写的代码都一模一样,持续两个月了,这让我有些不安,公司最厉害的程序员水平都跟我差不多,我想辞职了去找一家产品公司,可又怕我水平不高别人看不上,我到底是辞不辞?这个问题很有代表性,因为我不止遇到过一次,有很多人在后台问过我类似问题,今天姑且把我的回复统一发在公众号上,希望对同样有类似困惑的同学一点帮助与借鉴。首先,毫无疑问,公司里如果有大牛,能够得到大牛的指导当然是有帮助的,因为一些经验与教训只有亲自经历过的才能了解学习到,有大牛的指导可以避免少走些弯路。但是,我要告诉你们的是,大牛们哪有那么多时间与精力去带你啊,每个人在公司都是很忙的,没有任何人有责任、有义务去手把手带你。可能你会说,我只需要大牛偶尔指导下我就好了,避免少走些弯路,也占用不了大牛多少时间。但是哪...阅读全文

Topic:simple is the best V.S. no free lunch——SVM V.S. other models

今天听一个讲述SVM(Support Vector Machine)模型与其他模型区别的讲座,这里整理如下:(主要参考书籍是bengio先生的《deep learning》还有周志华老师的西瓜书《机器学习》svm的思维还是很bug(这里是闪光点的意思,惊艳)的,解决问题的角度啊,很吸引人,很神奇的思维,有很直观的视角和很严格的数学基础。svm的反其道行之的思想太好了,其他模型,想分的好,,,都是试图让模型的capacity变大(这里capacity指:样本数据),SVM恰恰相反,SVM的精髓是simple is the best,而其他的是 no free lunch。一、初始阶段咱今天主题是讨论两大高手的对决,第一大高手,叫做no free lunch,分类在他的眼中,很简单。有一堆样本x1~xN,,有一堆类别标号1~K,这个高手眼中的分类,是寻找一个函数f,使得f(x)约等于他的类别...阅读全文

Regression splines

1.作用:做数据平滑(smoothing),换句话说,进行数据拟合,预测数据发展趋势。2. 与regression analysis(回归分析)的区别:回归分析方法的模型建立,比如:linear model(线性模型),其表达式唯一(没有分段之说);而对于regression splines来说,对一组数据来说,其构建的模型表达式,直白的说是分段函数,或者在模型表达式中加入hinge function产生kink/knot(节点,转折点,或者分段点)更好的表示数据延伸趋势。Regression splines的模型最小二乘误差比linear model的要小,也即是说明了:该模型的鲁棒性。3. Regression splines 模型这个函数是基础函数B(x)加权之后的和。Ci是系数,也可以称为是单个基础函数Bi(x)的权重,其实就是我们初中学的:直线的斜率。组合之后,构成非线性方程,在...阅读全文

TDD(测试驱动开发)的好处

你会更加站在用户的角度去看你将要完成的产品,你要尽可能想到用户所有进行的操作。而不是从程序员的角度想用户应该会如何去使用我们的产品。测试用例是在对功能进行测试。在写代码之前先写测试用例,可以对我们编写代码提供指导性的参考。防止我们漏掉一些功能。它使我们对自己代码有了信心,因为我们事先设计好的所有测试用例都Pass了。如果在更改代码后测试用例不能通过,我们可以根据不能通过的测试用例精确的定位问题,并轻而易举的解决的这个bug。哈!我们的一整套完备的测试用例在这里替我们把关(把的什么关?),我们就可以十分安全的使用极限编程的另一个最重要的工具——重构。重构改变的是代码的内部结构,而不会改变外部接口功能。知道在做重构时测试用例是把的什么关了吧!很明显,测试用例是保证我们在进行重构时,不会影响到代码的外部接口功能。所以我刚刚说,我们进行的重构是十分安全的。基于第5点,我们找到了重构的信心,必要时候...阅读全文

编程的智慧

编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。反复推敲代码既然“天才是百分之一的灵感,百分之九十九的汗水”,那我先来谈谈这汗水的部分吧。有人问我,提高编程水平最有效的办法是什么?我想了很久,终于发现最有效的办法,其实是反反复复地修改和推敲代码。在IU的时候,由于Dan Friedman的严格教导,我们以写出冗长复杂的代码为耻。如果你代多写了几行,这老顽童就会大笑,说:“当年我解决这个问题,只写了5行代码,你回去再想想吧……” 当然,有时候他只是夸张一下,故意刺激你的,其实没有人能只用5行代码完成。然而这种提炼代码,减少冗余的习惯,却...阅读全文