自定义博客皮肤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)
  • 资源 (6)
  • 收藏
  • 关注

原创 tcp/ip协议栈--socket API 之发送函数(send/write)

0x01 缘由     前面博文把服务端、客户端三次握手连接过程学习完了,现在开始学习下相关发送数据API。0x02 API介绍  0x03 相关调用一览0x04 tcp层     对应博文http://blog.csdn.net/pangyemeng/article/details/781048720x05 总结     发送过程仅仅是

2017-09-29 16:05:52 2708 1

原创 tcp/ip协议栈--socket API 之accept()

0x01 缘由     前面博文已经学习了socket()\bind(),一切准备好后,开始可以接受客户端的连接请求,建立连接了。下面学习下accept API相关细节。0x02 API介绍在建立好接收队列以后,服务器就调用accept(),然后睡眠直到有客户端的连接请求到达。默认为阻塞API。0x03 源码单步跟踪     环境:linux kernel 2.6.

2017-09-28 15:43:01 1264 1

原创 tcp/ip协议栈--socket API 之listen()

0x01 缘由     上篇博文介绍了bind的连接,了解了相关细节,这章继续学习socket API ,这篇关注listen。listen几个关键参数和队列是经常被面试官提出的问题。0x02 API介绍全连接队列的最大长度:     backlog保存的是完成三次握手、等待accept的全连接,而不是半连接。     负载不高时,backlog不用太大。(For

2017-09-28 12:07:36 671

原创 tcp/ip协议栈--socket API 之bind()

0x01 缘由     上篇博文已经学习了socket() API,但是还不清楚创建的socket等相关结构如何使用。上篇文章仅仅创建了相关存储结构和文件描述符sockfd,并没有表示任何地址和端口。0x02 bind()介绍    0x03 单步跟踪分析     guest主机上运行server.c,此函数是通用的服务端模式,其中调用bind()函数,同时在内核源码通用处理s

2017-09-28 11:06:08 941 1

原创 tcp/ip协议栈--socket API 之socket()

0x01 缘由     前面学习了基本tcp/ip协议栈相关处理流程,学习这些主要目的是为加强对网络相关处理的熟练程度,指导将来相关网络设备开发、网络安全产品开发。除此之外,应该进一步关注高性能服务器相关开发,后面几个章节通过结合应用层socket相关API来进一步加强对linux tcp/ip协议栈的理解,同时加强应用层socket开发的理解。     前面有些博文已经提到了应用层soc

2017-09-27 14:18:21 874

原创 tcp/ip协议栈--tcp数据发送流程

0x01 缘由     前面一些章节学习数据的收,现在关注协议socket数据从用户态到内核态,然后发送出去的过程。学习手段还是借助他人的成果,加单步跟踪内核源码。     传送:http://blog.csdn.net/zhangskd/article/details/482075530x02 调用栈0x03 关键代码分析/* tcp_sendmsg()的主要

2017-09-26 17:37:48 1441 1

原创 从用户态代码调用到内核态调用单步调试之旅01

0x01 缘由     一直在从事linux c/c++相关网络开发,现在想进一步深入到内核,了解更多的东西,以支撑上层应用的开发。在linux上写个c/s 通讯过程很简单,如何写得高并发、稳定才是真正的难点。0x02 linux c服务端和客户端代码服务端:#include #include #include #include #include #include #i

2017-09-11 10:48:16 526 1

原创 利用eclipse + qemu| Vmware + gdb 调试linux内核

0x01 缘由     最近想调试linux内核协议栈,想单步调试,所以折腾了几天,利用qemu + eclpise去调试相关。0x02 内核初始化调试环境     centos 6.5 内核版本 2.6.32-431.el6.i686     qemu-0.11.0     eclipse cdt          1.首先我们要从www.kernel.org下载内核

2017-09-08 09:40:31 1837

原创 elasticsearch外场分片找回-UNASSIGNED

0x01 缘由     产品开发过程中没有专人去深入理解elasticsearch相关原理,导致在产品生产部署时,没有做到合理的物理架构部署,导致后期问题不断出现。     当外场出现服务器资源瓶颈时,紧急调整相关结构,忙中出错,调整主节点时,导致某个索引无法找回相关分片。类似:          1、3分片 “ UNASSIGNED”0x02 场景描述     软件:

2017-09-06 12:11:27 4158

原创 推送技术-icomet学习和分析

主动推送技术 libevent

2015-09-09 13:11:09 1815

原创 网络设备开军火发库(libnet,libpcap,pfring,dpdk)

1缘起实际工作中开发网络设备时,常用到的一些开源网络库,做一些底层的包的捕获、发送、修改等。下面简单介绍一下有哪些开源工具,以及相应的简单用法。有一些特殊的数据包要做特殊处理,如vlan环境下的数据包。2 libnet(发包)2.1简介libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet的开发目的是:建立一个简单统一的网

2015-08-14 16:09:45 5866

原创 GreenSQL(数据库安全)学习

一、软件简介    该产品是开源产品,目的也是仅仅保护开源的数据库系统MYSQL和PostgreSQL免遭SQL injection攻击。系统工作在Proxy模式。可以运行于多个Linux发行套件以及FreeBSD之上。对于PostgreSQL而言GreenSQL也是仅有的保护方案。    该产品可以运行于下述模式:    1.Simulation Mode (database

2015-08-11 13:07:49 1329

原创 代码静态检查-cppcheck

1安装解压:tar xzvf cppcheck-1.69.tar.gz进入源码,方法1:make & sudo make install如果方法1运行报错(找不到配置文件),则按方法2:make SRCDIR=build CFGDIR=/usr/share/cppcheck/make install CFGDIR=/usr/share/cppcheck/2功能Cpp

2015-08-10 17:22:12 1639

原创 Linux C编程中遇到问题

1、memcpy 和 memmove    功能:拷贝一定长度内存内容到指定的内存;    区别:当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确;    函数原型:    void *memcpy(void *dst, const void *src, size_t count);    void *memmove(void

2015-07-10 15:01:35 593

原创 谈谈linux c编程过程

cppcheck、splint、valgrind、gperftools

2015-07-01 17:32:36 566

原创 C编程之core dump杂谈

C编程之core dump杂谈

2015-06-05 16:39:14 932

原创 linux下借助图形界面操作mysql数据库

0x01缘起    最近总是觉得自己碌碌无为,于是想利用一些开源的东西做一个属于自己的应用,也不枉做一会程序员。    在linux平台下用命令行操作数据库时一件比较痛苦的事,于是想利用一下图形界面,提供开发效率。在网上找了一些工具,大部分是商业的数据库。由于在windows平台也利用过Navicat,所以就选择了它。0x02环境    OS:ubuntu 

2015-06-02 10:28:09 7035

原创 linzdb的应用

libzdb

2015-05-20 15:17:52 560

原创 安装oracle数据库后遇到数据入库为乱码的问题-由于oracle编码和系统编码不同导致

在项目中安装oracle数据库后遇到数据入库为乱码的问题。0x01 背景知识:下表是locale ID与字符集名称的对应关系:LanguageLocale IDNLS_LANGEnglish (American)en_US.UTF-8AMERICAN_AMERICA.AL32UTF8

2015-05-14 14:35:58 1161

原创 Libzdb源码解读

1    Libzdb简介一个非常小,简单的数据库连接池库。1.1             Libzdb特点1) 线程安全。2) 连接不同的数据库系统。3) 零运行时配置,连接使用URL。4) 目前支持的数据库MySQL, PostgreSQL, SQLite and Oracle。5) 可以不断进行扩展。1.2             支持平台及开发语言1.2

