Java学习笔记
文章平均质量分 65
howroad
不会思考是可悲的,不懂知识是可怜的,自以为是是可怕的。
展开
-
通过velocity自定义模板字符串实现可配置的外部调用查询接口
背景公司的系统被其他很多行内系统调用,查询某一个实体信息但是由于安全管控,每个系统调用我们系统获得的字段是不一样的。目前有两种方案可以实施:1.利用行内的数仓系统,将表备份,然后通过数据交换平台sftp作业的方式,由我方通过自动任务上传,第三方拉取。这样对接系统调用链变长,数据是T+1到达没有时效性,每对接一个系统就要写一个针对该系统所需字段的逻辑,不易扩展。好处是直接用文件传输,行内数仓和调度系统实现,数据也有备份,不用扯皮,自动任务定时上传,读取流量压力在数仓和sftp平台。实际这种方法可.原创 2021-08-26 10:17:37 · 631 阅读 · 0 评论 -
利用Idea进行swing项目覆盖性简单测试
最近升级了2020版的idea,里面有个官方中文插件,身为英语小白的我果断尝试了一下,找找里面的好玩的功能。原来自己曾经写过一个生成代码的小工具,是基于swing的。https://github.com/howroad/cdwriter就测试一下这个小工具的代码覆盖率。众所周知,代码覆盖率是基于junit单元测试的,一般情况下需要写很多测试方法才可以测试覆盖率。本着能不写就不写...原创 2020-04-22 11:37:39 · 853 阅读 · 1 评论 -
java获得文件的方法整理
直接放结论:最佳实践:Class.class.getResourceAsStream()理由:可以得到各种各样的,而且还可以读取jar包里的文件。需要注意的是当用Class类的getResource或者getResourceAsStream的时候如果要取绝对路径,那么要加上“/”如果使用ClassLoader类的这两个同名的方法,那么不能加“/”! 返回 空参数 ...原创 2020-03-23 14:50:45 · 339 阅读 · 0 评论 -
基于XML的接口参数校验的一种方式
公司的接口又臭又长,同事提供了一个思路,采用xml进行不涉及业务的参数的校验。可以在excel上编辑,然后生成xml,校验器会自动对每个参数进行长度、数值、正则、必填等校验。解放双手,公司不怎么提倡创新,估计只有这一个项目会使用吧,不过有十几个接口,够用了。。。请求->Business->校验公共参数-》初始化校验器->校验非业务->校验业务。。。首先...原创 2020-03-21 18:16:23 · 1259 阅读 · 0 评论 -
正则只保留括号里的内容
场景:公司框架有一个前台导出功能,实际上是把HTML结构通过正则去掉一些没用的样式,然后由统一的工具导出。但是不支持列表为下拉的样式,比如这种:观察了工具:是这样的<%@page contentType="text/html;charset=GB2312"%><%@ page import="java.util.regex.*" %><jsp:u...原创 2020-03-04 17:19:01 · 1798 阅读 · 0 评论 -
可执行jar包中 自定义编译器 编译文件时报错:错误: 编码GBK的不可映射字符
自己写的jar,在idea或者其他ide上面运行正常,打成可执行jar包在windows下运行时报错。错误: 编码GBK的不可映射字符问题原因是编译时没有选择正确的编译参数,javac有几个参数 -encoding表示了编译的编码所以在编译器执行时应当指明成对应的编码。解决办法:如果是手动编译的 就在javac后面加上参数 -encoding UTF-8如果是使用自...原创 2020-02-20 15:35:37 · 740 阅读 · 0 评论 -
使用shade打包后报错Error: A JNI error has occurred, please check your installation and try again
命令行运行发现原因是因为我使用了一个包来检测文件的编码。<dependency> <groupId>org.apache.any23</groupId> <artifactId>apache-any23-encoding</artifactId> <version>1.1</versi...原创 2020-01-14 17:31:06 · 510 阅读 · 0 评论 -
单例模式的最佳实现
最近面试老是问道这个问题,我都是写的懒加载的,感觉不是很完美,效率比较低: 网上搜了一下:public class BestSingleton { private BestSingleton() {}//构造器私有化 //虚拟机加载类串行不会有线程安全问题,但是要保证构造成功才行 private static class SingletonLoder{ ...原创 2018-06-06 00:17:50 · 364 阅读 · 0 评论 -
Java种的强引用、软引用、弱引用和虚引用
Java种的强引用、软引用、弱引用和虚引用强引用:强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会...原创 2018-06-05 23:11:24 · 176 阅读 · 0 评论 -
Oracle执行impdp命令的时候报错ORA-12541: TNS: 无监听程序解决办法
impdp LUHAO_SMS/Luhao0701@192.168.20.100:152/N9 directory=TEST dumpfile=SMS.DMPDP logfile=sms.log remap_schema=nstcms2016:LUHAO_SMS transform=oid:n1.最终错误是端口号写错了哭死。。。。网上对于这种错误,解决办法无非就是以下几种1.重新...原创 2018-06-12 11:41:15 · 12461 阅读 · 0 评论 -
学习中遇到的错误和需要牢记的知识点(二)
在程序中书写注释不会影响程序的执行,可以在必要的地方多写一些注释。只会稍微影响编译效率接口方法被实现后,修饰符必须为public Java还实现了真数组,避免了覆盖数据的可能 程序设计语言中,数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,这样的数组称之为“真数组”。实现了真数组为Java语言健壮性的特点之一。 HashMap不能保证元素的顺序,HashMap能够将键设...原创 2018-05-27 21:46:37 · 389 阅读 · 0 评论 -
Maven搭建SSH+ApacheShiro步骤和Demo
1.maven web项目2.pom.xml(properties/java版本/servlet/tomcat/mysql/spring/hibernate/jstl/jackson)3.pom.xml->runas/项目update(如果出现目录不全的,重新选择一下java)1.Hibernate数据库 1.1实体准备(myeclipse逆向生成[生成完之后改一对多关系,加注解,时间类型微...原创 2018-06-03 17:26:05 · 446 阅读 · 0 评论 -
SpringMVC传递multiple类型select后台Controller的接收方法
前台代码: js代码: controller代码:原创 2018-05-15 16:04:03 · 4926 阅读 · 5 评论 -
Jquery+Tomcat实现文件上传到跨域服务器(无后台代码)
JQ+Tomcat实现文件上传到跨域服务器(无后台代码)快速搭建一个用于图片上传功能的服务器,有点安全问题,只适合自己玩一玩.1.配置Tomcat为可写状态conf/web.xml下,在该位置添加如下代码 <!--设置可写状态--> <init-param> <param-name>readonly</pa...原创 2018-05-21 22:52:12 · 1322 阅读 · 0 评论 -
J2EE架构复习
J2EE架构1.实际项目中项目存在的形式:1.1开发方式1.1.1后台代码和jsp代码一起部署在中间件(代码托管?)中,通过浏览器访问1.2前后端分离,做controller,提供资源地址,把前端想要的数据封装到json中,(HTML5很方便的打包成App)1.2架构方式1.2.1 单一系统1.2.2 微服务器开发(添加新功能,用分布式添加一个新系统){ ...原创 2018-05-25 18:16:44 · 820 阅读 · 0 评论 -
SpringBoot(一) 简介
spring boot(一)简介1.能简化spring全家桶的开发过程 2.编码,配置,部署,监控特性1.快速创建基于spring的应用程序 2.有个内嵌的tomcat,jetty服务器 3.提供了startPOM来简化Maven 4.自动配置spring,springMVC等 5.提供程序的健康检查 6.基本可以不适用xml,采用注解配置核心1.自...原创 2018-05-20 23:05:55 · 280 阅读 · 0 评论 -
Jersery的概念和简单使用(搭建Maven+Jersery)
Jersery的概念和简单使用(搭建Maven+Jersery)REST表述性状态转移(风格,设计方式,可以降低开发复杂度,提高系统的伸缩性) Representation State Transfer特点客户端-服务器 无状态的, 可缓存的, 分层的,原创 2018-04-29 21:23:55 · 1125 阅读 · 0 评论 -
eclipse启动报错returned exit code = 1
原因: system32文件夹在我装jdk1.7的时候默认复制了几个文件进去,我的环境变量默认找的是system32文件夹。 解决办法把system32中的java文件删掉!原创 2018-06-19 09:12:58 · 7666 阅读 · 0 评论 -
eclipse打印控制台日志
转载 2019-02-26 09:52:03 · 4497 阅读 · 0 评论 -
POI 2.5.1读取日期格式
日期也是数值类型,中文日期带年月日的,在HSSFDateUtil.isCellDateFormatted(cell)中读取不出来,所以手动判断 // 数值类型(取值用cell.getNumericCellValue() 或cell.getDateCellValue()) case HSSFCell.CELL_TYPE_NUMERIC: i...原创 2019-06-04 09:51:03 · 1042 阅读 · 0 评论 -
正则匹配数字逗号字符串,并转为Integer数组
RecordMould recordMould = buildRecordMould(); //获得逗号字符串 String sheetIds = CastUtil.toNotNullString(aims_recordmould_info.get("sheetList")); List<Integer> ids = n...原创 2019-05-31 18:18:21 · 1713 阅读 · 0 评论 -
Spring切面AOP目标类被多次代理导致通知被多次执行
1.首先写了一个环绕通知package com.nstc.aims.interceptor;import java.io.PrintStream;import java.lang.reflect.Method;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.Met...原创 2019-06-05 11:32:23 · 4548 阅读 · 1 评论 -
Oracle + Ibatis使用Blob二进制进行下载和使用文件流进行下载
数据库:使用BLOB存放二进制流,BLOB转换为java类型为byte[]DECLARE CNT INTEGER;BEGIN SELECT COUNT(0) INTO CNT FROM USER_ALL_TABLES WHERE TABLE_NAME = UPPER('G_ATTACH_BYTE'); IF CNT = 0 THEN EXECUTE ...原创 2019-05-30 19:03:20 · 492 阅读 · 0 评论 -
win7不打重复开相同的文件夹
在工作中经常遇到打开多个文件夹的情况,有时候一个文件夹打开多次会重复出现在任务栏中,给查找带来很大的阻碍,如图:圈出的都是被重复打开的文件夹解决方法:计算机——组织——文件夹选项——选择在不同窗口打开不同文件夹——确定经过测试,只有对用户自己点击才有效,使用eclipse等工具的快捷键alt + shift + w 等打开还是不管用。。。如图:烦!!!...原创 2019-05-30 18:06:08 · 4970 阅读 · 0 评论 -
IDEA 导出UML类图
设置成白色背景更方便截图。1.设置-Tools-Diagrams2.选择需要展示的类,注意不要选择包然后按crtl + shift + alt + u4.选择显示关系,这个关系只会显示选中的类的依赖...原创 2019-05-17 16:22:59 · 13647 阅读 · 0 评论 -
Maven添加本地jar包到仓库
原创 2019-04-26 09:26:29 · 179 阅读 · 0 评论 -
得到当前运行目录的几种方式
System.out.println(DBUtil.class.getClassLoader().getResource().getPath() + db.properties); System.out.println(Thread.currentThread().getContextClassLoader().getResource().toString());...原创 2019-04-01 09:34:03 · 1528 阅读 · 0 评论 -
MzTreeView1.0点击下级按钮默认选中上级修改,MzTreeView1.0获得选中的数据
公司有一个树状图控件是基于【梅花雪】的MzTreeView1.0实现的,而且使用的是比较老旧的版本。点击下级按钮默认选中上级修改,如图当选者下级单位的时候上级单位自动被勾选了。解决方法:全部代码://点击树的子节点MzTreeView.prototype.checkChild = function(id){ this.selChild(id); var node...原创 2019-03-13 17:01:28 · 326 阅读 · 0 评论 -
获取jar包内的文件夹内的文件
jar包内的文件不能通过绝对路径获取。经过查找资料我使用如下方式解决:总结就是先获得jar包的绝对路径,然后得到所有的JarEntry(必须要加过滤条件,引用的jar包的文件也在这里面),然后通过InputStream is = WriteUtil.class.getClassLoader().getResourceAsStream(jarEntry.getName());获得文件输出...原创 2019-03-14 15:59:20 · 4889 阅读 · 0 评论 -
反射修改不可变集合UnmodifiableList
项目中会返回不可改变的List值,对他进行操作会报错:例如 List<Student> list = new ArrayList<Student>(); list.add(new Student()); list = Collections.unmodifiableList(list); System.out...原创 2019-02-26 16:12:18 · 2442 阅读 · 2 评论 -
MyBatis查询List结果丢失(Mysql中OrderBy和limit混用导致)
最近做项目遇到持久层使用MyBatis查询时,出现查询的结果在log4g日志中显示是5条,但是在List中取出的时候只有一条的情况,SQL语句没有问题.问题原因: 1.首先检查是否是多表联查时主键重复了2.值得注意的是Mysql中limit和orderBy一起用由于Mysql的优化的原因会导致查询结果有问题详细见:https://blog.csdn.net/qiubabin/article/d...原创 2018-04-10 21:40:43 · 2718 阅读 · 0 评论 -
SpringMVC拦截器中获得Controller方法名和注解信息(用于验证权限)
在使用SpringMVC进行项目的时候用到了权限验证。 表分为: 用户表; 角色表; 资源表。 用户-角色-资源都是多对多的关系,验证无非就是收到请求后,在拦截器循环判断用户是否有权限执行操作。方法一:通过request获得用户的URI,再逐一循环判断是否可以操作。只是这种方法很让人难受。方法二:通过用户要访问的方法来判断是否有权限:preHandle方法中handl...原创 2018-05-07 00:16:10 · 29951 阅读 · 3 评论 -
Spring知识点(二) 面向切面AOP
AOP概念AOP aspect Oriented Program 面向切面(方面)编程采取横向抽取机制,取代传统的纵向继承体系重复性代码,一般实现:性能监控,事务管理,安全检查,缓存等功能原理对于扩展功能来说原来:修改源代码后来:纵向抽取机制,继承BaseClass,调用super方法()再后来:横向抽取机制底层:动态代理方式实现 :使用动态代理创建接口的*实现类的代理对象*(一个对象能实现原创 2018-04-16 00:42:14 · 292 阅读 · 0 评论 -
Log4J简单使用:INFO和DEBUG
Log4J介绍通过log4j可以看到程序运行过程中一些更详细的信息(1)经常log4j查看日志使用1.导入jar包2.复制log4J的配置文件,复制到src中#rootLogger日志级别,有INFO/DEBUGlog4j.rootLogger=DEBUG,Consolelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j原创 2018-04-16 00:34:42 · 10166 阅读 · 0 评论 -
Java中代理的三种方式
1.静态代理2.JDK动态代理3.cjlib动态代理参考:https://blog.csdn.net/yangsnow_rain_wind/article/details/79291256原创 2018-04-16 00:22:18 · 232 阅读 · 0 评论 -
Spring知识点(一) 控制反转IoC
概述开源/轻量级/分层式/一站式full-statck框架一站式:为三层架构(UIL,BLL,DAL)的每一层都提供了解决问题的全家桶技术 表示(界面)层:SpringMVC 业务层:SpringIoC 数据访问层:Spring jdbcTemplate核心1.AOP Aspect Oriented Programming 面向切面,扩展功能2.IoC Inve原创 2018-04-15 19:54:21 · 277 阅读 · 0 评论 -
XX Can not be resolved to a type 解决办法
原因:项目环境冲突,一般是两个电脑环境不同导致的针对我自己的比较熟悉的项目,解决办法如下0.properties->projectFacets->找到那个Runtimes->选择本地的1.把所有的Libray删除2.重新添加注意:最好把servcer也重新导入一下new server的时候在 configure runtime environment中remove不需要的Libr...原创 2018-04-01 16:28:46 · 4745 阅读 · 0 评论 -
TryCatch中Finally和Return的顺序
Finally和Return的顺序首先finally中写return会覆盖try或者catch中的其他的return,而且finally中出现return是非常不健康的写法.(java9中会提示黄色感叹号)try或者catch中没有return1.try2.catch3.finallycatch中有return1.try2.catch3.执行catch中的retu...原创 2018-03-14 00:25:47 · 579 阅读 · 0 评论 -
Java反射整理
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2018-03-11 15:05:00 · 315 阅读 · 0 评论 -
利用反射书写的Dao层抽象父类,用于解决简单的查询和修改.
dao层实现类继承该抽象类,可以将简单的查询修改代码简化.例如:/** * @author howroad * @Date 2018年3月15日 * @version 1.0 */public class UserDaoImpl extends ABaseDao<UserBean> implements IUserDao{ @Override public int add...原创 2018-03-16 01:09:00 · 593 阅读 · 0 评论