自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AndrewYZWang的博客

keep life simple! stupid

  • 博客(622)
  • 资源 (24)
  • 收藏
  • 关注

原创 Redis解读

Redis简介Redis解读

2022-05-13 14:07:51 250 1

原创 自己开源项目汇总

从零构建cmake管理的live555开源工程代码仓库:live555-cmake视频教程:live555-cmake

2020-11-17 17:28:51 376

原创 linux系列文章

linux文章汇总VIMbashMakefileubootu-boot编译过程分析linuxLinux系统编程Linux/UNIX网络编程

2019-11-09 22:07:43 738

原创 linux开发常用工具集

工具集 – linuxMarkdown 编辑器 – TyporaGit版本管理软件 – SmartGitDiff 比较软件 – Meld Diff 差异查看器代码编辑器 – Source Insight代码查看 – Visual Studio Code抓包 – WireShark截图软件-- Shutter串口软件 – PUTTY桌面壁纸软件 – Wallch浏览器 – ...

2019-03-05 22:51:24 659

原创 [go-redis]客户端的创建与配置说明

经过上述过程,一个完整的Client算是创建完成了,后面你就可以使用Client对redis进行操作了。

2024-12-04 21:48:45 891

原创 剖析go协程池实现原理

协程本身也是一种资源,但是协程池有自己的特殊性,那是由协程池执行任务的特殊性决定的,协程作为资源使用时其实是在消费其他资源,也就是说必须向协程池提供一个统一的接口,所有需要协程池执行的任务都需要实现该接口,然后被协程池统一调用。触发协程池工作很简单,只需要向协程池等待的通道中放入一个任务即可,当协程池关闭时,所有任务都会被立即执行,当所有任务执行完毕,协程池中的所有协程都会退出。创建协程池需要指定最大并发数,当有新的任务加入时,会立即被执行,而当没有任务时,所有协程池中的协程阻塞竞争等待通道中的"任务"。

2024-12-02 15:58:40 700

原创 go语言 Pool实现资源池管理数据库连接资源或其他常用需要共享的资源

Pool用于展示如何使用有缓冲的通道实现资源池,来管理可以在任意数量的goroutine之间共享及独立使用的资源。这种模式在需要共享一组静态资源的情况(如共享数据库连接或者内存缓冲区)下非 常有用。如果goroutine需要从池里得到这些资源中的一个,它可以从池里申请,使用完后归还到资源池里。提到池子,channel天然就是一个池子,而且channel是多线程安全的,所以可以直接使用管道来安全的共享资源。文章按照如下四个方面对Pool资源池的设计过程以及使用进行剖析。

2024-12-02 13:52:17 590

原创 go并发设计模式runner模式

真正运行的程序不可能是单线程运行的,go语言中最值得骄傲的就是CSP模型了,可以说go语言是CSP模型的实现。

2024-12-01 13:28:12 1378

原创 go语言切片

还可以通过对切片再次切片来缩小一个切片的大小。空切片和nil切片并不等价,空切片和nil切片是不同的。空切片是一个长度为0,容量为0的切片,而nil切片是一个未初始化的切片,它指向一个不存在的内存区域。操作超过当前切片的容量时,Go 会分配一个新的更大的底层数组,并将原有数据复制到新的数组中。当使用make指定的切片长度为0时,那么底层其实会创建一个指针指向zerobase的切片,这时的Data指向。和C++的vector一样,在进行扩容时,一般会大于实际需要的长度,在实际使用中能有效的减少扩容的次数。

2024-11-29 17:41:49 1131

原创 go结构体匿名“继承“方法冲突时继承优先顺序

在 Go 语言中,当一个结构体匿名嵌入了多个实现相同接口的结构体时,调用该接口方法时会优先选择自己实现的方法,如果自己没有实现该方法,就按照顺序从上到下找到第一个定义的方法。方法的定义顺序决定了调用哪个方法。但是为了避免歧义和提高代码的可读性,建议在设计时尽量避免这种情况,或者在外部结构体中显式地实现接口方法。

2024-11-28 10:22:52 448

原创 Redis持久化即AOF与RDB

