自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 收藏
  • 关注

原创 Files and Directories 文件和目录

4.1介绍 Introduction前边一章介绍了基础的I/O 函数。 这些讨论都聚焦在常规文件的I/O, 如打开,读,写一个文件。 现在我们将看看文件系统的其他功能, 和文件的属性。我们将以stat函数开始,来过一遍stat结构体的每一个成员,来看看文件的所有属性。 在这个过程, 我们将描述每一个函数都修改那些属性: 改变owner, 改变权限,等等。 这章的最后,看看操作目录的函数,并且我们开发一个函数,它往下(descends)遍历一个目录的结构。4.2stat, ...

2022-03-19 08:48:19 1548 1

原创 File I/O (unbufferd) -APUE第三版

3.1 introduction 介绍先介绍unix 系统的五个I/O 函数- open, read, write, lseek, close . 然后检查不同buffer sizes 对read, write 函数的效率的影响。在这章中函数相比standard I/O (5章)的是unbuffered I/O, 术语unbuffered 指的是每个read, write 调用内核的系统调用。这些unbuffered I/O function 不是ISOC ...

2022-02-13 22:37:28 804

原创 信号Signals--APUE第三版

10.1 介绍Signals 提供了一种处理异步事件的方式, 例如用户在中断键入ctrl + C 来终止一个程序.我们即将描述的就是POSIX.1 标准化的reliable-signal routines .10.2 Signal Concepts 信号概念首先每个信号都有一个名字。这些名字以SIG开头。例如: SIGABRT 是abortsignal ,当一个程序调用abort 函数时生成。 SIGALRM 是alarmsignal ....

2021-11-22 00:16:55 875

原创 tcp是流式传输协议-tcpdump抓包印证

结论:1. tcp 是流式传输协议,“流(stream)”的 含义 像河流 一样,包和包之间紧紧相互挨着,内核协议栈(tcp)不会使用特殊分隔符分割,实质上它也根本不关心这些流里边具体都是什么数据,长度是多大。2. tcp包头中没有关于长度的字段,这个 和它 流 的特点是相匹配的。...

2021-10-20 23:59:48 2444 1

原创 HTTPS协议

1. HTTP的缺点 (安全方面) 通信使用 明文(不加密) ; 安全问题: 内容会被窃听。 不验证通信双方(客户端,服务端)的身份 ; 安全问题:有可能遭遇伪装。 无法证明报文的完整性; 安全问题: 有可能内容已遭到更改。1. 通信使用明文; 可能会被窃听进一步说明一下:TCP/IP 的工作机制,通信内容在所有环节都可能遭到窥探。即使通信内容做了加密处理,也会被窥视到。解决: 1, 使用TLS 1.3 进行加密 或2, 在客户端或 服务端 对请求头...

2021-10-19 22:38:23 381

原创 redis协议-yii2源码理解

