- 博客(17)
- 收藏
- 关注
原创 ovs-dpdk handle_packet_upcall()
的话, 那么 add flow 之后, 一旦 flow 里有 slow path action 的话, 后面这个 pkt 就又会 被 upcall 一次.就避免了重复的 upcall 了。在这里调用的时候, 已经持有了。的时候, 因为拿不到。
2024-12-11 18:40:20
265
原创 objcopy: 在二进制文件中插入数据内容
文章目录平台环境测试代码文件test.c编译链接过程执行结果利用objcopy将文本文件(测试用代码文件)编码成二进制文件的段,插入可执行文件中,并直接在代码中访问该文本文件。平台环境x86-64linux测试代码文件test.c#include <stdio.h>extern char _binary_test_c_start[];int main(){ printf("%c\n", _binary_test_c_start[0]);
2021-03-06 18:37:17
678
原创 重复是可耻的
文章目录重复是程序员最可耻的事情,系统中的每一项只是都必须具有单一,无歧义,权威的表示重复来自于多方面:强加的重复——开发者觉得无可选择,环境要求必须重复。对于信息在系统不同模块的重复表示,我们可以选择,单独维护信息的元数据,使用生产器在系统不同模块生成信息的不同表示。代码与文档的重复语言导致的重复,我们在C的.h文件与.c文件中重复。使用头文件描述接口,使用.c文件描述tech details(使用者根本不care)无意的重复——根本没有意识到有时候为了性能问题,而带来重复(缓
2020-11-24 16:37:35
248
1
原创 关于带返回值的函数不返回值———测试千行,不如反汇编一行
int foo(int i, int j){ int k = i+j;}int main(){ cout << foo(3,4) << endl;}上述代码在g++编译器环境下,能够顺利编译,也能够顺利运行。但是输出的是什么值呢?答:这其实取决与你的编译器,反汇编后就可以看出,如果编译器在foo中的反汇编代码中使用了%rax,那么返回值是%rax中的值...
2019-11-13 14:48:22
648
原创 由leetcode221与leetcode300分析一类DP问题的子问题空间结构
从leetcode221题与leetcode300题来分析一类DP问题的子问题空间结构的发现
2019-09-24 08:17:22
292
原创 从最大子数组问题聊子问题结构在DP与分治中的表达
文章目录摘要最大子数组问题描述使用分治解决最大子数组问题使用DP解决最大子数组问题比较分治与DP子问题空间结构案例1:最大矩形问题案例2:最大乘积子数组问题思考:注待续摘要在处理最大子数组问题(leetcode53),最大矩形问题(leetcode85),最大子数组乘积问题(leetcode152)的过程中,总感觉有一层迷雾在挡着我,特别是用DP处理了这些问题后,得到的代码效率还是很低。这让...
2019-09-04 22:05:19
318
原创 从leetcode45题简单聊起
文章目录前言贪心法解决贪心原则贪心选择性质的证明DP的代码贪心的代码前言看到leetcode45题的时候,发现标记是困难,但是定睛一看,这不就是一个非常简单的DP问题么。抱着这种想法,我想着应该可能是int型溢出可能需要单独处理吧。所以很小心的来处理int的溢出问题。最后运行的时候发现问题是超时。这时候就回过头来仔细想了想:1、已经使用了DP来解决了,而且都是一维的DP,子空间结构改进的...
2019-09-02 18:30:29
346
原创 使用一个统一的自动机模型处理leetcode的几道股票交易问题
通过定义一个能够识别合法的股票交易操作的自动机,然后借助这个自动机的状态来定义相关股票交易操作的收益函数。有了自动机与收益函数的定义后,我们就可以将原问题转换为一个与自动机状态相关的最优化问题。然后通过分析状态转移函数,建立一个状态之间的最优收益转移方程,通过自底向上的DP方法来求解此方程,就可以得到最终问题的解
2019-08-29 17:14:51
297
原创 解决一道leetcode题目的不固定的流程
文章目录注:本文描述的流程是不固定的,下面描述的各个点,可以说不是一种强制的流程,更像介乎于一种想法与流程之间的内容。可以按照这个流程来解决问题,也可以仅仅参考其中的一些想法。看懂问题的描述,理解题目给的几个示例。使用自己的语言,关闭题目的网页,重新描述题目。这是确保自己理解了题目的第一步。头脑风暴。将关于这个题目能够想到的一切,按点记录下来,做为后续分析的材料。尝试使用一些数学的语言...
2019-08-27 11:00:15
192
原创 关于利用有限自动机进行字符串匹配
文章目录有限自动机的字符串匹配一种针对 $\Sigma^*P\Sigma^*$ 模式的正则表达式的DFA直接构造方法转移函数$\delta$的定义如何高效的计算转移函数???与KMP算法的联系与区别注:需要读者学习过基础的形式语言与自动机的相关知识,至少是了解正则表达式,DFA,NFA的关系。在算法导论32.3节中,介绍了一种利用有限自动机进行字符串匹配的算法,看上去非常复杂,在本文中我尝试从...
2019-08-20 17:48:11
1102
原创 震惊!5句话搞定所有CPP的复杂类型声明
什么叫搞定:任意给一个类型声明语句,能够判断其是争取的还是错误的,如果是正确的,其是什么含义。什么叫复杂类型声明:融合指针,引用,const,数组,函数声明,函数指针等各种元素的类型声明。对象是一块具有类型的内存空间;*与&都是可以做为类型修饰符使用,用于修饰类型;const是对象修饰符,用于修饰对象,表示该对象的内容不能改变;引用不是对象,引用初始化后与某个对象绑定后不能再...
2019-08-08 17:02:22
354
1
原创 快排的PARTITION过程,荷兰国旗问题,leetcode324摆动排序问题分析比较总结
上述三个问题具有一些共性,本文给出这种共性的描述与总结,然后给出一套固定的分析模式,指导读者如何***正确清晰***的去分析这类问题。注:正确清晰指的是,按照本文给的这种模式去分析,写代码的时候会很少出错,思考的思路有非常有迹可循。三个问题的共性与区别分析的固定模式示例:PARTITION过程示例:荷兰国旗过程示例:leetcode324摆动排序构成注意:一些非常细微的注意的地方参...
2019-08-08 10:06:13
278
原创 短路与 短路或
短路与e1 && e2先计算e1的值,如果能够确定整个表达式的值(即e1为假),则不计算e2短路或e1 || e2先计算e2的值,如果能够确定整个表达式的值(即e1为真),则不计算e2用处对于短路与&&,可以用于先判断指针是否为空,在通过解析指针对指针指向内容进行判断。譬如: (p != nullptr) && (*p == 0) 这...
2019-07-09 11:37:39
288
原创 从leetcode75 sortColors与快排PARTITION过程说起
从leetcode75 sortColors与快排的PARTITION过程说起注意一些前提说明一些前提问题描述问题整体分析解决方法的整体思路PARTITION过程分析leetcode75题分析关于指针变换与元素交换过程的总结分析扩展1扩展2leetcode官方解题思路分析注意初始化的时候,各个指针不能相同,如果相同的话,交换过程就会出错,可能会将一个元素进行了多次交换。所以在算法导论的快排中,...
2019-07-04 09:15:19
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人