自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络基础 -- 数据链路层(以太网协议/ARP协议)

数据链路层MAC地址以太网以太网的帧格式ARP协议 --地址解析协议ARP数据报的格式 RARP协议

2020-04-20 09:49:18 1720 2

原创 网络基础 -- 网络层(IP协议)

网络层IP协议IP报文格式(IPv4)网段划分(地址管理)CIDR特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由选择ICMP协议

2020-04-14 14:33:24 2747 1

原创 网络基础 -- 保证TCP协议可靠传输和提高性能的机制

保证TCP可靠传输的机制1. 面向连接2. 包序管理和确认应答3. 超时重传机制4. 滑动窗口机制5. 快速重传机制6. 拥塞窗口7. 保活机制提高传输性能的机制1. 延迟应答机制2. 捎带应答机制

2020-04-13 16:34:00 1718

原创 网络基础 -- 传输层协议(UDP与TCP/三次握手与四次挥手/可靠传输)

端口号UDP协议UDP报文格式UDP的特点协议实现(原理) / 特性对于上层应用层代码编写的影响 (我们用UDP协议时该注意什么?)TCP协议TCP报文格式TCP三次握手与四次挥手close()shutdown()的区别及使用场景三次挥手和四次挥手中的一些问题TCP特点可靠传输

2020-04-12 18:47:02 1183 1

原创 项目 RSA文件加密工具

传统的加密技术非对称加密RSA加密算法RSA算法原理RSA的E, D, N产生过程RSA加密的安全性RSA算法实现中的问题以及解决办法问题1 : 模反元素的求解问题2: 大数的幂运算问题3: 大数的加/减/乘/除/模运算问题4: 大数产生随机数问题5: 大数产生素(质)数RSA加密算法代码实现

2020-03-29 18:08:43 1673 5

原创 网络基础 -- 应用层HTTP协议

应用层(TCP/IP协议中的应用层/HTTP协议)HTTP协议URL -- 统一资源定位符UrlEncode / UrlDecodeHTTP协议格式概述HTTP 请求消息Request / 响应消息Response首行请求(Request)首行请求(Request)首行头部正文实现一个简单的HTTP服务器

2020-03-25 11:17:09 1024

原创 Linux 网络编程套接字(socket) (网络字节序/UDP/TCP)

认识TCP协议与UDP协议网络字节序字节序转换接口套接字(socket)sockaddr结构socket通信接口UDP通信流程(客户端)UDP通信流程(服务端)TCP通信流程(服务端)TCP通信流程(客户端)TCP通信中新的接口多进程版本通用服务/客户端封装多线程版通用服务/客户端TCP和UDP的对比TCP与UDP的应用场景

2020-03-21 14:04:31 966 1

原创 网络基础(概念/网络协议/OSI七层模型/TCP/IP四(五)层模型)

计算机网络根据网络覆盖范围的范围分类无线网络网络协议协议分层OSI七层模型TCP/IP四(五)层模型数据包封装和分用网络中的地址管理认识IP地址认识MAC地址

2020-03-19 16:33:59 1060

原创 Linux 多线程(线程池/线程安全的单例模式/STL容器线程安全问题/智能指针线程安全问题)

线程池线程安全的单例模式饿汉实现方式和懒汉实现方式STL线程安全的问题智能指针线程安全问题

2020-03-14 22:12:31 462 2

原创 Linux 多线程之线程安全(生产者消费者模型/POSIX信号量/读者写者模型/读写锁/自旋锁)

生产者消费者模型基于阻塞队列(BlockingQueue)的生产者消费者模型POSIX信号量POSIX信号量接口信号量实现的环形队列的生产者消费者模型读者写者模型自旋锁读写锁的接口

2020-03-11 14:15:57 572

原创 Linux 多线程之线程安全(同步与互斥/互斥锁/条件变量/死锁/)

线程安全线程同步与互斥互斥锁(量) 互斥锁接口可重入函数&线程安全死锁条件变量条件变量接口条件变量使用规范为什么pthread_cond_wait()中要传入互斥锁?为什么互斥锁和条件变量要配合使用?

2020-03-07 17:43:48 3245 2

原创 Linux 多线程(线程控制(创建/终止/等待/分离))

