- 博客(103)
- 资源 (15)
- 收藏
- 关注
原创 Linux内核源代码 学习笔记
一、内核源码下载和在线阅读地址Linux source code (v5.18.1) - BootlinIndex of /pub/linux/kernel/二、阅读源代码初次看源代码的同学问的最多的两个问题:2、1 使用什么IDE来阅读源代码?代码阅读工具是source insight2、2 网络协议栈源代码有哪些?由于linux内核代码非常的多,我只看网络协议栈相关代码,所以只需要导入以下的目录:目录结构以后再慢慢的调整,不着急。基础部分lib..
2021-05-29 10:35:10 2100 1
原创 云安全相关技术调研(开源项目)
一、Linux基础命名空间(Namespaces)命名空间隔离了相邻的进程,并且限制了容器所能看到的内容,因此可以防止攻击的蔓延。cgroups该工具限制了容器使用的资源,限制容器可以使用的内容,从而防止受感染的容器占用所有的资源。SeLinux该工具为内核提供访问控制。它强制执行“强制访问控制(MAC)”,依据策略控制了容器访问内核的方式。AppArmor该工具可以启用进程访问控制,可设置强制执行策略,亦可设置为仅在违反策略时发出报告。Secco...
2021-03-28 19:18:24 3468
原创 NTA流量分析基础 and 开源项目(持续整理)
软中断和硬中断区别hardirq和softirq软中断是执行中断指令产生的,而硬中断是由外设引发的。硬中断处理程序要确保它能够快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。NAPI和DPDK的区别在大量数据传输时,在收到硬件中断后,通过poll方式将传输的数据一次性接收,大大提高了接收数据的效率cpu亲和性和绑核心每个cpu核心一个线程,核心之间访问数据无需加锁。为了减少线程调度的开销..
2021-03-25 09:55:48 1743 2
原创 如何有效的阅读开源代码
一、初步了解1.在下载源代码之后,先看下代码目录组织结构,如base代表基础库,net代表网络库等我2.开始阅读框架的源代码之前,先去google搜集下资料:这个框架是解决了什么问题?都是用了什么技术?分为多少个模块,每个模块之间有什么联系?尽量看官网英文的资料,因为中文技术博客的内容很多是错误的。3.试图将程序完整的跑起来,编译通过、修改配置文件,然后正常运行起来;这...
2020-06-25 08:26:55 4193 5
原创 《C++程序设计实践与技巧:测试驱动开发》 读书笔记(持续更新)
最近一直在读《C++程序设计实践与技巧-测试驱动开发》一书,这不仅仅是一本讲程序设计的书,更是一本使用gmock和gtest技术,秉承TDD(“测试驱动开发”)的理念的软件开发流程的好书。读这本书时,一定要参考随书源代码来读,直接阅读书籍总觉得感悟有点不深刻。在此记录下学习过程中的几个阶段:一、 2月10号 下载随书代码,并搭建运行环境1.升级cmake版本到3.16.5更换高版本...
2020-03-15 22:25:08 727
原创 程序员修炼之道(每周看一遍,迷茫时看一遍)
一、代码质量1.用自动化提升工作效率使用脚本将简单重复的工作自动化,能有效的提高工作效率,shell python 脚本的熟练使用,对工作是锦上添花2.逻辑清晰的代码,可读性和可维护性好代码逻辑简单明了,条理越清晰,代码隐藏的bug就越少,后续维护起来也越简单。代码逻辑混乱不清,条理越混乱,势必会造成后续的开发中犯错和维护中的bug产生3.多阅读同事的代码每...
2020-01-25 16:48:03 2343 2
原创 优秀博客学习资源(持续更新)
互联网时代,知识种类繁多且复杂,有好的也有坏的.而跟着大牛学则可以在一定程度上减轻知识学习的负担. 把个人时间和精力集中在高品质内容的学习和研究上.互联网时代跟着人来学知识要速度快一点.个人博客 Coolshell 后端技术 by Tim Yang 云风的 BLOG 陈硕的Blog 阮一峰的网络日志 花钱的年华 顶级C++社区 知行一 开涛的博客 廖雪峰的官方网站团队博客 云栖
2017-03-13 17:04:20 1985
原创 web 服务器功能模块设计(部分实现)
认准一件事后,就朝着这一件事走.做一个httpserver服务器,完整的代码,完整的设计.每个程序员都应该尝试下写博客 http://droidyue.com/blog/2017/01/02/why-every-programmer-should-try-to-write-blogs/ 今天确定下web server的框架.linux下使用libevent作为基础框架来搭建这个web serve
2017-01-03 13:27:43 3654
原创 go-containerregistry 实战篇之容器镜像下载
go-containerregistry 实战篇之容器镜像下载一、库介绍go-containerregistry 是 google 公司开源的用于处理容器镜像的golang客户端库,它提供了一个对镜像的操作接口,这个接口背后的资源可以是 镜像仓库的远程资源,镜像的tar包,甚至是 docker daemon 进程。它主要基于同名的python项目 下面我们就简单介绍下如何使用这个项目来完成我们的目标—— 在代码中解析镜像。库提供了crane和远程远程镜像进行交互。二、crane初体验2、1 c
2022-03-05 13:37:31 915
原创 K8S网络实践大纲(借鉴培训机构)
https://youdianzhishi.com/web/course/1021?utm_source=blog&utm_campaign=referral&utm_medium=tophero优点知识,专注云原生实战视频课程。https://youdianzhishi.com/web/course/1021?utm_source=blog&utm_campaign=referral&utm_medium=tophero在网上很多K8S网络实战教程的,其实给我们提供了很
2021-12-07 20:52:17 633
原创 仿写开源项目的正确方式
一、选择什么样的开源项目仿写?代码量小(在5000 ~ 10000行之间)有名气(值得去模仿)模块划分清晰(便于循序渐进)优先编写独立模块的代码,如groupcache中的LRU和ConsistentHash一致性哈希的代码。二、如何去模仿开源项目选择一个合适的commit点,使用tig快速浏览commit,选择代码量剩余5k左右的commit点。三、删除代码至500 – 1000 行左右删代码的过程也是熟悉代码结构的过程删代码比添加代码要难删减到拥有基础
2021-11-25 17:59:06 546
原创 分享如何高效学习的途径
高效学习一、找到更好的资料二、平时注重基础技术的学习,积累、总结三、画出知识图谱,明确需要学习的方向四、学习模板 1)技术出现的背景,要达到什么样的目标,解决了什么问题。 2)技术的优势和缺点 3)技术的适用场景,每种技术都有其擅长的和不擅长的,场景一般分为两种,业务场景 vs 技术场景 4)技术的组成部分和关键点,这是技术的核心思想和核心组件。 5)技术的底层原理和关键实现 6)横向和纵向进行对比,已有的开源项目是如何实现的此类思...
2021-11-23 12:02:38 363
原创 开源对程序员的影响
如何做开源?开源对技术人的影响理想中的开源开放的源代码详细的文档活跃的社区持续的改进如何做开源从小工具开始入手 bat文档要跟上(这块很多开源项目很需要)开始也是从写文档,录制视频教程来开始的,做一些工具类的东西。从小事开始做起,今天下班之前,必须把这个事情搞定。明天就开始弄其他的事情了。仿写各种开源的组件,仿写其简易版本,包括dpdk都可以弄个简易的版本出来。Go 的练手项目有哪些值得推荐? · GoCN社区...
2021-11-22 13:57:29 330
原创 浅谈编程实战提升
一、为什么想精进下编程能力1、1 提升解决问题能力先说明下,编程能力不仅仅是编码能力或者手敲代码,而是解决问题的问题,解决一个个遇到的问题。敲下每一行代码是简单的;想解决实实在在的问题不容易;1、2 训练量不够大学期间的编码训练,训练量不够无法引起质变,更别谈理解设计模式和架构设计。1、3 适当造轮子,加深对知识的理解对于公司项目,有造轮子的能力,更有不造轮子的觉悟,多么深刻的领悟,哈哈。同种类型的开源项目,如果你不满足于当一个CURD小子,多造轮子或参与开源是不
2021-11-03 21:03:34 407
原创 个人购买的付费工具
其中clion和goland这两个编程的IDE工具,一年就要消耗点1000块钱,所以平时一定要多写点代码,好赚回来,哈哈。clion 一年 $71.00 -> 453.33 冲着这个价格,都得多看点代码,多写点代码。goland 一年 $71.00 -> 453.33 每多写一行代码,我都感觉自己是赚的。知识共享学院 年卡 68(极客时间和慕课网的课程,重点突破)ProcessOn 一年 159 好好多画下图oneDrive 一年 298codecademy 年卡 淘宝买
2021-10-23 10:29:59 2515 1
原创 得到app专栏《如何成为有效学习的高手》学习笔记
《有效训练你的学习能力》一、找到适合自己的学习方法二、用任务来驱动学习以工作中的任务作为驱动,工作的任务有明确且真实存在的目标,做任务的过程中边赶边学,能看到距离目标越来越近,给人以成就感。以教为学(需加强),内心要有学完了要教会别人的思想来学习任何知识。三、解决拖延症四、在衣食住行上训练专注力一个人做事和学习的专注程度会决定做事效率。落实到实处,如何来提升专注力呢?1、买付费的编程软件(能力承受范围内)学习工具的金钱让自己心疼,买贵的,人真是贱皮子,辛苦得来
2021-09-28 11:28:15 347
原创 深入浅出学习vuls
一、vuls简介1、1 研究背景对于系统管理员,每天必须执行安全漏洞分析和软件更新可能会很麻烦。为了避免生产环境中的停机时间,系统管理员通常不使用包管理器提供的自动更新功能,而是手动执行更新。将会导致以下问题:1、系统管理员需要不断跟进NVD(国家漏洞数据库)或类似数据库以查找新漏洞。2、如果服务器上有大量已安装的软件包,则系统管理员可能无法监视所有软件。3、分析受新漏洞影响的服务器是代价昂贵的。在分析过程中可以忽略一个或两个服务器。Vuls用于解决以上问题,它有以下特征:通知用户与系统相关
2021-05-27 00:10:53 1687 4
原创 hashicorp go-plugin构建golang插件系统
一、go-plugin简介1、1 go-plugin是什么?我们知道Go语言缺乏动态加载代码的机制,Go程序通常是独立的二进制文件,因此难以实现类似于C++的插件系统。即使go的最新标准引入了go plugin机制,但是由于限制性条件比较多导致在生产环境中不是很好用,比如插件的编写环境和插件的使用环境要保持一致,如gopath、go sdk版本等。HashiCorp公司开源的go-plugin库解决了上述问题,允许应用程序通过本地网络(本机)的gRPC调用插件,规避了Go无法动态加载代码的缺点。go-
2021-04-26 23:43:45 2056
原创 如何辩证看待看视频学习(辩证法)
如何辨证的观看编程学习视频教程?好处:1、对初学者友好,按步操作,获得成就感看视频适合某个领域的编程初学者,可以考虑跟着视频操作 + 多动手练习,好好把基础夯实。视频是学习编程过程中的拐杖,有好处但是也容易产生依赖心理,看视频主要看代码实现思路,然后自己敲代码实现;亲自手敲代码期间,遇到问题是正常的,要把心态摆正,莫害怕犯错误,反而把犯错误当成发掘自身不足,把技术精进的好机会。出错就代表这块方面的内容自己掌握的不是很好,出错的地方恰恰是需要自己弥补和提高的地方,刚刚接触一个领域或
2021-04-12 17:50:26 322
原创 服务器开发——定时器
学习新东西时,首先我们想了解下这个东西有什么作用,它能解决什么样的实际问题,带来什么样的好处。 -----菜鸟语录文章导读1.概念性的介绍下定时器,定时器的使用场景2.定时器主流实现方式...
2021-04-08 16:12:36 3526 1
原创 C++11之lock_guard学习总结和代码实例
std::lock_gurad 是 C++11 中定义的模板类。定义如下:template<class _Mutex> class lock_guard { // class with destructor that unlocks mutexpublic: typedef _Mutex mutex_type; explicit lock_guard(_Mutex
2021-04-08 15:14:41 2895 1
原创 TcpFlow 1.4.6( C++版本)源代码分析之main函数分析
最近公司项目拟定使用tcpflow来分析http协议分析源代码后才能更好的利用源代码进行二次开发代码下载地址:https://github.com/simsong/tcpflow1.从main函数开始分析 第一步:process_infile函数处理-r 和 -R参数的pcap文件解析//打开pcap离线文件,根据pcap文件格式进行解析pd = pcap_open_offline(file_p
2021-04-08 15:10:38 1102
原创 C++11学习之share_ptr和weak_ptr
一、shared_ptr学习1.shared_ptr和weak_ptr 基础概念shared_ptr与weak_ptr智能指针均是C++ RAII的一种应用,可用于动态资源管理shared_ptr基于“引用计数”模型实现,多个shared_ptr可指向同一个动态对象,并维护了一个共享的引用计数器,记录了引用同一对象的shared_ptr实例的数量。当最后一个指向动态对象的shared_ptr销毁
2021-04-08 15:10:18 10346 4
原创 协程学习笔记(继续完善)
**一 协程是什么? 二 协程有什么好处?主要用来解决什么问题? 三 协程的原理和实现 四 协程的主要开源库有哪些**为什么觉得协程是趋势? https://www.zhihu.com/question/32218874一.协程概念介绍协程的历史 早在上世纪70年代,Donald Knuth提出coroutines不过是一种特殊的subroutines(过程调用),在一些
2021-04-08 15:09:27 762
原创 docker搭建lvs dr模式记录
一、自动部署https://github.com/paopaoyu/docker-lvs/参考上面这个地址二、手动部署2.1 lvs端部署脚本#!/bin/bash VIP=172.17.0.200 RIP1=172.17.0.3RIP2=172.17.0.4/etc/rc.d/init.d/functions case "$1" in start) ...
2021-04-07 19:12:38 756
原创 程序员 跨平台 and 跨语言 学习攻略
欢迎转载 转载请注明原文出处:写篇文章记录下,从windows平台编程到Linux平台编程的转变,以及从C++语言到java语言的学习转变,心态的调整。语言组织的很一般,请大家多多指教1.开发环境的转变,从vs转vi+makefile搞windows下都是使用visual studio可视化平台,vs这个集成开发环境爽的很,敲代码时有代码补全,调试时具有可视化环境,能够实时看到代码执行到什么行,变
2021-04-07 19:10:19 2425
原创 google搜索技巧 整理
1、双引号完全匹配的意思2、通配符程序报错后会有日志信息,直接采用出错信息来进行搜索比使用人类语言描述错误要搜索的更加精准。但鉴于错误信息可能长度比较长,而且包含特定场景下的类名、函数名、指针等,他们对于google搜索来说,可能是无用的,此时可采用通配符来进行搜索。2、site:xxx.com 使用特定域需要在特定的网站,搜索特定的内容3、去除结果 (减号)注意,减号前面必须有空格,后面必须没空格4、学术论文good网站https://schol...
2021-03-25 09:33:48 219
原创 抗ddos方法——对tcp标志的校验
在抗ddos工作中,tcp的防护主要是对tcp标志位的检测//全部tcp都填写和都不填写if (unlikely((tcp_hdr->tcp_flags & TCP_FLAG_ALL) == TCP_FLAG_ALL ||(tcp_hdr->tcp_flags & TCP_FLAG_ALL) == 0)) {retu...
2021-02-19 17:28:02 206 2
原创 谈谈更快更好的写代码
一、动手敲代码之前一定想清楚每次在动手敲代码之前,先默默问自己三遍你考虑清楚了吗?你考虑清楚了吗?你考虑清楚了吗?想清楚什么?程序流程,在脑子里面大概的过一遍,高手总是一遍遍的告诉我,动手敲代码之前一定要想清楚。想清楚一件事先做什么,再做什么,最后做什么,事情想清楚大概步骤以后,敲代码也会顺畅很多。成熟的程序员,切记不清不楚就开始写代码,先熟悉业务逻辑,然后熟悉代码逻辑,才可能写出在逻辑上、功能上bug很少的代码。二、代码的构建是循序渐进的,不断完善的过程放弃心中的.
2021-02-15 07:12:31 478
原创 groupcache 全方位解读之LRU篇
一、核心组件概览groupcache的核心组件,按照优先级列举如下:1、1 http部分peers接口singleflightLRUconsistenthashbyteviewsinksgroupcachepb参考文档:https://cloud.tencent.com/developer/article/1454568...
2021-01-29 19:58:52 747
原创 groupcache 全方位解读之基础篇
groupcache的官网文档太少了,几乎是没有,这篇文章是整合网上的文章加上自己的思考。目录一、groupcache简介二、项目代码目录结构三、编写demo并运行(玩耍吧,少年!)四、源代码流程分析4、1 读取缓存流程4、1、1 查询本地的maincache和hotcache缓存4、1、2 peer查询4、1、3 调用用户注册的回调函数回填缓存4、2 写入缓存流程5、总结一、groupcache简介1、1 功能和特性groupcache is a d
2021-01-29 14:32:34 1443 11
原创 《10x程序员工作法》读书笔记之任务分解
14、大师级程序员的工作秘笈大师级程序员每当遇到一件要做的事,把他分解成几个小任务,记录在一个清单上,然后才是动手写测试、写代码、重构这样一个小循环。等一个循环完成了,他会划掉已经做完的任务,开始下一个。一旦在解决问题的过程中遇到任务新问题,他会把要解决的问题记录在清单上,保证问题不会丢失,然后,继续回到自己正在处理的任务上。当他把一个个任务完成的时候,问题就解决完了。每个任务完成时,代码都是可以提交的。看上去简单,但是很多程序员都做不到。只有把任务分解到很小,才可能做到小步提交。而把任务分解到很小
2021-01-22 16:04:57 564
原创 go资料和博客收集(常看看)
golang好书《go设计与实现》https://draveness.me/golang/这本书最好是有一定的代码量以及工程实践再阅读比较好。go最佳实践https://dave.cheney.net/practical-go/presentations/qcon-china.htmlgo.cn这个酷站挺不错的https://gocn.vip/sites倪鹏飞的博客https://kubernetes.feisky.xyz/google C++ 最佳实践当时我看完这篇文章,真正
2020-12-20 08:53:11 249
原创 -D_GLIBCXX_USE_CXX11_ABI宏实验
带着问题学习是最好的1.-D_GLIBCXX_USE_CXX11_ABI宏的作用是什么?Dual ABI GCC 5 以后的版本,将std::string 与 std::list 重新实现了,对于c++03 与 c++11 来说, list<int> 从原有的 std::list<int> 变为了std::__cxx11::list<int> ,从原有的std::string变为了std::__cxx11::string,所以在链接的时候,为了兼容旧版本的代码
2020-09-11 20:38:54 5230 1
原创 《代码的艺术》直播笔记
技术(加强)编码能力,数据结构,算法系统结构,操作系统,计算机网络,分布式系统产品对业务的理解,交互设计,产品数据统计,产品/业务运营项目管理研究和创新Research && Development一个系统工程师的培养需要至少8至10年的时间在Coding的过程中,需要掌握:把握问题的能力建立模型的能力沟通协作的能力编码执行的能力写代码,要先建立起品味,知道什么是好代码?好的代码时从哪来的呢?首先,写代码时,严格要求自己的代码.
2020-08-27 10:59:02 256
原创 公司排查问题记录
SIG_PIPE:对端套接字已关闭,但是依旧往套接字中写入数据,会触发此信号handle SIGPIPE nostop noprintSIG_TERM:进程结束的信号
2020-06-30 09:12:22 188
原创 敏捷思维指导学习和工作
公司推行敏捷开发已有时日,我也尝试将敏捷的思想应用到实际生活中敏捷的思想:将大的需求通过AC分解成多个规模略小的任务,并评估出每个任务的规模,需要投入的时间(以人天为单位)一、任务拆解以读书会为例:将极客时间的Linux性能优化实战的课程拆分成5个阶段阶段1:CPU篇阶段2:内存篇阶段3:文件系统和磁盘篇阶段4:网络篇阶段5:综合篇每一个阶段需要写笔记,并统计笔记完成情况,来总结和检验自己是否学会,以及对知识的掌握程度,是浮在表面上?还是理解了技术的原理?二、里程
2020-06-28 09:42:07 310
原创 极客时间-linux性能优化 31~40
31.套路篇:磁盘 I O 性能优化的几个思路一、磁盘和文件系统的基准测试首先,对磁盘和文件系统进行基准测试然后,根据公司对磁盘和文件系统的应用场景,评估出性能优化的指标是多少?推荐fio测试工具随机读,顺序读,随机写,顺序写direct:是否跳过系统缓存iodepth:表示使用异步io时,同时发出的io请求上限rw:io模式,顺序读写还是随机读写ioengine:io引擎bs:表示IO的大小filename:文件路径结果输出slat,clat,lat都是
2020-06-23 08:35:18 644
vpp 源代码
2018-04-25
ubuntu和centos通用的smb.conf文件
2016-06-22
ddkwizard_setup_v1.3.0a+ddkbuild.bat+ddkbuild.cmd
2014-10-16
学生考试管理系统
2014-02-26
实用C++程序设计
2012-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人