- 博客(38)
- 资源 (6)
- 收藏
- 关注
原创 Ctags, Cscope and Vim
Ctags and expecially Cscope in combination with Vim can really boost productivity when working with home-grown and foreign source-trees.Both tools basically generate references out of source-files, which can be used to locate and cross-reference source-sy
2022-05-15 22:06:06
358
原创 并查集模板
int UFFind(int *ufRoot, int a){ if (ufRoot[a] < 0) { return a; } ufRoot[a] = UFFind(ufRoot, ufRoot[a]); // 路径压缩 return ufRoot[a];}void UFUnion(int *ufRoot, int a, int b) { int rtA = UFFind(ufRoot, a); int rtB = UFFind
2021-07-18 23:15:11
185
原创 【Linux】/proc/sysrq-trigger使用说明
立即关闭计算机echo “o” > /proc/sysrq-trigger导出内存分配的信息 (可以用/var/log/message 查看)echo “m” > /proc/sysrq-trigger导出当前CPU寄存器信息和标志位的信息echo “p” > /proc/sysrq-trigger导出线程状态信息echo “t” > /proc/sysrq-trigger故意让系统崩溃echo “c” > /proc/sysrq-trigger立即重新挂载
2021-05-20 20:01:11
676
原创 【LeetCode】【C】321. 拼接最大数时--隔两个月两次刷的代码
前言LeetCode做题的数量多不如质量高,在基本算法都掌握的基础上,关键是能够掌握寻找答案的思路以及以及一些细节上的技巧性处理。通过两次刷这道题,最后对比代码可以发现,在方向对的前提下,两次的编码细节是不同的,有些地方用了不同的处理思想,第一次解答这个题是看了答案之后做的,有些地方潜移默化用了答案里的技巧,当时没有察觉,当自己再次刷题时,有可能会出现一些自己的土方法,通过对比,才能将更好的方法吸收。话不多说,上代码第一次(查看答案后的编码)static inline int MAX(int x,
2021-04-05 21:14:12
139
原创 【C】对快速排序与归并排序的一些感悟
深入理解快速排序与归并排序学过算法与数据结构的人都知道,几乎所有教程都会讲排序,然而实际编程中并不会真正的手写排序算法,慢慢的大家是否会产生疑问,是不是只要了解各种排序算法的特点就好,不必过分执着于代码,然而最近,我对此有了更深刻的认识。各种排序算法,实际深层次代表了不同的编程思想,并且好的实现方式,还运用了一些有用的编程技巧,这才是实际学习过程中真正需要掌握的东西,比如二分、递归等等。细细把玩之后,会产生一种看山是山 看山不是山 看山还是山的感觉。首先,对于各种排序算法,网上有非常多的教程,在此我
2021-02-01 19:09:20
323
原创 【C】LeetCode中堆的使用
将数组调整成最大堆【数组中的第K个最大元素】void MaxHeapModify(int *heap, int heapSize, int curPos){ int left = curPos * 2 + 1; int right = curPos * 2 + 2; int tmpNodeVal = heap[curPos]; int aimPos = curPos; if (left < heapSize && heap[left] &g
2020-12-13 22:40:05
156
原创 【C】二叉树打印
对于LeetCode练习时,有时需要直观的将树打印,提供如下demo供参考#include "stdio.h"#include "string.h"struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;};int *ArrIn(int *pArrSize);struct TreeNode *TreeIn(int *arr, int arrSize, int curIndex);
2020-12-13 16:25:55
1213
原创 Linux C线程编程与二级指针做函数参数
二级指针做函数入参,则函数内部可以修改指针,即修改指针的指向(指针本身的值),本文结合简单的线程编程进行实际说明#include <pthread.h>#include <stdio.h>typedef struct tagExSt { int a; int b; int c;} ExSt;void ThreadFunc(void *a...
2020-04-26 23:37:08
249
原创 【C】int main(int argc, char *argv[])中argc与argv的含义
argc : main执行时参数的数量,默认为1argv : main执行时输入的每个字符串,第一个默认为程序的路径可以做下面一个例子很直观的感受下 1 #include "stdio.h" 2 int main(int argc, char *argv[]) 3 { 4 printf("%d \r\n",argc); 5 for (int i = ...
2020-02-24 21:58:43
605
原创 【LeetCode】98. 验证二叉搜索树
思路这道题乍一看,觉得挺简单,但是有一个点比较容易忽略,例如下面这个用例 5 / \ 1 4 / \ 3 6对于3这个节点,虽然满足小于4,但是作为5的右子树,其所有子节点都应该大于5,因此这棵树不是二叉搜索树。很自然想到采用递归的方式通过记录上下限的方式,保证子树上所有节点满足要求,递归至右子树时,更新下限,递归至左子树时更新上限。最...
2020-02-23 21:00:08
125
原创 【LeetCode】179. 最大数
思路这道题的关键是设计比较函数,利用qsort进行排序,排序之后进行输出。有几个比较坑的特殊情况需要特别处理1、输入比较的参数为02、返回的字符串为“00000……”比较函数的思路:可以直接按照题意,比较连接之后ab大还是ba大。代码#include <string.h>#include <stdlib.h> // for malloc(), free()...
2020-02-23 11:21:06
201
原创 【LeetCode】165. 比较版本号
思路根据字符".“将输入的字符串分割开,然后动态进行比较,一旦不相等则返回分割的函数可以自己写,也可以利用库函数strtok如果利用库函数,需要一次性分割完成,因此需要预先定义一个数组,将分割好的数存起来,最后进行比较如果自己写分割的函数,可以利用两个指针记录”."之间的字符串,之后进行比较。代码#include <string.h>#include <stdlib...
2020-02-22 17:57:27
131
原创 【LeetCode】5.最长的回文子串
暴力解法思路1、做一个子函数,用于检测输入的字符串是否是回文串2、使用双指针,头指针从字符串开始处遍历,尾指针每次均从结尾处开始,检查头尾指针之间的字符串是否是回文串,若是,且长度大于之前的长度,则更新,否则进行下次检查,注意,大循环的结束条件可以随着找到回文子串的长度而更新。代码#include <stdio.h>#include <string.h>#in...
2020-02-16 15:37:39
113
原创 【LeetCode】94. 二叉树的中序遍历
题目描述给定一个二叉树,返回它的中序 遍历。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal解题思路树的遍历有两种方法,一种是递归,一种是循环,递归的方法比较简单,而循环必然要用到堆栈,对于先序遍历和中序遍历,在处理根节点时,由于要先后访问左右子树,因此访问左子树时,要暂时将根...
2020-02-06 14:52:48
166
原创 Linux程序开发三剑客-1-gcc编译
gcc编译流程gcc编译选项分析gcc支持编译的文件后缀及解释后缀文件类型.cC 源程序;预处理,编译,汇编.CC++源程序;预处理,编译,汇编.ccC++源程序;预处理,编译,汇编.cxxC++源程序;预处理,编译,汇编.mObjective-C 源程序;预处理,编译,汇编.i预处理后的 C 文件;编译,汇编.ii预处理...
2020-02-06 09:36:02
273
原创 Linux程序开发三剑客-3-makefile编写
目录0 前言1 必备知识点1.1 程序的存储与运行1.2 程序的编译和链接1.3 程序文件的分类1.4 动态库和静态库0 前言**学会使用Makefile是Linux下开发大型程序必不可少的技能之一,本文记录了我学习Makefile的一些知识点与心得,希望能对大家有用 **1 必备知识点在学习Makefile之前,对下面这些知识点的学习与了解是必不可少的。1.1 程序的存储与运行对此,...
2020-02-06 09:35:06
263
原创 vim代码补全工具YouCompleteMe的安装与配置
目录0 前言1 安装方式1.1 使用vundle1.2 手动安装1.32 配置0 前言YouCompleteMe是一款非常强大的vim代码自动补全插件,使用简单方便,可以通过YouCompleteMe项目主页的这幅动图感受下它的强大。下面介绍如何安装与配置。1 安装方式1.1 使用vundle官方推荐使用 Vundle 来安装 YCM,具体Vundle的安装与配置,可以参考:vim插件...
2020-02-05 15:36:02
10959
原创 vim插件管理工具vundle安装与配置
目录1 下载vundle2 配置3 安装插件4 关于代码补全1 下载vundle默认下载到~/.vim/bundle/vundle目录下git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle2 配置在.vimrc 中添加bundle的配置注意,.vimrc是自己在home目录下创建,可以在里面对vim进行...
2020-02-04 18:58:58
3238
1
原创 【C】二叉树遍历的递归与非递归写法
二叉树遍历的递归与非递归写法_C语言前言中序遍历的非递归写法后序遍历的非递归写法完整代码前言二叉树的三种遍历的递归写法,只要理解思想,几行代码就可以完成。可是非递归写法却很不容易。这里特地总结下,透彻解析它们的非递归写法。其中,中序遍历的非递归写法最简单,后序遍历最难。中序遍历的非递归写法非递归算法,必然要用到栈(可参考完整代码中栈的实现)。这里着重讲下中序遍历的写法。void Inor...
2020-02-02 23:08:43
317
原创 Linux程序开发三剑客-2-GDB调试
目录前言命令速查info命令设置观察点(Watchpoint)断点(Breakpoint)使用调试器打补丁(commands)查看栈信息单步调试查看运行时数据多线程环境其他调试技巧使用调试器打补丁前言在Linux平台下开发程序,不能使用window平台下的集成开发环境,这时候要对程序进行调试,通常使用打印+gdb调试的方法,实际上,集成开发环境里面的功能也是基于gdb调试指令进行的,只不过做成...
2020-01-31 22:26:57
198
原创 ZYNQ TTC使用方法
目录前言平台FeaturesBlock Diagram直接上应用代码前言计时器是嵌入式编程中最常使用的模块了,本文介绍下ZYNQ中定时器的使用,大部分内容参照官方手册ug1085平台Vivado 2017.4Windows 10ZCU102开发板FeaturesBlock Diagram直接上应用代码...
2019-12-12 10:16:46
4657
转载 ARM及系列处理器的分类介绍
目录1 ARM2 对比介绍3 关于Cortex-M系列3.1 Cortex-M系列3.2 Cortex-R系列3.3 Cortex-A 系列4 总结4.1 应用场景1 ARM ARM即以英国ARM(Advanced RISC Machines),ARM公司只对外提供ARM内核,各大厂商在授权付费使用ARM内核的基础上研发生产各自的芯片,形成了嵌入式和移动端ARM CPU的大家庭,提供这些内核芯...
2019-10-31 17:08:10
8897
原创 Vivado SDK 开发中遇到的问题与解决方法总结
目录问题描述解决方案问题描述Vivado 2017.4Windows 10ZCU102开发板向工程中拷贝新的.c文件之后进行编译,sdk 会报错,提示如下Vivado SDK make: *** 没有规则可以创建“ .elf”需要的目标“ .o”。 停止。解决方案将工程目录下的Debug 文件夹删除后重新编译!...
2019-10-25 14:41:33
15820
1
原创 ZCU102板上PS端的E2PROM读写(XIICPS)
目录0 前言1 平台1.1开发板资源说明1.2 如何使用TCA9548A1.3如何使用EEPROM M24C082 主程序2.1器件初始化2.2 主要代码0 前言之前介绍了AXI_IIC的使用,这次为了直接使用ZCU102板上PS端的E2PROM,重新介绍下XIICPS的使用。附上AXI_IIC的使用教程链接:https://blog.csdn.net/u013098336/article/...
2019-10-17 18:40:11
1711
原创 嵌入式Linux环境搭建及工具介绍
目录前言平台工具源码查看工具远程登录控制台串口SSH文件传输解决不能ping通问题解决虚拟机不能连接问题 未安装SSH服务权限问题Windows 与 Linux下程序开发比较Makefile 规则嵌入式Linux系统组成构造嵌入式Linux系统UBoot内核根文件系统NFSYAFFS前言一边学习一边记录,便于自己查看,同时也为大家分享经验。感兴趣的朋友可以关注下我☺平台主机:Win7 6...
2019-10-15 23:40:06
248
原创 【C】C语言中的设计模式
目录前言继承、封装、多态前言偶然在网上看到C语言设计模式的文章,觉得很有用,在此开一篇连载,将自己学到的东西给大家展示下,希望对大家有用继承、封装、多态(1)继承性typedef struct _parent{ int data_parent; }Parent; typedef struct _Child{ struct _parent parent; ...
2019-10-14 15:16:59
2248
原创 转载:缓存一致性(Cache Coherency)入门
说明最近在做Xilinx MPSoC 双核CPU裸跑的工程,遇到了基本的缓存一致性问题,这里转载一篇学习过程中看到的一篇很好的文章,给大家分享下,后面实验成功,会给出工程的具体教程。传送门...
2019-09-09 14:43:10
568
原创 【C】从内存出发理解C语言变量作用域与生命周期
目录1 内存分区1.1 代码区1.2 已初始化全局变量/静态变量/常量(data区)1.3 未初始化全局变量/静态变量(bss区)1.4 栈区(stack)1.5 堆区(heap)2 代码演示3 生命周期1 内存分区C源代码进过预处理、编译、汇编和链接4步生成一个可执行程序。程序在没有运行之前,也就是说程序没有被加载到内存前,可执行程序内部已经分好3段信息,分别是代码区(text)、数据区(...
2019-08-28 15:39:02
724
原创 Microblaze添加自定义IP核,挂AXI总线实现SSD1306 OELD驱动
Microblaze添加自定义IP核,挂AXI总线前言最近公司要将主控程序从Cortex M系列的ARM上移植到Xilinx MPSoC内部R5核上,不使用操作系统,直接裸跑,实现原有功能的基础上增加其他实时性要求更高的功能,在具体功能实施之前,由我先进行技术穿刺,将能用到的模块提前先熟悉下,以便后续工程的开展,本着好好学习,认真负责的态度,我计划在空闲时间把这些模块的使用方法与心得总结下与大...
2019-08-22 15:21:54
2795
原创 Xilinx FPGA Microblaze AXI_IIC使用方法及心得
Xilinx FPGA Microblaze AXI_IIC使用方法及心得前言最近公司要将主控程序从Cortex M系列的ARM上移植到Xilinx MPSoC内部R5核上,不使用操作系统,直接裸跑,实现原有功能的基础上增加其他实时性要求更高的功能,在具体功能实施之前,由我先进行技术穿刺,将能用到的模块提前先熟悉下,以便后续工程的开展,本着好好学习,认真负责的态度,我计划在空闲时间把这些模块的...
2019-08-19 09:37:29
13757
14
原创 如何将Word转化为Markdown文本
前言Markdown文本使用起来固然方便,可也有些不尽人意的地方,估计啥软件或工具都是这样,有时候Word有些功能还是很讨人喜欢的,当你的笔记使用word编辑而又想发至网上时,格式转换痛苦之至,本文给大家介绍两种将Word转化为Markdown文本的方法,为大家提供便利。方法一 :Writage + Pandoc操作步骤如下下载并安装 Writage,下载地址:http://www.wr...
2019-07-26 15:00:40
6563
原创 Xilinx FPGA软核开发流程
Xilinx FPGA软核开发流程环境说明Vivado 2017.4 芯片 XC7K325以下步骤只列提纲,后面有时间会增加图文具体操作步骤,欢迎大家讨论
2019-07-26 14:19:23
2851
原创 Altium一键自动出BOM
前言在这里先啰嗦下……虽然AD自带出BOM的功能,但是总感觉有时候不尽人意,尤其是各种库管理杂乱无章的时候,这种问题再小公司中尤为明显,当涉及到生产时,BOM的作用至关重要,任何错误都可能导致很严重的损失!而且我相信很多硬件工程师都遇到过BOM出错的问题。在这里展示一种库管理方法,可以从源头杜绝BOM错误的产生,同时还可以提高设计效率。这种方法之所以能够杜绝BOM的错误,是因为在设计中...
2019-04-21 22:36:54
2767
原创 Matlab FFT参数设置研究
写在前面的废话近期要对一款高速ADC进行测试,用到Matlab的fft函数分析其动态性能,为了对Matlab 的fft有一个全方位立体的认识,对其参数进行了小实验,记录如下。使用Matlab生成采样数据clear;fs = 1000;ts = 1/fs;L = 2400;t = (0:L-1)*ts;x = 0.7*sin(2*pi*50*t) + sin(2*pi*12...
2019-04-12 11:48:09
7822
4
原创 高速ADC测试心得
摘要:ADC作为连接模拟世界与数字世界的桥梁,是现代雷达系统中必不可少的一环,其性能的好坏直接决定雷达的好坏。激光测风雷达作为现代雷达系统大家庭中的一员,必然也会使用到ADC。为了保证其性能,除了良好的设计外,设计完成之后充分的测试也是必不可少的。在测试之前,首先简单介绍下ADC的种类以及其主要指标。ADC种类 类型 优点 缺点...
2019-03-14 19:11:27
14108
10
原创 使用Modelsim独立仿真Altera及Xilinx IP核
使用modelsim进行仿真非常方便,可以通过.do文件完成一些重复性的界面操作,但是使用modelsim仿真IP核的时候经常会因为没有库文件的问题而纠结,网上不乏一些相关教程,但是在使用过程中总会遇到这样那样的问题,于是我痛定思痛,决定彻底解决这个问题,为了帮助大家解决相同的烦恼,决定写这篇文档,帮助大家避免走我曾走过的弯路,这也是我的第一篇教程,希望能帮到大家!1 软件环境...
2018-06-30 07:58:13
7481
gdb官方手册,完全指导
2020-02-10
SQlite源码.zip
2020-02-10
Datasheet中常用英语词汇翻译
2018-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人