自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (15)
  • 收藏
  • 关注

原创 极客时间-linux性能优化 21~30

问题一OOM和内存回收内存紧张时,会采用三种方式来回收内存1.LRU算法来回收缓存2.swap机制来回收不常访问的内存页3.OOM机制 (oom_score给进程打分)活跃和非活跃的内存页,按照类型的不同,又分为文件页和匿名页。问题二文件系统和磁盘的区别磁盘是块设备,可以被划分成不同的分区。而在磁盘或磁盘分区上,还可以创建文件系统,并且挂载到系统的某个目录。这样,系统就可以通过这个挂载目录,来读写文件。在读写普通文件时,IO请求会首先经过文件系统,然后由文..

2020-06-21 10:44:08 957

原创 C++ free(): invalid size 问题排查过程记录

一、粗略了解bug基本情况从截图可看出,错误原因为free():invalid size xxxxx我去网上搜索了下这个错误,https://stackoverflow.com/questions/18990767/free-ptr-error-invalid-size初步结论:动态申请的内存结构被破坏了二、从堆栈角度看问题是json::JsonWriter对象内部的string变量在析构时(即~basic_string出问题),可能是此接口被内存越界写了!!!三、从源代..

2020-06-13 22:48:01 12259

原创 极客时间-linux性能优化 11~20节

Cpu性能指标:cpu使用率用户cpu使用率 系统cpu使用率 等待io的cpu使用率 软中断和硬中断的cpu使用率平均负载进程上下文切换(自愿 and 非自愿)Cpu cache缓存命中率 缓存中是热点的内存数据,这些缓存按照大小不同分为L1、L2、L3三级缓存。活学活用,把性能指标和性能工具联系起来。第一个维度:当我要查看某个性能指标时,要清楚知道哪些工具可以做到第二个维度:从工具出发,清楚知道这个工具能提供哪些性能指标?在实际生产环境中,由...

2020-05-31 20:52:25 722

原创 极客时间-linux性能优化 1~10

一、基本概念uptime 最后三个参数是1分钟、5分钟、15分钟的平均负载平均负载的概念?平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,它和CPU使用率并没有直接关系。可运行状态:正在使用CPU或正在等待CPU的进程,等于处于R状态的进程不可中断状态:ps中看到的D状态的进程比如当平均负载为2,在只有两个CPU的系统上,意味着所有的cpu刚好被完全占用;在有4个CPU的系统上,意味着CPU有50%的空闲。平均负载为多少是合理?首先要知道系统的CP.

2020-05-31 19:23:41 665

转载 单元测试的一点思考

单元测试的一大痛苦是构造测试数据。我的看法是测试数据应该是人造的,而不是随便从产品环境中dump出来一份,只有人造的数据能够确保环境可控,每次运行不会因为环境改变而频繁修改testcase。 各类程序的函数可以分为纯函数和副作用函数。纯函数对应的是数学里函数的概念,输入和输出是一一对应的。对一个输入,必然有确定的输出。比如1+1=2.而副作用函数则相反,同样的输入在不同的时间和环境中,可能有不...

2020-03-02 15:54:04 172

原创 linux网络技术内幕 读书笔记

本人从事的就是linux底层网络开发的,所以希望看完这本书能让我茅塞顿开,加油一、sk_buff结构体以及相关操作函数建立缓冲区分为两次内存分配:分配sk_buff结构和分配数据缓冲区二、ip分片的数据是存储在什么结构中?答:fraglist和frags数组三、ip分片的数据是存储在什么地方四、pskb_copy和skb_copy函数的区别pskb_copy:只拷贝sk_buff区域...

2020-02-10 09:07:10 245

原创 vector访问失效的问题

程序的崩溃堆栈如下coredump的位置是在vector的push_back函数,push_back调用的是_M//销毁vector里的元素,即调用vector中各元素的析构函数std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish);// 收回存放各元素的空间,即free_M_deal...

2019-11-28 14:21:39 1392

原创 分布式-学习资料

清华操作系统课程https://www.bilibili.com/video/av6538245/?p=15分布式课程视频(这个我居然还能听懂,这难得)https://www.bilibili.com/video/av45207204?from=search&seid=15835252378495286464mit 的6.824课程https://pdos.csail...

