- 博客(76)
- 收藏
- 关注
原创 mysql快速在不同库中执行相同的sql
最近在做sass,一家客户(企业)对应一个数据库(同一个链接不同的数据库隔离),遇到的问题是通用的功能模块建表,修改数据库字段等等脚本很不方便,之前的执行方式都是将sql脚本手动拼上schema名。这种方式在租户很少的情况下觉得没什么工作量,但随着客户越来越多,执行脚本起来就越来越麻烦,不胜其烦,所以想利用脚本生成完整的可执行的sql,这样可以省去很多时间。这种方式如果本身有个sql脚本包含多个sql,拼接起来也比较繁琐。
2025-04-24 17:31:34
371
原创 Linux用户切换命令区别详解
命令目标用户密码需求环境变量适用场景surootroot 密码当前环境临时切换为 root,保留当前环境su rootrootroot 密码当前环境同susudo suroot当前用户密码当前环境无 root 密码时提权(需 sudo 权限)su -rootroot 密码root 环境完全以 root 身份操作系统sudo su -root当前用户密码root 环境同su -,但依赖 sudo 权限su useruser目标用户密码当前环境临时切换为普通用户。
2025-04-11 14:39:44
435
原创 Hyper-V初探
但是本地搜索一看,发现没有安装,百度了一下说家庭中文版是个阉割版的系统,只有教育版,专业版才有。“本着没有我就抢的原则”下一个呗,百度一堆教程,也很好操作,这里我也记录一下。开始->找到window管理器->点击hyper-v管理器。先别重启电脑,重新打开功能面板查看一下是否安装成功。创建虚拟机,指定本地iso镜像,连接,略...有了的话就可以重重启电脑了。1.安装hyper-v。然后以管理员的身份运行。2.使用hyper-v。
2025-02-22 13:33:27
389
原创 springboot结合mybatis使用多数据源的方式
至此方式一解决了不同库数据同步问题,但是有个问题需要考虑 ,示例是写一张表,如果写入成百上千张表呢,mapper是不是要double,这里采用动态路由的方式切换数据源,如下。测试结果跟上面一致,但是还会有一个问题:动态切换数据源在表很多的前提下还是会增大系统开销,浪费系统资源。bank2中目前是空的。
2024-05-30 16:07:57
1643
原创 springboot配置多个数据源
在配置多个数据源的时候通常连接方式配置在配置文件中,程序可以通过@Value读取配置,也可通过@ConfigurationProperties读取,分别记录一下。
2023-08-31 11:33:00
462
原创 java加载本地配置文件的方式盘点(spring的除外)
在做项目时,时常会遇到很多配置文件需要加载,加载方式取决于项目架构,采用的什么技术,或者引入了什么架包就有相对应的加载方式,这里我采用的是或者。
2023-07-24 16:14:31
1200
原创 java 自定义注解的使用
/标注作用目标是类,方法,字段上,多个作用目标时用逗号隔开//标注生成注释//标注运行时有效//标注可以被继承@Inherited。
2023-06-13 16:15:46
937
原创 雪花算法使用
什么是雪花算法 雪花算法是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
1951
原创 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
330
原创 spring和springboot中对应监听器、过滤器、拦截器的使用区别
搞明白监听器、过滤器、拦截器的作用和使用方式,首先需要了解spring对于这三个的加载时机是在怎么样的,如下图: spring对于这三者依次是先执行过滤器(多个过滤器采用责任链模式依次调用执行),紧接着是监听器,最后才是拦截器。 而这三者的作用: 过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。(不更改对象的行为和属性)监听器(Listen...
2021-09-28 20:00:35
1101
2
原创 @ControllerAdvice+@ExceptionHandler处理全局异常
遇到异常时处理,可以使用@controlleradvice加上@exceptionhandler处理,@controller声明此类处理全局性的东西@exceptionhandler标注在方法上,声明不同的异常类处理逻辑示例:测试输出看到输出信息中只有数组下标越界异常信息,没有全局通用异常信息,可以得出结论,子类异常的优先级比父类高,如果没有具体的异常处理,则走父类的异常处理逻辑,否则走当前异常的处理逻辑,同时存在的不执行父类异常...
2021-09-06 20:15:28
270
原创 spring切面-AOP见解
对于aop的理解是对业务代码的增强,比如,记录日志,事务控制,异常处理等等,aop是采用动态代理实现的一种技术,也可以启动降低代码的耦合的作用。aop具体的概念不做解释,切点,切面这些都可以查到,这里只做代码的实现切入点表达式execution/** * execution表达式-切入点表达式: * 语法:execution(修饰符 返回值 包.类.方法名(参数) throws异常) * 修饰符:一般省略不写, * 示例: public 公共方法
2021-09-06 16:52:37
239
原创 http介绍
http概念Http:超文本传输协议,也是现在网络中最常用的一种协议,当用户打开浏览器(客户端),输入url,通过http协议向url地址请求数据并返回(服务器),这里http就是桥梁,用来客户端与服务器之间通信的。如下图:http的封装与传输图解我们用 HTTP 举例来说明:首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。 接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,..
2021-08-14 16:04:51
772
原创 【索引创建原则+索引失效情况+常见的sql优化策略】
索引的创建原则什么情况下适合创建索引:where子句频繁使用的列上 经常用来排序的列 分组经常使用的列(group by xx) 查询经常使用的列,可以建立索引提供查询效率 小表上不要建立索引(表中的数据太少) 多表连接时,在连接条件列上建立索引 表的主键、外键最好建立索引 索引字段类型选择尽可能小,字段类型大的不要建立索引,如oracle中的blob 修改频繁的字段,不要建立索引等等索引失效情况什么情况下索引会失效:sql中使用in或者not in,会导致全表扫描,索引失
2021-08-12 17:29:51
274
原创 【sql中的having能否单独使用】
having的用途跟where的用途类似,都可用作结果的过滤,其中having的功能比where强大一点,having后可以跟聚合函数,而where不可以。having能否单独使用:经过测试是跟数据库有关系,测试了常用的三个数据库,结果是Oracle和postgresql不能,mysql可以mysqloracle 和postgresql...
2021-08-11 14:03:17
3337
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
22199
原创 【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
478
原创 【mybatis代码生成器】mybatis-generator的xml方式使用
我的使用时通过配置文件的方式使用的,这种方式看起来直观,但是不灵活,而且不能生成service和controller层代码,想要生成service和controller层还是写代码自定义模板生成。mybatis-generator的官方地址:http://mybatis.org/generator/具体的使用方式,常用标签标注出来了,具体的查阅文档使用步骤:pom中添加插件,设置数据库驱动<build> <plugins> ...
2021-07-31 11:22:44
2274
原创 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
791
原创 【Activity】绘制流程图方式(部署,启动不讨论)
activity绘制流程图大概有三种方式(可能还有其他的,我不知道,但这三种是最长用的)归结起来份两类: 第一类:利用开发工具插件绘制(eclipse、idea等) 第二类:activity自带的ActivitiModeler下面详细介绍第一类:开发工具插件绘制idea中安装插件(我的版本2020.2.3)在idea中安装插件actiBpm(新版本下载不到)如果搜索不到可在idea官网中搜索插件下载在官方插件商城中下载后本地安装...
2021-07-23 14:52:32
6764
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
195
原创 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
602
原创 vue的常用全局配置vue.config对象
Vue.config是一个对象,包含 Vue 的全局配置。可以在启动应用之前修改config中的属性截图取自官网silent属性接收一个boolean类型的值,默认false,当设置成true时,表示取消所有的日志和警告信息,一般保持默认不设置,有助于代码调试如:vue中使用不存在的变量没有使用silent就会报错使用了之后,即使没有定义,不会在控制台报错,一般不使用optionMergeStrategies属性父子组件间的自定义合并策略参照官网,...
2021-07-07 14:49:13
8515
原创 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
141
原创 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
356
原创 连接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
13960
8
原创 集合相关梳理
HashMap的底层结构从jdk1.8之后,hashmap底层采用【数组+链表+红黑树】的结构,1.8之前是【数组+链表】hashmap底层结构:hashmap底层为啥要使用数组+链表?使用 “数组+链表” 是为了解决 hash 冲突的问题。 数组和链表有如下特点: 数组:查找容易,通过 index 快速定位;插入和删除困难,需要移动插入和删除位置之后的节点; 链表:查找困难,需要从头结点或尾节点开始遍历,直到寻找到目标节点;插入和删除容易,只需修改目标节点前后节点的next
2021-05-14 14:06:31
179
2
原创 finally不会执行的情况和迷惑行为
try代码块并未执行虚拟机关闭try代码块未执行结束(比如死循环)或者其他方式导致虚拟机关闭(比如守护进程终止)finally都不会执行在try或者catch块中return或者循环中break、continue等等都会最终执行finally...
2021-05-10 15:23:52
303
原创 HashSet的实现原理
hashset底层由hashmap实现(泛型key,值object,在hashmap中是present常量对象) hashset的值存放在hashmap的key上 底层hashmap的value都是present对象 部分源码:
2021-05-10 10:50:35
127
转载 @Autowired、@Inject、@Resource三者区别
一、@Autowired1、@Autowired是spring自带的注解,通过‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入;2、@Autowired是根据类型进行自动装配的,如果找到多个类型相同的,会按照名称进行匹配,如果名称相同,会报错,如果需要按指定名称进行装配,则需要配合@Qualifier;3、@Autowired有个属性为required,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错;4
2021-05-07 10:40:43
712
原创 java序列化的两种方式以及transient关键字的使用
java序列化是和磁盘进行交互的手段,方式一:实现Serializable接口实现Serializable接口的类中属性将全部会被序列化(属性前未被transient修饰)transient:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化,(通过设置对象属性的生命周期仅为内存中实现)未使用transient修饰的User类:import lombok.Data;import java.io.Serializable;/** * @
2021-05-06 14:40:28
343
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