自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(265)
  • 资源 (3)
  • 收藏
  • 关注

原创 公钥加密和私钥加密的区别

公钥加密准确来说就是加密的过程而私钥加密准确来说是签名的过程没有搞明白这一点,在平时工作当中虽然用的飞起,和别的公司对接接口的时候,貌似都是用公钥加密,私钥解密。却没有深入思考这些流程。今天在这里记录一下,以后记得把加密和签名流程分开看待。我们来回顾一下RSA的加密算法。我们从公钥加密算法和签名算法的定义出发,用比较规范的语言来描述这一算法。RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。。密钥生成算法以安全常数作为输入,输出

2021-01-05 16:57:20 6877 4

翻译 golang G-M-P模型

GMP设计架构GMP分别代表什么?G:GoroutineM: OS ThreadP:抽象概念(Processor),类似cpu的作用,将G调度到M上,进行绑定简单的发展历史!Local RunQueue是什么?Global RunQueue是什么?Network poll起到什么作用?GMP 是如何配合工作的?...

2020-03-30 21:10:07 2407 1

原创 unix posix标准和 system v标准的故事

简单可以这么理解,posix是linux的新的标准,而system v是当年非常流行的标准,只是老当益壮了。目前大家都是向posix标准努力posixPOSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接...

2020-02-23 16:24:40 522

原创 关于etcd中revision, modvision, version的理解

