
Java基础
小图包
这个作者很懒,什么都没留下…
展开
-
Java-注解
Java注解元注解元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited 这些类型和它们转载 2016-09-25 23:07:59 · 280 阅读 · 0 评论 -
java的动态代理机制详解
原文:http://www.cnblogs.com/xiaoluo501395377/p/3383130.html在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理转载 2016-10-06 08:24:12 · 242 阅读 · 0 评论 -
反射的用法
Demo1();System.out.println("===============================================");//Demo2. 验证所有的类都是Class类的实例对象 Demo2();System.out.println("===============================================");//Demo原创 2016-12-14 20:34:57 · 271 阅读 · 0 评论 -
装饰模式
职责 : 动态的给一个对象添加新的功能public interface ICar { void move(); }//ConcreteComponent 具体构件角色(真实对象) class Car implements ICar { @Override public void move() { System.out.println(“陆地上跑!”原创 2017-04-12 22:33:48 · 273 阅读 · 0 评论 -
装饰模式简单例子
// 抽象组建类public abstract class Component { public abstract void operate ();}// 组件的具体的实现类public class ConcreteComponent extends Component { @Override public void operate() { }原创 2017-06-29 10:13:03 · 615 阅读 · 0 评论 -
Android观察者模式的理解
观察者模式理解观察者模式 Observer观察者模式定义了一个一对多的依赖关系,让多个观察者对象同时监听一个主题对象当这个主题对象改变时,会通知所有的观察者,让他们能够自动的更新自己观察者模式的组成抽象主题:把所有的对观察者对象的引用保存在一个集合中,抽象主题提供一个接口,可以注册和移除观察者;抽象观察者:为所有的观察者定义一个接口,当主题的数据更新时给登记的观察者提供通知转载 2017-07-14 16:22:37 · 299 阅读 · 0 评论 -
JDK动态代理实现原理
JDK动态代理实现原理博客分类: java 之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package转载 2017-08-25 11:47:49 · 214 阅读 · 0 评论 -
JAVA中的线程池
Java线程池使用说明一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是转载 2017-08-24 10:49:14 · 177 阅读 · 0 评论 -
线程池
几句闲扯:首先,我想说java的线程池真的是很绕,以前一直都感觉新建几个线程一直不退出到底是怎么实现的,也就有了后来学习ThreadPoolExecutor源码。学习源码的过程中,最恶心的其实就是几种状态的转换了,这也是ThreadPoolExecutor的核心。花了将近小一周才大致的弄明白ThreadPoolExecutor的机制,遂记录下来。线程池有多重要线程是一个程序员一定会涉及到的转载 2017-08-24 15:33:20 · 239 阅读 · 0 评论 -
简单了解RPC实现原理
https://mp.weixin.qq.com/s/FNXmGTGiCe7Q-HVIcL3HLg2018-05-01 老徐 芋道源码点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC 和 Security 源码合集MyCAT 源码解析合集时下...转载 2018-06-20 09:07:56 · 474 阅读 · 0 评论 -
Java中AnnotatedElement
AnnotatedArrayType (被注解的数组类型) AnnotatedParameterizedType (被注解的参数化类型) AnnotatedType (被注解的类型) AnnotatedTypeVariable (被注解的类型变量) AnnotatedWildcardType (被注解的通配类型) GenericDeclaration (通用声明,用于表示声明型元素,如:...转载 2019-05-13 19:12:59 · 1162 阅读 · 0 评论 -
合并排序(未)
public class MergeSort {public void mergeSort(int[] a,int left,int right){if(leftint middle = (left+right)/2;mergeSort(a, left, middle);mergeSort(a,middle+1,right);merge(a,left,middle,righ原创 2016-10-27 18:23:46 · 301 阅读 · 0 评论 -
二分递归查找和非递归查找
public int binarySearch(int elem,int [] array,int low,int high){if(low>high){return -1;}int middle = (low+high)/2;if(array[middle] == elem){System.out.println("找到对应元素值,下标为:"+middle);retu原创 2016-10-27 18:01:25 · 388 阅读 · 0 评论 -
基数排序(未)
public void sort(int [] array){int max = 0;//获取最大值for(int i = 0;iif(maxmax = array[i];}}int times = 0;//获取最大值位数while(max>0){max = max/10;times++;}List queue = new ArrayList();/原创 2016-10-27 18:34:01 · 341 阅读 · 0 评论 -
Java-线程池
Java-线程池字数2508 阅读44 评论0 喜欢4Java-线程池1.new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated转载 2016-09-25 23:26:03 · 170 阅读 · 0 评论 -
Java-代理
一、代理测试类:大家一看就懂动态代理的作用了。package com.che.baseutil.proxy;import org.junit.Before;import org.junit.Test;public class ProxyTestClient { private UserImpl target;//被代理类 @Before publi转载 2016-09-25 23:38:37 · 264 阅读 · 0 评论 -
插入排序
int[] a = new int[]{9, 2, 4, 5, 6, 55, 99, 110, 180, 166, 177, 195, 186, 200, 11, 18};for (int i = 0; i length; i++) { int temp = a[i]; int j; for (j = i - 1; j >= 0; j--) { if (a原创 2016-10-23 16:52:36 · 314 阅读 · 0 评论 -
插入排序二分法插入排序
private void sort ( int []a ){ for ( int i=0 ;ilength;i++){ int temp =a[i]; int left =0 ; int right =i-1 ; int mid =0 ; while (left<=right){原创 2016-10-23 18:30:04 · 335 阅读 · 0 评论 -
插入排序希尔排序
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int[] a = new int[]{9, 2, 4, 5, 6原创 2016-10-23 23:05:04 · 242 阅读 · 0 评论 -
JAVA中的排序
public static void main(String[] args){ SortUtil sortUtil=new SortUtil(); //sortUtil.insertSort(datas); sortUtil.shellSort(datas); //sortUtil.bubbleSort(datas); //sortUtil.quickSort原创 2016-10-25 23:39:35 · 251 阅读 · 0 评论 -
(10) java源码分析 ---- HashMap源码分析 及其 实现原理分析
. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容转载 2016-10-01 20:25:55 · 260 阅读 · 0 评论 -
快速排序(未)
public void quick(int [] a){if(a.length>0){quickSort(a,0,a.length-1);}}/** * 快速排序 * @param a * @param i * @param j */private void quickSort(int[] a, int low, int high) {if(low原创 2016-10-27 18:05:35 · 284 阅读 · 0 评论 -
堆排序(未)
public class HeapSort {//堆排序public static void main(String[] args){int[] array = {39,44,1,0,8,66,23,67,9,15,100,70,22,3,6,54};HeapSort heapSort = new HeapSort();heapSort.heapSort(array);fo原创 2016-10-27 18:18:46 · 263 阅读 · 0 评论 -
增量排序(未)
public class HeerSort {public static void main(String[] args){int [] a = {49,38,44,2,0,7,28,1,-9,7,2,3,8,20,14,88,56,-8,-33,5,23,12,99,76};int d = a.length;//默认增量是8while(true){d = d/2;Syst原创 2016-10-27 18:21:40 · 533 阅读 · 0 评论