2 chen_song_

尚未进行身份认证

QQ:2734030745(欢迎大家沟通讨论问题) 个人博客地址:https://chensongpoixs.github.io/

等级
TA的排名 2w+

ping的原理的解析和 ICMP协议, 网络工具

前言最近和同事测试网络带宽问题,分析网络稳定性的问题时,在网上没有找到合适工具,我发现网上测试网络带宽的原理都是ping一样的原理就研究一下ping工具一直是我们使用测量网络是否相通。它的应用有很多,比如我们经常测试网络的带宽,网络安全,使用ICMP攻击使服务器繁忙,DOS攻击正文一,ping的原理介绍ping使用协议在网络ISO中那一层ping使用ICMP在网络层,有IP头...

2019-08-30 08:00:55

MySQL的InnoDB的表数据存储原理和优化原理分析

前言正文1,InnoDB行记录格式InnoDB存储引擎和大多数据库一样,记录是以行的形式存储的。这意味着页中保存着表中一行行的数据。到MySQL5.1时,InnoDB存储引擎提供了Compact和Redundant两种格式来存放行记录数据,Redundant是为兼容之前版本而保留的,如果你阅读过InnoDB的源代码,会发现源代码张红是用PHYSICALRECORD(NEWSTYLE)...

2019-08-01 21:55:00

MySQL的存储引擎的使用场景分析

前言MySQL在我们日常开发中经常使用存储数据使用,但是出现问题优化和存储引擎的选择适合我们实际业务场景,就要对MySQL的存储索引的原理要有所了解。正文一,MySql的存储引擎介绍①InnoDB存储引擎InnoDB存储引擎支持事务,主要面向在线事务处理(OLTP)方面的应用。其特点是行锁设计,支持外健,并支持类类于Oracle的非锁定读,即默认情况下读取存储不会产生锁。MySQ...

2019-07-29 22:48:39

优雅的交流的注意点-能量的发源地-潜意识

前言工作中要和不同人交流,就需要如何带动周围人积极性,需要个人的领导能力和积极心态。正文一,交流交流时亲切自然,话题力求轻松活泼,是成为一个善于言辞的健谈必须修炼的第一步。发自内心的真挚,热忱与同情心能够推动在场的所有人,也是二,积极的情感欲望信心爱性热忱浪漫希望三,消极的情感恐惧嫉妒抱恨报复贪婪迷信愤恨结语...

2019-07-21 00:32:02

Libevent的事件驱动源码分析(三)之反应堆的设计

前言网络编程使用基本都是反应堆(reactor)著名C++标准的Boost中asio使用reactor模式,它的io线程是安全的,libevent使用io也使用该模式正文一,reactor模式1,采用基于事件驱动的设计,当有事件触发时,才会调用处理器进行数据处理。Reactor:负责响应IO事件,当检测到一个新的事件,将其发送给相应的Handler去处理。Handler...

2019-07-06 09:41:26

Libevent的事件驱动源码分析(二)

前言libevent线程是不安全的,现在服务器都是多核的如何充分使用cpu就要使用多线程。正文一,谈谈libevent如何使用多线程呢我们在上学的时候,经常去学校的食堂吃饭。有几种情况1,一个窗口排队等待打饭一个窗口就相当于我们网络中io单线程的处理,不会出现惊群效应(linux3.0+epoll这个问题已经解决了),这个效率会比较底下,学生排队的时间过长2,多...

2019-07-04 23:22:41

Libevent的事件驱动源码分析(一)

前言Libevent是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动(event-driven),高性能;轻量级,专注于网络,不如ACE那么臃肿庞大;源代码相当精炼、易读;跨平台,支持Windows、Linux、*BSD和MacOs;支持多种I/O多路复用技术,epoll、poll、dev/poll、select和kqueue...

2019-07-01 23:41:14

游戏服务器功能模块

一,游戏服务器之物品系统二,游戏服务器之定时器三,游戏服务器之技能系统篇四,游戏服务器之load配置文件五,游戏服务器之宠物功能六,游戏服务器之排行榜七,游戏服务器之成就功能八,游戏服务器之NPC九,游戏服务器之地图系统十,游戏服务器之聊天系统十一,游戏服务器之红点功能十二,游戏服务器之任务系统十三,游戏服务器之内存池分配十四,游戏服务器之内存...

2019-06-30 11:52:11

德州扑克和短牌的算法分析

