自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 springboot结合mybatis使用多数据源的方式

至此方式一解决了不同库数据同步问题,但是有个问题需要考虑 ,示例是写一张表,如果写入成百上千张表呢,mapper是不是要double,这里采用动态路由的方式切换数据源,如下。测试结果跟上面一致,但是还会有一个问题:动态切换数据源在表很多的前提下还是会增大系统开销,浪费系统资源。bank2中目前是空的。

2024-05-30 16:07:57 1380

原创 springboot配置多个数据源

在配置多个数据源的时候通常连接方式配置在配置文件中,程序可以通过@Value读取配置,也可通过@ConfigurationProperties读取,分别记录一下。

2023-08-31 11:33:00 306

原创 java加载本地配置文件的方式盘点(spring的除外)

在做项目时,时常会遇到很多配置文件需要加载,加载方式取决于项目架构,采用的什么技术,或者引入了什么架包就有相对应的加载方式,这里我采用的是或者。

2023-07-24 16:14:31 1050

原创 java 自定义注解的使用

/标注作用目标是类,方法,字段上,多个作用目标时用逗号隔开//标注生成注释//标注运行时有效//标注可以被继承@Inherited。

2023-06-13 16:15:46 882

原创 jenkins 升级遇到问题总结

在线升级jenkins

2022-12-27 16:31:39 1097

原创 Java常见的数据结构与算法

数据结构小结

2022-12-16 15:30:00 1059

原创 oracle和mysql查询所有表的注释和字段注释

一键查询表名+注释,字段名+注释

2022-12-14 18:00:38 443

原创 使用并行流的注意事项

parallelStream使用

2022-11-30 11:42:08 444

原创 with用法(oracle和mysql均支持,mysql版本8以上)

with

2022-11-07 17:29:15 1408

原创 Oracle行转列(pivot)和Oracle列转行(unpivot)

oracle 基础

2022-11-03 17:39:00 11094

原创 Tomcat启动而且访问慢排查

解决tomcat启动或访问过慢的问题

2022-06-17 10:57:40 3578

原创 雪花算法使用

什么是雪花算法 雪花算法是Twitter公司发明的一种算法,主要目的是解决在分布式环境下,ID怎样生成的问题其核心是生成一个64bit位的long型整数,既引用了时间戳保持递增,又增加机器id示例图:第一个部分,是 1 个 bit:0,这个是无意义的,0是正数。 第二个部分是 41 个 bit:表示的是时间戳。 第三个部分是10个bit,其中 5 个 bit:表示的是机房 id,10001。5 个 bit:表示的是机器 id,11001。 第四个部分是 12 个 bit:...

2022-02-24 14:57:28 1847

原创 cookie的简单使用

