目录

最新文章

Go函数 3天前

Go语言有三种类型的函数:普通带名字的函数、匿名lambda函数、方法。

Go语言 3天前

变量的作用域

变量的生存周期:

  • 包一级声明的变量,生存期和整个程序运行周期一致

  • 局部变量,从该变量声明开始,到该变量不再被引用,被自动回收后结束

  • 函数是可以返回局部变量的,因为 Go 编译器会将返回到函数外的局部变量存储在 heap 上。实际上所有变量都是由 Go 编译器决定存储在 heap 或是 stack,这个称为变量逃逸分析

Go面向对象 3天前

文章无缩略内容。

Interface 3天前

文章无缩略内容。

00-1-并发简略-概述 3天前

文章无缩略内容。

00-5-并发简略-协程 3天前

文章无缩略内容。

SHELL 3天前

SHELL的操作对象是 文件文本行:执行程序,查找文件,删除文件,批量改变文件名,备份文件、列出目录的文件。

awk 可作为 SHELL 操作 文本列 的补充,更细一个粒度。

SHELL中的调用命令分类:

  • 内建命令 : 不会产生子进程,为了效率才内建,比如cd read echo

  • 函数 : 函数可以直接作为命令一样使用

  • 外部命令 : 在PATH里搜寻并且执行的命令,产生子进程

SHELL 脚本的执行被设计为阻塞式的,从上到下,依次执行,遇见创建子进程的外部命令,一定会等待子进程返回后,才继续往下执行。所有命令返回 0 表示执行成功。

JS 3天前

目前基于 ECMAScript 5.1 版本。

OOP 3天前

JS不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程
原型是指当我们想要创建 xiaoming 这个具体的学生时,我们并没有一个 Student 类型可用。那怎么办?恰好有这么一个现成的对象:

Git工作流程 3天前

文章无缩略内容。

api接口设计 3天前

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

http 3天前

1 能够提供 web 内容的东西都是 web 资源,比如一个图片文件,一个图书馆公共网关,因特网搜索引擎。

2 MIME type ,用于描述并标记 web 多媒体内容。
比如:html 格式文档由 text/html 标识,ASCII 文本由 text/plain 类型标识,gif :image/gif ,jpeg 标识:image/jpeg

3 URL 统一资源定位符:方案+服务器地址+ 某个具体资源
如:http ://www.joes-hardware.com/specials/saw-blade.gif

4 http 方法

web 优化 3天前

文章无缩略内容。

xss 3天前

  • 将 HTML 标签里的 中括号 ,单引号,引号 之类的特殊字符进行实体字符转换编码

Linux的使用 3天前

本文是我使用Linux的总结,只涉及服务器日常命令操作,不涉及到开发和原理。

OS 3天前

计算机是如何启动的?
使用 QEMU 搭建 U-boot+Linux

Unix_linux编程实践教程 3天前

文章无缩略内容。

进程 3天前

记录自己所学的关于进程的所有知识。

高性能服务器编程 3天前

本文是《Linux 高性能服务器编程》一书的编程笔记。

1.基础 3天前

文章无缩略内容。

磁盘 3天前

文章无缩略内容。

PHP多进程 6天前

PHP多进程。

PHP字符 6天前

PHP字符串笔记。

概念基础 6天前

  • 引入别的 css 脚本

跨域 6天前

文章无缩略内容。

html面试 6天前

文章无缩略内容。

优化 6天前

慢查询日志:里面会记录那些比较慢的日志,可以使用pt-query-digest工具进行分析

explain语句:可以分析单条语句的查询效率

show profile、show status、show processlist等语句:查询语句执行慢的各种情况以及消息情况或其它

使用show profile:set profiling=1;开启,服务器上执行的所有语句会检测消耗的时间,存到临时表中
show profile for query 临时表ID:可以查询每条profile临时表中记录花费的时间

使用show status:show status会返回一些计数器,show global status查看服务器级别的所有计数
使用show processlist:观察是否有大量线程处于不正常的状态或者特征
使用explain:分析单条SQL语句

访问数据太多导致查询性能下降
确定应用程序是否在检索大量超过需要的数据,可能是太多行或列
确认MySQL服务器是否在分析大量不必要的数据行

