2023年2月18日
摘要: 调试启动过程中的 Android Native Code Crash 记录一下,最后成功使用的工具是 lldb + lldb-server,不需要 root 权限。我最先尝试使用的是,gdb + gdb-server 在 attach 后总是 crash,总感觉指令集有点问题,尝试编译一个 targ 阅读全文
posted @ 2023-02-18 16:59 莫扎特的代码 阅读(178) 评论(0) 推荐(0) 编辑
2023年2月13日
摘要: 一、开发流程 1. 编译可执行文件 1 #include <stdio.h> 2 #include <unistd.h> 3 4 void test() 5 { 6 char * s = "hello world\n"; 7 while(1){ 8 //int v = 0/0; 9 printf(" 阅读全文
posted @ 2023-02-13 20:29 莫扎特的代码 阅读(8613) 评论(0) 推荐(0) 编辑
2021年4月14日
摘要: 起因: 下面这段奇怪的 python 代码,一个奇怪的 bug,简单来说就是在一个模块内定义了一个 class Test, 然后创建了一个 Test 的对象 ,然后在一个函数内通过 from import 方式从外部 import 了 Test这个类,然后就发现 a 不是从外部import这个Tes 阅读全文
posted @ 2021-04-14 11:39 莫扎特的代码 阅读(811) 评论(0) 推荐(0) 编辑
2020年12月31日
摘要: Tcp连接正常断开的情况,大家都了解,也就是一端发送Fin报文开启四次挥手,然后 sock 结构销毁,但是我之前很少去追踪 Tcp 在对端宕机,进程 Crash 之后的行为逻辑。前段时间正巧遇到了这样一个场景: 进程 A 通过 Tcp 连接关联了进程 B,同时进程B还有个备份进程进程C,A在感知到进 阅读全文
posted @ 2020-12-31 16:21 莫扎特的代码 阅读(1701) 评论(0) 推荐(0) 编辑
2018年12月9日
摘要: 0x01 为什么要做拥塞控制 我们知道TCP是一个可靠的传输层协议,与UDP最大的不同首先是可靠,然后是,为了实现可靠性,TCP需要在发送端和接收端维护发送窗口和接收窗口来缓存尚未被确认的报文。发送窗口是拥塞控制算法对当前网络传输能力的一个评估,发送窗口越大,拥塞控制算法认为 那么什么时候是网络拥塞 阅读全文
posted @ 2018-12-09 15:35 莫扎特的代码 阅读(2780) 评论(0) 推荐(1) 编辑
2018年7月12日
摘要: 0x01 简介 TCP头部和IPV4头部除了固定的20字节外,都设置了 OPTION 字段用于存储自定义的数据,因为TCP头部和IPV4的报文长度字段均为4字节,所表示的最大值为15, 乘4,报文头部最大长度为60字节,因此Option字段最大长度为40字节,足够存储大量的报文控制信息。TCP和IP 阅读全文
posted @ 2018-07-12 22:46 莫扎特的代码 阅读(17619) 评论(0) 推荐(0) 编辑
2017年8月28日
摘要: 0x01 Quic QUIC协议于2012年实现,2015年提交RFC草案,它是Goolge为了解决当今WEB应用常见的传输层和应用层问题而提出的,从分层结构上可以看做是TCP+TLS+HTTP2的集合,不过是在UDP的基础上实现的 主要解决了下面的几个问题 0x02 HOLB问题 HOLB(Hea 阅读全文
posted @ 2017-08-28 23:03 莫扎特的代码 阅读(2081) 评论(0) 推荐(0) 编辑
2017年2月12日
摘要: 1 ECN简介 首先看看ECN握手报文的特点,根据RFC3168,ECN握手报文IP头部不能够设置ECT和CE位的 SYN报文TCP标志字段的CWR和ECE位被置1 SYN-ACK报文的CWR位被置0,ECE位被置1 报文在网络上传输的过程中,如果路由器判断自身发生拥塞则在报文的IP首部设置CE标志 阅读全文
posted @ 2017-02-12 16:19 莫扎特的代码 阅读(4690) 评论(0) 推荐(0) 编辑
2016年9月28日
摘要: Apiroi算法在Hadoop MapReduce上的实现 输入格式: 一行为一个Bucket 输出格式: <item1,item2,...itemK, frequency> 代码: 阅读全文
posted @ 2016-09-28 00:55 莫扎特的代码 阅读(4472) 评论(1) 推荐(0) 编辑
2016年5月30日
摘要: 本文将在Linux环境下实现一个简单的FTP代理服务器,主要内容涉及FTP主动/被动模式和简单的Socket编程。 FTP有两种模式,即主动模式(Active Mode)和被动模式(Passive Mode),主要区别在谁在监听数据端口。 FTP服务器在开启后一直在监听21号端口等待客户端通过任意端 阅读全文
posted @ 2016-05-30 22:39 莫扎特的代码 阅读(11761) 评论(0) 推荐(1) 编辑
2015年10月9日
摘要: 如何使用动态链接库 Linux下打开使用动态链接库需要三步(实际上和windows下基本一样):1.加载动态链接库,通过调用库函数dlopen()获得链接库的句柄,对应于windows下的 AfxLoadLibrary函数 2.从句柄中获取函数符号加载的内存地址,通过调用dlsym函数返回函数地址, 阅读全文
posted @ 2015-10-09 23:10 莫扎特的代码 阅读(2608) 评论(1) 推荐(0) 编辑
2015年9月8日
摘要: gdb或者vlagrind报告: 错误原因:函数通过jmp,call,ret等指令跳转到0x00,错误可能出现的范围 1.函数缓冲区溢出覆盖了返回地址,然后又调用了return,例如 2.函数使用了未初始化的函数指针,例如 阅读全文
posted @ 2015-09-08 11:44 莫扎特的代码 阅读(894) 评论(0) 推荐(0) 编辑
2015年7月28日
摘要: Nginx采用多进程Master/Worker结构,Worker进程数为CPU个数时工作效率最高,Nginx通过affinity为每个Worker进程绑定一个CPU,避免进程切换带来的消耗,同时能够保证缓存命中率。Nginx配置文件conf/nginx.conf中关于Worker进程个数,和affi... 阅读全文
posted @ 2015-07-28 10:01 莫扎特的代码 阅读(1426) 评论(0) 推荐(0) 编辑
2014年9月17日
摘要: 字符串下一个排列,上一个排列,和随机排列 阅读全文
posted @ 2014-09-17 23:21 莫扎特的代码 阅读(170) 评论(0) 推荐(0) 编辑
2014年9月10日
摘要: Kruskal:1.边排序,2.按边从小到大连接森林至树 3.并查集 prim:类似与Dijkstra,把节点分为已扩展和未扩展,为扩展节点中权值最小的节点为下一个扩展节点,Dijkstra中为扩展节点的权值为到起点的最短路径,Prim为到已生成树的最短距离,扩展后更新为扩展节点权值,使用最小堆 O 阅读全文
posted @ 2014-09-10 22:05 莫扎特的代码 阅读(183) 评论(0) 推荐(0) 编辑
2014年9月9日
摘要: /***************************************************** *author:chen xin *email:cx2pirate@gmail.com *date:2014.09.08 * **************************************************/ #include #include #... 阅读全文
posted @ 2014-09-09 23:18 莫扎特的代码 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 准备考研,荒废了好多东西,希望做了正确的决定 阅读全文
posted @ 2014-09-09 23:05 莫扎特的代码 阅读(213) 评论(0) 推荐(0) 编辑
2014年6月23日
摘要: 最近在看RSA,找到一个一个大素数是好多加密算法的关键一步,而大素数无法直接构造,一般情况下都是生成一个随机数然后判断是不是素数。判断是否是素数的方法有好多,有的能够准确判断,比如可以直接因式分解(RSA的安全性就基于这是困难的),速度稍微快一点的对素数又有特殊要求,而Miller-Rabin素数检 阅读全文
posted @ 2014-06-23 23:55 莫扎特的代码 阅读(174) 评论(0) 推荐(0) 编辑
2014年6月7日
摘要: 1 /************************************************ 2 *作者:陈新 3 *时间:2014 6.3 4 *邮箱:cx2pirate@gmail.com 5 * ***************************************... 阅读全文
posted @ 2014-06-07 14:07 莫扎特的代码 阅读(190) 评论(0) 推荐(0) 编辑
2014年6月2日
摘要: linux内核中有个rbtree,stl源码中也有,标准stl中的map和set都只是包装了下rbtree全部代码:点击打开链接 1 /************************************************************* 2 * 作者:陈新 3 * 邮... 阅读全文
posted @ 2014-06-02 12:37 莫扎特的代码 阅读(305) 评论(0) 推荐(0) 编辑
2014年5月18日
摘要: 被各种乱码整得焦头烂额,查了些资料,理了理,挺有意思的。 首先是ASCII码,美国搞出来时用32至127表示可打印字符,0至31为控制字符,如0x0A (LF换行),0x0D(CR回车)。然而随着计算机普及,非英语地区开始想使用自己的语言,于是8位ASCII码的最高位也被用上了,而亚洲地区出现使用两 阅读全文
posted @ 2014-05-18 23:50 莫扎特的代码 阅读(355) 评论(0) 推荐(0) 编辑
2014年5月3日
摘要: //(HDU1134,HDU1261)#ifndef HEADER_BIGINT #define HEADER_BIGINT #include #include #include using namespace std; class BigInt{ public: BigInt(); BigInt(int smallNum); B... 阅读全文
posted @ 2014-05-03 15:13 莫扎特的代码 阅读(246) 评论(0) 推荐(0) 编辑
2014年4月21日
摘要: 挺有意思的一题,最小路径之后最大流 阅读全文
posted @ 2014-04-21 18:28 莫扎特的代码 阅读(198) 评论(0) 推荐(0) 编辑
2014年4月13日
摘要: 还以为有什么好的方法呢 /************************************************************** 作者:陈新 邮箱:cx2pbirate@gmail.com 用途:pboj1948 时间:2014 4月13日 15:17 测试: ... 阅读全文
posted @ 2014-04-13 16:03 莫扎特的代码 阅读(220) 评论(0) 推荐(0) 编辑
2014年4月12日
摘要: 链接:http://poj.org/problem?id=1182 定义一种关系R(x,y),x > y 时 R(x,y) = 2;x = y 时 R(x,y)= 1;x < y 时 R(x,y) = 0 则R(x,y)有如下运算法则: R(x,y) = (R(x,u) - R(y,u) + 4) 阅读全文
posted @ 2014-04-12 15:10 莫扎特的代码 阅读(172) 评论(0) 推荐(0) 编辑
2014年4月1日
摘要: 推箱子 1 /************************************************************** 2 作者:陈新 3 邮箱:cx2pirate@gmail.com 4 用途:hdu1254_2 5 时间ﺿ014.3.31 21:11 6 测试ﺿ0447364 阅读全文
posted @ 2014-04-01 09:30 莫扎特的代码 阅读(254) 评论(0) 推荐(0) 编辑
2014年3月15日
摘要: 1 /************************************************************** 2 作者:陈新 3 邮箱:cx2pirate@gmail.com 4 用途:hdu1237 5 时间:2014.3.4 23:17 6 编译环境 : g++ 7 数据:10308543 2014-03-15 20:45:3... 阅读全文
posted @ 2014-03-15 20:49 莫扎特的代码 阅读(351) 评论(0) 推荐(0) 编辑
2013年10月26日
摘要: 利用傅立叶变换可以把大数乘法时间控制在:O(n*lgn),首先把整数a1a2...an看作多项式f(x) = a1x + a2x^2 + .... an x^n(其中x取10),把整数乘法转换为多项式乘法,多项式一般乘法也要O(n*n)时间,而多项式点值表示法的乘法只需要O(n)的时间,于是就有了条 阅读全文
posted @ 2013-10-26 10:44 莫扎特的代码 阅读(466) 评论(0) 推荐(0) 编辑
2013年7月7日
摘要: 这是一个困扰我许久的问题,总是似懂非懂,负数补码表示比原码多一个,8位为-128 -- 127,32位定点整数范围为-32768 -- 32767,有几个点有点感觉:1.负数零的原码补码相同10000000按照取反加1得到00000000,按照取模也是得到00000000所以就多了个10000000... 阅读全文
posted @ 2013-07-07 22:56 莫扎特的代码 阅读(629) 评论(0) 推荐(0) 编辑
2013年7月3日
摘要: 分支界定是一种在问题的解空间树上搜索问题的解的方法,其实就是剪枝广搜,它始终维护一个上下界用来剪枝,一个限界函数计算对解的最有期望。主要用于解决离散问题的优化。 分支界定的关键问题: (1)如何确定合适的限界函数 (2)如何组织待处理节点表 (3)如何记录最优解路径 限界函数应该是经过该节点所有搜索 阅读全文
posted @ 2013-07-03 11:37 莫扎特的代码 阅读(391) 评论(0) 推荐(0) 编辑
2013年6月30日
摘要: A*搜索是最佳优先搜索最广为人知的形式,是一种有信息搜索策略,它的核心是一个估值函数:f(n)=g(n)+h(n),g(n)是从起始点到节点n的路径耗散,而h(n)是从节点n到目标节点的最低耗散路径的估计耗散值,因此f(n)=经过节点n的最低耗散解的估计耗散。 完备性证明:A*搜索能够找到最低耗散解 阅读全文
posted @ 2013-06-30 14:42 莫扎特的代码 阅读(182) 评论(0) 推荐(0) 编辑
2013年4月20日
摘要: 仅供学习使用,还请大神多多指点! 传教士与野人 问题描述:M个传教士和N个野人在河的一边,还有一条能载一个人或者两个人的船。找到一个办法让所有的人都渡到河另一岸,要求在任何地方野人数都不能多于传教士的人数(可以只有野人没有传教士)。 问题形式化:1、状态:每个状态有河两岸A与B对应的传教士与野人数和 阅读全文
posted @ 2013-04-20 20:29 莫扎特的代码 阅读(746) 评论(0) 推荐(0) 编辑
2013年3月17日
摘要: 把草稿纸上的集合体转变成代码其中还是有很多细节问题需要注意的,《算法导论》主要介绍了叉积在几何学中的应用。向量的两个运算点积与叉积,点积:ab = |a||b|cos 叉积:a x b = |a||b|sin,由于叉积的形式与面积公式相似,也常用于计算多边形的面积,同时如果a x b > 0则a 向 阅读全文
posted @ 2013-03-17 13:49 莫扎特的代码 阅读(192) 评论(0) 推荐(0) 编辑
2013年3月11日
摘要: 在长度为n的数组T[n]中查找一个长度为m的数组P[m],如果用朴素字符串匹配方法要用O(mn)的时间,用自动机匹配要O(n)的时间,但一般的自动机要O(ml)的时间(l为字符集的宽度),而KMP只要O(m)的预处理时间。 其实最早接触字符串匹配自动机应该是在数字电路中的序列检测器那时候,序列检测器 阅读全文
posted @ 2013-03-11 21:33 莫扎特的代码 阅读(271) 评论(0) 推荐(0) 编辑