
C/C++
文章平均质量分 80
EricJeffrey
这个作者很懒,什么都没留下…
展开
-
C++线程安全单例
C++中实现单例:隐藏构造函数和析构函数隐藏拷贝赋值和拷贝构造函数 =delete使用静态对象和函数实现单例的唯一访问接口线程安全 - 使用mutex和两次检查为空代码(摘自C++单例详解)/** * 单例类的静态函数`GetInstance`提供了获取单例的唯一接口 * The Singleton class defines the `GetInstance` method that serves as an * alternative to constructor and lets原创 2020-08-16 21:36:08 · 183 阅读 · 0 评论 -
Epoll使用简介
简单介绍epoll在网络套接字上的使用。首先是epoll的使用,主要步骤创建epoll实例 - epoll_create1(0)调用epoll_ctl添加、修改或者删除监听套接字。需要使用 epoll_event对象struct epoll_event tmpEvent;tmpEvent.events = EPOLLIN, tmpEvent.data.fd = fd;使用epoll_wait监听那么如果要使用epoll监听TCP连接,可以按照如下步骤:socket() + bind(原创 2020-08-14 16:12:37 · 393 阅读 · 0 评论 -
poll使用介绍 - 简单服务器
Linux系统提供了`select, poll, epoll`三种更加高效的IO模型,这里使用一个例子简单介绍一下`poll`在套接字上的使用。基于事件的IO模型允许服务端使用事件触发的方式,在客户端发送请求时触发读取`read`操作,并在写操作`write`不会阻塞的时候写数据。这种IO模型允许使用更少的线程处理更多的客户端连接,能够降低系统负担,提高应用的服务效率。原创 2020-08-14 11:11:41 · 1477 阅读 · 0 评论 -
使用C++实现kmeans并使用Python可视化聚簇结果
文章目录C++实现过程算法流程数据结构设计代码:Python可视化过程部分截图注: 本文代码及方法仅供参考,请勿直接使用C++实现过程算法流程kmeans - 点作为数据,cluster是点的聚簇BEGIN 选出来 k 个点作为中心点生成聚簇 循环 计算点与聚簇的距离 每个点加入到距离最近的聚簇中 更新聚簇中...原创 2020-02-21 21:48:11 · 829 阅读 · 0 评论 -
高级数据库课程实验记录 - 实现Storage and Buffer Manager
USTC计算机院高级数据库课程实验1记录 - 实现Storage and Buffer Manager,包括缓冲区LRU算法、基于目录的记录操作实现等原创 2019-11-06 16:47:34 · 2637 阅读 · 0 评论 -
Linux Namespaces in operation记录 - part 7
文章目录基础网络Namespace管理Network Namespace 配置Network Namespace的用途总结注:本文绝大部分内容来自Linux Namespaces实践part 7,原文系列文章详细描述了Linux Namespace相关内容,英语过关的建议阅读原文,本文内容主要用来记录学习内容,如有不当之处还请评论区指正。Network Namespace隔离了系统中的网络设备...原创 2019-08-29 22:40:32 · 160 阅读 · 0 评论 -
Linux Namespace - 超简单容器构建
文章目录步骤概览运行结果展示构建过程目录准备复制可执行文件创建Namespace,配置文件系统安装busybox并执行shell程序完整代码总结Namespace隔离了进程、网路、用户等系统资源,本文将讲述如何通过Namespace创建一个超简单容器,并在容器内部运行简单的busybox程序。本文内容参考了LinuxNamespace系列(09),虽然目的相同,但本文采用C语言系统调用的方式实现...原创 2019-09-16 12:07:06 · 672 阅读 · 0 评论 -
Unix系统数据文件和信息 - APUE
文章目录口令文件 /etc/passwd阴影口令 /etc/shadow组文件 /etc/group附属组 ID其它数据文件登陆账户记录系统标识时间和日期Linux设置时区本文内容来源于Unix高级编程,欢迎评论。口令文件 /etc/passwdpasswd结构包含用户名、密码、用户ID、组ID等信息,Linux在该结构中定义了下列结构:char *pw_name; char ...原创 2019-09-22 11:28:39 · 250 阅读 · 0 评论 -
LeetCode 146 LRU Cache
文章目录题目大意思路算法一 - 暴力算法二 - 哈希表+链表算法三 - 哈希表&链表算法三代码算法二代码总结题目大意设计并实现LRU(Least Recently Used,最近最久未使用)缓存算法,支持两种操作get和put。get(key): 获取key的值,不存在为-1put(key, value): 更新key的值或者插入(key, value),若插入前缓存已满,则使用...原创 2019-10-06 21:07:26 · 125 阅读 · 0 评论 -
Linux Namespaces in operation记录 - part 6
文章目录User Namespace 与 capabilities一个栗子User Namespace与其它Namespace的结合再看capabilities总结注:本文绝大部分内容来自Linux Namespaces实践part 6,原文系列文章详细描述了Linux Namespace相关内容,英语过关的建议阅读原文,本文内容主要用来记录学习内容,如有不当之处还请评论区指正。User Na...原创 2019-08-27 22:18:27 · 280 阅读 · 0 评论 -
Linux Namespaces in operation记录 - part 4
文章目录PID Namespace一个例子init进程与信号unshare() 与 setns()又一个例子小结注:本文绝大部分内容来自LinuxNamespaces实践part4 ,原文系列文章详细描述了Linux Namespace相关内容,英语过关的建议阅读原文,本文内容主要用来记录学习内容,如有不当之处还请评论区指正。PID Namespace一个新创建的PID Namespace中...原创 2019-08-21 19:24:44 · 198 阅读 · 0 评论 -
LeetCode 647 Palindromic Substrings
LeetCode 647 Palindromic Substrings题意给一个字符串,求该字符串的所有子字符串是回文串的个数。凡是起始下标或结束下标不同的子串,即便他们的值一样,仍认为是不同的子串。思路由小回文串推大回文串 - 利用已知信息。如果采用暴力求解的方法,那么判断每个子串是否是回文串都需要O(n)的时间。事实上,当我们得到一个回文串aba时,可以通过向两边扩展的方法,判断xab...原创 2019-02-22 15:37:55 · 104 阅读 · 0 评论 -
LeetCode 406 Queue Reconstruction by Height
LeetCode 406 Queue Reconstruction by Height 题解题意给定一组数列,数列中每个元素为一对数(h, k),其中h表示该元素的值,k表示该元素之前所有元素中,值大于等于当前元素值的个数。这个数列被打乱了,要求重新排列这个数列使其正确。思路一 考虑最大元素对于值为最大值的元素来说(可能多个),倘若将它们按照k从小到大排序,会发现他们的k值其实就是他们的...原创 2019-02-17 13:36:05 · 255 阅读 · 0 评论 -
Petri网转换为马尔科夫链算法
Petri网转换为马尔科夫链算法简介Petri网Petri网的概念是德国的Carl Adam Petri早在1962年提出来的。他在他的论文里提出了一个新的信息流模型,这个模型基于系统各部分的异步并发的操作,并把各部分之间的关系用网状的图来描述。Petri网用于描述和分析系统中的控制流和信息流,尤其是那些有异步和并发活动的系统。圆圈表示位置( place ),圆圈中有标识( token ...原创 2019-03-06 19:20:05 · 2655 阅读 · 1 评论 -
Linux下套接字创建及连接建立简介 - APUE
目录连接过程创建套接字地址服务器开启监听代码客户端连接建立代码套接字地址格式数据传输线程创建代码Unix环境高级编程(APUE)中介绍了套接字socket的使用,本文从开发者使用过程角度简单介绍了服务器开启监听、客户端发起连接、子线程创建的一些过程以及Unix中套接字的地址格式等内容。连接过程创建套接字地址创建套接字地址 sockaddr_in (IPV4), sockaddr_in6 ...原创 2019-05-21 18:33:18 · 1405 阅读 · 0 评论 -
Linux信号概述
Linux信号(signal)允许进程和内核中断其它进程,例如Ctrl+C会向终端中正在运行的进程发送SIGINT信号,一个进程试图除0时内核会发送给它一个SIGFPE信号,本文概述了Linux系统中与信号相关的函数调用,包括发送信号、处理信号、阻塞信号等,并列举了几个例子阐述相关内容。原创 2019-07-29 20:59:08 · 229 阅读 · 0 评论 -
Linux进程控制概述
Linux中进程控制是编写Linux(或Unix)程序时必备的技能,这篇文章概述了Linux中与进程控制相关的函数调用,如fork、execve、waitpid等,并采用例子对函数的使用作了简要说明。原创 2019-07-27 22:48:54 · 253 阅读 · 0 评论 -
Linux 并发编程简介-select,pthread与semaphore
文章目录select函数 - IO多路复用POSIX线程pthread简介创建线程终止线程回收已终止线程的资源分离线程初始化线程的共享变量同步线程 - 信号量生产者消费者模型预线程化服务器总结select函数 - IO多路复用select函数用来监控多个文件描述符上的读/写等事件,下为select相关的宏及函数:#include <sys/select.h>#include &...原创 2019-08-20 09:44:31 · 1138 阅读 · 0 评论 -
Linux Namespaces in operation记录 - part 5
文章目录创建User Namespace一个栗子映射用户与组ID又一个栗子映射规则以及深入探索映射总结注:本文绝大部分内容来自Linux Namespaces实践part 5,原文系列文章详细描述了Linux Namespace相关内容,英语过关的建议阅读原文,本文内容主要用来记录学习内容,如有不当之处还请评论区指正。User Namespace隔离了安全相关的属性,即用户ID、组ID、根目录...原创 2019-08-24 16:36:17 · 266 阅读 · 0 评论 -
Windows下配置VSCode编写C++
本文主要描述如何在Windows下使用MinGW配置VSCode以编写C++程序,如有错误,还望评论指正。参考链接:官方教程,feynman1999的文章下载并安装VSCode;下载MinGW-w64,当然你也可以下载其他版本的MinGW;打开VSCode,在扩展中搜索C++,安装官方(Microsoft)发布的C/C++扩展,之后重新加载窗口;打开一个文件夹,路径不要包含中文。类似于...原创 2018-12-20 20:18:17 · 818 阅读 · 0 评论