目录

最新文章

K8s实战 前天

文章无缩略内容。

UbuntuServer 前天

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

syncMap 4天前

文章无缩略内容。

ab并发测试工具 4天前

文章无缩略内容。

Prometheus 5天前

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

image-20210119143704528

打造高效的命令行界面 5天前

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

Ansible 6天前

Ansible是配置管理工具,类似的有ChefPuppetSalt

K8s和jenkins 6天前

K8s 官方文档

https://kubernetes.io/docs/tutorials/hello-minikube/

搞个 nodejs 应用:

PHP节点 6天前

在安装完Nginx或者Apache2后,总是需要安装PHP的基础支持软件。

事件处理 6天前

  • HTML 事件处理程序

  • DOM 0 级 事件处理程序

对于同一个 dom 节点而言,只能注册一个,后边注册的同种事件会覆盖之前注册的

  • DOM 2 级 事件处理程序

内置对象 6天前

文章无缩略内容。

SHELL 1周前

文章无缩略内容。

k8s书籍 1周前

image-20210114234229939

@2017.09

image-20210114234552541

@2018.10

image-20210114234701983

@2018

image-20210114234828602

@2016.5

image-20210114234914049

js对象类型检测 1周前

文章无缩略内容。

PHP会话 2周前

http 协议是无状态的,对于每个请求,服务端无法区分用户。PHP 为了区分用户,采用了 Session 机制。

redis-cli 2周前

文章无缩略内容。

概述 2周前

cmake 2周前

本文记录了cmake的用法。

启动外部程序和命令 2周前

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

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

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

curl 2周前

文章无缩略内容。

大象Thingking_in_UML 3周前

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

语言导学 3周前

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

Runtime 3周前

尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 节)、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。

垃圾回收器 Go 拥有简单却高效的标记-清除回收器。它的主要思想来源于 IBM 的可复用垃圾回收器,旨在打造一个高效、低延迟的并发回收器。目前 gccgo 还没有回收器,同时适用 gc 和 gccgo 的新回收器正在研发中。使用一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗 CPU 资源的一种行为。

Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每一个可执行文件当中。当然,在部署到数量巨大的集群时,较大的文件体积也是比较头疼的问题。但总的来说,Go 的部署工作还是要比 Java 和 Python 轻松得多。因为 Go 不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间混淆。

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

Xdebug 3周前

Xdebug 中文文档

Xdebug安装使用远程调试原理

生产环境部署redis 3周前

文章无缩略内容。

分布式网站 3周前

文章无缩略内容。

Apache 3周前

文章无缩略内容。

Docker 3周前

Docker的基础知识、命令。

git 3周前

  • Workspace:工作区

  • Index / Stage:暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作 索引 ,不过一般说法还是叫暂存区域。

  • Repository:仓库区(或本地仓库)

  • Remote:远程仓库,可能会有好多个,有些可以写,有些你只能读。对于远程库的工作包括:推送或拉取数据,分享各自的工作进展,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支

link 3周前

Go语言圣经 中译资料

GoWeb编程:Go语言Web编程基础

Go并发编程实战:非常好的go并发原理解读书籍,但语言组织欠佳

Go语言学习笔记:言简意赅,深入浅出,力荐

Go语言高级编程:深入理解Go必备

开源文档

https://github.com/overnote OverNote地址:
https://github.com/ruyuejun 笔者的地址:

详尽的Go领域笔记:Go语法、Go并发编程、GoWeb编程、Go微服务等
大前端:包含JavaScript、Node.js、vue/react、微信开发、Flutter等大前端技术
数据结构与算法:以C/Go实现为主记录数据结构与算法的笔记
服务端架构:分布式与微服务笔记,附Nginx、Mysql、Redis等常用服务端技术
Linux:计算机组成原理、操作系统、计算机网络、编译原理基础学科笔记

大数据:大数据笔记
Python与机器学习:Python相关笔记

PHP 网站

小不点网盘搜索

配色工具

电影网站

Server 酱

  • 一款从服务器推报警和日志到手机的工具,使用方法如下:

  1. 登入:用 GitHub 账号登入网站,就能获得一个 SCKEY(在「发送消息」页面)

  2. 绑定:点击「微信推送」,扫码关注同时即可完成绑定

  3. 发消息:往 http://sc.ftqq.com/SCKEY.send 发 GET 请求,就可以在微信里收到消息啦

OS 3周前

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

Unixlinux编程实践 3周前

文章无缩略内容。

单词 3周前

文章无缩略内容。

磁盘 3周前

文章无缩略内容。

传输层 3周前

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

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

  • 重要设备:网关

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

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

物理层 3周前

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

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

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

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

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

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

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

物理层(Physical Layer)

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

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

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

  • Ethernet 以太网

  • 令牌环网

  • 点对点链接

  • 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(自动重传请求/自动请求重传)

Docker原理 3周前

