3 Ferlan

尚未进行身份认证

我要认证

天下大事,必作于细!

等级
TA的排名 5w+

go并发机制学习

Go 原生支持高并发场景,其原因就是提供了goroutine(协程)以及底层提供的GMP调度器。goroutine协程协程与线程有什么区别?(1)goroutine是非常轻量级的,它就是一段代码,一个函数入口,以及在堆上为其分配的一个堆栈(初始大小为2K,会随着程序的执行自动增长删除)。所以它非常廉价,我们可以很轻松的创建上万个goroutine。(2)线程切换需要陷入内核,然后进行上下文...

2019-08-14 16:23:22

基于TAF框架的Future/promise异步调用

使用callback是能有效的达成异步不错,但是当业务变得庞大时,很多地方我们都要使用到异步调用。但如果异步调用嵌套多次,或者调用之间的依赖关系复杂的话,难免代码会变得混乱不堪。举个例子,假设我们需要依次调用服务A、B、C、D,我们就不得不把调用下一个接口的代码写在上一个接口的回调函数中。这时,future/promise的异步调用方式就应运而生了,采用这种方式我们定义回调函数中完成当前回调逻辑...

2019-04-22 19:35:25

ASCII码,Unicode编码,UTF-8编码,Little endian/Big endian

1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制...

2019-04-07 10:52:22

HTTP , HTTP1.1 , HTTP2.0 , SPDY , HTTPS你应该知道的一些事

转自:https://www.cnblogs.com/wjlog/p/5827168.html 1. web始祖HTTP全称:超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,例如tc...

2019-03-10 10:46:59

HTTP与HTTPS的区别,HTTPS的工作原理及优缺点

为什么要有HTTPS?超文本传输协议HTTP协议被用于在web服务器和网站服务器之间传递消息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密.如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等。为了解决http协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议https,为了数...

2019-03-10 10:11:59

单例模式

什么是单例模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。单例模式的实现实现单例模式一般有两种方式:饿汉模式和懒汉模式。饿汉模式我们用一个洗碗的例子来解释饿汉模式和懒汉模式。现在有饿汉和一个脏了的碗,饿汉希望下次想吃饭的时候能直接盛饭吃,所以他就先把碗先洗好,这样随...

2019-01-28 17:37:37

半链接,半打开,半关闭

一、半连接1.1 定义      发生在TCP3次握手中。      如果A向B发起TCP请求,B也按照正常情况进行响应了,但是A不进行第3次握手,这就是半连接。1.2 半连接攻击     半连

2019-01-25 09:34:38

tcp,udp特点,比较及 tcp可靠传输的各种机制

(1)TCP协议报头TCP指传输控制协议,其报头格式如下:TCP协议中的六个标志分别是,URG、ACK、PSH、RST、SYN、FIN。1)UGR(紧急):UGR=1表示紧急指针字段有效。它告诉系统此报文段有紧急数据,应当尽快传送。从报文段的开头,到紧急指针指向的地方就是紧急数据。2)ACK(确认):ACK=1时,确认号字段才有效。3)PSH(推送):让对方立即收到响应。与URG的区别...

2019-01-24 20:20:48

网络编程套接字---tcp简单通信程序详解

tcp简单通信程序详解实现步骤服务端:1.创建套接字socket2.绑定地址信息3.开始监听socket4.建立连接成功5-6 与客户端进行数据通信如何判断tcp断开链接?7关闭sockettcp通信程序1.0版本(不能支持多个客户端通信)tcp_server.cpptcp_client.cpp程序的问题解决思路:1.将服务端改成多进程版本:2.多线程版本两个版本的比较本篇博客的目的是用sock...

2019-01-23 16:24:35

从tcp,udp链接角度看send和sendto的区别

ssize_t send(int sockfd, const void *buf, size_t len, int flags);ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);send函数...

2019-01-23 08:51:16

网络编程套接字--udp通信

