目录

最新文章

Xhprof 5天前

函数调用性能分析工具.

Xhprof GitHub官网

利用 XHProf 对 PHP 代码进行性能分析

PHP7 安装 xhprof

php的性能分析工具:xhprof

SHELL 5天前

文章无缩略内容。

PHP反射 1周前

文章无缩略内容。

PHP字符 1周前

PHP字符串笔记。

PHP对象 1周前

本文是PHP对象的笔记,也论述了一些PHP面向对象实现上的得与失。

PHP规范 1周前

PHP PSR 标准规范 合集,是一个比较好的中文翻译版本。

Xdebug 1周前

Xdebug 中文文档

Xdebug安装使用远程调试原理

设计模式 1周前

本文是PHP常用的设计模式的梳理。

ArraySliceMap 2周前

文章无缩略内容。

Channel 2周前

性质

  • 向已经关闭的通道发送数据,会引发panic

  • close已经关闭的channel或值为nilchannel,会引发panic

  • 从已关闭接收数据,返回已缓冲数据或零值

  • 无论收发,nil通道都会阻塞

Go函数 2周前

文章无缩略内容。

Struct 2周前

  1. 在一个结构体中对于每一种数据类型只能有一个匿名字段。

  2. 当两个字段拥有相同的名字(可能是继承来的名字)时该怎么办呢?

    • 外层名字会覆盖内层名字,但是两者的内存空间都保留,这提供了一种重载字段或方法的方式;

    • 如果相同的名字在同一级别出现了两次,如果这个名字被程序使用了,将会引发一个错误(不使用没关系)。没有办法来解决这种问题引起的二义性,必须由程序员自己修正。

对象的字段(属性)不应该由 2 个或 2 个以上的不同线程在同一时间去改变。如果在程序发生这种情况,为了安全并发访问,可以使用包 sync 中的方法。

调试 2周前

打印变量

Go标准库 2周前

记录了一些标准库函数的用法。

syncMap 2周前

文章无缩略内容。

读取用户输入 2周前

文章无缩略内容。

Go类型系统 2周前

Go中,类的继承树并无意义,你只需要知道这个类实现了哪些方法,每个方法是啥含义就足够了。

实现类的时候,只需要关心自己应该提供哪些方法,不用纠结接口要拆分地多细才合理。接口由使用方法,按需定义,而不用事前规划。

接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口。

Go语言 2周前

文章无缩略内容。

Interface 2周前

接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿。接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们是抽象的)。接口里也不能包含变量。

不像大多数面向对象编程语言,在 Go 语言中接口可以有值,一个接口类型的变量或一个 接口值var ai Namerai 是一个多字(multiword)数据结构,它的值是 nil。它本质上是一个指针,虽然不完全是一回事。指向接口值的指针是非法的,它们不仅一点用也没有,还会导致代码错误。

即使接口在类型之后才定义,二者处于不同的包中,被单独编译:只要类型实现了接口中的方法,它就实现了此接口。

多态是面向对象编程中一个广为人知的概念:根据当前的类型选择正确的方法,或者说:同一种类型在不同的实例上似乎表现出不同的行为。

Runtime 2周前

尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。

这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。

Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每一个可执行文件当中。

如果想知道当前的内存状态,可以使用:

设计模式 2周前

文章无缩略内容。

运维命令 2周前

文章无缩略内容。

补码 2周前

现实生活中,我们有加法、减法、乘法和除法,但在计算机中只有一个加法器。换句话说,加法运算在计算机中可以直接完成,减法、乘法和除法运算最终也得转换为加法才能实现。

数A减去数B,与数A加上"数B的补码"结果是一样的。这就是补码对于计算机的意义:将减法运算变成了加法运算。

网络层 2周前

文章无缩略内容。

PHP参考 2021年5月31日

PHP常用API参考。

概述 2021年5月31日

微服务设计 2021年5月31日

领域驱动设计

持续交付理论

每次提交均可发布

六边形架构理论

按需虚拟化

基础设施自动化

小型自治团队

大型集群系统

SOA (Service Oriented Architecture) :面向服务架构。微服务可以看成是SOA的一种特定方法。

微服务:一些协同工作的小而自治的服务。好处:

  • 技术异构

  • 弹性

  • 拓展性

  • 简化部署,可以灵活发布

  • 与公司组织结构相匹配

  • 可组合性,易于重用服务,构建新业务

  • 可替代性

