目录

最新文章

Linux的使用 8分钟前

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

线程 8分钟前

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

C 8分钟前

C语言

erlang 8分钟前

代码没有 side effect

没有互斥

没有同步方法

没有内存共享式编程

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

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

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

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

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

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

SRE 昨天

SRE 全称 Site Reliability Engineer,目标是“创造软件系统来维护系统运行” 来代替 “人工操作”。

职责:可用性改进、延迟优化、性能优化、效率优化、变更管理、监控、紧急事务处理、容量规划与管理。

Fcitx输入法 昨天

文章无缩略内容。

JetbrainsIDE 昨天

本文包括CLion PHPStorm GolandIDE的配置。

git 昨天

阮一峰的网络日志 / git示意图

  • Workspace:工作区

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

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

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

nginx 昨天

文章无缩略内容。

Erlang中文教程 昨天

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

UbuntuServer 5天前

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

Elixir语言教程 1周前

中文官网

Xdebug 1周前

文章无缩略内容。

Linux下C程序开发 1周前

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

SHELL 1周前

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

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

SHELL中的调用命令分类:

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

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

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

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

PHP异常 2周前

文章无缩略内容。

编程学习路径 2周前

本文是我编程学习的一个路径。

ssh 2周前

SSH原理与运用(一):远程登录

SSH原理与运用(二):远程操作与端口转发

SSH整个过程是这样的:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

中间人攻击

如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

25 个必须记住的 SSH 命令

Goroutine 2周前

文章无缩略内容。

设计模式 2周前

文章无缩略内容。

Channel 2周前

性质

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

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

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

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

Go类型系统 2周前

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

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

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

Go语言 2周前

Go 语言提供的所有系统调用操作、IO同步操作,都会将CPU让给其他 Goroutine。

ArraySliceMap 2周前

文章无缩略内容。

Go函数 2周前

文章无缩略内容。

Go标准库 2周前

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

Interface 2周前

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

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

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

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

Reflect 2周前

文章无缩略内容。

RegExp 2周前

文章无缩略内容。

Runtime 2周前

尽管 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 不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间混淆。

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

Struct 2周前

文章无缩略内容。

参考 2周前

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

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

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

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

读取用户输入 2周前

文章无缩略内容。

调试 2周前

打印变量

mongo客户端命令 2周前

文章无缩略内容。

PHP反射 2周前

文章无缩略内容。

微服务设计 2周前

领域驱动设计

持续交付理论

  • 每次提交均可发布

六边形架构理论

按需虚拟化

基础设施自动化

小型自治团队

大型集群系统

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

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

  • 技术异构

  • 弹性

  • 拓展性

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

  • 与公司组织结构相匹配

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

  • 可替代性

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

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

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

架构师 类比 城市规划师

BeyondCompare 2周前

文章无缩略内容。

Go 2周前

文章无缩略内容。

PHP函数 3周前

文章无缩略内容。

PHP参考 3周前

PHP常用API参考。

PHP部署 3周前

本文主要记录PHP的安装与部署相关知识。

作为 CGI 处理器

CGI是个协议,约定好 Web Server 传递给/usr/bin/php处理器的参数、环境变量、POST 数据、HTTP Header 等内容。一次请求,就会调用一次/usr/bin/php进行处理。这是一个完整的过程,每次都产生一个新的进程,加载一次 php.ini。

CGI程序通过环境变量、命令行、标准输入输出进行交互,因此CGI要求与服务器进程在同一台物理机上。

作为 FastCGI 处理器

FastCGICGI的改良版本。而PHP-FPM正是实际实现了这个协议的软件。主要的改良点是:所有的请求都由PHP-FPM守护进程 (MasterWorker)进行处理,并且php.ini只在启动时被加载一次,大大提高了效率。

fastCGI程序与服务器进程可以通过网络连接交互,因此可以分布在不同的计算机上,这不但可以提高性能,同时也提高了系统的扩展能力。

作为模块

