自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring Cloud+Eureka+Ribbon实现客户端负载均衡

Spring Cloud+Eureka+Ribbon实现客户端负载均衡最近在学习springcloud,自己总结的客户端负载均衡,拿出来分享下eureka高可用注册中心服务提供者服务发现及消费负载均衡搭建eureka高可用注册中心pom文件,引入spring-cloud-starter-eureka-server 注册中心的核心依赖;最后的Build标签是需要打包成jar包需要的依赖。<?

2017-08-29 09:33:31 871 3

原创 上传jar包到nexus私服

上传jar包主要有两种方式,一个是网页上传,一个是命令行上传网页上传上传之后,将私服jar包同步到本地。在idea执行-U idea:idea。通过命令上传首先修改maven的settings文件,添加用私服户名及密码, &amp;lt;server&amp;gt; &amp;lt;id&amp;gt;releases&amp;lt;/id&amp;gt; &amp;lt;username&amp;gt;admin&amp

2019-03-18 16:20:56 223

原创 算法与结构--插入排序

前言万事万物皆算法,一切的始源与终点皆为思想。在介绍插入算法之前,我们来简单回顾上一篇学的选择排序,选择排序基本思路就是每次遍历找到最小的元素放在首位置,这样他的时间复杂度是n2,但是由于其交换的次数不是很多,他的时间并没有冒泡排序等n2时间大。那么我们本节学习的插入排序有什么优势和缺点呢,废话不多说,割了-------------------------------------------...

2019-03-16 20:33:38 300

原创 算法与结构--选择排序

为什么要学习算法万事万物皆算法,Linus大神曾说过:“低水平程序员总在考虑代码,高水平程序员总在考虑数据结构及其之间的关系”。其实现实中我们接触很多算法,只不过很多算法被封装起来而没有在意,如果一味地写逻辑是不会有什么提高的。现在技术日新月异,我认为唯一能让你在以后的竞争中脱颖而出的就是算法。算法系列文章打算从简单的排序开始,此后逐渐升级,并且我们会分析此排序的优缺点,适应场景,并且会尝试优...

2019-03-15 16:02:46 300

原创 jvm类加载机制

类加载时机类从被加载到虚拟机内存,到卸载出内存,要经历的生命周期:加载(Loading)=&amp;gt;验证(Verification)=&amp;gt;准备(Preparing)=&amp;gt;解析(Resolving)=&amp;gt;初始化(Initialization)=&amp;gt;使用(Using)=&amp;gt;卸载(Unloading),其中验证、准备、解析成为连接阶段,可以参考netty里面的过程来记忆,netty...

2019-02-17 19:32:29 191

原创 jvm系列--虚拟机性能监控工具

JDK命令行工具jpsjps可以列出正在运行的虚拟机内存,是一款简单单一的工具命令 jps [options] [hostid]jstat虚拟机统计信息监视工具,是运行期地位虚拟机性能问题的首选工具,他可以显示本地或者远程的类加载、内存、垃圾收集等信息。命令:jstat [option vmid [interval[s|ms] {count}]]运行 jstat -gc pid ...

2019-01-30 22:20:49 151

原创 jvm系列--内存分配和回收策略