POSIX线程库创建线程线程ID及进程地址空间布局线程终止线程等待线程分离

2020-03-03 19:03:37 734

原创 Linux 多线程(线程概念/特点/优缺点/与进程比较)

线程线程间数据的独有与共享(同组线程)线程的优点--("轻"+多任务并发/并行处理的优势(对比于进程))线程的缺点多线程与多进程的比较Linux 多线程(线程控制(创建/终止/等待/分离))

2020-03-02 01:30:26 1542

原创 什么是线程?

什么是线程?说到线程, 离不开的概念就是进程 .也离不开计算机或操作系统的发展过程. 简单的说一下.进程的引入在计算机高度发达的今天, 我们很难想象以前的计算机是什么样的.最初的时候, 计算机只能接受一些特定的指令, 用户输入一个指令, 计算机就做一个操作. 当用户在思考或者输入数据时, 计算机就在等待. 显然这样效率很低下, 因为很多时候,计算机处于等待用户输入的状态 ...

2020-02-28 17:50:08 524 1

原创 哈希表(散列表) -- 概念原理以及代码实现

哈希函数1. 闭散列线性探测闭散列的扩容两个小问题闭散列的简单实现2.开散列开散列的增容开散列与闭散列比较有迭代器的开散列实现开散列实现unordered_map哈希的应用

2020-02-24 22:03:14 1007

原创 C++ 关联式容器之unordered_map

说到关联式容器, 需要区分是序列式容器, 例如vector, list, deque等都是序列式容器, 序列式其特点都体现在 "序列"上 .序列式容器中存储元素是线性排布的, 在进行查找搜索时效率较低. 序列式容器并不会对插入元素进行任何方式的重新排序,插入在哪个位置就在哪个位置 .关联式容器, 特点也体现在 "关联"上, 关联式容器通过键值对(包括key和value), 将存储的每一个数据value与一个键值key一一对应起来, 只需要通过键值key就可以读写元素, 在查找搜索时效率高. 关联式容器

2020-02-23 21:36:00 2960

原创 Linux 进程信号(产生/注册/安装/阻塞/销毁/处理)

生命周期(事件发生->注册安装->注销->处理) 信号的产生 硬件产生 软件产生 kill 命令 kill() sigqueue() raise() abort() alarm() setitimer() 信号的注册安装 非可靠信号与可靠信号 信号的注册 信号的安装 signal() sigaction() 信号的阻塞 sigprocmask() 信号的注销和处理 注销 处理 进程响应信号的时机 可重入函数 用户处理信号的时机 信号在防止僵尸进程中的应用

2019-12-23 09:00:53 1036 2

原创 Linux 进程间通信----共享内存

目录共享内存(Shared Memory)通信原理为什么共享内存通信最快?基本特征/优缺点共享内存的使用共享内存操作流程操作共享内存的函数shmget() shmat() shmdt() shmctl() ftok()共享内存(Shared Memory)是最快(没有之一)的进程间通信方式 .PS : 共享内存并没有提供...

2019-12-16 17:02:12 827

原创 Linux 管道(匿名管道与命名管道)

管道管道是Unix中最古老古老的进程间通信手段, 人们把从一个进程连接到另一个进程的数据流称为“管道” . Linux中的管道从Unix继承而来 .管道分为匿名管道(pipe)和命名管道(named pipe / FIFO)匿名管道(pipe)匿名管道实际上是由内核管理内核中的一块缓冲区, 是一种半双工通信手段, 通过让不同进程都能访问同一块缓冲区,来实现进程间通...

2019-12-15 18:18:49 1602

原创 Linux 基础IO(系统调用/文件描述符/重定向)

目录Linux 系统 . 文件IOLinux 系统调用与C库函数对比记忆fopen & open fclose & closefwrite & write fread & readfleek & leekstdin &stdout& strerr文件描述符fdstr...

2019-12-12 14:38:34 928

原创 C++ 智能指针(auto_ptr/unique_ptr/shared_ptr)

目录为什么需要智能指针?智能指针的原理1. RAII特性2. 重载operator* 和opertaor->auto_ptr(已废弃)常用接口auto_ptr总结unique_ptr常用接口unique_ptr总结shared_ptr常用接口shared_ptr原理shared_ptr线程安全的问题shared_ptr循环引用问题循环引用解决方法shared_ptr删除器

