自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhaojia的博客

上善若水,厚德载物

  • 博客(17)
  • 资源 (5)
  • 收藏
  • 关注

原创 无锁多线程控制基本模型

介绍了无锁环境下编程的多线程控制模型,采用原子变量控制的无锁环境下每个线程均不会阻塞。常见的模型有 读-修改-写 和 状态机。

2022-10-04 20:54:36 515 1

原创 一个Json解析库的设计和实现

本文依照编译原理基本思想构建了一个Json解析库,包括词法分析、语法分析、树型优化和Json树生成等部分。具有参考意义。

2022-04-05 15:21:46 1129

原创 CRC查表法运算原理

CRC校验是依据多项式模2运算进行的,这里有两点:1. 一个二进制串总可以表示为多项式,例如:10101 表示为10111 表示为,依次类推更长数据的表示方法。2. 模2运算的基本规则如下:加法:0+0=0 1+0=1 0+1=1 1+1=0 不进位减法:0-0=0 0-1=1 1-0=1 1-1=0 不借位模2加减运算与二进制异或运算相同乘法:依据多项式模2加法算得除法:依据多项式模2减法算得多项式模2运算满足分配律和结合律:已知多项式 则...

2021-05-16 14:38:39 10695 8

原创 C++模板推断函数类型

借助模板特例化和偏特化可以完成函数返回类型、输入参数类型的推断。我们直接步入主题: 首先预热编译器对偏特化的类型匹配。C++模板库中,std::is_same可判断两个类型是否相同,这里我们可以借助偏特化自己实现一个is_same模板:template<typename T,typename U>class is_same{public: static constexpr bool value = false;};template<typenam...

2020-09-20 22:21:57 1286

原创 解析kernel 2.6.24使用NMI中断对Hard lock的处理

本文针对x86架构linux kernel检测hard lock的方法进行了分析。基于kernel2.6.24源码解析了从NMI中断触发到oops发生的处理流程。其使用时钟计数器判断是否发生hard lock。

2020-03-08 14:55:23 1626 1

原创 Linux kernel打印栈信息方法