2019-11-23 11:51:06 275

原创 C++ 面向对象高级编程 笔记

最近重新复习了一下C++面向对象高级编程中知识点,学而时习之,不亦说乎。浅拷贝和深拷贝拷贝构造函数,拷贝的是同类型的对象=赋值构造函数检测自我赋值(为什么?有什么作用?)if this == &str{return *this;}类和类之间的关系组合继承委托示例委托 + 继承compositepimpl编译防火...

2019-11-11 09:59:03 257

原创 purely平台上rte_memcpy性能下降

__builtin_prefetch 导致拷贝性能下降e5 使用__builtin_prefetch会提升性能,purey会下降直接使用intel汇编指令prefetc1 prefetch2性能不会下降#if RTE_CACHE_LINE_SIZE >= 128static __rte_always_inlinevoid *rte_memcpy(void *dst, ...

2019-10-10 15:05:34 927

原创 分布式任务调度系统设计文档

一、需求设计======1.1 需求概述--------**背景:**传统的crontab任务调度存在以下缺点1.机器故障,任务停止调度,设置crontab配置都找不回来(单机故障)2.任务数量多,单机的硬件资源耗尽,需要人工的迁移到其他机器上(扩展性不好)3.需要人工去机器上配置crontab规则,任务执行状态不方便查看(可通过配置中心来批量管理多台机器)以上都是传统的cr...

2019-08-09 16:59:50 1078

原创 golang 博文 阅读笔记

Goroutine Leaks - The Forgotten Senderhttps://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sender.html解决办法:将无缓冲的channel换成有缓冲的channel,其容量为1Now in the timeout case,after the receiv...

2019-04-24 13:59:43 295

原创 golang 实战企业网盘

一、功能需求1.基于golang实现分布式文件上传服务2.ceph和阿里云oss3.支持断点续传和秒传功能4.微服务化和容器部署二、项目使用到的技术redismysqlrabbitmqdocker部署微服务ceph分布式存储阿里云oss三、收获干货文件分块断点续传/秒传对象从私有云迁移到阿里云oss的经验四、项目进度...

2019-04-18 10:14:48 2696 4

翻译 L4Drop: XDP DDoS Mitigations 翻译 XDP DDOS 缓解

原文链接https://blog.cloudflare.com/l4drop-xdp-ebpf-based-ddos-mitigations/有效的丢包是Cloudflare公司环境DDoS攻击的关键所在。我们在丢包库中引入了一个新工具:L4DROP我们在过去已经写了大量关于DDoS缓解的文章,包括:GateBot:分析可疑流量,并部署和可疑流量相匹配的缓解措施bpftools...

2019-04-10 19:03:52 1193

原创 dpdk kni流程梳理和分析

学习新东西,首先问自己三个问题kni是什么?使用kni能解决什么问题?或者带来什么好处?研究kni在dpdk中的api如何使用探究dpdk kni的实现原理一、KNI在DPDK报文处理中,有些报文需要发送到内核协议栈进行处理,如GTP-C控制报文如果报文数量较少,可以使用内核提供的TAP/TUN设备,但是鉴于这种设备使用的系统调用的方式,还涉及到copy_to_u...

2019-03-12 19:22:21 7909

原创 分布式网页爬虫系统 设计和实现

分布式爬虫设计和实现1.总体设计功能模块划分:数据抓取引擎1.1 调研市面上爬虫框架或库pholcuscollygocrawl开发工具:goland开发语言:golang数据存储:ElasticSearch前端展示:使用Go语言标准模板库实现http的数据显示部分爬取内容:相亲类网站的数据爬虫算法:城市列表 --城市--用户信息,从种...

2019-02-08 09:57:01 2141 3

原创 iptables源代码分析之hashlimit模块

参考链接http://os.51cto.com/art/201109/294482.htm

2019-01-09 17:55:15 1186 1

原创 ipset源代码分析之kadt和uadt回调函数

一定要清楚自己在干什么,每行代码在干什么,这样写的代码才能做到心中有数。之前看到ip_set_hash_ip.chash_ip4_uadt和hash_ip4_kadt函数,就一直很好奇这两个函数是干什么呢?下面我来带你一步步剖析这两个函数一、kadt和uadt回调函数的注册首先看下struct ip_set_type_variant结构体变量**kadt回调函数的注册在以下三个...

