自定义博客皮肤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

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

原创 两张图看懂UMA与NUMA

NUMA系统中因为内存可以连接到不同的内存上,因此具有更好的内存扩展性。因为在NUMA系统中想要存取不同内存上的数据时,需要核心直接交互才能实现,跨NUMA会导致几纳秒的时间浪费,因此如果程序对性能比较敏感需要将程序绑定到指定的NUMA上,以此来避免不同NUMA之间核的交互。在拥有多个多核处理器的共享内存系统中,互联网络可以将所有的处理器直接连接到主存上,或者将每个处理器直接连接到一块内存,通过处理器内置的特殊的硬件使得各个处理器可以访问内存中的其他块。

2022-10-17 09:48:07 1427

原创 swig封装C/C++实战-实现go调用C++然后C++在调用go

代码组织结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AS1ZsCqX-1660366325978)(image/-16603662235741.png)]以下所有文件生成指令都是:Goinexample.i 文件mian.go测试文件Exampleexample.iexample.hexample.cppmain.goVariablesmain.goexample.iexample.hexample.c枚举型变量封装example.iex

2022-08-13 12:56:18 877

原创 SWIG教程-对C/C++语言的封装《三》

命名空间作为C++的一项基础功能,在swig支持的很好,但是如果不使用指令控制swig遇到一些比较棘手的问题还是会直接报错,比如默认情况下两个命名空间中有相同的类时,swig将无法区分两个类,因为swig的默认处理是将所有的命名空间的种类型都完全暴露出来,因为目标语言中可能没有明明空间这个概念(go语言也是后期才添加上的)通过设置directors可以让swig实现对回调函数的封装,设置之后swig会在对应的目标语言中生成目标语言的回调函数封装。当函数是类的成员函数时,这时需要在类内进行模板封装。.....

2022-08-10 11:19:10 995

原创 SWG教程《四》- go语言封装

go语言不支持直接调用C或者C++语言,虽然通过cgo转接go可以实现对c的调用,但是调用过程各种数据类型之间无法还是无法直接转换,使用起来也不是很方便,而swig刚好能够填补这个空白而且只要是go 1.2之后的版本,可以通过go build直接使用swig生成的源码虽然swig会尽量将C、C++封装成go代码,但是由于两种语言之间的不同,还是会有部分改动在里面,比如const类型通过只对外提供Get接口来实现,通过defer来实现对对象内存的管理等。......

2022-08-10 10:35:45 423

原创 SWIG教程-封装指令的使用《二》

但是需要注意的是,inline只是对函数和变量有效,对于头文件的引用是否封装,还是需要原有的方式,在代码块中使用#include 引入头文件,而需要封装成目标代码的头文件需要在代码块外使用%include指令来告知swig需要对该头文件进行封装。很多C类型的结构体是不能绑定成员函数的,但是其他函数中都能,为了提供便利swig支持为C类型的结构体绑定额外的成员函数用来辅助结构体的创建和使用,这时就要用到%extend指令了。一些需要传入回调的函数,需要提前声明,不能将目标函数实现的函数直接传入。......

2022-08-10 10:24:49 665

原创 swig教程-指令文件《一》

为了区分不同语言以及在部分指导文件中能够区别进行,siwg中提前预定义了一些变量为了更好的实现对源码的封装,swig提供了一种增强型的宏定义指令, %define 和 %enddeffree(t);

2022-08-10 10:01:22 1157

原创 深入理解LInux ELF可执行程序

一个源文件在生成可执行程序的过程中地址需要经过以下几个主要步骤。源文件在经过编译器处理之后会生成可重定位目标文件,也就是我们常见的.o文件,经过链接器处理之后,会将多个.o文件处理成可执行文件。 称为可重定位目标,包含二进制代码和数据,其形式可以和其他目标进行合并,创建一个可执行目标文件因为.o文件也是ELF文件的一种,所以我么可以使用readelf -h 来查看.o文件的elf头数据通过与文件头结构体对比首先看到的是Magic魔法数字,这些数字的大小由宏定义 来进行限定,Magic放在ELF文件

2022-06-25 13:09:55 1062

原创 tcpdump常用技巧以及wireshark借助tcpdump实现跨设备远程抓包