type ResponseHeader struct { // cluster_id is the ID of the cluster which sent the response. ClusterId uint64 `protobuf:"varint,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,om...

2020-01-16 17:09:26 4584

原创 彻底理解k8s网络-通过OSI七层参考模型理解

本片文章会记录我自己理解的一些感悟什么是OSI七层参考模型?从网络分层去理解上网流程,从而理解docker网络,k8s网络?从回环接口理解本地socket和远程socket为什么块,unix file server更快?理解ping回环接口为什么能证明本地ip协议没有问题?arp是一个二层协议?什么是bridge,虚拟网桥,交换机,brctl?为什么需要route,路由器?理解协议...

2019-12-16 23:39:38 963

原创 负数之2的补码表示原理

2019-08-09 23:39:59 811

原创 docker镜像分层原理-overlay

学习了linux的 namespace之后,知道了docker是如何将机器的资源进行隔离的,那么docker中的镜像分层技术的原理是什么呢?答案是联合文件系统对,就是aufs, device mapper, btrfs, overlay, overlay2 当然我今天就演示一下overlay怎么实现镜像分层的原理先看看overlay的架构图也许就明白了一半了原理:overlayfs在...

2019-03-31 09:22:43 4259

原创 cmake笔记

手册地址cmake相关手册都在这里我们都知道,c语言生成可执行文件的过程是这样的预编译->编译->汇编->链接->可执行文件链接link_directories(${PROJECT_SOURCE_DIR}/lib) #添加动态连接库的路径target_link_libraries(project_name -lmxnet ) #添加libmxnet.so...

2019-03-03 23:06:31 179

原创 netstat详解

常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执行该...

2019-02-20 15:47:46 323

原创 replication binlog坑

有这样一个场景,db表里面的字段是unsigned类型的,但是业务没有做严格校验,导致update这个字段为负数,确实也是更新失败了,但是binlog中记录的却是(-95) 165。因为我是用golang的replication包来同步binlog的,所以并没有做这个字段类型的校验,所以注意这个坑...

2018-12-26 22:00:05 303

原创 ssh, scp, rsync笔记

rsync大家都知道,对于一个php程序员来说,早日掌握熟练linux时非常重要的,这将给我们的工作带来非常大的便利。今天把rsync这个工具折腾了一番,非常好用.rsync主要我这里介绍两种工作方式,一种是运行服务端,一种是借助ssh协议来实现文件传输 1.我们先来用ssh来实现文件传输吧,将本地的/opt/software/hello.php上传到129这台服务器上,这个时候...

2018-09-14 22:17:28 407

转载 Systemd命令详解

阮一峰老师的博客有一篇讲这个命令,附上链接systemd

2018-07-11 14:42:18 1131

原创 docker 常用命令总结

熟悉docker有一段时间了,这里总结一些命令,忘记的时候可以自己浏览。万变不离其宗,掌握一门技术,必须先了解其原理,下面来看一张网上到处可见的架构图。#mac 下面安装brew cask install docker# 国内163镜像http://hub-mirror.c.163.com...

2018-07-08 11:19:12 246

转载 使用位操作提高程序效率

实现高效的C语言编写的第三招——使用位操作。减少除法和取模的运算。在计算机程序中数据的位是可以操作的最小数据单位,理论上可以用”位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。举例如下:方法E int I,J; I = 257 / 8; J = 456 % 32;方法F int I,J; I = 2...

2018-06-29 13:25:20 947 2

原创 m4, autotools, configure, Makefile笔记

上面这是整个的生成过程,我想如果把这些流程都搞清楚了,就对linux gnu程序有相当的了解了

2018-06-27 21:20:19 1183

原创 golang http 连接超时和传输超时

golang 测试代码package mainimport ( "net/http" "net/url" "fmt" "io/ioutil" "time" "net" "crypto/tls")func TimeoutDialer(cTimeout time.Duration, rwTimeout t

2018-05-25 11:45:33 10454 1

原创 tcpServer分包踩坑记录

需求收集各个linux机器的信息技术方案server侧:用golang起一个tcpServerclient侧:用php的fsockopen和tcpServer建立长连接,来实时传输数据实现细节golang tcpServer代码func main() { packEof := []byte("#\r\n\r\n") //自动分包分隔符 t...

2018-02-09 23:12:07 485

原创 为什么需要三次握手和四次挥手

syn(synchronous)同时的,同步的,在http中指建立请求的第一个包ack (acknowledgement) 确认的意思fin(finally) 我要最后一次啦,我暂时这样理解这个含义今天终于搞清楚了第四次的包是怎么回事,原来第四次的发送包不算在3次握手里面,第四次包是刷新window size用的,也就是告诉服务端根据当前网络,计算出来应该传输多少自己的数据才不会拥塞,是不是看到...

2018-02-08 11:25:39 27272 5

原创 0.0.0.0与127.0.0.1与本机ip之区别

相信有过网络开发经验的同学都会碰到此问题0.0.0.0:9999 外部可以通过本机ip访问,这种方式最是保险 192.168.0.105:9999 外部可以通过这个ip访问9999 127.0.0.1:9999这种方式外部访问不了,本机可以访问前提你电脑的端口放行了,记得多用telnet测测,别动不动搞了几个小时或者。。。 那我就笑了

2018-01-31 22:00:44 3146

原创 php trait和go struct的匿名字段

首先要申明,php中的trait的概念就是和go语言中的struct的匿名字段是一个概念。都是希望将一个结构融入到另外一个结构中,增加另外一个结构的功能。而不是通过树形的继承php trait demo<?php class Base { public function sayHello() { echo 'Hello'; } }

2018-01-16 23:30:09 362

原创 自定义DTD XSD温习

xml是我们经常使用的配置了,今天在这里做一下笔记,将dtd, xsd对xml的约束记录于此。demo dtdmyClass.dtd!ELEMENT myclass (students+)>!ELEMENT students (name, age, introduce)>!ELEMENT name (#PCDATA)>!ELEMENT age (#PCDATA)>!

2018-01-13 14:59:36 304

原创 amoeba 读写分离配置

amoeba读写分离实验配置实验环境mysql slave : 127.0.0.1 port: 3306mysql master : 47.104.27.47 port: 3306amoeba proxy : 127.0.0.1 port:8066#主从配置的细节参看我的上一篇博客dbServer.xmlamoeba:dbServers xmlns:amoeb

2018-01-07 21:53:58 309

原创 mysql 主从笔记

架构图实验环境一台master,一台slavemaster必要配置1.创建复制使用的用户GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO backup@’47.104.27.47’ IDENTIFIED BY "123456";2.必要的配置文件server-id = 1 #机器的唯一标志log_bin

2018-01-05 15:35:02 223

原创 分布式事物详解

分布式事物又一个很著名的理论就是CAP理论CAP理论C : consistency(一致性)A : availability(可用性)P :partition tolerance(分区容错性)一致性强一致性弱一致性最终一致性强一致性:更新之后所有从副本取到的都是最新值弱一致性:更新之后其他副本不能立即取到最新值最终一致性:有些副本刷新了,有些副本没有刷新,但是最后总是会刷新的,这其中

2018-01-03 19:55:00 458

转载 dubbo框架RPC过程详解

转载地址:http://www.cnblogs.com/LBSer/p/4853234.html 你应该知道的RPC原理   在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。  而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的

2018-01-02 16:27:20 5164

原创 分布式锁 详解

研究分布式锁有一阵子了,但是并没有一个十分完美的方案,首先我必须要承认,分布式锁在逻辑上是不可能完美无缺的。下面我总结了从小型,中型,大型网站下如果做分布式锁。业务场景描述: 在交易的时候,防止一个用户重复下单小型解决方案:1.通过数据库中的一条记录的某一个字段作为版本控制,比如你取出来的最后更新时间是xxx,那你更新的时候这个字段就带上where条件。2.专门建立一个锁表,比如uid|

2017-12-29 19:35:49 313

原创 孤儿进程和僵尸进程详解

之前没有特别区分这两种概念,以为孤儿进程就是僵尸进程,但是其实是有差别的,下面我们从概念上来看孤儿进程:父进程先死了,子进程还在继续运行,这样的进程会里面被init(ppid=1)进程回收僵尸进程:子进程自己退出了,父进程没有调用wait或者waidpid函数清理子进程的状态,所以这个状态一直会在进程列表存在下面是我做的实验:1.孤儿进程代码实例:#include <stdio.h>#includ

2017-12-26 23:31:33 600

原创 load average详解

我们都知道load average表示的是机器的负载,在我们执行top命令的时候可以看到1分钟,5分钟,15分钟的负载情况,那么这几个数值到底代表的是什么含义呢?我们都知道进程有三个状态:1.挂起2.就绪3.进行中操作系统,一个cpu对应一个task队列这些数值其实就代表了 task队列中状态为 就绪和进行中的进程个数,这个队列是单行道,加入是一个cpu的话,数值为1表

2017-12-23 17:51:35 8810

原创 bubble sort详解

冒泡排序本是大家都很熟悉的一种排序,教科书也到处都是,今天突然在维基百科中看到还有一种优化的 bubble sort算法,不得不感慨是温故知新啊数据结构 array 算法推演: 两种bubble的伪代码procedure bubbleSort( A : list of sortable items ) n = length(A) for i = 0 to n - 1

2017-12-23 13:12:39 6712

原创 排序-快速排序(C版本)

#include <stdio.h>/**快速排序的原理6 8 7 3 4 5i = 0; j = 5; key = 6第一次从后往前找5 8 7 3 4 ?第二次从前往后找5 ? 7 3 4 8第三次再从后往前找5 4 7 3 ? 8第四次再从前往后找5 4 ? 3 7 8第五次再从后往前找5 4 3 ? 7 8看结果出来了,再把6填充回去,是不是第一轮就完美了5 4 3

2017-09-22 12:39:57 303

原创 线程池简单实现

//线程池的需求分析//1.初始化线程池的空间//2.每个线程处理函数其实都是轮询在处理队列//3.addWorkers其实就是在往队列里面放任务//4.线程池销毁就是把启动的几个线程干死就好了typedef struct _task { void *(*process) (void *arg); void *arg; struct _task *next;} ta

2017-09-22 12:25:21 411

原创 git的code_style.php

这是为了规范上线代码自己写的一个php脚本,在这里做一下备份,以备不时之需。<?php //获取提交的参数 $fp = fopen('php://stdin', 'r'); $input = fgets($fp); $params = explode(" ", $input); $old_commitid = isset($params[0]) ? $param

2017-08-28 18:52:49 338

转载 有限状态机详解(转载)

以前总觉得有限状态机和无限状态机非常的难理解,原来也就是自己一直没有一个直观的认识,今天看到一篇博客,总算对有限状态机入门了。一看就懂。转载地址:http://blog.csdn.net/zqixiao_09/article/details/50239337我们知道,一般编写程序时都要画出流程图,按照流程图结构来编程,如果编写一个比较繁琐,容易思维混乱的程序时,我们可以利用有限状态机模型画出一个状态

2017-08-23 07:34:44 33096 7

转载 百度陆奇最新内部演讲:如何成为一个优秀的工程师?

7 月 11 日,陆奇出席百度内部 Engineering Leadership Talk。作为计算机科学博士及优秀的管理者,他提出的五点要求,对每一位(百度)工程师都适用。 Believe in 技术首先要相信技术,我刚才已经讲了,整个我们工业界,特别是像百度这样的公司,对技术坚定的、不动摇的信念特别重要。 我也分享一下,盖茨提到微软公司的宗旨就是:写软件代表的是世界的将来。 为什么?未来任

2017-07-18 13:24:05 350

原创 clion调试php扩展

只有自己亲手实践了,才知道是如此的简单。先理解如何愉快的调试,才是开发扩展的第一步,除非你不想深入学习。下载好php源码包,然后编译安装debug版本的php。写一个简单的扩展。将扩展代码导入到clion中,记住只是扩展代码。配置CMakeLists.txt文件,从php源码中导入。配置gdb运行环境,deubg,跑起来安装sudo ./configure --prefix=/usr/l

2017-06-26 20:47:55 3627

原创 php中单例模式不提示解决

//这里注释里面返回static非常重要哦 /** * 获取service的实例 * @return static */ public static function getInstance() { $class = get_called_class(); if (!isset(self::$instanceMap

2017-06-16 23:12:42 556

原创 java 泛型详解

Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的java类型 S、U、V - 2nd、3rd、4th types

2017-06-03 16:47:41 286

原创 进程、线程、协程、异步、非堵塞IO,多路复用详解

进程(process)进程的概念php如何创建子进程,修改进程名称php查看进程进程组、会话daemon进程进程间通信(ipc),信号,队列,共享内存进程的概念进程:是系统进行资源分配和调度的基本单位php如何创建子进程<?php //从这一行代码开始,下面的每一行代码都是父子进程都执行,执行顺序依赖cpu的调度 $pid = pcntl_fork(); if

2017-05-13 17:29:26 2017

原创 线程池技术详解

下面是线程池的设计原理

2017-05-09 20:26:51 348

原创 子查询分页快在哪里

SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; 对于大数据量的查询,我们的分页代码一般会这样查询,看到子查询了没,他只查询一个id,而对于innodb引擎来说,主键索引和数据是分开的,所以这里并不需要回表,所以查询就会变快。但是这种优化是对于简单的一个大数量级别的表,

2017-04-01 16:44:05 819

php最新中文手册 chm

这是最新的中文php手册

2014-10-14

jquery手册

这是一个非常好用的jquery参考手册,希望更多的人从中受益

2013-11-16

php chm手册

这个是一个很全的手册,如果你想学习php的话,一个很好很全的手册是必不可少的,所以这里提供下载,

2013-10-03

空空如也

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

TA关注的人

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