自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 菱形继承

菱形继承  继承是面对对象语言的三大特性之一。在使用面对对象语言的过程中,有时会涉及到多重继承这一功能,而菱形继承(diamond inheritance)是其中绕不过去的“坎”。  菱形继承可以简单地用以下一幅图来表示:  A类和B类都继承自Base类,而C类继承自A类和B类。按照继承的理论,C类中应该有两个Base类的数据。这会引发两个问题:1.二义性;2.空间浪费。  接下来从C++和Java两个编程语言的角度出发分析菱形继承。  C++  JavaC++#include <

2020-06-23 22:39:25 603

原创 死锁

死锁死锁死锁特征死锁的必要条件资源分配图死锁处理方法死锁预防互斥占有并等待非抢占循环等待死锁避免安全状态死锁死锁特征死锁的必要条件如果在一个系统中下面4个条件同时满足,那么会引起死锁。1.互斥:至少有一个资源必须处于非共享模式。2.占有并等待:一个进程必须占有至少一个资源,并等待另一资源。3.非抢占:资源不能被抢占,即资源只能在进程完成任务后自动释放。4.循环等待:有一组等待进程{...

2020-03-04 17:00:08 309

原创 基于C++11实现的线程安全的日志系统

基于C++11实现的线程安全的日志系统logger类接口函数日志记录等级日志输出类型使用例子Github 链接logger基于C++11标准实现的线程安全的日志系统使用了饿汉单例模式,对所有线程提供唯一的日志器(logger)命名空间 log类接口函数static logger& get_logger()返回日志器的引用logLevel get_log_level()获取...

2020-03-01 19:06:04 1092

原创 基于C++11标准实现的线程池

基于C++11实现的线程池类接口函数线程停留时间Github 链接类接口函数threadpool(int max_thread_num, float init_wakeup_ration)构造函数,第一个参数是最大线程数量,第二个参数是一个比例,决定类初始化时创建的线程数量。没有做范围判定,请保证:0 < max_thread_num0 <= init_wakeup_rat...

2020-02-28 14:24:13 311

原创 进程同步

进程同步进程同步背景临界区问题Perterson 算法信号量进程同步背景生产者代码:while(true){ // produce an item in nextProduced while(counter == BUFFER_SIZE); buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++;}...

2020-02-21 17:13:57 196

原创 CPU 调度

CPU 调度CPU 调度CPU 调度程序抢占调度分派程序调度准则调度算法FCFS(first-come,first-served)SJF(shortest-job-first)优先级调度(priority scheduling algorithm)轮转法调度(round-robin, RR)多级队列调度多级反馈队列调度CPU 调度CPU 调度程序每当 CPU 空闲时,短期调度程序会从就绪队列...

2020-02-20 20:50:06 745

原创 线程

线程线程概述多线程模型多对一模型一对一模型多对多模型线程库 Pthread代码例子多线程问题系统调用 fork() 和 exec()取消信号处理线程池如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片线程概述线程是 CPU 使用的基本单元,它由线程 ID、程序计数器、寄存器集合和栈组成。它与同属于统一进程的其他线程共享代码段、数据段和其他操作系统资源(文件和信号)。注意,寄存器是线程...

2020-02-16 16:47:50 191

原创 进程

进程进程进程概念进程进程状态进程控制块进程调度调度队列调度程序上下文切换进程操作(未完待续)进程进程的概念:执行中的程序。进程是现代分时系统的工作单元。系统由一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。通过 CPU 多路复用,所有的进程可以并发执行。通过进程之间的切换,操作系统能使计算机更为高效。进程概念进程进程是执行中的程序,这样的说法显得有点非正式。进程不只是程...

2020-02-14 00:44:27 267

原创 leetcode 151 翻转字符串里的单词

题目描述给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: ...

2020-02-13 18:19:03 88

原创 C 和 C++ 基础

C 和 C++ 基础extern 关键字作用static 关键字作用volatile 关键字作用const 关键字作用new 与 malloc 的区别C++的多态性和虚函数表纯虚函数虚函数表未完待续extern 关键字作用extern 可用置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外 extern 也可以用来进行链接指定。...

2020-02-12 23:02:01 92

原创 select 和 poll

select 和 pollselect函数原型描述符就绪条件select 使用例子pselectpoll函数原型引起 poll 返回特定的 revent 的条件poll 简单例子select我们调用 select 告知内核对哪些描述符(就读、写或异常条件)感兴趣以及等待多长时间。不局限于套接字,任何描述符都可以使用 select 来测试。select 与recv 和 send 直接操作文件描述...

2020-02-09 22:28:43 279

原创 Unix I/O 模型

Unix I/O 模型Unix I/O 模型阻塞式 I/O(block I/O)非阻塞式 I/O(nonblocking I/O)I/O 复用(I/O multiplexing)信号驱动式 I/O(signal-driven I/O)异步 I/O(asynchronous I/O)Unix I/O 模型Unix 可用的 I/O 模型有以下5种:1.阻塞式 I/O2.非阻塞式 I/O3.I...

2020-02-08 20:21:46 125

原创 POSIX 信号处理

POSIX 信号处理POSIX 信号处理sigaction 函数 和 struct sigactionsignal 函数信号值POSIX 信号语义自定义 signal 函数signal 使用例子POSIX 信号处理信号(signal)就是告知某个进程发生了某个事件的通知,有时也被称为软件中断(software interrupt)。信号通常是异步发生的。信号可以由一个进程发给另一个进程(或自...

2020-02-07 18:24:16 637

原创 常用套接字 API 原型

常用套接字 API 函数原型#include <sys/socket.h>int socket(int af, int type, int protocol);// af:一个地址描述。常用AF_INET(支持TCP和UDP)。// type:指定socket类型。TCP(SOCK_STREAM)、UDP(SOCK_DGRAM)。// protocal:指定协议。如调用者不...

2020-02-05 22:06:37 241

原创 TCP 简单介绍

TCP 简单介绍TCP特性TCP 首部TCP 三次握手和四次挥手三次握手四次挥手TCP 状态转换TCP 输出TCPTCP(Transmission Control Protocol,传输控制协议),是一个传输层协议。TCP 提供客户与服务器之间的连接。TCP 客户先与某个给定的服务器建立一个连接,再通过该连接与服务器交换数据,最后再终止该连接。特性1.可靠性TCP 在向对端传输数据时,...

2020-02-05 16:56:15 870

原创 UDP 简单介绍

UDP 简单介绍UDP特性UDP 输出UDP 首部UDP 和 IPUDPUDP(User Datagram Protocol,用户数据报协议),是一个简单的传输层协议。UDP不保证数据包会到达其最终目的,不保证各个数据包的先后顺序,不保证每个数据包只达到一次。特性1.无连接UDP 提供无连接服务,UDP 服务器和客户端之间不必存在任何长期关系。2.传输效率高UDP 没有可靠性保证,但...

2020-01-30 18:24:32 674

原创 Tcp Daytime获取客户端

Tcp Daytime获取客户端daytime 服务代码片段Unix errno 值Github 链接daytime 服务Linux系统可以开启daytime服务,让客户端通过13端口获取服务器的时间。这个服务并不是默认开启的,如果需要的话可以手动开启。以CentOS 6系统为例,可以通过修改 /etc/xinetd.d/daytime-dgram 和 /etc/xinted.d/dayti...

2020-01-30 16:35:03 783

原创 netstat命令解释

netstat命令解释netstat部分参数说明实例netstatnetstat命令用于显示网络状态,可以通过此命令获取Linux系统的网络信息。语法格式:netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]部分参数说明参数功能-a 或者 --all显示所有已连接的socket-n 或者 --n...

2020-01-29 18:53:07 354

空空如也

空空如也

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

TA关注的人

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