自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jiajun Zhu

Goal + Plan + Execution + Diligence

  • 博客(163)
  • 收藏
  • 关注

原创 程序员的自我修养(ELF)

ELF(Executable and Linkable Format,可执行与可链接格式)

2024-03-22 20:25:20 416

原创 算法总结(四边形不等式优化)

【代码】算法总结(四边形不等式优化)

2023-03-08 04:28:51 177

原创 LeetCode(Regular Expression Matching & Wildcard Matching)

【代码】LeetCode(Regular Expression Matching & Wildcard Matching)

2023-03-04 23:17:25 127

原创 LeetCode(Maximal Rectangle)

思路:动态规划,dp[i][j]表示以matrix[i][j]为右下角的矩阵的最大长度,以matrix[i][j]为右下角的矩阵的最大面积为高度从i到0的最大面积的最大值。

2022-11-22 02:51:35 137

原创 LeetCode(Largest Rectangle in Histogram)

思路二:考虑一种递增的图形,如下图的5、6、7、8、3,对于这种图形,很容易算出以5、6、7、8为高度的最大面积,使用一个栈维护这种图形,时间复杂度为O(n)思路一:遍历每个立柱,以其高度左右扩展,找到左右第一个低于它的立柱,即为以它为高度的最大面积,时间复杂度是O(n^2)

2022-11-22 02:20:26 124

原创 DPDK总结(makefile)

dpdk版本17.11configconfig/defconfig_x86_64-native-linuxapp-gccconfig/common_linuxappconfig/common_base修改以上文件,make config T=$(RTE_TARGET) O=$(RTE_OUTPUT),生成新的$(RTE_OUTPUT)/.config注意$(RTE_TARGET)和$(RTE_OUTPUT)最好保持一致make configmake config,进入GNUmakefile:

2021-12-05 18:08:22 1523

原创 Linux系统调用

glibc版本2.34,kernel版本4.20以read为例,声明在/usr/include/unistd.h中,定义在glibc/sysdeps/unix/sysv/linux/read.c中。

2021-09-12 14:05:18 834

原创 Linux内核启动

kernel版本4.20linux/arch/x86/boot/header.S_start -> start_of_setup -> main .globl _start_start: # Explicitly enter this as bytes, or the assembler # tries to generate a 3-byte jump here, which causes # everything else to push off to the wrong

2021-09-05 19:58:58 541

原创 DPDK总结(mbuf)

mbuf图解mbuf分为4部分:mbuf + priv + headroom + data(1)mbuf长度为sizeof(struct rte_mbuf) = 128(2)priv长度在创建pool时指定(priv_size)(3)headroom长度为RTE_PKTMBUF_HEADROOM(CONFIG_RTE_PKTMBUF_HEADROOM)(4)data长度在创建pool时指定(data_room_size - RTE_PKTMBUF_HEADROOM)data根据实际情况又分为

2021-01-17 15:08:09 2415

原创 KGDB调试Linux内核

调试环境宿主机(Mac OS X)安装VirtualBox,创建2台虚拟机(CentOS-7-x86_64-Minimal-1804.iso),2台虚拟机通过串口相连目标机:开发机:下载源码wget http://vault.centos.org/7.5.1804/os/Source/SPackages/kernel-3.10.0-862.el7.src.rpmrpm -i ker...

2019-08-18 22:58:54 586

原创 Linux杂项

make官方文档https://www.gnu.org/software/make/manual跟我一起写 Makefilehttps://blog.csdn.net/haoel/article/details/2886https://blog.csdn.net/haoel/article/details/2899GNUmakefile > makefile > Makefilehttps://www.gnu.org/software/make/manual/html_node/M

2019-04-13 21:46:19 787

原创 DPDK总结(网卡收发包)

