最新文章
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 方式
打造高效的命令行界面 5天前
使用命令行工作的一个总结。
Ansible 6天前
Ansible
是配置管理工具,类似的有Chef
、Puppet
、Salt
。
PHP节点 6天前
在安装完Nginx
或者Apache2
后,总是需要安装PHP
的基础支持软件。
内置对象 6天前
文章无缩略内容。
SHELL 1周前
文章无缩略内容。
js对象类型检测 1周前
文章无缩略内容。
PHP会话 2周前
http 协议是无状态的,对于每个请求,服务端无法区分用户。PHP 为了区分用户,采用了 Session 机制。
redis-cli 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 不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间混淆。
如果想知道当前的内存状态,可以使用:
生产环境部署redis 3周前
文章无缩略内容。
分布式网站 3周前
文章无缩略内容。
Apache 3周前
文章无缩略内容。
Docker 3周前
Docker的基础知识、命令。
git 3周前
Workspace:工作区
Index / Stage:暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作 索引 ,不过一般说法还是叫暂存区域。
Repository:仓库区(或本地仓库)
Remote:远程仓库,可能会有好多个,有些可以写,有些你只能读。对于远程库的工作包括:推送或拉取数据,分享各自的工作进展,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支
link 3周前
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 网站
配色工具
your logos 你提供产品的描述,该网站会自动生成 Logo 图案。
电影网站
Server 酱
一款从服务器推报警和日志到手机的工具,使用方法如下:
登入:用 GitHub 账号登入网站,就能获得一个 SCKEY(在「发送消息」页面)
绑定:点击「微信推送」,扫码关注同时即可完成绑定
发消息:往
http://sc.ftqq.com/SCKEY.send
发 GET 请求,就可以在微信里收到消息啦
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周前
文章无缩略内容。
网络工具 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提供的栈机制,所以可选参函数在IA32
32位与x86-64
64位CPU上的实现细节是不一样的。
文本处理 2020年12月31日
find
查找出需要处理的所有文件cat
将所有文件拼接,成为起始的stdin
grep
从stdin
流里过滤出,自己想要的行sed
对stdin
流进行 字符串替换,tr
对流进行单个字符式的替换、去重、删除cut
对stdin
中每一行,切出指定列,awk
也是切出指定多个列,还是可编程命令sort
对所有行排序,排序好后,可以用uniq -c
去除相同的行,再sort -nr
到序输出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日
文章无缩略内容。