自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hanani_Jia的博客

计算机科学与技术专业萌新

原创 Raft协议介绍

Raft是一个分布式协议,现在随着用户的增多一台机器来运算后台数据已经不足及支撑当前软件后端的运算量,所以就有了分布式的概念,可是分布式中有一个最大的问题就是他的高可用性,或者说高一致性,比如说我现在有一张银行卡卡里有余额一千元,然后现在在一台atm机上取钱,这时候我们访问了银行后台的一台服务器,...

2019-03-25 17:38:04 1786 1

原创 Redis

 最近接触了Redis数据库,这里对Redis进行一个简单的介绍。  Redis是一个广泛被使用的高性能的存储系统,它具有一下特点: 1.存储在内存中,所以读写性能非常高 2.由C编写而成,所以跨平台支持的性能非常高 3.使用kv存储,同时支持多种数据类型操作,并且其中key是二进制安全的...

2019-02-26 16:42:40 185 0

原创 WebSocket 介绍

WebSocket 介绍  今天想给大家介绍一下WebSocket技术,在说他之前就不得不先说一下我们当前的HTTP协议,WebSocket和我们现在的HTTP几乎是没有关系的,但是他们两个还是有一部分交集的 WebSocket是在HTML5下的一种新的协议,但是他和http一样都是基于t...

2019-02-25 14:33:48 237 0

原创 gorm

今天接触了orm的概念。orm 全程 object relation mapping 对象映射关系,这到底是做什么的呢?orm是为了解决面向对象和关系数据库之间存在的互不匹配的现象的技术,c++里边我们经常说面向对象,也就是说我的操作都是可以看成以某个对象为基础,让这个对象进行一系列的操作,但是当...

2019-02-17 20:26:28 3211 0

原创 http 网关 熔断和限流

公司内部很多rpc调用都需要经过gateway 是为了保护后端 这里有两个常见的操作 一个是熔断一个是限流。gateway还能实现很多比如服务的黑名单白名单 防止攻击 灰度控制等等。这里主要就是介绍熔断和限流。 什么是熔断? 其实熔断这个词不仅仅是在计算机领域会出现,在很多地方都有熔断的概念,熔...

2019-02-17 17:01:57 1972 0

原创 go语言学习 五

第一个就是 还是重启电脑 然后在输入密码的时候不要输入 按住shift和关机那的重启按钮 会进入安全操作界面,里边有一个疑难解答进去,然后在里边找到高级选项 里边有一个启动设置,然后点重启,刚刚让你按的是4或者f4选的是安全模式 ,你现在看里边有没一个模式叫做启动带网络连接的安全模式,然后按他对应...

2019-01-23 16:57:07 143 1

原创 go语言学习 四

  1 package main                                                                        2                                                           ...

2019-01-22 21:12:26 82 0

原创 go语言学习 三

  昨天我们讲到了切片,切片可以用内奸函数make来创建,同样也是创建动态数组的方式,make函数会分配一个元素为零值的数组并返回一个引用了它的切片,一般来说make有两个参数,第一个是你要切片的数据,第二个是要切片的长度,如果需要指定它的容量就需要传入第三个参数,切片可以包含任何类型,甚至包括其...

2019-01-21 19:30:33 170 0

原创 go语言学习 二

Go语言里和c语言一样也有指针的概念   var i int = 1 var pInt *int = &i //输出:i=1     pInt=0xf8400371b0       *pInt=1 fmt.Printf("i=%d\tpInt=%p\t*pInt=...

2019-01-20 19:55:50 110 0

原创 go语言学习 一