ixgbe_rx/tx_queuestruct ixgbe_rx_queue { struct rte_mempool *mb_pool; /**< mbuf pool to populate RX ring. */ volatile union ixgbe_adv_rx_desc *rx_ring; /**< RX ring virtual address. */ uint...

2019-03-10 18:05:21 5890 3

原创 DPDK总结(网卡初始化)

网卡初始化过程图片来源于http://blog.chinaunix.net/uid-28541347-id-5785122.html函数功能rte_eth_dev_count()网卡数rte_eth_dev_configure()配置网卡rte_eth_rx_queue_setup()rte_eth_tx_queue_setup()为网卡分配接收/发送队...

2019-03-09 16:10:41 12152

原创 DPDK总结(基本转发)

将DPDK的helloworld和skeleton例子组合起来可以得到一个基本转发程序,整个程序只有100多行,包含了最基本的转发(从一个网卡收包,从另一个网卡发包)执行./basicfwd -c 3 -n 2启动程序,1个MASTER lcore和1个SLAVE lcore分别绑定到CPU0和CPU1,SLAVE lcore使用1个RX/TX队列收发包pktegn-dpdk得到的测试结果(单...

2019-03-02 19:56:59 3037 2

原创 Linux网卡总结

线速万兆网卡小包线速:64B + 7B(Preamble) + 1B(SFD) + 12B(IFG) = 84B10*10^9/84/8 = 14880952 pps万兆网卡大包线速:1518B + 7B(Preamble) + 1B(SFD) + 12B(IFG) = 1538B10*10^9/1538/8 = 812743 pps查看网卡信息# 查看网卡信息[root@localhost ~]# ethtool enp7s0f0Settings for enp7s0f0: ...

2019-02-12 23:15:53 4101

原创 strongSwan配置

测试环境使用两台VMware Fusion虚拟机,网络模式为NAT模式,虚拟机主要配置:一个单核CPU、一块网卡、操作系统为CentOS 7执行dhclient ens33 &amp;后,vm1的ip为192.168.153.128,vm2的ip为192.168.153.130创建vtivm1:ip tunnel add ipsec1 local 192.168.153.128 remot...

2018-12-03 20:44:51 4137

原创 Linux内核模块

源码Kernel git库:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git下载速度太慢,使用清华大学的镜像:git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux.gitDPDK git库:https://git.dpdk.org/dpdkgit clone git://dpdk.org/dpdk增加新模块以netfilter为例hello.c

2018-11-11 01:30:54 905

原创 制作自安装CentOS ISO

测试环境使用VMware Fusion虚拟机,虚拟机主要配置:一个单核CPU、一块网卡、操作系统为CentOS 71、挂载和复制原isomkdir /mnt/cdrommount -o loop /root/CentOS-7-x86_64-DVD-1804.iso /mnt/cdrommkdir /tmp/isoyum install rsync -yrsync -a /mnt/cd...

2018-11-03 13:54:26 898

原创 协议栈(Bridge)

bridge是一个二层虚拟网络设备,通过brctl命令创建,提供了二层的ebtables,类似于三层的iptableshttp://blog.chinaunix.net/uid-28315531-id-3572529.htmlhttps://www.cnblogs.com/morphling/p/3458546.html注册module_init(br_init)static int ...

2018-10-28 18:10:36 1473

原创 Linux虚拟网络设备

Linux使用tun模块实现tun/tap,tun工作在L3,tap工作在L2。

2018-10-27 14:40:40 786 1

原创 Nginx源码阅读(ngx_http_process_request)

ngx_http_process_request()执行流程ngx_http_process_request() { ... ngx_http_handler() { ... ngx_http_core_run_phases() } ngx_http_run_posted_requests() // 处理post请求}ngx...

2018-07-15 17:51:37 679 1

原创 Nginx源码阅读(ngx_http_process_request_line)

ngx_http_process_request_line()static voidngx_http_process_request_line(ngx_event_t *rev){ ssize_t n; ngx_int_t rc, rv; ngx_str_t host; ngx_con...

2018-07-15 17:45:34 1027

原创 Nginx源码阅读(ngx_http_init_connection)

ngx_http_init_connection()voidngx_http_init_connection(ngx_connection_t *c){ ngx_uint_t i; ngx_event_t *rev; struct sockaddr_in *sin; ngx_http_port_t ...

2018-07-15 17:43:21 1083

原创 Nginx源码阅读(事件/连接/请求)

在nginx中,ngx_connection_t是对TCP连接的封装,包括已连接套接字、读事件、写事件表示一个事件的数据结构struct ngx_event_s { void *data; // 通常指向ngx_connection_t unsigned write:1; // 位域,表示事件可写 unsigned ...

2018-07-15 17:27:05 520

原创 Linux内核中断

异常分为4类:中断(interrupt),陷阱(trap)、故障(fault)、终止(abort)第1个是异步的,后3个是同步的。

2018-07-06 17:26:56 836

原创 Linux内核丢包

收发包各个queuehttps://www.cnblogs.com/zengkefu/p/5583618.htmlhttps://zhensheng.im/2017/08/11/2997/MIAO_LE_GE_MIhttps://www.sdnlab.com/17530.html统计数[root@localhost ~]# ethtool -S eth0NIC statistics: rx_packets: 3331177214 tx_packets: 3582794017

2018-07-05 12:34:17 2786

原创 Linux CPU总结

CPUsocket表示CPU插槽,1个CPU插槽安装1个物理CPUcore表示核,1个物理CPU包含多个coreThread表示线程(逻辑CPU),1个core包含1(关闭HT)或2(打开HT)个Thread双路十六核表示2个物理CPU,1个物理CPU包含16个核,打开HT后一共包含2 * 16 * 2 = 64核,如下所示: Socket 0 Socket 1Core...

2018-07-05 12:19:13 787

原创 TCP协议总结

MSS(maximum segment size)只能出现在SYN包中,通信双方在SYN包和SYN+ACK包中互相通告各自能接收的MSSSYN包不能携带data,占用seqACK包能携带data,携带data时占用seq,不携带data时不占用seqFIN包能携带data,不论是否携带data都占用seq即使窗口为0,也必须接收零窗口探测包、ACK包、URG包七个定时器...

2018-07-05 11:56:22 502

原创 协议栈(LVS)

ip_vs_in()static unsigned intip_vs_in(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn) (struct sk_buff *)){ struct ip_...

2018-06-19 11:45:05 708

原创 协议栈(Internet协议族)

net_proto_family// net_families数组,NPROTO为37,表示最多支持37种协议族static const struct net_proto_family *net_families[NPROTO] __read_mostly;// Internet协议族#define AF_INET 2 /* Internet IP Protocol ...

2018-06-10 21:43:46 1558

原创 协议栈(套接口层)

SYSCALL_DEFINEx()#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)// __VA_ARGS__是一个可变参数宏,替换...#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)#defi...

2018-06-10 21:38:07 515

原创 协议栈(TCP主动连接三次握手)

第一次握手(发送SYN包)tcp_v4_connect() -&amp;amp;amp;amp;gt; tcp_connect() -&amp;amp;amp;amp;gt; tcp_transmit_skb() -&amp;amp;amp;amp;gt; ip_queue_xmit()tcp_v4_connect()state从TCP_CLOSE变成TCP_SYN_SENTint tcp_v4_connect(struct sock *sk, struct so

2018-06-10 21:30:32 1408

原创 协议栈(TCP被动连接三次握手)

协议栈和标准TCP协议的TCP状态转换略有不同:第三次握手时,在tcp_v4_syn_recv_sock() -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tcp_create_openreq_child() -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; inet_csk_clone()中设置state为TCP_SYN_RECV,在tcp_child_process() -&amp;amp

2018-05-30 18:27:32 2468

原创 协议栈(TCP入口函数)

TCP状态enum { TCP_ESTABLISHED = 1, TCP_SYN_SENT, TCP_SYN_RECV, TCP_FIN_WAIT1, TCP_FIN_WAIT2, TCP_TIME_WAIT, TCP_CLOSE, TCP_CLOSE_WAIT, TCP_LAST_ACK, TCP_LISTEN, TCP_...

2018-05-28 21:17:01 2636

原创 协议栈(路由子系统)

结构体定义struct net { ... struct netns_ipv4 ipv4; ...};struct netns_ipv4 { ... struct hlist_head *fib_table_hash; // 长度为FIB_TABLE_HASHSZ ...};struct fib_table { struct h...

2018-05-21 11:13:57 870

原创 协议栈(Netfilter)

ip_rcv()int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev){ struct iphdr *iph; u32 len; /* When the interface is in promisc. mo...

2018-05-21 11:02:33 1008

原创 协议栈(出入口函数)

dev_queue_xmit()协议栈出口函数是dev_queue_xmit(),协议栈通过dev_queue_xmit()将skb下送网卡驱动dev_queue_xmit() -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; dev_h

2018-04-15 19:35:41 1502

原创 网络性能测试工具

ab# serverwget http://nginx.org/download/nginx-1.14.0.tar.gztar zxvf nginx-1.14.0.tar.gzcd nginx-1.14.0./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make installvim /usr/local/nginx/conf/nginx.conf...

2018-04-10 11:20:27 1230

原创 UNIX网络编程(IPC)

名词解释 名称 备注 Posix(Portable Operating System Interface of UNIX) 可移植操作系统接口 System V Unix操作系统的一个版本 pipe 管道 named pipe 有名管道 mutex(mutual exclusion) 互斥锁 condtion v...

2018-04-03 02:28:12 417

原创 UNIX网络编程(Socket)

sockaddr_instruct in_addr { in_addr_t s_addr; // 一般为uint32_t};/* 每个协议族都定义了自己的套接字地址结构,它们都以sockaddr_开头,并以对应每个协议族的唯一后缀结尾 IPv4的套接字地址结构为sockaddr_in */struct sockaddr_in { uint8_t...

2018-04-03 02:24:01 1143

空空如也

空空如也

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

TA关注的人

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