Docker 技术将应用 程序代码 / 运行时库 / 系统工具 等依赖全部被打包成了一个镜像。通过 Docker Engine 运行该镜像,产生的进程就是容器。所有的 Docker 容器共享同一个 Kernel。

镜像采用了分层文件系统,所有的镜像共享相同的文件层,因此占用的磁盘小,也有利于网络下载。

每个容器的 文件系统 / 网络 / CPU / 内存 资源都是隔离开的。

LXC : Linux Containers, 正是 LXC 被集成到Linux内核中,催生了 Docker,最早可以追溯到 1982 年 Unix 的 chroot 工具。

Docker 提供的分发、版本、移植工具,极大的改善了 LXC 的使用体验。

当然后期,Docker 开发了 libcontainer 驱动,替代了 Linux 上的原生的 LXC ,作为容器引擎的一部分,但是它们的功能与目的时差不多的。

nginx 3周前

文章无缩略内容。

生产环境 4周前

文章无缩略内容。

生产环境的Docker技术栈 4周前

流程:

  1. 构建并保存镜像快照

  2. 上传镜像到仓库

  3. 下载镜像到生产Host

  4. 以容器方式运行镜像

  5. 将容器连接到其他服务上

  6. 路由流量到容器中

  7. 将容器日志发生到指定位置

  8. 监控容器

网络工具 4周前

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

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

C 语言中<stdarg.h>提供的可选参数函数功能,记住一个宏调用流程va_list va_start va_arg va_end就可以很方便实现一些灵活的函数,但没啥大用。

研究它的实现原理反而更有价值,能够帮助我们深入理解CPU底层的栈机制实现函数调用的细节和要点。因为是CPU提供的栈机制,所以可选参函数在IA3232位与x86-6464位CPU上的实现细节是不一样的。

文本处理 2020年12月31日

  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 行

高性能服务器编程 2020年12月31日

文章无缩略内容。

ssh 2020年12月31日

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

它的内容包括以下三点:

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

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

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

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

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

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

Linux的使用 2020年12月31日

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

Effective 2020年12月31日

《Effective C++》第三版的学习笔记。

PHP语言 2020年12月31日

文章无缩略内容。

设计模式 2020年12月31日

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

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

进程 2020年12月31日

codekissyoung 2020年12月31日

镜像队列 2020年12月31日

RabbitMQ 2020年12月31日

Xhprof 2020年12月31日

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

Go函数 2020年12月31日

PHP函数 2020年12月31日

PHP参考 2020年12月31日

PHP异常 2020年12月31日

PHP规范 2020年12月31日

闭包 2020年12月31日

AutoTools 2020年12月31日

Linux下C程序开发 2020年12月31日

Linux系统原理 2020年12月31日

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

线程 2020年12月31日

MySQL或MariaDB管理 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日

CSAPP 2020年12月31日

ThinkPHP 2020年12月31日

Erlang中文教程 2020年12月31日

linux系统编程 2020年12月31日

架构文章 2020年12月31日

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

运维命令 2020年12月31日

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

红黑树 2020年12月31日

erlang 2020年12月31日

C 2020年12月31日

SRE 2020年11月30日

Fcitx输入法 2020年11月30日

JetbrainsIDE 2020年11月30日

Elixir语言教程 2020年11月30日

Goroutine 2020年11月30日

设计模式 2020年11月30日

Channel 2020年11月30日

Go类型系统 2020年11月30日

Go语言 2020年11月30日

ArraySliceMap 2020年11月30日

Go标准库 2020年11月30日

Interface 2020年11月30日

Reflect 2020年11月30日

RegExp 2020年11月30日

Struct 2020年11月30日

参考 2020年11月30日

读取用户输入 2020年11月30日

调试 2020年11月30日

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

PHP反射 2020年11月30日

微服务设计 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日

Go安装部署 2020年10月31日

css面试 2020年10月31日

html面试 2020年10月31日

http 2020年10月31日

OOP 2020年10月31日

Context 2020年10月31日

类型系统 2020年9月30日

PHP对象 2020年9月30日

概述 2020年8月31日

Nginx节点 2020年8月31日

搭建TiDB集群 2020年8月31日

JS 2020年8月31日

api接口设计 2020年8月31日

web 优化 2020年8月31日

xss 2020年8月31日

1.基础 2020年8月31日

PHP字符 2020年7月31日

概念基础 2020年7月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日

编码 2020年7月31日

Mutex 2020年7月31日

Zap日志库 2020年6月30日

单链表 2020年6月30日

PHP数组 2020年6月30日

补码 2020年6月30日

Lua脚本 2020年5月31日

Schemer语言 2020年5月31日

常见样式 2020年5月31日

网页布局 2020年5月31日

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

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

64位CPU汇编语言 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日

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

Redis-Sentinel 2020年3月31日

事务 2020年3月31日

数据类型 2020年3月31日

配置 2020年3月31日

正则表达式 2020年3月31日

GoMicro 2020年3月31日

MySQL节点 2020年3月31日

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