Java
liuke0002
IT屌丝!
展开
-
Java容器类
容器(collection)Collection表示一组对象,它是集中,手机的意思,就是把一些数据收集起来。Collection函数库是在java.util包下的一些接口和类,类是用来产生对象存放数据用的,而接口是访问数据的方式。Collection函数库与数组的的两点不同:1.数组的容量是有限制的,而Collection库没有这样的限制,他容量可以自动的调节。2.Collection函数库只能用...原创 2015-11-23 13:06:40 · 559 阅读 · 0 评论 -
线程池续
线程池中的线程初始化默认情况下,线程池是没有线程的,需要提交任务之后才创建线程。在实际中如果需要创建之后立即创建线程,可以通过以下连个方法:preStartCoreThread():初始化一个核心线程preStartAllCoreThreads():初始化所有核心线程public boolean preStartCoreThread(){return addIfUnderC原创 2016-05-03 20:13:57 · 585 阅读 · 0 评论 -
JVM的内存模型
1.程序计数器程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一跳需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基本功能都需要依赖这个计数器来完成。由于Java虚拟机的多线程是通过轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理原创 2016-05-16 12:49:01 · 613 阅读 · 0 评论 -
HashTable与HashMap的区别
1.HashTable继承自Dictionary而HashMap继承自AbstractMap2.HasMap是HashTable的轻量级实现,他们都完成了Map接口,主要区别在于HashMap允许空键值,由于非线程安全,效率上可能高于HashTable。HashTable允许将一个entry的key或value,而HashTable不允许。3.最大的不同是,HashTable的方法原创 2016-05-09 19:47:41 · 383 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
有return的情况下try catch finally的执行顺序结论:1.不管有没有出现异常,finally块中的代码都会执行2.当try和catch中有return时,finally仍然会执行;3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会变,仍然是之前保存的原创 2016-05-09 22:21:08 · 333 阅读 · 0 评论 -
RxJava的操作符
RxJava最核心的两个东西是Observerables(被观察者,事件源)和Subscribers(观察者)。Observable发出一系列事件,Subscribeers处理这些事件。这里的事件可以是触摸事件,web接口调用返回的数据。一个Observable可以发出零个或多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscribe的onNext方法,最后调用Subsc原创 2016-05-20 19:00:13 · 353 阅读 · 0 评论 -
Java中的正则(Pattern和Matcher类)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配的类库包。它包括两个类:Pattern和Matcher。Pattern是一个正则表达式经编译后的表现模式。Matcher一个Matcher对象是一个状态机器,它依据Pattern对象作为匹配模式对字符串展开匹配检查。Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不原创 2016-07-01 13:21:46 · 563 阅读 · 0 评论 -
单例设计模式
单例模式核心作用:—保证一个类中只有一个实例,并且提供一个访问该实例的全局访问点。常见应用场景:-Windows的Task Manager(任务管理器)就是很典型的单例模式-Windows的Recycle Bin也是很典型的单例引用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。-项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,每次n原创 2015-11-23 12:23:04 · 609 阅读 · 0 评论 -
Collection与Collections的区别
Collection是单列集合List 元素是有序的、可重复有序的Collection,可以对列表中每个元素的插入位置进行精确地控制可以根据元素的整数索引访问元素,并搜索列表中的元素可存放重复元素,元素存取是有序的List接口中常用类-Vector 线程安全,但速度慢,已被ArrayList取代-ArrayList:线程不安全,查询速度快。底层数据结构是数组结构原创 2016-07-22 09:28:37 · 371 阅读 · 0 评论 -
Override与Overload
Override必须要子类继承父类并重写父类的方法overload是在一个类中有重名的方法Override 特点 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、方法被定义为final不能被重写。原创 2016-07-22 10:35:59 · 286 阅读 · 0 评论 -
面试杂谈(一)
TreeMap的实现是红黑树算法的实现。红黑树简介:红黑树又称二叉树,它首先是一个二叉树,他具有二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树排序二叉树的一个基本性质-即树中的任何节点的值大于它的做节点,且小于它的右子节点。按照这个性质使得树的检索效率大大提高。我们知道在生成二叉树的过程中是非常容易失衡的,最坏的情况就是一边倒,这样势必会导致二叉树的检索效率大大降低。原创 2016-09-15 10:12:05 · 365 阅读 · 0 评论 -
何时GC的2种判定与3种GC算法
1.在JDK1.2之前,使用的是引用计数器算法,即当这个类被加载到内存之后,就会产生方法区,堆栈、程序计数器等一系列信息,当创建对象的时候,为这个对象在堆栈空间中分配对象,同时会产生一个引用计数器,同时引用计数器+1,当有新的引用时,引用计数器继续+1,而当其中一个引用销毁时,引用计数器-1,当引用计数器减为0的时候,标志着这个对象已经没有引用了,可以回收了!但是这样会有一个问题:原创 2016-05-16 15:01:08 · 3812 阅读 · 0 评论 -
Java使用MulticastSocket实现多点广播
DatagramSocket只允许数据报发送给指定的目标地址,而MulticastSocket可以将数据报以广播方式发送到数量不等的多个客户端。若要使用多点广播时,则需要让一个数据报标有一组目标主机地址,当数据报发出后,整个组的所有主机都能收到该数据报。IP多点广播实现了将单一信息发送到多个接收者的广播,其思想是设置一组特殊网络地址作为广播地址,每个多点广播地址都被看做一个组,当客原创 2016-12-03 12:12:08 · 7008 阅读 · 1 评论 -
线程池原理实现
1.线程池的状态:在ThreadPoolExecutor中定义了一个volatile变量,另外定义了几个static final变量表示线程池的各个状态:volatile int runState;static final int RUNNING=0;static final int SHUTDOWN=1;static final int STOP=2;static fin原创 2016-05-03 18:49:01 · 4440 阅读 · 0 评论 -
ThreadLocal简单了解
ThreadLocal,线程本地量。ThreadLocal为变量在每个线程都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLocal的具体实现:public T get(){}public void set(T valude){}public void remove(){}protected T initialValue(){}get()方法是用来获取T原创 2016-05-26 22:25:11 · 327 阅读 · 0 评论 -
java之线程池
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池的好处:执行完一个线程,并不被销毁,而是可以继续执行其他的任务。ThreadPoolExecutor类java.util.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类ThreadPoolEx原创 2016-05-03 13:55:31 · 369 阅读 · 0 评论 -
正则表达式
为什么需要正则表达式?(Regular Expression)-文本的复杂处理开发中使用正则表达式的流程-分析所要匹配的数据,写出测试用的典型数据-在工具软件中进行匹配测试-在程序中调用测试的正则表达式正则表达式语法(1)-字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。原创 2015-11-22 21:32:28 · 462 阅读 · 0 评论 -
Java类加载
类加载全过程为什么要研究类加载全过程?-有助于了解JVM运行过程-更深了解java动态性,提高程序的灵活性。类加载机制-JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的Java类型的过程。-加载将class文件字节码内荣加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这原创 2015-11-22 21:30:24 · 411 阅读 · 0 评论 -
GOF设计模式
创建型模式-单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式结构型模式:-适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式行为型模式:-模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。单例模式核心作用:—保证一个类中只有一个实例,并且提供一个访问该实例的全原创 2015-11-23 12:15:39 · 744 阅读 · 0 评论 -
Java中的线程
程序 进程 线程程序:program,是一个静态的概念进程:process,是一个动态的概念*进程是程序的一次动态执行过程,占用特定的地址空间*每个进程都是独立的,有三部分组成cpu,data,code*缺点:内存的浪费,CPU的负担线程:Thread,是进程中一个“单一的连续控制流程”(a single sequential flow of contral)/执行原创 2015-11-23 12:25:35 · 545 阅读 · 0 评论 -
Java初步(OOP)
定义无参方法定义格式static void 方法名(){ 方法中的代码}定义带参方法定义格式static void 方法名(类型1 变量1,类型2 变量2。。){ 方法中的代码}Ctrl+alt+m 定义方法有返回值类型static 返回值类型 方法名(参数列表){ 方法中的代码原创 2015-11-23 12:27:20 · 643 阅读 · 0 评论 -
内部类
内部类(Nested Class) 嵌套类-静态内部类-非静态内部类 *普通内部类(也称为:成员内部类) -在一个类(外部类)中直接定义的内部类 *匿名内部类 *方法内部类 -在一个方法(外部类的方法)或代码块中定义的内部类内部类仍然是一个独立的类,在编译之后内部类会被便衣成独立的.class文件,但是前面冠以外部类的类名和$原创 2015-11-23 12:17:40 · 467 阅读 · 0 评论 -
Java中的数组
数组Java中多维数组的声明和初始化应按从高维到低维的顺序进行String s[]=new String [3];String 中的方法s.length();求数组长度s.isEmpty();[返回值为Boolean型]s.indexOf('e') 返回‘e'所在的位置 如果不在返回-1;s.subString(1) 从1到字符串结尾 输出字串s.replace(原创 2015-11-23 12:28:50 · 537 阅读 · 0 评论 -
CountDownLatch
CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后在执行。1.CountDownLatch是在Java1.5被引入的,跟他一起被引入的并发工具类还有ConcurrentHashMap和BlockingQueue,他们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各原创 2016-04-13 21:42:59 · 280 阅读 · 0 评论 -
Timer
Timer和TimerTask详解1.Timer和TimerTaskTimer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或反复执行多次。 TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。2.终止Timer线程默认情况下,创建的timer线程会一直执行,主要有下面原创 2016-04-28 21:24:09 · 370 阅读 · 0 评论 -
java中notify,wait,sleep
在Java中,没有类似于PV操作,进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synchronized()方法类似于操作系统概念中的互斥内存块,在JAVA中的Object类型中,都是带一个内存锁的,在有线程获取该内存锁之后,其他线程无法访问该内存,从而实现JAVA中简单的同步,互斥操作。synchronized就是针对内存区块申原创 2016-05-01 13:34:49 · 359 阅读 · 0 评论 -
java 中的==,equals(),hashCode()
1.==是你叫两个对象在JVM中的地址2.equals是根类Object中的方法。源代码如下:public boolean equals(Object object){ return (this==obj);}默认的equals方法,直接调用==,比较对象地址。不同的子类,可以重写此方法,进行两个对象的equals的判断。String类源码中重写的equals方法如下:pu原创 2016-05-12 20:34:57 · 282 阅读 · 0 评论 -
代理模式
代理模式是Java常用的设计模式之一。使用代理模式创建代理对象,让代理对象控制目标对象的访问,并且可以在不改变目标对象的情况下添加一些额外的功能模式中包含的角色及其职责Subject:抽象主题角色,抽象主题可以是抽象类,也可以是接口,是一个最普通的业务类型定义RealSubject:具体主题角色,也叫委托角色、被代理角色。是业务逻辑的具体执行者。Proxy:代理主题角色,也叫委原创 2016-05-02 22:45:33 · 303 阅读 · 0 评论 -
公钥加解密及SSL/TLS协议概述
公开密钥加密,也称为非对称加密,一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关。用某用户的密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。如果加密密钥是公开的,这用于给私钥所有者上传加密的数据,这被称作为公开密钥加密。原创 2017-05-16 19:58:24 · 1120 阅读 · 0 评论