自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sdmjhca的专栏

You will always be able to make more money But you cannot make more time

  • 博客(65)
  • 资源 (3)
  • 收藏
  • 关注

原创 记录排查rocketMQ-broker-JVM进程消失问题

记录一次漫长排查线上JVM进程丢失问题

2021-12-01 16:11:35 2273

转载 Vert.x 技术内幕|Event Bus源码分析(Local 模式)

Event Bus是Vert.x的“神经系统”,是最为关键的几个部分之一。今天我们就来探索一下Event Bus的实现原理。本篇分析的是Local模式的Event Bus,对应的Vert.x版本为3.3.2。本文假定读者有一定的并发编程基础以及Vert.x使用基础,并且对Vert.x的线程模型以及back-pressure有所了解。Local Event Bus的创建一般情

2017-11-23 11:37:13 1854

转载 你所不知道的TIME_WAIT和CLOSE_WAIT

你所不知道的TIME_WAIT和CLOSE_WAIT 2年前 (2016-03-17) 老男孩Linux攻略 2评论来源:本站原创 2713℃字体:小中大你遇到过TIME_WAIT的问题吗? 我相信很多都遇到过这个问题。一旦有用户在喊:网络变慢了。第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下。哎呀妈呀,几千个TIME_

2017-11-22 11:41:38 631

原创 vertx框架编程思想

vertx框架编程思想vert.x编程简介:初始化一个vertx实例, 使用一个启动verticle部署多个verticle,每个verticle都有自己的使命,它们公用一个vertx实例, vertx是基于事件驱动,verticle部署时指定接受通知后的下一步操作, 它们之间通过eventbus通信,通过eventbus消息总线异步通知每个verticle进行消息处理; vert.x为ve

2017-11-02 17:30:14 1829

转载 vert.x线程安全的线程模型详解

原文地址:http://www.sczyh30.com/posts/Vert-x/vertx-advanced-demystifying-thread-model/线程模型概述Vert.x的线程模型设计的非常巧妙。总的来说,Vert.x中主要有两种线程:Event Loop线程 和 Worker线程。其中,Event Loop线程结合了Netty的EventLoop,用于处理

2017-10-19 10:22:40 5177

原创 代码详解のThread.join()实现多个线程顺序执行

