自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(50)
  • 资源 (9)
  • 收藏
  • 关注

原创 定位及解决OOM

OOM:OutOfMemoryError,内存溢出,是指因内存不够,导致操作新对象没有剩余空间。会导致频繁fullgc出现STW从而导致性能下降。内存泄漏:指用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态。

2024-03-17 23:38:37 934

原创 Mysql-索引

Mysql索引为什么采用的B+数?我们通过分析哈希表、二叉树、红黑树、自平衡二叉树、B树、B+树来慢慢推算除原因。

2023-12-19 14:07:09 805

原创 sublime Text使用

工具(tool)->控制面板(command palette) -> 输入install ->安装第一个install package controller,以下安装过了,所以没展示。点击install package,等几秒会进入控制面板,输入Pretty,点击Pretty Json,以下是安装过的,所以没显示。输入ChineseLocalization,点击安装后,窗口会出现以下内容,则成功,无需重启。首选项->快捷键设置,设置json格式化快捷键: ctrl+alt+j。2、安装json格式化工具。

2023-11-30 20:36:08 1050

原创 netty websockt之断连重试

ChannelInboundHandlerAdapter重写channelInactive,当连接变为不活跃,则回调该方法。ChannelFutureListener监听ChannelFuture..isSuccess();1、连接异常,比如网络抖动导致连接失败;2、连接过程中断开连接重试;

2023-11-17 14:01:53 355

原创 netty之EventLoopGroup