本片博客使用socket套接字设计一个简单的udp聊天小程序,因为udp比较简单,仅将代码列在此处。另有一篇使用socket套接字完成tcp聊天小程序,将重点讲解,博客地址:正在撰写,随后补上。服务端 udp_server.cpp#include <iostream>#include <unistd.h>#include <sys/types.h>...

2019-01-22 20:42:39

linux--守护进程

什么是守护进程守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。 Linux的⼤多数服务器就是⽤守护进程实现的。⽐如, ftp服务器, ssh服务器, Web服务器httpd等。同时,守护进程完成许多系统任务。⽐如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,...

2019-01-22 10:00:49

线程(二)线程的同步与互斥

线程的同步与互斥生产者与消费者模型线程的互斥互斥量(也叫互斥锁)互斥量使用步骤互斥量接口死锁线程互斥代码演示线程的同步为什么要线程同步?竞态条件条件变量条件变量的定义条件变量的接口条件变量的简单场景为什么要给pthread_cond_wait传互斥量?pthread_cond_wait内部为什么要执行解锁?代码演示生产者与消费者模型在讲同步与互斥之前,我们要来先讲一讲生产者与消费者模型。生产...

2019-01-21 09:55:11

linux--进程信号详解

进程信号详解1.引入信号的概念2.信号的生命周期3.信号的产生4.信号的注册4.1可靠信号与不可靠信号5.信号的注销6.信号的处理6.1 cure-dump1.引入信号的概念信号是软件中断。它给我们提供了一种能够异步处理事件的方法。事实上,进程并不知道信号何时到来。比如,当我们的某一个进程失去控制,而我们想让他终止运行时,通常使用Ctrl+c的方式使进程强制终止,Ctrl+c虽然由硬件产生,...

2019-01-19 19:05:58

线程(一)线程概念,优缺点,基本操作

线程什么是线程线程与进程线程的优缺点线程id与进程id关于使用posix线程库的说明线程的创建线程的退出线程的等待与分离什么是线程线程是进程中的一条执行流,也是计算机调度的基本单位。在linux平台下,线程是由进程模拟实现的,故该线程也叫做轻量级进程,且线程被操作系统用pcb描述并管理。线程与进程一个进程中至少有一个线程,也可以有多个线程,多线程是共享同一个进程地址空间的。进程是...

2019-01-19 17:11:15

C++智能指针

智能指针什么是智能指针?为什么要有智能指针?auto_ptrunique_ptrshared_ptrshared_ptr引发的线程安全问题:什么是智能指针?为什么要有智能指针?在C++程序里,使用new关键字开辟的内存必须被手动delete掉,不然就会导致内存的泄漏,但是,当程序非常冗长,你能保证自己每一个手动开辟的内存块都释放了吗?在delete之前,倘若程序因为异常跳转后,你还能保证内...

2019-01-17 09:59:53

关联式容器set详解

STL源码剖析---关联式容器set详解什么是setset的迭代器set的常用操作代码测试什么是set上篇博客详细介绍了关联式容器map ,今天我们来了解一下它的姊妹篇–set.set也属于关联式容器.他们俩底层都由红黑树实现,所以set的查询,插入,删除效率都很高,且set内的数据也是有序的(默认升序)。但map的缺点set也有,不能够存储不能比较的数据,且数据不重复。set存储的数据...

2019-01-16 15:09:47

STL源码剖析---关联式容器map详解

STL源码剖析---关联式容器map什么是mapmap中存储的键值对map的迭代器map的常用操作总结什么是mapmap是STL中关联式容器的一种,所谓关联式容器,元素是按关键字来保存和访问的,而序列式容器中的元素则是按它们在容器中的位置来顺序保存和访问的。本片博客的主角map中,存储的不是一般的数据,而是一个个的键值对,我们称之为pair,pair键值对由两部分组成:键值key和实值v...

2019-01-16 10:08:02

牛客--栈的压入弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:我们直接用例题看,出栈序列为{4,5,3,2,1}。4: 1,2,3...

2019-01-15 11:53:16

leetcode--最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minS...

2019-01-15 09:38:07

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。