cookie的使用一般用来携带用户信息做身份验证,这里做一些简单的使用cookie,不结合业务,如下:这里没有做cookie的加密处理,一般设置cookie的时候需要加密,加密规则如md5,base64等等。public class CookieUtils { /** * 获取cookie集合 * @param request * @return */ public static Cookie[] getCookies(HttpServl...

2021-09-29 11:10:03 284

原创 spring和springboot中对应监听器、过滤器、拦截器的使用区别

搞明白监听器、过滤器、拦截器的作用和使用方式,首先需要了解spring对于这三个的加载时机是在怎么样的,如下图: spring对于这三者依次是先执行过滤器(多个过滤器采用责任链模式依次调用执行),紧接着是监听器,最后才是拦截器。 而这三者的作用: 过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。(不更改对象的行为和属性)监听器(Listen...

2021-09-28 20:00:35 1031 2

原创 @ControllerAdvice+@ExceptionHandler处理全局异常

遇到异常时处理,可以使用@controlleradvice加上@exceptionhandler处理,@controller声明此类处理全局性的东西@exceptionhandler标注在方法上,声明不同的异常类处理逻辑示例:测试输出看到输出信息中只有数组下标越界异常信息,没有全局通用异常信息,可以得出结论,子类异常的优先级比父类高,如果没有具体的异常处理,则走父类的异常处理逻辑,否则走当前异常的处理逻辑,同时存在的不执行父类异常...

2021-09-06 20:15:28 224

原创 spring切面-AOP见解

对于aop的理解是对业务代码的增强,比如,记录日志,事务控制,异常处理等等,aop是采用动态代理实现的一种技术,也可以启动降低代码的耦合的作用。aop具体的概念不做解释,切点,切面这些都可以查到,这里只做代码的实现切入点表达式execution/** * execution表达式-切入点表达式: * 语法:execution(修饰符 返回值 包.类.方法名(参数) throws异常) * 修饰符:一般省略不写, * 示例: public 公共方法

2021-09-06 16:52:37 198

原创 http介绍

http概念Http:超文本传输协议,也是现在网络中最常用的一种协议,当用户打开浏览器(客户端),输入url,通过http协议向url地址请求数据并返回(服务器),这里http就是桥梁,用来客户端与服务器之间通信的。如下图:http的封装与传输图解我们用 HTTP 举例来说明:首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。 接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,..

2021-08-14 16:04:51 632

原创 【索引创建原则+索引失效情况+常见的sql优化策略】

索引的创建原则什么情况下适合创建索引:where子句频繁使用的列上 经常用来排序的列 分组经常使用的列(group by xx) 查询经常使用的列,可以建立索引提供查询效率 小表上不要建立索引(表中的数据太少) 多表连接时,在连接条件列上建立索引 表的主键、外键最好建立索引 索引字段类型选择尽可能小,字段类型大的不要建立索引,如oracle中的blob 修改频繁的字段,不要建立索引等等索引失效情况什么情况下索引会失效:sql中使用in或者not in,会导致全表扫描,索引失

2021-08-12 17:29:51 204

原创 【sql中的having能否单独使用】

having的用途跟where的用途类似,都可用作结果的过滤,其中having的功能比where强大一点,having后可以跟聚合函数,而where不可以。having能否单独使用:经过测试是跟数据库有关系,测试了常用的三个数据库,结果是Oracle和postgresql不能,mysql可以mysqloracle 和postgresql...

2021-08-11 14:03:17 3102 1

原创 Linux运行jar&查看日志

将打包好的jar上传到Linux指定位置,(打包方式maven项目可以通过maven install构建)查看jar是否已经启动:上传的 oa的jar并没有启动通过nohup的命令启动jarnohup java -jar xx-oa-1.0.0-SNAPSHOT.jar &查看日志文件命令:tail -fn 200 nohup.out :循实时查看尾部200行的日志(最常用)head -n 200 nohup.out:从头部查看200行日志,不怎.....

2021-08-10 16:25:49 21360

原创 【springboot+dubbo+zookeeper】编写provider和consumer详解

前提:zookeeper作为注册中心是已经启动了,而且端口已经放行项目结构服务提供者和消费者,导入的pom依赖一致 <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version&.

2021-08-07 15:08:07 412

原创 【mybatis代码生成器】mybatis-generator的xml方式使用

我的使用时通过配置文件的方式使用的,这种方式看起来直观,但是不灵活,而且不能生成service和controller层代码,想要生成service和controller层还是写代码自定义模板生成。mybatis-generator的官方地址:http://mybatis.org/generator/具体的使用方式,常用标签标注出来了,具体的查阅文档使用步骤:pom中添加插件,设置数据库驱动<build> <plugins> ...

2021-07-31 11:22:44 2140

原创 feign简化远程调用

没接触过feign之前,调用第三方接口都是通过httpclient,通过编写工具类实现,这种方式代码量很多,相比较feign调用来说特别繁琐,而feign简化底层http调用方式,通过feign.builder.target传入调用接口和地址即可完成调用吗,代码量相当少。httpClient方式httpclient工具类:package com.fh.oa.apply.util;import com.alibaba.fastjson.JSONObject;import lombok...

2021-07-27 20:43:43 703

原创 【Activity】绘制流程图方式(部署,启动不讨论)

activity绘制流程图大概有三种方式(可能还有其他的,我不知道,但这三种是最长用的)归结起来份两类: 第一类:利用开发工具插件绘制(eclipse、idea等) 第二类:activity自带的ActivitiModeler下面详细介绍第一类:开发工具插件绘制idea中安装插件(我的版本2020.2.3)在idea中安装插件actiBpm(新版本下载不到)如果搜索不到可在idea官网中搜索插件下载在官方插件商城中下载后本地安装...

2021-07-23 14:52:32 6177 6

原创 poi读取表格封装

public static Map<String, List<Map<String, Object>>> readExcelMultiSheet(InputStream in) throws InvalidFormatException, IOException { Workbook wb = WorkbookFactory.create(in); Map<String, List<Map<String, Object&.

2021-07-15 20:12:10 120

原创 Java判断空的方式

编写代码时总会有分支和判断,之前也一直判断null采用==或者equals之类的,其实还有很多方式可供采用,总结一下。常规操作if(null==jobInfo){ //省略}如果是字符串判断null.还可以使用equalsObjects工具类中equals方法 (1.7之后)源码:由源码分析可以看出,两个参数相等时返回true,不等时返回false,此时判断null可以写成这样if (Objects.equals("null",graduateTime))

2021-07-15 17:05:38 484

原创 vue的常用全局配置vue.config对象

Vue.config是一个对象,包含 Vue 的全局配置。可以在启动应用之前修改config中的属性截图取自官网silent属性接收一个boolean类型的值,默认false,当设置成true时,表示取消所有的日志和警告信息,一般保持默认不设置,有助于代码调试如:vue中使用不存在的变量没有使用silent就会报错使用了之后,即使没有定义,不会在控制台报错,一般不使用optionMergeStrategies属性父子组件间的自定义合并策略参照官网,...

2021-07-07 14:49:13 8323

原创 vue中两种形式代码

new Vue()是创建一个Vue模板实例,一般在main.js中创建挂载app.vue使用vue-cli创建的方式生成的是runtime方式的代码但其实,手动引入vue.js中使用new vue是可以使用另一种模板代码的方式去构建vue实例的runtime方式main.js中compiler模板代码方式这两种代码的方式是等价的,注意区分:注意:在runtime环境中使用compiler时的语法会报异常要想在runtime代码环境下使用compiler.

2021-07-07 11:26:48 116

原创 switch的表达式数据类型范围

JDK1.0 - 1.4 数据类型接受 byte short int charJDK1.5 数据类型接受 byte short int char enum(枚举)JDK1.7-至最新版 数据类型接受 byte short int char enum(枚举), String...

2021-05-17 09:18:48 311

原创 连接rabbitmq超时问题(自定义、与springboot连用等)

自定义连接工厂通过自定义连接工厂连接时,ip、端口都正确的情况下,连接rabbitmq还是不行,报异常Exception in thread "main" java.util.concurrent.TimeoutException at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(Blocking...

2021-05-15 10:16:32 12732 6

原创 集合相关梳理

HashMap的底层结构从jdk1.8之后,hashmap底层采用【数组+链表+红黑树】的结构,1.8之前是【数组+链表】hashmap底层结构:hashmap底层为啥要使用数组+链表?使用 “数组+链表” 是为了解决 hash 冲突的问题。 数组和链表有如下特点: 数组:查找容易,通过 index 快速定位;插入和删除困难,需要移动插入和删除位置之后的节点; 链表:查找困难,需要从头结点或尾节点开始遍历,直到寻找到目标节点;插入和删除容易,只需修改目标节点前后节点的next

2021-05-14 14:06:31 137 2

原创 finally不会执行的情况和迷惑行为

try代码块并未执行虚拟机关闭try代码块未执行结束(比如死循环)或者其他方式导致虚拟机关闭(比如守护进程终止)finally都不会执行在try或者catch块中return或者循环中break、continue等等都会最终执行finally...

2021-05-10 15:23:52 245

原创 HashSet的实现原理

hashset底层由hashmap实现(泛型key,值object,在hashmap中是present常量对象) hashset的值存放在hashmap的key上 底层hashmap的value都是present对象 部分源码:

2021-05-10 10:50:35 90

转载 @Autowired、@Inject、@Resource三者区别

一、@Autowired1、@Autowired是spring自带的注解,通过‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入;2、@Autowired是根据类型进行自动装配的,如果找到多个类型相同的,会按照名称进行匹配,如果名称相同,会报错,如果需要按指定名称进行装配,则需要配合@Qualifier;3、@Autowired有个属性为required,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错;4

2021-05-07 10:40:43 651

原创 java序列化的两种方式以及transient关键字的使用

java序列化是和磁盘进行交互的手段,方式一:实现Serializable接口实现Serializable接口的类中属性将全部会被序列化(属性前未被transient修饰)transient:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化,(通过设置对象属性的生命周期仅为内存中实现)未使用transient修饰的User类:import lombok.Data;import java.io.Serializable;/** * @

2021-05-06 14:40:28 302 1

原创 mysql的三种条件判断函数

第一种:if()语法:if(表达式,值1,值2)当表达式的值为真时,返回值1,否则返回值2第二种:ifNull(值1,值2)当值1不为null时,返回值1,否则返回值2对于上面的例子不适合用这种第三种:case 表达式 when 条件1 then 值1when 条件2then 值2 ... else 值n end看语法格式我们会发现此类函数写法上比较麻烦,但其表达的逻辑却最贴近我们日常的思维习惯。当表达式的值和条件1匹配时,返回值1,...以此类推没有条件匹配时...

2021-04-27 18:27:54 6717

原创 oracle 中实现java中spilt按照固定格式拆分字符串

java中的split,按照固定的格式拆分成数组oracle 中sql的regexp_substr

2021-04-19 13:47:45 115

原创 生成序列结果集sql

场景:号段连续,查询号段间的所有数据,如:00000001~00000100oracle写法前置语法:select rownum from dual connect by rownum <= 100; 得到序列的号段结果集使用rownum和level 效果一致(select level from dual connect by level<= 100)拼接lpad得到结果PostgreSQL写法只是将结果集语法换成(generate_series):select.

2021-04-19 11:28:29 147

原创 nacos-server连接本地mysql数据库遇到的问题

本地mysql环境是8.0的版本准备条件大家看过nacos的也肯定知道,本地新建一个nacos_config的数据库,在nacos的conf文件夹下导入sql脚本执行(nacos-mysql.sql)然后在application.properties配置文件中添加本地数据库连接参数第一次使用nacos-server-1.1.3application.propertiesspring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mys

2021-04-18 14:08:19 3575

原创 idea中运行war项目

今天拿到一个老项目,普通的web项目,emoss框架搭的(个人不熟悉这个框架,不过不重要,慢慢就熟悉了)记录一下idea跑这个老项目的步骤1.从svn检出检出步骤没什么说的,检出后的项目结构(模块-源中设置了目录)2.更改检出项目结构和启动配置3.添加本地Tomact启动war之后点击应用-确定4.启动运行启动完成后在打开的浏览器中输入登录信息即可,...

2021-04-16 16:06:41 4234 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除