2014-10-11 21:25:35 1293

原创 【7.30】新考纲改革PMP考试3A通过总结

PMP证书、3A通过、新考纲

2022-10-08 12:57:17 282 1

原创 PMP-项目相关方管理

PMP学习

2022-03-11 12:35:32 346

原创 PMP-学习--项目整合管理 3.8-3.9

2022-03-09 17:58:39 288

原创 设计模式--责任链模式

##什么是责任链模式责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。##如何实现责任链模式#include <iostream>using namespace std;class Ha..

2021-03-08 12:58:42 164

原创 复习--重载

##什么是重载C++重载分为:函数重载、操作符重载函数重载:函数名相同参数不同操作符重载:对一些常规操作进行重载,这样方便对象之间的操作。反例:返回值不同,不能作为函数重载的差异##重载的用法#include <iostream>#include <string>using namespace std;class OverloadDemo{public: void Print(int i); void Print(...

2021-03-05 11:46:44 156

原创 复习--友元

##为什么要有友元?实际开发过程中没有用过,这里只做文字和代码层面的理解和学习。友元的作用:可以让对应的友元函数和类可以访问当前类的私有变量和保护类变量。类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。##代码片段友元函数和友元类..

2021-03-04 15:33:41 110 1

原创 epoll两种模式(lt/et)复习