0. redis 协议 图示1. client一端的收发数据处理(有时间研究下 redis server 一端的 收发数据处理)2. client发送数据给 redis server*参数数量\r\n $参数字节数\r\n参数数据\r\n2. 封包encode/** * Executes a redis command. * For a list of available commands and their parameters see http://re...

2021-09-26 22:23:45 172

原创 php实现webSocket协议- - workerman源码理解

1. 从 连接socket的 接收缓冲区中copy数据,怎么copy?$buffer = @\fread($socket, self::READ_BUFFER_SIZE); // 65535每次读取最多65535字节,放到用户程序的缓冲区(这里指的是php tcpConnection对象的_recvBuffer 属性)每读一次就尝试解析 用户程序的缓冲区(_recvBuffer) ,使用$parser::input 方法去解析,如果返回一个> 0 数字证明,_recvBuffer 有.

2021-09-17 23:05:40 687

原创 workerman源码理解

1. workerman 运行流程 ?或 master进程, worker进程, worker对象, 一些 tcpConnection对象, 监听socket, 客户端与服务端连接 socket, 协议解析$parser 这几者的关系?从启动流程来说:从接受连接来说, (已连接)从接收数据来说:以tcp 处理为例子:master进程 fork出来一些数量worker进程;每一个worker进程有一个对应的worker对象;worker对象 中执行 run方法, run方法...

2021-09-11 00:33:12 556

原创 计算机系统概述 - 深入理解计算机系统第三版笔记

从一个简单的hello.c 程序说起。本文讨论的就是执行hello 程序时,系统发生了什么以及为什么会这样。#include <stdio.h>int main(){ printf(“hello, world\n”); return 0;}1. 1 信息就是 位 + 上下文1.2 程序被其他程序翻译成不同的格式说明:汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供了通用的输出语言。例如, C编译器...

2021-06-22 17:32:09 463 2

原创 Mysql基础使用补充

子查询/合并查询单行子查询—知道部门名字, 找到该部门所有员工。select * from employee where dept_id = (select id from dept where name= ‘讲师‘);—知道 名字,找出与他同部门的所有员工。select * from employee where dept_id = (select dept_id from employee where name= ‘mark’);多行子查询(即返回多行记录的子查询)IN...

2021-05-14 18:09:56 192

原创 unicode字符集和utf-8编码

字符集 和字符编码的关系:字符集 是 书写系统字母与符号的集合 字符编码则是 将字符映射为一 特定的字节 或字节序列, 是一种规则。 通常特定的字符集 采用特定的编码方式(即一种字符集 对应一种字符编码,例如ASCII, IOS-8859-1, GB2312, GBK ,都是表示了字符集又表示了相应的字符编码,)但 unicode 不是,他的编码方式有好几种 如 :UTF-8 UTF-16BE UTF-16LE UTF-32 等字符集的发展单字节 -> 双字节 —> ...

2021-04-21 16:15:21 1336

原创 protobuf编解码原理

varints 编码基本思想/基本逻辑通常来说, 普通的int数据类型,无论其值的大小,所占用的存储空间都是相等的, 这点可以引起人们的思考“是否 可以根据数值的大小来动态地占用存储空间,使得值比较小的数字占用较少的字节数, 值比较大的数字占用比较多的字节数” 这就是 变长 整型编码的 基本思想。Protobuf 中使用的是 base128 Varints 编码varints 编码 使用每个字节的 最高有效位 作为标志位,而剩余的 7位 以二进制补码的 形式 来存储数字值本身, 当最高位有.

2021-04-20 12:31:03 560

原创 openssl 中base64编解码函数的基本使用代码code

OpenSSL 中用于base64 编解码的函数主要有:编码函数EVP_EncodeInit 编码前初始化上下文EVP_EncodeUpdate 进行base64编码, 本函数可多次调用EVP_EncodeFinal 进行base64编码,并输出结果EVP_EncodeBlock 进行base64编码解码函数EVP_DecodeInit 解码前初始化上下文EVP_DecodeUpdate base6...

2021-04-18 00:36:16 726

原创 base64编解码

base64 编码介绍base64 编码是一种常用的将十六进制转换为 可见字符的编码。base64编码 在 rfc3548 中定义。base64 编解码原理将数据编码成 base64编码时, 以3个字节为一组, 转换为24bit的二进制数,将24bit的 二进制数 分成四组, 每组6bit。 对于每一组,得到一个数字:0-63。表:比如:数据: 0x30 0x82 0x02 编码过程如下:1) 得到 16进制数据: 30 82 022) 得到二进制数据: ...

2021-04-17 23:31:30 532

原创 树、二叉树

1. 树定义:树(Tree)是 n(n>=0) 个节点的有限集。 n=0 时称为 空树。 在任意一棵非空树中:(1)有且仅有一个特定的称为 根(Root)的节点。 (2):当 n>1 时, 其余节点(除了根节点)可分为 m( m>0) 个 互不相交的有限集 T1, T2, ......,Tm , 其中 每一个集合 本身又是 一棵树, 并又称为根的 子树。注意:结点 包含 一个数据元素 及 若干指向 其子树 的分支。1.1 概念度(Degree)...

2021-02-20 23:02:11 174

原创 CMake基础+实战

1. cmake 初始1.1 背景 项目的诞生时间是2001年,官方网站www.cmake.org1.2特点 1. 开放源代码 2. 跨平台,并可生成native 编译配置文件,在Linux/Unix 平台,生成 makefile,在苹果平台,可以生成xcode,在 Windows 平台,可以生成 MSVC 的工程文件。 3. 能够管理大型项目, KDE4 就是最好的证明 4. 高效率 ,比 使用 autotools 高 ...

2021-02-15 19:17:59 401

原创 模式设计原则/面向对象编程原则

模式设计原则依赖倒置原则(Dependence Inversion Principle) ⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象; 抽象不应该依赖具体实现,具体实现应该依赖于抽象; 开放封闭原则 一个类应该对扩展开放,对修改关闭;面向接口编程 不将变量类型声明为具体的类,而是声明为某个接口。 客户程序不需知道对象的具体类型,只需知道对象所具有的接口。封装变化点 将稳定点 和 变化点分离,扩...

2021-01-23 18:37:10 104

原创 排序(数据结构与算法)

排序通俗的定义:就是重新排列表/集合中的元素/数据元素/记录, 使表/集合中的元素满足按其关键字递增或递减的过程。严格定义:输入:n个记录R1 R2 ......Rn, 对应的关键字为K1 K2 ......Kn.输出:输入序列的一个重排: R1’ R2’......Rn’, 使得对应的关键字满足K1’ <= k2’ <= ...... <=Kn’例子:对所有学生按总分进行排序,如果总分相等,再按语数外总分进行排序。从这个例子中看出,多个关键字...

2021-01-16 23:55:04 401

原创 gatewayWorker原理/源码浅谈

1. gateway进程 与 businessWorker 进程的关系图:引用自官网手册中的原理图:http://doc2.workerman.net/principle.html2. 项目中 启动时的总揽图:说明:websocketGateway 监听 9501 内部监听 127.0.0.1:3900;127.0.0.1:3901;127.0.0.1:3902;127.0.0.1:3903 使用text协议的gateway 监听9502 内部监听1...

2021-01-16 01:40:04 1742

原创 PSR4规范 及composer autoload的实现

PSR (Proposing a Standards Recommondation) PHP 编码规范。https://learnku.com/docs/psr/psr-4-autoloader/1608https://www.php-fig.org/psr/psr-4/PSR -4 自动加载规范\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>ii 全限定类名可以有一个或者多个子命名空间名称。..

2020-11-30 22:59:18 847

原创 yii2框架深入理解

目录:1. 要理解PSR4 规范2. 理解composer autoload 的实现3. 理解yii2 autoload的实现4. yii2 autoload 与 composer autoload 的联系与区别5. yii2 核心类的 加载 流程, classmap 作用及意义6. yii2 container 类/对象 的作用,如何自定义自己的container类7. yii2 路由规则类,路由管理类 特点,如何自定义自己的路由规则类。1.PSR4 规范、2. compo

2020-11-29 23:57:41 1286

原创 go 函数 作为类型 - go语言

在Go语言中国 可以把 函数作为一种类型 用 type 定义。利用这种特性 ,可以进行类型转换。 可以用作函数参数的 类型 来约束参数。函数的类型转换类型转换的基本格式如下:type_name(expression)package mainimport "fmt"//声明一个函数类型type CalculateType func(int , int )// 该函数类型实现了一个方法func (c *CalculateType) Server() { fmt.Println

2020-08-10 19:06:47 377 1

原创 进程组、会话和作业控制(process groups, sessions, and job control)-Linux系统编程手册

进程组和会话 是为支持shell 作业控制而定义的抽象概念。34.1 概述(overview)进程组:由一个或多个 进程组成,它们有同样的进程组标识符(PGID)。进程组ID 是一个数字,其类型与进程ID 一样(pid_t)。一个进程组 拥有 一个 process group leader 进程 , 该进程是创建该组的进程,其进程ID为 该进程组的ID,新进程会继承其父进程 所属的进程组ID。进程组拥有一个 生命周期(lifetime), 其开始时间为 leader进程 创建组的时刻, 结束..

2020-07-15 00:02:30 645

原创 基本概念 - - Linux系统编程手册

基本概念(Fundamental concepts)内核 (The Kernel)操作系统 (operating system) 通常有 2 种 不同含义:1. 指 完整的软件包 。 这 包括 管理计算机资源的核心软件 和 所有 附带的 标准 软件工具 , 如。。。。//consisting of ... and ..... 翻译为 “ ,这包括 .... 以及/和 ......2. 狭义地(More narrowly) 指 核心软件,它(that) 管理和...

2020-07-06 00:03:00 432

原创 php xdebug性能分析,phpstorm查看性能分析报告,使用mac的qcachegrind工具来进行图形化查看

xdebug 性能分析:性能分析:php.ini 中配置xdebug.profiler_enable=0xdebug.profiler_enable_trigger=1xdebug.profiler_output_name=cachegrind.out.%t.%pxdebug.profiler_output_dir=/mnt/hgfs/work_www/360che/xdebug/说明:profiler_enable 值为1代表每次请求都生成报告文件; ...

2020-05-17 15:21:38 787

原创 大屏与手机互动cocos 2d游戏的后端设计与实现(基于GateWayWorker)

背景:这个项目,我只参与项目的一部分业务代码开放(摇一摇游戏业务),只是简单来使用封装好的一些类和方法,核心实现并不是我写的,并且核心代码设计思路并没有文档,当然代码中有些注释,他人也并没有太多时间给我好好讲讲他的设计思路。目的:分析他人的代码,完全掌握他人的设计思路,抓住重点,提取好的思路,供之后类似的项目开放 做参考!解读他人代码/分析代码 的方法多维度分析代码:一: 看代码组...

2020-05-02 13:15:54 1064

原创 rabbitmq的六种模式学习笔记

来源于官方手册(通俗易懂) https://www.rabbitmq.com/tutorials/tutorial-one-php.html1. Hello World / Simple /简单 模式生产者:send.php<?php/** * Simple 模式 - 生产者 * RabbitMq 6种模式 * Date: 2020/4/20 下午4:15 */...