在kernel代码的任意位置直接调用dump_stack方法即可。dump_stack已经包含在内核符号表中,并在include/linux/kernel.h中被声明。获取栈信息的原理是使用ebp逐层回溯。dump_stack函数在arch/x86/kernel/traps_32.c中定义(kernel 2.6.24)如下:/* * The architecture-inde...

2019-10-20 22:03:00 3524

原创 搭建Linux kernel调试环境-busybox构建最小根文件系统

调试Linux kernel时经常使用printk将信息打印到内核消息ring buffer中,为了方便查看内核相关Log,并减少不必要的干扰,有必要构建一个小型根文件系统,在该系统内进行模块加载、Log查看、状态监控等kernel调试。busybox是一个功能完备的Linux命令行工具集,又可作为init进程配置文件系统,在嵌入式系统中应用广泛。本文记录了使用busybox构建简易...

2019-09-11 01:46:12 2165

原创 使用VS Code调试Android C++代码

本文可以转载,请注明来源:https://blog.csdn.net/zhaojia92Android系统源码自带调试脚本gdbclient.py可调试HAL层和Native程序,该工具免除了手动配置gdb的麻烦。gdbclient.py底层调用adb与手机建立连接,调用linux gdb远程连接手机端的gdbserver进行调试;由于是在字符界面调试,有时会对查看和阅读上下文代码造成不便,a...

2019-08-20 00:29:20 12627 6

原创 Android HAL层/native C程序打印栈信息方法

在调试Android系统底层函数时,经常需要跟踪函数调用流程,特别在HAL层需要确定参数来源时。使用栈信息逆向跟踪可快速分析函数调用流程,结合使用addr2line工具、绘图工具可绘制函数关系图。本文记录在Android S 上打印C/C++函数栈信息的方法,并给出了CallStack使用建议,以作参考。

2019-08-01 00:50:09 6766 4

原创 Visual Studio Code安装和配置V2

随着VS Code功能不断完善,现今版本相比两年前易用性极大提升。之前写的一篇《Visual Studio Code安装和配置》已经过时。本文使用VS Code 1.35.0介绍基本使用方法。 基本环境:VS Code 1.35.0 编译器:MinGW_w64 (GCC8.1.0)一、配置插件 在Windows下安装VS Code比较简单,s...

2019-06-07 16:16:24 5063 1

原创 Linux kernel调试方法--使用qemu+eclipse

此文章为原创,可以转载,请注明来源:https://blog.csdn.net/zhaojia92 kernel是一个庞大的C工程,传统使用gdb+qemu工具调试,但gdb太过简陋,查看源码不方便。本着效率优先的原则,选择eclipse作为kernel的开发环境,可以更方便修改调试kernel代码。下面给出eclipse+qemu调试kernel代码的方法。一....

2019-02-17 16:33:26 2017

原创 CentOS7搭建ftp服务器实现匿名上传下载

   CentOS7内搭建ftp服务器使用系统自带vsftpd服务。首先查看是否安装了vsftpd组件:      vsftpd服务已经安装,其相关配置文件位于/etc/vsftpd目录下,其主要配置文件是vsftpd.conf。vsftpd.conf文件默认支持匿名登陆,默认登陆文件夹为/var/ftp/pub。修改vsftpd.conf可更改登陆方式。将vsftpd.conf修改为如下标红内容...

2018-03-10 22:16:16 16620 7

原创 补码和相关性质

本文介绍了计算机补码的定义、补码的性质和补码与其他编码的转换关系。

2017-05-07 21:35:33 3485

原创 Visual Studio Code安装和配置

Visual Studio Code编辑器在Windows上安装比较简单,直接setup.exe。安装好后首次启动配置插件,插件配置必须联网,从网上下载。如下图点击左侧扩展:首次安装会推荐一些常用插件。如果没有显示推荐的插件,点击左侧右上角的三个点按钮,会弹出列表,根据相应类别显示插件。想要安装插件,直接点击插进右侧的安装。VS Code自动下载并安装。安装位置在Windo

2016-12-24 21:55:41 82744 6

原创 STL源码剖析中rotate算法的说明

在《STL源码剖析》中,对于rotate算法没有很好地解释,__rotate_cycle是如何发挥作用的,其中很值得研究。SGI STL的rotate函数是将一个序列[first,last)的前半部分[first,middle)和后半部分[middle,last)进行调换。整个算法分为3种不同实现。对于书中所说的最后一种算法,本质就是序列的循环移位。

2016-12-24 20:24:44 894

原创 C++中函数传递数组的探索

一、传入数组             一个C函数可以把数组作为形参,在C++具体表现形式有三种:void func(int para[]);void func(int para[20]);void func(int *para);这三种形式虽然表现不同,在C++中都看成相同的,等价于void func(int *para)。在传递实参时,数组名被隐式转换成指向数组第一个元素的指

2016-03-04 21:44:12 3614

原创 内存中读取bmp图片转换为IplImage格式

bmp转换为IplImage格式较为简单,易于实现,不需要压缩算法。对于从内存中读取bmp文件,只要处理好文件头和信息头,就能够正确转换,代码量小。本文实现了从内存中读取bmp图片转换为IplImage格式的过程。经测试效果良好。

2016-01-09 19:14:06 3011 1

多核编程实战

比较全面的介绍多线程编程和多核CPU下编程技巧,包括多核CPU的硬件介绍、高性能编码、程序的并行设计和注意事项、Windows多线程编程、OpenMP编程等。Darryl Gove著的书籍

2016-01-07

C++代码设计与重用

本书名称为《C++代码设计与重用》,作者为Martin D.Carroll和Margaret A.Ellis;陈伟柱译。中文译版,为2012年人民邮电出版社出版的新版。全书分为12章。介绍C++编程的代码编写规范和易用性设计。比较实用。

2015-09-03

BCD启动编辑器

基于Autoit3语言编写,是Bcdedit的GUI解释器,该软件支持32位和64位Windows系统,纯绿色不需要NET框架,无需安装。软件自动识别32位和64位系统启动相应版本。最多可编辑25个系统启动项。

2015-02-21

C#入门经典_第五版

清华大学出版社出版,Karli Watson Christian Nagel等著,齐立波翻译。学习C#的入门教材。

2014-11-13

空空如也

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

TA关注的人

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