对象优先在Eden区分配对象的内存分配,大方向上就是在堆上进行分配,当Eden区中没有足够的空间分配时,会进行一次minor GC–年轻代GC。写一段测试代码来测试下参数:-Xmx20M -Xms20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:+UseSerialGC/** * @author wangmj * @si...

2019-01-29 22:50:33 142

原创 jvm系列- 垃圾收集器

垃圾收集算法标记清除算法步骤:首先遍历查询所有有引用的对象进行标记,第二步遍历堆,把所有未标记的对象进行清除缺点:会产生内存碎片复制算法步骤:需要同样大小的内存,先遍历所有的引用对象并进行复制,复制的同时进行碎片的整理,为了解决两倍大小的内存,设置堆内存的时候设置成Eden区和Survivor区域,复制的时候将存活的对象复制到Survivor区域缺点:需要两倍大小的内存标记-整...

2019-01-29 17:28:28 141

原创 JVM系列--垃圾回收器和内存分配

判断对象是否存活引用计数法可达性分析算法引用计数法:引用计数法主要为记录一个对象被引用的次数,当引用数大于0,则不会被垃圾回收;对象没被一次引用,则计数加1,对象失效时计数减一;这个方法对jvm回收来说非常高效,但是不会很准确,假如说两个对象互相引用,即使这两个对象没有其他地方应用,也会一直存在,不会被回收。可达性分析可达性分析主要由JVM根据GC root为跟,依次向下找其引用的...

2019-01-29 16:12:25 198

原创 JVM系列-JVM运行时内存区域

JVM运行时内存区域构成程序计数器虚拟机栈本地方法栈堆内存方法区程序计数器程序计数器所占内存非常小,为线程私有变量,可以看住当前线程执行行数的记录,字节码解释器通过程序计数器来查找下一条指令,及线程恢复切换等操作。Java虚拟机栈Java虚拟机栈主要存放基本类型变量及对象变量的内存地址信息,为线程私有变量。每个方法在执行的时候都会创建一个栈帧(Stack Frame)用于存...

2019-01-28 15:12:55 234

原创 Java并发工具-CountDownLatch、CyclicBarrier、Semaphore

CountDownLatch等待线程完成CountDownLatch是一个等待所有线程完成的工具,类似join()方法,初始化的时候会调用构造器传递线程个数,调用countDown方法将count值减一,调用await方法会等待知道count=0才会通过。写一个简单的例子方便理解import java.util.concurrent.CountDownLatch;/** * countD...

2019-01-25 10:22:45 228

原创 java concurrent包下的锁

concurrent包下锁的种类接口:Lock、ReadWriteLock、Condition实现类:ReentrantLock、ReentrantReadWriteLock、StampedLock抽象类:AbstractQueuedSychronizer简单梳理下锁的关系ReentrantLock实现了Lock接口,并内部实现了AQS同步器;ReentrantReadWriteLoc...

2019-01-20 18:36:11 509

原创 同步队列-AbstractQueuedSyncronizer

根据AQS自己实现一个独占锁/** * 独占锁自定义实现 * * @author wangmj * @since 2019/1/18 */public class MutexLock { //自定义内部类继承AQS //独占锁只需实现tryAcquire与tryRelease方法 //共享锁需要实现tryAcquireShared与tryReleaseShar...

2019-01-18 14:50:47 308

原创 原子操作原理

处理器实现原子操作使用总线锁保证原子性我们知道处理器存在内存与缓存,当线程读取数据时,先会去取缓存中的数据,若没有再去内存中拿取数据,这样就会发生缓存中与内存中的数据不一致,从而导致不正确的结果。为了得到正确的结果,可以在总线上加锁,也就是在内存与缓存上都加锁,也就是给处理器一个#LOCK信号,这样线程就可以独占锁使用缓存锁保证原子性锁的粒度减少Java实现原子操作使用...

2018-12-27 22:43:38 283

原创 利用jstack打印线程dump信息

1.进入到jdk/bin目录2.jstack pid &gt; /home/data/dump3.查看各线程状态下的数量grep java.lang.Thread.State /home/data/dump9001 | awk '{print $2$3$4$5}' | sort |uniq -c4.分析:37个线程处于WAITING(onobjecmonitor)状态5...

2018-12-26 22:05:58 2663

原创 java虚拟机-- Java代码是怎么运行的?

从虚拟机角度来说,其将Java代码编码为class文件,并放在虚拟机中的方法区。运行时,当执行一个方法的时候,虚拟机会生产一个栈帧,可以不连续,当方法执行结束,将此栈帧弹出.虚拟机包含 堆、方法区。PC寄存器、Java方法栈、本地方法栈(用 C++ 写的 )...

2018-12-07 19:49:09 659

原创 大话netty系列之--伪异步BIO

生意规模扩大话说,老王和大明的生意越来越好,这就需要两个人增强业务往来,由于天南地北,两个人只能每次运输都需要雇一个人去运货(new 一个线程),一个月下来,两人一算,人力成本太大了,光是雇佣人一个月就用了将近一百个人,本来生意旺盛,却还亏损了。两个人思来想去,想到了一个好主意,可以租个宿舍,就固定雇佣几个人,谁闲着谁就去运输,这样可以大大降低人的数量,又可以充分发挥人的效率。其实上面这种思路...

2018-11-19 21:29:07 200

原创 大话netty系列之--BIO

大话netty系列之--BIO学渣与学霸  大明与老王是大学同学,大明是典型的三好学生,学习优秀,生活自律,并且是学生会一员,在班级人缘也好;而老王每天游离在课堂与社会之间,与同学们见面的次数很少,平常不是网吧就是和他们的一帮朋友出去花天酒地!==============================分割线=====================================...

2018-11-18 20:42:39 787

原创 java并发编程--线程封闭

java并发编程–线程封闭线程封闭有三种方式:Ad-hoc线程封闭、栈封闭、ThreadLocal类;其中Ad-hoc线程封闭一般由程序员自己实现,很少用,暂不介绍。加粗 Ctrl + B 插入代码 Ctrl + K栈封闭 将对象封闭在局部变量中,只有局部变量才能访问,保证线程安全。 下面我们来看一段简单的代码public class Ani...

2018-04-08 16:41:53 298

原创 java基础之集合框架--LinkedHashMap深入理解

java基础之集合框架–LinkedHashMap深入理解在看LinkedHashMap时还是建议先回顾下HashMap–LinkedHashMap的父亲,是不是感觉HashMap很重要,哈哈~~,它就是很重要,可以把它比作一个美轮美奂的精美建筑,一切设计都那么恰到好处! java基础之集合框架–HashMap深入理解及应用LinkedHashMap底层结构图LinkedHashMap底层为数组

2017-11-14 09:52:48 238

原创 java基础之集合框架--HashSet深入理解

HashSet深入理解前几天分析了HashMap,看懂hashMap后,再来看HashSet就简单多了,其实HashSet底层就初始化时即调用了HashMap,在看HashSet时建议先回顾下HashMap java基础之集合框架–HashMap深入理解及应用HashSet源码分析我们直接来看下hashset的源码,可以看到当我们初始化对象时,其实是初始化了一个hashmap,其他的有参构造器也

2017-11-12 10:23:32 310

原创 JAVA 对象序列化——Serializable

JAVA 对象序列化——Serializable上一篇分析HashMap时,每次put新值得时候将key、value放在一个transient Nodeserializable作用Java的对象序列化是指将那些实现了Serializable接口的对象转换成一个字符序列,并能够在以后将这个字节序列完全恢复为原来的对象。这一过程甚至可通过网络进行,这意味着序列化机制能自动弥补不同操作系统之间的差异。 只

2017-11-10 15:15:14 659

原创 java基础之集合框架--HashMap深入理解及应用

java基础之集合框架–HashMap深入理解及应用接着上一篇写,在分析之前,先想想几个问题,方便后面理解,这些问题也是百度面试官提问的。 1.HashMap的底层结构是什么,画出来; 2.再用HashMap的时候会考虑他的容量吗?它的默认容量是多少,加如超过了你初始化的容量会发生什么? 3.HashMap key是否可以为null; 4.自己实现一个简单的HashMap(HashMap的实

2017-11-02 18:04:18 306

原创 java基础之集合框架--Collection及Map顶级接口

java基础之集合框架–Collection及Map顶级接口前两天,参加了百度的面试,面试内容基本都是基础知识,好多问题没有答好,所以定个小目标,在年前争取把java主流的基础知识都巩固一遍;那就以使用最频繁的集合框架开始。Collection及Map类图collection类图可以看出来,Collection下的子接口有三个分别为Set,List,Queue,其中Set为无序的且不可重复的集合,L

2017-10-30 15:01:28 3369

原创 mysql 拆分以逗号隔开的字段并应用在in查询

mysql 拆分以逗号隔开的字段并应用在in查询利用substring_index及笛卡尔积来循环拆分sql字段;首先建立几条数据 id value Computer 5,ddd,eee Phone 12,3333,11 Pipe 234假如我们需要查询的字段in phone字段的值(12,3333,11),我们可以用一下方法具体方法准备示例数据create tab

2017-10-19 16:33:15 14262 3

空空如也

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

TA关注的人

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