摘要: 1.概览 本文记录了一个基本的android的运行过程,如何写hello请参考ref,这里只是记录基础过程: 1.各种各样的layout.xml文件中写好了view,布局, 按钮等要的显示控件,安卓app运行的时候,这个xml文件就会被生成对应的view对象 2.安卓运行的入口main文件是Main 阅读全文
posted @ 2020-05-04 19:16 woder 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 概览 1.listview只是作为一个容器,其中的每一个view都是在代码中生成,而不是写死在listview.xml中 2.每个view是通过实现一个adapter中重写getview()接口,在其中使用inflate()去动态生成的 3.要为每个view添加相应的按钮的话,可以实现一个继承了Vi 阅读全文
posted @ 2020-05-04 19:14 woder 阅读(174) 评论(0) 推荐(0) 编辑
摘要: #统计tcp连接状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}' /^tcp/: 匹配每一行以为tcp开头的 {S[$NF]: 创建一个数组S,$NF最后一列作为key,对该元素进行,用来统计出现次数 E 阅读全文
posted @ 2020-04-24 17:12 woder 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 剖析top命令显示的VIRT RES SHR值:https://www.cnblogs.com/xuxm2007/archive/2012/06/05/2536294.html 理解virt res shr之间的关系 linux:https://www.orchome.com/298 Linux 执 阅读全文
posted @ 2020-04-22 09:55 woder 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 概览 1.base64和md5都可以通过apr util库完成 2.base64编码通过apr_base64_encode()实现 3.md5编码通过apr_md5()实现 正文 1.安装apr库 2.base64编码 "apr base64官方文档" 编译 ref "apr base64官方文档" 阅读全文
posted @ 2020-04-20 13:27 woder 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 概览 1.使用top H p pid,去查看一个线程的cpu使用 2.使用pstack 打印运行堆栈,从堆栈观察高出现函数 正文 1.火焰图 使用perf采集数据, F 99 每秒99次; p 999 追踪进程999; g 记录调用栈; proc map timeout 1000, cpu太高的时候 阅读全文
posted @ 2020-04-18 21:19 woder 阅读(733) 评论(0) 推荐(0) 编辑
摘要: 1.反汇编相关 1.1 设定intel汇编 gdb 默认是att汇编,可通过以下指令进行转换 set disassembly-flavor intel 从配置文件上进行设置也可以 echo "set disassembly-flavor intel" > ~/.gdbinit 1.2 当前运行代码反 阅读全文
posted @ 2020-04-17 12:44 woder 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 序 1. gcc/g++ 编译器中提供了对缓冲区溢出的栈保护选项 fstack protector 2. 栈溢出的时候,core dump 反馈的行数是不准确的,首先通过反汇编,确认是否去执行__stack_chk_fail了,确定栈溢出了,然后使用log 去跟踪到底是哪里发生了问题 3. gcc/ 阅读全文
posted @ 2020-04-16 19:34 woder 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 概 sleep() 将进程放入等待队列,休眠结束后,进入运行队列获取cpu分配,sched_yield()将进程分配到过期队列,所有进程都运行完成后才会运行 正文 进程调度队列 操作系统的进程调度有三大队列: 三个队列:运行队列,过期队列,等待队列 1.等待队列:休眠(或者阻塞)的进程放在等待队列里 阅读全文
posted @ 2020-04-13 23:52 woder 阅读(436) 评论(0) 推荐(0) 编辑
摘要: ``` #include /* struct timeval { __time_t tv_sec; Seconds. 秒位部分 __suseconds_t tv_usec; Microseconds. 微秒位部分 }; */ void fn(){ struct timeval now; gettimeofday(&now, NULL); //获取从1970年1月1日到现在的时间 cout<<"当前 阅读全文
posted @ 2020-03-27 08:55 woder 阅读(1691) 评论(0) 推荐(1) 编辑