- 博客(54)
- 资源 (18)
- 收藏
- 关注
原创 Linux的core文件
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1) 使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。通过上面的命令修改后,一般都只是对当前会话起作用,当你下次重...
2018-11-29 22:33:18 243
原创 三十道linux内核面试题
随笔 - 953, 文章 - 0, 评论 - 3, 引用 - 0三十道linux内核面试题 参考:https://www.cnblogs.com/alantu2018/p/8461068.html ...
2018-11-29 18:48:42 1276 1
原创 为什么有时候Linux不打印输出信息
今天莫名奇妙不打印信息,找了半天原理是,Linux的缓冲区问题由于Linux的输出有缓冲区,也就是说Printf打印的信息不是马上输出到屏幕上,而是先输入到缓存中,等缓存区满了后才会输出怎样解决:不要每次只输出一个字符,就算只输出一个字符,在后面也要加上一个换行符 用fflush函数进行冲洗缓存区 ...
2018-11-29 13:38:28 3149
原创 c++ 智能指针
https://www.cnblogs.com/TenosDoIt/p/3456704.htmlhttps://blog.csdn.net/tanswer_/article/details/79039617
2018-11-28 18:27:01 212
原创 GNU C的特色:__attribute__机制
https://blog.csdn.net/JuanA1/article/details/6849120 https://blog.csdn.net/fantasy_wxe/article/details/8066551?utm_source=blogxgwz7http://www.unixwiz.net/techtips/gnu-c-attributes.htmlhttps://...
2018-11-27 22:15:25 227
原创 malloc带来的一些问题
一:#include <stdio.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>void get_memory(char *p){ p = (char *)malloc(100); if(p == NULL){ printf("aaaaaaaaaaa\...
2018-11-27 10:52:58 404
原创 排序算法(八):桶排序/基数排序(Radix Sort)
说基数排序之前,我们先说桶排序:基本思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。 简单来说,就是把数据分组,放在一个个的桶中,...
2018-11-26 19:01:07 652
原创 排序算法(七):归并排序(Merge Sort)
基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序示例: 合并方法:设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为n-i +1、n-m。j=m+1;k=i;i=i; //置两个子表的起始下标及辅助数组的...
2018-11-26 18:46:44 382 1
原创 排序算法(六):快速排序(Quick Sort)
基本思想:1)选择一个基准元素,通常选择第一个元素或者最后一个元素,2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。3)此时基准元素在其排好序后的正确位置4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。快速排序的示例: 算法的实现: 递归实现:#i...
2018-11-26 13:40:19 467
原创 排序算法(五):冒泡排序(Bubble Sort)
基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序的示例:算法的实现:public void bubbleSort(int[] a) { for(int i = a.length - 1; i >...
2018-11-26 10:58:33 944
原创 排序算法(四):堆排序(Heap Sort)
堆排序是一种树形选择排序,是对直接选择排序的有效改进。基本思想:堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如:(a)大顶堆序列:...
2018-11-26 10:18:56 340
原创 排序算法(三):简单选择排序(Simple Selection Sort)
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。简单选择排序的示例:操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录...
2018-11-26 09:55:53 688
原创 error: stray ‘\200’ in program解决
gcc编译错误现象:b.cpp:20:1: error: stray ‘\343’ in program //寻找最小值的下标 ^b.cpp:20:1: error: stray ‘\200’ in programb.cpp:20:1: error: stray ‘\200’ in programb.cpp:20:1: error: stray ‘\343’ in progr...
2018-11-26 09:22:09 4053 1
原创 九大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;十大经典排序算法(动图演...
2018-11-25 22:38:11 2808
原创 排序算法(二):希尔排序
希尔排序是1959 年由D.L.Shell 提出来的,相对直接插入排序有较大的改进。希尔排序又叫缩小增量排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。操作方法:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 按增量序列个数k,对序列进行k 趟排序; ...
2018-11-25 22:29:44 370
原创 排序算法(一):直接插入排序
1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入...
2018-11-25 22:26:11 461
原创 调试技巧(三):strace
在Linux系统中, strace是一种相当有效的跟踪工具,它的主要特点是可以被用来监视系统调用。我们不仅可以用strace调试一个新开始的程序,也可以调试一个已经在运行的程序(这意味着把strace绑定到一个已有的PID上)。对于globalmem字符设备文件,以strace方式运行如代码所示的用户空间应用程序globalmem_test,运行的结果如下: root@ubuntu:/us...
2018-11-25 18:48:37 8543
原创 调试技巧(二):BUG_ON(), WARN_ON()和panic()
内核中有许多地方调用类似BUG()的语句,它非常像一个内核运行时的断言,意味着本来不该执行到BUG()这条语句,一旦执行即抛出Oops。 BUG()的定义为:#define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ panic("BUG!"); \} whi...
2018-11-25 18:25:20 3439
原创 调试技巧(一):OOPS调试
当内核出现类似用户空间的Segmentation Fault时(例如内核访问一个并不存在的虚拟地址), Oops会被打印到控制台和写入内核log缓冲区。我们在globalmem.c的globalmem_read()函数中加上下面一行代码 } else { *ppos += count; ret = count; *(unsigned int *)0 = 1; /*...
2018-11-25 17:11:48 1629
转载 为什么中断处理函数中不能出现阻塞
1、 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断,如果在中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没有一个task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了会导...
2018-11-25 15:43:48 3469
转载 时间复杂度和空间复杂度
时间复杂度 首先我们先来说时间效率的这个问题,这里的时间效率就是指的算法的执行时间,时间的快慢本来就是一个相对的概念,那么到了算法上,我们该用怎样的度量指标去度量一个算法的时间效率(执行时间)呢? 刚开始我们想出了一种事后统计方法,我称它为「马后炮式」,顾名思义,就是对于要解决的某个问题,费尽心思想了 n 种解法,提前写好算法程序,然后攒了一堆数据,让它们分别在电脑上跑,跑完了然后...
2018-11-25 09:32:11 171
原创 冒泡排序的优化
普通的冒泡排序就是这样:public void bubbleSort(int[] a) { for(int i = a.length - 1; i > 0; i--) { for(int j = 0; j < i; j++) { if(a[j] > a[j+1]) //交换,具体实现略 ...
2018-11-25 08:42:34 218
原创 1 QT简介
1,简介QT是什么?它能做什么?Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单来说,QT可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。QT学习需要避免的坑QT分为4.0版本和5.0版本他们之间的差别很大,不通用!!!不通用!!!不通用!!!所以要...
2018-11-23 13:33:25 2336
原创 ELF格式文件
Executable and Linkable Format (可执行与可链接格式 )常用扩展名o,so,elf,prx一、概述1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序。ELF文件(目标文件)格式主要三种:可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或...
2018-11-22 13:40:17 379
原创 图片播放器(十):事件处理函数
因为从触摸屏传过来的事件需要另外处理,因此需要分离出一个事件处理层。系统核心函数:int main(){ int ret = 0; char event; DEBUG("hello world\n"); ret = fb_open(); if(ret < 0){ DERROR("open fb fail\n"); } fb_draw_back(BLAC...
2018-11-21 18:45:48 191
原创 图片播放器(八):读取文件夹中的图片
采用链表的方式保存图片文件的格式信息,文件名和大小。 重要结构体:/* 图片文件类型 */typedef enum image_type{ IMAGE_TYPE_BMP, IMAGE_TYPE_JPG, IMAGE_TYPE_PNG, IMAGE_TPPE_UNKNOWN, /* 不能识别 */}image_type_e;/* 图片文件信息 */type...
2018-11-21 18:37:20 761
原创 图片播放器(九):触摸屏处理
input事件解析:##################### type = 3 code = 0 value = 724 //读取的X坐标的值 type = 3 code = 1 value = 328 //读取的Y坐标的值 ...
2018-11-21 08:45:57 295
原创 图片播放器(七):PNG图片的显示函数
1.思路分析(1)png更像是jpg而不像是bmp(2)png和jpg都是压缩格式的图片,都是二进制文件,不同之处是压缩和解压缩的算法不同。(3)通过libjpeg来编解码jpg图片,那么同样有一个libpng用来编解码png图片。(4)工作思路和顺序:找到并移植并部署libpng,然后查readme和其他文档示例代码等来使用libpng提供的API来对png图片进行解码,并将解码出来的...
2018-11-18 18:45:27 767
原创 Error记录--make: ./libtool:命令未找到
报错信息:./libtool --mode=compile arm-linux-gcc -O2 -I. -c ./jcapimin.cmake: ./libtool:命令未找到在编译jpeg源代码的时候遇到了这个问题,原因是libtool未安装。安装libtool步骤:找一个文件夹:第一步:下载安装包wget http://ftp.gnu.org/gnu/libtool/libto...
2018-11-17 21:09:43 1125
原创 Linux 查看CPU信息,机器型号,内存等信息
系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -t...
2018-11-17 19:15:03 146
原创 图片播放器(六):JPG图片的显示函数
1.libjpeg介绍及开源库的使用方法1.1.libjpeg介绍(1)基于linux的开源软件(2)C语言编写(gcc、Makefile管理)(3)提供JPEG图片的编解码算法实现1.2.libjpeg版本及下载资源(1)经典版本v6b:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/(2)最新版本v9b:h...
2018-11-17 18:31:19 702
原创 图片播放器(五):BMP图片的显示函数
BMP格式的图片的介绍,和头信息的解析:https://www.cnblogs.com/l2rf/p/5643352.html 重要结构体:从BMP文件中读到的头信息:(这些信息只是取了部分信息)/* bmp 头信息 */struct bmp_head_data{ unsigned short w; /* 图片宽 */ unsigned short h; /* 图...
2018-11-16 21:07:00 1269
原创 图片播放器(四):图片显示的核心函数
display############### fb.c //fb文件 Makefileinclude############### fb.hstart.c //最开始的文件Makefil...
2018-11-15 20:21:14 291
原创 图片播放器(三):图片显示原理
1.图片显示原理(1)概念1:像素(2)概念2:点阵(3)分辨率(物理分辨率、显示分辨率)(4)清晰度(分辨率和像素间距有关)像素间距相同时,分辨率越大越清晰;分辨率相同时,像素间距越小越清晰。(4)bpp(RGB565、RGB888)像素深度,每个像素用多少bit数据表示(5)颜色序(RGB、BGR)2.图片点阵数据获取(1)Image2LCD软件提取(2)通过图片/视频文...
2018-11-15 20:11:59 772
原创 图片播放器(二):framebuffer基本操作代码
display############### fb.c //fb文件 Makefileinclude############### fb.hstart.c //最开始的文件Makefile...
2018-11-15 17:49:48 725
原创 图片播放器(一):Makefile
顶层Makefile解析(随工程而变):CROSS_COMPILE = #指定编译器种类AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ld #链接工具CC = $(CROSS_COMPILE)gcc #编译工具CPP ...
2018-11-15 15:20:16 259
原创 gets需要用getchar吃掉换行符
当我们先输入一个整型类的数后,再用gets输入一个字符串,在这之间会出现问题。#include"stdio.h"int main(){ char a[1000]; int n; scanf("%d",&n); printf("接收\n"); gets(a); printf("输出:%s\n", a); ...
2018-11-14 09:05:59 4128
原创 复制一段字符串作为程序输入的BUG
有时候我们会通过从其他地方复制一段字符串(里面有多行语句)作为程序的输入,这时换行符会出出现一些问题。比如下面的程序:#include <stdio.h>#include <string.h>#define N 100int main(){ char input_1[N] = {0}; char input_2[N] = {0}; printf...
2018-11-14 08:17:40 214
原创 DMA
DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。 DMA通常与硬件体系结构,特别是外设的总线技术密切相关。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间, CPU可以并发地执行其他任务。当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,然后由CP...
2018-11-13 15:39:41 1008
原创 设备I/O端口和I/O内存的访问
设备通常会提供一组寄存器来控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄器可能位于I/O空间中,也可能位于内存空间中。当位于I/O空间时,通常被称为I/O端口;当位于内存空间时,对应的内存空间被称为I/O内存。每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式...
2018-11-13 11:03:26 3590
光度立体技术字符识别和缺陷检测
2022-07-30
QT6+CloudCompare显示3D点云
2022-04-27
OCR_Demo3.zip
2021-09-04
QtPluginDemo.zip
2021-03-21
Qt6SerialPort.zip
2021-02-04
Qt实现二维码的编解码
2020-11-07
halcon19可用dll.zip
2020-08-03
qthalcon3d.zip
2020-07-04
draw_qwidget.zip
2019-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人