2019-12-06 19:47:01 617 1

原创 Linux 进程控制(创建/退出/等待/替换)

目录进程创建fork()函数fork返回值fork写时拷贝fork失败原因fork用法进程退出退出场景常见的退出方法正常退出异常退出_exit()系统调用exit()函数_exit()和exit()的区别return进程等待进程等待的必要性进程等待的方法wait()waitpid()参数int* status...

2019-12-01 19:23:02 766

原创 Linux 进程程序替换

目录进程程序替换 进程替换的原理替换函数exec族函数1. execv(参数格式是数组)2.execl(参数格式是列表)3.execvp / execlp(不带替换程序的路径)4.execle / execve(需要自己设置环境变量)相关博客:进程相关概念:戳链接( ̄︶ ̄)↗https://blog.csdn.net/qq_41071068...

2019-12-01 19:15:18 432 2

原创 MP3光标位置

题目描述 :MP3Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下: 歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。 光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌...

2019-12-01 01:10:37 263

原创 Linux 进程

目录操作系统进程进程概念进程的描述--PCBtask_ struct内容分类进程的组织查看进程通过系统调用接口获取进程标志符(进程ID)进程状态进程优先级操作系统引言:在了解进程之前, 先简单了解一下操作系统 .操作系统(OperatingSystem), 简称OS 是配置在计算机硬件上的第一层软件, 是对硬件系统的首次扩充 . 其主要作用是...

2019-11-30 00:10:02 254

原创 Linux 进程状态(R, S, D, T(t), X, Z)

目录进程状态R-- 运行状态S-- 睡眠状态(可中断睡眠状态)D-- 磁盘休眠状态(不可中断睡眠)T-- 停止状态& t-- (跟踪状态)X-- 死亡状态(退出状态)Z-- 僵死状态&僵尸进程僵尸进程僵尸进程危害如何避免僵尸进程孤儿进程进程状态进程的先描述,再组织戳链接( ̄︶ ̄)↗https://blog.csdn.net/qq...

2019-11-30 00:08:53 2494

原创 Linux 进程优先级

进程优先级由于系统中进程数量众多, 而CPU资源却较少, 甚至只有一个, 而进程之间需要竞争来使用CPU . 这时让一个比较重要, 需要优先执行的进程去和众多的其他进程去竞争, 显然是不合理的. 就像感冒患者和有生命危险的患者抢床位一样的不合理. 此时为了更合理的分配CPU资源, 就有了进程优先级优先级高的进程有优先执行的权利.此外, 优先级还影响分配给进程的时间片长短...

2019-11-29 20:48:39 849

原创 Linux 进程等待

目录进程等待进程等待的必要性进程等待的方法wait()waitpid()参数int* status进程等待 谁要等待? 等待什么? 为什么要等待 ?首先要知道进程终止或退出的时候会发生什么, 进程退出时会关闭...

2019-11-28 23:17:43 638

原创 Linux 进程的退出

