- 博客(97)
- 收藏
- 关注
原创 MySql理解RR(可重复读)事务隔离级别
当session1开启事务时,mysql使用快照读保存事务开始前的数据,所以这条事务未提交前,查询的结果都是最开始保存的数据。session2开启事务,执行一条update语句,mysql开始当前读,对当前修改的行加锁。此时查询出来的值是最新值。session3执行语句,此时它也想要修改数据,由于2还没提交事务,它只能等待2释放锁。无论session2还是session3,查询结构都是0。
2024-07-30 10:09:01
273
原创 Windows 系统使用Jenkins 实现CI一键打包部署操作
jenkins 中文官网链接:点击下载,完成后是一个.msi后缀的安装文件,双击安装安装和普通软件一样,一路next,安装路径自己设置一下,默认是C盘,我C盘不够用了,设置的D盘里选择第一个,安装在本地这选择JDK安装路径,可以选择11,17和21。如果是8的版本,可能需要版本更低的jenkins。下面就没有什么特别的配置了,安装完成以后可以在任务管理器服务列表中看到Jenkins。
2024-05-06 10:53:11
1366
原创 java导出word使用模版与自定义联合出击解决复杂表格!
如果只是这样的话,使用freemarker应该都可以搞定,但是他一列中内容相同的单元格,需要合并。如图所示,这里的所有数据行都是动态的,需要根据查询出来的数据循环展示。这对于表格样式固定的freemarker就搞不定了。关于版本问题,老版比新版好用,新版太过规范。学习成本一天半,刚入门的新手建议不要看了。,用来填充数据的,使用双花括号标记。放在根目录下面,不然找不到哦。
2023-12-13 08:24:19
2074
1
原创 windows系统 记录一次mysql更新版本
一次需求需要用到mysql的全文索引功能,发现还挺简单,加了fullText索引之后英文可以,中文不行, what? 百度之后得知需要在MySql5.7.6之后新增的全文解析器Ngram。使用mysql -v 时候发现我的mysql版本是5.7.17,囧,还要升级版本才能使用ngram分词。那我们进入mysql中文官网下载适合版本的mysql我这里选择的是5.7.36下载好了先放一边,我们先把原来的mysql卸载干净,备份完整首先把自己的sql文件导出来备份一份,我这里就用navicat导出来就行
2022-04-18 10:55:28
543
原创 记录一次jar文件在windows系统下开机自启
自启有很多中方式,其中最好维护的一种方式是把启动命令注册成服务首先去 https://github.com/kohsuke/winsw/releases 下载WinSW软件我这里找的2.x的版本,3.x的版本是压缩包,下载这个exe和xml文件3. 下载下来以后把文件放到jar包同目录下,并改为同名,像这样(这里的日志文件是我服务启动之后自动生成的)4. 下面我们修改一下xml文件的配置<service> <!-- ID of the service. It should
2022-03-09 15:55:08
780
原创 java使用freemarker模板生产word遇到的各种问题
首先先上成功的代码,然后再讲碰到的各种问题导入freemarker的maven坐标 <!--freemarker 生成word--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3
2021-12-28 11:16:11
2794
2
原创 学习vue安装webpack以及cli
这些软件都是基于node环境的,确保自己电脑上已经安装了nodenode -v 查看node -v安装webPacknpm install webpack@3.6.0 -g查看webpack版本webpack -v安装脚手架npm install @vue/cli -g查看脚手架版本vue --versionCLI3或4要是用CLI2方式创建项目还要额外安装一个npm install @vue/cli-init -g这是CLI2创建项目的方式...
2021-08-25 09:50:54
350
原创 码云修改了密码之后的种种坑
码云修改了密码,然后git各种拉取提交失败…ssh秘钥要重新生成windows管理凭据里面码云的凭据密码修改git工具里执行忘掉原来的密码,再次与仓库建立连接要重新输入账号密码git config --system --unset credential.helper...
2021-08-13 15:12:57
237
1
原创 记录一次java生成条形码并调用打印机打印
生成条形码需要ja坐标: <!--生成条形码--> <dependency> <groupId>net.sf.barcode4j</groupId> <artifactId>barcode4j-light</artifactId> <version>2.0</version> </depe
2021-08-12 09:57:48
2252
原创 poi 简单导出wrod
hutool工具类也有导出word的封装,本来图方便想用它的,但是后来发现导出的文档数字和汉字不是一个字体,也就是一行里面会有不同的字体,hutool只能一段一段的换字体,所以换了poi先看看效果:这里汉字是宋体,数字和字母是Times New Roman下面是我写的一个测试导出类:import org.apache.poi.xwpf.usermodel.ParagraphAlignment;import org.apache.poi.xwpf.usermodel.XWPFDocument;imp
2021-07-22 13:35:53
458
原创 前后端分离下spring security 跨域问题
当我用nginx正向代理前台到后端服务时,浏览器报了CROS的错误,我就纳闷了,我后台配置了跨域啊package com.hongseng.app.config.webmvc;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config
2021-07-13 10:48:12
413
原创 前后端分离部署nginx路由配置各种坑
需求:两个前台端口访问一个后台服务(正向代理…)需求够奇葩nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http
2021-06-25 16:51:00
1454
原创 windows 使用mysqldump 定时备份数据库数据/导入sql文件
mysql本身为我们自己提供的有数据库sql文件导出工具:mysqldump在此进入cmd窗口中键入命令:-u 用户名-p 密码--databases 导出那个数据库> 导出的路径mysqldump -uroot -proot --databases jbxq_project > C:/var/guoheng/sql/jbxq.sql此时在目录中已经生成了数据库jbxq_project的sql文件如果不把mysqldump加入Path环境变量的话,我们写脚本就要使用全路径
2021-06-23 09:42:20
1480
原创 java使用压缩流把文件打成压缩包下载
需求:前台传过来一个url数组,其中是每个文件的路径,后台需要获取到每个文件然后将其打成压缩包返回流给前台下载核心是:ZipOutputStream,废话不多说,上代码savePath 是我在yml配置文件里配置好的文件存储路径在使用谷歌(火狐可以)下载过程中遇到问题:文件名中含有半角符号无法下载,因为文件名是前台命名的,所以这个我就随便命名个1.zip解决一下文件名有中文要用iso_8859_1转义一下,不然会乱码(使用swagger测试时一直都是乱码,是swagger的问题,使用浏览器直接下
2021-06-17 08:17:41
1964
原创 Hutool的Excel工具类
Hutool的Excel工具类和poi版本兼容性不好,很多类和方法找不到现在固定一个hutool和poi的版本, <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.0.9</version> </d
2021-06-07 08:36:22
1427
原创 java除法防止精度缺失
保证a,b是double或者float类型 // 小数精确两位 DecimalFormat df = new DecimalFormat("#0.00"); String format = df.format( a / b);
2021-05-26 15:06:24
538
原创 读java编程思想看到一个遍历移除集合中元素的骚操作
原集合重新赋值到另一个集合中,一个集合遍历,一个集合移除,再也不用使用iterator List<Integer> integers = new ArrayList<>(); integers.add(1); integers.add(2); integers.add(3); integers.add(4); for (Integer integer : new ArrayList<>
2021-05-19 06:35:51
188
原创 发现一款java鉴权认证框架sa-token(目前好像坑还很多)
我们先看一下官网介绍,sa-token有什么功能链接: 官网地址主要是Shiro、Security配置繁琐,这个简单易上手这是他的大致功能点,今天我们搞点基础的springBoot 集成sa-token 并实现登录的验证和权限的鉴定首先导入maven坐标导入redis主要是sa-token使用内存来存取token的,使用redis第三方来做到重启项目token不丢,只需导入sa-token-redis的maven即可,不需要手动get,set(方便!) <!-- Sa-Token 权
2021-05-12 07:53:45
13390
17
原创 JDK8日记格式化API小记
ZonedDateTime zonedDateTime = ZonedDateTime.now(); LocalDateTime now = LocalDateTime.now(); String strTime = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss").format(zonedDateTime); String strTime = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:m...
2021-05-10 07:37:22
104
原创 一个list集合分页的工具类
package utils;import com.github.pagehelper.PageInfo;import java.util.List;/**@program: examination@description:@author: fbl@create: 2021-03-17 10:27**/public class ListPageUtil {public static PageInfo getPage(Integer page, Integer limit,
2021-05-09 06:22:45
186
原创 springBoot 在过滤器中如何捕获抛出的异常并自定义返回信息
一般springBoot自带的全局异常捕获机制都是在业务层发生的异常来进行捕获的,因为过滤器的执行顺序是在全局异常机制启动之前执行的,所以一旦过滤器中发生异常,全局异常捕获机制无法使用现在有一个围魏救赵的思路在过滤器中try-catch掉需要捕获的异常,然后转发到controller在重新抛出,这样全局异常机制可以起作用,返回自定义信息举个例子:SpringSecurity使用过滤器链来实现用户校验,一旦签名出错,过滤器链中抛出响应的异常,我们不想抛出异常,而是返回相关错误信息。此时使用上述思路很容
2021-01-20 09:15:05
8296
7
原创 JWT的token过期自动续期(无redis)
思路:由于jwt中的token过期时间是打包在token中的,用户登录以后发送给客户端以后token不能变化,那么要在用户无感知的情况下刷新token,就要在符合过期条件的情况下,在缓存一个新的token,作为续命token,再次解析不要解析客户端发送的token,要解析自己缓存的续命token主要逻辑:如果当前token没有超过过期时间的两倍,续期,超过了重新登录主要代码如下:package com.hongseng.app.config.jwtfilter;import enums.Tok
2021-01-19 16:17:44
8780
1
原创 三个线程依次输出ABC ReentrantLock的Condition用法
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * @program: emergency * @description: 三个线程依次输出ABC ReentrantLock的Condition用法 * @author: fbl * @create: 2021-01-13 07:36 **/public class ThreadTest {
2021-01-14 16:05:36
392
原创 数据量大时使用多线程查询mysql数据和单线程对比
jdk8有一个异步类CompletableFuture可以使用线程池帮助我们实现多线程查询@PostConstruct private void multithreadingGetData() { // 数据总量 int count = 312; // 计算机可用cpu 设置线程池个数最好与之匹配 int availableProcessors = Runtime.getRuntime().availableProcessors();
2020-12-17 11:23:16
1151
2
原创 SpringBoot和SpringSecurity整合一下JWT
上一篇写了SpringBoot整合SpringSecurity实现了登录认证和授权,但是SpringSecurity是把用户信息存储在session中的。对服务器有一定的压力,所以目前JWT这种服务无状态的校验方式比较流行我接着上篇的代码改进,将JWT融合进去首先导入JWT的maven坐标,我使用的是jjwt <properties> <java.version>1.8</java.version> <jjwt.versio
2020-12-03 08:33:31
902
2
原创 springBoot整合springSecurity基于RBAC权限验证
学学springSecurity的认证授权框架,后续整合一下JWT先说一下基于RBAC权限管理的思路在数据库中配置用户权限在每个接口上使用注解的形式说明接口需要用户拥有那个权限才能访问SpringSecurity使用拦截请求的方式对当前用户拥有的权限和接口需要的权限进行比对,包含则放行,不包含则拦截导入SpringSecurity的maven坐标 <dependency> <groupId>org.springframework.boot
2020-12-02 10:51:42
2714
4
原创 CompletableFuture异步请求远程资源
package java8.completableFuture;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @program: javaCodeThink * @descrip
2020-11-10 10:40:07
341
原创 给出一个int数组,算出所有int数字排列组合
比如给出{1,4,9}下面是程序输出:[[], [9], [4], [4, 9], [1], [1, 9], [1, 4], [1, 4, 9]]下面是完整代码:package java8.流.函数式编程;import java.util.*;/** * @program: javaCodeThink * @description: 对于{1,4,9} 我们可以分为包含1和不包含1的 * @author: fbl * @create: 2020-11-09 09:16 **/p
2020-11-09 10:13:41
656
原创 日期不要再用Date了,使用LocalDateTime和Instant!
看了java8实战一书,觉得表示时间以前用Date的字段属性应该可以用LocalDateTime来代替所以在项目中实验了一下:更换过后,启动果然报错:java.sql.SQLFeatureNotSupportedException; null; nested exception is java.sql.SQLFeatureNotSupportedException] with root cause使用百度大法之后,调高连接池版本得到解决原来是1.1.10以后实体类字段属性就可以使用Local
2020-11-06 14:40:56
1557
1
原创 mysql替换字段中字符串某一段内容
如图:我将要把127.0.0.1替换为空字符download_url 为你要替换的字段名sql为: update emergency_plan set download_url=REPLACE (download_url,'127.0.0.1','');
2020-11-04 09:02:05
713
原创 java下载url路径包含中文需要转义
大家看这个url:http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx应为url路径中有中文没有转义,输入流报错The valid characters are defined in RFC 7230 and RFC 398下面我们对中文路径进行截取转义 int lastIndexOf = downloadUrl.lastIndexOf('/'); String fileName = downloadUrl.substring(last
2020-11-03 16:43:43
1635
原创 windows下java -jar 后台运行以及杀死后台进程
在你的jar文件当前目录中建立一个bat文件:内容是:注意文件名要对应@echo off START "commandServer" javaw -jar command-0.0.1-SNAPSHOT.jar之后双击bat文件就能后台启动jar包啦杀死后台进程首先执行命令 (你要知道你运行的jar文件的端口号)netstat -aon | findstr "9998"可以看到PID为6452 然后在执行:tasklist|findstr "6452"最后我们就要杀死这个进程啦
2020-10-30 08:08:26
5302
2
原创 java8实战关于Stream的一篇测试题
package java8.流.筛序苹果;import java.util.*;import java.util.function.Predicate;import java.util.stream.Collectors;/** * @program: javaCodeThink * @description: * @author: fbl * @create: 2020-10-29 08:37 **/public class FlatMap { public static
2020-10-29 14:49:34
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人