2019
07-01
07-01
php - tcp 粘包/拆包实例 HOT
日常工作中经常遇到的tcp 场景可能是短连接单个消息的模式,客户端发送一条消息后便关闭连接,服务端循环读取到EOF 即可得到一条完整的消息。但如果是短连接多个消息或长链接模式 下,就可能会发生粘包,客户端不关闭服务端无法通过EOL 确定消息读取完毕的问题。这就需要定义协议和拆包。
继续阅读 >
PHP 代码分享
MongoDB 教程
正则表达式
jQuery 教程
JavaScript 代码片段
PHP7 教程
日常工作中经常遇到的tcp 场景可能是短连接单个消息的模式,客户端发送一条消息后便关闭连接,服务端循环读取到EOF 即可得到一条完整的消息。但如果是短连接多个消息或长链接模式 下,就可能会发生粘包,客户端不关闭服务端无法通过EOL 确定消息读取完毕的问题。这就需要定义协议和拆包。
继续阅读 >
PHP群里有人询问 self 关键字的用法,答案是比较明显的:静态成员函数内不能用this 调用非成员函数,但可以用self 调用静态成员函数/变量/常量;其他成员函数可以用self 调用静态成员函数以及非静态成员函数。随着讨论的深入,发现self 并没有那么简单。
继续阅读 >
Git 虽然因其分布式管理方式,不完全依赖网络,良好的分支策略,容易部署等优点,已经成为最受欢迎的源代码管理方式。但是一分耕耘一分收获,如果想更好地掌握 git,需要付出大量的学习成本。即使在各种 GUI 的加持下,也不得不说 git 真的很难,在 V2EX 上也常有如何正确使用 git 的讨论,同时在 Stackoverflow 上超过 10w+ 的 git 相关问题也证明了 git 的复杂性。
继续阅读 >
学过服务器端开发的朋友一定知道,程序没有数据库索引也可以运行。但是所有学习数据库的资料、教程,一定会有大量的篇幅在介绍数据库索引,各种后端开发工作的面试也一定绕不开索引,甚至可以说数据库索引是从后端初级开发跨越到高级开发的屠龙宝刀,那么索引到底在服务端程序中起着怎样的作用呢?
继续阅读 >
因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。
我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉。
继续阅读 >
无论是运维、开发、测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库、学MySQL,到底是要学习它的哪些东西呢?此文为你揭晓,你值得一看!看过别忘记点赞+转发支持哦。
继续阅读 >
不管是主备+分库分表还是主从+读写分离+分库分表,都要考虑具体的业务场景。某8到家发展四年,绝大部分的数据库架构还是采用方案一和方案一+分库分表,只有极少部分用方案三+读写分离+分库分表。另外,阿里云提供的数据库云服务也都是主备方案,要想主从+读写分离需要二次架构。
继续阅读 >
容易输入的变量名。比如:Fred,asdf
单字母的变量名。比如:a,b,c, x,y,z(如果不够用,可以考虑a1,a2,a3,a4,….)
有创意地拼写错误。比如:SetPintleOpening, SetPintalClosing。这样可以让人很难搜索代码。
继续阅读 >
进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql>
退出MySQL:quit或exi
继续阅读 >
本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。
继续阅读 >
PHP7进一步方便开发者处理, 让开发者对程序的掌控能力更强. 因为在默认情况下, Error会直接导致程序中断, 而PHP7则提供捕获并且处理的能力, 让程序继续执行下去, 为程序员提供更灵活的选择。
继续阅读 >
多数 PHP 开发者不使用任何工具来分析或衡量性能。而做这些工作的一般使用 Xdebug Profiler 或非专用的工具 HTTP 负荷测定工具。只有不到 10% 的 PHP 开发者使用其他 PHP 专用工具(如 Blackfire.io、APM 解决方案和 XHProf)。
继续阅读 >
jwt单词代表的意思就是JSON Web Token。
我们在做api请求的时候,通常要使用token,来验证是否这个请求能不能访问。
一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小,并且可以轻松地跨域使用。
继续阅读 >
在运维部分,我们下载了Docker镜像,启动容器并且登录到容器内部执行相应的命令,最后停止容器并删除。
在开发部分,我们完成了简单应用的容器化过程:从GitHub拉取应用源代码,并且通过Dockerfile中的指令,将应用代码构建到镜像之中。接着运行了该容器化应用。
继续阅读 >
浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器。
继续阅读 >
在讲协程之前,先谈谈多进程、多线程、并行和并发。
对于单核处理器,多进程实现多任务的原理是让操作系统给一个任务每次分配一定的 CPU 时间片,然后中断、让下一个任务执行一定的时间片接着再中断并继续执行下一个,如此反复。
由于切换执行任务的速度非常快,给外部用户的感受就是多个任务的执行是同时进行的。
继续阅读 >
常见的服务器攻击类型
1 密码暴力破解攻击
密码暴力破解攻击的目的是破解用户的密码,从而进入服务器获取系统资源或者是进行破坏。
2 拒绝服务攻击
拒绝服务攻击基本原理就是利用合理的服务请求来占用过多的服务资源,从而使网络阻塞或者服务器死机,导致Linux服务器无法为正常用户提供服务。常见的服务攻击有拒绝服务攻击(Dos)和分布式拒绝服务攻击(DDos)。
3 应用程序漏洞攻击
主要是由软件漏洞所引起的,黑客首先利用网络扫描工具扫描目标主机的漏洞,然后根据扫描出的漏洞进行有针对性的实施攻击。
继续阅读 >