tcpdump - dump traffic on a network interface[IMPORTANT].Feeding the Werewolves认识tcpdump刚开始接触tcpdump肯定会被这些参数给吓到,其实实际使用中只需要掌握几个关键的参数就行了。53端口是DNS使用的端口,DNS分为查询和应答:DSN requires – DNS response,来让我们看一下我们的电脑在查询哪些DNS[TIP]我有个程序,监听所有的网卡上,监听端口是1668,我应该如何抓包...

2022-06-16 23:34:06 355 1

原创 C++常见知识点总结-关键字作用的解释

C++常用关键字知识点总结

2022-06-05 12:07:07 601

原创 go语言定义二维数组

使用go语言二维数组go语言不用管理内存,很多地方使用起来确实很方便,但是在算法方面确实没有C++优秀,特别是缺少像STL一样优秀模板,定义一个二维数组需要进行如下复杂的操作:go语言的二维数组定义和初始化比较特殊,需要先初始化行数再初始化列假设要定义一个,行数为row, 列数为column的二维数组,怎可以按照如下方式实现// 先初始化一个二维数组,数组为row行,每行存储一个切片,具体大小先不定dp := make([][]int, row)// 然后再为每行申请一个 column的数组放入

2022-03-28 22:17:33 4559

原创 那些值得学习的C++框架和常用库

标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统的C标准库规范ISO C++ Standards Committee :C++标准委员会框架C++通用框架和库Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的

2022-03-14 11:34:13 7226 1

原创 LFUCache

LFUCacheLFU是Least Frequently Used的缩写,即最不经常最少使用算法,也是一种常用的页面置换算法,选择访问计数器最小的页面,并予以淘汰。根据LFU的策略,我们每次访问对象都需要更新访问计数器,当插入B的时候,发现缓存中有B,所以增加访问计数器,兵把B移动到访问计数器从大到小排序的地方。当插入一个元素时,先更新访问计数器,在移动到它排序以后的位置,如果页面中已经满了,就将末尾的元素进行剔除当插入一个数据时,尾部有多个数据计数器值相同,这个时候插入是从相同计数器顶端开始插入

2022-03-13 23:47:05 871

原创 LRUCache

LRUCacheLRUCache又称为最近很少使用算法,不是说这个算法最近很少使用,是算法的名字叫做最近很少使用LRU是 Least Recently Used的缩写,即最近很少使用,是一种常用的页面置换算法,选择最近很久未使用的页面予以淘汰。LRUCache是一种缓存策略,持有的是强引用,但是会控制在一个峰值下。它内部维护了一个队列(允许插队的队列),每当从中取出一个值时,该值就移动到队列的头部。当缓存已满而继续添加时,会将队列尾部的值移除,方便GC。LRUCache用于内存缓存,在避免程序发生OO

2022-03-13 16:29:56 992

原创 算法中常用位操作

算法中常用位操作1.1 异或操作x ^ 0 = xx ^ 1111...1111 = ~xx ^ (~x) = 1111...1111x ^ x = 0a ^ b = c ==> a ^ c = b ==> b ^ c = aa ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c1.2 构造特殊的Mask,将特殊位置放0或者1x & (~0 << n) // 将x右边n位清零(x >> n) & 1 //.

2022-03-13 16:27:16 509

原创 线段树segment_tree go语言实现

线段树(segment tree)什么是线段树线段树是一种二叉搜索树,什么叫做二叉搜索树,首先满足二叉树,每个结点度小于等于二,即每个结点最多有两颗子树,何为搜索,我们要知道,线段树的每个结点都存储了一个区间,也可以理解成一个线段,而搜索,就是在这些线段上进行搜索操作得到你想要的答案。线段树是建立在线段的基础上,每个结点都代表了一条线段[a,b]。长度为1的线段称为元线段。非元线段都有两个子结点,左结点代表的线段为[a,(a + b) / 2],右结点代表的线段为[((a + b) / 2)+1,b]

2022-03-11 22:29:22 814 1

原创 为什么`malloc`出来的内存也能当成对象正常使用