是否在扫描额外的记录
使用explain来进行分析,如果发现查询需要扫描大量的数据但只返回少数的行,可以通过如下技巧去优化:

使用索引覆盖扫描,把所有用的列都放到索引中,这样存储引擎不需要回表获取对应行就可以返回结果
改变数据库和表的结构,修改数据表范式
重写SQL语句,让优化器可以以更优的方式执行查询

避免使用如下SQL语句
1、查询不需要的记录:使用limit解决
2、多表关联返回全部列:指定A.id,A.name,B.age
3、总是取出全部列:SELECT*会让优化器无法完成索引覆盖扫描的优化
4、重复查询相同的数据,可以缓存数据,下次直接读取缓存

切分查询:将一个大的查询分为多个小的相同的查询:一次性删除1000万的数据要比一次删除1万,暂停一会的方案更加损耗服务器开销
分解关联查询:可以将一条关联语句分解成多条SQL来执行

分解关联查询
可以将一条关联语句分解成多条SQL来执行
让缓存的效率更高
执行单个查询可以减少锁的竞争
在应用层做关联可以更容易对数据库进行拆分

查询效率会有大幅提升
较少冗余记录的查询

内部查询快,和客户端交互慢:MySQL内部每秒能扫描内存中上百万行数据,相比之下,响应数据给客户端就要慢得多
多个简单查询有必要:使用尽可能少的查询是好的,但是有时将一个大的查询分解为多个小的查询是很有必要的

优化count(*)查询
count()中的会忽略所有的列,直接统计所有列数,因此不要使用count(列名)
MyISAM中,没有任何WHERE条件的count(*)非常快;当有WHERE条件,MyISAM的count统计不一定比其他表引擎快

可以使用explain查询近似值,用近似值替代count(*)
增加汇总表
使用缓存

优化关联查询
确定ON或者USING子句的列上有索引
确保GROUP BY和ORDER BY中只有一个表中的列,这样MySQL才有可能使用索引

优化子查询
尽可能使用关联查询来替代

优化GROUP BY和DISTINCT
这两种查询均可使用索引来优化,是最有效的优化方法
关联查询中,使用标识列进行分组的效率会更高
如果不需要ORDER BY,进行GROUP BY时使用ORDER BY NULL,MySQL不会再进行文件排序
WITH ROLLUP超级聚合,可以挪到应用程序处理

优化LIMIT分页
LIMIT偏移量大的时候,查询效率较低,可以记录上次查询的最大ID,下次查询时直接根据该ID来查询

优化UNION查询
UNION ALL的效率高于UNION

分区的话对用户是透明的

对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件
比如age10-25的放到第一个分区:创建表时使用partition by子句定义每个分区存放的数据,执行查询时,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询只需要查询所需数据在的分区即可
较粗的粒度分在不同的表中:分区的主要目的是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的数据存放在一起,而且如果想一次性删除整个分区的数据也很方便

1.表大或热点数据:表非常大,无法全部存在内存,或者只在表的最后有热点数据,其他都是历史数据
2.分区独立操作:分区表的数据更易维护,可以对独立的分区进行独立的操作,可以备份和恢复独立的分区
3.不同机器:分区表的数据可以分布在不同的机器上,从而高效使用资源
4.避免瓶颈:可以使用分区表来避免某些特殊的瓶颈

1、1024分区:一个表最多只能有1024个分区
2、不同版本不同限制:5.1版本中,分区表表达式必须是整数,5.5可以使用列分区
3、包含主键和唯一索引列:分区字段中如果有主键和唯一索引列,那么主键列和唯一列都必须包含进来
4、修改表结构:需要对现有表的结构进行修改

1、1024分区:一个表最多只能有1024个分区
2、不同版本不同限制:5.1版本中,分区表表达式必须是整数,5.5可以使用列分区
3、包含主键和唯一索引列:分区字段中如果有主键和唯一索引列,那么主键列和唯一列都必须包含进来
4、无法使用外键约束:分区表中无法使用外键约束
5、修改表结构:需要对现有表的结构进行修改
6.所有分区都必须使用相同的存储引擎
7.分区函数中可以使用的函数和表达式会有一些限制
8.某些存储引擎不支持分区
9.对于MyISAM的分区表,不能使用load index into cache
10.对于MyISAM表,使用分区表时需要打开更多的文件描述符

