自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

G

切忌以追求利益为目的学编程

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 浅谈DDoS攻击

分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个...

2021-06-15 16:55:18 1044 1

转载 Linux上TCP的几个内核参数调优

Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。调优清单好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优!tcp_max_syn_backlog,somaxconn,tcp_abort_on_overflowtcp_max_

2021-02-19 18:17:37 380

转载 SSL证书中pem der cer crt csr pfx的区别

一.名词解释这里先介绍一下X.690,它是ITU-T标准,规定了几种ASN.1编码格式:Basic Encoding Rules (BER)Canonical Encoding Rules (CER)Distinguished Encoding Rules (DER)关于X.690知道上面的关系就可以了,在此我不做更多介绍。有兴趣的读者可以自行google。注意,上面编码格式CER是一种和DER很相似的编码格式,与后文提到的.cer后缀没有任何关系。大家最好忘记它。这里我们先看.

2021-01-27 11:52:43 8273 1

原创 关于SSL证书链的一些认识

一、数字证书的基础知识数字证书是用来认证公钥持有者身份合法性的电子文档,以防止第三方冒充行为。数字证书由 CA(Certifacate Authority) 负责签发,关键内容包括 颁发s者、证书有效期、使用者组织、使用者公钥 等信息。数字证书涉及到一个名为 PKI(Public Key Infrastructure) 的规范体系,包含了数字证书格式定义、密钥生命周期管理、数字签名及验证等多项技术说明,不在这篇笔记中详细展开。我们借助下面的流程,看看 CA 是如何签发一张证书,使用者又是如何验证这样

2021-01-27 11:24:20 1339 1

转载 站在Java角度看zero-copy,mmap,direct-memory

本文专门解释关于高性能IO的基层技术,关于zero-copy,mmap,direct-memory,这些都是Linux/Windows/Mac OS都支持的底层api,但我会用Java作为主语言。打比方有需求是从文件error.txt中读取文字,然后做一些业务修改操作再回写到socket把文件传输给同伴。Java写这个逻辑是很简单的用 InputStream 流 1chunk,1chunk读入到一个buffer,然后把内容修改完,写入 OutputStream 流,写回文件,然后发到socket buff

2020-10-30 14:55:21 424

转载 堆外内存 之 DirectByteBuffer 详解

堆外内存堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。那么堆外内存就是存在于JVM管控之外的一块内存区域,因此它是不受JVM的管控。在讲解DirectByteBuffer之前,需要先简单了解两个知识点java引用类型,因为DirectByteBuffer是通过虚引用(Phantom Reference)来实现堆外内存的释放的。Ph.

2020-09-24 19:52:36 978

转载 文件IO操作的最佳实践

知识点梳理本文主要关注的 Java 相关的文件操作,理解它们需要一些前置条件,比如 PageCache,Mmap(内存映射),DirectByteBuffer(堆外缓存),顺序读写,随机读写…不一定需要完全理解,但至少知道它们是个啥,因为本文将会主要围绕这些知识点来展开描述。初识 FileChannel 和 MMAP首先,文件IO类型的比赛最重要的一点,就是选择好读写文件的方式,那 JAVA 中文件IO有多少种呢?原生的读写方式大概可以被分为三种:普通IO,FileChannel(文件通道),M

2020-09-24 18:22:12 491

转载 关于TCP 半连接队列和全连接队列

目录问题描述分析问题深入理解TCP握手过程中建连接的流程和队列如果TCP连接队列溢出,有哪些指标可以看呢?实践验证下上面的理解容器中的Accept队列参数进一步思考过程中发现的一个奇怪问题那么全连接队列满了会影响半连接队列吗?总结最近碰到一个client端连接异常问题,然后定位分析并查阅各种资料文章,对TCP连接队列有个深入的理解查资料过程中发现没有文章把这两个队列以及怎么观察他们的指标说清楚,希望通过这篇文章能把他们说清楚一点问题描述JAVA的

2020-08-05 11:15:44 375

转载 零拷贝(Zero-copy)及其应用详解

目录前言 传统的数据传输方法 零拷贝的数据传输方法 “基础的”零拷贝机制 对Scatter/Gather的支持 对内存映射(mmap)的支持 零拷贝机制的应用 在Kafka中的应用 在Spark中的应用 The End前言零拷贝(Zero-copy)是一种高效的数据传输机制,在追求低延迟的传输场景中十分常用。本文先通过传统方案引出零拷贝机制,然后分析其细节,最后介绍它的部分应用。文中涉及到的操作系统理论知识都可以参考英文维基或者相关书籍,如Abraham Sil

2020-07-27 20:51:24 1045

