Java
文章平均质量分 82
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征
独步秋风
这个作者很懒,什么都没留下…
展开
-
java堆栈常用排查指令
java 异常排查四板斧1、查看java 堆栈线程信息说明jstack命令打印指定Java进程、核心文件或远程调试服务器的Java线程的Java堆栈跟踪信息。对于每个Java框架,完整的类名,方法名,字节码索引(BCI)和行号(如果有的话)被打印出来。使用-m选项,jstack命令打印程序中所有线程的Java和本机帧计数器(PC)。对于每个本机帧,当可用时,将打印离PC最近的本机符号。c++乱码的名字不会被修改。要demangle c++名称,输出这个命令可以管道到c++filt。当原创 2021-04-19 16:45:53 · 2595 阅读 · 0 评论 -
OutOfMemoryError内存不足排查
目录问题追溯问题预览问题排查导出堆内存信息MAT工具分析问题追溯发下现场的java服务一天会down掉一次,查看日志发现是内存不足,截取部分日志如下Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2367)...原创 2019-04-09 19:42:31 · 2738 阅读 · 0 评论 -
记录一下工作中的ClassNotFoundException
idea启服务时,发现服务启不来。首先是确定了更新svn的配置文件,再次启动服务发现还是报同样的错误。下面把报错日志完整的截出来,也整理一下自己为什么分析时走了弯路。下面是报错日志信息:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'a...原创 2019-01-24 14:17:43 · 302 阅读 · 0 评论 -
JUnit报错:java.lang.ClassNotFoundException: com.mogodb.test.test
最近在使用JUnit做单元测试时,发现新写好的测试类运行总是出错,报找不到类异常。Class not found com.mogodb.test.testjava.lang.ClassNotFoundException: com.mogodb.test.test at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at ja...转载 2018-01-07 12:30:37 · 1646 阅读 · 0 评论 -
使用swagger作为restful api的doc文档生成
本文作者:@Ryan Miao本文链接:http://www.cnblogs.com/woshimrf/p/swagger.html版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!目录初衷swagger介绍在dropwizard中使用在spring-boot中使用配置4.设定访问API doc的路由6. 设置在生产环境关闭swagger参考...转载 2018-05-17 14:48:45 · 373 阅读 · 0 评论 -
java获取系统时间和mysql数据库时间相差14小时
前言mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。问题现象java应用程序获取当前时间new Date() 存储数据库时,和系统时间相差14小时。问题分析1、服务器时间不同步使用命令:date,查看linux服务器时间[root@abc ~]# dateSat Mar 7 18:43:30 CST 2020服务器的机器时间没有问题2、程序问题uLog.setLogTime(new Date());程序是使原创 2020-11-12 15:51:47 · 1228 阅读 · 0 评论 -
java实现接口导出csv文件
业务介绍项目要求从数据库中查询出相关数据后,通过表格展示给用户,如果用户需要,可以点击导出按钮,导出数据为csv格式。开发环境:JDK7、Tomcat7、SpringBoot网页中的表格下载后的表格业务流程1、数据库查询数据2、创建临时csv文件3、输出csv流文件,提供给浏览器下载4、删除临时文件完整代码测试地址:127.0.0.1:8080/exportpom文件添加以下依赖 <dependency> <gr转载 2020-11-04 14:32:47 · 1578 阅读 · 0 评论 -
Centos线上性能定位
定位工具 topPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND31558 admin 15 0 5351m 4.0g 49m S 12.2 54.0 10:08.31 java31561 admin 15 0 5351m 4.0g 49m R 12.2 54.0 9:45.43 java31626 admin 15 0 5351m 4.0g 49m S 11.9 54.0 13:50.21 java31559 admin 15 0 5原创 2020-09-19 16:21:34 · 205 阅读 · 0 评论 -
Jackson快速入门
Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。引入类库由于Jackson相关类库按照功能分为几个相对独立的,所以需要同时引入多个类库,为了方便我将版本号单独提取出来设置,相关Gradle配置如下。ext { jacksonVersion = '2.9.5'}dependencies { compile group: '...转载 2020-08-26 17:00:10 · 551 阅读 · 0 评论 -
测试一下ConcurrentHashMap的性能
ConcurrentHashMap是线程安全的,HashTable也是线程安全,HashMap是非线程安全的,不过可以通过Collections封装成线程安全的,下面做个试验来验证下,三个集合在开启四个线程,每个线程对其进行50w次的操作,比较下会消耗多少时间。@Testpublic void givenMaps_whenGetPut500KTimes_thenConcurrentMapFaster() throws Exception { Map<.原创 2020-08-17 21:37:11 · 882 阅读 · 0 评论 -
JSch-用java实现服务器远程操作
介绍前段时间接了一个比较特殊的需求,需要做一个用于部署服务的服务。主要是将一个k8s服务集群部署到远端的服务器上,具体服务器的连接信息会通过接口传入。本来部署是人工来完成的,无非是将一些必须的文件scp到目标服务器上,然后ssh远程登录,执行一些安装的操作,齐活。安装的流程没什么问题,主要是这些步骤需要使用代码来实现,也就是需要一个支持SSH的client库来执行这些操作最终选用了JSch(Java Secure Channel),官网介绍:JSch is a pure Java imple转载 2020-08-17 11:07:29 · 2225 阅读 · 0 评论 -
java文件相关(文件追加内容、文件内容清空、文件内容读取)
1、文件内容追加 // 在已有的文件后面追加信息 public static void appendInfoToFile(String fileName, String info) { File file =new File(fileName); try { if(!file.exists()){ file.createNewFile(); } File...转载 2020-07-17 14:59:29 · 1306 阅读 · 0 评论 -
Java -jar 如何在后台运行项目
说到运行jar包通常我们都会以下面的方式运行:[root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# java -jar babyshark-0.0.1-SNAPSHOT.jar这样运行的话会有一个问题,就是我们一关闭当前窗口就会停止运行项目,要想解决这个问题,就需要在后台运行。[root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# nohup java -jar babyshark-0.0.1-SNAPSHOT.jar > log...转载 2020-07-16 19:06:10 · 1205 阅读 · 0 评论 -
java的try后面跟括号
从jdk1.7之后,可以不需要写finally块来关闭资源,因为新增了一个接口AutoCloseable,该接口只有一个方法close()就是用来是关闭资源的,例如文件或者套接字资源,默认的是抛出Exception异常。API对AutoClose接口的解释:可以保存资源的对象(如文件或套接字句柄),直到它关闭。 AutoCloseable对象的close()方法在退出已在资源规范头中声明对象的try -with-resources块时自动调用。 这种结构确保迅速释放,避免资源耗尽异常和可...原创 2020-07-12 17:00:28 · 1070 阅读 · 0 评论 -
Java8 - Map更优雅的迭代方式:forEach
forEach方法介绍defaultvoidforEach(BiConsumer<? super K,? super V>action)对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。除非实现类另有指定,否则按照进入设置迭代的顺序执行操作(如果指定了迭代顺序)。操作引发的异常被转发给调用者。实现要求:默认实现相当于,对于这个map:...原创 2020-04-29 15:44:28 · 1108 阅读 · 0 评论 -
Spring @Scheduled定时任务动态修改cron参数
一种方法是需要重启服务通过占位符动态注入 @Scheduled(cron = "${zcm.monitor.clean-Alarm-Event-Cron}") @Transactional(rollbackFor = Exception.class) public void alarmEventScheduleClean() { logger.info("A...原创 2020-02-20 11:55:53 · 1491 阅读 · 0 评论 -
Quartz Cron表达式 每周、每月执行一次
1.每周一上午10点15分执行任务0 15 10 ? * MON2.每月10号9点15分钟执行任务0 15 9 10 * ?其它规则附录表表示式 说明0 0 12 * * ? 每天12点运行0 15 10 ? * * 每天10:15运行0 15 10 * * ? 每天10:15运行0 15 10 * * ? * 每天10:15运行0 15 10 * * ? ...转载 2020-02-20 11:29:23 · 26296 阅读 · 2 评论 -
ChannelShell和服务端交互并获取服务端执行结果
背景:有一个中间件安装时需要检测服务器上jdk的版本,若版本非1.8或者没有安装则给出提示,写一个用ChannelExec写了一个工具类,但是拿不到服务端的执行结果,查了下资料需要使用ChannelShell,在这里做下记录。通过ChannelShell在服务端执行命令,一直没有返回结果的主要原因是,最后执行exit命令,也就是说在你执行你想执行完你要执行的命令后需要加上exit命令,服务...原创 2019-10-16 20:19:28 · 5247 阅读 · 0 评论 -
MD5加密算法的工具类
package util;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import Decoder.BASE64Encoder;//需要引入sun.misc.BASE64Decod原创 2016-08-31 22:21:38 · 400 阅读 · 0 评论 -
Java多线程之~~~~使用wait和notify实现生产者消费者模型
在多线程开发中,最经典的一个模型就是生产者消费者模型,他们有一个缓冲区,缓冲区有最大限制,当缓冲区满的时候,生产者是不能将产品放入到缓冲区里面的,当然,当缓冲区是空的时候,消费者也不能从中拿出来产品,这就涉及到了在多线程中的条件判断,Java为了实现这些功能,提供了wait和notify方法,他们可以在线程不满足要求的时候让线程让出来资源等待,当有资源的时候再notify他们让他们继续工作,下面我...转载 2016-11-07 23:49:00 · 438 阅读 · 0 评论 -
Java 枚举(enum) 详解7种常见的用法
JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。大师兄我又加上自己的理解,来帮助各位理解一下。用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 Java代码 public enum Color { ...转载 2018-04-10 19:27:23 · 304 阅读 · 0 评论 -
Java中Array与ArrayList的主要区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”。2)Array([]):最高效;但是其容量固定且无法动态改变; ArrayList: 容量可动态增长;但牺牲效率;3)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!不过当你试着解决更一般化的问题时,Array的功能就可能过于受限。4)Java中一切皆对象,Arr...转载 2016-11-08 09:58:37 · 252 阅读 · 0 评论 -
HashMap和Hashtable的区别
导读:1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。 2 HashTable是线程安全的一个Collection。 HashMap是Hashtable的轻量级实现(非线程安...转载 2016-11-04 23:19:49 · 246 阅读 · 0 评论 -
java中thread的start()和run()的区别
1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止, 而CPU再运行...转载 2016-11-07 23:45:13 · 423 阅读 · 0 评论 -
java线程中yield(),sleep(),wait()区别详解
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完毕后,...转载 2017-08-21 19:04:04 · 315 阅读 · 0 评论 -
JS和JSP的区别
SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。JSP全名为Java Server Pages,其根本是一个简化的Servlet设计,他实现了Html语...转载 2017-09-19 21:37:14 · 502 阅读 · 0 评论 -
Java多线程之死锁的出现和解决方法
什么是死锁?死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不能正常运行.形象的说就是:一个宝藏需要两把钥匙来打开,同时间正好来了两个人,他们一人一把钥匙,但是双方都再等着对方能交出钥匙来打开宝藏,谁都没释放自己的那把钥匙.就这样这俩人一直僵持下去,直到开发人员发现这个局面.导致死锁的根源在于不适当地运用“synchronized...转载 2018-02-28 20:04:55 · 3204 阅读 · 0 评论 -
Spring注解@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowired@Autowire转载 2018-02-07 15:35:26 · 219 阅读 · 0 评论 -
JDBC的概念和使用步骤
概念:JDBC(Java DataBase Connectivity)是一种数据库连接技术,能实现Java程序对各种数据库的访问。由一组使用Java语言编写的类和接口(JDBC API)组成,他们位于java.sql以及javax.sql中。作用: 1.建立与数据库的访问连接。 2.将编写好的SQL语句发送到数据库执行。 3.对数据库返回的执行结果进行处理。JD原创 2018-01-28 10:08:28 · 219 阅读 · 0 评论 -
单元测试系列:Mock工具之Mockito实战
原文链接:http://www.cnblogs.com/zishi/p/6780719.html在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行。为了解决这类问题我们引入了Mock的概念,简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用。业内的Mock工具...转载 2018-04-24 09:12:55 · 2197 阅读 · 0 评论 -
深入浅出parallelStream
about Stream什么是流? Stream是java8中新增加的一个特性,被java猿统称为流. Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 ...转载 2018-04-24 10:18:08 · 703 阅读 · 0 评论 -
java 深入了解DTO及如何使用DTO
这篇文章主要来谈论一下DTO使用的场合及其带来的好处。首先要理解DTO是什么?DTO就是数据传输对象(Data Transfer Object)的缩写。 DTO模式,是指将数据封装成普通的JavaBeans,在J2EE多个层次之间传输。 DTO类似信使,是同步系统中的Message。 该J...转载 2018-04-24 12:49:16 · 1336 阅读 · 0 评论 -
Druid 介绍及配置
1. Druid是什么?Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。2. 在哪里下载druid正式版本下载: maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 3. 怎么获取Druid的源码Druid是一个开源项目,源码托管在github上,源代码仓库地址是 ht...转载 2019-01-23 13:56:51 · 346 阅读 · 0 评论 -
windows关闭java进程
taskkill /F /IM java.exe原创 2018-05-30 10:20:57 · 11052 阅读 · 0 评论 -
Java中的Properties操作
一、Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。像Python支持的配置文件是.ini文件,同样,它也有自己读取配置文件的类ConfigParse...转载 2018-05-24 16:20:43 · 959 阅读 · 0 评论 -
正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要特性:互斥(...转载 2018-05-23 16:49:09 · 169 阅读 · 0 评论 -
java的(PO,VO,TO,BO,DAO,POJO)解释
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。 VO,值对象(Value Object),PO,持久对象(Persisent Objec...转载 2018-05-25 14:47:23 · 161 阅读 · 0 评论 -
Java8 利用Lambda处理List集合
Java 8新增的Lambda表达式,我们可以很方便地并行操作大集合,刚刚接触java8,Lambda还是挺好用的,目前接触的也不多,给大家举几个例子1、利用stream().forEach()循环处理List;[java] view plain copyList<String> list = Lists.newArrayList();//新建一个List 用的google提供的Gua...转载 2018-05-18 16:25:32 · 1395 阅读 · 0 评论 -
多态中变量和方法的一些思考
今天下午,同事之间讨论面试时都是遇到了一些什么题目,有一个题目挺有趣的,不忍就让这个小知识点就这么溜走了,好记性不如。。不如写博客,嘿嘿。好的,闲话少说。交代一下问题的背景说的是,父类和子类有相同的变量和方法,那么如在 Father father = new Son(); 中父类的应用father调用变量和方法分别调用的哪个变量和方法?有点绕。。??那直接上代码父类public class Fa...原创 2018-05-17 23:41:36 · 695 阅读 · 1 评论 -
Java抽象类 详解
一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还...转载 2018-04-27 11:12:52 · 175 阅读 · 0 评论