0x01 缘由    最近又在复习一些基础知识,现在看看epoll的相关知识点。0x02 介绍    epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只

2018-01-08 16:41:44 886

原创 如何快速融入一个研发团队?

0x01 缘由    最近就要马上入职新的公司了,离开上家公司也是迫不得已,但是为了自己的职业发展和眼界开阔,做出这样的选择已成自然。已经和三年多前的一次职业选择不同了, 毕竟已经有四年多的工作经验了,需要做事有章法。关于如何快速融入一个研发团队?我有话说。0x02 注意点    1、适应环境,自我调整(前期以自己调整为主)    融入一个新的环境,每个环境有自己自治习惯和风格

2018-01-03 16:59:09 2503 1

原创 进程池组件闲聊

0x01 缘由    在开发过程中,某些业务场景可能要使用到进程池或者线程池。主要目标是消除动态创建进程或进程时的开销。一般如果能够准确预测自己每个进程或进程的职责,这个都是在程序启动时就创建的,后期不会动态的去创建线程池或进程池。今天主要从几个方面来学习和探讨进程池或线程池技术。0x02 场景    常见的web服务器(需要处理较多的并发请求):        常见的lightt

2018-01-03 16:24:34 415

原创 tcp/ip--面试中遇到几个问题

0x01 缘由    前段时间遇到的几个问题,现在简单总结和分析下:    1、tcp三次握手过程中交换了哪些信息?    2、一次tcp会话过程中序列号初始值是固定还是随机?    3、tcp三次握手过程中,三次握手的最后一个过程数据包在网络中丢掉,该如何处理?    4、TIME_WATE的作用?    5、保证tcp可靠传输的方法?    以上问题在实际应用中还是

2017-12-25 16:07:20 1299 1

原创 linux 编程 信号处理

0x01 缘由    最近面试遇到SIGPIP信号的处理的场景,但是这个信号的处理一般常见socket编程,我们在编写基础框架时一般都会对此信号进行捕获。    现在系统学习相关信号,以及常出现的场景。0x02 信号介绍    0x03 SIGPIPE介绍    这个信号的触发常出现在这样socket编程场景:连接建立,若某一端关闭连接,而另一端仍然向它写数据,第一次写数据

2017-12-20 15:46:08 388

原创 main函数的返回值

0x01 缘由    最近在面试过程中,面试官都会问些C语言容易忽视的地方,如main函数返回值的作用等。这些细节还是得学习下,虽然在实践工作中的使用会较少。0x02 介绍    程序运行过程入口点main函数,main()函数返回值类型必须是int,这样返回值才能传递给程序激活者(如操作系统)表示程序正常退出。main(int args, char **argv) 参数的传递。参数的

2017-12-20 15:24:15 8045

转载 C++基础——用C++实例理解UML类图

目的:学习下UML类图的创建和认识转载于:http://blog.csdn.net/lanchunhui/article/details/49557083类展示基本概念及术语可见性visibility参数的方向parameter direction类成员变量或者函数的类型类关系关系的多重性multiplicity类关系assocationkonws adep

