自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 用curl实现的简单的下载程序——附超详细注释,实操无问题

之前捣鼓了一番在电脑上安装好了最先的curl库,今天迫不及待的用了一波,实操感觉不错!下面看demon一、程序demon:#include <curl/curl.h>#include <stdio.h>#include <string.h>#include <errno.h>char DOWNLOAD_PATH[300];int download_function(char *url, char *down_path){ if ((NUL

2020-07-31 18:26:27 958

转载 提升SQLite数据插入效率的方法

前言SQLite数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作。因此我最近编写有关遥感数据处理的程序的时候,也将SQLite引入进来,以提高数据的结构化程度,并且提高大数据的处理能力(SQLite最高支持2PB大小的数据)。但是最开始,我发现,直接使用SQL语句的插入效率简直低的令人发指的。后来不断查文档、查资料,才发现了一条快速的“数据插入”之路。本文就以插入数据为例,整合网上和资料书中的各种提高SQLite效率的

2020-07-27 15:33:16 435

原创 获取本机mac地址的c程序

下图是获取本机mac地址的demon小程序#include<stdio.h>#include<string.h>#include<net/if.h>#include <sys/ioctl.h>int get_localmac(const char *interface, unsigned char *mac){ if ((NULL == interface) || (NULL == mac)) { printf("param_error

2020-07-26 18:39:03 736

原创 curl的下载安装过程——Linux c

1.到下图中的网址中下载curl开源项目2.然后在linux命令行输入tar -zxvf curl-7.71.1.tar.gz3.然后:cd curl-7.71.1 进入curl-7.71.1文件夹下4.然后在命令行输入./configure --prefix=/usr/local/curl5.然后输入make6.sudo make install...

2020-07-26 16:17:23 1028

原创 array容器——c++

一、array容器介绍array 容器是 C++ 11 标准中新增的序列容器,通俗的说,它就是在 C++ 普通数组的基础上,增加了一些成员函数和全局函数。在使用上,它比普通数组更安全,且效率并没有因此变差。二、array容器的使用1.初始化#include<iostream>#include<array>using namespace std;int main(){ int j=0; array <int,5> tmp1={1,2,3,4,5};/

2020-07-25 18:04:14 321

原创 命名空间——c++

一、命名空间概念在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字就是针对这种问题而出现的。下面是一个网上摘道的例子:举个例子:有一个学校,世界之大无奇不有,恰恰这个学校就比较奇怪。那你可能就会问了,这个学校究竟奇怪在哪里?这个学校奇怪的就是不仅有很多生日相同的学生,还有不少同学重名重姓。然后有一天放学,学校里有人捡到了一个钱包,里面有张三的学

2020-07-25 16:57:57 99

原创 输入输出流——c++

一、第一个c++程序#include<iostream>//输入输出流头文件int main(){ std::cout<<"hell world!"<<std::endl;}运行结果

2020-07-25 16:09:52 83

原创 select函数使用方法

一、函数介绍头文件: #include <sys/select.h>函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参数介绍:1.int nfds:待测试的描述符个数,它的值是待测试的最大描述符加12.fd_set *readfds:指向fd_set结构的指针,这个集合中包括文件描述符,我们是要

2020-07-25 11:53:50 1692

原创 单片机中断讲解

一、什么是中断1.概念:计算机执行某程序时,发生了紧急事件或着特殊的请求,CPU会暂停正在执行的程序,转而去处理接收到的紧急事件或请求,处理完接收的紧急事件或请求后,再回来重新继续执行被打断的程序的过程叫做中断2.简单举例这个例子是在学习中见到频率最高例子通俗易懂——取外快递为了方便的理解中断这个概念,举例:假设你正在吃饭,这时接到快递员电话叫你下楼取快递只等5分钟,这就是中断请求。然后你回答:“好的,我现在就来”这就是中断响应。接着你停止吃饭下楼去取快递,这就是中断处理。取完快递,你再回来接着吃

2020-07-19 20:48:20 1158

原创 进程间通讯方式-共享内存使用shmget、shmat、shmdt、shmctl讲解

进程间通讯方式——共享内存共享内存是一种最为高效的进程间通讯方式,进程可以直接读写内存,不需要任何数据的复制。共享内存的实现主要分为俩个步骤1-创建共享内存 shmget(); 2-映射共享内存shmat(); 当然还有撤销操作shmdt();为了使创建的共享内存使用时区分开来,可以用对应的IPC键值来一一对应一、相关函数介绍1.创建IPC键值#include <sys/types.h>#include <sys/ipc.h>key_t ftok(const cha

2020-07-19 18:06:21 890 1

原创 信号的设置:signal函数

