
java开发的点点滴滴
既然必须穿越地狱,那就走下去吧
这个作者很懒,什么都没留下…
展开
-
自定义注解+切面处理+全局异常处理
1、注解方法/** * 自定义注解签名参数验证 * xuxx */@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface ParamValidate { String value() default "";}2、切面处理类import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Asp原创 2022-03-01 15:13:19 · 1030 阅读 · 0 评论 -
springboot集成poi4.0开发导出word文件文件中包括表格和图表
项目中多多少少会用到导出word这样便于导出后进行细微的手动修改。目前我没找到一款插件可以引入直接导出word、直接用最原始的方法poi导出word根据模板方法,这个导出需要用4.0以上版本才可以。1、项目中引入依赖我的项目用的jdk1.8 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifact原创 2021-10-23 11:33:37 · 2226 阅读 · 2 评论 -
springboot集成netty开发服务端和客户端
maven里面引入netty依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.51.Final</version></dependency>创建NettyServer类package com.NettyServer.service;import原创 2021-05-15 09:53:04 · 1690 阅读 · 0 评论 -
@Transactional注解不生效 宁静的猫
1、在同一个类中,没有@Transactional注解的方法去调用有@Transactional注解2、@Transactional注解修饰的方法不是public的3、抛出的异常为checked类型但今天比较倒霉了,@Transactional失效,都不是以上3个原因。还原一下当时的情形:配置文件application.properties:spring.dataso...转载 2019-12-18 10:42:38 · 317 阅读 · 0 评论 -
spring boot 集成图形数据库Neo4j
一、安装Neo4j图数据库我下载的是免安装zip版本的1、解压ZIP包数据2、配置环境变量 创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。win10系统环境变量设置步骤NEO4J_HOME = F:\neo4j- community-3.4.0 -- 根据自己的具体情况、Path = %NEO4J_HOME%\bin3、验证N...原创 2019-12-12 15:03:34 · 1086 阅读 · 0 评论 -
Oracle分页查询语句
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 2、SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_N...转载 2018-06-25 09:27:08 · 368 阅读 · 0 评论 -
Java NIO和IO的主要区别
转载 2018-07-10 16:11:25 · 208 阅读 · 0 评论 -
TCP的三次握手过程
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers)第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(sy...转载 2018-07-20 08:21:07 · 189 阅读 · 0 评论 -
Quartz和Timer两种定时器
1:Quartz:需要引入jar包quartz-2.2.3.jar、quartz-jobs-2.2.3.jar一、首先在spring中配置 <!-- 定义调用的对象及对象中的方法 --> <bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJo...原创 2018-07-27 11:41:48 · 450 阅读 · 0 评论 -
Java Socket 编程原理及教程
对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端...转载 2018-08-03 15:39:14 · 606 阅读 · 0 评论 -
response 返回json字符串
List<HashMap<String, Object>> mapList= new ArrayList<HashMap<String, Object>>(); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;char...原创 2018-08-23 09:15:22 · 9080 阅读 · 0 评论 -
response详解
List<Map<String, Object>> mapList = this.onlineUserService.getFlowDetail(User); response.setCharacterEncoding("UTF-8"); response.setContentType("appli...原创 2018-08-23 09:31:13 · 1906 阅读 · 0 评论 -
导入myeclipse之后jre显示的不是本机安装的jre怎么修改呢
解决方案:在configure build path 中去掉 jre system library,然后重新加载add library 选着jre system library 最后选择workspace default jre(xxxxxx)原创 2018-04-17 09:47:41 · 357 阅读 · 0 评论 -
JSTL、EL、ONGL、Struts标签的区别与使用
作者写的不错总结的很到位点击打开链接转载 2018-03-27 13:37:35 · 155 阅读 · 0 评论 -
安装JDK是为什么有两个JRE
为什么我们在安装了JDK之后,在安装目录中会有两个版本的jre文件呢?之中一个jre文件在JDK的外部,一个jre文件在JDK内部,这就是所谓的专用JRE和公用JRE专用 JRE安装 JDK 时,会安装一个专用 JRE,并且您可以选择安装一个公共副本。需要专用 JRE 才能运行 JDK 中包含的工具。专用 JRE 没有注册表设置,并且完全包含在仅对 JDK 已知的 Java 目录位置(通常位于 C...转载 2018-03-30 15:49:24 · 1732 阅读 · 0 评论 -
String类型的json数据转化为map对象
String orgNos=[{"name":"JSON","address":"北京市西城区","age":25},{"name":"JSON","address":"北京市西城区","age":25}] Map map =null; if(G4Utils.isNotEmpty(orgNos)){ JSONArray jsonArray=JSONArray.fromObject原创 2018-01-11 14:14:20 · 8220 阅读 · 0 评论 -
java中的main方法,为什么是静态(static)的?
回答这个问题就要理解static关键字了:static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。静态方法可以直接通过类名调用,任何的实例也都可以调用。因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变原创 2018-01-05 21:49:43 · 7044 阅读 · 1 评论 -
springBoot、 springCloud 学习资料
比较好的学习资料转载 2018-01-07 09:36:39 · 293 阅读 · 0 评论 -
在启动Timer类的定时任务时出现run出现执行两次及解决方案
1、在web.xml里面配置一个listener com.xxxListener 2、配置监听类public class xxxListener implements ServletContextListener { private Timer timer = null; //半个小时执行一次 private static long L原创 2018-01-16 17:28:38 · 1418 阅读 · 0 评论 -
List在删除对象时注意下标问题
删除下标时一定要确保下标的类型是int类型,若是Integer类型,List会默认匹配remove(Object o)方法,而不是remove(int index)方法。这是一个在上一个项目中遇到的问题。原创 2018-01-17 18:13:27 · 1618 阅读 · 0 评论 -
HTTP之HttpURLConnection与HttpClient客户端访问解析
点击打开链接转载 2018-03-09 14:34:38 · 224 阅读 · 0 评论 -
web service(SOAP)与HTTP接口的区别
web service(SOAP)与HTTP接口的区别什么是web service? soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: text/xml任何数据都可以xml化。为什么要学习web service? 大多数对外接口会实现web service方法而不是http方法,如果你不会,那就没有办法对接。web service相对ht...原创 2018-03-19 09:53:27 · 657 阅读 · 0 评论 -
easyui与bootstrap
jquery easyui是偏向于js框架,功能强大,但ui界面没bootstrap那么美观;bootstrap是偏向于css框架,但它在js组件方面还不够强大,如果配合熟练的js技能,bootstrap是个不错的选择。...原创 2018-03-19 10:43:18 · 938 阅读 · 0 评论 -
Oracle 数据 类型
1、NUMBER实际使用中经常引起记忆混乱的就是Number(p,s)定义中的第一个数字是有效数字位数还是整数部分的位数。Number可以通过如下格式来指定:Field_NAME Number(precision ,scale),其中precision指Number可以存储的最大数字长度(不包括左右两边的0),scale指在小数点右边的最大数字长度(包括左侧0)。也就是说,Number(p...原创 2018-08-23 14:13:10 · 518 阅读 · 0 评论 -
怎么修改tomcat端口
在server.xml文件中依次查找并修改端口号:<Server port="8005" shutdown="SHUTDOWN"><Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/><Connector connectionTimeout="20原创 2018-09-04 10:27:33 · 4367 阅读 · 0 评论 -
spring boot 集成Quartz实现动态调度任务
1、首先引入jar包在maven中: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3...原创 2019-07-22 22:16:51 · 741 阅读 · 0 评论 -
经验:以后看到这种Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;类型的报错,显然要考虑依赖出错了
经验:以后看到这种Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;类型的报错,显然要考虑依赖出错了原创 2019-07-24 14:39:10 · 6050 阅读 · 0 评论 -
一个任务分解成多个子任务每个子任务分配一个线程处理(多线程处理一批大数据)
1、首先需要理解CountDownLatch:CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDownLatch的作用也是如此,在构造CountDownLatch的时候需要传入一个整数n,在这个整数“倒数”到0之前,主线程需要等待在门口,而这个“倒数”过程则是由各个执行线程...原创 2019-07-17 10:52:25 · 5741 阅读 · 0 评论 -
jdk8的stream去重函数distinct()以及自定义根据某个实体属性名称去重函数
以前我们要对某个list去重咱们想起来的肯定是先去循环这个list然后在新开一个list没次新加入元素到新建的list里面的时候、都要先判断一下新的list里面是不是已经加入这个元素了、这就非常麻烦了。jdk8开始出现了对集合操作的流stream,自带了多种方法。1、对某个字符串经过拆分然后对拆分后的元素去重。String data = "A/B/B/D/C"; List<...原创 2019-07-19 09:38:33 · 25839 阅读 · 6 评论 -
在spring boot项目中使用Spring Boot Jpa 通过Druid配置多数据源、文章末尾对比Hakari连接池。
Spring Boot Jpa 介绍首先了解 Jpa 是什么?Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术,结束现在 Hibernate,TopLink,JDO 等 ORM 框架各自为营...原创 2019-06-12 09:48:51 · 1371 阅读 · 0 评论 -
Java反射 - 简单的给Bean赋值和取值、利用注解标注Bean属性字段根据顺序赋值
由于项目的实际需要,所以利用java反射原理写了一个简单给bean赋值和取值通用的类,项目中用到了读取excel、然后存到数据库表里面。但是根据excel的列序号读取出来然后在一个一个对应实体里面的字段、特别是一个excel有一百多个字段后期用户在中间添加删除字段真的把人搞晕了。然后我就想了一下能不能用自定义注解给实体的每个属性注解上序号然后读取excel里面的数据之后根据实体属性注解序号与exc...原创 2019-06-04 11:57:42 · 3031 阅读 · 0 评论 -
SpringBoot 使用Swagger2建造在线接口文档
相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。手写Api文档的几个痛点:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。 接口返回结果不明确 不能直接在线测试接口,通常需要使用工具,比如postman 接口文档太多,不好管理Swagger也...原创 2019-06-02 21:40:15 · 202 阅读 · 0 评论 -
TortoiseGit拉取gitlab分支项目步骤
备注:前提本地电脑要先安装好Git一、初始化:1、在电脑上新建一个文件夹,进去!!!2、右键-Git Bash Here3、输入命令(建本地仓库): git init git add .(注意后面的“.”)4、右键-TortoiseGit-Settings:Git-RemoteURL中输入从Git网页上拿到的项目url点击“Add New/Save”...原创 2019-05-31 10:54:27 · 22272 阅读 · 0 评论 -
idea根据数据库表生成实体model
最近项目中用的hibernate生成实体但是每个表的字段高达100多个、创建实体着实麻烦啊最后在网上找了一下可以用idea直接读取数据库表里面字段生成带注解的实体model。1、先在idea中连接到数据库。2、在模块中添加hibernate3、然后项目在idea的左下角就会出现这个4、点击persistence5、选择需要生成实体的表6、到此生...原创 2019-05-31 10:28:02 · 3736 阅读 · 0 评论 -
在用Idea开发是部署到tomcat是会有war和war exploded这两个到底有什么区别呢
war模式:将WEB工程以包的形式上传到服务器 ;war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这...原创 2019-04-27 22:10:08 · 2598 阅读 · 0 评论 -
在用idea打开Eclipse建的SpringBoot项目,无法通过pom.xml引入jar包问题解决
问题:正确的是在external Libraries 会有pom配置的引入jar的信息,但是现在在这个地方找不到引入的jar包所以这就出问题了,运行项目就会报错找不到对应jar问题。解决方法:出现这种问题最主要的问题的就是导入项目的姿势不对、只要我们换个姿势导入项目就行了。记住IDEA导入已有的maven项目是直接打开项目 【file-open】而换成eclipse是import...原创 2019-04-27 21:57:55 · 2681 阅读 · 1 评论 -
Spring boot 的两种打包方式(war,jar)及启动方式
一 如果我们打包成jar包不管是window还是linux启动方式都是一样的1、在pom.xml修改 <groupId>com.xxx</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packagi...原创 2019-02-22 16:38:59 · 3382 阅读 · 1 评论 -
获取指定长度的随机字符串
/** * 获取指定长度的随机字符串 * * @param length 指定长度 * @return 随机字符串 */ public static String getRandomStr(int length) { // final String key = "0123456789"; final St...原创 2018-12-28 13:11:35 · 484 阅读 · 0 评论 -
通过request获取请求的真实ip
/** * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, * <p> * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢? * 答案是取X-Forwarded-For中第一...转载 2018-12-26 15:58:31 · 4267 阅读 · 0 评论 -
杂谈Properties类读取配置信息
public class testProperties{private static Map<String, Object> configMap = new HashMap<String, Object>(); static { Properties pro = new Properties(); try { ...原创 2018-12-20 13:50:52 · 172 阅读 · 0 评论