
笔记
CaptainCats
悟已往之不谏、知来者之可追。
展开
-
try/catch捕获不到的异常
Throwable可以看做是异常世界中的Object,在Java中所有异常都有一个共同的祖先:Throwable,Throwable有两个重要的子类:Error错误和Exception异常,二者都是异常处理重点类。我们看一下普通的try/catch,接下来这种情况可能会有点特殊,原创 2022-12-29 22:58:37 · 7407 阅读 · 1 评论 -
springboot下载src/main/resources下的Excel打不开
最近遇到下载导入模板的需求,我将模板Excel放在src/main/resources下,springboot下载src/main/resources下的Excel无法打开,原因是springboot会压缩src/main/resources下的文件,然后要记得clean install之后才会生效。解决办法:在pom.xml加入以下内容,不小心误伤了我们的模板Excel文件,结果下载下来后提示无法打开,原创 2022-11-09 22:10:41 · 1801 阅读 · 0 评论 -
response的Content-Length设置错误,导致springboot文件下载,代码已经return,postman一直等待到超时
response的head儿中设置了content-length,导致写出的数据不相等时,这一句在header中设置了内容的大小Content-Length是10240个字节,是10k,temp.txt文件大小在5k左右,这就导致response以为没下完,已写出的数据就是byte字节数组,后台已经处理完并且return。我还以为是文件有问题,找了半天也不知道是什么原因,请求处理完后,postman 一直在等待,postman 便一直等待,直至超时,便一致在等待,当然是等不到什么结果的,原创 2022-11-07 21:39:51 · 4507 阅读 · 0 评论 -
fastdfs简介及在springboot中使用
fastdfs是一个开源的轻量级分布式文件系统,提供了文件上传、文件下载、文件同步、文件存储等功能,解决了大容量存储和负载均衡的问题,适合以中小文件为载体的在线服务。由跟踪服务器tracker server、存储服务器storage server组成,客户端请求tracker server进行文件上传、下载,tracker server调度storage server完成文件存储。原创 2022-10-13 22:25:56 · 2179 阅读 · 0 评论 -
mysql left join关联字段的类型不一致导致索引失效
t1和t2通过order_id关联,order_id在t2建有索引order_detail_index_order_id,原因是order_id字段在t1中是int类型,在t2中是varchar类型,导致用不到索引。我们用另外一种办法,在查询中通过函数将它们转换为一样的类型和字符集。不过修改字段类型有时候会可能遇到一些阻碍。一种办法是修改字段类型让它们保持一致,看下这条sql的explain。但是这里却没有用到。原创 2022-09-29 23:58:20 · 2180 阅读 · 0 评论 -
redis cluster集群为什么要求至少三个master节点?为什么是奇数?
cluster各节点之间需要互相通信确认对方是否存活,假设有A、B两个节点,B发现联系不上A,是不能确定A和B谁出了问题的,假设集群中还有一个C节点的话,如果B、C可以互相联系,但是都联系不上A,那么这时候就可以确定A出问题了,需要把A从集群中踢出去。集群可用原则:可用节点数量>集群总节点数量的二分之一,节点数量为奇数个是出于节省资源的考虑,因为不管是四个还是三个节点,一旦挂了两个,整个集群都是不可用的。原创 2022-09-27 20:57:32 · 2526 阅读 · 0 评论 -
NoHttp: http:// URLs are not allowed but got ‘http://bugreport.java.com/bugreport/crash.jsp‘. Use
在idea全局查找:‘http://bugreport.java.com/bugreport/crash.jsp’,这儿我已经改为https了。解决办法:改为https。原创 2022-09-14 18:02:09 · 467 阅读 · 0 评论 -
Failed to execute goal io.spring.javaformat:spring-javaformat-maven-plugin:0.0.22:validate (default)
【代码】Failed to execute goal io.spring.javaformat:spring-javaformat-maven-plugin:0.0.22:validate (default)原创 2022-09-14 17:30:15 · 1147 阅读 · 0 评论 -
This failure was cached in the local repository and resolution is not reattempted until the update i
spring-boot-2.2.9.RELEASE,mvn clean install打包报错:This failure was cached in the local repository and resolution is not reattempted until the update interval of nexus-aliyun has elapsed or updates are forced. Original error: Could not transfer artifact。原创 2022-09-14 17:26:34 · 4652 阅读 · 0 评论 -
git在merge时做了些什么
我们每次提交都会在相关分支上对应一个节点,合并是对两个分支上各自最新节点进行的操作。二路合并、三路合并、递归三路合并。原创 2022-08-18 19:57:05 · 408 阅读 · 0 评论 -
二分法的复杂度O(log2n)是什么意思
这样,长度为N的数组,只需要log2N次查询即可,2是对数的底,log2(8)=3,即2的3次方等于8。由于是数组是预先排序好的,所以可以采用折半查询的方式,每次抛掉待查询部分的一半。O(log2n)只是表示是log2N同一数量级,O(log2n)就是一个上限。对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。例如,长度为7的数组,最多只需3次就可以找到。若x小于当前位置值,则在数列的前半段中查找;假设数据是按升序排序的,.原创 2022-08-12 21:17:02 · 1766 阅读 · 0 评论 -
抽象工厂模式,秒懂
设计模式-抽象工厂模式抽象工厂模式属于创建型模式它是工厂模式的延伸。在工厂模式中,工厂是具体的,产品是抽象的,现在工厂也是抽象的,抽象工厂中的工厂相当于工厂模式中的产品。可能会有一点绕口,不过没理解也没关系,这里的代码量不多,一共七个类,一起写下来,大家肯定会对抽象工厂模式有一个自己的认识,包教包会。实例抽象生物类public interface Species { /** * 生物的行为 */ void action(); }抽象工厂类public interf原创 2020-10-29 20:15:57 · 179 阅读 · 0 评论 -
工作流引擎Activiti入门-01
工作流引擎Activiti入门工作流引擎工作流BPMBPMNActiviti集成Activiti新建数据库新建项目log4j的配置mysql的配置生成mysql表流程操作Activiti bpmn designer流程定义流程存储/部署流程启动任务查询任务处理工作流引擎工作流是指业务过程的部分或整体在计算机应用环境下的自动化。工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。BPMBPM(Business Process Ma原创 2022-05-24 19:59:42 · 1012 阅读 · 0 评论 -
eclipse中使用git远程代码覆盖本地
eclipse中使用git远程代码覆盖本地右键项目→team→resethard→reset原创 2022-02-10 09:16:32 · 1689 阅读 · 0 评论 -
Java中this关键字的用途最强理解
Java中this关键字的用途this.成员this.成员变量this.成员方法this()Java中this关键字被解释为:“指向当前对象”,这个解释非常精炼且准确。那么它的使用场景有哪些呢?this.成员this.成员变量我们最常见到它的地方:在构造器中给成员变量赋值的时候。package com.example.duohoob.test;public class User { private String username; private String password;原创 2022-02-09 18:59:59 · 1035 阅读 · 0 评论 -
计算机/设备和驱动器下有一个空白盘符无法删除
之前安装了酷我音乐,在设备和驱动器下多了一个盘符,卸载的时候没有清理掉,变成空白的无法删除。打开注册表Windows+R→regeditNameSpace计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace点目录下的对象会有提示,右键删除就好了,我这儿的酷我音乐已经删过了。...原创 2022-02-07 09:30:27 · 7796 阅读 · 1 评论 -
postman文件上传springboot的过程
postman文件上传springboot的过程在springboot的controller中,有一个文件上传接口,使用postman调用。请求是一个过程,在request携带着文件完整地到达服务器后,服务才算收到了这次请求,才会开始处理。这中间取决于本地的上行速度和服务器的下行速度,会消耗掉一段时间。上行:往网络发送数据;下行:从网络接收数据。文件越大,时间相应地也越长。(我们从网上下载一个东西还需要时间呢)如果请求设置有超时时间,时间又很短的话,可能出现以下情况:1、在超时时间内,re原创 2021-12-31 15:03:03 · 1269 阅读 · 0 评论 -
扁平数据根据parentID构建树形结构
Java扁平数据根据parentID构建树形结构package com.example.duohoob.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;/** * @Title: TreeList.java * @Package com.example.duohoob.原创 2021-10-23 15:46:45 · 695 阅读 · 0 评论 -
http中get和post的区别及使用场景
http中get和post的区别及使用场景区别get和post是http协议中的两种请求方式,http是基于tcp/ip的协议。按照约定:get方法的参数在URL中,post方法的参数在body中。与post相比,get将参数暴露在URL上,安全性比较差,其实从传输的角度来说,它们都是不安全的,因为http在网络上是以明文传输的,只要在网络节点上抓包,就能获取完整的数据报文,要想安全传输,就只有加密。但是get和post还有一个区别:get产生一个tcp数据包,post产生两个数据包,原创 2021-08-21 10:08:10 · 1039 阅读 · 0 评论 -
centos7固定ip
centos7固定ip查看网卡信息ip a修改网卡配置这里是ifcfg-ens33vim /etc/sysconfig/network-scripts/ifcfg-ens33修改ONBOOT=no为ONBOOT=yes,然后ip a才会显示ens33网卡IP查看gateway等会要用到netstat -rn若提示netstat命令不存在,先安装net-toolsyum -y install net-tools查看DNS等会要用到cat /etc/resolv.conf原创 2021-07-11 14:15:38 · 164 阅读 · 1 评论 -
jvm-08.jvm调优工具Arthas
jvm调优工具Arthas阿尔萨斯官方文档https://arthas.aliyun.com/doc/下载curl -O https://arthas.aliyun.com/arthas-boot.jar启动java -jar arthas-boot.jarFullGC_Problem01是我们刚启动的java进程import java.math.BigDecimal;import java.util.ArrayList;import java.util.Date;import原创 2021-07-10 15:58:11 · 212 阅读 · 0 评论 -
英雄联盟文件夹乱码
英雄联盟乱码文件夹解决LOL文件夹有乱码问题原创 2021-07-09 13:52:27 · 1492 阅读 · 0 评论 -
如何消除windows桌面图标之间的空位
如何消除windows桌面图标之间的空位原创 2021-07-09 13:51:42 · 2377 阅读 · 0 评论 -
win10安装xshell免费版
win10安装xshell免费版下载家用免费版xshellhttps://www.netsarang.com/zh/free-for-home-school/然后点击邮件箱中的地址下载安装原创 2021-07-09 13:50:24 · 3664 阅读 · 0 评论 -
VMware安装centos7并使用xshell连接
VMware安装centos7并使用xshell连接下载centos7镜像http://mirrors.neusoft.edu.cn/centos/7.9.2009/isos/x86_64/创建新的虚拟机典型稍后安装操作系统centos7 64位编辑虚拟机设置选择我们下载好的镜像文件开启此虚拟机点击回车安装centos7系统中文简体安装位置开始安装设置root密码123(各位随意)完成然后重启登录安装完成桥接模式虚拟机设置→设置→原创 2021-07-07 21:43:58 · 257 阅读 · 1 评论 -
Centos7部署radius服务-freeradius-3.0.13-15.el7集成mysql
Centos7信息安装freeradiusfreeradius、freeradius-utils、freeradius-mysqlyum -y install freeradius freeradius-utils freeradius-mysql配置freeradius安装完成会创建一个"radiusd"用户,我们即将操作的目录:"/etc/raddb/",需要有和它相同权限。授权sudo chown dev.radiusd /etc/raddb/*clients.conf配置原创 2021-05-31 18:38:18 · 2821 阅读 · 8 评论 -
解决在eclipse中打开.yml文件老是报错的问题(粗暴有效)
在eclipse中打开.yml文件老是报错我在eclipse是装过eclipse的springboot插件的,可以支持yml文件,但是有一点不舒服的地方在于,每次打开yml文件的时候编辑器就会报错,虽然也不影响使用,但是看起来会很别扭,我是这样子解决的:全选这些.yml文件的错误,然后右键→删除选择Delete然后ok,心情不烦了,一切开始变得美好起来。...原创 2021-05-14 16:51:31 · 2128 阅读 · 1 评论 -
多个spring boot实例输出logback日志到一个文件导致日志混乱问题
前段时间在排查问题的时候,发现日志好像是缺失了一部分,缺失的一部分出现在了昨天的日志文件里面,经过跟运维沟通之后,得知我们的某服务ServiceA是以不同端口号启动了两个实例,在同一台服务器上。项目中日志配置文件指定文件输出路径的地方:<property name="logpath" value="${LOG_PATH:-/opt/ServiceA/logs/}" />这样两个实例会同时写入到logs目录下的同一个日志文件这个时候就出现问题了,因为将要输出第二天日志的时候,lo原创 2021-04-20 18:39:37 · 3450 阅读 · 2 评论 -
Java程序员学习Go语言入门笔记-index7
本篇内容:http编程http编程http协议属于应用层协议一个普通的http请求大致的过程如下:HTTP协议:应用层的客户端发送访问web服务器的http请求到网络层,TCP协议:传输层将请求数据进行分割后转发给网络层,IP协议:网络层职责是搜索web服务器地址并传送数据。HttpServicepackage mainimport ( "fmt" "net/http")func handleConn(resp http.ResponseWriter, req *http.原创 2021-04-15 17:05:10 · 202 阅读 · 2 评论 -
Java程序员学习Go语言入门笔记-index6
Java程序员学习Go语言入门笔记-index6网络编程网络协议通信中数据传输和解释的规则分层模型大多网络模型采用分层的方式来组织层与协议网络每一层有自己的协议,这些协议被统称为TCP/IP协议。每层协议的作用:链路层协议主要处理物理信息,例如网卡MAC地址网络层协议主要处理主机信息,例如IP局域网传输层协议主要处理进程信息,例如进程端口号应用层协议规定了应用程序的数据格式Socket编程Socket套接字它提供了进程之间利用网络协议通信的机制TCP协议的C/S架原创 2021-04-14 18:32:24 · 231 阅读 · 1 评论 -
Java程序员学习Go语言入门笔记-index5
Java程序员学习Go语言入门笔记-index5并发编程goroutine协程go协程,是比线程更轻量级的单位goroutine创建并发执行单元由处理器核心按时间片轮转法调度执行package mainimport ( "fmt" "time")func main() { // goroutine创建协程 go func() { // 声明匿名函数 for i := 0; i < 10; i++ { fmt.Println("goroutine输出:", i)原创 2021-04-13 18:45:40 · 199 阅读 · 0 评论 -
Java程序员学习Go语言入门笔记-index4
Java程序员学习Go语言入门笔记-index4异常和文本文件的处理异常处理error接口普通错误package mainimport ( "errors" "fmt")func main() { // 生成方式1 var err1 = errors.New("errors.New err") fmt.Printf("%v\n", err1) // 生成方式2 var err2 = fmt.Errorf("%s", "fmt.Errorf err") fmt.Print原创 2021-04-12 18:41:30 · 272 阅读 · 1 评论 -
Java程序员学习Go语言入门笔记-index3
久违的面向对象编程面向对象编程面向对象编程离不开继承、封装、多态go中没有这些概念,它通过其他的方式实现这些特性继承:匿名属性封装:方法多态:接口匿名属性(匿名字段、匿名组合)匿名字段可以是自定义结构体类型、内置类型、指针类型// 匿名属性/字段package mainimport "fmt"// 自定义结构体Usertype User struct { id int // 结构体成员变量,不需要通过var声明,普通变量需要 no int user原创 2021-04-09 18:45:05 · 270 阅读 · 0 评论 -
Java程序员学习Go语言入门笔记-index2
Java程序员学习Go语言入门笔记-index2复合类型指针pointer默认值:nil(nil相当于Java中的null)内存和指针的区别内存:内存的内容指针:内存的编号,也叫地址package mainimport "fmt"func main() { // 声明方式1:取地址 var i int = 1 var p1 *int = &i // 指向一个合法内存,"*int"是指针类型,"&"取地址 fmt.Printf("i = %v, p1 = %v\n原创 2021-04-08 18:38:41 · 223 阅读 · 0 评论 -
Java程序员学习Go语言入门笔记-index1
基本类型package mainimport "fmt"func main() { // 布尔类型 var flag1 bool // bool布尔类型默认值为false fmt.Println(flag1) flag2 := true // 默认推导类型 fmt.Println(flag2) // 复数类型 com1 := complex(1, 2) // 1 + 2i fmt.Println(real(com1), imag(com1)) // 打原创 2021-04-07 18:47:43 · 211 阅读 · 0 评论 -
Java程序员学习Go语言入门笔记-index0
GO语言环境下载https://golang.google.cn/dl/安装D:\Program Files\GoliteIDE(开发工具)下载https://sourceforge.net/projects/liteide/解压D:\work\tools\liteidex37.4.win64-qt5.14.2\liteide\binhello world// 1、包声明// 程序要运行,必须得有一个main包package main// 2、导入fmt包import原创 2021-04-06 18:51:05 · 271 阅读 · 0 评论 -
Cloud OAuth2:Error creating bean with name ‘configurationPropertiesBeans‘
Error creating bean with name ‘configurationPropertiesBeans’最近在Spring Boot整合Cloud OAuth2的时候,遇到了上边的问题。原因是Spring Boot和Cloud OAuth2的版本不兼容Spring Boot版本2.4.4<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-原创 2021-03-31 16:59:49 · 290 阅读 · 0 评论 -
mybatis-plus批量插入InsertBatchSomeColumn
mybatis-plus批量insert效率低下怎么办(数据库是mysql的情况下)mybatis-plus的顶级IService接口有一个saveBatch()方法,但是它会执行多条insertSql,在数据量大的时候效率会非常差,如果我们是mysql数据库,又不想自己写mapper.xml,mybatis-plus提供了InsertBatchSomeColumn批量insert方法,需要我们自己注入下。1、继承DefaultSqlInjectorpackage com.superv.m原创 2021-02-03 14:22:06 · 23240 阅读 · 16 评论 -
mybatis-plus批量insert效率低下怎么办(mysql)
mybatis-plus批量insert效率低下怎么办(数据库是mysql的情况下)mybatis-plus的顶级IService接口有一个saveBatch()方法,但是它会执行多条insertSql,在数据量大的时候效率会非常差,如果我们是mysql数据库,又不想自己写mapper.xml,mybatis-plus提供了InsertBatchSomeColumn批量insert方法,需要我们自己注入下。1、继承DefaultSqlInjectorpackage com.superv.m原创 2021-01-27 00:39:22 · 2602 阅读 · 1 评论 -
eclipse无法查看Java源码
平时在eclipse中遇到JDK的一些源码,可能会有无法查看的情况,source not found1、点击Attach Source…按钮(在Class File Editor中)2、External location → External File…找到我们JDK安装的目录,在它下面会有一个source.zip,3、选中 → ok,应用。...原创 2021-01-25 18:57:58 · 152 阅读 · 0 评论