前言由于公司的业务的扩展增加短牌玩法,这个短牌算法我在github上找很长时间都没有找到开源了。最后我只能自己写短牌的算法正文一,分析扑克数据1,一张牌在内存怎么存放的红桃A是放在int类型中int是32字节内存存放高16存放牌的大小|颜色|牌的值|低8位存放牌映射数的大小00000000000000011000110100101001高16位是计...

2019-06-30 11:48:06

thrift的TCompactProtocol和TMemoryBuffer类分析

前言架构ApacheThriftAPICS架构Thrift包含一套完整的栈来创建客户端和服务端程序。[7]顶层部分是由Thrift定义生成的代码。而服务则由这个文件客户端和处理器代码生成。在生成的代码里会创建不同于内建类型的数据结构,并将其作为结果发送。协议和传输层是运行时库的一部分。有了Thrift,就可以定义一个服务或改变通讯和传输协议,而无需重新编译代码。除了客户端部分之外,Th...

2019-06-25 00:37:58

TiDB和kong

今天很荣幸参加GGV资源资本微服务开源技术的交流会一,TiDB技术大咖分析TiDB优缺点,分析TiDB使用的场景,不适合秒杀系统的数据库,TiDB使用需要64G内存,还有分析内存为什么抖动,分析TiDB与mysql的存储连接分析df文件二,kongkong提供插件,开发起来更方便,服务之间通信的加密处理TLS...

2019-06-23 10:35:48

Linux的poll, select和epoll的原理分析

后期将分析Linux内核的实现,现在占一下坑前言正文结语

2019-06-22 10:56:22

遇到程序崩溃(core dump) 重载C++的operator函数

前言今天在项目遇到拷贝函数问题,导致程序崩溃了(coredump),这个问题对于做后端的是非常严重的问题。我相信接触C++人的都知道拷贝函数,今天查这个问题将近2个小时,始终不明白为什么会崩溃了。在这边记录一下正文一,迭代器使用的时候崩溃问题#include<iostream>#include<map>classctest{pu...

2019-06-19 21:00:47

突破FD_SETSIZE限制的连接数之boost库的asio的中fd_set的适配器的设计

前言这个也我在公司的使用自己写库clib中在win上连接服务器时中只能连接63个的客户端,这个我一开始还以为是自己的配置文件中配置问题呢就没有注意这个问题。直到最近自己服务器上业务写完了,需要压力测试时,这个问题我可查有几天,一开始我以为是自己编码中写死了呢,为什么这样说呢!在我的知识体系中select最大连接数是1024,我找很长时间最后在发现在win上FD_SETS...

2019-06-16 23:21:30

redis源码分析之跳跃表

前言跳跃表数据结构可以与平衡树和红黑树查询效率。正常时间复杂度是O(logn),最差时间复杂度是O(n)skiplist原理介绍这样所有新增加的指针连成了一个新的链表,但它包含的节点个数只有原来的一半(上图中是9,45,99)。现在当我们想查找数据的时候,可以先沿着这个新链表进行查找。当碰到比待查数据大的节点时,再回到原来的链表中进行查找。比如,我们想查找55,查找的路径是沿着下...

2019-04-15 00:05:03

UNIX时间戳的UTC(协调世界时)

前言Unix时间戳(Unixtimestamp),或称Unix时间(Unixtime)、POSIX时间(POSIXtime),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时...

2019-03-24 19:20:33

redis源码之内存管理源码分析

前言redis源码只有230000行代码,可以说压缩的代码非常经典,以最少代码写出存储管理正文一,redis中内存管理redis中提供接口有void*zmalloc(size_tsize);void*zcalloc(size_tsize);void*zrealloc(void*ptr,size_tsize);voidzfree(void*ptr);ch...

2019-03-23 10:16:42

nginx基础架构

一,基础架构1,ngx_cycle_t支持的方法方法名参数含义执行意义ngx_cycle_t*ngx_init_cycle_(ngx_cycle_t*old_cycle)old_cycle表示临时的ngxcycle_t指针,一般仅用来传递ngx_cycle_t结构体中的配置文件路径等参数返回初始化成功的完整的ngx_cycle_t结构体,该函数将会负责初始化...

2019-02-28 12:40:59

Linux的信号的分析使用

一,linux的信号1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTK

2019-02-28 12:37:42

驱动开发入门级

一,驱动开发笔记1,开发驱动常用的几个命令lsmod:listmoduel把我们机器上所有的驱动打印出来,insmod:安装驱动rmmod:删除驱动modinfo:打印驱动信息dmesg:打印驱动log信息2,makefile模板#ubuntu的内核源码树,如果要编译在ubuntu中安装的模块就打开这2个#KERN_VER=$(shell...

2019-02-28 12:36:50

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。