Arrays.asList问题点
摘要:工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException()。 public static <T> List<T> asList(T... a) { return
阅读全文
posted @
2023-03-05 09:20
溪水静幽
阅读(10)
推荐(0) 编辑
泛型
摘要:泛型中通配符 通常情况下,T,E,K,V,?约定 ? 表示不确定的 java 类型 T (type) 表示具体的一个java类型 K V (key value) 分别代表java键值中的Key Value E (element) 代表Element Java泛型都是在编译器这个层次上实现,在生成的字
阅读全文
posted @
2023-03-04 13:24
溪水静幽
阅读(15)
推荐(0) 编辑
InheritableThreadLocal、TransmittableThreadLocal三者区别
摘要:ThreadLocal 解决的是每个线程可以拥有自己线程的变量实例。可以从隔离的角度解决变量线程安全的问题。ThreadLocal的缺点:它不支持子线程。因为map是绑定在currentThread中的。子线程和父线程并不是一个Thread。 InheritableThreadLocal就是支持子线
阅读全文
posted @
2023-02-11 12:49
溪水静幽
阅读(438)
推荐(0) 编辑
javaagent
摘要:如果是第三方包,想不修改代码的情况下实现代理技术,就可以采用Instrumentation进行引入;什么是Instrumentation? Java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序。这种监测和协助包括但不限于获
阅读全文
posted @
2022-11-05 18:55
溪水静幽
阅读(255)
推荐(0) 编辑
AtomicInteger越界问题
摘要:AtomicInteger的incrementAndGet方法不断的增加,并没有注意到如果AtomicInteger增加到了2147483647(Integer.MAX_VALUE)再加一,AtomicInteger的值会变成负数-2147483648(Integer.MIN_VALUE)。如果不对
阅读全文
posted @
2022-03-29 14:51
溪水静幽
阅读(364)
推荐(0) 编辑
Java 9 变量句柄-VarHandle
摘要:如果要原子性地增加某个字段的值,到目前为止我们可以使用下面三种方式: 使用AtomicInteger来达到这种效果,这种间接管理方式增加了空间开销,还会导致额外的并发问题; 使用原子性的FieldUpdaters,利用反射机制,操作开销也会更大; 使用sun.misc.Unsafe提供的JVM内置函
阅读全文
posted @
2020-11-22 12:55
溪水静幽
阅读(677)
推荐(0) 编辑
MethodHandle类详解
摘要:java7为间接调用方法提供了MethodHandle类,即方法句柄。可以将其看作是反射的另一种方式,MethodHandle api要比反射快很多因为访问检查在创建的时候就已经完成了,而不是像反射一样等到运行时候才检查。但同时,Method Handles比反射更难用,因为没有列举类中成员,获取属
阅读全文
posted @
2020-11-20 23:38
溪水静幽
阅读(418)
推荐(0) 编辑
SPI机制
摘要:SPI 全称Service Provider Interface,一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。可以在运行时,动态为接口替换实现类。可以很容易的通过 SPI 机制为程序提供拓展功能。 Java SPI 实际上是“基于接口
阅读全文
posted @
2020-10-30 22:44
溪水静幽
阅读(446)
推荐(1) 编辑
@Inherited
摘要:在注解上使用@Inherited 表示该注解会被子类继承,注意,仅针对类,成员属性、方法并不受此注释的影响 测试代码: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface
阅读全文
posted @
2020-05-23 11:28
溪水静幽
阅读(277)
推荐(0) 编辑
AutoCloseable接口
摘要:从AutoCloseable的注释是为了更好的管理资源,准确说是资源的释放,当一个资源类实现该接口close方法,在使用try-catch-resources语法创建的资源抛出异常后,JVM会自动调用close 方法进行资源释放,当没有抛出异常正常退出try-block时候也会调用close方法。像
阅读全文
posted @
2020-05-10 11:55
溪水静幽
阅读(321)
推荐(0) 编辑
event-bus
摘要:Guava的EventBus是一个基于订阅的消息总线库。在某些业务场景用它来在单进程中替代RabbitMQ来做事件分发。 可以实现类似MQ类似的事件模型,但由于没有持久化,消息堆积能力取决于内存大小和线程池任务队列的配置。以下几点是在过去的使用中总结出来的一些最佳实践, 一般情况下只使用AsyncE
阅读全文
posted @
2020-01-18 19:21
溪水静幽
阅读(432)
推荐(0) 编辑
jdk8 Convert List to Map
摘要:示例 public void testListToMap() { List<User> users = new ArrayList<User>(); users.add(new User("tom", 18, "男")); users.add(new User("lucy", 20, "女"));
阅读全文
posted @
2019-12-15 16:56
溪水静幽
阅读(295)
推荐(0) 编辑
UUID分析
摘要:UUID:通用唯一识别码 (Universally Unique Identifier),是一个软件建构的标准,是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算(Distributed Computing Environment, DCE)
阅读全文
posted @
2019-12-15 15:49
溪水静幽
阅读(456)
推荐(0) 编辑
instanceof和isInstance
摘要:obj.instanceof(class):这个对象是不是这种类型 1.一个对象是本身类的一个对象 2.一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3.所有对象都是Object 4.凡是null有关的都是false null.instanceof(class) class.in
阅读全文
posted @
2019-12-07 16:37
溪水静幽
阅读(114)
推荐(0) 编辑
Java异常处理的最佳实践
摘要:1、要在方法定义分句中定义具体的异常 按照public FileInputStream testMethod1() throws Exception{这种写法,表示该方法会抛出所有受检查异常,这不是一个良好的编程习惯。在这种情况下,我们最好抛出足够具体的异常,以便调用者进行合适的捕获和处理,例如pu
阅读全文
posted @
2019-11-24 19:12
溪水静幽
阅读(224)
推荐(0) 编辑
Parameter类
摘要:Parameter 类位于 java.lang.reflect 包中,主要用于在程序运行状态中,动态地获取参数信息 常用方法: getAnnotatedType() 返回一个 AnnotatedType 对象,该对象表示使用类型来指定由该参数对象表示的形式参数的类型 通过其 getType() 方法
阅读全文
posted @
2019-10-08 23:38
溪水静幽
阅读(496)
推荐(0) 编辑
fastjson常规使用
摘要:1、Json串的单引号和双引号问题 正确的JSON是这样的:属性名必须用双引号包裹 var json = '{"name":"imooc"}'; // 这个是正确的JSON格式 var json = "{\"name\":\"imooc\"}"; // 这个也是正确的JSON格式 var json
阅读全文
posted @
2019-09-22 15:18
溪水静幽
阅读(313)
推荐(0) 编辑
什么场景中会用到java多线程?
摘要:1、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度(如quartz),一些监控用于定期信息采集等。 2、最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到
阅读全文
posted @
2019-09-12 11:57
溪水静幽
阅读(1117)
推荐(0) 编辑
Collator类 比较字符串(汉字大小)
摘要:Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。 Collator 是一个抽象基类。其子类实现具体的整理策略。Java 平台目前提供 RuleBasedCollator 子类,适用于很多种语言。还可以创建其他子类,以处理更多的专门需要。 与其他
阅读全文
posted @
2019-06-15 14:03
溪水静幽
阅读(172)
推荐(0) 编辑
Lambda表达式
摘要:Lambda expression:一个不用被绑定到一个标识符上,并且可能被调用的函数。即一段带有输入参数的可执行语句块。 Java 8 中 Stream 是对集合(Collection)对象功能的增强,专注于对集合对象进行各种便利、高效的聚合操作(aggregate operation),或者大批
阅读全文
posted @
2019-02-01 22:33
溪水静幽
阅读(456)
推荐(0) 编辑