Java
文章平均质量分 70
航迹者
你好,我是发哥,一位专注于编程开发的技术爱好者,我致力于通过博客CSDN和公众号《航迹者》,与广大读者分享我的技术见解和开发经验。联系我:CSDN、公众号《航迹者》,wx:AiHangjizhe。我的专业领域涵盖了Java、SpringBoot框架、数据库管理、架构设计、中间件等关键技术。我喜欢探索新技术、解决复杂问题,并将我的实践经验转化为易于理解和实施的指南。
展开
-
Java通用解析Excel文件数据库配置化自动批量存储数据库
easy Excel 通用解析 excel 方案。数据库配置解析规则,可配置解析sheet名称(包含、正则),配置解析表头还是index索引方式。表头名称支持多个key匹配一个表头。自动格式转换,支持时间,字符串等。配置入库规则,设置数据库插入语句,可自定义,可实现ON DUPLICATE KEY或者replace等高级功能,通过index对应索引即可。配置Kafka-topic主题配置自定义过滤Java代码配置自定义业务boMap。原创 2023-05-17 20:28:17 · 429 阅读 · 0 评论 -
ThreadLocal案例和认识
2021年7月29日这几天是我离阿里最近的时候,因为收到了阿里本部的面试机会,技术面3轮 最后还有一个hr面.我也发现了几个问题:首先: 日常工作中没有准备过自己的简历其次: 日常并没有准备面试题以及没有深入了解Java中常用框架的源码和原理等最后: 查看网上一些人分析一面的面试题,我9成都不能回答出来,自我感觉: 简历很难看,阿里还是挺友好的,还是给了我一次面试的机会,最终结果一面也没有过去.加油吧!给自己几个告诫: 记得要经常稳固自己用的东西和深入理解并记录笔记!原创 2021-07-29 13:20:25 · 253 阅读 · 0 评论 -
maven项目pom引入外部jar包
引文:当我们需要对接第三方平台接口,或者网络连接传输等业务时,当我们需要使用他们提供的sdk时,我们的项目就需要引入sdk,sdk就是打好的jar包原创 2021-06-20 22:04:26 · 3285 阅读 · 2 评论 -
springboot集成commonio项目启动后自动监听目录
SpringBoot监听目录1. 集成common-io包自动监听目录下所有文件的变化:在公安网内外网交互的时候,外网数据是直接传输不到内网中的,内网数据不能传输到外网中. 但是外网一些数据需要传输到内网,供内网办公人员使用!maven依赖 <!--集成common-io工具包--> <dependency> <groupId>commons-io</groupId> ...原创 2021-06-09 22:00:25 · 1094 阅读 · 1 评论 -
Java深入理解==和equals和hashcode的用法和区别
在查看本文章之前先做个小练习问题1:查看程序, s1 == s2 的值为true还是fasle?String s1 = "abc";String s2 = "abc";System.out.println(s1 == s2);答案为:true问题2:查看一下程序, s1 == s2 的值为true还是fasle?String s1 = "abc";String s2 = "ab"+"c";System.out.println(s1 == s2);答案为...原创 2021-06-08 18:04:30 · 278 阅读 · 1 评论 -
Java集成日志框架logback搭配lombok
lombok 可以说是当前程序员非常喜欢的一个插件,可以自动生成getter,setter以及链式方法和日志注解.d原创 2021-06-06 15:21:54 · 1793 阅读 · 0 评论 -
Java jdbc连接数据库,HikariCP数据库连接池
在Java中,HikariCP是目前最优秀的一款数据库连接池技术,可以称之为: 新秀使用:maven依赖: <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariC原创 2021-06-06 15:12:13 · 1227 阅读 · 0 评论 -
swagger升级版springboot集成在线文档knife4j
自动生成文档框架.步骤:1.集成maven依赖2.添加配置类,制定整个文档的署名,介绍等信息3.编写接口类,视图实体类,结果映射类4.启动项目,访问本地地址+端口+/doc.html(http://localhost:8080/doc.html) 具体可参考knife4j-spring-ui依赖内容5.接口访问资源(用于接口调用,以后网关对接后可以汇总所有模块的文档,访问网关做到统一的访问在线文档)分组接口:/swagger-resources 例如:localhost:8080原创 2021-05-30 23:19:06 · 495 阅读 · 2 评论 -
mysql postgresql数据库 按天统计时间戳,按月统计时间戳
今天突然来了一人功能,提供一个图表数据的接口。我心一想,这不是很简单的功能嘛?先划一天水,再说!过了一天,我一天,这个日期怎么是10位的时间戳的int类型。卧槽了,这咋办~~我心态崩了啊小意思,发哥出马,一个顶俩,还能继续划水思路整理:1、时间戳是从1970年0点0分0秒开始。2、将以秒为单位的时间戳转化为以天为单位的整形3、按照转化的天进行分组统计,计算count、或者其他聚合函数4、将查询出来的结果再次进行转化,将从1970年0点0分0秒的天数原创 2021-04-02 17:05:25 · 1270 阅读 · 0 评论 -
Java递归Java8流式处理 对父子节点结构集合数据的处理、并排序
实战 @Test public void test01() { // 1、收集出 第一集的 数据 List<StatisticsCenter> collect = list.stream() .filter((c) -> c.getParentNum() == 0) // 与map功能一致,对list中每一项循环转化,封装childrenList原创 2021-03-30 11:14:24 · 3793 阅读 · 1 评论 -
springboot2.3.2.RELEASE集成redis,动态切换数据库
springboot集成redis1、springboot集成redis1、依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version>...原创 2021-03-29 18:22:48 · 1241 阅读 · 2 评论 -
Java动态代理Cglib代理
JDK 动态代理有一个最致命的问题是其只能代理实现了接口的类。为了解决这个问题,我们可以用 CGLIB 动态代理机制来避免。CGLIB(Code Generation Library)是一个基于ASM的字节码生成库,它允许我们在运行时对字节码进行修改和动态生成。CGLIB 通过继承方式实现代理。很多知名的开源框架都使用到了CGLIB, 例如 Spring 中的 AOP 模块中:如果目标对象实现了接口,则默认采用 JDK 动态代理,否则采用 CGLIB 动态代理。在 CGLIB 动态代理机制中 M原创 2021-03-27 19:53:20 · 229 阅读 · 0 评论 -
java JDK动态代理
静态代理实现步骤: 定义一个接口及其实现类; 创建一个代理类同样实现这个接口 将目标对象注入进代理类,然后在代理类的对应方法调用目标类中的对应方法。这样的话,我们就可以通过代理类屏蔽对目标对象的访问,并且可以在目标方法执行前后做一些自己想做的事情。 1、接口、实现类/** * TODO 待代理对象、定义对象的行为 * * @author LinFH * @version 1.0 * @date 2021-03-03 16:13 */public interf原创 2021-03-27 19:48:37 · 91 阅读 · 0 评论 -
Java静态代理、动态代理(JDK代理、CGLIB代理)常见面试题
小结:静态代理不灵活,静态代理类似模板方法设计模式。动态代理灵活、方便。每个框架都会使用到,例如,spring中的AOP。默认为JDK实现方式,也可选择CGLIB实现方式。JDK动态代理只能代理实现接口的类或者直接代理接口。限制:必须要有接口。思考:Spring中AOP是如何实现的?(改天会作为一个专题研究一下)CGLIB动态代理即可代理接口也可代理类。JDK直接代理类会出现java.lang.IllegalArgumentException: xxx is not an interfa原创 2021-03-27 19:36:53 · 1659 阅读 · 0 评论 -
Java反射
何为反射?在Java中,对于任意一个类,通过反射可以获取到该类的所有属性,方法以及注解。对于任意一个对象,通过反射都可以调用该对象的任意一个方法和属性。这种动态的获取类信息和调用对象的方法的功能成为Java语言中的反射机制。如果我们需要获取类信息,就需要依靠Java中的class对象。初识反射class加载的过程反射就是把java类中的各种成分映射成一个个的Java对象例如:一个类包含:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把一个个组成部分映射成原创 2021-03-26 16:47:36 · 134 阅读 · 0 评论 -
Java递归计算n的阶乘
2、找到出口(边界值),让递归有结束边界注意:如果递归太多层,或者没有正确结束递归,则会出现栈内存溢出ERROR。问题:为什么会出现内存溢出,而不是堆内存溢出?溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,如果超过了这个内存空间大小程序就会coredump,就像你使用int*pi=newint[100000000];会崩溃一样,因为这里堆溢出了。 操作系统分配给一个进程的栈空间是2M,堆空间在32位机器上是4G。如果你的进程的栈空间使用超过了...原创 2021-03-22 23:33:09 · 1685 阅读 · 0 评论 -
mybatis自定义typehandler(枚举实战)
我们可以通过自定义TypeHandler的形式来在设置参数或者取出结果集的时候自定义参数封装策略。步骤:1、实现TypeHandler接口或者继承BaseTypeHandler2、使用@MappedTypes定义处理的java类型 使用@MappedJdbcTypes定义jdbcType类型3、在自定义结果集标签或者参数处理的时候声明使用自定义 TypeHandler进行处理 或者在全局配置TypeHandler要处理的javaType事例,部门状态的枚举类一个代表部门状态的枚举类:原创 2021-03-21 22:48:23 · 466 阅读 · 0 评论 -
docker安装zookeeper3.6.2
1、安装镜像docker pull zookeeper:3.6.22、启动zkdocker run --privileged=true -d --name zookeeper -p 2181:2181 \-v /home/workspace/zookeeper/data:/data \-v /home/workspace/zookeeper/logs:/datalog \-d zookeeper:3.6.23、进入到zk镜像汇总docker exec -it z...原创 2021-03-18 17:44:25 · 540 阅读 · 0 评论 -
window和linux环境安装zooker3.6.2,集群搭建、Java连接zk基本操作
zookeeper-root-server-master135.outwindow10 zookeeper1、下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.6.2/记住一定要下载 带 bin的,亲测 下载了 不带bin的,运行zkServer.sh start 是 出现 类找不到的情况。2、调整配置文件1、在bin同级下新建data、logs目录为了存放zk产生的data数据以及log日志。2、新增配.原创 2021-03-18 17:39:26 · 523 阅读 · 0 评论 -
springboot自动校验@NotBlank@NotNull@NotEmpty(2.4有小坑)
controller 实体类,参数 自动验证1、依赖问题:查看搭建的SpringBoot项目中 @NotEmpty 是否可以引用,查询资料发现从SpringBoot 2.3.0之后放弃了默认对javax.validation 的支持。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri...原创 2021-03-17 14:24:19 · 5465 阅读 · 2 评论 -
Java异常try-catch-finally和try-with-resources
Java 异常类层次结构图在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类 Exception(异常)和 Error(错误)。Exception 能被程序本身处理(try-catch), Error 是无法处理的(只能尽量避免)。Exception 和 Error 二者都是 Java 异常处理的重要子类,各自都包含大量子类。Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exce原创 2021-03-16 22:05:07 · 647 阅读 · 0 评论 -
java自动装箱和拆箱
作为一个Java程序员,一定要懂自动装箱与拆箱!自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。1、首先先回顾一下Java中8大基本数据类型:分别为: 6 种数字类型 :byte、short、int、long、float、double 1 种字符类型:char 1 种布尔型:boolean。 这八种基本类型都有对应的包..原创 2021-03-15 21:35:31 · 170 阅读 · 0 评论 -
mybatis和spring整合,xml和注解方式实战
mybatis和spring的整合是mybatis开发团队主动开发一套集成框架,方便与spring整合,包括后面的mybatis与springboot整合!本章将会以简略的步骤告诉你如何安装和配置 MyBatis-Spring,并构建一个简单的具备事务管理功能的数据访问应用程序。1、什么是 MyBatis-Spring?MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapp原创 2021-03-12 18:20:12 · 748 阅读 · 0 评论 -
Java字符串驼峰转换为_下划线数据库字段,jpa PhysicalNamingStrategy 源码方法
本方法来源于jpa源码,PhysicalNamingStrategy的子类SpringPhysicalNamingStrategy将驼峰式字符串转换为带下划线的方法:例如:appType转为app_type private String apply(String name) { StringBuilder builder = new StringBuilder(name.replace('.', '_')); for (int i = 1; i..原创 2021-03-12 09:39:46 · 479 阅读 · 5 评论 -
Elasticsearch7.6 window环境集群部署、集群认证及使用
Elasticsearch7.6 集群部署、集群认证及使用window版本测试部署,centos使用docker-compose部署,springboot连接使用,集群配置ssl和CA证书配置 配置参考 Elasticsearch的一些概念和配置参数说明Elasticsearch集群内部配置TLS加密通信及身份验证。具体可参考我的csdn博客:https://blog.csdn.net/qq_42390636/article/details/114645795window 环境原创 2021-03-10 20:54:03 · 298 阅读 · 0 评论 -
elasticsearch7.x配置文件参数说明6和7的对比介绍,常用配置模板
一、集群的一些概念集群: 一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。ElasticSearch中可以监控很多信息,有一个最重要的就是集群健康。集群健康有三个状态:green(所有主要分片和复制分片都可用),yellow(所有主要分片可用,但不是所有复制分片都可用),red(不是所有的主要分片都可用)。节点: 一个节点node就是一个ElasticSearch的实例。 集原创 2021-03-10 20:37:31 · 2122 阅读 · 1 评论 -
JavaAgent实现修改运行字节码获取线程执行时间
Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。深入了解文章最下面有解释!黑科技举例:对class文件加密、应用性能监控(APM)、产品运行时错误监测及调试、JAVA程序的调试(debug)、JAVA程序的诊断(profile)、热加载。当然:当今的许多开源工具尤其是监控和诊断工具,很多都是基于Java Agent来实现的,如最近阿里刚开源的Arthas。原创 2021-03-10 09:08:13 · 425 阅读 · 1 评论 -
mybatis入门demo搭建MySQL的maven项目
1、mybatis是什么MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。官方中文文档:https://mybatis.org/mybatis-3/zh/index.html2、入门2.1、了解mybat原创 2021-03-09 15:30:25 · 235 阅读 · 3 评论 -
没想到枚举Enum类还能实现接口!教你玩转Java枚举Enum
枚举是什么?枚举是一种特殊的数据类型,预先定义一组常量(对象),并且必须为其赋值。Java 枚举类型的基本想法非常简单:这些类通过共有的静态final域为每个枚举常量导出一个实例。枚举类型没有可以访问的构造器,所以它是真的final类。客户端不能创建枚举类型的实例,也不能对它进行扩展,因此不存实例,而只存在声明过程的枚举常量。也就是枚举类型是实例受控的。它们是单例(Singleton)的范型化,本质上是单元素的枚举。枚举使代码更易拓展和不一定代码减少,对比见下:我们使用12...原创 2021-03-09 08:53:53 · 4173 阅读 · 0 评论