- 博客(64)
- 资源 (1)
- 收藏
- 关注
原创 记一次自己亲身经历灵异事件
时间:2021/5/13,21:00~21:30地点:南京浦口区研创园区(公司:紫光展锐南研所)-->南京浦口区盛景华庭南苑(住宿:12栋2205)晚上九点过几分打卡下班乘冯瑞轿车与黄健钟、蔡鑫鑫回住宿地,估计九点十几分到南苑门口,和蔡鑫鑫一起下车(黄健钟继续乘坐到明发新城),后到12栋乘坐靠门口电梯,从一楼乘坐电梯共四人,第一人好像是几楼的(男女忘记了好像是男的)、第二人蔡鑫鑫11楼、第三人一个妹子13楼、我22楼,当时从公司到路上一直拿着手机看纳达尔Vs沙波瓦洛夫 罗马大师赛十六进八对决。
2021-05-14 20:24:44
929
原创 TCP/IP协议|IO/NIO原理|Redis/Netty学习
三次握手:syn、sny+ack、ack1. 为什么建立连接 tcp是一个可靠的传输机制,可靠在于每次收到一个数据都会相应的收到一个确认包之后才会将缓冲区的内容给删除掉,否则过一段时间就会重传。 建立连接就像是侦察兵侦查道路一样,我先看看这条路能不能走,如果能走,后面的大部队就跟上来了,如果不能走,后面的大部队就等着我继续侦查。2. 为什么要用标志位syn? 案例一: 没有标志位syn的对话 客户端:嗨,服务器 服务器:你恐怕是傻子吧,给我发这个干嘛呢!! 案例二:
2021-03-14 22:51:40
283
原创 Android_性能分析与优化学习
一.性能优化难题性能表现差:app启动慢、卡顿、丢帧;内存占用高、抖动频繁;耗电、网络请求慢;奔溃率、异常率高; 线上问题无从查找:如何保证异常感知灵敏度;如何“复原”案发现场;如何快速止血成功; 性能优化的长期开销大:如何扼杀问题于萌芽,以更高的视角知道自身工作;优化效果如何长期保持; 总结要求:性能表现好;线上问题易追查;长期投入小;二.App性能优化解决方案演进项目初期:只关心崩溃率、不采集性能数据;没有性能检测、优化方案;没有排查问题手段; 项目壮大期:指标采集,不够全及深入;接入
2021-02-28 23:17:21
292
1
原创 Android_应用层内存优化之你需要了解的事
一.JVM内存结构 五大内存区域:程序计数器、java虚拟机栈、本地方法栈、堆、方法区。二.垃圾判断算法 学习地址:https://www.bilibili.com/video/BV1Ka4y1v7Yy?spm_id_from=pageDriver
2021-02-21 23:22:18
148
原创 理查德费曼学习法
其实大部分人的智力水平相差不大,但是学习力却大相径庭,造成这样差异的更多地是我们的学习方法、学习习惯等可控因素。那么,什么是费曼学习法呢?费曼学习法可以简化为四个单词:Concept (概念)、Teach (教给别人)、Review (回顾)、Simplify (简化)。什么是费曼学习法 怎么用费曼学习法1)费曼学习法是什么意思简单来说就是用更少的时间学习更多的知识。费曼以能够快速吸收信息,并且在更短时间内掌握知识闻名,在高中最后一年就拿了纽约大学数学锦标赛冠军,而且后来在普林斯顿大学的数学
2021-01-17 22:21:02
1250
原创 Android_binder通信机制学习
一.Binder是什么? Binder就是Android中的血管,在Android中我们使用的Activity、Service等组件需要和AMS(system_server)通信,这种跨进程的通信都是通过Binder完成机制:Binder是一种进程间通信机制 驱动:Binder是一个虚拟物理设备驱动 应用层:Binder是一个发起通信的Java类...
2021-01-12 23:05:45
181
原创 Linux——用户和用户组管理&权限管理
一.用户配置文件用户信息文件 影子文件 组信息文件二.用户管理相关文件三.用户管理命令useradd: passwd: usermod和chage: userdel和su:四.用户组管理命令五.ACL权限六.文件特殊权限七.chattr权限八.sudo权限...
2020-11-23 23:27:47
155
原创 Linux——常用命令&vim常用操作
一.文件处理命令命名格式与目录处理命令ls:(1)命令格式:命令 [-选项] [参数] , 说明:个别命令不遵循此格式,当有多个选项时可以写在一起,简化选项与完整选项;(2)ls:ls 选项[-ald] 参数[文件或目录] 目录处理命令: 文件处理命令: 链接命令:二.权限管理命令三.文件搜索命令四.网络命令五.关机重启命令...
2020-11-21 22:30:56
229
原创 深入理解Linux内核(学习笔记)_第八章内存管理
RAM的某些部分永久地分配给内核,并用来存放内核代码以及静态内核数据结构。RAM的其余部分称为动态内存,这不仅是进程所需的宝贵资源,也是内核本身所需的宝贵资源,实际上,整个系统的性能取决于如何有效地管理动态内存。一.页框管理...
2020-11-15 22:13:19
215
原创 深入理解Linux内核(学习笔记)_第七章进程调度
Linux与任何分时系统一样,通过一个进程到另一个进程的快速切换,达到表明上看来多个进程同时执行的神奇效果。
2020-11-15 17:42:07
173
原创 深入理解Linux内核(学习笔记)_第六章定时测量
Linux内核必需完成两种主要的定时测量,我们可以对此加以区分:(1)保存当前的时间和日期,以便能通过time()、ftime()和gettimeofday()系统调用把它们返回给用户程序,也可以由内核本身把当前时间作为文件和网络包的时间戳;(2)维持定时器,这种机制能够告诉内核或用户程序某一时间间隔已经过去了。定时测量是基于固定频率振荡器和计数器的几个硬件电路完成的。一.时钟和定时器电路...
2020-11-14 19:54:45
159
原创 Linux学习——系统分区&注意事项
分区:把大硬盘分为小的逻辑分区格式化:写入文件系统分区设备文件名:给每个分区定义设备文件名挂载:给每个分区分配挂载点
2020-11-12 22:52:13
259
原创 深入理解Linux内核(学习笔记)_第五章内核同步
可以把内核看作是请求进行响应的服务器,这些请求可能来自在CPU上执行的进程,也可能来自发出中断请求的外部设备。这些请求可能引起竞争条件,因此需要采用适当的同步机制对这种情况进行控制。一.内核如何为不同的请求提供服务...
2020-10-24 21:46:27
209
原创 Camera FaceHal内存踩踏问题解读
一.什么是内存踩踏访问了不合法的地址。通俗一点就是访问了不属于自己的地址。如果这块地址分配给了另一个变量使用,就会破坏别人的数据。从而导致程序运行异常,挂死,输出图像破图等。二.内存踩踏可能情形数组访问越界; 字符串操作越界; 野指针; 重复释放; 指针类型转换错误; 栈溢出; 堆溢出 释放在使用; 多线程读写的数据没有保护; 多线程使用线程不安全的函数; 其他;三.如何排查1.查看ylog,帮助缩小排查范围;2.加入debug log,进一步缩小范围;打印相关内.
2020-10-23 19:07:28
2006
原创 深入理解Linux内核(学习笔记)_第四章中断和异常
中断通常被定义为一个事件,该事件改变处理器执行的指令顺序,这样的事件与CPU芯片内外硬件电路产生的电信号相对应。中断通常分为同步中断和异步中断:1)同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断;2)异步中断是由其他硬件设备依照CPU时钟信号随机产生的。 中断是由间隔定时器和I/O设备产生的。异常是由程序错误产生的,或者是由内核必须处理的异常条件产生的。一.中断信号的作用...
2020-10-11 16:42:57
245
原创 深入理解Linux内核(学习笔记)_第三章进程
进程是任何多道程序设计的操作系统中的基本概念。通常把进程定义为程序执行的一个实例。在Linux源代码中,常把进程称为任务(task)或线程(thread)。一.进程、轻量级进程和线程二.进程描述符...
2020-09-26 23:16:01
254
原创 深入理解Linux内核(学习笔记)_第二章内存寻址
值得庆幸的是,操作系统自身不必完全了解物理内存,如今的微处理器包括的硬件线路使内存管理既高效又健壮,所以编程错误就不会对该程序之外的内存产生非法访问。本章将详述80x86微处理器怎么进行芯片级的内存寻址。一.内存寻址程序员偶尔会引用内存地址作为访问内存单元内容的一种方式,但是,当使用80x86微处理器时,必须区分以下三种不同的地址:逻辑地址:包含在机器语言指令中用来指定一个操作数或一条指令的地址。每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离。 线性地址(虚
2020-09-20 21:12:00
244
原创 深入理解LINUX内核(学习笔记)_第一章绪论
Linux与其他类Unix内核的比较:单块结构的内核:它是一个庞大、复杂的自我完善程序,由几个逻辑上独立的成分构成。 编译并静态链接的传统Unix内核:大部分现代操作系统内核可以动态地装载和卸载部分内核代码(典型的例子如设备驱动程序),通过把这部分代码称做模块(module)。Linux对模块的支持是很好的,因为它能自动按需装载或卸载模块。 内核线程:一些Unix内核,被组织成一组内核线程(kernel thread)。内核线程是一个能被独立调度的执行环境(context);也许它与用户程序有关,也
2020-09-13 00:23:58
242
原创 C++中delete对象和数组对象的用法
算法集市文章学习:C++在回收用new分配的单个对象的内存空间时,直接用delete;回收用new[]分配的数组对象内存空间时,需要使用delete[]。调用new所包含的动作:从系统中申请一块内存,并调用对象的析构函数; 调用delete所包含的动作:先调用对象的析构函数,然后将内存归还给系统; 调用new[n]所包含的动作:申请可容纳n个对象的空间,并调用n次构造函数来初始化这n个对象; 调用delete[]所包含的动作:先调用n次对象的析构函数,然后再将内存归还给系统;#includ
2020-09-06 23:45:37
4466
原创 Asan工具android平台部署
一.首先先了解:Android NDK编译Application.mkAPP_PROJECT_PATH 项目路径 APP_MODULES 编译模块列表 APP_OPTIM release/debug 不设则取决于manifest中的android:debuggable。 不建议设置。 APP_CFLAGS 传递给编译器的选项(C /C++),作用于所有模块 APP_CPPFLAGS 传递给编译器的选项(C++) -fexceptions
2020-09-06 21:47:38
1316
原创 学习C语言结构体内存对齐
struct Score{ float language;//语文 float english;//英语 float math;//数学};struct Student{ int SID;//学号 char name[20];//姓名 char sex;//性别 int age;//年龄 char address[40];//地址 int height;//身高 struct Score subject;//主科目成绩}.
2020-08-30 17:47:24
265
原创 C/C++中break、continue、goto、return在循环中的用法
在C/C++中,break、continue、goto、return语句都可以应用在while、for循环语句中,用于控制循环语句中的流程。#include<iostream>using namespace std;int main(){ int i=0; while(i<2){ cout<<"i="<<i<<endl; for(int j=0;j<2;j++){
2020-08-26 23:22:13
1021
原创 C++三种构造函数
学习算法集市文章:C++的三种构造函数:无参数构造函数:以类作为函数名,没有形参; 一般构造函数:有初始化列表方式和内部赋值方式两种; 复制构造函数:根据一个已存在的对象复制出一个新的对象;class Student{public: int m_age; int m_score; //无参构造函数 Student(){ m_age=10; m_score=99; cout<<"无参构造函数"<
2020-08-25 23:26:19
950
原创 C语言关键字static的用法学习
学习算法集市文章C语言static关键字的常见用法有三种:1.用于局部变量的修饰符;2.用于全局变量的修饰符;3.用于函数的修饰符;1.用于局部变量的修饰符 当static用于修饰局部变量时,通常是在某个函数体内,只能在该函数内被调用。这样定义的变量通常被称为局部静态变量,它的值不会因为函数调用的结束而被清除,当函数再次被调用时,它的值是上一次调用结束后的值。#include<stdio.h>#include<string.h>void my_...
2020-08-16 21:46:48
285
原创 C专家编程(学习笔记)_第9章 再论数组
1.什么时候数组与指针相同声明本身还可以进一步分成3种情况:1.外部数组的声明;2.数组的定义(定义是声明的一种特殊情况,它分配内存空间,并可能提供一个初始值);3.函数参数的声明;所有作为函数参数的数组名总是可以通过编译器转换为指针。对于编译器而言,一个数组就是一个地址,一个指针就是一个地址的地址。 extern,如extern char a[];不能改写成指针形式 声明 —————————↗→定义,如ch
2020-08-16 00:16:42
190
原创 C专家编程(学习笔记)_第8章 为什么程序员无法分清万圣节和圣诞节
1.Portzebie度量衡系统 关于程序员无法分清万圣节和圣诞节的笑话也依赖于编号系统的内部知识。程序员无法分清万圣节和圣诞节的原因是八进制的31等于十进制的25,也就是说10月30日等于12月25日。2.根据位模式构筑图图形 图标(icon)或者图形(glyph)是一种小型的位模式映射于屏幕产生的图像。一个位代表图像上的一个像素,如果一个位被设置,那么它代表的像素就是“亮”的,如果一个位被清除,那么它所代表的像素就是“暗”的。3.在等待时类型发生变化 ...
2020-08-13 00:06:37
469
原创 C专家编程(学习笔记)_第7章 对内存的思考
1.Intel 80x86系列 4004(4位)—>8008(8位)—>8080(8位)—>8085(8位)—>8086(16位)—>80186(16位)—>80286(32位)—>80386(32位)—>80486(32位)—>Pentium(32位)—>P6 64位?——>......2.Intel 80x86内存模型以及它的工作原理在UNIX中,段就是一块以二进制形式出现的相关内容。在Intel 80x86内存模...
2020-08-10 00:19:01
214
原创 发生Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)问题
问题:在验证某些功能时,启动camera auto DC模式成功,切换其它模式失败基本必现camera error,crash log如下:C015C0D 08-08 16:01:22.447 6408 6600 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xe375435c in tid 6600 (res_init), pid 6408 (provider@2.4-se)C015DB6 0...
2020-08-09 16:25:19
5773
原创 C专家编程(学习笔记)_第6章 运动的诗章:运行时数据结构
编程语言理论的经典对立之一就是代码和数据的区别,有的语言把两者视为一体,其他语言(例如C语言)通常维持两者的区别。代码和数据的区别也可以认为是编译时和运行时的分界线。编译器的绝大部分工作都是跟翻译代码有关;必要的数据存储管理的绝大部分都在运行时进行。 学习运行时系统,主要有3个理由:(1)它有助于优化代码,获得最佳的效率;(2)它有助于理解更高级的材料;(3)当陷入麻烦时,它可以使分析问题更加容易。1.a.out及其传说 a.out -汇编程序和链接编辑输出...
2020-08-07 00:24:15
277
原创 C专家编程(学习笔记)_第5章 对链接的思考
1.函数库、链接和载入 链接器的基础知识:编译器创建一个输出文件,这个文件包含了可重定位的对象,这些对象就是与源程序对应的数据和机器指令。编译器驱动器:预处理器——>语法和语义检查器——>代码生成器——>汇编程序——>优化器——>链接器;驱动器程序。2.动态链接的优点 可执行文件的体积可以非常小,虽然运行速度稍慢一些,但动态链接能够更加有效地利用磁盘空间,而且链接器-编辑阶段的时间也会缩短(因为链接器的有些工作被推迟到载入时)。...
2020-08-02 21:50:38
249
原创 Linux设备驱动开发(学习笔记)_第一章 Linux设备驱动概述及开发环境构建
在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程I/O)口控制。GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器。屏蔽具体 CPU 的差异,假设在 GPIO_REG_CTRL 物理地址中控制寄存器处的第 n 位写入 1 可设置 GPIO 口为输出,在地址 GPIO_REG_DATA 物理地址中数据寄存器的第 n 位写入 1 或 0 可在引脚上产生高或低电平,则在无操作系统的情况下,设备驱动代码如下://无操作系统时的LED驱动#define reg_gpio_c
2020-07-29 22:50:18
190
原创 C语言正整数回文数判断
/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */#include<stdio.h>#include<stdlib.h>int circle(int n, int d){ int s=0,m=n; while(m) { s=s*d+m%d; m/=d; } printf("s=%d\n",s); return s==n;}/* main函数用于测试circle函数 */int num[]={232,27,851};int .
2020-07-26 21:49:40
683
原创 C专家编程(学习笔记)_第4章 令人震惊的事实:数组和指针并不相同
1.数组并非指针 本章将完整地解释数组什么时候等同于指针,什么时候又不等同于指针及原因所在。2.我的代码为什么无法运行文件1:int mango[100];文件2:extern int *mango; 对数组的引用总是可以写成对指针的引用,而且确实存在一种指针和数组定义完全相同的上下文环境。不幸的是,这只是数组的一种极其普通的用法,并非所有情况下都是如此。但是,人们却自然而然地归纳并假定在所有的情况下数组和指针都是等同的,包括上面完全错误的“数组定义等同于指针...
2020-07-19 13:20:30
213
原创 Linux分离线程问题
问题:在打开camera过程中执行调用log_monitor_thread_init过程中创建log_monitor_thread_proc出现问题导致crash.C3AC38A 07-03 08:34:36.482 8924 8924 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------C3AC38B 07-03 08:34:36.482 8924 8924 F DEBUG : Abor.
2020-07-14 22:50:56
761
原创 STL中list的erase()使用注意
转至:https://blog.youkuaiyun.com/jfkidear/article/details/40822291erase()方法是删除iterator指定的节点,但是要注意的是在执行完此函数的时候iterator也被销毁了,这样的话关于iterator的操作就会报错 ,以下是关于erase()方法的正确使用:正确使用方法1 : std::list< int> List;std::list< int>::iterator itList;for( itLi...
2020-07-12 22:59:57
4761
1
OpenGL精粹光盘.zip
2020-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人