PHP提供了一个模块接口SAPIApache IIS 等服务器将这个接口模块包含在自身内,这样就拥有了解释执行PHP脚本语言的能力了。

ThinkPHP 3周前

ThinkPHP的使用笔记.

运维命令 3周前

常用的运维相关命令和技巧。

查看某个运行中的程序的环境变量

$ cat /proc/$PID/environ | tr '\0' '\n'

现代操作系统 3周前

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

高性能服务器编程 3周前

文章无缩略内容。

语言比较 3周前

  • Go 和 Scala 之间具有更多的可比性(都使用更少的代码),而 C++ 和 Java 都使用非常冗长的代码。

  • Go 的编译速度要比绝大多数语言都要快,比 Java 和 C++ 快 5 至 6 倍,比 Scala 快 10 倍。

  • Go 的二进制文件体积是最大的(每个可执行文件都包含 runtime)。

  • 在最理想的情况下,Go 能够和 C++ 一样快,比 Scala 快 2 至 3 倍,比 Java 快 5 至 10 倍。

  • Go 在内存管理方面也可以和 C++ 相媲美,几乎只需要 Scala 所使用的一半,是Java的五分之一左右。

语言设计 3周前

文章无缩略内容。

有品位的C代码 3周前

C 固然是我喜欢的语言,但是它的灵活性,导致可以使用它写出各种难以理解的代码(个人觉得是糟粕),导致代码的可读性不好、还伴有难以发现的 BUG 。使用一门语言,并不需要理解和使用它的全部,聪明的人都会挑选出它的一个子集作为自己的心头所爱。本文所写的就是我自己的心头所爱。

GoGC 4周前

K8s实战 4周前

打造高效的命令行界面 4周前

Code-review 4周前

codekissyoung 4周前

深入理解构建系统 4周前

大话数据结构 4周前

PostgreSQL 2020年10月31日

Go汇编 2020年10月31日

测试与文档 2020年10月31日

Go安装部署 2020年10月31日

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

类型系统 2020年9月30日

PHP对象 2020年9月30日

PHP模式 2020年9月30日

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

RabbitMQ 2020年9月30日

Docker 2020年8月31日

大象Thingking_in_UML 2020年8月31日

概述 2020年8月31日

Nginx节点 2020年8月31日

搭建TiDB集群 2020年8月31日

JS 2020年8月31日

Git工作流程 2020年8月31日

api接口设计 2020年8月31日

web 优化 2020年8月31日

xss 2020年8月31日

OS 2020年8月31日

Unix_linux编程实践教程 2020年8月31日

进程 2020年8月31日

1.基础 2020年8月31日

磁盘 2020年8月31日

PHP字符 2020年7月31日

概念基础 2020年7月31日

跨域 2020年7月31日

优化 2020年7月31日

linux系统编程 2020年7月31日

传输层 2020年7月31日

应用层 2020年7月31日

物理层 2020年7月31日

网络层 2020年7月31日

链路层 2020年7月31日

网络工具 2020年7月31日

TiDB 2020年7月31日

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

数据库设计 2020年7月31日

排序 2020年7月31日

Accelerated 2020年7月31日

Primer 2020年7月31日

概述 2020年7月31日

2.程序组织结构 2020年7月31日

编码 2020年7月31日

Ansible 2020年7月31日

分布式网站 2020年7月31日

Mutex 2020年7月31日

Zap日志库 2020年6月30日

单链表 2020年6月30日

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

Linux系统原理 2020年6月30日

PHP数组 2020年6月30日

Squid 2020年6月30日

补码 2020年6月30日

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

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日

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日

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日

PHP会话 2020年3月31日

PHP规范 2020年3月31日

PHP语言 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和jenkins 2020年3月31日

MySQL节点 2020年3月31日

PHP节点 2020年3月31日

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

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日

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

Apache 2020年3月31日

AutoTools 2020年3月31日

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

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

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日

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日

CSAPP 2020年3月31日