自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 共享内存实现

进程间通信方式无名管道(pipe):用于具有父子关系的进程之间的通信有名管道(fifo):可用于非父子关系之间的进程信号量(semaphore):是一个计数器,可用于进程或线程的同步或互斥,常用作锁机制消息队列(message):是消息的链表,允许进程将格式化的数据流以消息队列形式发送给任意进程共享内存(shared memory):映射一段能够被其他进程所访问的内存,由一个进程创建,...

2019-07-11 00:25:41 636

原创 Effective C++学习笔记(四)

条款18设计出“容易使用,不容易被误用”的接口例如设计一个Date类class Date {public: // 因为三个成员的类型相同,就很容易被误用,不是所有人都会按照 月 日 年 来传入参数 // 并且 年 月 日 都有明显的界限,若超过这个界限就是不合适的,我们设计接口时应该 使用户不会出现这种情况,不能寄希望于用户自己 Date(int _month, i...

2019-07-07 15:39:14 148

原创 Effective C++学习笔记(三)

条款13用对象来管理资源为防止资源泄露,使用资源管理对象来构造资源和析构资源,最好在获取资源的同时进行初始化最常见的资源管理对象为智能指针,std::auto_ptr与 std::shared_ptr,通常 std::shared_ptr会更好。但是在使用时一定要将对象指针存储于智能指针对象内,智能指针只能对阵堆上的内存管理class Investment { ...};I...

2019-07-07 15:33:22 146

原创 操作系统设计层次

操作系统层次层名称对象示例操作13shell用户程序设计环境shell中的语句12用户进程用户进程退出、终止、挂起和恢复11目录目录创建、销毁、连接、分离、查找和列表10设备外部设备,如打印机、显示器、键盘等打开、关闭、读和写9文件系统文件创建、销毁、打开、关闭、读和写8通信管道等创建、销毁、打开、关闭、读...

2019-07-07 15:16:18 849

原创 何时使用UDP来代替TCP

UDP优点UDP支持多播和组播,若应用程序使用多播或组播,则必然使用UDPUDP没有连接的建立和拆除(三次握手和四次挥手)。TCP优点不是所有的应用程序都需要这些特点。对于音视频应用程序而言,丢失的分组完全不必要重传。对简单的请求-应答事务处理,若两端事先定义好最大的请求和应答大小,就不需要窗口式的流量控制。正面确认,丢失分组重传,重复分组检测,排序乱序分组。窗口式流控,接收端T...

2019-07-07 15:13:58 234

原创 TCP拥塞控制

TCP拥塞控制TCP提供系统间数据的可靠传输。当TCP的接收端无法匹配发送端的发送速度时,通过流量控制(ACK字段中的通告窗口大小字段来实现)机制使发送方降低发送速度。当路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为拥塞。为避免或缓解这种情况,TCP的每一方实行拥塞控制机制通常,TCP在建立新连接时执行慢启动,直至有丢包时,执行拥塞避免进入稳定状态。慢启动在传输初始阶...

2019-06-14 14:30:21 143

原创 TCP连接管理

TCP连接管理连接建立连接传输连接终止建立–三次握手目的在于让通信双方了解一个连接正在建立,也利用数据报的选项来承载特殊的信息,交换初始序列号(Initial Sequence Number, ISN)。终止–四次挥手要达到双方都安全关闭。同时关闭与同时打开同时打开需要交换四个报文段,比正常三次握手多一次。两端在相同时刻发送SYN报文段,然后都进入SYN_SENT状态当...

2019-06-14 09:54:53 145

原创 __attribute__()与va_list

最近在看libevent源码的过程中,发现用到了很多关于__attriute__的内容,和一些可变参数中的va_list问题,在此记录__attribute__()__attribute__()可以用来设置函数属性,变量属性和类型属性等+format__attribute__((format(printf, m, n))) 检查格式化字符串与“…”的匹配情况, m表示格式化字符串的位置...

2019-05-17 15:13:59 110

原创 套接字编程--小点

最近在看libevent网络库时,发现网络编程还可以这样写,将服务器的创建和客户端的创建写在同一个函数中,最终将他们返回的套接字放入一个fd[2]数组中,这样就可以在多个程序中复用这两个描述符。最终写了一个简单的小例子进行说明。listen()listen()函数的作用是监听服务器端创建的套接字是否有对端进行连接,并且可以指定最大的连接数目。但与此同时listen会将socket()创建的主...

2019-05-16 14:37:03 92

原创 read error:Bad file description

今天在实现I/O复用epoll来提高服务器性能时,出现了 Read error:Bad file description错误.通过认真通读代码后,发现是错将listen中参数的描述符用于read函数中,而实际上在listen之后要执行accept函数,其返回的描述符才是read函数中应该传入的。liatenfd = socket(AF_INET, SOCK_STREAM, 0...

2019-04-17 23:03:04 1362

原创 解释器文件

解释器文件是文本文件,其基本形式为#! pathname [optional-argument]例如最常见的#! /bin/shpathname为绝对路径名,实际上对该文件的处理是由内核作为exec系统调用来处理的 内核使调用exec函数执行的并不是该解释器文件,而是在解释器文件第一行中pathname所指定的文件。解释器文件(文本文件,以#!开头),解释器(由该解释器文件第一...

2019-04-15 17:14:58 244

原创 系统调用与库函数

系统调用?库函数?系统调用:unix操作系统所提供的良好定义、数量有限、之间进入内核的入口点C语言库函数:这里指的是程序员使用的通用库函数。虽然这些函数可能会调用一个或多个内核的系统调用,但是它们都不是内核的入口点联系:它们都通过C函数的形式出现并且都为应用程序提供服务C语言库函数实际上都是通过系统调用来实现的区别: 库函数是可以灵活地被替换的,但是系统调用不是 ...

2019-04-15 17:08:54 228

原创 Effective C++学习笔记(二)

目录条款05条款06条款07条款08条款09基类与派生类的构造与析构:条款10条款11条款12条款05C++的空类中包含哪些函数?这些函数在调用时生成。 默认构造函数 拷贝构造函数 赋值构造函数 析构函数 编译器自己生成的析构函数是non-static,除非该类的基类自身有virtual析构函数 C+...

2019-04-10 11:51:44 222

原创 Effective C++学习笔记(一)

目录条款01条款02条款03条款04条款01内置类型,值传递比引用传递更高效。 用户自定义类型,因为存在构造函数和析构函数,使用pass-by-reference-const会更好,尤其是使用模板时。条款02尽量以cosnt,enum, inline,替换#defineclass的专有常量,一般将常量的作用域限制于class中,此时它应该为一个成员变量,为了确...

2019-04-10 11:48:30 204

原创 STL迭代器与算法

STL常用算法常用容器迭代器容器 迭代器类型 vector 随机存取迭代器 deque 分段连续,是一种假的连续,随机存取迭代器 list 双向迭代器 string 随机存取迭代器 set 双向迭代器,元素为常量 multiset 双向迭代器,元素为常量 map 双向迭代器,key值为常量 multimap ...

2019-04-04 16:37:32 194

原创 C/C++字符串格式化

C 字符串格式化sscanf()用于格式化字符串与scanf()类似,但scanf()以键盘为输入,但sscanf()以固定字符串为输入源int sscanf(char *buffer, const char *format, [argument]...);// format:一个或多个{%[*] [width] [{h | I | I64 | L}]type | ' ' | '...

2019-03-27 17:19:37 4446

原创 IPC--进程间通信与应用场景

目录进程控制原语进程间通信(IPC)管道FIFO(命名管道)IPC对象缺点System V 共享内存套接字POSIX 信号量POSIX 与 System V 进程间通信进程间通信应用场景进程控制原语 fork() // 创建进程 exec() // 执行程序 exec()前后实际用户的ID和实际组ID不变,而有效ID是否改变取决于...

2019-03-19 08:50:56 432

原创 输入输出缓冲区

C风格输入输出又称为标准I/O ,实现了三种类型的缓冲: 全缓冲:填满标准I/O缓冲区后才进行实际I/O操作 对于磁盘上的文件通常是实施全缓冲的 当缓冲区满时,标准I/O会自动flush缓冲区 或者调用fflush()函数来flush一个流 标准I/O方面,flush意味着将缓冲区内容写入磁盘,在终端驱动方面,flush表示丢弃存...

2019-03-12 17:07:04 256

原创 常用数据结构----二叉查找树(C实现)

二叉查找树二叉查找树 其 基本的执行操作的时间与树的高度成正比。对于n个节点的 完全二叉查找树 操作的最坏情况为 lgn但对n个节点的线性链来说,操作的最坏情况为 n。总之,一个随机构造的二叉查找树的期望高度为 lgn, 基本动态集合操作的平均时间为 lgn二叉查找树性质某节点的左子树节点值均小于该节点值,右子树节点值均大于该节点值。二叉搜索树 按 树的中序遍历 可以得到 从...

2019-03-04 17:09:11 479

原创 C++11新特性输出

在看到C++11 的一些特性之后,发现打印一个集合内的元素的方法除了我们之前写的for循环,还能够有更简单的写法,并在其中应用了一些特性。// 打印1:for (auto &e : v) { std::cout << e << std::endl;}// 打印2:使用copy算法std::copy(v.begin(), v.end(), s...

2019-03-01 16:53:56 348

原创 UNIX网络编程记录(一)

套接字编程 地址转换函数 inet_addr:in_addr_t inet_addr(const char *strptr) 将点分十进制的IP转换为长整数类型(u_long) inet_ntoa:char* inet_ntoa(struct in_addr in) 将十进制网络字节序转换为点分十进制IP格式的字符串 inet_pton:int inet_pton(int af,...

2019-02-25 21:10:30 295

原创 springboot+Ajax实时读取数据库

最近有个项目需要实现采集信息在web端的实时显示,由于采集器与web端之间唯一的交互途径就是通过数据库,而采集器端会定时上传采集到的信息到数据库,所以想到一种方法就是让web端也定时的读取数据库,并且通过数据库操作(将采集时间进行逆序排序并取最新的一个)获得最新采集到的数据,并通过ajax在不刷新整个网页的基础上将数据显示到网页的table中本博客是将本人学习的过程已经最终实现的结果予以...

2019-01-20 17:13:27 3868

原创 springboot + WebSocket实时显示消息

目录springboot + WebSocket实时显示消息添加依赖开启WebSocket支持建立WebSocketServer实现Controller实现前端显示用于测试:显示到页面的控制台console用于实践:显示到前端页面springboot + WebSocket实时显示消息最近有个web项目要实现在前端实时显示采集到的最新的一张图片,查阅资料后发...

2019-01-17 17:03:30 2986 2

原创 IDEA下springboot项目打包Error: Invalid or corrupt jarfile .\xxxxx.jar与找不到主类

springboot项目打包为jar因为要将项目部署至Linux服务器下,所以需要将开发好的项目进行打包,但上传后一直执行出错,在本地是可以执行成功的,所以在此分享一下其中的问题。网上分享的有两种方法,但是我用maven的package打包执行的出错更严重,在此只分享下步骤,希望解决其中问题的大佬指导一下。具体过程打开project Structure,点击Artifacts...

2019-01-08 11:12:47 11437

原创 线程Runnable

Runnable接口中只有一个run()函数,并没有start()函数,所以它必须依托其他类来使用,比如Thread类Thread中有个以Runnable为参数的构造函数 @FunctionalInterfacepublic interface Runnable { /** * When an object implementing interface <c...

2019-01-07 20:22:50 366

原创 JDBC使用

目录JDBC规范步骤JDBCJava Database Connectivity (JDBC)与数据库驱动的关系接口与实现的关系规范四个核心对象:DriverManager: 注册驱动Connection: 表示与数据库创建的连接Statement: 操作数据库语句的对象ResultSet: 结果集或一张虚拟表步骤1、注册驱动//...

2019-01-05 16:52:55 118

原创 MySql初探

目录数据库初探数据库数据库管理系统(DBMS)常见数据库数据类型SQL分类数据库使用数据完整性实体完整性域完整性引用完整性表之间关系多表查询数据库的备份与恢复NOTE数据库初探数据库存储、维护、管理数据的集合逻辑上以二维表表的形式进行存储,通过数据库管理系统创建和操作一行记录代表一个实体类数据库管理系统(DBMS)...

2019-01-05 16:45:01 262

原创 HTTP/1.1与HTTPS

关于HTTPS部分转载于 https://blog.csdn.net/xiaoming100001/article/details/81109617目录HTTP 1.1协议包Get请求协议包Response响应协议包HTTP 1.1协议包Get请求协议包报文头:GET /scrape.php?... HTTP/1.1\r\nGET 表示请求方式​请求协议头...

2019-01-05 16:40:45 2536

原创 More Effiective C++

More Effiective C++在看More Effective C++的基础上,总结出一些需要注意的点1.区别pointer与referencereference一定会指向对象,不能指向空,指向不会变pointer可能指向空对象,null,指向的对象可以变化reference 使用时不用测试其有效性,因为它不可能指向null/当指向内容不变,或返回值要当左值时,需使用引用。 ...

2018-10-22 22:53:16 163

转载 C/C++堆栈区别

最近在看C++时,看到了一篇对堆栈介绍非常好的博客,在此分享一下,感谢大佬http://www.cnblogs.com/chenleiustc/archive/2011/04/08/2009994.htmlC内存区域分为四部分:栈区:有编译器自动分配释放堆区:由程序员自己使用malloc分配,使用free释放全局静态区:存放全局变量与静态变量,函数内部的静态变量只能在函数内部...

2018-10-22 22:24:16 254

原创 minicom工具传送文件

目录 一、安装配置minicom二、安装lrzsz三、使用lrzsz一、安装配置minicom1、在PC端安装minicom工具​ sudo apt-get install minicom2、配置minicomsudo minicom -s 进入配置界面选择A进入Serial port setup选择相应端口以及波特率(将选项A设置为/dev/tt...

2018-01-30 15:04:18 1715

芬兰交通数据集,用于机器学习

该数据集下载于https://aineistot.vayla.fi/lam/rawdata/2018/01 https://aineistot.liikennevirasto.fi/lam/rawdata/[year]/[ELY]/lamraw_[lam_id]_[yearshort]_[day_number].csv 属于芬兰交通系统数据 其中数据格式为 点ID,年,天数,小时,分钟,第二,百分之一秒,长度(m),车道,方向,车辆类别,速度(km/h),有缺陷的(0-错误观察,1=错误观察),总时间(技术),间隔(技术),排队(技术) 共16列数据

2019-03-20

空空如也

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

TA关注的人

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