java基础
cchengone
这个作者很懒,什么都没留下…
展开
-
Excel生成之java heap space异常
Excel生成之java heap space异常问题场景在使用poi操作,生成一个6w行,45列的excel的时候,老是报内存不够用(java heap space异常)。一开始以为是默认启动时,内存太小,就把堆内存调至2G,但是依然报内存不够用后来想,一个这个excel,大小最多就10m左右,数据量也不大,不应该占用这么多内存。因此,用jvm工具,看了下内存情况excel代码示例如下:使用的是XSSFWorkbook,去生成excelXSSFWorkbook xwb = new XSS原创 2020-07-07 17:21:00 · 3157 阅读 · 4 评论 -
HashMap的到底是有序还是无序
HashMap的到底是有序还是无序前提问题背景HashMap的一些特性问题分析结论再结论前提首先说明:HashMap不保证插入顺序,但是循环遍历时,输出顺序是不会改变的。代码说明:public class HashMapTest { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("aaa",原创 2020-06-27 11:18:54 · 35445 阅读 · 9 评论 -
maven构建ssm项目之pom文件配置(一)
Maven构建ssm项目之pom文件配置(一)本文主要讲述第一步,使用maven构建ssm项目,引用下载相关的jar包。1.maven在项目中扮演的角色初入门时,利用maven来构建项目,我们可以知道,在pom中配置了jar包依赖之后,maven可以自动将jar包从资源仓库中把jar包加到项目工程中来,其实maven还有其他很多的作用,比如管理项目间的依赖,管理版本发布,编译环境设置,编码设置等。在原创 2017-09-24 23:38:04 · 2187 阅读 · 0 评论 -
线程池ThreadPoolExecutor的使用以及理解
java线程池实现类ThreadPoolExecutorThreadPoolExecutor可以构造一个线程池,何为线程池,就是装了一堆线程的容器。这些线程可以用来执行任务。其实按道理讲,我们可以自己创建一个线程来执行自己的任务。那么为啥要用线程池呢,是因为线程池装了一堆已经创建好了的线程,不需要我们自己再去创建,这节省了创建线程的资源,也保障了线程的高效利用。ThreadPoolExcecutor原创 2017-09-29 16:56:01 · 1121 阅读 · 0 评论 -
Maven传递依赖的原则
maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,大部分情况下我们只需要关心项目的直接依赖是什么,而不永哥你考虑这些直接依赖会引入什么传递性依赖。但有时候,当歘地形依赖造成问题时,我们就需要清除知道该传递性依赖是从哪条依赖路径引入的。如下示例:1.依赖同一个jar包,深度不同:A->B->C->X(1.0) 依赖深度为3A->D->X(2.0) 依赖深度为2原创 2018-01-23 18:03:02 · 719 阅读 · 0 评论 -
Log4j日志详解
1.log4j的作用log4j用于系统的日志记录,系统日志统一交给log4j来管理,也减少手动输出日志的更多系统消耗2.log4j日志配置文件的说明2.1 日志级别定义log4j.rootLogger=[日志级别定义],eg:log4j.rootLogger=INFO说明:此参数为日志输出级别的定义,常用的选项有:DEBUG,INFO,WARN,ERROR。一般设置为:log4j.rootLogg...原创 2018-02-28 19:23:53 · 644 阅读 · 0 评论 -
记一次接口开发中遇到的非中文乱码
场景:node服务调用javaee服务的http接口遇到的问题:在开发环境中,node服务能正常获取到接口返回的json字符串;但是在测试环境中,发现node服务获取到的json字符串是乱码分析: 1.首先考虑到是测试环境机器编码不一致。但是排查之后,node服务的机器和java服务器编码均一致。 2.由于返回的json串都是英文字符,且乱码长得比较奇怪:���FM��&y�yA�ǑK...原创 2018-03-30 13:24:05 · 1808 阅读 · 1 评论 -
前后端交互,前端json参数不能实例化为对象的问题分析
1.问题:系统前后端以POST+json的方式进行交互,但是后端接口的入参对象一直无法实例化,日志中也未打出json转换的异常。 前端入参json如下: { "instruction": { "approveDecision": 1, "type": null, "subType": 2,...原创 2018-07-26 13:58:47 · 3754 阅读 · 0 评论 -
mysql查询两个时间段是否有交集
1.需求:查询两个时间段是否有交集2.分析:分为三种情况:入参:查询开始时间,查询结束时间数据库字段:start_date,end_date 2.1 :查询开始时间在start_date与end_date之间,则肯定有交集 2.2 :查询结束时间在start_date与end_date之间,则肯定有交集 2.3:查询开始时间>=start_date,...原创 2018-11-22 15:53:18 · 10332 阅读 · 4 评论 -
linux定时任务运行jar包
linux定时任务运行jar包目标方法cron表达式配置目标使用linux上的定时设置,定时运行jar包。我的需求是每天需要在机器上定时跑一个程序,自动去预订会议室,2333333…方法任意目录输入如下命令:crontab -e即可出现如下一个黑黢黢的界面说明:红线部分即为我想运行的命令,前面的cron表达式,意思是每天早上9点准时运行后面的一串命令编辑完成后,保存退出方式与v...原创 2019-07-19 14:38:44 · 2595 阅读 · 0 评论 -
java-反射(1)-通过反射改变对象的属性
java反射之对象属性操作原创 2017-01-08 20:34:37 · 10865 阅读 · 0 评论 -
java反射(二)-基于反射和注解的Excel解析工具Demo
基于反射和注解的Excel解析工具Demo原理反射的运用部分通过Class的Field,可以给对应Class的Field字段对应的属性设值注解的运用部分通过给实体类的属性加上注解,和Excel中的表头做关联,就可以在解析Excel的时候,更加灵活需要的poi的包需要依赖的解析Excel的jar包有: poi-3.10-FINAL.jar poi-ooxml-3.原创 2017-01-14 21:28:37 · 1827 阅读 · 0 评论 -
链式编程
链式编程所谓的链式编程,则是类似与StringBuffer的append方法的写法:StringBuffer buffer = new StringBuffer();// 链式编程buffer.append("aaa").append("bbb").append("ccc");如何实现那么问题来了,怎么实现这种炫酷的连写的代码呢? 其实很简单,那就是在方法的最后写上return this;原创 2016-12-15 21:48:43 · 4831 阅读 · 0 评论 -
Integer和int类型的判断
测试一下Integer(1)和int num=1是否相等以下为测试代码: publicstatic void main(String[] args) { Set selects= new HashSet selects.add(1);selects.add(2);selects.add(3);selects.add(4);原创 2016-07-28 12:18:06 · 3434 阅读 · 0 评论 -
线程的生命周期
1、如何创建一个线程 线程的生命周期的第一个阶段是创建阶段,线程是Thread.class实例的代表,因此,创建一个线程就是调用它的构造器。2、启动一个线程 一个线程在被构造出来的时候就已经存在了,也就是说当创建了一个线程实例的时候,该线程就已经存在了。只是这个时候它没有执行任何代码,这个线程是处于等待状态。 在线程处于等待状态的时候,其他线程可以调用它,处于等待状态中原创 2016-07-28 12:18:04 · 600 阅读 · 0 评论 -
java监听机制的原理-回调机制
在javame中,可以对一个Button添加一个鼠标点击事件,可以对一个文本框添加一个文本变化事件等等;在Android开发中,也有大量这种基于事件的处理。探究其基本原理,则是对方法的回调。具体的看下面简单的代码即可了解首先创建一个接口:TextListener,接口内有一个名叫exchute()的方法<span STYLE="font-size:10.0pt;font-famil原创 2016-07-28 12:18:02 · 7555 阅读 · 0 评论 -
动态改变类结构 & 动态…
需要的包:javassistpublic class JavassistDemo { // javassist asm public static void main(String[] args) throws Exception { ClassPool cp = ClassPool.getDefault(); Ct原创 2016-07-28 12:17:57 · 404 阅读 · 0 评论 -
ArrayList和LinkedList add的源码分析
ArrayList的add方法是在已存在的定长的集合中添加元素,当集合装满了,会在添加元素之前进行 扩容。LinkedList则是修改内部存的对象的引用关系,将之前的对象的引用赋给新的节点,作为新节点之前的元素;并且把最后一个元素的引用改为新的节点,并且更新列表的数量。原创 2016-08-10 17:00:26 · 3169 阅读 · 0 评论 -
List,Map,Stack,Queue,Set的遍历
本文主要介绍标题中5中集合的常规遍历方式1、List的遍历方式(两种) List list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.add("ee"); i原创 2016-09-20 22:13:04 · 525 阅读 · 0 评论 -
java基本上数据类型所占大小
基础知识:一个字节=8bit(8位)1、整数型: byte:1个字节,存储范围:-128~127 即:-(2^(1 * 8 - 1)+1) ~ 2^(1 * 8 - 1) short:2个字节,存储范围:-32768~32767 即:-2^(2 * 8 - 1) ~ (2^(2 * 8 - 1)-1) int:4个字节,存储范围:-2147483原创 2016-09-24 20:35:29 · 542 阅读 · 0 评论 -
jvm内存相关的知识总结
内存空间PC的内存由两部分组成:内核空间和用户空间。内核空间只由操作系统使用;用户空间由其他的进程,比如我们自己开发的应用来使用。io瓶颈由于网络请求、磁盘请求等接口,全都由操作系统提供,不能由我们自己的应用程序来直接操作,因此,每次网络请求发出去的数据都是先由用户空间复制到内核空间,再由操作系统底层发送出去;网络请求的数据也是先接收到内核空间,再赋值到应用程序可以操作的用户空间。这样虽然确保了整个原创 2016-12-05 23:22:46 · 403 阅读 · 0 评论 -
设计模式之责任链模式
责任链所谓的责任链 可以想象成一个去车站坐车回家,要回到家,首先得进车站买票,然后过安检,然后在检票上车,最后到家。 也就是说要达到一个目的,必须线性从完成某些动作。原创 2016-12-12 22:52:36 · 466 阅读 · 0 评论 -
用csv格式的文件代替poi导出xls文件
当导出的Excel文件对格式没有要求,并且是单一表头的时候,可以导出csv格式的文件,来代替xls文件好处:1、快 2、快 3、快 因为poi操作不仅涉及到单元格数据的处理,还涉及到单元格格式,单元格合并等等操作,因此,对于格式要求不多的Excel文件,并不合适,太重了。 而csv文件只是特定格式的文本文件,只是后缀是.csv的csv的数据格式:导出csv文件到底有多快:写的原创 2016-11-25 11:42:28 · 5725 阅读 · 0 评论 -
java之位运算基础
第一部分: /******************* 位运算基础 *******************/ // 右移运算 // 整数2对应的二进制为:0000 0000 0000 0000 0000 0000 0000 0010 // 二进制向右移动1个位置,左边自动补0,结果为0000 0000 0000 0000 0000 0000 0000 0原创 2016-07-28 00:12:11 · 617 阅读 · 0 评论