- 博客(68)
- 资源 (6)
- 问答 (4)
- 收藏
- 关注
原创 Scons简介
1、前言提到Scons就不得不提一下make,因为两者都是做项目管理常用的编译工具。make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以节省大量的重复输入,还可以确保程序可以被正确的链
2022-01-02 20:14:29 2501
原创 【算法题解析】给定一个整形数组,存在两个不同的数只出现一次,其他数都出现两次,如何找到这两个数?
给定一个整形数组中,存在两个不同的数只出现一次,其他数都出现两次,如何找到这两个数。
2021-12-02 21:29:18 483
原创 【学点心理学】16个终身受用的思维
1、蓝斯登原则在你往上爬的时候,一定要保证梯子的整洁,否则当你下来的时候,可能会摔倒。(1)提出者:美国管理学家蓝斯登。(2)感悟:进退有度,才不至于进退维谷;宠辱皆忘,才能宠辱不惊。2、卢维斯定理谦虚不是把自己想的很糟,而是完全不想自己。(1)提出者:美国心理学家h.卢维斯(2)感悟:越是把自己想的过于完美,就越容易把别人想的很糟糕。3、托利得定理:测验一个人的智力是否属于上乘,只看脑子里能否同时容纳两种相反的思想而无碍于其处世行事。(1)提出者:法国
2021-09-21 20:26:17 235
原创 [C/C++语言]全局变量、局部变量、静态全局变量和静态局部变量运行时内存分配方式研究
0、前言在分析一个程序的堆栈、bss段、text段、RO、RW、ZI等概念时,首先区分一下程序进程和程序文件,同时区分一下哈佛结构和冯诺依曼结构。程序进程就是程序运行时的程序,程序文件是编译后生成的可执行文件,比如.bin文件等。哈佛结构和冯诺依曼结构的主要区别就是处理器能不能实现取指令和取数据的并发进行。嵌入式芯片中主要是哈佛结构,PC机上是冯诺依曼结构。(1)经典的哈佛结构:程序存储器和数据存储器是各自独立的存储器。处理器应该有两套总线,一套是程序存储器的数据和地址总线,一套是数据存.
2021-09-15 23:32:03 2757
原创 漫谈CPU缓存与主存
1、概述每一个现代处理器(CPU)都配置高速缓存(Cache)。目前CPU高速缓存级别主要分为L1/L2/L3三个级别;三个级别的高速缓存,缓存大小逐级增加同时访问速度逐次降低。高速缓存存在的主要原因是解决CPU寄存器与主存在处理速度上不匹配问题,从而极大提高CPU使用效率。2、缓存和主存之间的区别通常情况下,高速缓存均是依托于静态随机访问存储器(SRAM),而主存一般是依托于动态随机访问存储器(DRAM),即两个依赖的硬件不同。那么SRAM和DRAM又有何不同呢?(1)SRAM的访问速度要
2021-09-14 17:40:07 4203
原创 Linux下以普通用户执行sudo命令时提示“xxxx is not in the sudoers file. This incident will be reported.”问题
1、问题描述Linux下以普通用户zhangsan执行sudo命令时提示“zhangsanis not in the sudoers file. This incident will be reported.”。2、问题原因该用户zhangsan没有在 /etc/sudoers file里面.3、问题解决方法(1)切换到root用户,否则没有访问/etc/sudoers 文件的权限su root(2)修改/etc/sudoers文件访问权限chmod 777 /et...
2021-08-28 16:11:53 1501 2
原创 【追风筝的人】ADB常用命令使用总结
0、修改计算云的写权限命令chown -R 用户管理组:用户/mnt/disk/honor_zh,例如:chown -R zhanghui:zhanghui /mnt/disk/honor_zh1、adb shell(1)进入到shell,可以进行设备信息管理、查看等操作(2)有些命令的执行需要root权限,所以如果执行失败请确认设备是否执行了root操作 # - -root $ -- 普通用户2、adb remount将设备修改为可读可写提示remount成功...
2021-07-17 18:37:50 1132
原创 So We‘ll Go No More A-Roving
So We’ll Go No More A-Roving–George Gordon, Lord ByronSo we’ll go no more a-rovingSo late into the night,Though the heart still be as loving, And the moon still be as bright.For the sword outwears its sheath,And the soul outwears the breast,And the
2021-06-27 16:33:44 177
原创 【linux命令学习-001】 grep命令解析
1、简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是
2021-06-23 22:58:25 562
原创 关于linux内核中jiffies和jiffies_64解析
1、前言linux内核中定义了jiffies变量来记录从系统启动到当前时刻系统时钟所产生的tick数。jiffies变量是一个无符号整型数值,即unsigned long类型。 它的声明如下(在 include/linux/jiffies.h 中): 假定HZ=1000,那么jiffies只需要约49.7天就会产生回绕(溢出),这是因为jiffies本身是unsigned long 类型,因此在32位系统中支持的最大值为(2^32)-1=4294967295,又因为HZ是100...
2021-06-22 22:37:17 2865 1
原创 Linux内核驱动 --ioctl函数解析
1、前言当我们在讨论linux内核驱动开发时,就不得不提到ioctl这个及其重要的函数。它是设备驱动程序中实现对设备控制的接口之一。当我们在用户空间中使用ioctl函数时,
2021-06-19 12:12:43 6832 1
原创 001_Linux内核驱动之杂项设备(miscellaneous device)的misc.c源码解析
0、写在开头 在Linux系统中,存在一类字符设备,他们共享一个主设备号(10),但次设备号不同,我们称这类设备为杂项设备(miscdeivce)。 查看/proc/device中可以看到一个名为misc的主设备号为10.所有的杂项设备形成一个链表,对设备访问时内核根据次设备号找到对应的miscdevice设备。(1)linux 内核使用struct miscdeivcemiao描述一个杂项设备: a)linux源码中位置:/kernel-4.14/include/linux/mi...
2021-06-09 21:29:19 1521
原创 【问题解决】计算云执行reboot操作后无法正常访问,但是可以正常ping通问题分析及解决
1、问题描述计算云上执行reboot操作后,无法正常访问;但是可以正常ping通。2、问题分析首先计算云的访问使用的是22端口,ping命令使用的是ICMP协议,默认访问的是80端口或21端口。在执行reboot操作前,本人执行了关闭防火墙以及重新打开防火墙的操作。由于关闭防火墙,再开启防火墙导致22端口不允许访问了,所以导致此问题的出现。3、解决思路找计算云配置的相关人(要有权限),通过VNC访问云服务器将对应的防火墙关闭或者设置防火墙允许访问22端口即可。4、参考连接ht
2021-05-07 21:59:18 1898
原创 【问题解决】解决Linux下“Can‘t locate XML/LibXML.pm,you may need to install the XML::LibXML module”问题的一个思路
1、【问题描述】Can't locate XML/LibXML.pm in @INC (you may need to install the XML::LibXML module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /
2021-05-07 20:27:10 5015
原创 C语言字节对齐与GNU __attribute__、__align()__选项使用说明
1、什么是字节对齐?对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好等于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个int 型变量iNum的地址为0x00000004或0x00000008,那它就是自然对齐的;但是如果iNum的地址为0x0000 0006或0x0000 00009(假定从0x0000 0000 ---0x0000 0005内存存放的是其他数据),那么就不是自然对齐。2、字节对齐的优缺点优点:需要字节对齐的根本原因在于CPU访问数据的效率问.
2021-04-29 11:35:53 2587
原创 Visual Studio Code 配置C/C++编译环境流程及问题解决(Win10环境)
1、Visual Studio Code简介VS Code实际上一个功能强大的文本编辑器,在借助安装插件的基础上亦可实现编译功能。支持Windows,OS X和Linux,内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来支持C++、C#、Python、PHP等其他语言。VS Code官方网站:https://code.visualstudio.com/docs/cpp/config-mingw#_prerequisites2、V
2021-04-23 14:40:41 5480 1
原创 【算法题解析】给定一个非空数组,除某一个元素出现一次外,其他元素出现两次,找出这个只出现一次的元素并返回
1、算法描述给定一个非空数组,除某一个元素出现一次外,其他元素出现两次,找出这个只出现一次的元素并返回。例如给定[2,2,3,3,4,4,5],则返回值为5;例如给定[4,4,5,5,-1],则返回值为-1;例如给定[4,4,5,5,0],则返回值为0;题解要求:算法具有线性复杂度,并且不适用额外存储空间。2、算法解析通过分析题目可知,其他元素都是出现两次,那么针对这出现两次的元素做什么操作可以实现将此元素从数组中剔除的操作呢?答案就是使用我们的按位操作符中的异或(^),即相同b
2021-03-30 10:29:57 748
原创 【学点心理学】八本值得反复阅读的心理类书籍推荐
阅读改变人生!^_^1、《荣格自传:回忆·梦·思考》作者:卡尔·古斯塔夫·荣格作者介绍:瑞士心理学家。1907年开始与弗洛伊德合作,发展及推广精神分析学说长达6年之久,之后与弗洛伊德理念不和,分道扬镳,创立了荣格人格分析心理学理论,出“情结“的概念,把人格分为内倾和外倾两种,主张把人格分为意识、个人无意识和集体无意识三层。经典美文:三十年后,我又站到了那道斜坡上。这时,我已结了婚,有了孩子和自己的房子,有了地位,也有了一个一种充满各种思想和计划的头脑。但突然,我又变成了那个曾经的.
2021-01-10 17:29:27 782 2
原创 【linux设备驱动程序--001】第一篇:设备驱动程序简介
【声明】本文内容为学习《LINUX设备驱动程序》一书的笔记,在书籍内容基础上加入了个人学习的理解与总结,以便后续复习回顾。Linux内核代码由大量复杂的代码结构组成,通常Linux设备驱动程序是进入Linux内核世界的大门。设备驱动程序在Linux内核中扮演着特殊的角色,它们是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备工作的细节。Linux系统自开发到现在,已经存在许多良好可用的设备驱动模块,那么是什么原因导致许多人对Linux驱动开发感兴趣..
2021-01-10 13:07:25 525
原创 字符串中找出连续最长的数字串,返回找到的字符串和长度
题目描述:请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!样例输入abcd12345ed125ss123058789abcd12345ss54761样例输出输出123058789,函数返回值9输出54761,函数返回值5 接口说明函数原型: .
2020-12-27 20:41:18 1445
原创 【Linux学习】shell ls命令尝试代码实现
本文旨在通过不同预言实现linux shell下的ls命令功能。1、python 源码实现import osdef ls(path): 'ls funciton' for root,dirs,files in os.walk(path): for dir_name in dirs: print os.path.join(root,dir_name) for file_name in files: pr
2020-10-22 11:44:03 564
原创 【linux+gcov+lcov】linux下借助gcov和lcov工具实现单元测试覆盖率统计练习
1、gcovLinux下代码覆盖率工具,属于gcc工具集之一,随gcc一起发布,不需要独立安装。使用gcov -v 可以查看gcov的版本信息,如下:2、lcovlcov是gcov的图形化工具,可生成html格式的代码覆盖率报告,提高覆盖率检测结果的可读性。lcov需要自己下载的开源软件,下载地址如下:https://sourceforge.net/projects/ltp/files/Coverage%20Analysis/3、lcov的手动安装(1)进入到.tar.g
2020-10-15 19:23:06 4301
原创 Intel Optane(tm) Memory Pinning ,无法加载 DLL ´iaStorAfsServiceApi.dll´ : 找不到指定的模块。
1、使用 Win10 的用户可能会遇到这个问题,右下角经常弹出提示,标题为 Intel Optane™ Memory Pinning ,内容是——无法加载 DLL ´iaStorAfsServiceApi.dll´ : 找不到指定的模块。 ( 异常来自 HRESULT : 0x8007007E)。2、这个问题是英特尔快速存储技术(IRST)驱动,或着 Optane Pinning Explorer Extensions 出现故障导致。3、方案一:卸载傲腾扩展(1)右键点击开始菜单,打开【应用和功能
2020-10-15 07:04:18 2697
原创 【C语言】一些常用标准库函数的介绍
1、snprintf()函数(1)函数描述C 库函数int snprintf(char *str, size_t size, const char *format, ...)设将可变参数(...)按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。(2)函数声明int snprintf ( char * str, size_t size, const char * format, ... );其中,str-..
2020-10-13 16:07:59 932
原创 pyinstaller打包时遇到的“no module named ****”问题的解决方法
pyinstaller打包时遇到的问题的解决方法问题描述问题原因常用命令问题描述使用pyinstaller打包时,提示“no module named ***”,缺少相应的依赖库,导致无法正常打包或及时打包OK,但是运行时也会出现问题。问题原因1、原因1我们安装的python环境上的确缺少这个依赖的第三方库,此时要解决这个问题就必须从python官网上下载对应的库,然后再使用pyinstaller进行打包。2、原因2我们使用的python环境本身已经安装了所依赖的第三方库,此时打包时还提示有
2020-09-08 14:23:19 27470 5
原创 经典学习网站汇总(持续更新)
1、NO1:studytonight网站链接:https://www.studytonight.com/operating-system/evolution-of-os网站界面:2、NO2:
2020-08-27 10:24:11 1727
原创 【数据库】关系数据库与非关系数据库的优缺点汇总
1、关系数据库1.1、什么是关系数据库?关系型数据库是依据关系模型来创建的数据库。 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 关系型数据可以很好地存储一些关系模型的数据,比如学校老师和学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)。 关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库。 关系模型包括数据结构(数据存储的
2020-08-12 17:19:59 4421
原创 【架构知多少】谈谈X86架构与ARM架构区别
1、X86架构与ARM架构的区别(1)本质区别:X86使用CISC(Complex Instruction Set Computer,复杂指令集计算机),ARM使用RISC(Reduced Instruction Set Computer,精简指令集计算机),ARM英文全称Advanced RISC Machine。(2)各自追求:X86追求性能最优,缺点是功耗大,不节能(和ARM对比);ARM追求低功耗(节能),缺点是采用精简指令集,导致编译器处理复杂,因此性能相对X86差。(3)应用领域:X
2020-08-09 11:11:00 60079 4
原创 【算法题解析】给定一个32bit的整数n,统计其对应的二进制数中1的个数。
1、第一种思路:对于整数n需要考虑其是是否大于0或小于0的两种情况(当然如果是0,直接返回0就好了,可以不做特殊处理)。(1)对于大于0的正数,只需要利用整数与数字1做与运算判断值是否为1,如果是则计数加1即可。然后针对整数做一次右移操作即可。循环退出的条件是整数n是否为0,如果是则退出。(2)对于小于0的负数,如果仍采用上述方式,则会进入死循环(因为负数右移时最高位补1,这样n永远不可能为0)。所以针对负整数,我们可以先将其符号为的1修改为0,这样就可以按照正整数的处理方式继续处理。此处需要特
2020-08-08 17:35:26 1134
原创 【算法题解析---字符串反序】给定一个由单词组成的字符串,输出字符串的反序
题目1:给定一个由单词组成的字符串,输出字符串的反序。如:input:"i am a student",output:"tneduts a ma i"string str_reverse(string strSrc){ string str=strSrc; reverse(str.begin(),str.end()); return str;}题目2:给定一个由单词组成的字符串,输出字符串中单词的反序,并保证原字符串中其他内容不变。如:input:"i am a student"
2020-08-08 17:33:14 648
原创 关于“#define REG_MEM_BASE (*(volatile unsigend long *)(PA_BAES + 0x00000050))”语句的解析
对于嵌入式开发中经常遇到类似上述文件的定义,尤其在内存映射部分;为方便今后理解特举一个例子进行分析:#define REG_MEM_BASE (*(volatile unsigend long *)(PA_BAES + 0x00000050))(1)PA_BASE是一个宏定义 #define PA_BASE 0x40000000 ----一般定义一个内存映射之后某一区域(如IO...
2020-03-26 21:01:08 427
原创 致敬全球第一CEO杰克·韦尔奇,重温其卸任演讲
1、关于本文这不是科技相关的文章,但文章价值不输于任何一扁技术相关的文章。本文是通用电气公司前首席执行官杰克·韦尔奇卸任的演讲全文,每次阅读都对我感触很深,特记录下来,以备后续学习。2、以下是演讲内容昨晚,看着杰夫接管了公司,这是我一生中最为激动的时刻之一。杰夫的父亲为通用电气工作了38年,你们可以想到他会多自豪。我在和杰夫的父亲打赌,看谁更为杰夫的继任而高兴,这真的是件令人激动的事。大家...
2020-03-03 22:37:57 397
原创 linux下GDB使用简单教程
1、什么是GDB?GDB 是 GNU 开源组织发布的一个强大的 UNIX 下调试程序工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX 下的软件全是命令行的,这给程序开发提供了极大的便利,命令行软件的优势在于,他们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。2、GDB主要功能是什么?(1)启动你的程序,可以按照你自定义的...
2020-02-18 16:53:09 1220
原创 敏捷开发修炼之道之高效程序员开发的10个习惯
0、注明本文内容摘选自《高效程序员的10个习惯(中文精选版)Practice agile developer-InfoQ》,文档内容稍加整理与总结而成。1、作者Venkat Subramania 等2、节选《高效程序员的45个习惯敏捷开发修炼之道》3、软件开发之内功修炼口诀迭代开发,价值优先;分解任务,真实进度;站立会议,交流畅通;用户参与,调整方...
2020-02-17 19:18:48 367
原创 Windows下SecureCRT无法正常启动问题
1、SecureCRT使用过程中出现异常后自动关闭,导致下次无法正常启动(运行程序无反应),此时一种可能的原因是由于SecureCRT异常关闭,所以异常关闭会在C:\Documents and Settings\Administrator\Application Data\SecureCRT.dmp,此文件会提交错误信息给VanDyke。2、此问题的解决方法:(1)cmd --->r...
2019-10-02 11:13:28 18285 4
原创 Cortex M33处理器下移植FreeRTOS V10.2.0的操作记录
1、前言本文记录了本人使用Keil V5.28向Cortex M33处理器下的一款MCU进行FreeRTOS V10.2.0的移植操作,过程中描述如存在不当或错误之处欢迎指正。2、FreeRTOS V10.2.0简介2.1、关于FreeRTOS 的详细介绍建议直接去官网查看,在这里就不再翻译。官网链接如下:https://www.freertos.org/2.2、本文简单描述一...
2019-09-24 19:51:53 3386 1
原创 编译告警之warning: function **** could be declared with attribute 'norereturn'及_attribute__((noreturn))属性
1、使用MDK编写程序时,在有些函数没有返回值或者函数返回语句得不到执行的时候,编译器会提示将此函数声明为noreturn属性,否则会报如下warning :main.c(11): warning: function 'vTaskCode' could be declared with attribute 'noreturn' [-Wmissing-noreturn]2、此warning...
2019-09-24 09:36:58 8783
原创 单核CPU与多核CPU的区别
1、单核CPU1.1 工作原理工作原理:单核CPU较为死脑,在通电时该CPU就会执行存储块中的指定地址的指令,如果你想要执行内存块其他地方的代码必须调整总线位置才可以让其执行。单核CPU就相当于阻塞程序,在工作期间只能执行某一个程序!每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。假如在这样的架构上,我们要跑一个多线程的程序,不考虑超线...
2019-09-03 21:00:17 25846
FreeRTOSV10.2.1.7z
2019-09-24
三个人各存有一个随机数,如何在数据不泄漏的情况下计算三个随机数的平均数
2020-08-16
对于常用的MCU来讲,运行过程中会出现RAM中的数据异常丢失的情况吗?
2020-07-20
如何在C#中调用MATLAB中的内置函数?
2016-12-19
校招面试遇到的非技术问题,求大神指点
2016-06-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人