JAVA
文章平均质量分 91
有梦想的小树
盛年不重来,一日难再晨,及时当勉励,岁月不待人
展开
-
<? super T> and <? extends T> in Java
原文链接List<? super T>andList<? extends T>之间有什么区别呢?我可以常常在List<? super T>中使用add,但是无法对List<? extends T>使用add,这是为啥?举个栗子:对泛型List<? extends Number> foo3的三个声明如下:List<? extends Number> foo3 = new ArrayList<Number...翻译 2021-01-05 23:03:20 · 443 阅读 · 0 评论 -
FastJson解析字符串
一.需求:获取Json字符串中的某个字段值二.实现代码public class test { private static String COMPLEX_JSON_STR = "{\"status\":\"OK\",\"request_id\":\"159227615319652307143355\",\"result\":{\"searchtime\":0.064872,\"total\":1,\"num\":1,\"viewtotal\":1,\"compute_cost\":原创 2020-06-16 16:24:14 · 1490 阅读 · 0 评论 -
Volatile关键字
为什么会有这个关键字?计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,会涉及到数据的读取和写入,但由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份...转载 2019-12-29 15:42:56 · 222 阅读 · 0 评论 -
Cookie,Session,Token
我们知道HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。而且一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。导致有些情况下即使是同一个网站每打开一个页面也都要登录一下。而Session和Cookie就是为解决这个问题而提出来的两个机制。同样的Token也能解决这个问题,它们之间只是一个说法的差别,其...转载 2019-12-29 15:28:25 · 205 阅读 · 0 评论 -
创建线程的四种方式
1. 线程的创建有四种方式2. 继承Thread类3. 实现Runnable接口4.实现Callable接口5.线程池创建线程1. 线程的创建有四种方式,分别为:继承Thread类 实现Runnable接口 实现Callable接口 使用Executor框架创建线程池编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有四种方法,Thread,R...原创 2019-11-21 00:29:29 · 8133 阅读 · 0 评论 -
反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。1、获取类(Class)对象获取...原创 2019-11-18 20:29:04 · 156 阅读 · 0 评论 -
Comparator&&Comparable自定义比较器
1.自定义的比较器的实现步骤实现实现Comparator接口,并且重写compare方法。 在compare()方法中返回(可以根据返回数值来自定义升序或是降序):负数:表示第一个参数排在前面 正数:表示第二个参数排在前面 零:表示两个参数相等2.比较器应用的场景Arrays.sort(arr, new ImplComparator()) TreeSet<Student...原创 2019-10-13 00:39:38 · 848 阅读 · 0 评论 -
白话解析:一致性哈希算法consistent hashing
这把文章写的很好:http://www.zsythink.net/archives/1182转载 2019-04-22 21:59:58 · 1204 阅读 · 0 评论 -
深入理解Java虚拟机(一)
1 概述对于Java程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个new 操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为Java程序员把内存控制权利交给Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2 运行时数据区域Java虚拟机在执...原创 2019-04-28 18:56:21 · 112 阅读 · 0 评论 -
Error和Exception,throw和throws的区别
1 Error类和Exception类1.1Error(错误)1.2Exception(异常)1.3常见的RuntimeException异常1.4常见的CheckedException异常2 throw和throws2.1 位置不同2.2 功能不同1 Error类和Exception类Error类和Exception类都是继承Throwable类1...原创 2019-04-23 22:29:38 · 1220 阅读 · 0 评论 -
Java使用“阻塞队列”和“wait、notify”实现生产者消费者模型
使用阻塞队列来实现//生产者public class Producer implements Runnable{ private final BlockingQueue<Integer> queue; public Producer(BlockingQueue q){ this.queue=q; } @Override pub...原创 2019-05-11 09:23:28 · 564 阅读 · 0 评论 -
array == null和array.length == 0的区别且注意写法
1.示例代码public static void main(String[] args) { int[] a; int[] b = null; int[] c = new int[3]; //System.out.println(a); //System.out.println(b); ...原创 2019-07-24 22:10:31 · 1600 阅读 · 0 评论 -
List 之 ArrayList源码分析
List 之 ArrayList介绍类图结构 ArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。 ArrayList的适用场景:数组大小动态变化,效率高,查询多,不需要线程安全。 Arra...原创 2019-08-31 22:38:26 · 121 阅读 · 0 评论 -
Queue、Deque、Stack
Table of Contents1.类图结构2.Queue3.Deque(Double Ended Queue双端队列)4.Stack1.类图结构2.Queue1.使用场景:需要出现队列的数据结构时,使用Queue.2.使用方法:Queue<Integer> queue = new LinkedList<>();3.Queue的方法...原创 2019-08-31 23:16:11 · 295 阅读 · 0 评论 -
使用“前缀树”过滤敏感词
1.前缀树- 名称:Trie、字典树、查找树- 特点:查找效率高,消耗内存大- 应用:字符串检索、词频统计、字符串排序等2.敏感词过滤器- 定义前缀树- 根据敏感词,初始化前缀树- 编写过滤敏感词的方法3.代码实现@Componentpublic class SensitiveFilter { private static final Logger lo...原创 2019-10-09 20:52:39 · 491 阅读 · 0 评论 -
AOP、AspectJ、Spring AOP、JDK动态代理、CGLib动态代理
Table of Contents1. AOP介绍2.AOP的实现3.Spring AOP的两种实现方式4.AspectJ实现示例5.JDK动态代理、CGLib动态代理 实现示例6.小结1. AOP介绍AOP称为面向切面编程,它是一种编程思想,是对OOP的补充,可以进一步提高编程效率,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Strut...原创 2019-04-22 12:49:04 · 1379 阅读 · 0 评论 -
Java中关于 “抽象类” 的一些注意问题
抽象类的由来:我们编写一个类时,往往会为该类定义一些方法,这些方法用来描述该类的功能具体实现方式,这些方法都是有具体的方法体的,所谓方法体就是有{ }。但是有些时候,某个父类只是知道子类该包含什么方法,但是不知道子类该如何实现这些方法,例如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢?此时就可以在父类中声明一个求图形类周长的抽象方法,但是该怎么实现就交给子...原创 2019-03-09 17:19:14 · 785 阅读 · 0 评论 -
Java中 “接口” 的一些用法
目录1.接口概念2.接口的特点3.接口的实现 接口的实现 接口的多实现(解决多继承的弊端) 实现类可以在继承父类的同时实现接口4.接口的多继承,与实现5.为什么需要接口?1.接口概念个人理解:接口中定义的都是抽象方法,只有在接口实现类中重新该方法才可以。类是用来对现实事物的一种描述。综上可以说明:接口是功能的集合,类是现实事物的描述。...原创 2019-03-09 21:58:03 · 135 阅读 · 0 评论 -
Java中的“多态”详解
目录1.多态的概念和意义2.多态的必要条件及使用格式3.多态--子父类中成员变量和成员方法的变化4.关键字 instanceof5.多态中的两种转型1.多态的概念和意义多态是面向对象三大特性(封装,继承,多态)之一,多态的定义是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。个人理解,假设类B,C都继承了A,A中有一个fu...原创 2019-03-10 09:41:41 · 640 阅读 · 0 评论 -
你注意到Java中的length和length()了吗?外加一个size()
目录先看一些例子深究总结先看一些例子:public class test { public static void main(String[] args){ // 示例一 String str = "abc"; System.out.println(str.length()); //示例二 ...原创 2019-03-11 16:10:38 · 836 阅读 · 0 评论 -
Java字符串比较中的==和equals方法的区别
代码演示:public class Test { public static void main(String[] args){ // 案例一 String str1 = new String("hello"); String str2 = "hello"; System.out.println(str1 == str...原创 2019-03-20 10:15:43 · 2306 阅读 · 0 评论 -
Java中为什么int转float可能会丢失精度呢?
原文作者链接实心箭头表示无信息丢失的转换,虚心箭头表示转换可能会损失精度。转:在看Java核心技术卷I的时候,看到个基础类型转换,图片就不附上了,上面写到int转float有可能会精度丢失,看到此处的时候我一直在疑惑,明明float能够表示的数比int要大得多,怎么可能int转到float的时候会精度丢失呢???原谅我是个小菜鸟。第二天回到公司与同事几乎研究了...转载 2019-03-08 11:18:22 · 3363 阅读 · 1 评论 -
到底有没有搞懂JVM类加载机制?
链接:先来看一下理论知识链接:做一道题试试有没有真的搞懂转载 2019-03-15 19:49:58 · 105 阅读 · 0 评论 -
Java中的字符,字符串与数字之间的转换
String 和 int之间的转换String ---> int :Integer.valueOf("100")int ---> String :String.valueOf(100)char 和 int 之间的转换char ---> int: 1. String str = String.valueOf('...原创 2019-04-01 22:48:39 · 601 阅读 · 0 评论 -
重点描述TreeSet的两种排序方式
目录1.背景介绍2.TreeSet保证元素唯一和排序的原理3.两种排序(自然排序,比较器排序)4.自然排序的实现4.1 Integer和String对象都可以进行默认的TreeSet排序4.2对自定义对象进行 自然排序5.比较器排序的实现5.1 一般比较器写法5.2常见比较器写法1.背景介绍TreeSet底层数据结构采用红黑树(平衡二叉树)来实现,元...原创 2019-04-02 19:24:50 · 490 阅读 · 0 评论 -
Java常用集合及源码分析
目录1.集合总图2.Collection的底层实现及应用2.1 Collection2.1.1 Collection使用的场景2.1.2List2.1.3Set3. Map的底层实现及应用3.1 HashMap3.2TreeMap3.3 Hashtable3.4HashMap和Hashtable的比较3.5 ConcurrentHashMap...原创 2019-04-02 20:41:27 · 200 阅读 · 0 评论 -
分析Java中的String、StringBuilder以及StringBuffer
目录1. String类2.StringBuffer3.StringBuilder4.三者之间的比较1. String类从源码中可以看出,String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。 private final ch...原创 2019-04-03 08:59:00 · 109 阅读 · 0 评论 -
Collection与Collections和Array与Arrays的区别
Collection 与 Collections的区别1.Collection 在Java.util下的一个接口,它是各种集合结构的父接口。继承与他的接口主要有Set 和List.2.Collections java.util下的一个专用静态类,它包含有各种有关集合操作的静态方法。提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。3.Collec...原创 2019-04-09 09:34:32 · 978 阅读 · 0 评论 -
面试:为什么要重写hashCode()和equals()方法?
1、剖析 equals()//Object类中的equals()publicbooleanequals(Objectobj){return(this==obj);}内部是使用“==”比较引用是否指向同一个对象。所以在不覆盖equals方法时,使用equals方法和==的比较结果是一样的。(链接:Java中的equals() 和 “...原创 2019-04-21 17:46:14 · 1276 阅读 · 0 评论 -
Java面试常考的 BIO,NIO,AIO 总结
文章转载自:JavaGuide目录: 1. BIO (Blocking I/O) 1.1 传统 BIO 1.2 伪异步 IO 1.3 代码示例 1.4 总结 2. NIO (New I/O) 2.1 NIO 简介 2.2 NIO的特性/NIO与IO区别 1)Non-block...转载 2019-04-22 12:15:27 · 130313 阅读 · 30 评论 -
Java中的 “重写” 与 “重载” 的关系
重写(Overriding):重写在JAVA中表示:在继承关系下(不同类中),父类有一个方法,但是可能这个方法的功能不够多,子类想加点料,这个时候子类就需要重写父类的方法。父类的方法和子类重写的方法需要方法名、参数和返回类型都得一样,只是具体实现的内容不一样。还有一点就是子类重写的方法一定不可以做更严格的限制,但是可以降低限制,也就是说子类必须要保证权限大于等于父类权限。注意:(1)子类...原创 2019-03-09 16:05:10 · 619 阅读 · 0 评论