可以重用的共享库在微服务中会是一个问题:

  • 如果两个微服务共享一个重用库,那么两个微服务都需要重新发布

  • 如果各自维护,又会带来,代码不一致的维护负担

架构师 类比 城市规划师

ThinkPHP 2021年3月31日

文章无缩略内容。

netwox 2021年3月31日

https://sourceforge.net/projects/ntwox/

$ sudo apt-get install netwox

ssh 2021年3月31日

SSH 是一个安全的客户端/网络端协议,是关于如何在网络上构建安全通信的规范。实现该规范,可以为一些不安全的网络应用程序 Telnet / FTP / 基于TCP/IP程序增加安全性。

它的内容包括以下三点:

  • 认证:可信地判断出用户的身份,通过SSH登录,需要提供数字身份证明,通过测试后才允许登录

  • 加密:对数据进行加密,除接受者,其他人都无法理解数据

  • 完整性:确保网络上传输的数据到达目的地时,没有被改变

认证是双向的,包含了server 对 client 的验证,也包含了 client 对 server 的验证。

SSH 提供的端到端的加密,基础是随机密钥,每次通过验证后,都会产生一个会话,client 与 server 协商产生随机密钥,发送的数据全部使用该密钥加密。在会话结束后,该密钥被丢弃。对数据加密的算法有: Blowfish / DES / IDEA (对称加密) 等。

授权是认证之后进行的,可以对通过ssh登录的用户权限进行一些限制。

https 2021年3月31日

安全背后: 浏览器是如何校验证书的

https://cjting.me/2021/03/02/how-to-validate-tls-certificate/

css面试 2021年3月31日

如何理解 CSS 的盒子模型?

每个 HTML 元素都是长方形盒子。
(1)盒子模型有两种:IE 盒子模型、标准 W3C 盒子模型;IE 的 content 部分包含了 border 和 pading。
(2)标准 W3C 盒模型包含:内容(content)、填充(padding)、边界(margin)、边框(border)。

link 和@import 的区别?

(1)link 属于 XHTML 标签,而@import 是 CSS 提供的。
(2)页面被加载时,link 会同时被加载,而@import 引用的 CSS 会等到页面被加载完再加载。
(3)import 只在 IE 5 以上才能识别,而 link 是 XHTML 标签,无兼容问题。
(4)link 方式的样式权重高于@import 的权重。
(5)使用 dom 控制样式时的差别。当使用 javascript 控制 dom 去改变样式的时候,只能使用 link 标签,因为@import 不是 dom 可以控制的。

CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算?CSS 3 新增伪类有哪些?

