Java
沙漏dan
我感受到的压力都是来自于我自己不努力不积极而又不甘于现状的恐慌
展开
-
同步工具类 Java并发编程实战 学习笔记
阻塞队列 闭锁 栅栏 FutuerTask 信号量同步工具类可以根据自身的状态来协调线程的控制流。同步工具类都包含特定的结构化属性,封装了一些状态,这些状态觉得指定同步工具类的线程是继续执行还是等待。同时,提供了操作状态的方法。阻塞队列阻塞队列不仅能作为保存对象的容器,还能协调生产者和消费者等线程之间的控制流。take和put等方法将阻塞,直到队列达到期望的状态。闭锁闭锁是一种同步工具类,可以延迟线程进度直到其到达终止状态。闭锁的作用相当于一扇门,闭锁到达结束状态之前,这.原创 2020-05-30 22:55:18 · 222 阅读 · 0 评论 -
ThreadLocal简单学习使用
有线程隔离性,存储线程中的局部变量在线程流程执行完成之后需要清理threadLocal中的数据,避免内存泄漏感觉threadLocal的一个好处是在进行对象跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。(from https://baijiahao.baidu.com/s?id=1653790035315010634&wfr=spider&for=pc) 参数较多,传递层次较多的时候应该可以考虑使用这种方式,避免多次传递请求参数以及传递错误请求参数。.原创 2020-05-30 21:35:34 · 162 阅读 · 0 评论 -
Unrecognized character escape '*'
最近踩得一个坑,json反序列化的过程中,由于有特殊字符,直接报错com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape '*'其中完整的字符是\*^o^*/尝试的方法如下:1. 直接去除\StringEscapeUtils.unescapeJavaScript(entry....原创 2019-11-30 22:13:36 · 9958 阅读 · 0 评论 -
java.util.ConcurrentModificationException一次报错排查
最近遇到了这个报错,报错的原因在于调用了ArrayList的sort方法,查看代码之后发现,sort方法也会改变modCount的值。后续需要注意。@Override@SuppressWarnings("unchecked")public void sort(Comparator<? super E> c) { final int expectedModCount =...原创 2019-11-30 22:06:37 · 267 阅读 · 0 评论 -
Java HashSet
HashSet继承自AbstractSet,实现了Set接口、Cloneable、Serializable接口。构造函数 public HashSet() { map = new HashMap<>(); } public HashSet(Collection<? extends E> c) { map = new Ha...原创 2019-04-22 11:03:40 · 533 阅读 · 0 评论 -
Java7 hashmap
JDK1.7中的hashmap。HashMap继承自AbstractMap,实现了Map、Cloneable、Serializable接口。默认初始容量为:1<<4 即 16最大容量为:1<<30 即2的30次方默认负载因子:0.75Entry<K,V>数组。每个Entry的属性:final K key;V value;Entr...原创 2019-04-21 21:43:01 · 105 阅读 · 0 评论 -
每周一总结 总结(2)
1. 一方包、两方包、三方包一方包(也称一方库)、二方包(也称二方库)、三方包(也称三方库)说明:一方包:本工程中的各模块的相互依赖二方包:公司内部的依赖库,一般指公司内部的其他项目发布的jar包三方包:公司之外的开源库, 比如apache、ibm、google等发布的依赖2. Function.identity()Java 8允许在接口中加入具体方法。接口中的具体方法有两...原创 2019-01-01 19:43:32 · 359 阅读 · 0 评论 -
Effective Java 第二版 学习笔记(3) 创建和销毁对象-私有构造器、避免创建不必要的对象
参考:Effective Java 第二版 第二章通过私有构造器强化不可实例化的能力有时候,可能需要编写只包含静态方法和静态域的类。这样的工具类不希望被实例化,实例对它没有任何意义。然而,在缺少显式构造器的情况下,编译器会自动提供一个公有的、无参的缺省构造器。企图通过将类做成抽象类来强制该类不可被实例化是行不通的。该类可以被继承,子类可以被实例化,会误导用户以为这种类是专门为了继承...原创 2018-12-26 08:57:27 · 156 阅读 · 0 评论 -
Effective Java 第二版 学习笔记(2) 创建和销毁对象-多个构造器参数时考虑构建器
参考:Effective Java 第二版 第二章静态工厂和构造器有个共同的局限,都能很好地扩展到大量的可选参数。重叠构造器模式可行,但是当有许多参数时,客户端代码会很难编写,并且难以阅读。也可以用JavaBeans莫斯。这种模式中,调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数。但是,JavaBeans莫斯的缺点在于构造过程被分到了...原创 2018-12-25 08:52:35 · 171 阅读 · 0 评论 -
Effective Java 第二版 学习笔记(一) 创建和销毁对象-静态工厂
参考:Effective Java 第二版 第二章1. 考虑用静态工厂方法代替构造器对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有构造器,还有一种方式是类提供一个公有的静态工厂放。它只是一个返回类的实例的静态方法。注意:静态工厂方法与设计模式中的工厂方法不同。静态工厂方法与构造器不同的优势包括:有名称 不必在每次调用它们的时候都创建一个新对象...原创 2018-12-24 09:04:23 · 186 阅读 · 0 评论 -
每周一总结 总结(1)
1. @Resource@Resource,它在语义上被定义为通过其唯一的名称来标识特定的目标组件,其中声明的类型与匹配过程无关。@Resource默认按byName自动注入。 既不指定name属性,也不指定type属性,则自动按byName方式进行查找。如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入。 只是指定了@Resource注解的name,则按na...原创 2018-12-23 21:54:50 · 545 阅读 · 0 评论 -
CompletableFuture、parallelStream学习测试对比
参考链接:https://www.cnblogs.com/taiyonghai/p/9397394.htmlimport java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.List;import java.util.concurrent.Comple...转载 2018-12-28 21:40:39 · 880 阅读 · 0 评论 -
Collection和Collections
Collection接口:int size();boolean isEmpty();boolean contains();Iterator<E> iterator();Object[] toArray();<T> T[] toArray(T[] a);boolean add(E e);boolean remove(Object o);boolean c...原创 2019-04-22 15:00:37 · 123 阅读 · 0 评论 -
Java8 hashmap
HashMap是java集合类中一种常见的集合类型,在面试中多次被问到。这里根据面试中的问题稍微整理一下。查看的代码基于JAVA8。HashMap继承自AbstractMap,实现了Map、Cloneable、Serializable接口。默认初始容量为:1<<4 即 16最大容量为:1<<30 即2的30次方默认负载因子:0.75一个桶中的元素数量...原创 2019-04-21 21:00:43 · 508 阅读 · 0 评论 -
MoreObjects
MoreObjects是一个辅助类,提供了那些在Objects中没有提供的方法。T firstNonNull(@Nullable T first, @Nullable T second)。找出first和second中第一个不为空的对象,并返回,如果都为空,抛出空指针异常。目前在项目中用来设置默认值,也不知道是否合理。ToStringHelper toStringHelper(Object...原创 2019-07-29 10:05:28 · 1095 阅读 · 0 评论 -
CPU密集型和IO密集型与线程池的配置
在看《Java》并发编程的艺术线程池这一块时,提到了要合理地配置线程池,要分析任务特性。任务的性质:CPU密集型、IO密集型和混合型。CPU密集型和IO密集型CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,C...原创 2019-09-04 10:31:17 · 9075 阅读 · 1 评论 -
工具类学习-CollectionUtils
CollectionUtils是日常经常会用到的一个工具类,在包org.apache.commons.collections中。目前最常用到的两个方法是CollectionUtils.isEmpty()以及CollectionUtils.isNotEmpty()。还有待补充一些使用实例其中有一个私有的静态变量INTEGER_ONE:private static Intege...原创 2019-08-18 10:35:11 · 1354 阅读 · 0 评论 -
BigDecimal,BigInteger 学习以及简单示例
最近的项目中用到了BigDecimal,之前并没有深入学习使用过,只是大概知道可以用于精确的运算,而float和double是不精确的。BigDecimal的实现中用到了BigIntegr,因此这里先学习下BigInteger。BigIntegerint和long都有长度限制,如果需要计算的整数大小超过long的范围,那么可以用到BigInteger。BigInteger继承...原创 2019-08-24 23:37:47 · 767 阅读 · 0 评论 -
RestTemplate学习
http请求方法(1)GET:通过请求URI得到资源(2)POST:用于添加新的内容(3)PUT:用于修改某个内容,若不存在则添加(4)DELETE:删除某个内容(5)OPTIONS :询问可以执行哪些方法(6)HEAD :类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据(7)CONNECT :用于代理进行传输,如使用SSL(8)T...原创 2019-08-24 10:12:25 · 487 阅读 · 0 评论 -
Objects类
1. Objects,用于操作Object的静态类。equals(Object a, Object b),这里感觉和Object中的equals作用相同。deepEquals(Object a, Object b),这里调用了Arrays.deepEquals0(Object e1, Object e2),这个方法首先对象数组类型,进而调用Arrays中对应的数组的equals方法,判断数...原创 2019-07-28 10:30:47 · 403 阅读 · 0 评论 -
本地缓存和分布式缓存的比较 堆污染
本地缓存和分布式缓存的比较:分布式缓存一致性更好一点,本地缓存 每个实例都有自己的缓存,可能会存在不一致的情况。本地缓存会占用堆内存,影响垃圾回收、影响系统性能。分布式缓存两大开销会导致其慢于本地缓存,网络延迟和对象序列化进程内缓存适用于较小且频率可见的访问场景,尤其适用于不变对象,对于较大且不可预见的访问,最好采用分布式缓存。堆污染:java中,当一个可变泛型参数指向一...原创 2019-08-04 10:16:49 · 3232 阅读 · 0 评论 -
Optional
目前的理解:1. Optional中包含一个可以为空的对象,应该在所有可能为空的地方都加上Optional作为返回值。强迫调用方自行判断是否为空。自己因为老是忘记判断是否为null而导致空指针。2. Optional之前自己最习惯的用法是先判断是否是ifPresent,然后去进行下一步操作。看了代码之后,发现也可以通过orElse来设定默认值,或者是通过orElseThrow来抛出为空时的...原创 2019-08-04 10:15:29 · 3656 阅读 · 0 评论 -
springboot gradle 使用过程中遇到的问题小结(6)
1. 报错:Cannot deserialize instance of java.lang.String out of START_OBJECT token,我这里报这个错的原因是传递的json数据类型不对,修正后即可2. 使用JsonFormat引起的时间比正常时间慢8小时,@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GM...原创 2019-08-04 09:58:09 · 249 阅读 · 0 评论 -
Java核心技术卷2 高级特性 学习笔记(6)
参考:Java核心技术卷2 高级特性 第十二章建议只有在必需的时候才使用本地代码,特别是在以下三种情况下,也许可以使用本地代码:你的应用需要访问的系统特性和设备是通过Java平台无法实现的 已经有大量的测试过和调试过的用另一种语言编写的代码,并且知道如何将其导出到所有的目标平台上 通过基准测试,发现所编写的Java代码比用其他语言编写的等价代码慢很多Java有一个用于和本地C代码...原创 2018-12-23 21:13:55 · 162 阅读 · 0 评论 -
Java核心技术卷2 高级特性 学习笔记(3)
参考:《Java核心技术卷2 高级特性 》第三章XML是一种非常有用的描述结构化信息的技术。XML格式能够表示层次结构,这比属性文件的平面结构更加灵活。XML格式能够表达层次结构,并且重复的元素不会被曲解。XML文档结构一般以文档头开始:<?xml version="1.0"?>或者<?xml version="1.0" encoding="U...原创 2018-12-17 22:40:52 · 226 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(6)
参考:Java核心技术 卷I 基础知识接口,主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。接口不是类,是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。接口中的所有方法自动地属于public。接口中可以定义常量。接口不能包含实例域。提供实例域和方法实现的任务应该由实现接口的那...原创 2018-11-06 12:52:11 · 220 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(3)
参考:Java核心技术 卷I 基础知识类之间最常见的关系有:依赖、聚合、继承依赖即“use-a”关系,是一种最明显的,最常见的关系。如果一个类的方法操作另一个类的对象,就说一个类依赖于另一个类。应该尽可能地将相互依赖的类减至最少。聚合即“has-a”关系,是一种具体且易于理解的关系。聚合辨析意味着类A的对象包含类B的对象。继承即“is-a”关系,是一种用于表示特殊与一般关系的。...原创 2018-11-01 21:36:42 · 161 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(2)
参考:Java核心技术 卷I 基础知识Unicode和char类型码点是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+。Unicode的码点可以分成17个代码级别(code plane)。第一个代码级别成为基本的多语言级别(basic multilingual plane),码点从U+10000到U+10FFFF,其中包括一些辅...原创 2018-10-26 16:21:03 · 408 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(1)
参考 Java核心技术 卷I 基础知识Java:简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性。分布式Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。健壮性Java的设计目标之一在于是的Java编写的程...原创 2018-10-25 18:34:26 · 827 阅读 · 0 评论 -
Java开发 2019秋招 面经整理
从7月底开始,到10月中旬获得offer进入面试流程的包括字节跳动、招银科技、百度、Keep、华为、花旗、京东、有赞、去哪儿、拼多多、okcoin,收到的offer有华为、招银、有赞、去哪儿,其他有一面凉、二面凉以及HR面凉等等。面试中遇到的问题整理如下,仅供参考计算机网络TCP、UDP在哪一层?它们之间有什么差别,哪一个传输效率更高,为什么?分别用于什么场景? HTTP和HTT...原创 2018-10-17 19:09:07 · 936 阅读 · 6 评论 -
调整数组顺序使奇数位于偶数前面
题目源自于牛客网:思路一:用类似冒泡的思路,每次循环,如果相邻的两个数,前者为偶数,后者为奇数,则两者交换思路二:类似插入排序的思路,每次循环,从做到右找奇数,找到第一个奇数,就把它移到前面去,把前面的数字移后思路三:借用另外两个数组,分别存储奇数和偶数,最后将两个数组合并思路四:借用队列,从左到右找偶数,每找到一个偶数,就将其放在队尾,从右到左找奇数,找到一个就放在队首。思路...原创 2018-09-10 15:20:21 · 211 阅读 · 0 评论 -
数值的整数次方
快速求幂算法解法来自于:牛客网-试题广场-数值的整数次方public class Solution { public double Power(double base, int exponent) { int n=Math.abs(exponent); if(n==0) return 1; if(n==1...原创 2018-09-10 15:01:20 · 93 阅读 · 0 评论 -
只用位运算不用算术运算实现整数的加减乘除运算
参考自程序员代码面试指南题目:确定两个32位整数a和b,可正可负、可0。不能使用算术运算符,分别实现a和b的加减乘除运算。要求:如果给定的a和b执行加减乘除的某些结果本来就会导致数据的溢出,那么你实现的函数补习对那些结果负责。用位运算实现加法运算,如果在不考虑进位的情况下,a^b就是正确结果,因为0加0位0(0&0),0加1位1(0&1),1加0为1(1&...转载 2018-09-12 15:07:22 · 1008 阅读 · 1 评论 -
其他数都出现了k次的数组中找到只出现一次的数
参考自程序员代码面试指南题目:给定一个整型数组,和一个大于1的整数k,已知arr中只有一个数出现了一次,其他的数都出现了k次,请返回只出现一次的数。要求:时间复杂度为O(N),额外空间复杂度为O(1);下面的例子是两个七进制数的无进位相加:a: 6 4 3 2 6 0 1b: 3 4 5 0 1 1 1r: 2 1 1 2 0 1 2(结果)两个七进制的a和b,...转载 2018-09-12 12:13:18 · 635 阅读 · 0 评论 -
在其他数都出现偶数次的数组中找到出现次数为奇数次的数
参考自程序员代码面试指南其他数都出现偶数次的数组中找到出现奇数次的数字 整数n与0异或的结果为n,n与n异或的结果为0public void printOddTimesNum1(int[] arrs){ int eO=0; for(int x:arrs){ eO=eO^x; } System.o...原创 2018-09-12 10:02:36 · 1193 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(4)
参考:Java核心技术 卷I 基础知识一个对象变量可以指示多种实际类型的现象被称为多态。在运行时能够自动地选择调用哪个方法的现象被称为动态绑定。由一个公共超类派生出来的所有类集合被称为继承层次。在继承层次中,通过某个特定类到其祖先的路径被称为该类的继承链。假设要调用x.f(args),隐式参数x声明为类C的一个对象。下面是调用过程的详细描述:(1)编译器查看对象的声明类型和方法...原创 2018-11-04 17:02:37 · 177 阅读 · 0 评论 -
Java核心技术 卷I 基础知识 学习笔记(5)
参考:Java核心技术 卷I 基础知识反射库提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。这项功能被大量地应用与JavaBeans中,它是Java组件的体系结构。能够分析类能力的程序成为反射。反射机制的功能极其强大,在下面可以看到,反射机制可以用来:在运行时分析类的能力 在运行时查看对象 实现通用的数组操作代码 利用Method对象,这个对象很...原创 2018-11-05 18:55:05 · 151 阅读 · 0 评论 -
Effective Java 第二版 学习笔记(4) 消除过期对象的引用 避免使用终结方法
参考:Effective Java 第二版 第二章消除过期对象的引用过期引用是指永远不会再被解除引用。一般而言,只要类是自己管理内存,程序员就该警惕内存泄漏问题。内存泄漏的一个来源是缓存,一旦把对象放到缓存中,就很容易被遗忘掉,从而使得它不再有用之后仍然很长一段时间内留在缓存中。一种可能的解决方案是:只要在缓存之外存在对某个项键的引用,该项就有意义,那么就可以使用WeakHas...原创 2018-12-28 08:47:57 · 206 阅读 · 0 评论 -
Java核心技术卷2 高级特性 学习笔记(5)
参考:Java核心技术卷2 高级特性 第九章Java技术提供了三种确保安全的机制:语言设计特性(对数组的边界进行检查,无不受检查的类型转换,无指针算法等)。 访问控制机制,用于控制代码能够执行的操作(比如文件访问,网络访问等)。 代码签名,利用该特性,代码的作者就能够用标准的加密算法来认证Java代码。这样,该代码的使用者就能够准确知道谁创建了该代码,以及代码被标识后是否被修改过...原创 2018-12-23 20:28:04 · 213 阅读 · 0 评论 -
Invalid bound statement (not found)错误的可能原因
转载自: Invalid bound statement (not found)错误的可能原因其他原因导致此问题解决参考:1.检查xml文件所在package名称是否和Mapper interface所在的包名<mapper namespace="me.tspace.pm.dao.UserDao"> mapper的namespace写的不对!!!注意系修改。2...转载 2018-12-10 11:41:13 · 4252 阅读 · 0 评论