自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试题——对称加密和非对称加密

面试题高频:https和http的区别,对称加密和非对称加密的了解。Https和httphttp概念http协议是应用层的协议,又称:超文本传输协议(Hypertext transfer protocal),是浏览器和万维网(WWW)服务器之间通信的规则 默认端口:TCP 80特点无连接虽然http协议是基于TCP传输的,TCP是面向连接的,但是http协议本身是无连接的。意思是,通信双方在交换http报文之前不需要先建立http连接。在完成TCP连接之后,客户端发送http请求报

2020-07-26 21:27:03 1768

原创 排序算法

内部排序:数据记录在内存中进行排序外部排序:待排序文件较大,需要访问外存 常见的内部排序:插入排序(直接插入、折半插入、希尔排序)、交换排序(冒泡、快排)、选择排序(简单选择、堆排序)、归并排序(2路归并)、基数排序外排:归并排序(多路归并)、 各种内排的性能比较: 插入排序每次将一个待排序的记录按关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成每一轮能够确定...

2020-07-18 20:33:47 136

原创 Socket封装之聊天程序(三)

  今天,完成一下epoll的封装。类图  首先,还是画下类图,初步设计一下。  具体函数,我们下面详解。epoll封装EpollBase类CEpollBase.h:class CEpollBase{public: CEpollBase(int max_events); virtual ~CEpollBase(); bool Create(int size...

2018-02-02 21:19:26 123

原创 Socket封装之聊天程序(二)

  今天,学习一下socket的封装。类图  首先,我们把需要封装的各个类初步的设计如下:  接下来,我们建立类与类之间的关系:  其中,CStream类可有可无,这个类是用来封装各种读写流的。socket封装stream类stream.h:class CStream{public: CStream(int fd = -1); ~CStream(); v...

2018-01-29 16:12:04 100

原创 Socket封装之聊天程序(一)

  之前使用IPC编写过聊天程序,但是这样仅能在同一台计算机上进行聊天;要使得在不同的计算机(不同的IP+端口)上也能进行通信,就需要用到socket编程。前面说到,要处理多客户端的响应问题,需要I/O复用,即调用select或者epoll。通常我们使用epoll函数,以下例子也是。  接下来,我们需要封装一个地址类。为什么要封装这样一个类呢?  在前面的练习中,我们可以看到,在socket规程中...

2018-01-29 15:42:13 78

原创 Socket-IO复用技术

(上一篇地址)前面使用socket完成一个服务器对应多个客户端的小实验的时候,针对TCP连接,我们必须得创建新的进程来与新的客户端通信。那么,就意味着,1000个客户端就有有1000个server进程,这显然是不实际的。如果,我们可以提前把要监听的文件描述符放到一个集合里,一旦其中一个发生事件(不管是连上,还是通信),就去处理。这样,会方便很多。所以,今天学习一下IO复用。1 五个I/O模型...

2017-12-25 16:12:37 235

原创 IPC之信号量·即时通讯小程序(三)

上次说到解决并发的问题,需要用到信号量。下面,简单复习一下。信号量信号量是一种变量,它只能取正整数值,对这些正整数只能进行两种操作:等待和信号。(在我的理解,信号量就是用来访问一些临界资源而设计的)用两种记号来表示信号量的这两种操作:P(semaphore variable) 代表等待(请求资源)V(semaphore variable) 代表信号(释放资源)信号量的分类最简单的信号...

2017-12-25 14:21:22 132

原创 socket网络编程之TCP、UDP

之前说的用于进程间通信的几种方式:消息signal、管道pipe、消息队列msg、共享内存shm、信号量sem。都只适用于一台主机上的进程间通信,那么如何实现两台计算机之间的进程通信呢?所以,来了解一下异地进程通信。1 异地进程通信协议层为双方的主机通信进程分配“端口”和缓冲区,以便异地进程间的通信。1.1TCP/IP协议以下是OSI参考模型与TCP/IP参考模型的对应关系:1.1.1...

2017-12-24 01:20:23 210

原创 二叉树的简单实现

二叉树数组表示Tree.h:#ifndef _TREE_H_#define _TREE_H_#include <iostream>using namespace std;typedef int ElemType; //元素类型class CTree{public: CTree(int isize,ElemType* root); ...

2017-12-20 17:22:02 78

原创 IPC之共享内存·即时通讯小程序(二)

上次说到,使用消息队列可以做到简易的登录、退出功能。那么,该思考一下,聊天的用户列表和聊天记录应该存在哪儿呢?当然是服务器上,那么,就需要用到共享内存了。共享内存共享内存允许两个不相关的进程去访问同一部分逻辑内存如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段...

2017-12-19 15:02:26 126

原创 IPC之消息队列·即时通讯小程序(一)

消息队列上次说到了进程间通信的管道,不过匿名管道有个缺点就是,只能做到有亲缘关系的进程间通信,所以今天学习一个新的进程间通信方式——消息队列。消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值消息队列也有管道一样的不足,就是每个数据块的最大长度是有上限的,系统上全体队列的最大总长度也有一个上限消息队列函...

2017-12-16 20:02:18 231

原创 IPC之管道

现在linux使用的IPC(Inter-Process Communication,进程间通信)方式有以下几种:-(1)管道(pipe)和匿名管道(FIFO)-(2)信号(signal)-(3)消息队列-(4)共享内存-(5)信号量-(6)套接字(socket)什么是管道管道是Unix中最古老的进程间通信的形式。我们把一个进程连接到另一个进程的一个数据流成为一个“管道”。 管道是半双工...

2017-12-16 17:11:49 86

原创 Linux捕捉信号机制之(signal,kill)、(sigaction,sigqueue)

linux下公有64个信号,kill -l 查看一下:可以看到,缺少了32、33两个未知信号,从这里分界,前面31个信号是不可靠信号,后面的是可靠信号。当进程发生阻塞的时候(一下子发送很多信号),不可靠信号容易丢失。如何去验证呢?可以在2(不可靠信号)号信号和34(可靠进程)号信号屏蔽期间,不断向某个进程发送这两个信号,待解除屏蔽后,观察是否丢失。这里测试的时候,要注意一下,9-SIGKILL ...

2017-12-15 01:24:36 305

原创 虚拟机串口与主机串口通信·小程序(下)

上次说到的,不能做到实时通信。那么开两个进程就可以了,一个用来监听是否有消息传来,一个用来等待用户输入。那么,先来复习一下进程的相关概念。<br>进程结构linux中进程包含PCB(进程控制块)、程序以及程序所操纵的数据结构集,可分为“代码段”、“数据段”和“堆栈段”。进程状态运行状态R(TASK_RUNNING)可中断睡眠状态S(TASK_INTERRUPTIBLE) ...

2017-12-12 00:39:57 125

原创 免安装版MySQL的安装和卸载

免安装版的mysql安装,说白了就是用命令安装。跟在linux下安装软件一样的。安装第一步首先,去官网上http://dev.mysql.com/downloads/mysql/ 下载安装包,后缀名为.zip的。然后,解压缩。第二步如果里面有默认的配置文件my-default.ini。打开,修改以下三行。没有的话,自己建一个my.ini。文件内容:[client]port=3306def...

2017-12-11 15:46:04 87

原创 VS连接MySQL数据库

C++连接MySQL数据库有两种方式:<br>1、通过MySQL 的C API(决定使用这种方式)也可以使用MySQL++ 。[Mysql++是官方发布的、一个为MySQL设计的C++语言的API。Mysql++为Mysql的C-Api的再次封装,它用STL(Standard Template Language)开发并编写,并为C++开发者提供像操作STL容器一样方便的操作数据库...

2017-12-11 15:16:26 102

原创 虚拟机串口与主机串口通信·小程序(上)

主机串口用到的工具是SSCOM32,虚拟机串口工具是VSPD。即通过VSPD工具,可以将二者的串口相连,可以想象成有一根串口线连接了主机和虚拟机。<br>第一步 确定端口打开VSPD,如下图,点击“Port pairs”-“create pair“。我们要用到的就是COM1和COM2。此时,二者状态都是:close。<br>然后,打开虚拟机,“虚拟机”-“设置”-“串口”-...

2017-12-10 00:01:23 348

原创 Linux 系统函数open、close、read、write、fcntl 简单应用

系统调用系统调用是操作系统提供给用户的一组“特殊接口”。系统调用并非直接和程序员或系统管理员直接打交道,而是通过软中断的方式向内核提交请求,从而获取内核函数的服务入口(系统调用表)。系统调用让系统从用户空间进入内核空间内运行,运行后将结果返回给应用程序(内核态->用户空间)。<br>系统调用和系统API等区别<br>系统API主要是通过C库libc来实现,程序员...

2017-12-08 01:11:56 357

原创 Linux C 文件锁的操作

文件锁的类型<br>1 读锁共享锁,如果A进程对文件的某区域加了读锁,B进程也可以在此区域加读锁,但是不能对此区域加写锁。2 写锁独占锁,如果A进程对文件的某个区域加了写锁,B进程就不能对此区域加写锁,也不能对此区域加读锁。<br>当多个进程同时对一个文件进行读写操作时,为确保文件的完整和一致性,这几个进程要加锁同步。<br>当进程开始读取文件的某个区...

2017-12-06 23:55:53 133

转载 分布式负载均衡架构

参考内容:http://www.jianshu.com/p/fc268327d299?from=timeline<br>1 负载均衡(Load balancing)在网站成立初期,我们一般都使用单台机器提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供良好的服务。我们一般会把多台机器组成一个集群对外提供服务。&l...

2017-12-06 16:59:06 128

转载 一致性哈希算法

原博客:https://www.cnblogs.com/lpfuture/p/5796398.html    http://www.jianshu.com/p/e8fb89bb3a611 背景 一致性哈希算法大多用来解决服务器负载均衡的问题。 举个场景例子:  比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你...

2017-12-05 23:33:04 77

原创 动态链接库.so和静态链接库.a的区别

静态链接库:  •扩展名:.a  •编译行为:在编译的时候,将函数库直接整合到执行程序中(所以利用静态库编译生成的文档会更大) •独立执行的状态:编译成功的可执行文件可以独立运行,不需要再向外部要求读取函式库的内容 •更新:如果函式库更新,需要将整个项目程序重新编译 •好处:方便程序移植动态链接库:  •扩展名:.so  •编译行为:在编译的时候,程序里面仅有指向动态库所在的指标,其...

2017-12-05 17:55:08 189

原创 makefile书写规则

1 makefile 基本规则TARGET … : DEPENDENCIES …  COMMAND  …·目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。·依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。·命令(COMMAND)是make执行的动作,一个可以有多个命令,每个占一行。注意:每个命令行的起始...

2017-12-05 17:50:40 127

原创 linux下共享库的制作及常见的问题

将自己写的链表生成共享库 1、编译 2、设置库名:   库的名称格式:lib + XXX + 版本号.so (库的名称为XXX)-shared 生成共享文件库 -fpic 动态链接  3、把头文件和.so文件放到系统目录下(使用共享库了,把之前的#include “list.h” 改成 #include < list.h > ,删除该文件夹内的list.* ,就可以运行成功了) ...

2017-12-02 17:03:37 106

原创 vi的使用及gcc编译过程

1 文本编辑工具vi vi是Linux/Unix底下最常用的文本编辑器。vim是vi的升级版本,它不仅兼容vi的所有命令,而且还加入了一些新的特性。1.1 vi的三种工作方式1.2 编辑方式光标定位 M 移动光标到页面中央 L移动光标到页面尾处 H移动光标到页面开始处 Ctrl+f向后翻页 Ctrl+b向前翻页 0移动光标到行首 $移动光标到行尾复制 粘贴 删除 nyy 复制光标...

2017-12-02 16:37:42 665

原创 Linux下自定义服务及服务的添加

第一步 写一个后台运行程序,比如:往一个文件里1s添加一个字符。保证正确运行。(&表示后台运行)第二步 写服务的配置文件:第三步 实现(a.txt 出现在根目录下)第四步 服务自启动  添加服务并查看服务状态,按照之前文件写的默认都是关闭的。用命令或者修改之前的配置文件都可以。1)修改配置文件上图红色内容为:chkconfig 35 80 802)命令...

2017-12-02 16:15:43 163

原创 哈希基础

1 常用的构造hash函数的方法1.1 直接定址法  1、原理:取关键字或关键字的某个线性函数值为哈希值。、  2、公式:H(key)=key或H(key)=a*key+b  3、适合查找表较小且连续的情况  4、优点:简单、均匀,不会产生冲突  5、缺点:需要知道关键字的分布,现实中不常用1.2 数字分析法  1、原理:抽取关键字中的一部分来计算存储位置。假设关键字是以r为基(如:以10...

2017-12-02 09:10:23 153

原创 使用telnet远程访问虚拟机

前面说到通过SSH2(Secure CRT)来远程登录和访问我们的虚拟机,其实还可以通过wondows自带的telnet服务远程登录linux。首先,要保证本机的telnet服务有开启,不然在dos命令时,是无法识别的。在“控制面板”-“程序和功能”-“打开或关闭Windows功能”-“Telnet客户端”打钩。之后要重启计算机才生效!...

2017-11-30 23:23:11 460

原创 文件传输之ftp

前面说到实现虚拟机和本机之间网络传输的方式除了使用ssh2协议以外,还可以使用ftp协议。具体做法:第一步 安装vsftpd服务器-安装:rpm –ivh*.rpm    -查询:rpm –q vsftpd  -卸载:rpm–e vsftpd如上图,出现版本号,表示已经安装过的了。第二步 保证网络连...

2017-11-30 16:06:15 92

原创 文件传输之共享文件夹、SecureCRT

实现本机与虚拟机之前的上传下载,除了用前面提到的挂载优盘,还可以使用共享文件夹。具体步骤如下:“虚拟机”-“设置”-“选项”-启用共享文件夹-添加本机路径。然后,填写本机路径,和共享文件夹的名称。最后,在虚拟机的/mnt/hgfs 目录中可以找到该共享文件夹。(如果该目录下是空的话,安装完VMware-tool应该就没...

2017-11-30 14:14:03 152

原创 虚拟机Linux网络配置

在装了虚拟机之后,在网络连接对话框中会多出来两个虚拟网卡VMnet1和VMnet8。先简单说下虚拟设备:-VMnet0:用于虚拟桥接网络下的虚拟交换机-VMnet1:用于虚拟host-only网络下的虚拟交换机-VMnet8:用于虚拟NAT网络下的虚拟交换机-VMware Network Adapter VMnet1:...

2017-11-30 00:28:10 145

原创 虚拟机linux下优盘的挂载

首先,要知道为什么优盘要挂载,什么叫挂载?在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。 在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。简单来说,当优盘插上电脑的时候,虚拟机识别到有设备连接上了,...

2017-11-28 01:25:26 191

原创 Linux基本操作命令

1 linux系统结构linux系统一般有这几个部分组成:内核Kernel、外壳Shell、文件系统和应用程序。层次结构如下图:其中:linux内核主要与计算机硬件进行交互,并为用户程序提供一个高级的执行环境,按功能模块分为:进程调度、内存管理、文件管理、进程间通信、网络接口。2.介于使用者和操作系统内核之间的接口Shell有以下功能:-读取输入和语法分析命令列-重定向和管道-搜索和运行程...

2017-11-27 14:20:13 92

空空如也

空空如也

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

TA关注的人

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