虽然每次执行更改数据库内容的操作时,AOF都会将命令记录在AOF文件中,但是事实上,由于操作系统的缓存机制,数据并没有真正地写入硬盘,而是进入了系统的硬盘缓存。当使用Redis存储非临时文件时,一般需要打开AOF持久化来降低因进程终止导致的数据丢失,AOF可以将Redis执行的每一条写命令追加到硬盘文件中,这一过程显然会降低Redis性能,但是大部分情况下这个影响是可以接受的。这时我们希望Redis将数据从内存中以某种形式同步到硬盘中,使得重启之后数据能从硬盘中的记录中恢复数据,这以过程就是持久化的过程。

2024-11-27 15:42:24 592

原创 Redis中如何使用lua脚本-即redis与lua的相互调用

- 定义一个函数-- 函数体end-- 将函数赋值给变量end-- 函数可以借助lua提供的语法糖简写为local funcend。

2024-11-27 13:33:15 1349

原创 Redis中的消息订阅与发布

假设你的博客网站,每次有新文章时需要发送邮件通知,但是邮件发送需要一定的时间,如果采用 FIFO 的方式,可能会导致用户发送邮件的请求时间过长。所以,我们可以使用优先级队列,在队列中存储用户发送邮件的请求,并根据请求的优先级进行排序,优先级高的先发送。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。的键优先级越高,借此特性可以实现区分优先级的任务队列。命令,当链表中没有数据时,客户端会阻塞等待。命令订阅指定名称的频道外,还可以使用。

2024-11-26 16:30:50 893

原创 Redis过期时间和SORT命令的高级用法