2020-04-30 23:25:26 1054

原创 Go 类型断言 /类型判断

value, ok := em.(T);em 代表要判断的变量T 代表被判断的类型value 代表返回的值ok 代表是否为该类型注意:1: em 必须为interface 类型才可以进行类型断言func main() { // value, ok := em.(T); // em 代表要判断的变量 // T 代表被判断的类型 // value 代表返回的值 /...

2020-04-05 16:03:23 918 1

原创 Go Interface Go的面向对象思想

inteface接口interface 是GO语言的基础特性之一。可以理解为一种类型的规范或者约定。它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“implements”关键字,只是通过约定的形式,隐式的实现interface 中的方法即可。因此,Golang 中的 interface 让编码更灵活、易扩展。如何理解go 语言中的interface ?只需...

2020-03-23 23:24:12 375

原创 在Linux系统环境下安装kafka

yum -y list java*yum install java-1.8.0-openjdk.x86_64[root@liang kafka_2.12-2.4.0]# java -versionopenjdk version "1.8.0_232"OpenJDK Runtime Environment (build 1.8.0_232-b09)OpenJDK 64-Bit S...

2020-03-22 18:57:56 495

原创 Go中可以为哪些类型定义方法?

Go可以为任意类型添加方法。go 中 都有哪些类型可以 定义方法 ?struct 肯定可以;函数 也可以基本类型 如 int float 等 。。。。还有哪些?...

2020-03-22 14:59:19 522

原创 Go语言中数组与切片的区别?有哪几种方式可以创建切片?

Go 中数组属于基本类型,他们之间的赋值 是值传递/值拷贝;Go语言中,区别一个变量是数组还是切片,就看有没有定义长度;func main() { array1 := [3]int{} array2 := [2]int{1,2} array3 := [2]int{4,5} //array2 = array1 //报错! Cannot use 'array1' (type...

2020-03-22 14:42:08 416 1

原创 pecl安装redis扩展(php版本7.2.18)

pecl 安装 redis 扩展[root@liang bin]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.0/lib //这个不是必须的!这是因为我升级安装gcc 出的问题[root@lian...

2020-03-22 10:37:46 2165

原创 phpstorm断点调试虚拟中php项目(web 中js代码)

2020-03-14 21:39:31 480

原创 redis.conf(版本3.2.6) 翻译

redis :3.2.6版本Redis 配置文件 示例注意 为了 读取 此配置 文件, 开启Redis 服务 时 此文件路径 必须 作为第一个参数:# ./redis-server /path/to/redis.conf单位 注意事项; 在表示内存大小时, 可以 使用 常规的格式 如 1k, 5GB, 4M 等这样的 来表示:# 1k => 1000 bytes...

2020-03-09 22:54:15 217 1

原创 自己动手写Docker

Docker容器有以下3个特点:1. 轻量级2. 开放: Docker 容器基于开放标准,这使得Docker容器可以运行在主流Linux 发行版和Windows操作系统上。3. 安全容器包含用户的程序和所有的依赖,但是容器之间是共享Kernel 的。各个容器在宿主机上互相隔离,并且在用户态下运行。...

2020-02-29 22:43:32 1016

原创 go-micro examples中broker &event &pubsub 学习(broker发布订阅 & micro api Event + micro 订阅 & )

examples/broker : micro/go-micro/broker 发布订阅;examples/event : curl 触发 event + micro api --handler=event + micro service RegisterSubscriberexamples/pubsub : rpc clientNewPublisher...

2020-01-16 16:41:12 777

原创 go-micro examples 中mocking 代码学习(为方面分工开发 或测试 mock调用微服务)

对应 examples/mocking 例子这个例子 展示 了 如何 mock 调用 微服务。目录如下:helloworld : helloworld 微服务,(可假设下这是由项目中其他人开发,维护,我们只是调用)helloworld/proto/greeter.proto 代码如下:syntax = "proto3";service Greeter { ...

2020-01-15 10:42:26 7565

原创 go-micro examples 中noproto 代码学习(go-micro 中微服务使用json格式 来传输)

对应 examples/noproto 例子:go- micro 中微服务 都可以使用哪些 传输协议?go -micro 中 微服务中 我不想使用 protobuf 协议,或者在微服务中,我就想使用json 格式来传输 编码?目录:main.go 代码如下:package mainimport ( "context" "github.com/micro/go-mi...

2020-01-14 18:00:16 635

原创 go-micro examples 中stream 代码学习(流 服务及 结合浏览器websocket的使用)

对应 examples/stream 例子:这个例子, 有 一个 streaming 服务, 和两个 client, 一个是 streaming rpc , 一个是 js websockets + web services (streaming rpc)。目录:server 是 服务client : 是 rpc streaming clientweb : 是 w...

2020-01-14 16:12:41 1867

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除