- 博客(39)
- 资源 (46)
- 收藏
- 关注
原创 Linux 宏定义debug调试
1,宏定义:#include <stdio.h>#include <stdarg.h>#define BUFFER_SIZE 1024#define DEBUG_LEVEL 4typedef enum{ DEBUG_LEVEL_ERROR=0, DEBUG_LEVEL_WARNING, DEBUG_LEVEL_NOTICE...
2019-04-29 22:47:31 1212
原创 Linux 内核阅读宏定义#define的使用总结
面试中定义一个比较两个数大小的宏:简单的宏定义:#define MAX(x,y) x > y ? x : y此种写法当x,y是表达式时会出问题:所以基本改进如下:#define MAX(x,y) (x) > (y) ? (x) : (y)#define MAX(x,y) ((x) > (y) ? (x) : (y)) //此种方法最好上面几种写法是...
2019-04-27 23:42:09 1341
原创 Linux 下 v4l2采集yuyv用sdl2播放
#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<fcntl.h>#include<linux/videodev2.h>#include<string.h>#include<errno.h>#include<sys/mm...
2019-04-27 23:03:52 744
原创 linux nanopi3 lcd 闪屏处理
当换上自己的lcd屏幕时,发现屏幕上的黑点总是在闪烁,刚开始我们一直以为是屏幕频率的问题,所以我们之前的nanopi3中的lcds.c里面的lcd702结构体里面的.freq改为70,100,因为我们觉得屏幕闪动就是频率太低,但是改了以后还是没有用,那么lcd的屏幕闪烁到底是什么造成的呢?我们来看下代码:static struct nxp_lcd wvga_s702 = { .widt...
2019-04-27 15:25:01 1025 3
原创 Linux lcd驱动开发学习
做Linux lcd驱动移植时,先找到lcd驱动的位置:grep "s702" -nR例如:我的nanopc t3 plus可以看到:可以看到,上面有相应的lcds.c,因为我们的开发板是nanopi t3 plus,即进入到nanopi3,看看里面的lcds.c的类型的s702的结构体即可,既是如下static struct nxp_lcd wvga_s702 = { ...
2019-04-27 14:45:23 443
原创 Linux vimrc设置总结
"启用鼠标set mouse=aset selection=exclusiveset selectmode=mouse,keyset tabstop=4set background=darkset smartindentset nocompatible " 关闭 vi 兼容模式syntax on " 自动语法高亮"colorscheme molokai 设定配色方案set n...
2019-04-27 13:05:07 494
原创 #和##的总结
#define paster( n ) printf( “token &amp;amp;amp;amp;quot; #n” = %d\n &amp;amp;amp;amp;quot;, token ## n )注意:(1)#n 两边的引号必须要 (2) ## 两边的空格可有可无,不影响&amp;amp;amp;amp;quot;#&amp;amp;amp;amp;quot;用来把参数转换成字符串,是给参数加上双引号。&
2019-04-26 23:32:26 840
原创 Linux v4l2编程API
在进行V4L2开发中,常用的命令标志符如下(some are optional): • VIDIOC_REQBUFS:分配内存 • VIDIOC_QUERYBUF:把VIDIOC_REQBUFS中分配的数据缓存转换成物理地址 • VIDIOC_QUERYCAP:查询驱动功能 • VIDIOC_ENUM_FMT:获取当前驱动支持的视频格式 • VIDIOC_...
2019-04-26 23:14:30 296
原创 SecureCRT 数据库里没找到防火墙 '无'
SecureCRT 数据库里没找到防火墙 ‘无’找到CRT的菜单栏->选项->全局选项->常规复制出配置文件夹的路径,我的:\isilonpub.fiberhome.com\fiberhomeQuser\ttang103\AppData\Roaming\VanDyke\Config打开cmd: win+R粘贴上面的路径,看里面的配置文件.ini将session里面的....
2019-04-23 21:30:20 1118
原创 Linux qt5 thread线程编程
my_thread.cpp#include "mythread.h"#include <QPainter>#include <QPen>#include <QBrush>#include <QImage>MyThread::MyThread(QObject *parent) : QObject(parent){}void ...
2019-04-22 23:00:08 683
原创 Linux qt5 socket(TCP)编程
1_server.cpp#include <QWidget>#include <QTcpServer> //监听套接字#include <QTcpSocket> //通信套接字namespace Ui {class ServerWidget;}class ServerWidget : public QWidget{ Q_OBJEC...
2019-04-22 22:39:20 2450
原创 Linux 下面Valgrind跟踪内存泄漏
在写大型C/C++工程时难免会发生内存泄漏现象,系统编程中一个重要的方面就是有效地处理与内存相关的问题。你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。 常见的内存问题一共七种:1. 动态内存泄露;2. 资源泄露,比如文件指针不关闭;3. 动态内存越界;4.数组内存越界;5.动态内存double free;6.使用野指针,即未...
2019-04-19 00:48:20 509
原创 Linux memwatch 的使用
下载代码:http://www.linkdata.se/sourcecode/memwatch/下载代码后解压得到如下文件mamwatch.c和memwatch.h是不用动的,我们需要改的是test.c第一步,在test.c加入头文件 #include"memwatch.h"其次编写自己的代码:我的代码如下:#include <stdio.h>#in...
2019-04-18 22:53:24 610
原创 Linux mtrace调试内存泄漏
本文只介绍一个实用的linux小命令:mtrace(memory trace), 它能够用来协助定位内存泄露Linux下测试代码:4_trace.c#include <stdio.h>#include<stdlib.h>int main(){ setenv("FREE_TRACE", "taoge.log", "1"); ...
2019-04-18 22:09:49 319
原创 Linux gdb检测之core dump
首先创建一个测试文件,命名为3_coredump.c#include <stdio.h> int func(int *p){ *p = NULL;} int main(){ func(NULL); return 0;}gcc 3_coredump.c -o 3_coredumulimit -c u...
2019-04-18 21:08:07 209
原创 使用GDB调试时attach ID不允许的操作
gdb attach PID出错:不允许的操作(1)挂起程序:gcc 2_threadLock.c.c -lpthread -g -o 2_threadLockps -aux|grep 2_threadLock 查看pidps -aL 查看线程id号pstree -p pid(此处的pid是上面输出的pid)出错后,按下面做法做即可:sudo vim /etc/sysctl....
2019-04-17 23:38:13 1550 3
原创 Linux 进程调度算法c语言描述
进程调度分为:长程调度,又称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行。短程调度,又称进程调度和cpu调度,用来决定就绪队列中的哪个进程应获得cpu,然后再由分派程序把处理机分配给该进程的具体操作。常见的cpu调度算法有先到先服务调度(FCFS)、最短作业优先调度(SJF)、优先级调度(pri...
2019-04-17 21:44:08 1936
原创 Linux单处理器进程调度c语言描述
本次实现的是模拟在单处理器情况下的处理器调度,目的是设计一个按优先数调度算法实现处理器调度的程序。每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。要求运行时间——假设进程需要运行的...
2019-04-17 20:48:53 799
原创 linux代码对齐快捷键和man帮助文档的使用总结
自动对齐:(gg=G)在命令模式下(即非“插入”等编辑模式),先输入gg,这时候光标会移动到第一行第一个字符,然后按 “=” 号之后切换成大写,再按一下G,这时候光标会移到最后一行的第一个字符,这时候就可以看到代码被排得整整齐齐了!“gg"将光标移动到代码首部,”="表示对齐指令,"G"表示代码尾部,所以执行"gg=G"后,该文件的所有代码都将对其....
2019-04-17 19:03:59 3668
原创 Linux 同步理发师问题
熟睡的理发师问题描述的是多个进程(线程)之间的通信与同步问题:有一个理发师的椅子,和n个顾客的椅子如果有顾客在椅子上等,那么理发师为他剪发,否则理发师就在自己的椅子上睡觉。如果理发师在熟睡,那么顾客会叫醒理发师,否则顾客会看有没有空椅子,有的话,他坐下等,否则,他将离开理发店。#include <pthread.h>#include <stdio.h>#i...
2019-04-16 23:42:54 944
原创 Linux读者和写者(写者优先)
写者优先写者优先与读者优先的不同是:如果读者来,有写者等待,但有其他读者正在读,新读者等。使用两个互斥锁mutex_write,mutex_read和两个信号量sem_read,sem_write来确保访问资源的互斥和同步。#include <stdio.h>#include <stdlib.h>#include <pthread.h>#in...
2019-04-16 22:53:29 1425
原创 linux读者和写者(读者优先)
读者优先使用互斥锁来确保同一时间只能一个进程写文件,实现互斥。使用信号量来实现访问资源的同步。首先,写者的代码应该是这样一种形式,才能保证同一时刻只有一个写者修改数据。考虑到写者对读者的影响是:当任何读者想读时,写者都必须被阻塞;并且,读者阻塞了写者并停止阻塞之前,后续的任何写者都会读者优先于执行。这就如同有一个读者队列,当第一个读者入队时,写者完全被阻塞,直到最后一个读者离开队列。...
2019-04-16 22:40:40 1332
原创 页面置换算法学习之FIFO,Optimal,LRU
A.先进先出(FIFO)页面置换算法这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不...
2019-04-15 00:13:36 1907 3
原创 linux学习的任督二脉
Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU、内存资源等的真正分布,具体的工作机制,这使得他们对很多问题的分析都摸不到方向。比如进程的调度延时是多少?Linux能否硬实时?多核下多线程如何执行?系统的内存究竟耗到哪里去了?我写的应用程序究竟耗了多少内存?什么是内存泄漏,如何判定内存是否真的泄漏?CPU速度、内存大小和系统性能的关联究竟是什么?内...
2019-04-14 22:52:27 246
原创 linux ubuntu安装glfw
第一步,下载glfw到地址:www.glfw.org下载glfw source code:glfw-3.2.1.zip解压 unzip glfw-3.2.1.zip -d glfw-3.2.1第二步,编译安装glfw1. 安装依赖库,sudo apt-get build-dep glfwsudo apt-get install cmake xorg-dev libglu1-mesa-...
2019-04-14 16:32:38 5111 1
原创 Linux JSON解析对象实例
json解析对象:a.json{ "name": "中国", "cities": [{ "省份": "江苏", "城市": ["南京", "苏州"], "邮编": 123 }, { "省份": "广东", "城市": ["深圳", "广州"], "邮编": 123 }, { "省份": "湖北", "城市": ["武汉", "宜昌"]...
2019-04-13 20:22:17 795
原创 常见的内存错误及其对策
1,常见错误及其处理策略:(1) 内存分配未成功,却使用了它。编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针p是函数的参数,那么在函数的入口处用assert(p!=NULL)进行检查。如果是用malloc或new来申请内存,应该用if(p==NULL) 或if(p!=NULL)进行防错处理。(2) 内存分配虽然成功,...
2019-04-09 15:45:44 246
原创 linux 数据库mysql导入导出数据
mysql清屏两种有效方式:方式一:mysql> ! clear //注意clear命令之前要空格;方式二:mysql> ctrl+L //快捷组合键
2019-04-07 23:56:55 228
原创 友善之臂nanoPC T3 Plus s5p6818内核和uboot编译和系统量产总结
方法一:uboot 和 Linux 内核的编译,烧写到系统,打开 wiki:http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T3_Plus/zh下载系统: s5p6818-eflasher-20180811-friendlycore-arm64.img.zip用 win32diskimager 烧写到 sd 卡.1,安装 aarch64-...
2019-04-07 23:11:24 2439 2
原创 linux 数据库sqlite3 导入导出数据
1,Linux导入数据:.separator "," .import /home/tangtao/mynode/linuxnetPrograme/Socket-master/chatroom_select/chatRome.db mydb select * from mydb;
2019-04-07 23:08:46 1930
原创 linux c语言全面学习json解析函数
1,json结构的定义typedef struct cJSON { //cJSON结构体 struct cJSON*next,*prev; /* 遍历数组或对象链的前向或后向链表指针*/ struct cJSON *child; /*数组或对象的孩子节点*/ int type; ...
2019-04-04 17:31:21 1098 2
原创 http请求学习
GET:向Web服务器请求一个文件POST:向Web服务器发送数据让Web服务器进行处理PUT:向Web服务器发送数据并存储在Web服务器内部HEAD:检查一个对象是否存在DELETE:从Web服务器上删除一个文件CONNECT:对通道提供支持TRACE:跟踪到服务器的路径OPTIONS:查询Web服务器的性能1,User-Agent:HTTP客户端运行的浏览器类型的详细信息。通过...
2019-04-02 17:16:55 369 2
原创 linux poll实现简易服务器
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <time.h>#include <sys/socket.h>#include <poll....
2019-04-02 14:05:50 248
原创 linux socket C_S编程(UDP)
UDP编程的总结:与之对应的UDP编程步骤要简单许多,分别如下: UDP编程的服务器端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();* 可选 3、绑定IP地址、端口等信息到socket上,用函数bind(); 4、循环接收数据,用函数recvfrom(); 5、关闭网络连接;UDP编程的客户端...
2019-04-02 13:54:20 159
原创 secureCRT实现远程控制linux (ubuntu)
第一步安装secureCRT和secureFX:安装链接:https://download.csdn.net/download/qq_40008325/11036734其次,进入到Ubuntu下,先查看Ubuntu虚拟机的IP配置,通过ifconfig命令查看,可以看到Ubuntu下的IP地址信息。而后,测试SSH Ubuntu上ssh localhost例如:ssh tangtao@l...
2019-04-01 21:58:11 907
原创 linux socket 编程(多进程)
//socket编程提高版--多进程版服务器#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/soc...
2019-04-01 16:18:09 258
原创 linux socket编程(多线程)
1,客户端#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/socket.h>#inclu...
2019-04-01 15:36:05 1434
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人