自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rocketmq源码系列-broker消息存储(二)

broker有超级多的配置属性。配置属性请参考https://blog.csdn.net/wulitaot/article/details/79566053先看broker启动的initialize()方法。broker的启动类org.apache.rocketmq.broker.BrokerStartup#startorg.apache.rocketmq.broker.Broker...

2019-03-18 01:49:15 759

原创 @EnableAspectJAutoProxy和@Aspectj 切面 在spring容器中工作原理详解

@EnableAspectJAutoProxy这个注解是spring启用在自己的容器中注册了一个组件@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableAspectJAu...

2018-12-20 20:49:02 8690 1

原创 深入理解java虚拟机-class文件结构(5)

这个就不敲了。。。Class文件格式如下图,class文件就是用下面的的结构组织起来的u2表示2个字节  u4表示4个字节常量池的一些类型 各常量的结构如下图(不全) 写了一个简单的java类package vm.c2;public class ClassStructure { private int liu ; public void su...

2018-11-28 10:23:56 147

原创 深入理解java虚拟机-垃圾收集器(3)

怎么判定一个对象是死的呢?目前有引用计数法,和根搜索法引用计数法 即改对象被引用的次数,弊端 循环引用的问题,如 studenta.instance=studentb,studentb.instance=studentaHotspot采用的是根搜索法(可达分析法),当一个对象到GCRoot 没任何引用相连,则该对象可被回收可做GCRoot,有静态变量,栈中引用对象,常量引用,本地方...

2018-11-26 09:29:50 150

原创 苹果内购 服务器端验证

针对苹果内购,看了 大量的 其他blog和阅读官方文档才发现,其实 苹果内购服务器做的工作很少,此文档   写于2018年10月,只针对此时苹果返回的数据结构  内容解析。 基本上所有的 操作都可以再前端完成操作,包括对支付凭证的验证,但是如果在客户端验证凭证可能存在被篡改的危险,服务器去重验证和加款,是建立在 用户已经在前端支付成功,然后由ios会得到一个字节流,然后 base6...

2018-10-31 10:03:53 8041

原创 计算机网络自顶向下--运输层

运输层为不同系统之间的进程提供逻辑通信。应用层进程使用运输层的提供的逻辑通信,而不用关心运输层的工作机制,这就是分层的好处。运输层从从应用程序接收到的报文,转换为运输层分组(加上运输层的头部信息),成为报文段(segment),网络层将其封装为网络层分组(数据报)发向目的地。为了下面介绍具体的运输层协议,首先说明下网络层IP为不可靠服务,网络层是尽力交付服务,网络层是不保证数据...

2018-07-16 11:21:23 733

原创 支付宝h5支付对接

不用支付宝的api。太恶心了2M多。献给对接支付宝h5支付的小伙伴们public static void main(String[] args) throws UnsupportedEncodingException {Map requestMap = new TreeMap();//涉及到排序用treemapMap bizMap = new TreeMap();//这个可

2017-11-09 10:25:09 4274

原创 SpringBoot项目移除bean

在spring项目中,当引入别人的jar包的时候,通过spring SPI spring.factories ,会创建一些jar中的定义的bean,比如强制格式化返回值在项目中要移除这些不想自动注册的bean,使用BeanDefinitionRegistryPostProcessor,直接在 解析完bean的注册信息后,直接移除就行,这样就不会创建bean。@Componentpublic class RemoveRegistyBeanFactoryPostProcessor imp

2020-11-09 14:35:43 4553

原创 公司jdk升级到1.8,spring3.1.2版本与jdk1.8版本不兼容。

公司使用的spring的版本是3.1.2 与spring jdk1.8不兼容但是本机你使用1.8的时候,Caused by: java.lang.ArrayIndexOutOfBoundsException: 52304 at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.spri...

2020-04-21 21:17:39 2024 2

原创 反射修改常量的值,因为加载别人jar包的值被写死

由于公司中使用了一个别人的服务,引用jar包写一下文件,路径写死了是常量,写了一堆到桌面,只能想办法改了。public class MyTest {public static final String FILE_PATH ="/Users/" private static final String NEWPATH = "/Users/Desktop/mydata/temp"; ...

2019-08-20 19:33:46 433

原创 HashMap源码和多线程情况下的数据丢失的问题

public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}```来看看这个hash方法 static final int hash(Object key) { int h; //先计算出hashcode值 h,然后将h右移16位得到...

2019-03-24 19:27:59 5577 4

原创 java实现 限流算法 漏斗模型

package com.example.redis.漏斗限流;/** * @Auther: liuyujie * @Date: 2019/3/4 12:48 * @Description: */public class Funnel { int capacity;//漏斗容量 double leakingRate;//漏水速度 int leftQuota;/...

2019-03-19 17:17:14 2174 1

原创 rocketmq源码系列-consume负载均衡(四)

对于consume要达到负载均衡,一个队列同时只被一个consumer消费。那么在consumer,必须能够感知到其他相同group下consumer节点的新增和下线、当新增consumer的时候,会调用org.apache.rocketmq.client.impl.factory.MQClientInstance#sendHeartbeatToAllBrokerWithLock方法给所有...

2019-03-19 01:36:10 546

原创 rocketmq源码系列-producer(三)

在rocketmq发送端,发送一个顺序消息的代码如图,看看都干了什么public class OrderProducer { public static void main(String[] args) throws InterruptedException, RemotingException, MQClientException, MQBrokerException { ...

2019-03-18 19:34:36 221

原创 rocketmq源码系列-namesrv(一)

记录学习过程,方便后续查看,源码基于apache开源项目rocketmq版本4.4 namsesrv是什么,既然rocketmq是一款消息中间件,那么必须得有发送端(producer),消息存储端(broker),消费端(consumer),但是这些端是怎么关联起来的呢,这时候就需要一个注册中心了,用来收集各端的信息,进行路由信息的处理,封装。 namesrv相对rocketmq的其他模块比...

2019-03-17 13:49:24 468

原创 redis5.* 集群 新增节点,删除节点,节点slot复制,节点下线

在原来的7000-7005六个节点的基础上就行操作cp -r 7005 7007将原来 7005的信息复制到7007目录然后把redis.conf中的信息全部替换为7007然后进入到bin目录 启动7007节点./redis-server ../7007/redis.conf说明节点7也起来了随便进入一个客户端,比如7000./redis-cli -...

2019-03-07 11:48:45 3740

原创 基于redis5.*的集群搭建最新版本5.0.3

只适用于5.*的redis版本,低于的版本 看其他的把,不要浪费时间。目前redis为官网最新版本5.0.3打开官网https://redis.io/当前最小版本为5.0.3  版本   下载最新版本http://download.redis.io/releases/redis-5.0.3.tar.gz 为什么要使用redis集群呢?自动的分割不同的数据在不同的节点中,...

2019-02-27 17:40:30 2682

原创 spring @Autowired注解实现源码解读

在spring初始化 bean的时候代码片段1,bean当前的一些定义信息,如果没被处理过,则调用处理器修改 AbstractAutowireCapableBeanFactory //修改bean的一些定义信息 synchronized (mbd.postProcessingLock) { if (!mbd.postProcessed) {//mbd...

2018-12-16 15:21:42 2644

原创 servlet3.0规范上传文件,Part和spring的@RequestPart

 @Controllerpublic class WelcomeController { @RequestMapping("/2") public String welcome(){ return "index"; } @RequestMapping("/regist")//标识这是一个文件上传请求 public String regist(@RequestPart(...

2018-12-09 16:59:04 585

原创 @ComponentScan配置了excludeFilters不扫描controller但是扫描了

最近在做 去掉web.xml和applicationcontex.xml配置文件。也就是基于javaConfig配置,阅读起来更易读明明配置了 root contex过滤掉controller,但是任然扫描到controller。@Configuration//表示配置类@ComponentScan(basePackages={"springstudy.controller"},...

2018-12-09 11:58:38 20401 3

原创 深入理解java虚拟机-编译优化(9)

现在 java很少针对前端编译进行优化(java---&gt;class文件的过程),主要都放到后端编译优化了。java泛型java泛型是JDK1.5之后新增的语法糖,在java编译成class文件的时候,会擦除相关的类型信息,其中signature存储方法在字节码层面的特征签名,通过反射还是能获取相关的类型信息的, 对于编译后期优化,java程序刚开始是通过解释执行的,jav...

2018-12-02 23:31:40 126

原创 深入理解java虚拟机-jvm执行引擎(8)

java虚拟机规范定义了虚拟机执行字节码的概念模型。通俗的说就是,输入java字节码,对字节码进行解析,得到执行后的结果。这个就不得不提,运行时栈帧的结构了,在java的中,栈帧是java方法调用的的数据结构,每个方法的调用都伴随一个方法的入栈出栈。局部变量表:局部变量表就是用来存储,栈帧调用过程中的各个数据,单位为slot(槽),long,double占用两个slot,其余的...

2018-12-02 17:08:16 141

原创 深入理解java虚拟机-class文件加载(包括加载机制)(7)

 类的生命周期 其中加载-验证-准备-初始化-卸载的先后顺序是固定的。解析阶段有可能发生在初始化之后(为了支持运行时绑定)虚拟机在一下场景冲必须对类进行初始化(之前肯定先进行加载-验证-准备阶段)遇到 new 指令 getstatic,putstatic,invokstatic 对类进行反射的时候 初始化类的时候先进行初始化其父类 main方法的类,虚拟机需要先进...

2018-12-01 19:32:44 376

原创 深入理解java虚拟机----一段java代码的字节码解读(6)

   Code:   stack=2, locals=5, args_size=1      0: iconst_0                     iconst_0  加载常量0到操作栈顶      1: istore_1                     istore_1 存储常栈顶的值到局部变量表的 第1个slot中(slot从0开始)      2: ...

2018-11-29 23:36:24 143

原创 深入理解java虚拟机-linux中一些常见的 jvm相关命令,如jmap.jinfo,jstat,jstack(4)

ssh设置特定用户和ip登录,虽然是个小水管服务器,也得限制下用户登录不是/etc/ssh/sshd_config文件 添加AllowUsers liu [email protected],192.168.1.1表示允许liu用户任何ip登录,root用户为上面的写的两个ipjmap命令首先是要jps命令 如果没配置环境变量,就$JAVA_HOME/bin/jps 获取java虚拟机唯一...

2018-11-28 00:43:21 275

原创 深入理解java虚拟机-JVM参数

这个地方只是对遇到的一些jvm参数进行了一个整理开关线程私有缓冲     XX:+UseTLAB (默认);关闭-XX:-UseTLAB设置初始化的时候java堆的大小为10兆 -Xms10m 设置最大java堆大小为10兆 -Xmx10m设置栈的大小 -Xss256k设置方法区初始大小(1.8无此参数) -XX:PermSize=10M设置方法区的最大值 (1.8无此参数...

2018-11-26 00:28:14 264

原创 深入理解java虚拟机-java对象创建(2)

java对象的创建首先当jvm遇到一个new指令的时候,是否能在方法区查找到这个类的符号引用,并检查是否加载,如果没加载,则进行类加载,链接,初始化当前类。假如有多个线程进行对象的创建,比如线程1,为对象A分配了一个地址X,还没来得及吧地址X赋值给A,这个时候线程2为对象B分配地址X那么就出现线程安全问题,JVM是通过CAS保证分配的原子性,或者通过TLAB(Thre...

2018-11-26 00:15:13 102

原创 深入理解java虚拟机-java内存结构(1)

JVM内存空间布局 如下图(基于JDK1.7) program connter register(程序计数器):用来指示当前线程执行字节码的行号,如果是native方法计数器的值为空。 VM stack(虚拟机栈):虚拟机栈是当前线程的独立一个空间,栈中方法的调用都会创建一个栈帧,栈帧中会有局部变量表(用来存储编译期可知引用或者值,单位slot,long doubl...

2018-11-25 23:05:59 135

原创 java设计模式

-----------------------------------------中介者模式---------------------------------------------package 中介模式;public class ConcreteMediator implements Mediator { private Parter parterA; priv...

2018-08-27 09:38:06 545

原创 计算机网络自顶向下--链路层

链路层的主体部分是在网络适配器,即网络接口卡,即常说的 网卡链路层提供了差错校验和重发。校验方法主要有,奇偶校验:粒度太粗,比如说出现了比特位为1 有多少个,如果是一个比特出错可以校验出,如果是多个比特出现问题,那么这种校验方式可能就会出现问题校验和:将数据比特数据作为一个比特整数。循环冗余检测: 时延的由来: 多路访问链路协议,假如有多个节点需要传递链路帧...

2018-07-25 19:45:18 459

原创 计算机网络自顶向下--网络层

网络层,将运输层的的数据封装成一个数据报,然后发送出去。网络层的两种重要功能:转发,和路由选择。转发:指的是将一个分组从一个路由器的输入链路,移动到该路由的输出链路。路由选择:分组所采用的路由或路径(使用路由选择算法计算),每台路由器都有一张转发表,路由器通过检测到达的分组的首部字段,去路由表查询,来决定输出链路接口。  网络层体系结构不止是因特网,还有如ATM异步传输...

2018-07-24 20:09:43 653

原创 计算机网络自顶向下-应用层

在两个通信端中,实际通信的为两个端系统中的进程,进程之间通过socket的接口,从网络中接收和发送报文,要向目的地发送报文分组,必须知道两种信息,主机地址,和主机中进程的标识符(端口).应用层协议。定义了运行在不同端系统中的应用程序进程如何传递报文。1,交换报文的类型,2,报文类型的语法,3,字段的语意和含义,4,一个进程如何发送报文,和对报文的响应的规则。应用举例,HTTPhttp请求的格式,请...

2018-07-11 14:00:33 232

原创 vmstat命令 和 netstat 命令

vmstat 3 表示每三秒刷新一次 r表示等待运行的进程数,b表示阻塞的进程数,cat /proc/cpuinfo |grep 'core id'|wc -l可以查看当前系统的核心数当r的数量超过 cpu核心数 表示 cpu繁忙-----memory--------swpd,交换区正常情况下这个值一般为0,当出现这个的时候表示物理内存不够使用,部分不常用的内存进程交换到 交换区,free 表示可...

2018-06-26 11:42:08 224

原创 awk相关的学习

$NF表示 当前 分割的最后一列。{print $Nf,"test"}  输出最后一列,和test模式 BEGIN 在 处理文本之前需要执行的操作, END在处理完文本后执行的操作;

2018-06-25 18:47:21 156

原创 java 归并排序实现

package com.algorithm.charactor1;import java.util.Arrays;public class GuiBinSort { public static void main(String[] args) { Integer [] arr = {3,5,2,1,5,6,4}; Integer[] sort = sort(arr,0,a...

2018-04-17 09:37:18 245

原创 堆排序 java实现

package com.algorithm.charactor1;import java.util.Arrays;import java.util.Random;/** *先构建一个最大堆,然后对最大堆上的 进行删除操作 ,然后放到 */public class HeapSort { static int arrSize; static int newArraySize ;...

2018-04-16 09:28:49 123

原创 shell排序 java实现

package com.algorithm.charactor1;import java.util.Arrays;/** * 希尔排序和 插入排序 基本差不多,间隔 交换 */public class ShellSort { public static void main(String[] args) throws InterruptedException { Inte...

2018-04-16 09:28:04 565

原创 java 左倾堆

package com.algorithm.charactor1;import java.util.Random;/** *左迁堆, *npl,为节点到子节点中没有两个节点的节点最短路径长,定义null节点的 npl为-1,叶子节点的npl为0 * *左迁堆和null 合并的时候 返回 当前堆 *左迁堆的父节点的 小于 左右儿子节点 *节点的左儿子节点npl &gt;= 右儿...

2018-04-10 16:17:49 159

原创 java 数据结构 最小堆

package com.algorithm.charactor1; import java.util.Arrays; import java.util.Random; /** *heap堆的学习,这个 并不是 存放数据的 堆, *而是一种数据结构堆。 *堆的定义是一个完全被填满的二叉树(最后的树叶除外,)从左向右依次 填满 * * 让操作快速执行的性质 ...

2018-04-09 23:51:36 682

原创 开发定址法之,平方探测法

package com.algorithm.charactor1;/** * 和线性探测法差不多 ,寻找的下标不一样而已。 * 就是,中文版的类名,get到没 */public class 平方探测法 { private HashEntry[] array ;//可以是任意泛型 private int currentSize; private static int DEFA...

2018-04-08 16:14:18 1863

空空如也

空空如也

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

TA关注的人

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