2018-12-19 22:52:49 1988

原创 ipset源代码中添加新类型

首先我们先来分析下ipset_hash_mac.c文件在每个文件的开始位置MODULE_LICENSE("GPL");MODULE_AUTHOR("Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>");IP_SET_MODULE_DESC("hash:mac", IPSET_TYPE_REV_MIN, IPSET_TYPE_REV_MA...

2018-12-19 12:29:28 989

原创 ipset源代码分析之hash:mac类型集合

想了解ipset的hash:mac类型的实现,要阅读的源代码文件有两个ip_set_hash_mac.c和ip_set_hash_gen.h一、定义hash元素结构体/* Member elements */struct hash_mac4_elem {    /* Zero valued IP addresses cannot be stored */    union {   ...

2018-12-18 23:25:22 1547

原创 iptables和netfilter的通信流程

iptables和netfilter通信采用的是setsockopt和getsockopt函数一、用户态iptables代码前面博客文章 https://blog.csdn.net/haolipengzhanshen/article/details/84888489我们分析了iptables的主流程,相信大家会熟悉下面的代码ret = do_command4(argc, argv,...

2018-12-14 18:39:05 2862 4

原创 ipset如何与netfilter内核模块进行通信

最近需要使用ipset,iptables,和netfilter,所以把三者的源代码看大概阅读了一遍。前面我们学习过应用层ipset和netfilter模块之间通信是采用的netlink套接字用户空间的ipset命令通过 libipset.so 这个库和内核通讯一、ipset主流程下面是我总结的主流程 二、用户层如何将创建set的名称和类型传递到内核层的我们都知道ip...

2018-12-14 17:31:32 3105 2

原创 iptables源代码分析之set集合模块

适合的读者1.能够熟练使用iptables和ipset命令,增删改查等2.心里好奇iptables的命令是如何生效的?3.对研究netfilter源代码有浓厚兴趣的技术人员4.用户态的iptables和内核态的netfilter是如何交互的一、研究背景使用iptables来针对某ip指定规则,从而达到抵御网络攻击的目的。但有时可能对成千上万的ip进行封禁,如过添加成千上万条iptabl...

2018-12-11 14:26:19 5260

原创 iptables源代码分析之主流程分析

由于我们只关注ipv4.看程序的流程就是要从主线开始看起。目录结构我libiptc:iptables控制层代码iptables:iptables主体代码extensions:iptables扩展代码,一般是xtables_register_matches函数注册被初始化的struct xtables_match结构体我执行的iptables命令是 iptables ...

2018-12-07 22:52:55 4945

原创 mit 6.824 分布式课程 Distributing MapReduce tasks实验

One of Map/Reduce's biggest selling points is that the developer should not need to be aware that their code is running in parallel on many machines. In theory, we should be able to take the word coun...

2018-10-16 15:36:57 413

原创 mit 6.824 分布式课程 word count实验

一、实验准备工作Now you will implement word count — a simple Map/Reduce example. Look in main/wc.go; you'll find empty mapF() and reduceF() functions. Your job is to insert code so that wc.go reports the nu...

2018-10-11 11:13:24 850

原创 mit 6.824 分布式课程 mapReduce实验

开始时间   2018-10-08 18:00       任务安排阅读mapReduce实验的go语言代码,梳理流程。2天工作时间 

2018-10-08 18:21:50 429

原创 《基于DPDK实现的LB支撑阿里巴巴双11 业务》之会话同步篇思考

如何应对脉冲式的流量模型?如何实现业务无感的版本升级和容灾?如何提供高可用的服务?dpdk fdir技术fnat技术数据结构per cpu化,cpu完全并行处理数据包,性能提升很大。1.使用IGMP协议将属于同一个组的多台服务器器,加入到同一个组播组中,2.当SLB程序启动后,它会自己加入到对应的组播组中,服务器下线或重启,超时后会自动从组播组中删除。使用组...

2018-09-29 18:27:00 1058

原创 分布式学习之raft算法

目录一、Raft基础二、Leader选举流程2.1 初始化时,所有follower都在等待成为candidate的场景2.2 获得多数派投票成为leader2.3 接收到leader的Append Entries消息(心跳包)2.4 同时存在两个candidate,并且获得选票相同三、日志复制过程3.1 Leader发起request请求3.2 leader节点...

2018-09-29 17:05:28 977

原创 dpvs源代码分析——master和slave之间通信

小胖我在阅读dpvs源代码的过程中,发现很多模块调用msg_type_mc_register函数或msg_type_register函数来注册dpvs_msg_type结构体,结构体定义如下:/* unicast only needs UNICAST_MSG_CB, * while multicast need both UNICAST_MSG_CB and MULTICAST_MSG_C...

2018-09-08 18:34:08 2314 2

原创 dpvs源代码分析——简介

在开始之前,我们先明确几个问题一、dpvs是什么?DPVS是基于DPDK的高性能第4层负载均衡器。基于阿里巴巴/ LVS修改而来,出于蓝而胜于蓝。二、dpvs的优势是什么为了达到高性能,使用了多种不同技术绕过内核(在用户空间实现) 每个cpu的关键数据无共享(无锁) RX控制和CPU亲合性绑定(避免上下文切换) 批处理TX / RX 零拷贝技术(避免数据包拷贝和系统调用...

2018-09-04 18:05:11 4695

原创 DDOS知识总结

从DDoS的危害性和攻击行为来看,我们可以将DDoS攻击方式分为以下几类:a)资源消耗类攻击资源消耗类是比较典型的DDoS攻击,最具代表性的包括:Syn Flood、Ack Flood、UDPFlood。这类攻击的目标很简单,就是通过大量请求消耗正常的带宽和协议栈处理资源的能力,从而达到服务端无法正常工作的目的。1.UDP / ICMP洪水攻击UDP小包攻击,占用网络设备的带宽资...

2018-08-28 17:49:42 902

原创 dpdk基础教程——框架简介

一、DPDK是什么---------DPDK是专为快速收发包所开发的一系列的库文件和驱动代码。DPDK最初的动机很简单,为了证明Intel架构多核处理器能够支撑高性能数据包处理,现在DPDK逐渐成为通用多核处理器高性能数据包处理的业界标杆。可以用来1)在极短的时间里面完成收发包2)开发快速的抓包算法。3)运行第三方的快速路径栈二、传统数据包处理流程下的弊端---------------在讲解DPD...

2018-06-27 17:12:40 4737

原创 小小程序员一点点成长为Architect

职业发展就是个眼界不断提高的过程,不管什么行业都是如此。 如何开阔自己的眼界呢? 读万卷书,行万里路,多见不同的人,多经历不同的事。如何成为牛逼的程序员? 多看好代码,好代码是什么样的. 分辨出来哪些是好代码,哪些是不好的代码? 简洁 优雅 高效 可读性,高可用,可扩展性,代码复用(感觉自己代码都不沾边,哈哈) 现在github上好代码这么多,值得自己学习的代码更多。精通

2018-02-01 11:20:19 620

原创 dpdk问题集——内存ECC错误,导致网卡丢包

公司的一台机器部署完程序后,发生丢包,能够想的办法都想了,但是还是有丢包。 想着打破沙锅问到底的精神,好吧,从内核日志上下手一点点分析,操作系统以及软硬件的一举一动都写入到了系统内核日志中。如何查看系统日志呢? https://linux.cn/article-3587-1.html1.dmesg dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接

2018-01-24 09:39:16 4223

原创 epoll ET模式触发条件是什么?

linux下的网络模型,首推EPOLL模型 最近在思考,epoll ET模式触发条件是什么?1.ET模式下,对端发送1000字节数据,tcp内核缓冲区有1000字节数据,然后epoll通知我可读事件,我读取了200就不读了,内存缓冲区还剩余800字节,如果对端不继续发送数据,那么没法再次触发可读事件,这800字节就被丢掉了如果对端又发送了1个字节,那么会再次触发可读事件,现在内核缓冲区里

2018-01-23 15:00:32 502

原创 linux pthread_once和pthread_atfork,pthread_key_create

当调用pthread_key_create 后会产生一个所有线程都可见的线程特定数据(TSD)的pthread_key_t 值,调用pthread_setspecific 后会将每个线程的特定数据与pthread_key_t 绑定起来,虽然只有一个pthread_key_t,但每个线程的特定数据是独立的内存空间,当线程退出时会执行destructor 函数。pthread_once能保证多个线

2018-01-08 22:09:26 528

原创 dpdk基础教程——大页内存进阶知识

HugePages大页内存知识点整理使用numactl来查看node0和node1上认领的cpu核数,以及内存资源. 当然,首先确认下cpu是否是numa架构. 查看系统所有节点的大页内存情况 cat /sys/devices/system/node/node*/meminfo | fgrep Huge 大页内存是一种系统资源,在透明大页面机制开启的情况下,其他进程也可以申请和

2018-01-08 16:28:21 54241

原创 进程打开文件进行写入时,使用vim打开文件进行写入导致fd文件描述符失效

今天解决了一个困扰一上午的问题,进程打开文件进行写入时,使用vim打开文件进行写入导致fd文件描述符失效https://www.douban.com/note/592324007/一、bug描述dpi v5程序在运行一段时间过后,程序的server日志不生成了.使用sed -i 修改了一个日志文件后,tail -f 发现该文件不再有输出了,最后,无奈,reload了下进程才能重写。二、做实验复现下面

2017-12-25 16:47:29 875

原创 go开源项目整理-新手篇

参考链接: https://studygolang.com/articles/7708 下面推荐几款适合学习的项目: 小弟以前对IM聊天工具和爬虫情有独钟,所以选择的入手开源项目是 Pholcus(幽灵蛛)一块开源的分布式爬虫。 后续也可以和python开源爬虫框架scrapy一起对照学习1、cache2go https://github.com/muesli/cache2go比较简单的

2017-10-11 17:12:12 19673 9

vpp 源代码

vpp 官网源代码,从https://github.com/FDio/vpp 官网上下载的正版源代码,后续会持续更新,由于github上下载源代码特别的慢,所以传到csdn上方便大家

2018-04-25

ubuntu和centos通用的smb.conf文件

ubuntu和centos通用的smb.conf通用文件,实现windows和linux下文件的共享,编程人员可以在windows下编写代码,然后在linux下编译运行代码。

2016-06-22

ddkwizard_setup_v1.3.0a+ddkbuild.bat+ddkbuild.cmd

ddkwizard_setup_v1.3.0a+ddkbuild.bat+ddkbuild.cmd 在win7 64位环境下搭建驱动开发环境必备工具 驱动开发 环境搭建(VS2008+WDK+DDKWzard)

2014-10-16

mp3文件格式详解

使用通俗易懂的语言一步步分析了mp3的文件格式,对于从事流媒体行业开放的技术人员非常有帮助

2014-06-06

学生考试管理系统

学生考试 管理系统 sql Server ADO操作类 sql Server的环境大家需要自己搭建,开启数据库时的路径,账号,密码,ip地址和端口,基本上都在ADO.h文件中,需要大家自己配置下

2014-02-26

VC++多线程 垃圾清理工具

VC++多线程 垃圾清理工具 一个积分都不要,是个练习多线程编程的不错的例子

2014-02-26

opencl 异构编程

opencl 异构编程

2013-03-26

Visual Assist X10.7.1912.0

VA X插件,很好用,代码高亮功能,书写API函数的时候有提示和自动完成的功能,使用以后会加快你的开发速度

2013-03-25

桌面管理工具fences sony侧边栏 stardock

桌面管理工具fences sony侧边栏 stardock

2013-03-25

实用C++程序设计

学习计算机语言最好的途径是编写和调试程序。凌晨两点还在琢磨一个有故障的程序,只是为了找出你在应该键入==的地方键入了=,这是一种非常有效的教学手段。本书包含许多有关常见编程错误的例子 本书内容涵盖: ·C++语法 ·代码编写标准和风格 ·对象类的创建和使用 ·模板 ·调试和优化 ·C++预处理器的使用 ·文件输入/输出

2012-12-31

windows远控源代码

自己写的windows远程控制,源代码,最近需要积分所以共享出来,其实5个积分也值了,不会的可以在csdn上私密我,我抽空回复

2012-08-28

空空如也

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

TA关注的人

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