在实际的开发中经常会遇到一些有时效的数据,比如限时优惠活动、缓存或验证码等,过了一定的时间就需要删除这些数据。是 Redis 中一个强大的命令,用于对列表、集合或有序集合中的元素进行排序。选项配合,就可以在不排序的情况下,获取多个外部键,相当于执行一个整合的获取操作(类似于 SQL 数据库的。因为直接使用有序集合不如集合操作强大,当排序不经常使用的时候,可以使用集合存储数据,然后使用。命令只能设置精确的秒数,不能设置到毫秒级别,如果需要精确到毫秒级别的控制,可以使用。中的值,然后再用这个值来查找相应的键。

2024-11-25 21:23:28 1274

原创 Redis事务

Redis 事务允许你一次执行多个命令,并且这些命令会按照顺序被执行,中间不会被其他客户端的请求打断。我们可以使用 Redis 事务来确保这些操作作为一个整体执行,不会被其他客户端的请求打断。之间,其他客户端修改了。

2024-11-25 17:32:10 265

原创 redis常用命令整理

如果你的博客想每页显示5篇文章,但是在实际中文章的ID可能因为人为操作而变得不连续,比如从1到100,但是第50个被删除了,那么你再翻页就找不到了。集合类型内部是使用哈希表实现的,所以可以非常快速地添加和删除元素,向两端添加元素和删除元素的复杂度都是O(1)。因此使用集合命令可以非常快速地判断一个元素是否在集合中,在网站中常使用集合来存储标签。列表类型内部是使用双向链表实现的,所以可以非常快速地插入和删除元素,向两端添加元素和删除元素的复杂度都是O(1)。

2024-11-25 16:16:17 997

原创 go语言range的高级用法-使用range来接收通道里面的数据

在 Go 语言中,可以使用循环来遍历通道(channel)。循环会一直从通道中接收值,直到通道关闭并且所有值都被接收完毕。

2024-11-22 10:06:35 1048

原创 go语言闭包捕获的是变量的引用而不是变量的值

在 Go 语言中,闭包捕获的是变量的引用,而不是变量的值。这意味着闭包会引用变量的实际内存位置,而不是在闭包创建时复制变量的值。为了避免在循环中创建多个闭包时出现意外的结果,可以使用匿名函数参数或将循环变量赋值给一个新的局部变量,确保每个 goroutine 捕获的是不同的变量。这两种方法都可以有效解决这个问题,确保每个 goroutine 打印出预期的值。

2024-11-21 15:08:36 561

原创 C++相等和等价的区别?哪些类型的容器使用相等或等价?

很多人在std::set中使用自定义对象时,总是疑惑为啥不实现operator==而是实现operator

2024-09-15 22:41:03 317

原创 std::ios::in与std::ios::out为什么in是读取数据而out是向文件写入数据,以及打开文件时用std::ios::binary | std::ios::in中的in是否多余?

seein注释的事 Open for input,很多同学读到这里就怀疑自己学的英语是不是写错了,这里命名写的是input为啥是读取文件???如果你也有这个疑惑,那说明你把作用对象搞混了,这里的input相对于ifstream 或者fstream来说的,向ifstream input数据,可不就是从文件中读取数据吗。

2024-09-13 16:32:07 536

原创 使用共用体union来管理内存空闲链表将内存压榨到极致

在看STL内存管理时看到一个很不起眼的数据结构,因为以前没有见到过类似的用法,本着STL中没有废物的原则,因此很好奇,结果一查不得了,原来这个使用方法那么精妙。图中的free-list使用的结构体就是 _Obj,白色的条为已经分配给客户端,那么这些已经分配的使用。经常写C/C++也肯定知道,也相当于一个指针,用来引用数据,那么为什么放两个指针在一个公用体里面?字段,因此客户端能够直接使用到首个字节。当这些内存空闲时使用。这样使用之后能将内存压榨到极致。代码中是一个公用体,首个是指向自己本身类型。

2024-05-17 23:24:24 350

原创 leveldb中到处可见的std::aligned_storage是怎样使用的

是 C++11 引入的另一个内置运算符,用于获取给定类型的对齐要求。数据类型在内存中的存储位置通常需要满足特定的对齐条件,以确保访问效率和硬件兼容性。对象且满足其对齐要求的存储区域类型。这种类型常用于实现基于placement new的手动内存管理、类型擦除、对象池等技术,允许在需要时动态创建或销毁。是 C++ 内置运算符,用于获取给定类型的大小(以字节为单位)。类型对象且满足其对齐要求的未初始化的存储区域。头文件中定义的一个模板类,它接受两个模板参数:所需存储空间的大小(由。类型对象所需的内存空间大小。

2024-04-25 09:56:03 328

原创 leveldb中THREAD_ANNOTATION_ATTRIBUTE__宏的作用

宏在 LevelDB 或类似的 C++ 项目中用于指定线程安全相关的源码注解(Source Code Annotation),这些注解有助于清晰地表达程序中函数、变量、类型等元素在多线程环境中的行为特征和并发保证。这样的注解不仅有助于人类阅读者理解代码的线程安全意图,更重要的是它们可以被编译器的静态分析工具识别和利用,以进行潜在的线程安全问题检测。宏及其展开的注解,开发者可以增强 LevelDB 源码的线程安全性,同时借助支持的编译器工具进行静态分析,提前发现潜在的并发问题,提高软件质量。

2024-04-25 09:10:27 547

原创 使用C++实现尾插式循环链表结构

总结起来,这段代码提供了一个简洁而实用的尾插式循环链表的实现,适用于需要高效进行顺序添加和按最近添加顺序删除元素的场景。用于创建新节点并将新节点插入到链表的尾部,即每次新增节点都会成为新的末尾节点。因此有必要实现一款属于自己的双向链表,这样在有需要的时候就能随时增加自己的特性,让链表更好的服务于其他模块。在使用C++实现链表时,我们需要实现两个主要的类:1. node节点类 ,2. 链接node节点的类。,该节点的前驱和后继均指向自身,形成一个空链表的“闭环”。,它作为链表中的实际节点实现。

2024-04-24 22:26:12 616

原创 nohup的作用

命令在Linux环境中为用户提供了一种便捷的方式来启动能在用户退出终端后继续在后台运行的命令或脚本,确保这些任务不会因用户的临时离线而中断,并通过重定向输出方便用户事后检查进程运行情况。其主要作用是允许用户在一个终端会话中启动一个命令或程序,使得该命令或程序能够忽略挂断(SIGHUP)信号,并在用户退出终端(如关闭窗口、断开SSH连接)或注销账户后继续在后台运行。这样,命令的执行不会阻塞用户的终端,用户可以继续在同一个终端中执行其他命令或关闭终端而不影响已启动的后台进程。的脚本,并将输出重定向到默认的。

2024-04-23 10:11:02 299

原创 什么是RabbitMQ

在 RabbitMQ 中,Exchange 是一个特殊类型的队列,它负责接收生产者的消息并将其路由到一个或多个队列。总之,Topic Exchange在RabbitMQ中提供了一种灵活的消息路由机制,允许将消息路由到不同的队列,以满足不同的业务需求。通过Exchange:topics特性,每个Queue都有属于自己的分类,通配符类型的路由。负责将信息丢到Queue中,若有定义Exchange,则丢给Exchange决定要给谁。负责存放消息,具有FIFO先进先出的特性,每个Queue都会有独立的ID编号。

2024-01-22 16:55:17 1214 1

原创 LevelDB之WriteBatch-事务分离的事务处理器

public:public:// 支持copy构造函数// 支持赋值操作// Put 将Key-value形式的值存储在数据库中// 当某个值不想要时,按照key值将对应的键值对删除// 将 batch中所有的缓存清理,并预留出长度和序列号字段足够的长度// 获取batch内部指标数据长度,也就是获取rep_的大小// 当有多个batch想合并时,可以使用append将batch添加到另外衣蛾batch后面。

2024-01-17 15:56:53 299

原创 彻底搞懂C++中string::npos

C++手册里面给出的定义是这样的,string::npos就是一个公有的静态的常量类型的成员变量。使用前需要包含头文件。(-1);这里的size_type就是类型size_t,size_t是一个无符号整形,那么-1也就是其最大值。

2024-01-03 11:23:32 3741 1

原创 Markdown的表格还能这样玩?

写代码相关的文档,避免不了使用markdown,由于其简单的语法,轻便的格式,让办公效率倍增。但是使用markdown有个致命的问题,那就是当需要绘制表格时,markdown只能支持简单的m*n类型的表格,如下是个3*4的表格。当然这种表格应付日常所见的功能足够了,但是很多表格并不是这样简单的表格能表达的,只是使用markdown语法并不能创建出我们想要的表格。但是我们可以采用曲线救国的方法,markdown不是支持html吗,那我们就来用html来绘制个性化的表格吧。这里同样创建了3 * 4。

2023-12-28 17:15:38 541

原创 linux内存寻址原来那么简单

以上就是计算机进行内存寻址的全过程,当然分页单元的过程主要是软件实现的,这里没有对linux的实现接口进行说明,如果感兴趣的可以下载linux 2.6版本查看,虽然新版本的linux分页单元有改动,但是还是推荐你看下2.6版本的,这个版本的功能实现更加的纯粹,也更容易理解。段是代码段、数据段、栈段,按照是否是内核态,又可以分为内核代码段、内核数据段、内核栈段,用户代码段、用户数据段、用户栈段,图中给出的Selector就是用来确定使用哪个段的。因为分段主要靠硬件,而分页主要靠软件。

2023-12-24 16:37:33 999

原创 使用Qt Installer Framework将自己的程序打包成安装包程序

制作安装包程序就是将自己的程序打包成一个可执行的exe,双击之后进行安装。

2023-11-02 17:22:54 2098 2

原创 QT的ui设计中改变样式表的用法

首先我们说一下这个功能具体是干嘛的, 我们在设置很多控件在界面上之后,常常都是使用系统默认的样式,但是当有些时候为了美化界面我们需要对一些控件进行美化这个时候就要用到样式表了,通过修改样式表可以实现对控件样式的任意改变。,用来设置对应类的样式,然后点击Apply就可以看到QPushButton的颜色已经发生了改变。在QT的ui设计中,我们右键会弹出一个改变样式表的选项,很多人不知道这个是干什么的。将光标停留在大括号中,选择添加颜色的小箭头,然后选择背景颜色。首先我们来看下具体的界面。

2023-09-27 23:54:15 979

原创 Qt中事件的处理

我们可以通过setCursor来改变光标的形状,每个继承Widget类的子类都有这个函数,这个函数一旦设置,鼠标的形状就会一直改变。如果在处理事件时,我们只是想,在事件触发时改变鼠标形状,当事件结束时鼠标形状自动修改回来,可以通过临时改变形状的接口进行设置。相对于鼠标事件按键事件反而简单一点,因为按键比较多,所以只需要监测按键的按下和释放即可。当一些时间到来时, 我们可能不想交给对应的组件,这个时候我们就需要用到事件过滤功能了。当然同样的效果也能使用QTimer实现。鼠标事件常用以下几个接口来处理。

2023-09-26 22:09:17 412

原创 自定义拖拽操作

完整源码: https://github.com/zzu-andrew/QT_examples/tree/main/qt_imagedragdrop。我们接下来会实现一个在窗口中拖拽图片的例子,具体功能就是窗口中有一个图片可以任意的拖拽移动这张图片。

2023-09-18 22:47:26 161

原创 拖放操作-拖动文件直接在窗口中显示文件内容

我们通过ui设计的时候,实际上是在和两个控件打交道,一个是主窗口一个是textEdit窗口,因此除了上述接口的实现我们还需要限制一下主窗口和textEdit窗口的行为。这里我们可以通过勾选ui界面的参数选项或者直接在代码中声明,因为我们这里重载的是主窗口的拖拽接口,因此在这里需要将主窗口设置为true,textEdit窗口的拖拽行为设置为false,为什么这样设置才可以,因为这个示例中我们重载的接口是主窗口的拖拽功能而不是textEdit接口的拖拽功能,因此需要将textEdit默认拖拽功能进行限制。

2023-09-17 11:28:06 578

原创 设置伙伴(buddy)-给窗口控件增加快捷键

在官方教程或者很多qt程序中经常看到能使用全键盘操作软件,那么QT creator也支持了这一特性,就是使用设置伙伴来实现的。最终进行预览,只需要按住Alt+对应的字母即可实现将输入光标跳转到对应的输入框中。

2023-09-14 22:42:35 272

原创 Qt消息机制和事件

事件是由Qt或者系统在不同时刻发出的,当敲下鼠标,或者按下键盘,或者当窗口需要重新绘制的时候,就会发出一个相应的事件,一些操作由用户的操作发出,一些则由系统自动发出,如系统定时器事件等。事件对象创建完成之后,Qt将会把事件传递给这个事件的event()函数,event函数并不是直接处理事件而是将事件按照不同类型分发给不同的事件处理器。Qt事件是整个Qt框架的核心,也比较复杂,因为里面牵涉到的函数众多,处理方法也有很多,但是只要耐心的整理一下,实际项目中真正用到的也就那几个经典的。

2023-09-14 00:00:36 399

原创 Qt的窗口系统

Qt 支持模态对话框和非模态对话框。使用 QDialog::exec()实现应用程序级别的模态对话框使用 QDialog::open()实现窗口级别的模态对话框使用 QDialog::show()实现非模态对话框。Qt有两种级别的模态对话框应用程序级别的模态当这种对话框出现时,用户必须首先对对话框进行交互,直到对话框关闭,才能访问程序的其他窗口窗口级别的模态该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其他窗口交互一般情况下,默认都是应用程序级级别的模态。

2023-09-10 22:38:14 774

原创 信号和槽机制

使用connect接口不但能使用官方提供的接口也能使用自定义的信号槽,下面我们来实现一个自定义的信号和槽的使用。Q_OBJECTpublic:// 通过emit调用信号接口发出信号signals:// 用来发送信号的接口private:定义的类需要继承QObject类,只有继承了这个类才具有信号槽的能力。

2023-09-08 23:30:24 185

原创 创建QT项目

经过了令人苦恼的版本选择,然后又经历了IDE熟悉以及纯C++应用的创建,接下来终于进入了激动人心的时刻-开启第一个QT项目。

2023-09-07 20:45:46 246

DB leveldb实现解析

DB leveldb实现解析

2023-08-15

DB redis设计与实现

DB redis设计与实现

2023-08-15

Java-Interview-超全集合github上评分最高的jiva面试题

Java-Interview-超全集合github上评分最高的jiva面试题

2023-08-15

The Robert C. Martin Clean Code Collection - Martin, Robert C-.m

The Robert C. Martin Clean Code Collection - Martin, Robert C_.mobi by The Robert C. Martin Clean Code Collection - Martin, Robert C_.mobi (z-lib.org)

2023-08-15

Technical Overview of LoRa and LoRaWAN-TÜV Rheinland

Technical Overview of LoRa and LoRaWAN_TÜV Rheinland

2023-08-15

Getting Started with LevelDB-Andy Dent

Getting Started with LevelDB_Andy Dent 使用具体实例来深入了解和学习levelDB

2023-08-15

Alice and Bob: A History Of The World’s Most Famous Couple

Alice and Bob: A History Of The World’s Most Famous Couple

2023-08-07

福昕阅读器--linux最新版

福建福昕软件开发股份有限公司(Foxit Software Incorporated)是一家国际化运营的PDF电子文档解决方案提供厂商,是国际PDF协会主要成员、中国版式文档OFD标准制定成员。福昕在亚洲、美洲、欧洲和澳洲设有多家子公司,福昕直接用户已超过5.6亿,企业客户数达10万以上,遍及世界200多个国家和地区。2020年9月8日,福昕软件正式在上交所科创板挂牌上市,股票代码:688095,证券简称:福昕软件。 福昕具有完全自主产权的PDF核心技术,提供文档的生成、转换、显示、编辑、搜索、打印、存储、签章、表单、保护、安全分发管理等涵盖文档生命周期的产品技术与解决方案。 福

2020-11-14

dbeaver-ce_7.2.4_amd64最新版本|dbeaver-ce_7.2.4_amd64.deb

已下载 28.2 MB,耗时 12秒 (2,441 kB/s) 正在选中未选择的软件包 ca-certificates-java。 (正在读取数据库 ... 系统当前共安装有 203570 个文件和目录。) 准备解压 .../ca-certificates-java_20190405ubuntu1_all.deb ... 正在解压 ca-certificates-java (20190405ubuntu1) ... 正在选中未选择的软件包 java-common。 准备解压 .../java-common_0.

2020-11-14

最新GeoLite2资源整合.zip

开源的IP地理数据库GeoLiteCity,类似于GeoIPCity,但不如后者精确。免费数据库GeoLite的格式与收费数据库GeoIP相同。任何可以读取GeoIP的代码都可以读取GeoLite。其存储是MaxMind DB格式。 里面放了 GeoLite2-City.mmdb(等同于GeoLite2-Citt.dat 该文件形式已经被wireshark弃用,使用GeoLite2-City.mmdb能完全兼容),国家字段的csv文件以及城市的csv都放到里面,可以打包下载

2020-10-03

C++基础课程讲义.pdf

面向过程的结构化程序设计方法  设计思路 – 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。  程序结构: – 按功能划分为若干个基本模块,形成一个树状结构。 – 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序 、 选择和循环三种基本结构组成。 – 其模块化实现的具体方法是使用子程序。  优点: 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发 和维护。  缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件 – 把数据和处理数据的过程分离为相互独立的实体。 – 当数据结构改变时,所有相关的处理过程都要进

2020-09-26

strtok的赞歌.pdf

标记解析(`Tokenizing`)是最简单也是最常见的解析问题,也就是根据分隔符把一个字符串分割为几个部分。这个定义覆盖了所有这种类型的任务。根据空白分隔符(例如`" \t\n\r"`之一)分割单词。假设有个像`"/usr/include:/usr/local/include:."`这样的路径,在冒号处将其分开,形成单独的目录。根据一个简单的换行分隔符`"\n"`把一个字符串分割为不同的行。可以使用一个配置文件,包含`value = key`格式的行,在这种情况下分隔符就是`"="`。在数据文件中以逗号分隔的值当然是以逗号为分隔符。我们可以采取两个层次的分割来分别进行处理。例如读取一个完整的配置文件,首先根据换行符进行分割,然后在每行根据=进行分割。

2020-04-19

bsearch.zip

The bsearch() function searches an array of nmemb objects, the initial member of which is pointed to by base, for a member that matches the object pointed to by key. The size of each member of the array is specified by size. The contents of the array should be in ascending sorted order according to the comparison function refer‐ enced by compar. The compar routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member.

2020-04-18

2.变量和参数的介绍.md

变量是什么,变量是脚本编程中进行数据表现的一种方法,说白了,变量不过是计算机为了保留数据项,而在内存中分配的一个位置或一组位置的标识或名字。

2020-01-16

RFC2616中文翻译-有待改进.odg

- 支持客户/服务器模式。 - 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规 模小,因而通信速度很快。 - 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。 - 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的 应答后,即断开连接。采用这种方式可以节省传输时间。 - 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着 如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在 服务器不需要先前信息时它的应答就较快。

2020-01-15

Sqlite3.pdf

## 使用SQLite创建数据库 **sqlite3_open(const char \*filename, sqlite3 \**ppDb)** 如果 *filename* 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。 简单的来说就是会打开一个数据库文件,文件不存在就会创建一个对应名字的数据库文件

2019-06-30

GDB就该这样用

因为执行脚本的时候会自动新启用一个子 bash因此在脚本中设置的ulimit -c unlimited 并不能产生核心转存储文件,需要执行可执行文件之前手动设置一下 ulimit -c unlimited ------ DEBUG 是在linux下使用dbg的记录,一下的文件是在UBUNTU 16.04上验证通过的

2019-05-04

IPC进程间通信

- IPC对象(消息队列、共享内存和信号量)存在于内核而不是文件系统中,由用户控制释放(用户管理IPC对象的生命周期),不像管道的释放由内核控制。 - IPC对象通过其标识来引用和访问,所有的IPC对象在内核空间中唯一性标识ID,在用户空间中的唯一性标识称为Key. - IPC对象是全局对象,可以通过ipcs,ipcrm等命令来查看或删除 - 每个IPC对象都由get函数创建

2019-05-03

pycharm快捷键

python IDE常用快捷键,用于日常查看使用pycharm,包含所有pycharm上的快捷键及其使用方式

2019-05-03

ubuntu搭建ftp服务器

自己的环境是ubuntu16.04搭建的ftp环境,测试能够使用,并将相应的资源上传共享也能够方便自己日后使用

2018-08-26

在ubuntu上配置ftp服务器的说明文档,亲测可用(图片)

环境是ubuntu16.04,配置ftp服务器的文档,亲测可用,所以上传分享,也可以方便自己今后再次配置使用(图片)(图片)

2018-08-26

vim配色,用于配置viim

vim配色,让自己的vim像IDE一样工作,你想要的配置里面都有,只需要去掉自己不想要的设置就行

2018-08-25

最经典的bash资料

最经典的bash   shell编程资料因为网上买不到书本,就自己打印了一本,真的非常棒

2018-08-25

linux上的可以绘制思维导图的软件

资源是可以安装在linux上的回执思维导图的软件,非常的好用

2018-08-25

自己参考网上的资源配置的vim编译器配置文件

因为ubuntu自带的vim使用的不是很方便,于是就自己动手参考网上的教程,配置了自己的vim环境, 源文件的路径和名称是  /etc/vim/vimrc 要是用户不行执行本用户使用不影响其他用户的配置可以将该文件改名为   .vimrc并放到  ~  目录下面

2018-08-25

配置samba服务器的配置文件备份

自己使用的是ubuntu16.04与自己的windows主机在在进程资料传输的时候一直使用ftp但是这样做很不方便,于是自己就折腾了一下配置了samba服务器,为了方便以后重装系统之后还需要重新配置就将配置文件进行了copy源文件的路路径和名称是  /etc/samba/smb.conf

2018-08-25

GPS-6M-模块+DMA上传

更改的原子的GPS使用串口3+DMA进行GPS的数据接收

2017-07-28

MPU6050模块STM32驱动代码

自己移植的MPU6050程序,采用宏编译将MPU9150的寄存器也加了进去可以同时支持MPU6050和MPU9150两种模块

2017-07-28

matplotlib

Matplotlib_slides.pdf

2017-01-02

空空如也

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

TA关注的人

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