id 选择器(# myid)
类选择器(.myclassname)
标签选择器(div、h1、p)
相邻选择器(h1 + p)
子选择器(ul < li)
后代选择器(li a)
通配符选择器( * )
属性选择器(a[rel = "external"])
伪类选择器(a: hover, li: nth - child)
可继承: font-size font-family color, UL LI DL DD DT;
不可继承 :border padding margin width height ;
优先级就近原则,样式定义最近者为准,载入样式以最后载入的定位为准。
优先级为:
!important > id > class > tag
important 比 内联优先级高
CSS3 新增伪类举例:
p:first-of-type 选择属于其父元素的首个<p>元素的每个<p>元素。
p:last-of-type 选择属于其父元素的最后<p>元素的每个<p>元素。
p:only-of-type 选择属于其父元素唯一的<p>元素的每个<p>元素。
p:only-child 选择属于其父元素的唯一子元素的每个<p>元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每个<p>元素。
:enabled、:disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。

用纯 CSS 创建一个三角形的原理是什么?

api接口设计 2021年3月31日

最好的方法是限定几个可以访问 api 的域名,其他域名全部拒绝。
但是Access-Control-Allow-Origin只能设置一个值,所以要多端共用,只有header("Access-Control-Allow-Origin:*");

web 优化 2021年3月31日

动静分离

所谓的动静分离,就是将 Web 应用程序中静态和动态的内容分别放在不同的 Web 服务器上,有针对性的处理动态和静态内容,从而达到性能的提升。我们知道如果一个 HTML 有多个域名请求数据文件会提高
Tomcat 服务器在处理静态和并发问题上比较弱,所以事先动静分离的方式一般会用 Apache+Tomcat、Nginx+Tomcat 等。

以 Apache+Tomcat 为例,其运行机理是:页面请求首先给 Apache,然后 Apache 分析请求信息是静态还是动态,静态则本机处理,动态则交给 Tomcat 做处理这其实是负载均衡的雏形,这样的实现不用让开发人员做任何特殊开发,一个<img src="demo.jpg">交给服务器即可,至于这个文件是从 Apache 还是从 Tomcat 取得,开发人员完全无需关注。

HTTP 持久连接

持久连接(Keep-Alive)也叫做长连接,它是一种 TCP 的连接方式,连接会被浏览器和服务器所缓存,在下次连接同一服务器时,缓存的连接被重新使用。HTTP 无状态性表示了它不属于长连接,但 HTTP/1.1 提供了对长连接的支持(不过这必须依赖浏览器和服务器双方均支持长连接功能才行),最常见的 HTTP 长连接例子是“断点下载”。
浏览器在请求的头部添加 Connection:Keep-Alive,以此告诉服务器“我支持长连接,你支持的话就和我建立长连接吧”,而倘若服务器的确支持长连接,那么就在响应头部添加“Connection:Keep-Alive”,从而告诉浏览器“我的确也支持,那我们建立长连接吧”。服务器还可以通过 Keep-Alive:timeout=..., max=...的头部告诉浏览器长连接失效时间。
配置长连接通常是要服务器支持设置,有测试数据显示,使用长连接和不使用长连接的性能对比,对于 Tomcat 配置的 maxKeepAliveRequests 为 50 来说,效率竟然提升了将近 5 倍。

GZIP 压缩技术

Unixlinux编程实践 2021年3月31日

文章无缩略内容。

linux系统编程 2021年3月31日

文章无缩略内容。

CDN 2021年3月31日

image-20210318135436554

负载均衡系统是一个CDN系统的神经中枢,主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。

image-20210318135830572

  • GAC(Global Access Controller)模块对应于图2-1中的负载均衡系统,主要采用了智能DNS解析方案,负责通过域名解析应答实现将用户请求调度到最优服务节点的目的。

  • CCN(ChinaCache Nod)模块对应于图2-1中的分发服务系统,是CDN的基本服务模块,由分布于各个城市、各个运营商网络中的Cache设备和辅助设备组成。

  • NOC(Network Operating Center)模块对应图2-1中的网络管理系统,负责对全网进行7×24小时的监控和管理。NOC可以监控ChinaCache CDN中的链路状况、节点响应速度、设备运行状态,也可以监控到客户的源站点运行状况等信息,一旦发现异常马上采取相应措施予以解决,是保障CDN服务安全可靠性的重要系统。值得一提的是,蓝汛的NOC中设置了源站点监控功能,对客户源站进行可达性监控,从而减轻或者避免由于源站故障造成的服务中断。

  • OSS(Operating Support System)模块对应图2-1中的运营管理子系统,负责采集和汇总各个CCN的日志记录信息,然后由中央处理软件加以整理和分析,最后通过客户服务门户进行发布。蓝汛的客户可以通过OSS提供的查询界面来查询加速页面或频道的实时流量、流量分布、点击数量、访问日志等信息。

image-20210318144834690

首先由用户代理(IP地址10.9.55.68,端口4719)向服务器主机(IP地址202.102.86.141,端口80,这里的服务器不是源服务器)发起TCP连接建立请求[SYN],服务器同意用户请求并向用户代理响应[SYN, ACK],用户代理再返回[ACK],这样双方就通过三次握手过程建立起了一个TCP连接。

image-20210318151200423

高可用 2021年3月31日

需求驱动驱动;而高可用与高性能,是架构设计中两个非常重要的决策因素。因此,面对不同业务系统的不同需求,对高可用与高性能也会有不同的决策结论,其实现的复杂度也各不相同。支付宝业务,对于可用性和性能就会有很高的要求,在可用性方面希望能提供7*24不间断服务,在高性能方面则希望能实时收付款;而对于一个学生管理系统,在可用性与性能方面就不一定要有多高的要求,比如晚上可关机,几秒内能查询到信息也可接受。为此,高可用性与高性能的复杂度讨论需要结合业务需求。

1 WHAT - 什么是可用性?
定义可用性,可以先定义什么是不可用。需要经历若干环节,网站的页面才能呈现在最终的用户面前;而其中的任何一个环节出现了故障,都可能会导致网站的页面不可访问,也就是出现了网站不可用的情况。昨夜iOS版本QQ出现大面积闪退就是一个系统不可用的典型案例。

我们可以利用百分比来对网站可用性进行度量:
网站不可用时间=完成故障修复的时间点 - 故障发现的时间点
网站年度可用时间=年度总时间 - 网站不可用时间
网站年度可用性=(网站年度可用时间/年度总时间) x 100%

举例:一些知名大型网站的可用性可达到99.99%(俗称4个9),我们可以算一下一年下来留给处理故障的时间有多少?
年度总时间=3652460=525600分钟
网站不可用时间=525600*(1-99.99%)=52.56分钟
也就是,如果网站要达到4个9的可用性,一年下来网站不可用时间最多53分钟(也就是不足1个小时)。

可见,高可用性就是技术实力的象征,高可用性就是竞争力。

2 WHY - 为什么会出现不可用?
硬件故障。网站多运行在普通的商用服务器,而这些服务器本身就不具备高可用性,再加之网站系统背后有数量众多服务器,那么一定时间内服务器宕机是大概率事件,直接导致部署在该服务器上的服务受影响。

软件BUG或网站更新升级发布。BUG不能消灭,只能减少;上线后的系统在运行过程中,难免会出现故障,而这些故障同样直接导致某些网站服务不可用;此外,网站更新升级发布也会引起相对较频繁的服务器宕机。

不可抗拒力。如地震、水灾、战争等。

3 HOW - 如何做到高可用
核心思想:网站高可用的主要技术手段是服务与数据的冗余备份与失效转移。同一服务组件部署在多台服务器上;数据存储在多台服务器上互相备份。通过上述技术手段,当任何一台服务器宕机或出现各种不可预期的问题时,就将相应的服务切换到其他可用的服务器上,不影响系统的整体可用性,也不会导致数据丢失。

从架构角度看可用性:当前网站系统多采用经典的分层模型,从上到下为:应用层、服务层与数据层。应用层主要实现业务逻辑处理;服务层提供可复用的服务;数据层负责数据读写;在部署架构上常采用应用和数据分离部署,应用会部署到不同服务器上,这些服务器被称为应用层的服务器;这些可复用的服务也会各自部署在不同服务器上,称为服务层的服务器;而各类数据库系统、文件柜等数据则部署在数据层的服务器。

硬件故障方面引起不可用的技术解决措施:(1)应用服务器。可通过负载均衡设备将多个应用服务器构建为集群对外提供服务(前提是这些服务需要设计为无状态,即应用服务器不保存业务的上下文信息,而仅根据每次请求提交的数据进行业务逻辑的操作响应),当均衡设备通过心跳检测手段检测到应用服务器不可用时,则将其从集群中移除,并将请求切换到其他可用的应用服务上。(2)服务层服务器。这些服务器被应用层通过分布式服务框架(如Dubbo)访问,分布式服务框架可在应用层客户端程序中实现软件负载均衡,并通过服务注册中心提供服务的服务器进行心跳检测,当发现有服务器不可用时,立即通知客户端程序修改服务列表,同时移除响应的服务器。(3)数据服务器。需要在数据写入时进行数据同步复制,将数据写入多台服务器上,实现数据冗余备份;当数据服务器宕机时,应用程序将访问切换到有备份数据的服务器上。

软件方面引起不可用的技术解决措施:通过软件开发过程进行质量保证。通过预发布验证、严格测试、灰度发布等手段,尽量减少上线服务的故障。

计算机硬件 2021年3月31日

系统硬件

CMOS是一块芯片,记录计算机硬件信息。BIOS 是可以修改 CMOS 的程序,该程序为写死在硬件上,不可修改。硬件开机,第一个执行的程序便是 BIOS ,然后再是操作系统的引导程序(MBR:主引导记录,GRUB:统一引导加载器),然后是操作系统内核,再是内核上的操作系统。

进程 2021年3月31日

进程是一个正在执行的程序实例,各进程拥有自己独立的地址空间:

  • 只能访问系统分配给它们的内存地址

  • 进程也不能直接访问内核功能,必须通过 system call 来完成

  • 0号进程为调度进程,是内核的一部分

  • 1号进程(init进程)由内核启动,读取 /etc/rc* /etc/inittab /etc/init.d 配置,是系统后来所有进程的祖先,是所有孤儿进程的父进程

内核活动:

  • 进程 process

  • 系统调用 system call

  • 内核线程 kernel thread

  • 硬件中断 Hardware IRQ

  • 软件中断 Software IRQ

  • tasklet

  • bottom half

硬件中断

外部设备用硬件中断来通知操作系统有重要的事件发生,中断发生后,CPU会暂时停止当前程序的执行,转去执行中断处理程序,中断处理程序结束后再恢复原来被停止程序的执行。

硬件中断是一种系统资源,当我们为设备编写中断处理程序来处理外部事件时,要向系统申请中断资源(即硬件中断信号线,通常称为中断号),并将中断处理程序与中断源相关联。

链路层 2021年3月31日

在两个网络实体之间提供数据链路通路的建立,维持和释放,提供物理地址寻址,数据成帧,流量控制,数据检错,重发等功能

目前主要有两种链路

  • 点对点链路:链路一端只有一个发送方,另一端只有一个接收方

  • 广播链路/广播信道:能够让多个发送和接收节点,都连接到相同的 统一的 共享的广播信道上

三个基本问题: 封装成帧,透明传输,差错检测

  • 封装成帧 : 在一段数据的前后分别添加首部SOH 帧开始符和尾部EOT 帧结束符,这样就构成了一个帧。

  • 透明传输 : 在传输二进制文件时,数据有EOT帧结束符一样的编码,如何在接收端不解释为尾部呢?答案是在前面插入ESC字符,在接收端接收完数据后,再将ESC去除掉,这叫字节填充

  • 差错检测 : 比特在传输过程中,1可能变成0, 0也可能变成1,使用循环冗余检验CRC或者帧检验序列方法可以检测出来

在通信质量比较差的无线传输链路,数据连接层协议使用了帧编号,确认和重传机制,向上层提供可靠传输的服务,而在通信质量好的有线链路,则没有这些机制,而是交给上层 TCP 完成确认和重传

wireshark 2021年3月31日

Wireshark会捕获指定接口上的所有数据,并全部显示。这样会导致在分析这些数据包时,很难找到想要分析的那部分数据包。这时可以借助显示过滤器快速查找数据包。

image-20210322013645195

select和poll及epoll 2021年3月31日

文章无缩略内容。

高性能服务器编程 2021年3月31日

文章无缩略内容。

CSAPP 2021年3月31日

第一部分: 1 ~ 6 , 帮助我理解了程序和硬件之间的交互关系。

第二部分: 7 ~ 9 , 帮助我理解了程序和操作系统之间的交互关系。

第三部分: 10 ~12 , 帮助我理解了与I/O设备以及其他程序通信,理解了网络服务程序和并发程序。

进程

系统保持跟踪进程运行所需的所有状态信息,这种状态称为“上下文”,它包括了程序计数器PC、各个寄存器、使用到的内存。在任一时刻,一个处理器只能执行一个进程的指令。

当系统决定将控制权从当前进程转移到另一个进程时,就会进行“上下文切换”,即保存当前进程的“上下文”,然后加载别的进程的“上下文”。

进程切换

虚拟内存

  • 虚拟内存为进程提供了一个假象,即每个进程都在独占内存,每个进程看到的都是一样的存储器,称为虚拟地址空间

  • 每个进程看到的虚拟地址空间由准确定义的区组成,每个区都有专门的功能

  • 程序代码区:对所有进程来说,代码是从同一固定地址开始

  • C全局变量区:紧邻着程序代码区,存储的的是初始化的数据

  • 堆:紧邻着全局变量区,可以动态扩展使用的内存,使用malloc申请,free释放

  • 共享库:存在虚拟地址空间中间,存放的是c标准库

  • 栈:位于用户虚拟地址空间顶层(它的上面是内核虚拟地址空间,是不允许用户操作的),编译器使用它来实现函数调用,函数调用,栈增长,函数返回,栈消退

  • 内核虚拟存储器:位于整个虚拟存储器顶部,是为内核保留的,不允许应用程序读写和直接调用内核代码定义的函数

文件

文件就是字节序列,仅此而已。每个IO设备,磁盘、键盘、显示器、网络,都可以看成是文件。

文件向应用程序提供了一个统一的视角,来看待系统中各式各样的设备,例如,处理磁盘文件内容,无需了解具体的磁盘文件,同一个程序就可以在使用不同磁盘技术的不同系统上运行。

Linux系统原理 2021年3月31日

单内核设计:内核从整体上作为一个单独的大过程来实现,运行在一个单独的地址空间上,内核以单个二进制文件的形式存放于磁盘中.因为所有内核服务都在这样一个大内核地址空间上运行,所以通信可以直接调用函数来实现。linux 就是一个单内核设计。

本文记录的是我学习到的Linux本身的一些原理性的知识,它的构成与实现。

image-20210320185347876

进程管理

负责创建、结束进程,管理内核的活动,如软件中断、tasklet等,管理进程间通信,如消息(message)、管道(pipe)等,实现进程调度(schedule)。进程调度是进程管理的重要任务,它处理所有活动的、等待被执行的和被阻塞(blocking)的进程调度,使所有应用和进程合理地共享处理器的运行时间。

内存管理

内存是系统最主要的资源之一,计算机的性能在很大程度上与其所配备的内存有关。Linux内核内存管理的主要功能就是给进程分配地址空间,该地址空间只允许本进程自己访问。

文件系统

在Linux操作系统中,文件系统是整个系统的中枢。Linux与其他操作系统不同,几乎所有的操作都基于文件系统接口的处理,如设备驱动程序可以按文件方式访问设备,通过/proc文件系统可以访问Linux内核的数据和参数,这两个功能在调试时非常有效。

设备驱动程序

在所有的操作系统中,设备驱动程序都是硬件的抽象,通过它可以访问硬件。Linux可以用模块(模块)的方式实现设备驱动程序,提供了在系统运行时动态加载和卸载设备驱动程序的途径。

网络子系统

在Linux中所有的网络操作是由操作系统管理的。这是因为网络操作不能分配给某个进程完成。在处理收到的网络数据包时,数据包的接收是异步事件。接收数据包任务必须在进程处理这些数据包前先收集齐所有的网络包、标识数据,然后向上层传送,这就是为什么由内核的网络子系统负责处理数据包,而不是由某个进程和网络接口来处理。

现代操作系统 2021年3月31日

本文是《现代操作系统》第 4 版的笔记。

16位CPU汇编语言 2021年3月31日

16 位 8086 CPU 的相关知识。

项目下载地址

32位CPU汇编语言 2021年3月31日

x86x86-64PowerPCARM CPU 的 32 位指令集是不同的,而目前的汇编语言有两种 intelAT&TGcc编译器都是默认使用AT&T汇编语言的。汇编器 nasmmasmasyasm 可以将汇编语言编译成对应平台的目标文件。

ibm Nasm 文章
Linux 汇编语言程序设计 (使用 NASM)

64位CPU汇编语言 2021年3月31日

Linux下 64 位汇编语言学习记录。时至今日,汇编语言的重点已经不是编写汇编语言代码,而是看懂 GCC 编译器生成的汇编语言,本文正是以此为目标进行学习。

CPU 2021年3月31日

编码 2021年3月31日

传输层 2021年3月31日

应用层 2021年3月31日

物理层 2021年3月31日

自顶向下 2021年3月31日

高效的命令行 2021年3月31日

CentOS 2021年3月31日

Ubuntu 2021年3月31日

link 2021年3月31日

网络工具 2021年3月31日

gpg 2021年3月31日

Docker技术栈 2021年3月31日

PHP7.2操作MongoDB 2021年3月31日

PHP函数 2021年3月31日

文本处理 2021年3月31日

VirtualBox 2021年3月31日

Linux的C 2021年3月31日

线程 2021年3月31日

KMS 2021年2月28日

MySQL节点 2021年2月28日

Linux的使用 2021年2月28日

Ansible 2021年2月28日

Rsync 2021年2月28日

待学习 2021年2月28日

MySQL或MariaDB管理 2021年2月28日

Docker 2021年2月28日

Lua脚本 2021年2月28日

Zap日志库 2021年2月28日

事务 2021年2月28日

RabbitMQ 2021年2月28日

分布式网站 2021年2月28日

cmake 2021年2月28日

K8s实战 2021年2月28日

PHP语言 2021年2月28日

正则表达式 2021年2月28日

K8s和jenkins 2021年2月28日

k8s书籍 2021年2月28日

nginx 2021年2月28日

SRE 2021年1月31日

ab并发测试工具 2021年1月31日

Prometheus 2021年1月31日

PHP节点 2021年1月31日

事件处理 2021年1月31日

内置对象 2021年1月31日

js对象类型检测 2021年1月31日

PHP会话 2021年1月31日

启动外部程序和命令 2021年1月31日

curl 2021年1月31日

大象Thingking_in_UML 2021年1月31日

语言导学 2021年1月31日

生产环境部署redis 2021年1月31日

Apache 2021年1月31日

git 2021年1月31日

OS 2021年1月31日

单词 2021年1月31日

Docker原理 2020年12月31日

生产环境 2020年12月31日

C可变参数函数原理 2020年12月31日

Effective 2020年12月31日

任务队列和发布订阅 2020年12月31日

编程学习路径 2020年12月31日

codekissyoung 2020年12月31日

镜像队列 2020年12月31日

从汇编看C语言 2020年12月31日

PHP异常 2020年12月31日

闭包 2020年12月31日

AutoTools 2020年12月31日

PostgreSQL 2020年12月31日

SQL 2020年12月31日

TiDB 2020年12月31日

Code-review 2020年12月31日

程序员的思维修炼 2020年12月31日

给产品经理讲技术 2020年12月31日

Erlang中文教程 2020年12月31日

架构文章 2020年12月31日

面向容错性架构 2020年12月31日

大话数据结构 2020年12月31日

红黑树 2020年12月31日

erlang 2020年12月31日

C 2020年12月31日

Fcitx输入法 2020年11月30日

Elixir语言教程 2020年11月30日

Goroutine 2020年11月30日

Reflect 2020年11月30日

RegExp 2020年11月30日

mongo客户端命令 2020年11月30日

BeyondCompare 2020年11月30日

Go 2020年11月30日

PHP部署 2020年11月30日

语言比较 2020年11月30日

语言设计 2020年11月30日

有品位的C代码 2020年11月30日

GoGC 2020年11月30日

深入理解构建系统 2020年11月30日

Go汇编 2020年10月31日

测试与文档 2020年10月31日

html面试 2020年10月31日

http 2020年10月31日

OOP 2020年10月31日

类型系统 2020年9月30日

概述 2020年8月31日

Nginx节点 2020年8月31日

JS 2020年8月31日

xss 2020年8月31日

概念基础 2020年7月31日

优化 2020年7月31日

如何实现一个数据库 2020年7月31日

数据库设计 2020年7月31日

排序 2020年7月31日

Accelerated 2020年7月31日

Primer 2020年7月31日

概述 2020年7月31日

Mutex 2020年7月31日

单链表 2020年6月30日

PHP数组 2020年6月30日

Schemer语言 2020年5月31日

常见样式 2020年5月31日

网页布局 2020年5月31日

CPP_PrimerPlus 2020年3月31日

STL 2020年3月31日

语言的设计与演化 2020年3月31日

C开发环境 2020年3月31日

C速记卡片 2020年3月31日

GDB调试器 2020年3月31日

Make构建工具 2020年3月31日

字符编码 2020年3月31日

微软c编程 2020年3月31日

运行环境 2020年3月31日

预处理器 2020年3月31日

MongoDB安全 2020年3月31日

Redis-Sentinel 2020年3月31日

数据类型 2020年3月31日

配置 2020年3月31日

GoMicro 2020年3月31日

scss 2020年3月31日

网页加载顺序 2020年3月31日

网页文字 2020年3月31日

规范书写 2020年3月31日

配色表 2020年3月31日

JSON 2020年3月31日

cookie-js 2020年3月31日

jquery 2020年3月31日

js模块化 2020年3月31日

上传文件 2020年3月31日

函数 2020年3月31日

基础 2020年3月31日

对象 2020年3月31日

正则 2020年3月31日

RUSTful 2020年3月31日

数字签名算法RSA 2020年3月31日

MySQL使用军规 2020年3月31日

MySQL技术内幕 2020年3月31日

SQLite 2020年3月31日

SQL注入攻击与防御 2020年3月31日

mysqlserver 2020年3月31日

phpmyadmin 2020年3月31日

事务 2020年3月31日

深入理解SQL 2020年3月31日

索引 2020年3月31日

书籍推荐 2020年3月31日

Game Server 2020年3月31日

服务端架构整理 2020年3月31日

概述 2020年3月31日

游戏服务端开发面试 2020年3月31日

网络游戏服务器开发框架 2020年3月31日

AVL树 2020年3月31日

B+树 2020年3月31日

B树 2020年3月31日

字符串 2020年3月31日

散列 2020年3月31日

数列 2020年3月31日

算法 2020年3月31日

算法竞赛入门经典 2020年3月31日

跳表 2020年3月31日