分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志

水平分割:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度

给应用增加复杂度,通常查询时需要多个表名,查询所有数据都需UNION操作把不同行的数据弄到一起,也可以通过 Redis 维护索引来解决这个问题。

垂直分表:把主键和一些列放在一个表,然后把主键和另外的列放在另一个表。包含主键id:分的不同的表都是用主键id相连,所以都包含主键id。需要join是把不同列的数据弄到一起

应用层逻辑算法:有些分表的策略基于应用层的逻辑算法,一旦逻辑算法改变,整个分表逻辑都会改变,扩展性较差
开发成本:对于应用层来说,逻辑算法无疑增加开发成本

主从复制原理:

1、二进制日志:在主库上把数据更改记录到二进制日志
2、中继日志:从库将主库的日志复制到自己的中继日志
3、读中继日志:从库读取中继日志中的事件,将其重放到从库数据中

解决的问题:

数据分布:随意停止或开始复制,并在不同地理位置分布数据备份
负载均衡:降低单个服务器的压力
高可用和故障切换:帮助应用程序避免单点失败
升级测试:可以使用更高版本的MySQL作为从库

SQL查询的安全方案?

1.使用预处理语句防SQL注入,预处理防sql注入:PHP端尽量使用PDO对数据库进行相关操作,PDO拥有对预处理语句很好的支持的方法,MySQLi也有,但是可扩展性不如PDO,效率略高于PDO,
2.写入数据库的数据要进行特殊字符的转义
3.查询错误信息不要返回给用户,将错误记录到日志

安全设置:

1.定期做数据备份
2.不给查询用户root权限,合理分配权限
3.关闭远程访问数据库权限
4.修改root口令,不用默认口令,使用较复杂的口令
5.删除多余的用户
6.改变root用户的名称
7.限制一般用户浏览其他库
8.限制用户对数据文件的访问权限

无限级分类的实现:

UbuntuServer 6天前

Ubuntu 18.04 作为示范机,U 盘装机软件 LinuxLive USB Creator

Docker 6天前

PHP模式 3周前

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

awk 3周前

  • awk -F regexp '/pattern/{ action }' files

  • awk -F regexp '(expression){ action }' files

  • awk -F regexp -f awk脚本 files

  • -F 设置字段分割符(默认空格tab换行),它接受一个正则表达式re作为值

  • pattern 行匹配模式,省略的话就是匹配所有行

  • { action } 输出模式,省略的话就是输出整行

linux系统编程 3周前

Linux系统编程笔记。

传输层 3周前

传输层

  • 负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题

  • 协议: TCP 传输控制协议、UDP 用户数据报协议

  • 重要设备:网关

TCP :双方必须先建立链接(三次握手)才可收发数据,内核维护了连接状态、读写缓冲区、定时器等结构。数据传送是基于字节流,一端不断的写入,另一端不断的接收。但通信结束时,必须断开链接(四次挥手),释放内核相关结构数据

UDP:无连接,每次发送数据都要指明接收端地址,基于数据报传输数据,每次发送的数据包的长度固定,接收时也必须一次性读取整个数据包(否则数据就被截断)

应用层 3周前

协议分层设计要完成的功能

  • 差错控制 相应层次对等方的通信要可靠

  • 流量控制 发送端的发送速率必须使接收端来得及接收,不要太快

  • 分段和重装 发送端将要发送的数据划分成更小的单位,在接收端将其还原

  • 复用和分用 发送端几个高层会话复用一条低层的链接,在接收端再进行分用

  • 链接的建立和释放 交换数据前先建立一条逻辑链接,数据传送结束后释放链接

