- 博客(57)
- 收藏
- 关注
转载 设计模式:装饰者模式与组合模式
装饰者模式概念动态地给一个对象添加一些额外的职责。与继承的模式对比,装饰者模式更为灵活。类图以上共有四个角色:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件...
2019-05-15 11:33:00 298
转载 读书笔记-Ribbon源码分析
@LoadBalanced注解用来给RestTemplate做标记,以使用负载均衡的客户端来配置。通过搜索LoadBalancerClient可以发现,LoadBalancerClient是SpringCloud定义的一个接口public interface LoadBalancerClient {Serviceinstance choose(String serviceId);...
2018-03-08 15:32:00 131
转载 classLoader的工作机制
ClassLoader的主要方法1.loadClass(String name) 给定一个类名,记载一个类。2.defineClass(byte[] b, int off, int len) 根据给定的字节数组定义一个类3.findClass(String name) 查找一个类4.findLoadedClass(String name),寻找一个被加载的类。C...
2017-05-14 14:15:00 112
转载 JVM的内存结构
Java是按照运行时数据的存储结构来划分内存结构的,java虚拟机规范将java运行时的诗句划分为6种:1.PC寄存器用于保存当前执行程序的内存地址,同时java程序是多线程的,不可能一直都按照线性执行下去,当有多个线程交叉执行时,被中断的线程程序当前执行到哪条的内存地址需要记录下来。2.java栈java栈是与线程相关到一起的,每当创建一个线程时,JVM就会为这个线程创...
2017-05-13 19:25:00 88
转载 垃圾回收的概念与算法
GC中的垃圾,是指的是在内存中不在不再被使用的对象。常见的垃圾回收算法1.引用计数算法(无法回收循环引用的对象)2.标记清除算法分为标记阶段和清除阶段(会产生内存的空间碎片)3.复制算法(缺点是将系统内存折半,高效性是建立在存活对象少,垃圾对象多的前提下的)在java新生代串行垃圾回收器中,使用了复制算法的思想,新生代分为eden,from,to三个部分。from,t...
2017-05-13 18:22:00 141
转载 对无序数组的并发搜索的java实现
对无序数组的并发搜索的实现可以充分的用到多cpu的优势一种简单的策略是将原始数组按照期望的线程数进行分割,如果我们计划使用两个线程进行搜索,就可以把一个数组分成两个,每个线程各自独立的搜索,当其中有一个线程找到数据后,立即返回结果的index即可。首先index需要采用atomicinteger来进行修饰,默认初始化的值为-1,意义为当前未找到,由于内部采用CAS机制,线程在遍历...
2017-05-12 17:37:00 91
转载 并行流水线思想
并不是所有的操作都能进行并发计算的,比如有关于数据相关性的操作,如(B+C) * B,操作之间都会有依赖关系的。可以使用流水线方式充分利用多核环境。开多个线程。每一条线程相当于车间,负责执行一小部分工作,执行完传递给下一个线程,线程之间可以通过阻塞队列来进行通信。具体实现:其中Div,Multiply,Plus相当于车间,Msg相当于传输的介质,PStream...
2017-05-12 11:32:00 229
转载 Future模式
Future模式核心思想是异步调用。我们可以先拿到调用的凭证,让方法先返回,让他在后台慢慢的处理这个请求。通过这个可以实现异步操作。JDK经准备好了一套完美的实现方式。我们用于执行的异步线程需要继承Callable接口,相当于Runnable,Callable接口中有一个方法call(),相当于run(),在里面写自己的业务。把这个线程放在futureTask中,这个相当于凭证...
2017-05-12 11:00:00 75
转载 生产者与消费者的阻塞队列实现以及无锁缓存框架的实现
阻塞队列的实现package PandC;import java.text.MessageFormat;import java.util.Random;import java.util.concurrent.BlockingQueue;public class Consumer implements Runnable{ private Block...
2017-05-11 16:26:00 128
转载 最长公共子序列问题
package com.hzins.suanfa;/** * 最长公共子序列问题 * @author Administrator * */public class Demo5 { /** * 额外空间复杂度O(n^2) * @param str1 * @param str2 * @return ...
2017-05-05 12:18:00 56
转载 socket与http的区别
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收...
2017-05-04 00:33:00 71
转载 最完美的单例实现
package com.hzins.thread;/** * 最完美的单例实现 * 1.getInstacne没有锁,使得在高并发环境下性能卓越 * 2.只有在getInstacne第一次调用时,StaticSingleton实例才会被创建 * 由于内部类StaticSingletonHolder被声明为private,使得我们不能在外部访问并初始化他, * ...
2017-05-03 17:36:00 74
转载 翻转链表
/** * 翻转双向链表 * 需要记录翻转后的下一个节点 * @param head * @return */ public DoubleNode reverserList(DoubleNode head){ DoubleNode pre = null; DoubleNode n...
2017-05-02 18:18:00 78
转载 翻转单链表
package day;/** * 翻转单链表 * @author Administrator * */public class ReverseList { public static Node reverList(Node head){ if(head == null || head.next == null){ ...
2017-05-01 23:40:00 65
转载 两个有序数组组成一个有序的数组
package com.hzins.suanfa;import java.util.Arrays;/** * * 两个有序数组组成一个有序的数组 * 整个循环层数为1 * 以其中一个数组做循环,注意另外一个的index是否溢出以及另外一个是否没有遍历完成 * * @author Administrator * */public cl...
2017-04-29 18:58:00 91
转载 二叉树的遍历
package com.hzins.suanfa;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/** * 二叉树的遍历 * 其实深度遍历就是前序、中序和后序 * @author Administrator * */public class...
2017-04-29 17:12:00 89
转载 累加和小于或等于定值得最长子数组的长度
package com.hzins.suanfa;/** * 累加和小于或等于定值得最长子数组的长度 * @author Administrator * */public class Demo1 { public static int maxLength(int[] arr, int k){ int[] h = new int[ar...
2017-04-29 15:51:00 159
转载 数组中累加和为k的最大子数组的长度
package com.hzins.suanfa;import java.util.HashMap;public class demo { /** * 数组中累加和为k的最大子数组的长度 * @param arr * @param k * @return */ public static ...
2017-04-29 15:11:00 313
转载 冒泡排序
package day;import java.util.Arrays;/** * 冒泡排序 * @author Administrator * */public class Maopao { public static void method(int[] array){ for(int i = array.length -...
2017-04-27 23:10:00 74
转载 选择排序
package day;import java.util.Arrays;public class Demo3 { public static void selectionSort(int[] array){ for(int i = 0;i < array.length;i ++){ int min = array[i]; int k = i; for(int ...
2017-04-27 23:04:00 84
转载 插入排序
package day;import java.util.Arrays;/** * 插入排序 * 从index为1的位置插入左边队列,要插入的数字做一个变量保存 * @author Administrator * */public class InsertSort { public static void insertSort(int[]...
2017-04-27 22:49:00 86
转载 堆排序
package com.hzins.suanfa;import java.util.Arrays;/** * 堆排序 * 思路,建立最大堆并把最大的数移到最后,从第一行到倒数第二行建立最大堆 * 建立最大堆: * for循环 以lastindex的父节点为起始位,每此循环自减,直到为1 * 对于每个父节点肯定会有左子树(要不然他就不是父节点了) 判...
2017-04-26 22:21:00 63
转载 归并排序
package com.hzins.suanfa;/** * 归并排序 * @author Administrator * */public class MergeSort { public static void merge(int[] nums, int low, int mid, int high){ int[] te...
2017-04-26 20:20:00 60
转载 快速排序
/** * 快速排序 * @author Administrator * */class Quicksort{ private int partition(int sortArray[],int low,int hight) { int key = sortArray[low]; //判定...
2017-04-26 16:33:00 61
转载 CyclicBarrier与CountDownLatch的区别
import java.util.concurrent.CountDownLatch;/** * 作用于单个线程或几个线程,,在其他线程执行完之前,一直等待(await)知道countDown为零 * @author Administrator * */public class CountDownlatchTest { public static...
2017-04-26 13:31:00 67
转载 判断是否是平衡二叉树(左子树与右子树高度不大于1)
package com.hzins.suanfa;/** * 判断是否是平衡二叉树(左子树与右子树高度不大于1) * * @author Administrator * */public class BalancedTree { /** * level一开始必须为0 当head到递归栈底时,发现自己是null,此时算层数,得从上面算...
2017-04-26 10:02:00 967
转载 判断是不是完全二叉树
package com.hzins.suanfa;import java.util.LinkedList;import java.util.Queue;/** * 判断是不是完全二叉树 * 层级遍历二叉树,当一个节点的右孩子是null,那么后面层级遍历的节点都是子节点 * * @author Administrator * */publi...
2017-04-26 09:58:00 55
转载 累加和位指定值的最长子数组
package day;/** * 累加和位指定值的最长子数组 * 这是一个可伸缩的滑动窗口,不断地在k值的上下波动, * 并且要不断的判断right是否越界,由于都是整数,所以left不会比right先到arr.length位置上。 * @author Administrator * */public class Demo2 { public s...
2017-04-26 00:21:00 53
转载 两个子数组的最大和
package day;/** * 两个子数组的最大和 * 1.先逆序从右忘左算出以每一个index位开始到右的累加和记载在h[]中, * 在正序遍历最大的累加和,遍历的过程中前后最大值累加,记载最大值 * @author Administrator * */public class Demo1 { public int method(int...
2017-04-26 00:05:00 176
转载 不是用辅助的数据结构逆序一个栈
package com.hzins.suanfa;import java.util.Stack;/** * 逆序一个栈 * @author Administrator * */public class DiguiStack { /** * 将栈中的元素从底抽出 * @param stack * @retur...
2017-04-25 20:22:00 107
转载 两个stack实现一个queue
package com.hzins.suanfa;import java.util.Stack;/** * 两个stack实现一个queue * @author Administrator * */public class TwoStackToQueue { private Stack<Integer> stack1; ...
2017-04-25 19:44:00 100
转载 实现stack 加上·getMin功能 时间复杂度为O(n)
package com.hzins.suanfa;import java.util.Stack;/** * 实现stack 加上·getMin功能 时间复杂度为O(n) * @author Administrator * */public class GetMinStack { private Stack<Integer> sta...
2017-04-25 18:37:00 106
转载 最大累加矩阵大小
package com.hzins.suanfa;public class MaxSum { public static int function(int[] array) { int cur = array[0]; int max = array[0]; for (int i = 1; i < array...
2017-04-25 18:18:00 56
转载 矩阵的最小路径和
package com.hzins.suanfa;import org.junit.Test;public class JuzhenMinVarSum { /** * 空间复杂度o(n^2) * 时间复杂度o(n^2) * @param array * @return */ public ...
2017-04-25 18:12:00 57
转载 子数组最大累加和
public static int function(int[] array) { int cur = array[0]; int max = array[0]; for (int i = 1; i < array.length; i++) { cur = cur < 0 ? 0 : cur;...
2017-04-25 16:57:00 66
转载 最长递增子序列
package com.hzins;public class MaxLengthArray { /** * 最长递增子序列 很有意义 * @param arr 4,-2,3,-4,6,7 * @return */ public static int[] getdp1(int[] arr){ ...
2017-04-25 15:44:00 50
转载 Netty组件理解(转载)
转载的文章,写的非常好。一、先纵览一下Netty,看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的。Netty应用中必不可少的组件:Bootstrap or ServerBootstrapEventLoopEventLoopGroupC...
2017-04-07 18:41:00 58
转载 Netty5.x中新增和值得注意的点(转载http://www.coderli.com/netty-5-new-and-noteworthy/)
该文档会列出在Netty新版本中值得注意变化和新特性列表。帮助你的应用更好的适应新的版本。不像Netty3.x和4.x之间的变化,5.x没有那么大的变化,不过也取得了其简化设计中的一些突破性进展.。核心变化支持Android提供了:移动设备变成更加强大通过Ice Cream Sandwich解决了在ADK中最著名的与NIO和...
2017-02-26 19:06:00 101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人