Go语言学习 1.包 每个go语言程序都是由包来构成的,程序从main包开始运行, package main import (     "fmt"     "math/rand" ) func main() {     fmt.Printl...

2019-01-18 17:59:55 330 0

原创 rpc im机制和网络优化

什么是rpc?  remote procedure call 远程过程调用 ,简单的来说,我们现在实现了一个计算器的程序,通常我们会把这个计算器封装成一个函数,当我们想要计算的时候只需要把我们的参数传给计算器函数,把我们要处理的两个数据和我们要进行的操作传输过去,之后用一个返回值来把计算的结果返回...

2019-01-17 21:06:53 245 0

原创 数据库--内置函数

在数据库中有很多内置的函数。 比如获得当前时间,甚至还可以在数据库内进行时间的加减操作。 可以通过date_add 和date_sub来完成堆某个时间的加减天数操作。 还可以求两个日期之间的差值。 可以在进行插入的时候直接调用内置函数。 创建一个留言表,表中包括主键自...

2018-12-25 11:06:34 346 0

原创 数据库--基本查询

      对于数据库的查询操作是数据库里边最重要的部分。 创建一个goods商品类,插入两条数据。如果查看表中所有数据的话,可以通过select * from表名来查看某一个表中的所有数据。 如果说想要批量修改数据库中某个表中某个字段的所有数据可以通过update语句来完成 如果说...

2018-12-23 20:13:48 134 0

原创 数据库--表的约束

   之前我们介绍了数据的类型,今天我们主要介绍数据库中表的约束,虽然数据类型对我们的数据进行了一定程度的约束,但是那些约束很单一,很多情况还是难以处理,所以就有了表的约束。对于表的约束主要有:null、not null、default、comment、primary key、auto_incre...

2018-12-23 11:44:20 221 0

原创 数据库--数据类型

   数据库和我们平时编程是相同的也有不同的数据类型,这次我们对数据库中的数据类型进行一下介绍。 这里我们创建了数据项num的类型是tinyint,这里的int类型只能存储-128到127范围内的数据,也就是和C程序中的char类型存储范围是一样的,这里当我们插入1 的时候自然没有问题,但是...

2018-12-17 21:03:45 109 0

原创 数据库--表的基础操作

   这次我们介绍数据库中对表的一些基本操作。 通过语句: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 en...

2018-12-17 19:43:15 153 0

原创 数据库--基础操作

     这次我们对数据库再做一些基础的介绍。上次我们介绍了数据库支持的字符串和字符串校验规则。 这里我们使用校验规则使用utf8_ general_ ci[不区分大小写]来创建数据库test1,这时候整个数据库的校验规则是不区分大小写的。 之后创建一个名字为person的表,为了方便...

2018-12-16 22:12:58 161 0

原创 数据库--基础

     数据库相比文件保存文件来说:数据库比文件更要安全、文件不方便数据查询和管理、文件不利于存储海量数据、文件在程序中不方便控制。所以今天给大家介绍数据库的一些基础知识,这里我用的数据库是MariaDB他的操作和MySQL是一样的。     数据库安装完毕之后需要通过命令来进入,进入之后就...

2018-12-15 21:24:53 128 0

原创 多路复用----epoll

  上次我们介绍了多路复用IO的select。poll和select十分类似,把用户传入的数组拷贝到内核空间,然后查询每个fd的状态,如果对应设备就绪就放入等待队列中,如果没有设备就绪就把进程挂起,直到有设备就绪或者超时了,但是他比select好的一点是他没有数目限制,因为poll是基于链表来存储...

2018-12-10 17:45:16 172 0

原创 多路复用IO----select

    上次我们介绍了五种基本的IO模型,在这五种里边多路转接IO是我们要了解的重点。    为什么他重要,我们先拿他和我们基础的IO来进行一下区分,当我们遇到普通的IO时都会开启一个新的进程来处理这个IO,在现在网络的访问量来开,如果同时有五千个IO来恐怕普通的机器都难以处理,更别说动不动就...

2018-12-08 11:44:14 240 0

原创 五种IO模型

  了解了什么是阻塞什么是非阻塞和同步和异步理解起来五种IO模型就很容易了。   五种IO模型:阻塞IO、非阻塞IO、信号驱动IO、多路转接IO、异步IO   阻塞IO:     阻塞IO是最简单的一种,也就是所进程在等待某个条件的时候如果条件不满足就一直等待下去,一直到满足了再去执行下一...

2018-12-02 20:22:54 184 2

原创 IO模型--同步/异步 阻塞/非阻塞

    到底什么是IO,我们之前经常说的IO就是指进行文件的写入和读取操作所做的操作, 但是在操作系统层面的IO并不是这么狭义。从键盘获取数据从socket都可以称作IO。   在正式介绍IO之前我们需要先弄清楚几个概念。 用户空间和内核空间     我们都听过虚拟内存的概念,现在的操...

2018-12-02 19:15:22 958 2

原创 IP辅助协议三

   如果我们每次上网前都给我们的主机设置一个IP是非常麻烦的事情,到现在IP地址已经不够用了,所以不存在说给每个主机固定一个IP,所以我们的移动端笔记本、平板电脑等每到一个新的地方可能都需要设置一个新的IP,但是这样就十分的繁琐,所以就有了DHCP协议动态主机设置协议,有了DHCP之后我们的计算...

2018-11-27 22:16:37 92 0

原创 IP辅助协议二

  关于IP协议还需要一些其他的协议来辅助,比如我们在访问网站的时候并不会使用IP地址来访问,而是通过一串字符串,也就是我们说的域名来访问。但是网络访问的协议是需要IP地址的,那这是怎么实现的呢?用的就是我们的DNS服务。 DNS服务就是将字符串转换成具体的IP地址,因为IP地址对于我们来说十分...

2018-11-26 16:21:31 162 0

原创 IP辅助协议一

  之前我们简单介绍了IP协议,但是在我们访问一个网站的时候很好直接输入IP地址,并且数据包在网络传输的过程种在数据链路层也并不适用IP地址,所以仅仅有IP地址是不能完成我们的数据传输的,今天我们就来介绍一下辅助于IP的其他协议。   我们都听过mac地址这个概念,mac地址是我们网卡的物理地址...

2018-11-24 17:53:13 162 0

原创 IP协议 二

   上次我们介绍了每个IP地址在网络里边必须是唯一的,不然一旦出现IP地址冲突,就会导致发送端无法区分应该把数据发给哪个地址。但是随着网络技术的不断发展和普及,IP地址不足的问题日趋显著,如果还是按照以前的放大采用唯一的地址的话,就会有IP地址耗尽的危险。对于那些没有连接互联网的独立网络也就是局...

2018-11-20 21:16:32 182 0

原创 IP协议

  之前我们说到来的TCP/UDP等协议是传输层的协议,在网络层中也有一个很知名的协议--IP协议。IP能够让世界上任何两台计算机之间机型通信,IP协议主要负责的是将数据包发送给最终的目标计算机。网络层的主要作用是实现终端节点之间的通信,这种终端节点之间的通信也叫做点对点的通信,之前我们说过,网络...

2018-11-19 16:56:09 252 0

原创 TCP协议机制

   今天主要给大家介绍几个在TCP协议中的机制。    在之前介绍对TCP可靠性的时候说到了几个机制:确认应答、超时重传。    确认应答机制是每一个数据包中都带有一个对应的确认序列号,是用来告诉发送者,我收到了哪些数据,接下来你还要给我发哪些数据。第二个超时重传,也就是当我们的发送方发送数...

2018-11-18 21:42:57 366 0

原创 fork和vfork有什么区别

   自己在刚刚学习Linux进程的时候接触到了一个进程里边的第一个函数fork,最初接触的时候还是感觉比较稀奇的,后来发现也不过如此,之前还写过一个关于fork的博客,fork就是只调用一次,但是却有三个不同返回值的函数,可以通过它的返回值来判断是子进程还是父进程。但是fork和vfrok有什么...

2018-11-13 23:18:43 136 0

原创 TCP--四次挥手

  上次我们介绍了TCP链接的三次握手,这次我们来说一下TCP的四次挥手。    三次握手是在创建连接,那顾名思义四次挥手就是在断开连接的。    当我们两个主机想要断开连接的时候就通过四次通信来断开一个存在的TCP链接。那为什么需要四次挥手来断开连接呢?我们先说一下四次挥手的过程。 第一...

2018-11-13 21:10:22 91 0

原创 TCP--三次握手

  我们再说TCP的时候经常会说他是有连接的,可靠的,面向数据流的三个特点,今天我们就来介绍一下TCP的有连接的。   先说一下什么是面向连接的,我们在创建TCP连接的时候和UDP不一样,我们得先向客户端发送请求,然后客户端回复我们一个确认应答和请求,之后我们再给客户端发送确认应答,也就是经典的...

2018-11-11 20:56:55 130 0

原创 TCP协议特性--可靠

   我们之前简单的讲解了一下TCP的工作方式以及TCP和UDP之间的区别,今天我们再深入的讲一下TCP。    TCP是传输层的协议,在到达这一层的时候TCP会给数据加上一个TCP的首部,TCP首部大小最小为20字节,最长是60字节。并且在TCP首部中没有表示包长度的数据或者数据长度的字段,...

2018-11-10 20:16:27 75 0

原创 端口

  学习网络的一定都知道端口这个东西,但是端口到底是什么?他的作用是什么在什么时候使用到它,今天就简单的介绍一下。   首先,要清楚哪里用到了端口在TCP/IP协议中我们经常能够看到端口的身影,在网络中分层传输的时候,每经过一层都会给他加上一个首部,TCP、IP都是如此,虽然我们常常是把TCP和...

2018-11-10 16:46:22 175 0

原创 LeetCode--电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 输入:"23"输出:["ad", "ae", "af", "...

2018-11-10 11:57:41 274 0

原创 剑指offer--二叉搜索树的后序遍历

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。   我们都知道二叉搜索树的规律是左孩子要比根节点要小,右孩子要比根节点要大。而后序遍历就是最后遍历我们的根节点,这样就让我们的后序遍历存在一定的...

2018-11-06 20:24:05 75 0

原创 简单HTTP服务器实现

   我们这里实现一个简单的HTTP服务器,无论浏览器向我们请求什么数据,我们都返回一个hello world    //实现最简单的http服务端程序 //返回hello world //http是应用协议,在传输层使用的是tcp协议所以我们的程序本质上是tcp服务器 //我们http指定...

2018-10-30 20:46:03 998 0

原创 自定协议实现网络计算器

  这里我们的自定执行协议和TCP、UDP、IP这些协议不同,我们自定制的协议是应用层的协议。是我们这两个应用所应用的一种特殊传输和接受数据的方式,这里我们是通过结构体来存储数据的,也可以定义一个字符串,当我们的数据发送过去之后,只有我对应的服务端或者客户端明白我这里是在干什么,如何把这一大块数据...

2018-10-29 16:34:06 230 0

原创 剑指offer--包含mini函数的栈

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。  这个题目的意思就是我们的函数里边有一个min函数,当我们调用这个函数的时候,不需要去遍历我们的栈,直接调用这个函数就可以返回我们栈里边的最小元素。   那我们就一步一步的来分析...

2018-10-29 14:21:03 132 0

原创 多线程版本TCP聊天程序服务端

   这是一个通过多线程来实现可以接受多个客户端的TCP聊天程序。    //这是一个实现多线程TCP的聊天程序服务端 #include<stdio.h> #include<stdlib.h> #include<stri...

2018-10-28 21:01:43 401 0

原创 多进程版本TCP聊天程序服务端

  我们上次写了利用TCP协议来实现的简单的网络聊天程序,我们实现的是一对一的聊天, 但是如果我们通过上次的程序来实现多对一呢?     我们可以看出来其中一个客户端可以和服务端正常交流,但是另一个客户端是链接不上服务端的,即使原来的客户端退出了,新的客户端也是链接不上的。因为我们的程...

2018-10-28 16:32:07 294 0

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