
JavaSE
文章平均质量分 58
维1
这个作者很懒,什么都没留下…
展开
-
Java内部类
这篇写得好啊,写的真的好。一.内部类内部类的注意:1.为什么非静态的内部类中不能出现静态的成员静态变量是要占用内存的,在编译时只要是定义为静态变量了,系统就会自动分配内存给他,而内部类是在宿主类编译完编译的,也就是说,必须有宿主类存在后才能有内部类,这也就和编译时就为静态变量分配内存产生了冲突,因为系统执行:运行宿主类->静态变量内存分配->内部类,而此时内部类的静态变量先于内部类生成...原创 2017-06-14 20:19:53 · 212 阅读 · 0 评论 -
UTF-8和GBK的区别
GBK就是在保存你的帖子的时候,一个汉字占用两个字节。。外国人看会出现乱码,此为我中华为自己汉字编码而形成之解决方案。UTF8就是在保存你的帖子的时候,一个汉字占用3个字节。。但是外国人看的话不会乱码,此为西人为了解决多字节字符而形成之解决方案。ASCII(ISO-8859-1)是鼻祖,最简单的方式,字节高位为0GB2312、GBK、GB18030,这几个是中文编码方式,并向下兼容。GB...转载 2018-04-08 20:40:56 · 46345 阅读 · 5 评论 -
在循环中使用StringBuilder代替使用 "+" 来连接字符串
今天安装了阿里的IDEA代码规约插件在检查时发现了这个问题,它提示我尽量使用StringBuilder代替使用 “+” 来连接字符串,去百度了以下。 String messages = ""; for (ObjectError objectError : e.getBindingResult().getAllErrors()) { messages ...原创 2018-09-23 12:01:57 · 1934 阅读 · 3 评论 -
this.getClass().getClassLoader().getResource和this.getClass().getResource的区别和联系
项目路径:classLoader.getResource(name)该方法的作用与class.getResource(name)的作用一样,接收一个表示路径的参数,返回一个URL对象,该URL对象表示name对应的资源(文件)。但是,与class.getResource(name)不同的是,该方法只能接收一个相对路径,不能接收绝对路径如/xxx/xxx。并且,接收的相对路径是相对于项目的包的...原创 2018-09-23 14:44:50 · 18759 阅读 · 0 评论 -
Java 中的异常和处理详解
原文出处: 代码钢琴家简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行...转载 2018-10-01 12:44:47 · 164 阅读 · 0 评论 -
java8 新增的@Repeatable注解
import java.lang.annotation.Annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java...转载 2018-09-20 19:36:48 · 455 阅读 · 0 评论 -
Java8新特性之接口的默认方法和静态方法
原文:@shekhargulati我们都知道应该面向接口编程。接口给定用户应该使用的协议,而不用依赖该接口的具体实现细节。因此,为了做到松耦合,设计出干净的接口成为API设计的要素之一。SOLID五大原则之一的接口隔离原则要求我们设计有具体目的的小接口,而不是一个通用却臃肿的接口。对你的类库和应用来说,接口设计是能否得到干净而高效的API的关键。这一节的代码在ch01包中如果你曾经...转载 2018-10-29 13:38:31 · 289 阅读 · 0 评论 -
Java常量池理解与总结
一.相关概念1.1 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。1.2 Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再...转载 2018-11-12 16:49:49 · 379 阅读 · 0 评论 -
float数和double的大小比较
看到一个面试题想了很久为什么?float f = 1.4f;double d = 1.4d; 与 float f = 1.5f;double d = 1.5d; 是否为truefloat f = 1.4f;double d = 1.4d;float f1 = 1.5f;double d1 = 1.5d;while (true) { System.out.println(f...原创 2018-11-19 00:50:44 · 6419 阅读 · 1 评论 -
Java Atomic Synchronsized Volatile
Java Atomic Synchronsized Volatile##Atomic 原子 private static AtomicInteger count = new AtomicInteger(0); count.addAndGet(1);我们看一下count.addAndGet(1)的实现就明白了public final int addAndGet(int delt...原创 2018-12-14 15:26:37 · 375 阅读 · 0 评论 -
ReentrantLock中中断锁和非中断锁源码分析
最近读了Java并发编程的艺术记录一下https://www.cnblogs.com/daydaynobug/p/6752837.html关于AQS的讲解尝试获取一个内部锁的操作(进入一个 synchronized 块)是不能被中断的public class WriterReader { private Object lock; public WriterReader...原创 2019-01-03 15:04:05 · 1450 阅读 · 0 评论 -
java中byte转换int时为何与0xff进行与运算
那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?这个问题就在于你想得到的结果是什么样的格式int&0xFF的意义就是把byte类型的数据的前3个byte位置0,这样得到的结果是1byte的十六进制,要不然的话如果是负数前面24位补1的话得到的就是4byte的十六进制 @Test public vo...原创 2019-01-24 12:33:56 · 727 阅读 · 3 评论 -
阻塞队列之一:BlockingQueue汇总
一、阻塞队列介绍转自:https://www.cnblogs.com/duanxz/p/3400003.htmlBlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是对这个原理的阐述:一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue。一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。也就是说...转载 2019-01-20 16:16:40 · 365 阅读 · 0 评论 -
JUC的线程安全容器
原创 2019-02-28 10:36:19 · 389 阅读 · 0 评论 -
StringUtils.abbreviate的方法的使用
应用场景:当接收的字符串长度不确定,但是确定是非常长,在打印日志时,只打算打印部分,后半部分使用省略号,就可以用org.apache.commons.lang.StringUtils.abbreviate(String str, int maxWidth)这个方法 缩减字符串,用省略号代替省略的部分, 分两种情况当str的长度小于maxWidth的,则返回str当maxWidt...原创 2018-09-07 13:52:02 · 2811 阅读 · 1 评论 -
Java中的关键字 transient
Java中的关键字 transient刚看HashMap的源码看到了一个没有见过的关键字在百度上学习了一波 /** * The table, resized as necessary. Length MUST Always be a power of two. */ transient Entry<K,V>[] table = (Entry<K,...转载 2018-04-13 21:30:57 · 110 阅读 · 0 评论 -
Java内部接口
public interface Map<K,V> { int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V v...原创 2018-04-13 21:04:24 · 497 阅读 · 0 评论 -
Java中int型和char型数据转换问题
众所周知,Java中int型和char型数据不像C语言中那样可以任意转换,即不可以将一个int型变量自动转换为char型,如下面代码中的演示:public class TestSort{ public static void main(String args[]){ int x='a';//不会产生编译错误,因为'a'赋给x是隐式转换 System.out.println(转载 2017-06-07 20:27:44 · 2126 阅读 · 0 评论 -
java中的常用方法
转自:http://www.cnblogs.com/starmo/archive/2010/08/13/1798770.html第一章 字符串 1 、 获取字符串的长度: length() 2 、 判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 、后缀 endsWith(String s) 3 、 比较两个字符串: equ转载 2017-09-17 12:01:45 · 272 阅读 · 0 评论 -
OutputStream的flush()方法
public void flush() throws IOException刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。 如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保...原创 2018-03-06 00:19:18 · 44290 阅读 · 2 评论 -
java线程池对于线程的管理
java.util.concurrent 类 ThreadPoolExecutor构造函数: 构造方法摘要ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) ...原创 2018-04-08 14:56:54 · 184 阅读 · 0 评论 -
interface有没有继承Object
今天看到一个问题:interface有没有继承Object? 答案是:没有根据经验interface A{ }class B implements A{ public String testB(){ return "testB() from class B"; }}public class Demo{ public static void main(Strin...原创 2018-04-09 15:58:58 · 851 阅读 · 0 评论 -
Java类的初始化问题
以后来写public class Base{ private String baseName = "base"; private int baseId = 10; public Base() { callName(); } public void callName() { System. out. println(baseNa...原创 2018-04-09 16:29:58 · 230 阅读 · 0 评论 -
java多线程的原子性
以下代码转自https://blog.youkuaiyun.com/ghsau/article/details/7421217class Count { public int num; public synchronized void increment() { num++; } public int get() { return num; }}public class Threa...原创 2018-04-03 10:25:19 · 255 阅读 · 0 评论 -
HashMap和TreeMap存取null键和null值的情况
1.HashMap支持null键和null值JSE6.0描述:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 import java.util.HashMap;public class te...原创 2018-04-16 11:42:02 · 12707 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
转自:http://www.cnblogs.com/dolphin0520/p/3920397.html写的很好,有时间转过来作为笔记转载 2018-04-03 21:25:07 · 202 阅读 · 0 评论 -
ExecutorService的关闭
转自:http://blog.sina.com.cn/s/blog_145f07e7b0102x3dy.html虽然使用ExecutorService可以让线程处理变的很简单,可是有没有人觉得在结束线程运行时候只调用shutdown方法就可以了?实际上,只调用shutdown方法的是不够的。我们用学校的老师和学生的关系来说明这个问题。 shutdown只是起到通知的作用 我们来假设如下场景:学校里...转载 2018-04-04 15:35:33 · 792 阅读 · 0 评论 -
进程和线程之由来
转自:http://www.cnblogs.com/dolphin0520/p/3910667.html下面是本文的目录大纲: 一.操作系统中为什么会出现进程? 二.为什么会出现线程? 三.多线程并发一.操作系统中为什么会出现进程? 说起进程的由来,我们需要从操作系统的发展历史谈起。 也许在今天,我们无法想象在很多年以前计算机是什么样子。我们现在可以用计算机来做很多事情:办公、娱乐、上网...转载 2018-04-04 16:23:49 · 143 阅读 · 0 评论 -
对于元素类型为集合的List进行排序
Collections对List集合中的数据进行排序1.对于普通对象public static void main(String[] args) { List<Integer> nums = new ArrayList<Integer>(); nums.add(3); nums.add(5); nums.add(1); nums.add(0); Sys...原创 2018-04-07 00:07:28 · 198 阅读 · 0 评论 -
Java的final关键字
Java中的final关键字和C++中的const关键字一样这篇写的真的好啊,很全。http://www.cnblogs.com/dolphin0520/p/3736238.html记录下来以便回忆转载 2018-04-13 20:04:03 · 111 阅读 · 0 评论 -
关于JAVA NIO是同步非阻塞I/O的解释
转自:https://blog.youkuaiyun.com/tomcyndi/article/details/79087578同步IO 异步IOIO基本概念Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个sock...转载 2019-07-26 11:50:23 · 353 阅读 · 0 评论