转载 Kafka对PageCache的使用

page cache & buffer cache执行free命令,注意到会有两列名为buffers和cached,也有一行名为“-/+ buffers/cache”。~ free -m total used free shared buffers cachedMem: 128956 96440 32515 0 5368 39900-/+ b

2020-07-27 20:16:12 2978 1

转载 CPU工作模式简述

一,计算机的工作模式CPU和其他设备连接,靠的是总线,其实就是主板上密密麻麻的集成电路,这些东西组成了CPU和其他设备的高速通道。单靠CPU没有办法完成计算任务,复杂的计算任务都需要保留中间结果,这就要依赖内存。二,CPU和内存如何配合工作CPU: 运算单元,数据单元和控制单元。运算单元:只管算,它不知道应该算哪些数据,运算结果应该放在哪里。数据单元:运算单元计算的数据如果每次都要经过总线,到内存里面现拿,这样就太慢了,所以就有了数据单元,用于暂时存放数据和运算结果。控制单元

2020-06-22 14:42:07 2897

原创 负载均衡基本原理&LVS简述

目录前言:基本介绍1.1负载均衡的由来1.2负载均衡的优点1.3负载均衡的类型1.3.1DNS负载均衡1.3.2硬件负载均衡1.3.3软件负载均衡第2章基础原理2.1Netfilter基本原理第3章Lvs负载均衡3.1基本简介3.2工作模式3.2.1DR模式3.2.2NAT模式3.2.3Tunne...

2020-04-09 18:19:22 524

原创 Http tunnel技术介绍

什么是http暗藏通道?什么是局域网安全,系统管理员怎样才能保障局域网的安全?这是一个不断变化的安全概念,很长的一个时期以来,在局域网与外界互联处放置一个防火墙,严格控制开放的端口,就能在很大程度上掌握安全的主动权,方便的控制网内外用户所能使用的服务。比如,在防火墙上仅仅开放80,53两个端口,那么无论是内部还是外面的恶意人士都将无法使用一些已经证明比较危险的服务。  但要注意一点,防火墙在某种意...

2020-02-26 15:49:10 5553 5

原创 SSL/TLS握手原理&加密套件简述

TLS算法组合在TLS中,5类算法组合在一起,称为一个CipherSuite: 认证算法 加密算法 消息认证码算法 简称MAC 密钥交换算法 密钥衍生算法 比较常见的算法组合是 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 和 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 都是EC...

2020-02-17 16:30:09 7347

翻译 SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法

本文翻译自:https://www.wst.space/ssl-part1-ciphersuite-hashing-encryption/https://www.wst.space/ssl-part-2-diffie-hellman-key-exchange/  作为一名安全爱好者,我一向很喜欢SSL(目前是TLS)的运作原理。理解这个复杂协议的基本原理花了我好几天的时间,但只要你理解了底层的...

2020-02-17 15:33:17 835

转载 国内TCP单边“加速”的“正确”做法

我一直认为,这是一个丑行!跟几位业内的朋友交流之后,让我了解了更多。站在相反的方向往后看,正确的做法肯定应该是避免Buffer bloat!这确实足够正确,以至于如果以鲁迅的方式看问题,这种正确的做法反而有点政治不正确了!避免Buffer bloat,这是正确的做法,bbr,vegas,westwood,甚至cdg背后都有理论支撑并解释“为什么这么做是正确的”,...

2020-02-16 21:47:26 1452

转载 TCP加速技术解决方案

需求和现状行业需求近年来,随着互联网在全球的快速发展和普及,网民数量的增加,生活中各方面对互联网依赖的增强,带来互联网访问量的爆发性增长。 并且随着web页面内容元素越来越丰富,对交互延时的要求, 给服务端的并发能力和处理能力提出了新的要求。 横向上可以增加机器来提高web服务的可用性和解决并发量的增长。虽然硬件越来越便宜,但是一味增加机器会造成大量的维护成本和非高峰时候资源的闲置。 结合...

2020-02-16 19:07:54 4720

原创 PKCSXX和X509简述

PKCS 发布的15 个标准PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准。《What is PKCS》PKCS 目前共发布过 15 个标准:(1)PKCS#1:RSA加密标准。PKCS#1定义了RSA公钥函数的基本格式标准,特别是数字签名。它定义了数字签名如何计算,包...

2020-01-07 13:41:04 1696

转载 四层、七层负载均衡的区别

一,什么是负载均衡(Load balancing)在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.tao...

2019-12-24 16:21:47 275

转载 关于gc日志中Desired Survivor的疑问和对象晋升老年代的小结

