自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kerberos

简介Kerberos是不依赖信道安全的,但需要有一个公认可信赖的第三方的网络认证协议。可用于防止窃听、防止重放、保护数据完整性等场合。它在很多登录鉴权场景上被使用。关键字Authentication Server 认证服务器(AS)Ticket Granting Server 票据授权服务器(TGS)大大票:客户端加密组装的包含自身身份信息的票据,一般是用户密码的...

2018-03-11 23:09:16 1236

原创 揭秘安全通道协议

知识背景业务客户端跟后端服务的协议为自定义的二进制协议,其中协议头中有一个2子节的字段,表示该请求包对应的功能(如0x825是调度功能的请求包),也称为命令字。TLV是一种常用的用于通信的结构体格式。T表示tag(类型),L表示length(value的字节长度),V表示value。Kerberos鉴权体系,基于票据的鉴权服务,避免密码相关数据直接过多地暴露在网络上。使用标准的密码...

2018-03-11 20:22:30 2056

原创 分布式事务

基本概念XA:XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager,如数据库)之间的接口。JTA:作为java平台上事务规范JTA(Java Transaction API)也定义了对XA事务的支持,实际上,JTA是基于XA架构上建模的原理:https://w

2017-11-16 10:59:17 344

原创 Linux下开发-资源详解

资源限制获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。#includeint getrlimit(int resource, struct r

2017-11-05 23:23:46 260

原创 Linux下开发-守护进程(daemon)

