目录

最新文章

Channel 前天

性质

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

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

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

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

调试 前天

打印变量

Prometheus 前天

使用 prometheus_client_php 为 Prometheus 提供数据
使用 prometheus_client_php 对接 prometheus 监控系统
Prometheus 简单使用及 exporter 开发,使用 prometheus_client_php
使用 Prometheus 针对自己的服务器采集自定义的参数
从零搭建 Prometheus 监控报警系统 PushGateWay 方式

Linux的C 前天

Linux 下开发 C 程序用到的知识。

Go 3周前

文章无缩略内容。

微软c编程 3周前

文章无缩略内容。

mongo客户端命令 3周前

文章无缩略内容。

C 3周前

文章无缩略内容。

Primer 3周前

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

概述 3周前

文章无缩略内容。

语言的设计与演化 3周前

本文是C++语言之父的《C++语言的设计与演化》一书的摘录笔记。

Erlang教程 3周前

面向消息、面向并发的语言Erlang!!!

GDB调试器 3周前

单步跟踪程序、查看变量内容、内存位置、以及指向每条语句后CPU寄存器的变化情况。也可以分析到达程序中某个点之前的函数调用序列。

GDB是 符号式调试器,必须通过-g选项,在程序编译时将源代码到机器指令的信息写入到可执行文件的符号表中。在包含多个源代码文件的大型程序中,必须在编译每个模块的时候都使用-g选项。

GDBFrontend 一个GUI调试工具

Make构建工具 3周前

make的作用是让“将源代码转换为可执行文件”之类的例行性工作自动化,把可执行文件到源代码的依赖关系通过makefile告知make,然后make会根据这些关系以及文件的时间戳判断,应该重新执行哪些步骤,用以编译出可执行文件。

从C到汇编 3周前

C 语言编译成汇编语言教程

C 语言翻译成汇编语言,只有 全局变量 和 函数 有自己的名字(也是内存地址),类型信息、局部变量都被抹去,取而代之的是反复利用的“寄存器”和精确计算好的“内存地址+偏移量”。

运行环境 3周前

c_dev_procedure.jpg

编译时定义宏

PHP语言 3周前

文章无缩略内容。

设计模式 3周前

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

概述 3周前

SHELL 3周前

文章无缩略内容。

网页文字 3周前

文章无缩略内容。

api接口设计 3周前

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

web优化 3周前

动静分离

所谓的动静分离,就是将 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 压缩技术

游戏服务器开发框架 3周前

文章无缩略内容。

16位CPU汇编语言 3周前

16 位 8086 CPU 的相关知识。

项目下载地址

自顶向下 3周前

image-20210318004313901

image-20210318004346429

erlang 3周前

代码没有 side effect

没有互斥

没有同步方法

没有内存共享式编程

一个 Process 能修改自身, 但不能修改另一个 Process 的状态,只能通过 传递消息 进行交互

Erlang 的风格就是编写大量只做简单事情的小进程.

可以修改的内存区域称为"mutable state"可变状态,C 语言并发编程,必须解决共享内存的访问问题,在多个执行流中,只有一个能访问这些内存区域,所以必须给这些区域加锁,使用完后解锁. 这就要求加锁后,线程在操作共享内存时千万不能崩溃!!!崩溃了没有释放锁的话,这个程序都会阻塞在这把锁这里.

Erlang 变量是对某个值的引用,实现上用指针,为 nil 代表未绑定变量,指向一个包含值的内存区域后,称为绑定.绑定后不能修改,即不能修改指针的指向了.

可以被修改的变量是许多程序错误的根源,任何一处修改该变量的地方都有可能是错误发生之处,而对于 Erlang 变量,只要是发现它的值不符合预期,那么错误一定是在生成该变量的地方.

只有可以被赋值一次的变量该如何编程呢?答案是使用另一个变量:

文本处理 2021年9月30日

  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 行

高效的命令行 2021年9月30日

使用命令行工作的一个总结。

大象UML 2021年9月30日

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

语言导学 2021年9月30日

这是 C++ 语言之父 Stroustrup 写的新书《A Tour of C++》的中文版。2015年出版的,值的一看。本文是笔记。