信号处理方式的主要方法有俩种:一种是使用简单的signal函数,另一种是sigaction函数一、signal函数使用signal()函数时,只需要指定信号类型和信号处理函数即可。头文件:#include <signal.h>函数原型:typedef void (*sighandler_t)(int);sighandler_t signal(int signum,sighandler_t handler);参数:signum:指定的信号代码 handler: SIG_.

2020-07-19 16:20:57 837

原创 线程-互斥锁的使用

一、线程间通信-互斥1.临界资源:一次只允许一个任务2.临界区:访问临界区的代码3.互斥机制----1>mutex互斥锁2>锁的使用过程:任务访问临界资源前申请锁,访问完释放锁二、函数介绍1.互斥锁的初始化方法1:动态方式创建互斥锁#include<pthread.h>int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);返回

2020-07-18 17:24:22 467

原创 线程基础概念及pthread_cancel的使用

一、进程1.进程有独立的地址空间2.进程在创建时都会创建一个task_struct结构体3.每个进程都会参与内核调度,相互间不会影响二、线程1.因为进程在切换时系统开销大,所以很多操作系统引入了轻量级进程LWP-线程2.同一进程中的线程共享相同的地址空间,所以线程通常是指共享相同地址空间的多个任务三、线程共享和和私有的资源共享资源:1.可以执行的命令2.用户ID,用户组ID3.静态数据4.当前的工作目录5.进程中打开的文件描述符私有资源:1.线程ID2.pc(程序计数器)和相

2020-07-18 16:41:24 287

原创 S_ISDIR()函数讲解

所需头文件#include <sys/stat.h>S_ISDIR()函数的作用是判断一个路径是不是目录

2020-07-17 13:36:41 12842

原创 sqlite数据库删除操作

1.sql语句//清空表格#define EMPTY_STUDENT "DELETE FROM student"//按学号删除---【?号为占位符】#define DELETE_STUDENT_NUMBER "DELETE FROM student WHERE student_number= ?;"2.代码示例/**************************数据库删除数据 author:乐乐*参数:要删除的数据**************************///清空数据库

2020-07-09 17:34:35 5154

原创 sqlite数据库插入过程

1.插入的sql语句:INSERT or IGNORE INTO student (student_number,name,sex) VALUES (?,?,?)2.插入操作代码/**************************数据库插入数据 author:乐乐*参数:要插入的数据**************************/#define INSERT_MSG "INSERT or IGNORE INTO student (student_number,name,sex) VAL

2020-07-09 16:35:39 2708

原创 sqlite数据库的创建过程--超详细注释-适合新手

简单的创建数据库的demon,备有详细注释,后期会继续更新更多关于sqlit的知识,适合初学者,【技术交流加关注】/*****************************************demon:创建数据库 author:乐乐****************************************/#include <stdio.h>#include <sqlite3.h>#define DB_PATH "./student.db" //数据

2020-07-09 14:59:56 1960

原创 udp广播发送端与接收端demon---超详细注释

udp广播收发经典demon,超详细注释1、发送端/*****************************************demon:广播发送端 author:乐乐****************************************/#include <sys/types.h> #include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h

2020-07-08 18:37:28 1005

原创 invalid storage class for function ‘函数名字‘

编译时报错invalid storage class for function '函数名',第一次出现这样的错误,对报错函数反复检查发现无错误,经过反复排查发现是这个函数之前声明的函数{ },括号不对应,修改后编译通过。

2020-07-08 14:21:08 5577 2

原创 单向链表的基本应用-增删改查

一、单向链表功能函数初始化/*********************************************//*demon:单向链表 author:乐乐 *//********************************************/typedef char data_t;//1.定义单向链表结构体typedef struct node_t{ data_t data; struct node_t *next;}linknod

2020-07-07 23:49:35 238

原创 menuconfig内核配置过程

Menuconfig与Kconfig关系一、menuconfig图示make menuconfig 进入配置菜单(以博通网卡驱动为例)1.进入驱动菜单栏下2.选择进入网络驱动菜单栏下3.选择进入无线网卡菜单栏4.选择博通bcm43455(按Y,选择编译到内核–*号代表选中,按N-*号消失,表示不编译到内核)二、Kconfig1.cd到图示路径,箭头1-4分别对应菜单栏四级选项2.Kconfig中对应代码编写三、Kcongfig的构成1.tristate:选项名2.-----help--

2020-07-07 18:24:43 3617 2

数据库插入速度提升的demon

此程序demon验证了sqlit3数据插入速度的提升方法,使用事务操作大幅度提升了数据插入的效率,可以下载参考,程序可以编译运行,gcc -sqlite_master.c -lsqlite3

2020-08-26

空空如也

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

TA关注的人

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