TCP/IP 体系结构

    • 应用层 TELNET FTP SMTP HTTP 定义的是应用进程间通信和交互的规则

    • 运输层 TCP UDP 不针对某个进程和应用,而是多种应用使用同一个运输层服务,有复用和分用的功能

    • 网络层 IP 把运输层产生的报文封装成分组进行转发

    • 链路层 两个相邻节点传送数据时,该层将网络层交下来的 IP 数据报 封装成 帧 frame,每一帧包括数据和必要的控制信息(同步信息,地址信息,差错控制等),控制信息使接收端能够知道一个帧是从哪个比特开始,到哪个比特结束。收到一个帧后,可以从中提取出数据部分,上交给网络层.控制信息还能检测收到的帧中有无差错。如果发现有差错,数据链路层直接丢弃这个出了差错的帧(上层会重传的)

    • 物理层

    应用层

    • 数据传输基本单位为报文

    • 协议:FTP 文件传送协议、Telnet 远程登录协议、DNS 域名解析协议、SMTP 邮件传送协议,POP3 协议邮局协议,HTTP 协议

    物理层 3周前

    • 物理层的主要任务:确定与传输媒体的接口有关的一些特性,比如机械特性,电气特性,功能特性和过程特性

    • 数据通信系统: 源系统-传输系统-目的系统

    • 通信的目的是传送消息,语言图像视频都是消息,数据是运送消息的实体,信号是数据的电气或者电磁的表示。

    • 根据信号中代表消息的取值方式不同,信号分为模拟信号和数字信号

    • 根据双方信息交互的方式,通信分为 单向通信 双向交替通信 双向同时通信 ,也被称为单工通信 半双工通信 全双工通信

    • 常用的信道复用技术有 频分复用 时分复用 统计时分复用 码分复用 波分复用 光的频分复用

    • 用户宽带接入到互联网的方法有:ADSL 非对称数字用户线,光纤同轴混合网HFC FTTx

    物理层(Physical Layer)

    • 激活、维持、关闭通信端点之间的机械特性,电气特性、功能特性以及过程特性

    • 为上层协议提供了一个传输数据的可靠的物理媒体

    • 设备: 中继器(Repeater,也叫放大器)和集线器

    • Ether   net 以太网

    • 令牌环网

    • 点对点链接

    • FDDI 光钎分布式数据接口

    • 这些物理网络内部是数据链路层的网桥或者集线器链接在一起的,使用的是 MAC 地址,而物理网络之间的链接使用的是路由器,用的地址为 IP 地址

    分组:数据被切成了一小块一小块,每一小块就叫做分组

    封装

    • 分组被一层一层加上各种首部的过程

    • 以太网首部 + IP 首部 + TCP 首部 + 应用数据 + 以太网尾部

    分用:接收端将封装后的数据,一层一层拆开,分发给上层协议使用,继续拆封装或者处理的过程

    网络层 3周前

    文章无缩略内容。

    链路层 3周前

    • 本层研究的是,在同一个局域网中,分组packet怎样从一台主机传送到另一台主机,并不经过路由器转发

    • 数据链路层使用的信道有: 点对点信道 广播信道

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

    • 数据链路(data link) : 链路 link是连接相邻节点的线路,两台计算机通信往往需要经过多段链路,并且需要通信协议来控制数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路

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

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

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

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

    • 如何将数据组合成帧 frame,控制它在物理信道上的传输,处理传输差错,调节发送速率与接收方匹配

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

    • 设备:网桥 交换机

    如何解决在共用物理媒介上的多设备同时发消息的问题(多路访问)

    CSMA/CD是实际中使用的协议:具体思想是:在发送之前先监听信道。如果介质空闲,则马上传输。如果介质正在忙,则一直监听到信道空闲,立刻传输。如果检测到冲突,那么立刻停止传输,等待一个随机的时间,之后再重复上面的步骤。

    如何检测到冲突?

    消息发送的过程中主机进行监听,如果发现信道上面的电平值和自己发送端的电平值不相同,那么它就认为自己发送的时候有别人进行发送,也就是说信道发生了冲突。

    在信道空闲时发送一条消息后,我监听多长时间后没有监听到冲突,就认为我的消息成功发送了呢?

    我们假设AB是两个局域网中相距最远的节点,并且从一端传递到另一端所需要的时间为τ。我们考虑极端的情况:假设A发送到B的消息,在马上就到达B的时候,B突然发送了消息发生冲突。那么这个冲突信号再传递给A,这个过程应该持续2τ。也就是说,在消息最后一比特监听时间持续了2τ之后,还没有检测到冲突,那么认为消息应该已经无冲突的到达。

    如何控制传输过程中,数据发生错误的问题

    利用 CRC循环冗余校验 。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误。

    https://www.cnblogs.com/Mayfly-nymph/p/11100021.html#N6FTYAKr

    要注意的是,CRC循环冗余校验是硬件完成的,对于上层软件或用户来说是感觉不到的。因此,发送端对出错的数据帧进行重传是自动进行的,这种差错控制体质常简称为ARQ(自动重传请求/自动请求重传)

    LInux下C程序开发 3周前

    本文记录我在 Linux 下开发 C 程序用到的知识。

    网络工具 3周前

    net-tools 与 iproute2

    net-tools 起源于BSD,自2001年起,Linux社区已经对其停止维护,net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置。

    而iproute2旨在取代net-tools,并提供了一些新功能。一些Linux发行版已经停止支持net-tools,只支持iproute2。而iproute2则通过netlink套接字接口与内核通讯。

    net-tools中工具的名字比较杂乱,而iproute2则相对整齐和直观,基本是ip命令加后面的子命令。

    虽然取代意图很明显,但是这么多年过去了,net-tool依然还在被广泛使用,最好还是两套命令都掌握吧。

    TiDB 3周前

    RocksDB
    存储引擎原理:LSM
    LSM树 和 TSM存储引擎 简介

    如何实现一个数据库 3周前

    文章无缩略内容。

    数据库设计 3周前

    1. 需求分析

    数据自身的特点?

    数据之间的关系?

    实体是什么?实体与表之间不是一一对应的关系。实体之间的关系(1对1,1对多,多对多)。实体的标识(主健)

    实体的记录的增长速度。

    时效性:(用户登录 session之类)的数据要按时清理,
    增长性: (有些开发人员,喜欢将访问日志存库,这种数据增长是非常快的,必须制定好清理规则)

    1. 逻辑设计

    排序 3周前

    常见排序的一些最优写法的收集。

    Accelerated 3周前

    这本书使用通过直接使用和练习代码的方式来讲解C++,即使C++是以C为基础的,但是我们也并不会从C的教学开始,而是一开始就使用高级数据结构。

    Primer 3周前

    《C++ Primer》 第五版笔记。

    大象Thingking_in_UML 3周前

    本文是《大象 thinking in UML》一书的笔记。

    概述 3周前

    文章无缩略内容。

    mongo客户端命令 3周前

    文章无缩略内容。

    概述 3周前

    • 支持主流Web应用的关键功能:索引 复制 分片 丰富查询 灵活数据模型 速度

    • MongoDB能拓展出来的功能: 二级索引Secondary index 范围查询Range query 排序 聚合aggregation 地理空间索引geospatial index

    文本处理 3周前

    1. find 查找出需要处理的所有文件

    2. cat 将所有文件拼接,成为起始的stdin

    3. grepstdin流里过滤出,自己想要的行

    4. sedstdin流进行 字符串替换,tr 对流进行单个字符式的替换、去重、删除

    5. cutstdin中每一行,切出指定列,awk 也是切出指定多个列,还是可编程命令

    6. sort对所有行排序,排序好后,可以用uniq -c去除相同的行,再sort -nr到序输出

    7. wc -l统计下行数,或者sed '100,$d' 只取前 100 行

    gitlab 3周前

    2.程序组织结构 3周前

    判断文件编码格式 3周前

    编码 3周前

    RabbitMQ 3周前

    link 3周前

    Ansible 4周前

    分布式网站 4周前

    Goroutine 2020年7月31日

    Channel 2020年7月31日

    Go类型系统 2020年7月31日

    Mutex 2020年7月31日

    参考 2020年7月31日

    Zap日志库 2020年6月30日

    测试与文档 2020年6月30日

    nginx 2020年6月30日

    单链表 2020年6月30日

    C 2020年6月30日

    类型系统 2020年6月30日

    调试 2020年6月30日

    从汇编看C语言 2020年6月30日

    Go安装部署 2020年6月30日

    database 2020年6月30日

    JetbrainsIDE 2020年6月30日

    Linux系统原理 2020年6月30日

    容器 2020年6月30日

    PHP反射 2020年6月30日

    PHP数组 2020年6月30日

    任务队列和发布订阅 2020年6月30日

    运维命令 2020年6月30日

    打造高效的命令行界面 2020年6月30日

    Squid 2020年6月30日

    补码 2020年6月30日

    Elixir语言教程 2020年6月30日

    Go标准库 2020年6月30日

    02-标识符与变量 2020年6月30日

    06-值类型-2-字符串 2020年6月30日

    07-类型转换与别名 2020年6月30日

    09-引用类型-2-集合 2020年6月30日

    12-接口类型-1-接口的使用 2020年6月30日

    04-Go常用命令 2020年6月30日

    codekissyoung 2020年5月31日

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

    Erlang语言教程 2020年5月31日

    Lua脚本 2020年5月31日

    Schemer语言 2020年5月31日

    03-数据类型 2020年5月31日

    04-流程控制 2020年5月31日

    05-运算符 2020年5月31日

    06-值类型-1-数值类型 2020年5月31日

    06-值类型-3-数组 2020年5月31日

    06-值类型-4-结构体 2020年5月31日

    08-常量 2020年5月31日

    09-引用类型-1-切片 2020年5月31日

    09-引用类型-3-指针 2020年5月31日

    10-函数-1-函数简介 2020年5月31日

    10-函数-2-闭包 2020年5月31日

    11-面向对象-1-构造函数与方法 2020年5月31日

    11-面向对象-2-三大特性 2020年5月31日

    12-接口类型-2-断言与多态 2020年5月31日

    13-文件操作-1-写操作 2020年5月31日

    13-文件操作-2-读操作 2020年5月31日

    14-时间操作 2020年5月31日

    15-反射-1-概述 2020年5月31日

    15-反射-2-应用 2020年5月31日

    00-2-并发简略-多进程 2020年5月31日

    00-3-并发简略-多线程 2020年5月31日

    00-4-并发简略-非阻塞IO 2020年5月31日

    00-6-并发简略-对比并发模型 2020年5月31日

    01-goroutine 2020年5月31日

    02-channel 2020年5月31日

    03-channel的操作 2020年5月31日

    04-channel的应用 2020年5月31日

    05-select 2020年5月31日

    06-Go协程调度模型-1 2020年5月31日

    07-Go协程调度模型-2 2020年5月31日

    08-同步1-锁 2020年5月31日

    08-同步2-等待组 2020年5月31日

    08-同步3-条件变量 2020年5月31日

    08-同步4-sync包的其他API 2020年5月31日

    08-同步5-原子操作 2020年5月31日

    00-Go编程哲学 2020年5月31日

    01-包 2020年5月31日

    02-gomod 2020年5月31日

    03-错误处理 2020年5月31日

    05-单元测试 2020年5月31日

    06-性能测试与监控 2020年5月31日

    07-日志管理 2020年5月31日

    08-平滑升级 2020年5月31日

    09-交叉编译 2020年5月31日

    01-初探web开发 2020年5月31日

    02-ServeMux与中间件 2020年5月31日

    03-JSON与XML解析 2020年5月31日

    04-表单操作 2020年5月31日

    05-鉴权 2020年5月31日

    06-Go操作数据库 2020年5月31日

    07-TCP编程 2020年5月31日

    08-Go与WebSocket 2020年5月31日

    09-Go与微信开发 2020年5月31日

    10-Web安全 2020年5月31日

    11-Go与加密算法 2020年5月31日

    gin-01-基本使用 2020年5月31日

    gin-02-路由 2020年5月31日

    gin-03-单元测试 2020年5月31日

    gin-04-中间件 2020年5月31日

    gin-05-理解gin框架-1 2020年5月31日

    gin-05-理解gin框架-2 2020年5月31日

    gin-06-源码分析-流程梳理 2020年5月31日

    gin-07-源码分析-Egine与Context实现 2020年5月31日

    01-微服务概述 2020年5月31日

    02-protobuf-1-概述与安装 2020年5月31日

    02-protobuf-2-语法与原理 2020年5月31日

    02-protobuf-3-go与protobuf 2020年5月31日

    03-rpc-1-rpc简介 2020年5月31日

    03-rpc-2-go原生rpc实现 2020年5月31日

    03-rpc-3-grpc与go实现 2020年5月31日

    04-服务发现 2020年5月31日

    05-etcd-1-etcd概述 2020年5月31日

    05-etcd-2-etcd与服务发现 2020年5月31日

    05-etcd-3-go操作etcd基础 2020年5月31日

    05-etcd-4-go与etcd租约 2020年5月31日

    05-etcd-5-go与etcd监听 2020年5月31日

    05-etcd-6-go与etcd-事务 2020年5月31日

    06-gomicro-1-概述 2020年5月31日

    06-gomicro-2-集成grpc与etcd 2020年5月31日

    06-gomicro-3-集群 2020年5月31日

    http 2020年5月31日

    io 2020年5月31日

    regexp 2020年5月31日

    01-内存分区 2020年5月31日

    02-逃逸分析 2020年5月31日

    03-内存分配器TCMalloc 2020年5月31日

    04-Go内存管理器Mspan 2020年5月31日

    05-Go的GC机制 2020年5月31日

    06-Go运行时入口 2020年5月31日

    01-性能优化 2020年5月31日

    02-避坑-1-goroutine 2020年5月31日

    03-避坑-2-反射 2020年5月31日

    04-避坑-3-nil判断 2020年5月31日

    05-避坑-4-map多键索引 2020年5月31日

    06-避坑-5-TCP粘包 2020年5月31日

    常见样式 2020年5月31日

    网页布局 2020年5月31日

    16位CPU汇编语言 2020年5月31日

    32位CPU汇编语言 2020年5月31日

    64位CPU汇编语言 2020年5月31日

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

    CPP_PrimerPlus 2020年3月31日

    Effective 2020年3月31日

    STL 2020年3月31日

    语言导学 2020年3月31日

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

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

    C开发环境 2020年3月31日

    C速记卡片 2020年3月31日

    GCC编译特性 2020年3月31日

    GDB调试器 2020年3月31日

    Make构建工具 2020年3月31日

    字符编码 2020年3月31日

    微软c编程 2020年3月31日

    有品位的C代码 2020年3月31日

    运行环境 2020年3月31日

    预处理器 2020年3月31日

    MongoDB安全 2020年3月31日

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

    PHP会话 2020年3月31日

    PHP函数 2020年3月31日

    PHP参考 2020年3月31日

    PHP对象 2020年3月31日

    PHP异常 2020年3月31日

    PHP规范 2020年3月31日

    PHP语言 2020年3月31日

    PHP部署 2020年3月31日

    ThinkPHP 2020年3月31日

    Redis-Sentinel 2020年3月31日

    redis-cli 2020年3月31日

    事务 2020年3月31日

    数据类型 2020年3月31日

    概述 2020年3月31日

    生产环境部署redis 2020年3月31日

    配置 2020年3月31日

    正则表达式 2020年3月31日

    GoMicro 2020年3月31日

    K8s_in_action中文版 2020年3月31日

    K8s和jenkins 2020年3月31日

    MySQL节点 2020年3月31日

    Nginx节点 2020年3月31日

    PHP节点 2020年3月31日

    Prometheus 2020年3月31日

    Rsync 2020年3月31日

    SRE 2020年3月31日

    搭建TiDB集群 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日

    js模块化 2020年3月31日

    上传文件 2020年3月31日

    事件处理 2020年3月31日

    内置对象 2020年3月31日

    函数 2020年3月31日

    基础 2020年3月31日

    对象 2020年3月31日

    正则 2020年3月31日

    闭包 2020年3月31日

    RUSTful 2020年3月31日

    css面试 2020年3月31日

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

    Apache 2020年3月31日

    AutoTools 2020年3月31日

    BeyondCompare 2020年3月31日

    ab并发测试工具 2020年3月31日

    cmake 2020年3月31日

    git 2020年3月31日

    ssh 2020年3月31日

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

    线程 2020年3月31日

    MySQL使用军规 2020年3月31日

    MySQL或Maria DB 管理 2020年3月31日

    MySQL技术内幕 2020年3月31日

    SQLite 2020年3月31日

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

    mysql sql 2020年3月31日

    mysqlserver 2020年3月31日

    phpmyadmin 2020年3月31日

    事务 2020年3月31日

    深入理解SQL 2020年3月31日

    索引 2020年3月31日

    Code-review 2020年3月31日

    DDos 2020年3月31日

    Virus 2020年3月31日

    Worm 2020年3月31日

    中间人攻击 2020年3月31日

    书籍推荐 2020年3月31日

    嗅探 2020年3月31日

    架构文章 2020年3月31日

    深入理解构建系统 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日

    红黑树 2020年3月31日

    跳表 2020年3月31日

    CSAPP 2020年3月31日