多线程开发中经常遇到线程间的依赖问题,比如:       线程T2的运行依赖线程T1的执行结果,线程T3的运行依赖线程T2和线程T4的执行结果,此时 T2和T4是可以并行计算的。遇到这种问题我们就可以使用Thread.join()方法实现,首先开下join()方法的源码:/** * Waits at most {@code millis} milliseconds for thi

2017-09-25 15:37:51 718

原创 面试中常见的SQL优化问题

一、表的设计0、必须使用默认的InnoDB存储引擎--支持事务、行级锁、并发性能好、CPU及内存缓存页优化使得资源利用率高1、表和字段使用中文注释--便于后人理解2、使用默认utf8mb4字符集--标准、万国码、无乱码风险、无需转码3、禁止使用触发器、视图、存储过程和event4、禁止使用外键--外键导致表之间的耦合,update和delete操作都会涉及相关表,影响性能-

2017-09-22 13:42:19 5760

原创 Java技术树

通过思考近一段时间面试中遇到的问题,以及自己对Java技术的理解,画了个思维脑图,整理一些面试中常被问到的问题,供大家参考,还望大家多多指正不足和补充知识点:git连接如下:https://github.com/PatientLiu/Java-interview-for-china/截图为思维脑图的一部分

2017-09-18 19:04:18 1116

原创 通过注解使用Hystrix

参考:https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanicaJava语言比其他语言(如反射和注解)具有很大的优势。 所有现代框架,如Spring,Hibernate,myBatis等都力求最大限度地利用这一优势。 引入Hystrix注解的想法是改进的明显解决方案。 目前使用Hystrix涉及

2017-09-13 18:14:04 4857

原创 实现int转换String的思路

package com.sdmjhca.springBootDemo.int2string;/** * @author JHMI on 2017/9/13. */public class Int2StringTest { public static void main(String[] args) { convert2String(999); }

2017-09-13 17:32:07 904

转载 精通 Groovy

开始之前了解本教程的主要内容,以及如何从中获得最大收获。关于本教程如果现在有人要开始完全重写 Java,那么 Groovy 就像是 Java 2.0。Groovy 并没有取代 Java,而是作为 Java 的补充,它提供了更简单、更灵活的语法,可以在运行时动态地进行类型检查。您可以使用 Groovy 随意编写 Java 应用程序,连接 Java 模块,甚至扩展现有的 Jav

2017-08-30 17:35:06 395

转载 class卸载、热替换和Tomcat的热部署的分析

这篇文章主要是分析Tomcat中关于热部署和JSP更新替换的原理,在此之前先介绍class的热替换和class的卸载的原理。一 class的热替换ClassLoader中重要的方法loadClass      ClassLoader.loadClass(...) 是ClassLoader的入口点。当一个类没有指明用什么加载器加载的时候,JVM默认采用AppClassLoader

2017-08-30 15:52:43 1401

转载 JSP热部署的实现原理

一.             概述名词解释:所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个

2017-08-30 15:28:14 3234

原创 Java序列化的几种特殊情景

package com.sdmjhca.springBootDemo.serializable;import java.io.*;/** * @author JHMI on 2017/8/29. jdk1.8 * 情景1:静态变量序列化 * static 修饰的变量是类的变量 * 序列化保存的是对象的状态,所以序列化不会保存静态变量 * * 情景2:transient关键字的作

2017-08-29 16:44:13 451

原创 Java Object wait notify 机制实现两个线程交替打印问题

线程1负责打印a,b,c,d线程2负责打印1,2,3,4要求控制台中输出的内容为 a1b2c3d4package com.sdmjhca.springBootDemo.countdownlatch;/** * @author JHMI on 2017/8/28. */public class TestMain { static final Object obje

2017-08-28 16:54:03 11580

转载 缓存架构设计细节之“淘汰缓存”还是“更新缓存”

本文主要讨论这么几个问题:(1)“缓存与数据库”需求缘起(2)“淘汰缓存”还是“更新缓存”(3)缓存和数据库的操作时序(4)缓存和数据库架构简析 一、需求缘起场景介绍缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。例如对于用户的余额信息表account(uid, money),业务上

2017-08-24 16:11:47 1278

原创 代码详解のTreeMap实现原理

TreeMap的数据结构是红黑树,建议在分析源码前对红黑树有一定了解;关于树型结构可以参考:http://www.cnblogs.com/xrq730/p/5187032.html

2017-08-22 16:57:54 318

原创 代码详解のLinkedList原码分析和ArrayList比较

package com.sdmjhca.springBootDemo.collections;import java.util.LinkedList;/** * @author JHMI on 2017/8/22.jdk1,8 * 通过跟踪分析源码不难发现LinkedList的存储结构是双向链表 * 存储的内容为 previous(前一个单元的地址) item(当前元素的内容) ne

2017-08-22 11:18:11 230

原创 代码详解のArrayList

package com.sdmjhca.springBootDemo.collections;import java.util.ArrayList;import java.util.Arrays;/** * @author JHMI on 2017/8/21. JDK1.8 * 参考文章:http://www.cnblogs.com/xrq730/p/4989451.html *

2017-08-21 17:36:56 229

原创 互金平台使用redis分布式锁的场景分析

使用场景:1、服务器采用分布式集群(多个tomcat)和公用的redis2、业务场景:多个用户同时下单的高并发情况下,为了保证库存一致,避免超卖的情况,可以考虑在减库存的操作当中进行加锁操作3、尝试加锁,如果加锁失败则等待一段时间重试;如果加锁成功,则拿当前购买金额和redis中的库存金额进行比较4、如果大于库存金额,则提示用户当前库存金额不足,请重新下单5、如果小于库存金额,

2017-08-21 15:35:59 418

原创 代码详解のJava面向对象特性之多态

一、main函数package com.sdmjhca.springBootDemo.duotai;/** * @author JHMI on 2017/8/20 0020. * java面向对象的特性之“多态” * 特性1、继承 * 2、子类重写父类方法 * 3、父类的引用指向子类实例 * 4、father对象只能访问父类中声明方法,不能调用子类中新增的方法、以及定义为私

2017-08-20 22:17:35 276

原创 代码详解の多线程下的代码死锁

一、main函数package com.sdmjhca.springBootDemo.deadlock;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @author JHMI

2017-08-20 20:36:46 378

原创 代码详解の使用CountDownLatch解决面试问题:T1和T2线程执行计算,T3线程计算结果的统计

package com.sdmjhca.springBootDemo.synchronizedtest;import java.util.concurrent.CountDownLatch;/** * 例子:T1和T2线程执行计算,T3线程进行T1和T2结果的统计 * 思路定义一个“锁计数器”为2的线程并发类,T3通过await方法进行锁等待,T1执行完成后计数器-1,T2完成后计数器

2017-08-18 18:52:33 654 2

转载 面试感悟---3年程序员必备技能--看你适不适合干程序员

原文地址http://www.cnblogs.com/xrq730/p/5260294.html

2017-08-17 19:33:04 645

转载 58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要 一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数

2017-08-17 09:09:13 170

转载 Java动态代理机制

原文链接https://www.ibm.com/developerworks/cn/java/j-lo-proxy1/index.html

2017-08-15 17:13:44 211

转载 Java动态代理和CGLIB代理

Java动态代理1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950/** * HelloWorld.java */public interface HelloWorld { public int say(String words)

2017-08-15 16:33:42 208

转载 Arraylist与LinkedList的区别

ArrayList底层是个默认大小为10的数组,所以当size需求大于10时,初始化size的时候大一点。当ArrayList的写满之后,ArrayList会生成一个更大的数组,大小变为原来的1.5倍。然后将原来数组的数据拷贝过去,因此会占用一定的时间和内存。12345678910111213public void ensureCapacity(int va

2017-08-15 16:32:46 215

转载 理解String 及 String.intern() 在实际中的应用

原文链接 http://www.cnblogs.com/Qian123/p/5707154.html

2017-08-15 16:14:52 378

转载 Java 类的热替换 —— 概念、设计与实现

Java ClassLoader 技术剖析在本文中,我们将不对 Java ClassLoader 的细节进行过于详细的讲解,而是关注于和构建在线升级系统相关的基础概念。关于 ClassLoader 的详细细节许多资料可以参考,有兴趣的读者可以自行研读。要构建在线升级系统,一个重要的技术就是能够实现 Java 类的热替换 —— 也就是在不停止正在运行的系统的情况下进行类(对象)的升级

2017-08-03 18:41:15 211

转载 web.xml 中的listener、 filter、servlet 加载顺序及其详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。        首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -

2017-08-03 18:36:21 308

转载 Java主动调用GC方法

Java的公有API可以主动调用GC的有两种办法,一个是System.gc();// 或者下面,两者等价Runtime.getRuntime().gc();还有一个是JMX:java.lang.management.MemoryMXBean.gc()作用跟System.gc()也是类似的。MemoryMXBean.gc()和System.gc()的内部实现都是

2017-08-03 18:31:07 34290 2

转载 jvm垃圾收集算法

文章目录1. 判断对象是否存活1.1. 可达性分析算法2. 垃圾收集算法2.1. 标记-清除算法2.2. 复制算法2.3. 标记-复制算法3. 垃圾收集器3.1. CMS收集器3.2. G1收集器4. 内存分配与回收策略4.1. 参考4.2. 捐赠判断对象是否存活可达性分析算法通过一系列称为”GC Roots”的对象作为起点,

2017-08-03 18:19:42 391

转载 JVM内存管理和GC机制

目录Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器Java垃圾回收概况  Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因

2017-08-03 17:57:10 425

转载 SpringCloud学习笔记之Feign结合Hystrix实现服务容错保护

熔断器雪崩效应在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D

2017-07-21 17:40:15 2443 2

转载 Spring Cloud学习笔记之高可用部署

集群注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。双节点注册中心首次我们尝试一下双节

2017-07-21 17:39:42 1072

转载 Java阿里面试题

(1)JVM如何加载一个类的过程,双亲委派模型中有哪些方法?类的生命周期:加载、(验证、准备、解析)链接、初始化、使用和卸载七个阶段其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行时绑定(也成为动态绑定或晚期绑定)

2017-07-19 17:29:51 2731

转载 ConcurrentModificationException的原因以及解决措施

1. ConcurrentModificationException异常出现的原因先看下面这段代码:package test;import java.util.ArrayList;import java.util.Iterator;public class test { public static void main(String[] args) { ArrayList l

2017-07-19 17:13:51 784

转载 Java应用之final修饰符

深入理解Java中的final关键字2013/12/04 | 分类: 基础技术 | 18 条评论 | 标签: FINAL, 基础技术分享到:113的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的

2017-07-19 15:51:56 273

转载 JVM内存结构

JVM内存结构 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。 先看一张图,这张图能很清晰的说明JV

2017-07-19 15:42:50 234

Java技术面试宝典

若学会此宝典,面试不愁,请慎重学习 若学会此宝典,面试不愁,请慎重学习 若学会此宝典,面试不愁,请慎重学习

2017-09-18

h5 实现图片打马赛克

h5 实现图片打马赛克,使用火狐浏览器或者chrome

2017-03-13

Redis实战中文PDF

redis快速入门及加深对redis的理解

2017-03-09

空空如也

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

TA关注的人

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