2017-12-14 11:23:16 10220 3

原创 boost重要库编码实例

0x01 缘由    最近几周没有再继续学习新的知识点,而是准备一些面试题。大家懂的。。。。0x02 boost::shared_ptr 智能指针介绍请看另外一篇博文:http://blog.csdn.net/pangyemeng/article/details/72842566example1:#include #include #include class Sha

2017-12-12 10:15:34 751

转载 初窥c++11:从move语义到右值引用

转载理由:一直听C++11特性,没认真学习过,学习学习;    技术人员往往比较傲慢,写c语言的鄙视c++,写c++的鄙视Java,写Java的鄙视c#,要是程序员吵起来怎么办,一个流行的办法就是去github约架,比赛写tokenizer和grammar analyzer啊,写不出来滚出程序界啊,哈哈。说到github,不得不说去github找份好代码真不容易,大量“坏味道”的代码充斥其

2017-12-06 09:49:59 266

原创 DPDK-利用DPDK开发项目应该注意的性能点

0x01 缘由    最近也在尝试写一个DPDK应用程序,也是对之前的学习做一下检验。然而在编写过程中,发现自己陷入到一个码API的思路中,完全没有考虑到DPDK的设计思想,于是放开编程指南,学习下。0x02 写高效的代码    Intel® 64 and IA-32 指导手册。    1.内存    内存拷贝:建议不要使用libc中的memcpy函数,而用rte_memcpy

2017-11-28 15:44:31 5623

原创 DPDK-__attribute__((constructor))

0x01 缘由    在DPDK库开发过程中,遇到的问题。做个简短小结。#include__attribute__((constructor)) void before_main() { printf("Before main\n");}__attribute__((destructor)) void after_main() { printf("After main\n")

2017-11-20 10:36:19 914

原创 DPDK-同步互斥机制

0x01 缘由    继续学习DPDK设计思想。0x02 概念   原子操作:多个线程执行一个操作时,其中任何一个线程要么完全执行完此操作,要么没有执行此操作的任何步骤,那么这个操作就是原子的。原子操作操作系统中:“不能被进一步分割的最小粒子”。   原子保证操作:一些基础的内存事务操作,如对一个字节的读和写,它们总是原子的。对于边界对齐的字节、字、双字和四字节都可

2017-11-15 15:02:51 1579

原创 DPDK-并行计算

0x01 缘由    继续学习DPDK在并行计算上的优化。对于DPDK的主要应用领域--数据包处理。资源局部优化、避免跨核共享、减少临界区碰撞、加快临界区皖苏完成速率,都不同程度地降低了不可并行部分和并发干扰部分的占比。0x02 慨念    多核处理器:在一个处理器中集成两个或者多个完整的内核(及计算引擎)。    超线程(Hyper-Threading):在一个处理器中提供两个逻

2017-11-14 16:33:44 692

原创 DPDK-Cache和内存优化点

0x01 缘由     在一篇博文中看到false-sharing问题(多核编程中伪共享问题),引发了我对DPDK内存和Cache的思考和学习。看看这些知识点,大部分都是计算机组成原理和操作系统的知识点,如果做系统编程,这些知识点不能还给大学老师。0x02 概念    南桥:系统I/O芯片(SI/O):主要管理中低速外部设备;集成了中断控制器、DMA控制器、PCI网卡等。    北

2017-11-13 15:49:51 1568

Snort运行流程图(gperftools结果)

Snort运行流程图(gperftools结果),整体了解snort运行机制。

2017-06-29

Stack 的建立,删除及相关操作

Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作

2010-12-24

Stack 的建立,删除及相关操作

Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作

2010-12-24

Stack 的建立,删除及相关操作

Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作Stack 的建立,删除及相关操作

2010-12-24

Link操作链表的操作,删除,插入等

链表的操作,删除,插入等链表的操作,删除,插入等链表的操作,删除,插入等链表的操作,删除,插入等链表的操作,删除,插入等

2010-12-18

空空如也

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

TA关注的人

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