intdaemon(void){pid_t pid=fork();if(pid!=0)exit(0);//parent//first childrenif(setsid()==-1){printf("setsid failed\n");assert(0);exit(-1);}

2017-11-05 16:49:08 926 1

原创 Linux IO模型

IO操作步骤(1)发起IO请求:IO请求一般需要请求特殊资源(如磁盘、RAM、文件、网络),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。(2)实际IO操作:真正进行数据接收(数据复制)。IO分类步骤1(发起IO请求):分为阻塞IO和非阻塞IO,区别主要是看发起IO请求是否阻塞进程。1、应用程序调用后,不能立即返回的称为

2017-11-05 14:49:16 325

原创 Linux下开发-揭秘文件链接数

unlinkint unlink( const char* pathname);此函数删除目录项,并将由pathname所引用文件的链接计数减1。如果还有指向该文件的其它链接,则仍可通过其他链接访问该文件的数据。如果出错,则不对该文件做任何更改。只有当链接计数达到0时,该文件的内容才可被删除。关闭一个文件时,内核首先检查打开该文件的进程数。如果该数达到0,然后内核检查其链接数,如果

2017-11-04 14:05:14 2702 1

原创 C/C++字节详解

下面介绍几个例子,让大家对字节有一个相对深刻的认识sizeof和strlen1、sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2、strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。例子int *p; sizeof(p)=4;sizeof(*p)相当于sizeof(int);对于静

2017-11-04 13:23:26 7170 1

原创 Makefile和GCC日常用法

GCC-I、-L、-lgcc -o hello hello.c -I /home/hello/include-L /home/hello/lib –lworld(大写i) -I/home/hello/include:表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找顺序:/home/hello/include--> /usr/include -->

2017-11-04 13:14:22 1668

原创 C/C++extern详解

在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,比如加上函数的参数类型等等。而在C中,只是简单的函数名字而已,不会加入其他的信息。也就是说C++和C对产生的函数名字的处理是不一样的.试想这样的情况:一个库文件已经用C写好了而且运行良好,这个时候我们需要使用这个库文件,但是我们需要使用C++来写这个新的代码。如果这个代码使用的是C++的方式链接这个C库文件的

2017-10-30 00:06:12 642 1

原创 C/C++模版

函数模板template void swap(T& a, T& b){}当调用模板函数时类型T就会被“被调用时的实参类型”自动所代替,比如swap(a,b)其中a和b是int型,这时模板函数swap中的形参T就会被int所代替。不能在函数调用的参数中指定模板形参的类型,对函数模板的调用使用实参自动推演来进行。类模板通式类模板形参不存在实参推演的问题

2017-10-29 17:42:30 300 1

原创 C/C++宏

字节对齐#pragmapack(n)如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式。如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。宏的字符串操作#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。#defi

2017-10-29 12:08:10 365 1

原创 数据库范式

数据库范式1NF(First Normal Form):当且仅当所有域只包含原子值(字段不可分)2NF(Second Normal Form):当且仅当实体E满足第一范式,且每一个非键属性完全依赖主键时(有主键,非主键依赖主键)(非主属性不能部分依赖于主键(eg:只依赖某个主键)3NF(Third Normal Form):当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖

2017-10-22 15:54:45 610

原创 数据库常用命令

用户和授权相关命令createuser'username1'@'%'IDENTIFIEDBY'password';//创建用户GRANTALLON*.*TO'username1'@'%';//授权GRANTSELECTON`conn`.*TO'dbuser'@'%'GRANTSELECTON*.*TO'dbuser'@'%'IDENT...

2017-10-22 11:57:13 341

原创 一致性hash算法

分布式算法服务器的负载均衡的算法有很多,包括:轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法。典型的应用场景是: 有N台服务器提供缓存服务,需要对服务器进行负载均衡,将请求平均分发到每台服务器上,每台机器负责1/N

2017-10-22 11:08:48 426 1

原创 浅谈Paxos

本文只涉及paxos的算法过程,不包含理论推导。Paxos协议最终解决什么了问题?当一个提议被多数派接受后,这个提议对应的值被选定,一旦有一个值被选定,那么只要按照协议的规则继续交互,后续被选定的值都是同一个值,也就是这个选定值的一致性问题。(可用于选举leader)基本概念Proposal Value:提议的值Proposal Number:提议编号,要求提议编号不能冲突Propo...

2017-10-22 00:43:49 5726 1

原创 数据库设计优化

字段长度选择够用就好,越小越好。能用数值类型尽量使用数值类型,如果不需要用到变长类型的话,那么就统一采用char型。TINYINT一般用于存储性别、是与否、用户状态之类等少数可选项(不建议使用enum枚举类型,扩展只能更改表的字段类型或ONLINE DDL、动作很大)INT UNSIGNED可用于存储UNIX时间戳、IPV4地址(内置INET_ATON/INET_NTOA快

2017-10-15 23:10:19 366

原创 浅谈数据库索引

InnoDB索引索引组表(b+tree索引,自平衡,任意叶节点到根节点高度相同)。主键索引叶子节点存储了所有表数据(主键key+表数据)。辅助索引存储key和主键值key。MyISAM索引堆组织表。主键索引只存储主键key和行指针,不存储实际的数据,实际表数据通过行指针指向。什么情况会使用索引会用索引的情况、、=

2017-10-14 15:44:06 426

原创 Web安全问题

XSS跨域攻击XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。XSS

2017-10-14 11:31:47 383

原创 Linux锁API

flock、lockf和fcntlLinux的文件锁主要有两种:flock和lockf。lockf只是fcntl系统调用的一个封装。lockf或fcntl实现了更细粒度文件锁,即记录锁,可以对文件的部分字节上锁,而flock只能对整个文件加锁。应该避免在多线程场景下使用flock对文件加锁,而lockf/fcntl则没有这个问题。建议锁和

2017-10-14 10:51:17 1313

原创 ElasticSearch简介

ElasticSearch是一个开源的、可扩展、分布式的搜索和分析系统。适用场景不需要事务支持。可以适应准实时的查询特点,注意ES 不是实时查询的数据库。需要支持多维度查询的场景,即需要在很多字段进行过滤,比如数十、数百甚至更大的字段中选择过滤。需要支持庞大数据量的聚合、排序、统计的要求,但对并发请求要求不高。需要支撑千万、甚至数百亿以上的数据查询。

2017-10-09 10:51:41 806

原创 程序优化的那些事

系统设计层面攒包/定时地进行批量处理。提高单包承载率,减少网络io、减少系统调用次数。数据处理(cpu消耗型代码)、io独立线程处理。多地部署,就近接入。分set,避免跨城、跨地区流量访问。消息队列尽量无锁化、一写一读等。尽量减少无用的代理层,去中间商。灰度机制。内核级优化(操作系统多队列网卡特性等)。数据自动报表化,多维度

2017-10-08 15:56:55 486

原创 linux网络API细节

connect函数,是收到syn+ack,发送ack之后返回;accept函数跟三次握手没有关系,accept是从accept队列里面取一条已建立好的连接;bind函数只是进程占用ip+port;声明:该ip+port被这个进程占用了;backlog是listen函数传入的第二个参数客户端调用connect函数建立连接,内部是发送了一个SYN包到服务端.服务端

2017-10-08 11:44:22 664 1

原创 传统拥塞控制

RTT(Round-TripTime):往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。RTT测量方法1、TCP Timestam选项: RTT = 当前时间 - 数据包中Timestamp选项的回显时间。2、重传队列中数据包的TCP控制块。在TCP重传队列中保存

2017-10-08 01:02:26 449 1

原创 SYNCookie原理

发起一个TCP 连接时,客户端将一个SYN包发送给服务器。作为响应,服务器将SYN + ACK 包返回给客户端。此数据包中有一个序号,它被TC 用来重新组装数据流。SYN Cookies是根据以下规则构造的初始序号:令t为一个缓慢递增的时间戳(通常为time()>>6,提供64 秒的分辨率);令m为服务器会在SYN 队列条目中存储的最大分段大小(Maximum ...

2017-10-06 11:16:44 1525

原创 TCP四次挥手和TIME_WAIT

FIN_WAIT_1 : FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是: FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情...

2017-10-06 10:19:38 1534 1

原创 TCP三次握手

三次握手过程LISTEN: 表示服务器端的某个SOCKET处于监听状态,可以接受连接了。SYN_SENT : 当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文(同步序列编号SynchronizeSequence Numbers),随即进入SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。(发送端)

2017-10-05 19:54:27 314 1

原创 一个数据包发送的旅程

应用层:首先结合应用层的协议,我们把这些数据放到一个缓冲区内,然后形成了应用层的报文data。传输层 :数据通过传输层发送,比如TCP。在这里报文打上了传输头的包头(TCP/UDP),主要包含端口号。这样就组成了tcp的数据传送单位segment。tcp是一种端到端的协议,利用这些信息,比如tcp首部中的确认序号(根据这个确保数据顺序接收,IP也有不过那叫分片),根据这些数字,

2017-10-05 18:45:45 1650 1

原创 运输层TCP协议

协议格式TCP建连(三次握手)和TCP断连(四次挥手)同时打开同时关闭TCP顺序性(流式)原理:分片组包、序列号TCP是流状态协议:不一定顺序接收,但是一定会顺序返回给应用层。比如A write 两次(123、456)。B Read了两次,可能一次过收到123456、也可能分两次接收12、3456如果源主机使用同样的连接发送另一个报文段,那么这个报文段的序列号等于前一个报文段的序列号与前一个报文段...

2017-10-04 20:50:32 1254 1

原创 运输层UDP协议

//UDP包发送失败不会产生ICMP差错报文?长度字段为2字节(16位),最大表示65535,所以UDP包长度最大为65535(含协议头8个字节),但考虑到MTU问题,整包最好不要超过1500字节,避免出现ip层分片。...

2017-09-30 15:36:39 658

原创 ICMP、Ping、Traceroute

ICMP:当传送IP数据包发生错误--比如主机不可达等等,ICMP协议会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在IP层以上的协议是可能做到安全的原因。ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。而前 16bit就组成了ICMP所要传递的信息。Ping:给我们一个看主机到目的主机的路由的机会。这是因为,ICMP的ping请求数...

2017-09-30 14:54:32 579

原创 网络层IP协议

协议格式IP分片及MTU

2017-09-30 12:37:46 509

原创 ARP和RARP

ARP(地址解析:AddressResolution Protocol)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址缓存表),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己

2017-09-30 11:22:16 411

原创 TCP/IP协议族

2017-09-30 10:39:41 266

原创 Mac的使用方法

mac键位⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(Fn+Delete)⇞ Page Up(Fn+↑)⇟ Page Down(Fn+↓)Home Fn + ←End Fn + →⇥ 右制表符(Tab键)⇤ 左制表符(Shift+Tab)⎋ Escap

2017-08-06 13:52:19 2940

原创 Mardown常用指令

标题# 一级标题## 二级标题……###### 六级标题引用> A man who stands for nothing will fall for anything.文字加粗、斜体、删除(GFM)**bold** text, __bold__ text*italic* text, _italic_ text~~deleted text~~

2017-08-05 17:14:13 489

原创 HTTPS简介

简介1、HTTPS是使用TLS/SSL加密的HTTP协议。2、HTTP采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险。而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能。3、TLS的基本工作方式是,客户端使用非对称加密与服务器通信,实现身份验证并协商对称密钥,之后采用协商密钥对信息以及信息摘要进行对称加密。4、解决身份验证问题的关键是确保获取的服务器公钥是合法的,能够验证服务器...

2017-07-07 18:26:32 2453

原创 如何建立安全通道

建立安全通道遇到的问题钓鱼、木马(神都救不了你,赶紧改密码吧)脱裤、撞库(祈祷别人不是存明文密码吧)暴力破解(如彩虹表、简单密码暴力破解)重放、伪造登录窃听(伪造服务器、伪造客户端、中间人攻击)前向安全如何设计一个安全的登录过程第一阶段(裸奔)数据库直接存储密码、请求包、回包均为明文且带上了密码和key。解决不了上面的任务问题,登录设计的所有大忌均犯了。第二阶段(简单加密)请求包和回包使用密...

2017-06-05 22:37:02 6749 1

原创 深入理解Java虚拟机读书笔记-java锁机制

线程安全的实现方法1.互斥同步最基本的互斥同步手段就是synchronized关键字,synchronized关键字经过编译之后,会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令,这两个字节码都需要一个reference类型的参数来指明要锁定和解锁的对象。 如果Java程序中的synchronized明确指定了对象参数,那就是这个对象的reference;如...

2017-06-01 19:57:50 700

原创 深入理解Java虚拟机读书笔记-java内存同步模型

java内存同步模型Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、 静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。 为了获得较好的执行效能,Java内存模型并没有限制执...

2017-06-01 19:48:03 515

空空如也

空空如也

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

TA关注的人

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