为什么malloc出来的对象也能正常使用新学习C++语言的人会感觉到很疑惑,因为相比于C语言,C++多了个类;也正是这个类给很多人带来了困扰,class究竟是什么,它和struct的差别又是什么?结构体我们能使用new申请,也能使用malloc申请使用都没有问题,但是在类的创建教科书中给的方法是使用new进行创建。为什么一定要使用new进行创建?搜索new和malloc的区别我们可以看到如下说明:malloc与free是c++/c语言的标准函数,new/delete是C++的运算符。new返回指

2022-03-01 11:02:44 561

原创 从使用角度看何为zookeeper

Zookeeperzookeeper作用作用:中间件,提供协调服务,提供协助运算,协助管理存储等功能作用于分布式系统,发挥其优势,可以为大数据服务支持java,提供java和c语言的客户端Api特性:一致性:数据一致性,数据按照顺序分批次入库原子性:事务要么成功要么失败,不会局部化单一视图:客户端链接集群中的任一节点,数据都是一致的可靠性:每次对zk的操作状态都会保存在服务端实时性:客户端可以读取到zk服务端的最新数据作用体现:Master节点选举,主节点挂了之以后,从节

2022-01-13 23:08:06 916

原创 zk客户端操作手册

ZooKeeper-cli: the ZooKeeper command line interfacePre-requisitesEnter into the ZooKeeper-cli# connect to the localhost with the default port:2181bin/zkCli.sh# connect to the remote host with timeout:3sbin/zkCli.sh -timeout 3000 -server remoteIP:2181

2022-01-03 23:34:16 2132

原创 C++list常用接口总结

List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件如果使用的数据插入和删除特别多的话可以考虑使用list来进行数据管理#include <iostream>#include <list>#include <algorithm>using namespace std;int main(int argc, char *argv[]) { list<int>

2021-12-30 23:07:54 368

原创 系统调用或崩溃

5系统调用或崩溃这是我们进入系统调用(和其他库调用)的部分,这些调用允许您访问Unix框或任何支持套接字应用编程接口的框的网络功能(BSD、视窗、Linux、苹果、你有什么)。)当你调用其中一个函数时,内核会自动接管并为你完成所有工作。大多数人被困在这里的地方是调用这些东西的顺序。在这种情况下,手册页是没有用的,正如你可能已经发现的那样。为了帮助解决这个可怕的情况,我试图在下面的部分中以与你在程序中调用它们完全``*(大约*``)相同的顺序列出系统调用。再加上到处都是一些示例代码,一些牛奶和饼干(我

2021-12-06 20:20:46 1080

原创 C++内存模型和原子类型操作

C++内存模型和原子类型操作std::memory_order初探动态内存模型可以理解为存储一致性模型,主要是从行为上来看多个线程对同一个对象读写操作时所做的约束,动态内存理解起来会有少许复杂,涉及到内存、Cache、CPU的各个层次的交互。如下有两个线程,分别对a、R1、b、R2进行赋值,根据线程执行的顺序可能有以下几种情况在不对线程进行任何限制,线程内部指令不进行重排的情况下。可以有4!/(2!*2!)=6中情况在不考虑优化和指令重排的情况下,多线程有如下两种情况:程序最终执行的结果,是

2021-10-12 21:52:41 311

原创 linux下gdb调试方法和技巧详解

linux下gdb调试方法和技巧整理简介UNIX或者UNIX-like下调试工具启动gdb# 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid_test # 2. 可执行程序需要输入参数时, 我们使用 gdb --args + 可执行程序 + args gdb --args ./MPEG2TransportStreamIndexer1 /work/video/sky.ts # 3. 连接已经运行的程序 gdb -p + pid #

2021-10-11 23:36:32 6581

原创 Go Embed简明教程

Go Embed简明教程go语言程序都是编译成二进制可执行文件的,但是实际执行时除了需要可执行程序,还需要一些静态文件,比如html模板等,于是就有人想如果Go官方能内建支持就好了。2019末一个提案被提出 issue#35950,期望Go官方编译器支持嵌入静态文件。后来Russ Cox专门写了一个设计文档 Go command support for embedded static assets, 并最终实现了它。需要注意的这个功能在go 1.16beta之后才支持对于单个的文件,支持嵌入为

2021-09-26 21:47:00 2576

原创 Linux CPU cache

CPU cache目前的CPU都是有三级缓存,一级二级是每个CPU独有的,三级缓存是所有CPU共有的,其中L1的缓存分为数据缓存和指令缓存,如下图所示:虚拟化: VT-xL1d 缓存: 128 KiB // L1数据缓存L1i 缓存: 128 KiB // L1 指令缓存L2 缓存: 1 MiBL3 缓存

2021-09-20 12:25:26 226

原创 C++库文件导出可见性

导出符号C++中除了语言级别的访问特性(公有、私有和保护)外,还有两个相关的概念允许暴露API中的符号,它们位于物理层次,分别是:外部链接导出可见性外部链接外部链接这个术语是指一个编译单元中的一个符号可以被其他编译单元访问,而导出是只在库文件中可见的符号。只有外部链接才可以导出。我们先看下外部链接,这是决定客户是否可以访问共享库中符号的第一步。特别地,除非采取强制措施,否则.cpp文件中(文件作用域)的全局自由函数和变量会有外部链接。举个栗子:// Uncomment the next

2021-09-19 09:00:08 336

原创 Linux的Page Cache

1. Page Cache何为Page Cache为了了解Page Cache我们可以看一下Linux的文件I/O系统从图中可以看出,Page Cache是由Linux内核进行管理的,而且通过mmap以及bffered I/O将文件读取到内存空间实际上都是读取到Page Cache上的。如何查看系统的Page Cache?通过读取cat /proc/meminfo文件,查看系统实时内存情况。...Buffers: 117572 kBCached: 273

2021-09-11 17:44:01 1366

原创 C++并发编程线程间共享数据std::future和sd::promise

线程间共享数据使用互斥锁实现线程间共享数据为了避免死锁可以考虑std::lock()或者boost::shared_mutex要尽量保护更少的数据同步并发操作C++标准库提供了一些工具 可以用于同步操作,形式上表现为条件变量(condition variables)和期望(futures)C++标准中有两套实现std::condition_variable和std::condition_variable_any这两个实现都包含在<condition_variable>头文件中,前

2021-09-04 00:07:54 426

原创 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)