问题背景(下面的所有内容都是根据书上的Serial/Serial Old收集器下的情况)在《深入理解JVM》一书中的——3.6.3长期存活的对象将进入老年代的介绍中,一个例子的jvm参数中加了这一行-XX:+printTenuringDestribution意思是希望每次新生代gc后,可以跟踪Survivor区中的对象的年龄分布。然后还设置了-XX:MaxTe...

2019-12-17 19:59:32 1110

转载 GC日志中,Metaspace的committed和reserved含义

GC日志中,Metaspace的这几个参数分得清吗?在GC日志中,Metaspace这一行的 used ,capacity ,committed ,reserved 具体都代表什么?HeapPSYoungGen total 10752K, used 4419K[0xffffffff6ac00000, 0xffffffff6b800000, 0xffffffff6b80000...

2019-12-17 19:42:12 8558

转载 饿了么分布式服务治理及优化经验(含PPT)

饿了么分布式服务治理及优化经验(含PPT)原创:兰建刚导读:高可用架构 7 月 30 日在上海举办了『互联网架构的基石』专题沙龙,进行了闭门私董会研讨及对外开放的四个专题的演讲,期望能促进业界对互联网基础架构的建设及发展,本文是兰建刚分享饿了么服务治理经验。今天我想站在一个大的角度上,看一下饿了么最近一年多的时间,经历的技术上一些痛苦的问题与改进的过程。为什么讲比较痛苦的事情?...

2019-11-13 11:33:42 687

原创 后台IO高负载造成JVM GC长时间停顿

在我们的生产环境中,我们已经多次看到在JVM (Java虚拟机)中运行的应用程序偶尔会遇到很大的STW (Stop-The-World)应用程序暂停,原因是JVM的GC日志被后台IO通信阻塞(例如,OS页面缓存写回)。在这种STW暂停期间,JVM暂停所有应用程序线程,应用程序停止响应用户请求,从而导致对延迟敏感的用例出现不可接受的延迟。我们的研究表明,暂停是由JVM GC(垃圾收集)在写GC日...

2019-10-02 23:48:41 1724 1

原创 三十而立程序员天马行空的心理路程(迷茫/焦虑)

当你看到标题而且又点开了这篇文章,那说明你也存在或多或少的困惑,更说明你现在肯定不忙,如果是996(9116)忙的跟狗一样,你还有那闲功夫迷茫和思考人生的意义?那既然您来了,那索性就静下心来倒杯茶,接下来看看这篇文章能不能戳到你的"G点"(思想共鸣)吧。首先介绍一下写这篇文章的背景:笔者在一家互金公司供职3年半,然后跳槽到一家最近比较火规模还不错的创业型公司待了几个月离职(原因无非就是工...

2019-09-28 20:31:56 683 5

转载 Java并发编程之锁机制之引导篇

Java并发编程之锁机制之引导篇该文章属于《Java并发编程》系列文章,如果想了解更多,请点击《Java并发编程之总目录》前言在前面的文章中。我们了解了volatile、了解了synchronized。现在我们来了解一下Java SE 5之后新增加的Lock接口(以及相关实现类)实现的锁功能。在阅读该系列文章之前,希望你已经掌握了volatile原理及CAS操作原理。如果你对上述提...

2019-09-23 14:43:55 87

转载 软引用、弱引用、虚引用-他们的特点及应用场景

为什么会有这4种引用Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。 这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态,对于如何描述一些“食之无味,弃之可惜”的对象就显得无能为力。 我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存之中;如果内存空间在进行垃圾收集...

2019-09-23 14:41:54 122

转载 一不小心就踩坑的fail-fast是个什么鬼?

一不小心就踩坑的fail-fast是个什么鬼?我在《为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作》一文中曾经介绍过Java中的fail-fast机制,但是并没有深入介绍,本文,就来深入介绍一下fail-fast。什么是fail-fast首先我们看下维基百科中关于fail-fast的解释:In systems design, a fail-fa...

2019-08-14 18:08:02 533

转载 MQ对比:Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ

导读:本文将对Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ从17 个方面综合对比作为消息队列使用时的差异。资料文档 Kafka:资料数量中等。有Kafka作者自己写的书,网上资料也有一些。 RabbitMQ:资料数量多。有一些不错的书,网上资料多。 ZeroMQ:资料数量少。专门写ZeroMQ的书较少,网上的资料多是一些代码的...

2019-08-01 15:48:39 220

转载 面试题: 你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情

面试题目:地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?一.回答:什么时候?1.系统空闲的时候。分析:这种回答大约占30%,遇到的话一般我就会准备转向别的话题,譬如算法、譬如SSH看看能否发掘一些他擅长的其他方面。2.系统自身决定,不可预测的时间/调用Sys...

2019-08-01 15:48:06 137

转载 Java调优经验谈CPU、性能、IO

转载自:https://blog.csdn.net/qq_27409289/article/details/80257000对于调优这个事情来说,一般就是三个过程:性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。 性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具、经验对系统、应用进行瓶颈分析,以求定位到问题原因。 ...

2019-08-01 14:59:59 819

转载 Java IO流详解

1.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。IO又分为流IO(java.io)和块IO(java.nio)Java.io是大多数面向数...

2019-07-31 10:43:58 261

转载 jvm内存结构-栈的变化,机器指令的格式/执行模式

栈的结构:《Java虚拟机原理图解》4.JVM机器指令集局部变量表:方法执行时,虚拟机会把字节码中方法数据区的code类型的属性中的局部变量放到栈的局部变量表中。操作栈:jvm指令是基于操作栈的,也就是说,运算过程是在操作栈中进行的。动态链接:(Dynamic Linking and Resolution):Class字节码的常量持中存有大量的符号引用,在运...

2019-07-26 15:05:55 143

转载 详解 JVM Garbage First(G1) 垃圾收集器

前言Garbage First(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命。如果使用Java 8/9,那么有很大可能希望对G1收集器进行评估。本文详细首先对JVM其他的垃圾收集器进行总结,并与G1进行了简单的对比;然后通过G1的内存模型、G1的活动周期,对G1的工作机制进行了介绍;同时还在介绍过程中,描述了可能需要引起注意的优...

2019-06-03 17:46:47 187

原创 TCP协议详解(TCP报文、三次握手、四次挥手、TIME_WAIT状态、滑动窗口、拥塞控制、粘包问题、状态转换图)

文章目录一、TCP报文(标准长度20字节) 二、三次握手 1、半连接、半打开、半关闭状态 2、SYN flood攻击 3、为什么需要三次握手? 4、在三次握手过程中,如果服务器一直收不到客户端的ack会发生什么? 5、初始序列号Seq为什么要随机初始化? 三、四次挥手 1、为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 2、CLOSE_WAIT状态有什么影...

2019-05-29 19:41:49 1097

转载 跨域问题详解

写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内容,希望大家看完之后再有人问你这些问题,你心里会窃喜:“嘿嘿,是时候展现真正的技术了!”一、不要再问我this的指向问题了跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上,无论你在工作上或者面试中无可避免会遇到这个问题。为了应付面试,我每次都随便背几个方案,也不知道为什么要这样干,...

2019-05-27 17:28:41 373

转载 HTTP和HTTPS协议详述

大纲一、前言:先来观察这两张图,第一张访问域名http://www.12306.cn,谷歌浏览器提示不安全链接,第二张是https://kyfw.12306.cn/otn/regist/init,浏览器显示安全,为什么会这样子呢?2017年1月发布的Chrome 56浏览器开始把收集密码或信用卡数据的HTTP页面标记为“不安全”,若用户使用2017年10月推出的Chrome 62,带...

2019-05-22 17:31:55 346

转载 一步步从Spring Framework装配掌握SpringBoot自动装配

一步步从Spring Framework装配掌握SpringBoot自动装配目录Spring Framework模式注解 Spring Framework@Enable模块装配 Spring Framework条件装配 SpringBoot 自动装配 本章总结Spring Framework模式注解模式注解是一种用于声明在应用中扮演“组件”角色的注解。如 Spring Fra...

2019-04-03 20:32:48 161

转载 服务治理-熔断/限流/降级

1 写在前面1.1 名词解释consumer表示服务调用方provider标示服务提供方,dubbo里面一般就这么讲。下面的A调用B服务,一般是泛指调用B服务里面的一个接口。1.2 拓扑图大写字母表示不同的服务,后面的序号表示同一个服务部署在不同机器的实例。2 从微观角度思考2.1 超时(timeout)在接口调用过程中,consumer...

2019-03-15 14:42:06 1550

转载 UML各种图总结-精华

UML各种图总结-精华UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。一、基本概念    如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类...

2019-01-19 15:15:15 353

转载 JVM中可生成的最大Thread数量

最近想测试下Openfire下的最大并发数,需要开大量线程来模拟客户端。对于一个JVM实例到底能开多少个线程一直心存疑惑,所以打算实际测试下,简单google了把,找到影响线程数量的因素有下面几个:  -Xms intial java heap size -Xmx maximum java heap size ...

2019-01-09 14:11:42 1405 1

jvm内存结构-机器指令的执行模式演示demo代码

jvm内存结构-栈的变化,机器指令的格式/执行模式文章中的demo代码。

2019-07-26

空空如也

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

TA关注的人

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