Java
迎风追日
8 年软件开发经验,其中 2 年的项目开发负责人经验,擅长 java web 平台的开发,多年云计 算、大数据领域面向教育、公安类 SaaS 应用开发背景;具有较强的业务分析能力,能够快速理解 和分析复杂的业务逻辑;有较强的沟通协作能力,有异地开发经历;有较强的学习能力,且愿意 尝试新技术。
展开
-
java项目运维手册
1、生成dump文件jmap -dump:live,format=b,file=heap-dump-1829.bin 321712、查看子文件夹磁盘空间占用情况Du -sh *3、实时监控gc情况:jstat -gcutil pid interval(ms)4、开启jmx远程监控:执行foo.jar启动命令java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=f.原创 2020-09-30 08:31:50 · 1520 阅读 · 0 评论 -
【Java】求多个集合的交集
最近在工作中需要些一个接口,就是求多个教室的公共课程,这就涉及到求多个集合的交集。 假设集合中元素的类型为Object,那多个集合数据结构为List<List<Object>>。我们知道,求两个集合的交集方法为list1.retainAll(list2)。对多个集合求交集也就是多个集合两两求交集,这就可以使用Java8新语法中的reduce方法。...原创 2017-11-04 14:54:42 · 7006 阅读 · 2 评论 -
为什么说HashMap是线程不安全的?
我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。1.jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:publicclassHash...转载 2019-12-10 08:26:38 · 342 阅读 · 0 评论 -
JAVA语言核心精讲10-BIO/NIO/AIO
Java 提供了哪些 IO 方式? NIO 如何实现多路复用?典型回答Java IO 方式有很多种,基于不同的 IO 抽象模型和交互方式,可以进行简单区分。首先,传统的 java.io 包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间...转载 2018-06-23 17:08:09 · 391 阅读 · 2 评论 -
java--IO与NIO的区别
source : https://blog.csdn.net/u010031673/article/details/51755075JAVA NIO vs IO当我们学习了Java NIO和IO后,我们很快就会思考一个问题:什么时候应该使用IO,什么时候我应该使用NIO在下文中我会尝试用例子阐述java NIO 和IO的区别,以及它们对你的设计会有什么影响Java NIO和IO的主要区别IONI...转载 2018-06-10 20:38:37 · 380 阅读 · 0 评论 -
java--深入理解泛型和类型擦除
泛型,一个孤独的守门者。大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先给大家奉上一道经典的测试题。List<String> l1 = new ArrayList...转载 2018-07-10 14:29:37 · 2101 阅读 · 6 评论 -
Lombok老母猪
关于Lombok,其实在网上可以找到很多如何使用的文章,但是很少能找到比较齐全的整理。我也一直寻思着想写一篇各个注解用法的总结,但是一直都没有付诸行动。今天看到了微信公众号”原力注入”推送的这篇文章,总结的内容很全,所以分享给所有关注我博客的朋友们。Lombok简介Project Lombok makes java a spicier language by adding ‘hand...转载 2018-09-14 09:32:46 · 171 阅读 · 0 评论 -
lombok的@EqualsAndHashCode注解
官方文档:@EqualsAndHashCode原文中提到的大致有以下几点:1. 此注解会生成equals(Object other) 和 hashCode()方法。2. 它默认使用非静态,非瞬态的属性3. 可通过参数exclude排除一些属性4. 可通过参数of指定仅使用哪些属性5. 它默认仅使用该类中定义的属性且不调用父类的方法6. 可通过callSuper=true解决上一点问...转载 2018-10-08 10:14:33 · 693 阅读 · 0 评论 -
他山之石
学习项目:https://gitee.com/macrozheng/mall1、自定义flag参数校验器(1)注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD,ElementType.PARAMETER})@Constraint(validatedBy = FlagValida...原创 2019-05-19 21:21:31 · 147 阅读 · 0 评论 -
一次性替换字符串中的多个字符
一次性替换字符串中的多个字符 private String replaceEach(final String text, final Map<String, String> definitions ) { final String[] keys = definitions.keySet().toArray(new String[0]); ...原创 2019-07-19 15:25:30 · 1495 阅读 · 0 评论 -
JAVA语言核心精讲9-ConcurrentHashMap如何高效实现线程安全
如何保证容器是线程安全的?ConcurrentHashMap 如何实现高效地线程安全?典型回答Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronized...转载 2018-06-23 09:04:44 · 3245 阅读 · 0 评论 -
JAVA语言核心精讲8--Hashtable/HashMap/TreeMap介绍
对比 Hashtable、HashMap、TreeMap 有什么不同?谈谈你对 HashMap 的掌握。典型回答Hashtable、HashMap、TreeMap 都是最常见的一些 Map 实现,是以键值对的形式存储和操作数据的容器类型。Hashtable 是早期 Java 类库提供的一个哈希表实现,本身是同步的,不支持 null 键和值,由于同步导致的性能开销,所以已经很少被推荐使用。HashM...转载 2018-06-22 19:17:21 · 239 阅读 · 0 评论 -
JAVA语言核心精讲7--ArrayList/Vector/LinkedList对比
对比 Vector、ArrayList、LinkedList 有何区别?典型回答这三者都是实现集合框架中的 List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。Verctor 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选...转载 2018-06-22 19:03:44 · 251 阅读 · 0 评论 -
【Java】Java的序列化与反序列化
原文 https://www.cnblogs.com/xdp-gacl/p/3777987.html 一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。转载 2017-11-14 17:36:32 · 243 阅读 · 0 评论 -
使用Spring AOP和自定义注解记录日志
什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontati...原创 2018-04-02 20:02:55 · 1234 阅读 · 1 评论 -
Java后端各种小知识点
1、ArrayList和LinkedList的比较ArrayList实现了List接口,它是以数组的方式来实现的,数组的特性是可以使用索引的方式来快速定位对象的位置,因此对于快速的随机取得对象的需求,使用ArrayList实现执行效率上会比较好.LinkedList是采用链表的方式来实现List接口的,它本身有自己特定的方法,如: addFirst(),addLast(),g...原创 2018-05-06 15:57:18 · 681 阅读 · 0 评论 -
多线程1-线程池
Executors框架简介Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免this逸出。E...原创 2018-05-06 15:42:01 · 166 阅读 · 0 评论 -
JAVA语言核心精讲1-Java语言特性
Java采用的是解释和编译混合的模式。它首先通过javac将源码编译成字节码文件class.然后在运行的时候通过解释器或者JIT将字节码转换成最终的机器码。只是用解释器的缺点:抛弃了JIT可能带来的性能优势。如果代码没有被JIT编译的话,再次运行时需要重复解析。只用JIT的缺点:需要将全部的代码编译成本地机器码。要花更多的时间,JVM启动会变慢非常多;增加可执行代码的长度(字节码比JIT编译后的机...原创 2018-06-22 11:28:59 · 275 阅读 · 0 评论 -
JAVA语言核心精讲2-异常相关
请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别?典型回答Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception...转载 2018-06-22 11:45:21 · 160 阅读 · 0 评论 -
JAVA语言核心精讲3-强引用、软引用、弱引用、幻象引用的区别
强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?典型回答不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。所谓强引用("Strong" Reference),就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。对于一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式地将...转载 2018-06-22 15:15:30 · 280 阅读 · 0 评论 -
JAVA语言核心精讲4--String/StringBuffer/StringBuilder区别
1 String(1) String的创建机理由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象是不...转载 2018-06-22 15:36:41 · 168 阅读 · 0 评论 -
JAVA语言核心精讲5-反射机制与动态代理原理
谈谈 Java 反射机制,动态代理是基于什么原理?典型回答反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比...转载 2018-06-22 16:28:45 · 2447 阅读 · 0 评论 -
JAVA语言核心精讲6--int 和 Integer
1 int和IntegerJDK1.5引入了自动装箱与自动拆箱功能,Java可根据上下文,实现int/Integer,double/Double,boolean/Boolean等基本类型与相应对象之间的自动转换,为开发过程带来极大便利。最常用的是通过new方法构建Integer对象。但是,基于大部分数据操作都是集中在有限的、较小的数值范围,在JDK1.5 中新增了静态工厂方法 valueOf,其背...转载 2018-06-22 18:46:43 · 175 阅读 · 0 评论 -
【并发编程】IO密集型和CPU密集型任务
转载自http://www.blogjava.net/bolo核心是可以分别独立运行程序指令的计算单元。线程是操作系统能够进行运算调度的最小单位。PS:4核心8线程的!等于你有4个仓库,你要运输货物,8线程就是高速公路!8条高速公路送比你4条高速公路运的快吧!有一个原则是:活跃线程数为 CPU(核)数时最佳。过少的活跃线程导致 CPU 无法被充分利用转载 2017-11-04 14:47:35 · 2993 阅读 · 0 评论