重点就是最后哪个方法的注释:Returns the number of processors available to the Java virtual machine.(返回Java虚拟机可用的处理器数。创建EventLoopGroup使用无参构造方法时,发现会创建24个NioEventLoop(readonlyChildren.size=24),经查,是取的java虚拟机的可用处理器数2倍。

2023-11-16 17:10:22 100

原创 QuickFix/J:ResendRequest & ResetRequest

每次消息重传处理后,都会发送一次resetRequest,将对方的序列号重置为此次需发送的消息序列号+1,以与下次发送消息的序列号值匹配(递增)当接收到消息,取出msg tag=34,判断序列号与预期序列号是否一致,如果比预期的大,则会发送ResendRequest请求;所以,对于fix而言,接收的序列号过大时,是可自我修复的,而当序列号过小,则是属于重大事故,会断开连接,人工干预处理后再重连。如果没有持久化消息,则只会发送resetRequest,只有持有化消息,才能重发消息。

2023-11-02 13:55:19 196

原创 QuickFix/J:Session状态

resetReceived:发送logon前,会检查tag:resetSeqNumFlag的值,或当resetSent=Y且序号为1时,会置为ture;发起nextLogon或disconnect时,会置为false;发起nextLogon或disconnect时,会置为false;当nextLogon或disconnect时,置为false;当nextLogon或disconnect时,置为false;logonReceived:发起nextLogon时,会置为true;

2023-10-31 11:18:33 162

原创 QuickFix/J:使用@Handler处理消息

fix接收消息是通过实现quickfix.Application.fromApp(Message message, SessionID sessionID)指定message类型,调用quickfix.MessageCracker.crack(Message message, SessionID sessionID)方法在invokers这个map中找到对应的消息类并处理,invokers在initialize()中初始化,利用的是反射机制。调用crack()方法处理对应的消息。

2023-10-30 13:54:22 152

原创 http与https的区别

HTTP是明文传输,HTTPS是通过TLS将传输数据加密后传输,更具安全性,简单来说HTTPS=HTTP+SSL/TLS。1、客户端向服务端发送版本、加密算法种类、随机数信息等。2、服务端返回客户端发送的信息并带上服务端证书(公钥证书)。3、客户端效验服务端证书的合法性。4、验证不通过终止通信,验证通过继续通信,客户端将自己所支持的所有全部发送给服务端供服务端进行选择。5、服务端在客户端发送的加密算法中选择加密程度最高的机密方式。6、服务端将选择的加密算法通过明文返回给客户端。

2023-09-05 17:54:44 3677 1

原创 mysql批量insert死锁

mysql多线程批量insert发生死锁

2022-09-28 18:30:12 2458 1

原创 zookeeper

一、zk数据不一致场景1、zk过半成功即表示成功。场景:比如5个节点,有三个返回写入成功,则如果有读请求到另两个节点,则会数据不一致。解决方案:sync API原理:sync是使client当前连接的Zookeeper服务器,和zk的Leader节点同步(sync)一下数据。1、客户端掉用zk.sync()方法,生成一个ZooDefs.OpCode.sync类型的请求;2、当follower收到sync请求时,将进行以下步骤:添加至ConcurrentLinkedQueue<R

2022-03-06 21:22:20 2399

原创 JVM调优工具介绍

-XX:SurvivorRatio=6 ,设置的是Eden区与每一个Survivor区的比值,可以反推出占新生代的比值,Eden为6, 两个Survivor为2, Eden占新生代的3/4, 每个Survivor占1/8,两个占1/4.-Xms:最小堆内存,即虚拟机启动后分配的内存大小-Xmx:最大堆内存当最小堆内存满了,会尝试GC,如果GC之后还不能得到足够的内存,则会拓展堆内存,如果-Xmx设置过小则可能拓展失败,会导致OutOfMermory异常,一般-Xmx与-Xms设置为相同,避免每次..

2021-12-13 15:51:33 795

原创 并发之Thread源码解读

Runnable与Thread没有根本性的区别,Runnable定位为一个功能性接口,如下:@FunctionalInterfacepublic interface Runnable { /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thread causes the objec

2021-04-01 15:25:55 158

原创 线程之ThreadPoolExecutor

主要的成员变量: private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS = Integer.SIZE - 3; private static final int CAPACITY = (1 << COUNT_BITS) - 1;ctl:保存线程池状态和线程池有效数量控制的字段,使用前Integer类型

2021-03-30 15:45:07 115

原创 kafka详解

kafka最初由Linkedin公司开发,是一个分布式、支持分区(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。涉及的相关概念如下:名称 解释 Broker 消息中间件处理节点,一个kafka节点就是一个broker,一个或多个Broker可以组成一个kafka集群。 Topic kafka根据Topic对消息进行分类,发布到kafka集群的每条消息都需要指定一个Topic Producer 消息生产者,向Broke

2021-03-19 17:55:24 408

原创 消息中心设计

设计一个消息中心,需要满足高可用、可管理、满足业务线的隔离性、高吞吐以及高可靠。思路演变如下。根据需求可靠性,初步定ActiveMQ,满足可靠性。其优势如下:系统解耦,流量销峰,提高服务响应速度,提升系统伸缩性,提高系统可用性。但只是简单的消息生产、发送、消费,流程如下。缺点如下:1、可靠性:分布式事务成本高;Topic容易丢消息;开机、listener注册过程的问题;关机时内存中的topic消息必须消费完成;DB异常或硬件故障。2、性能和吞吐量:单producer,单机吞吐

2021-03-19 10:46:34 3580

原创 一、内存模型

主要内容1、计算机的主要组成部分;2、CPU由那几部分组成;3、高速缓存存在的意义及数据流转流程;4、为什么JVM创建线程、销毁线程是重型操作;一、冯诺依曼计算机模型现代的计算机模型都是-冯诺依曼计算机模型冯诺依曼计算机模型:计算机在运行时,先从内存中取出第一条指令,再通过控制器编译,按指令的要求从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来再取第二条指令,在控制器的指挥下完成规定的操作,依次进行下去直到遇到停止指令。程序和数据一样存

2021-03-17 17:55:39 225

原创 dubbo框架介绍一:初识dubbo

1、什么是RPC在分布式计算中,远程过程调用(全称remote procedurecall,缩写为RPC)是一个计算机通信协议,该协议允许运行于一台计算机上的程序调用另一个地址空间(通常是一个开放网络的另一台机器)的子程序,而程序员就像调用本地程序一样,不用为了交互额外的再编程。RPC是一种服务端-客户端模式,经典实现是一个发出请求-接收回应进行信息交互的系统。而设计面向对象编程时,又可称为远程调用或远程方法调用,所以对java而言也叫远程方法调用。本地方法调用和远程方法调用是相对而言,本地方.

2021-03-16 15:43:19 124

原创 HashMap中TreeNode解读

发现一篇优秀的讲解TreeNode的文章,就不重复造车了,在这记录一下:https://blog.csdn.net/qq_40267688/article/details/83106637TreeNode的类关系如下:TreeNode继承Node,具有Node的单向链表的特性,TreeNode的有参构造方法也是用得父类Node的构造方法,代码如下 TreeNode(int hash, K key, V val, Node<K,V> next) { .

2021-03-09 15:24:33 1891

原创 Netty心跳检测代码实例

服务端package com.weyne.io.heartbeat.server;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGrou

2021-02-22 16:43:32 354 1

原创 Netty编解码&粘包拆包&心跳检测与重连&零拷贝

编解码Netty涉及到的编解码组件有channel、channelHandler和channelPipe等,详细解析如下:channelHandler:处理入站、出站数据的应用程序逻辑处理容器。例如,实现 channelInBoundHandler接口(或channelInBoundHandlerAdapter),就可以接受入站时间和数据,这些数据会被你的业务逻辑程序处理。当你要给连接的客户端发送响应时,也可以用channelInBoundHandler冲刷数据。你的业务要逻辑通常写...

2021-02-18 18:34:55 184

原创 netty组件解析

NIO的类库和Api繁杂,使用麻烦:需要熟练掌握Selector、ServerSocketChannel、SocketChannel和ByteBuffer等。开发工作量和难度较大,有以下问题: 客户端面临断连重连、网络闪断、心跳处理、半包读写、网络拥塞和异常流的处理等。Netty对JDK自带的NIO的Api进行了良好的封装,解决了上述的问题。且Netty拥有高性能、更高吞吐量,延迟更低,减少资源消耗,最小化不必要的内存复制等优点。Netty基本使用4.X,5.x版本已经弃用,Netty..

2021-02-15 22:13:27 184

原创 BIO/NIO/AIO

public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8099); while (true){ logger.info("等待客户端连接。。。"); Socket socket = serverSocket.accept(); .

2021-02-02 19:51:37 202

原创 HashMap源码解读

JDK1.8提要: Map中桶的元素初始化是链表保存的,其查找性能是O(n),而树结构能将查找性能提升到O(log(n))。 链表长度达到8就转成红黑树,当长度降到6就转成普通bin(链表)。 HashMap的本质可以认为是一个数组,数组的每个索引被称为桶(bins,也叫哈希桶/存储桶,是hashMap的容量),每个桶里放着一个单链表(或红黑树),一个节点连着一个节点。 通过下标来检索数组元素时间复杂度为O(1),而且遍历链表的时间复杂度是O(n),所以在链表长度...

2021-01-28 16:52:27 282 1

原创 笔记

1、volatile关键字如上图,线程会将主内存(堆)中的变量加载到工作内存(java虚拟机栈)中,主内存是线程共享的,工作内存是线程私有的,当某线程对变量进行修改时,其他线程中的工作内存的变量值可能不一致,从而导致缓存不一致的问题。主内存与工作内存中变量读和写的指令如下图所示:作用:volatile修饰的变量前加lock:指令,类似内存屏障,在工作线程...

2021-01-04 11:45:19 128

原创 HashMap原理

put操作如下public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }其中求key的hash方法,如果为null,则放置在0下标,这也是key为null元素只有一个的原因static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.h

2020-12-30 14:51:45 63

原创 jvm-计算机数据存储基础

java虚拟机的指令字节长度、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。首先先熟悉下移位运算符:<<、>>、>>><<:左移,按二进制位数,高位向左移出舍弃,低位补零>>:右移,按二进制位数,低位向右移出,高位补零>>>:无符号右移,忽略符号位,空位补0,计算机中数字以补码存储,首位

2020-10-29 11:34:50 148

原创 JVM实探-class文件格式实战(3)

实战演练先创建一个简单类package com.weyne.demo.jvm;public class Test { private static String a = "test-a"; public static void main(String[] args) { System.out.println("Hello world"); }}通过jclasslib可以看到结构体信息通过Sublime等16进制文件编辑器查看Test.clas

2020-08-21 16:42:39 560

原创 JVM实探之cp_info.tag格式说明

CONSTANT_Class_info 结构用于表示类或接口,格式如下:CONSTANT_Class_info { u1 tag; u2 name_index;}CONSTANT_Fieldref_info, CONSTANT_Methodref_info 和CONSTANT_InterfaceMethodref_info字段,方法和接口方法由类似的结构表示:字段CONSTANT_Fieldref_info { u1 tag; u2 class_in

2020-08-21 13:56:58 643

原创 Class文件格式之各属性名详解

ConstantValue在编译时,javac将会为被static和final修饰的常量生成ConstantValue属性,且只限于基本类型和String类型。编译时javac将会为该常量生成ConstantValue属性,在类加载的准备阶段虚拟机便会根据ConstantValue为常量设置响应的值,如果该变量没有被final修饰,或者并非基本类型及字段串,则选择在类构造器中进行初始化。ConstantValue 属性的格式:ConstantValue_attribute { u2 a

2020-08-20 18:03:33 510

原创 JVM实探-class文件格式(2)

本贴主要详解field_info结构和attribute_info,而attribute_info在后续的menthod_info也有涉及。11、字段表fields[],描述当前类或接口声明的所有字段,但不包括从父类或父接口继承的部分。field_info接口如下:field_info { u2 access_flags; #定义字段被访问权限和基础属性的掩码标志 u2 name_index; #对应常量池索引值所属的项为CONSTANT_Utf8_info结构

2020-08-20 17:34:07 133

原创 JVM实探-class文件格式(1)

每个class文件对应一个如下所示的ClassFile结构体ClassFile { u4 magic; #魔数 u2 minor_version; #class文件主副版本号,JDK版本 u2 major_version; #class文件主副版本号,JDK版本 u2 constant_pool_count; #常量池数量 cp_info constant_pool[constant_pool_count-1]; #常量池 u2 access_flags

2020-08-19 16:34:55 115

原创 java技术树三之:高并发

2019-06-26 13:46:29 247

原创 java技术树二之:分布式

2019-06-25 17:56:21 179

原创 java技术树一之:性能优化

一、性能指标解读:QPS:queryPer Second,每秒查询率,是一个服务器在特定时间内能处理的请求数的衡量标准。我们网络每天基本有20%的时间承载了80%的访问量,那么,有如下关系存在:峰值每秒查询率(QPS)= (总PV数 * 80%)/(每天秒数 * 20%);机器部署量 =峰值每秒查询率 / 单机能承载的每秒查询率响应时间:RT,系统对请求做出响应的时间...

2019-06-25 13:54:27 771

原创 hibernate框架搭建

版本3.3.21、创建项目2、下载hibernate-distribution-3.3.2.GA并导入必须的jar包hibernate-distribution-3.3.2.GA\lib\required中的jar是必须依赖的jar包,hibernate3.jar是核心jar包。其他jar介绍连接数据库的jar包1)、连接数据库的jar包,只需要选择与自己java版本一样的...

2019-06-12 14:14:43 67

原创 spring-amqp与SpringBoot整合

目的:spring-amqp与SpringBoot整合,实现direct模式的消息接收,exchange、queue、routing_key以及bind关系在spring容器启动时初始化,实现消息的自动接收和处理。一、创建AMQP连接 @Bean public ConnectionFactory connectionFactory() { CachingConnect...

2018-06-11 17:25:40 5134

原创 Binding与BindingBuilder源码解读

Binding在Spring-AMQP下core中,生产者创建消息发送至exchange,消费者从队列中消费消息,队列与交换器的绑定关系便是由Binding来表示的,类中的说明原文:Simple container collecting information to describe a binding. Takes String destination and exchange names as...

2018-06-11 17:24:41 8457

原创 侦听消息队列的Message Listener类

Spring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,简化了我们对于RabbitMQ相关程序的开发。Spring AMQP包含一些模块,如:spring-amqp, spring-rabbit and spring-erlang等,每个模块分别由独立的一些Jar包组成。AbstractAdaptabl...

2018-06-11 17:22:08 19107

原创 AmqpAdmin源码解读

AmqpAdmin类:spring-amqp的core中,主要用作管理queue、exchange以及bind关系,查看类中声明:为AMQP指定一组基本的AMQP管理操作,如下图。/** * Specifies a basic set of portable AMQP administrative operations for AMQP &amp;gt; 0.9. * * @author M...

2018-06-11 17:20:38 480

Mysql分库分表11111111111

Mysql分库分表11111111111

2024-03-06

BouncyCastleProvider所需jar包

通过X509编码的Key指令获得公钥对象时,实例化对象需要用到的BouncyCastleProvider所需的jar包,亲测完全可用

2017-09-14

fastjson-1.2.2.jar

属于alibaba旗下的JSONObject操作依赖jar包,对方法toJSONString()进行了封装,对于之前的包更加强大,功能更全

2017-09-14

javabase64-1.3.1.jar

javabase64-1.3.1.jar,RSA非对称加密算法中有需要用到,亲测百分百可用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2017-09-14

apache IOUtils 的io jar包

commons-io-2.5.jar包,属于apache下的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2017-09-14

java udp 多线程实现简单的通信

这是利用java的udp通信,利用多线程保持通信持续的java聊天小程序

2014-08-19

空空如也

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

TA关注的人

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