目录进程退出退出场景常见的退出方法正常退出异常退出_exit()系统调用exit()函数_exit()和exit()的区别return进程退出退出场景正常符合预期退出 正常不符合预期退出 异常退出(执行过程中异常奔溃, 还未执行完)常见的退出方法正常退出main函数返回 ( return ) 调用 exit( int status ...

2019-11-28 23:16:31 248

原创 Linux 进程的创建

目录进程创建fork()函数fork返回值fork写时拷贝fork失败原因fork用法进程创建Linux 中我们可以说一个进程就是一个PCB, 即 一个task_struct, 那么创建进程也就是创建PCB, 即是创建task_structLinux 中说到进程创建, 就不得不提到 fork()函数. fork()在Lnux下是非常重要的一个函数 ....

2019-11-28 23:10:37 411

原创 Shell ? bash?

Shellshelln. (蛋、坚果、某些种子和某些动物的)壳;壳状物;炮弹v. 炮击; 给…去壳shell在排序算法中是希尔排序, 不过接下来要说的是它的另一个意思 " 壳 "计算机发展到现在, 用户与计算机交互的方式还是大致两种, 图形界面 和 命令行简单来说, 对于图形界面,用户点击某个图标就能启动某个程序对于命令行,用户输入某个程序的名字(可以看做一个命...

2019-11-21 19:47:38 167

原创 C++ 使用delete释放new[N]的问题

了解过C++的语法知识, 就应该知道, new 申请的空间用 delete 释放, new [] 申请的连续空间用delete [] 释放, 这样肯定是没什么问题, 是正确的. 但当我们不遵循规则时会怎样呢?虽然在我们自己在开发过程肯定不会主动地乱用, 但保不齐哪天delete后面多写或少写个[], 如果了解过的话, 出bug了我们可以快速定位目录1.new [] 申请的空间用 ...

2019-11-20 01:20:46 3276 4

原创 最近公共祖先

语言: C++题目描述 :有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。测试样例:输入2 3返回 1给定接口class LCA {pub...

2019-11-17 21:26:17 139

原创 Linux 源码安装, rpm和yum三种安装方式

目录原码安装rpmyumLinux中安装软件可不像Windows那样只需要我同意xxx, 我接受xxx, 然后一直下一步就ok了Linux中主要有三种安装方式: 源码安装, rpm和yum注: 本文测试于Centos 7中注: 当不是root用户进行安装/卸载/升级操作时, 会提示权限不够, 我们只需在命令前面加上 sudo 获取到root的权限(会提示输入r...

2019-11-17 17:44:57 1082

原创 计算n x m的棋盘格子, 沿着各自边缘线从左上角走到右下角,总共有多少种走法. 要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

语言C++题目 :[编程题]201301 JAVA 题目2-3级题目描述 :请编写一个函数(允许增加子函数),计算nxm的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果示例: 输入...

2019-11-15 19:47:00 3629 1

原创 翻转二叉树以匹配先序遍历

语言: C++题目描述 :给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, ..., N} 中的值。通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点。考虑从根节点开始的先序遍历报告的 N 值序列。将这一 N 值序列称为树的行程。(回想一下,节点的先序遍历意味着我们报告当前节点的值,然后先序遍历左子节点,再先序遍历右子节点。)我们的目标...

2019-11-14 21:38:02 228

原创 C/C++ const修饰指针变量的三种情况

在C/C++中, const修饰指针变量, 有三种情况, 以 int* 为例, 三是以下种情况原则: const修饰谁, 谁就不能被修改, 否则编译出错第一种和第二种: constint* p; 和 int const * p;这两种情况是相同的, 这两种情况变量p的类型是const int* 型, 此时const修饰的就是p所指向的内容, 也就是说p解引用之后的值不能被...

2019-11-14 00:40:37 522 1

原创 Linux 调试器gdb命令及TUI模式

gdbgdb是Unix及类Unix下的调试工具。在Windows下, 我们习惯用了有图形界面的,像VC, VS, BCB等IDE的调试,但如果是在Unix或类Unix平台下开发, gdb是我们的首选 .背景我们编写的程序可以有两种版本, Debug版本和Release版本, Linux中gcc/g++编译器默认是Release版本, Debug版本要在编译时后面加上-g...

2019-11-13 00:15:18 3611

原创 C++ 重载, 重定义, 重写

先来看看定义重载 : C++允许同一作用域中有同名函数, 这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同(返回值类型无要求),在处理实现功能类似数据类型不同的问题上保证了接口的统一性重写 : 也叫覆盖. 在继承关系中, 派生类中有跟基类完全相同(返回值类型、函数名字、参数列表完全相同) 的虚函数,称派生类的虚函数重写了基类的虚函数(注意: 重写有两个函数名不同...

2019-11-09 10:11:51 1301

原创 C++ 虚表 & 多态的实现原理

目录虚函数指针(_vfptr) 和 虚函数表(vftable) 虚函数指针和虚表是什么继承中的虚表单继承中的虚表多继承中的虚表多态的原理小结相关博客: 1. 关于C++继承的博客戳链接( ̄︶ ̄)↗https://blog.csdn.net/qq_41071068/article/details/1028684772. 关于C++多态的博客...

2019-11-09 10:05:18 2191 15

boost_1_72_0-msvc-14.1-64.exe

Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。

2020-04-09

空空如也

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

TA关注的人

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