Go函数 2021年9月30日

文章无缩略内容。

Go标准库 2021年9月30日

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

启动外部程序 2021年9月30日

os 包有一个 StartProcess 函数可以调用或启动外部系统命令和二进制可执行文件;它的第一个参数是要运行的进程,第二个参数用来传递选项或参数,第三个参数是含有系统环境基本信息的结构体。

这个函数返回被启动进程的 id(pid),或者启动失败返回错误。

exec 包中也有同样功能的更简单的结构体和函数;主要是 exec.Command(name string, arg ...string)Run()。首先需要用系统命令或可执行文件的名字创建一个 Command 对象,然后用这个对象作为接收者调用 Run()。下面的程序(因为是执行 Linux 命令,只能在 Linux 下面运行)演示了它们的使用:

分布式网站 2021年9月30日

文章无缩略内容。

面向容错性架构 2021年9月30日

文章无缩略内容。

网络工具 2021年9月30日

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依然还在被广泛使用,最好还是两套命令都掌握吧。

MySQL节点 2021年9月30日

参考 Ubuntu 装机指南,获得一个干净的Server后,下面可以将这个Server做成MySQL节点。

Fcitx输入法 2021年9月30日

文章无缩略内容。

编码 2021年9月30日

《编码 隐匿在计算机软硬件背后的语言》笔记

ssh 2021年8月31日

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

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

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

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

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

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

Xhprof 2021年6月30日

函数调用性能分析工具.

Xhprof GitHub官网

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

PHP7 安装 xhprof

php的性能分析工具:xhprof

PHP反射 2021年6月30日

文章无缩略内容。

PHP字符 2021年6月30日

PHP字符串笔记。

PHP对象 2021年6月30日

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

PHP规范 2021年6月30日

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

Xdebug 2021年6月30日

Xdebug 中文文档

Xdebug安装使用远程调试原理

读取用户输入 2021年6月30日

文章无缩略内容。

Go语言 2021年6月30日

文章无缩略内容。

设计模式 2021年6月30日

文章无缩略内容。

补码 2021年6月30日

网络层 2021年6月30日

PHP参考 2021年5月31日

微服务设计 2021年5月31日

ThinkPHP 2021年3月31日

netwox 2021年3月31日

https 2021年3月31日

css面试 2021年3月31日

Unixlinux编程实践 2021年3月31日

linux系统编程 2021年3月31日

CDN 2021年3月31日

高可用 2021年3月31日

计算机硬件 2021年3月31日

进程 2021年3月31日

链路层 2021年3月31日

wireshark 2021年3月31日

select和poll及epoll 2021年3月31日

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

CSAPP 2021年3月31日

Linux系统原理 2021年3月31日

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

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

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

传输层 2021年3月31日

应用层 2021年3月31日

物理层 2021年3月31日

CentOS 2021年3月31日

Ubuntu 2021年3月31日

link 2021年3月31日

gpg 2021年3月31日

Docker技术栈 2021年3月31日

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

PHP函数 2021年3月31日

VirtualBox 2021年3月31日

线程 2021年3月31日

KMS 2021年2月28日

Linux的使用 2021年2月28日

Ansible 2021年2月28日

Rsync 2021年2月28日

MySQL或MariaDB管理 2021年2月28日

Docker 2021年2月28日

Lua脚本 2021年2月28日

事务 2021年2月28日

RabbitMQ 2021年2月28日

cmake 2021年2月28日

K8s实战 2021年2月28日

正则表达式 2021年2月28日

K8s和jenkins 2021年2月28日

nginx 2021年2月28日

SRE 2021年1月31日

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

PHP节点 2021年1月31日

事件处理 2021年1月31日

内置对象 2021年1月31日

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

PHP会话 2021年1月31日

curl 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日

Effective 2020年12月31日

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

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

codekissyoung 2020年12月31日

镜像队列 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日

架构文章 2020年12月31日

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

红黑树 2020年12月31日

BeyondCompare 2020年11月30日

PHP部署 2020年11月30日

语言比较 2020年11月30日

语言设计 2020年11月30日

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

测试与文档 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日

单链表 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日

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日

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日