使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)使用beep播放mp3文件(10num)使用go语言GUI库fyne实现音乐播放器要是想使用go语言实现播放mp3需要借助beep库,在github上有已经开源的库路径如下:beep库文件路径下面的代码只是实现了简单的播放功能,没有暂停和快进的功能package mainimport ( "github.com/faiface/beep" "github.com/faiface/beep/mp3" "gi

2021-08-25 22:25:36 2014

原创 使用go语言GUI库fyne绘制一个交通标志

绘制一个交通标志首先实现一个函数makeSign(),该函数返回fyne.CanvasObject对象,对象中实现所有的图形func makeSign() fyne.CanvasObject { bg := canvas.NewCircle(color.NRGBA{R: 255, A: 255}) bg.StrokeColor = color.White bg.StrokeWidth = 5 bar := canvas.NewRectangle(color.White)

2021-08-24 23:28:38 611

原创 golang的GUI库,使用go-fyne设计一个代办事项APP

Designing task list我们在这一节中将会设计一个,左边是列表,右边列表中代办事项的具体内容实现效果如图:实现该需要使用总共用了两个文件,一个task_list.gopackage mainimport ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "ti

2021-08-16 23:12:37 2151

原创 C++内存模型和原子类型操作

C++内存模型和原子类型操作std::memory_order初探动态内存模型可以理解为存储一致性模型,主要是从行为上来看多个线程对同一个对象读写操作时所做的约束,动态内存理解起来会有少许复杂,涉及到内存、Cache、CPU的各个层次的交互。如下有两个线程,分别对a、R1、b、R2进行赋值,根据线程执行的顺序可能有以下几种情况在不对线程进行任何限制,线程内部指令不进行重排的情况下。可以有4!/(2!*2!)=6中情况在不考虑优化和指令重排的情况下,多线程有如下两种情况:程序最终执行的结果,是

2021-08-15 21:06:23 532

原创 万字长文带你一文读完Effective C++

Effective C++视C++为一个语言联邦STL Template C++ C Object-oriented C++一开始C++只是C加上一些面向对象特性,但是随着这个语言的成熟他变得更加无拘无束,接受不同于C with classes的各种观念、特性和编程战略。异常对函数的结构化带来了不同的做法,templates将我们带来到新的设计思考方式,STL则定义了一个前所未见的伸展性做法。今天C++已经是个多重范型编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式

2021-08-10 20:15:40 1092

原创 Implicit Move Must Go

Implicit Move Must Go– 转载出处Document Number: N3153=10-0143Document Date: 2010-10-17Author: Dave Abrahams dave@boostpro.comWhat is Implicit Move?In N2855, the authors described a surprising effect that occurs when “legacy” C++03 types are combined in t

2021-07-22 09:06:34 489

原创 移动语义-右值引用一文弄懂带你一探究竟

C++ 右值引用block://6984617523950616580?from=docs_block&id=ce31003ceb5efb1f7a7c0a5fbe6cb60191627a38右值的引入作为在C++11中引入的一个类型,容易引起误解的是,右值引用并没有说明引入是为了什么,是为了解决什么问题。右值引用可以解决以下问题实现移动语义完美转发左值和右值来自原先的C语言,左值可以出现在赋值左边或者右边,而右值只能出现在赋值的右边int a = 42;int b = 4

2021-07-18 16:20:08 397 1

原创 一文读懂什么是C++移动语义《一》

C++ 右值引用block://6984617523950616580?from=docs_block&id=ce31003ceb5efb1f7a7c0a5fbe6cb60191627a38右值的引入作为在C++11中引入的一个类型,容易引起误解的是,右值引用并没有说明引入是为了什么,是为了解决什么问题。右值引用可以解决以下问题实现移动语义完美转发左值和右值来自原先的C语言,左值可以出现在赋值左边或者右边,而右值只能出现在赋值的右边int a = 42;int b = 4

2021-07-15 23:07:56 289 2

原创 使用fyne绘制一个交通图标

fyne绘制一个交通标志首先实现一个函数makeSign(),该函数返回fyne.CanvasObject对象,对象中实现所有的图形func makeSign() fyne.CanvasObject { bg := canvas.NewCircle(color.NRGBA{R: 255, A: 255}) bg.StrokeColor = color.White bg.StrokeWidth = 5 bar := canvas.NewRectangle(color.Whi

2021-07-13 23:23:30 743

原创 live555实现视频格式数据流化处理

MPEG2TransportStreamIndexerMPEG2TransportStreamIndexer主要实现了对视频数据流化,要想实现对视频的点播,要同时具备.ts和.tsx文件,MPEG2TransportStreamIndexer示例代码可以完成这个过程。其中用到的类的继承关系如下:将ts流化需要四个主要的步骤,分别为:打开要流化的视频文件根据打开的文件创建index打开流化之后文件的输出开始每取一帧视频数据转换为流之后输出到输出文件中,重复直到文件结束具体实现如下://

2021-07-04 14:29:17 458

原创 EffectiveC++编程的50个建议

视C++为一个语言联邦一开始C++只是C加上一些面向对象特性,但是随着这个语言的成熟他变得更加无拘无束,接受不同于C with classes的各种观念、特性和编程战略。异常对函数的结构化带来了不同的做法,templates将我们带来到新的设计思考方式,STL则定义了一个前所未见的伸展性做法。今天C++已经是个多重范型编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。这些能力和弹性使C++成为一个无可匹敌的工具,因此、将C++视为一个语言联邦。尽量以cosnt、enu

2021-06-14 22:54:29 314 2

原创 C++优化热点语句

优化热点语句提前计算固定值先观察下面的性能测试代码:static void find_blank(benchmark::State& state) { for (auto _: state) { char s[] = "This string has many space (0x20) chars. "; for (size_t i = 0; i < strlen(s); ++i) if (s[i] == ' ')

2021-05-31 23:26:56 467 1

原创 最简单的方式实现一棵二叉树

使用最简单的方式实现看树写代码C++实现这段代码之所以能够正常工作,是因为数组元素的地址是常量表达式。我们可以使用这种标记法定义任何链式结构,但是这种初始化方法难以记住,所以在构建这种结构时很容易出现编码错误。//// Created by andrew on 2021/5/29.//#include <iostream>using namespace std;int main(int argc, char* argv[]) { // 看着图就可以手上写一个二叉树

2021-05-29 12:07:51 156

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关注的人

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