- 博客(66)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 MySQL编码导致的Emoji插入报错 UTFMB4
utf8mb4 是 MySQL 在 5.5.3 版本之后增加的一个新的字符集,它是 utf8 的超集,也就是说 utf8 可以表示的字符 utf8mb4 都可以表示,而且 utf8mb4 还可以表示一些 utf8 不能表示的字符。utf8 是 MySQL 中最早支持的 Unicode 字符集,它使用 1 到 3 个字节来编码每个字符,最大能表示的 Unicode 码点是 U+FFFF,也就是 Unicode 的基本多文种平面(BMP)。后来调查了一下,这个是表情包🔑,然后插入失败。
2025-04-01 17:51:06
184
原创 Mybatis框架批量更新数据时报错
很明显的sql异常,前文说过是个老接口,sql几年没动了,不可能是语法问题。于是想到是版本问题,select version()生产环境和测试环境果然不一样,于是去配置中心看配置有什么不一样,发现是测试环境多了allowMultiQueries=true 配置。这个配置项告诉MyBatis允许在单个数据库连接中执行多个SQL语句,从而实现批量插入或更新数据的功能。因为是个老接口,不可能是代码问题,正在循序渐进东看问题,但是领导一直在群里催进度,当时就慌了,给技术leader打了电话。
2025-04-01 15:32:53
193
原创 Linux虚拟机安装nginx踩坑记录
Unknown error“错误,网上基本都是说网络问题,各种设置网络配置啥的,其实只要ping一下百度:ping www.baidu.com 能ping通就说明不是网络问题。第三步,安装ngnix ,yum install nginx,同样如果不是root权限,前边加sudo。网上也是各种扯什么切换阿里云镜像,其实这本质没错,但是已经是阿里云镜像了,还切什么镜像。第一步,更新镜像,yum update 如果不是root权限,前边加sudo。解决方案:切换阿里云镜像。2.切换为阿里yum源。
2024-12-01 13:13:30
382
原创 归并排序速记
归并排序(Merge Sort)其基本思想是将数组分成若干个子数组,分别对每个子数组进行排序,然后再将这些子数组合并成一个完整的、有序的数组。归并排序的主要优点是其稳定性(即相等元素的相对顺序在排序前后不会改变)和高效性(时间复杂度为O(n log n))。//每个小组走完左边和右边就就行排序,比如(0,1)走完(0,0)和(1,1),就会走 merge(arr, 0, 0, 1);* 合并数组-不是递归。
2024-10-29 15:23:27
493
1
原创 快速排序简单实现
选择基准数-一般是最左边的,也就是第一个arr[0](如果是左边第一个,则下一步则从右边开始,如果是右边第一个,则从左边开始)* 从右边开始,如果比基准数大,左移,直到找到比基准数小的,停止,开始左边,如果比基准数小,右移,直到找到比基准数大的。* 把基准数和相遇位置数互换,这个时候基准数就是区分两边大小的标准数。* 两个找到的数左右交换,继续第二步,直到左边和右边相遇。* 基准数左边和右边各自分别进行以上操作-分而治之。
2024-10-28 15:18:13
237
原创 冒泡算法及其优化
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。因为冒泡算法是相邻两个比较,如果某轮没有交换,则说明数据已经排序好了,直接返回即可。
2024-10-28 11:44:43
457
原创 关于希尔排序的理解
希尔排序通过将数组元素按一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,整个数组恰被分成一组,算法便终止。i=i+step);分组,我们需要不断分组,比如一共10个数排序,先除以2,分成5份(也就是步长是5,下边回会用),每份下标就是[0,5],[1,6],[2,7],[3,8],[4,9],(注意这是下标,不是值),然后再除以2,分成2份,以此类推,直到分成一份;排序就是排序,大家不要管分组的事,只要记得这里有个步长,也就是分几组就行,后边会用。
2024-10-18 23:31:58
443
原创 斐波那契的理解
斐波那契就是从第三项开始,每一项都等于前两项之和。其数值一般为:1、1、2、3、5、8、13、21……在数学上,这一数列可以用递推的方式定义:F(n)=F(n-1)+F(n-2)(n≥3,n∈N*),也有定义方式认为F(0)=0,F(1)=F(2)=1。今天在看斐波那契的时候感觉还是似懂非懂,记录一下。
2024-10-15 19:23:55
246
1
原创 彻底理解汉诺塔
既然最上面的2个盘子都调用move(2,A,B,C)移开了,那么第3个盘子自然也可以从A--->B了,之后再把放在C上面的2个盘子从C移动到B上就完成了移动上面3个盘子的任务了。这三个步骤就是move(3,A,C,B)所做的事情,因为我们已经证明move(2,A,B,C)和move(2,C,A,B)是可以详细列出移动2个盘子时每步移动的动作的,而中间的A--->B是一步显而易见的移动动作,所以可以确定move(3,A,C,B)是能列出每步的移动动作的。这里需要注意,开始柱,中转柱,目标柱。
2024-09-24 16:42:03
1075
原创 Compareable
在Collections.sort()中使用不同:一个参数,默认是Comparable自然排序,二个参数,需要传入Comparator外部排序。排序方法不同:Comparable重写方法compareTo(T o),Comparator重写方法compare(T o1, T o2)应用:目标类实现 Comparable 接口,重写 compareTo(),定义排序规则,就可以直接调用。定制排序: 定义一个单独的对象比较器,继承自Comparator接口,实现compare()方法。
2024-09-06 15:48:27
211
原创 Collections.sort
在排序过程中,Arrays.sort()方法会不断地将数组分割成两半,对这两半进行递归排序,然后将排序好的两半数组进行合并,最终得到一个有序的数组。小于0时,相邻的两个元素o1和o2交换位置。需要注意的是,o1是List中下标较大的那个元素,o2是List中下标较小的那个元素。sort()中有两个参数:一个是List,也就是待排序的列表,还有一个是比较器comparator,比较器决定了集合中元素的排列方式。所以,sort的本质就是利用比较器中的compare方法判断列表中相邻的两个元素是否发生交换。
2024-09-06 11:12:12
422
原创 @ComponentScan注解
在项目的io.mykit.spring.plugins.register.filter包下新建MyTypeFilter,并实现org.springframework.core.type.filter.TypeFilter接口。此时,我们先在MyTypeFilter类中打印出当前正在扫描的类名,如下所示。/*** @author* @description 自定义过滤规则*//*** metadataReader:读取到的当前正在扫描的类的信息。
2024-09-04 15:15:18
1312
原创 @ConditionalOnProperty注解
是Spring Boot框架中的一个条件注解,它主要用于根据应用程序配置文件(如或)中的属性值来控制Bean的创建和加载。以下是对。
2024-09-03 10:53:52
1249
原创 关于sorted的Comparator.comparing排序字符串乱序问题解决
日期一直都是错的,调查后发现日期是String类型,而且是2024-05这种格式,没法转换数字,今天在对列表集合进行排序的时候,Comparator.comparing有个列表怎么都不对,需求:先使用日期排序,再使用销量排序。经调查,String字符串是按照。
2024-08-07 14:43:27
875
原创 JDBC详解和相关组件详解
JDBC是java定义的一系列接口,然后由各厂商去实现,java是主导者定制标准,各大厂商去实现 独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。点开mysql-connector-java包->meta-inf->services->java.sql.Driver,会有加载的驱动名称om.mysql.cj.jdbc.Driver。设置参数,下标从1开始。
2023-03-22 15:21:47
356
原创 分布式锁Redisson的源码总结--可重入锁篇
最近在看Redisson的源码,用了将近一周的时间终于看完了,现在总结一下比较重要的一些点,如果不够仔细,还请各位指出问题所在,如下是可重入锁的源码1. 创建锁RLock lock = redisson.getLock("mylock");创建的是RedissonLock2. lock.lock()或者lock.lock(1000,TimeUnit.SECONDS);如果传入leasetime也就是上文的1000,则leasetime就是用传入的值,否则默认使用30000ms,也就是3...
2021-06-26 16:47:36
387
转载 Linux如何查看JDK的安装路径
如何在一台Linux服务器上查找JDK的安装路径呢? 有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢? 下面总结了一下如何查找JDK安装路径的方法.1:echo $JAVA_HOME使用$JAVA_HOME的话能定位JDK的安装路径的前提是配置了环境变量$JAVA_HOME,否则如下所示,根本定位不到JDK的安装路径[root@localhost ~]# java -versionjava version "1.7.0_65"OpenJDK Runtime Enviro.
2020-07-23 23:48:19
202
原创 windows下配置tomcat的GClog
step1.找到配置文件进入tomcat安装目录的bin文件夹 window下找到catalina.bat(Linux是catalina.sh)配置JAVA_OPTS参数,主要是红色部分。我这里配置的是tomcat目录/log目录下step2.配置文件在set "JAVA_OPTS=%JAVA_OPTS% ……"下添加如下语句(……的意思是可能有别的信息)set "JAVA_OPTS=%JAVA_OPTS% -verbose:gc -XX:+PrintGCDetails -XX:+Prin
2020-06-23 23:29:22
782
原创 配置tomcat psi-probe
step1.新建文件%tomcat_home%/conf/Catalina/localhost/manager.xml内容如下<?xml version="1.0" encoding="UTF-8"><Context privileged="true" antiResourceLocking="false"docBase="${catalina.home}/webapps/manager"><Valve className="org.apac...
2020-06-22 22:55:49
295
转载 Redis 6.0.0 稳定版发布
Redis的作者在博客上宣布:Redis 6.0.0 稳定版发布了。原文地址:http://antirez.com/news/132那么,从RC1到今天,除了稳定之外,还有什么变化呢?1、重新设计了客户端缓存,特别是放弃了caching slot,而只使用key names。2、现在Redis支持这样一种模式:如果用于复制的RDB文件不再有用,它将立即删除。在某些环境中,最好不要...
2020-05-03 12:49:07
365
原创 CentOS6上安装Python3.7“No module named '_ctypes'”问题解决
今天在cenos上安装Python3.7.0的时候,遇到一个问题:在执行make install的时候,总是报ModuleNotFoundError: No module named ‘_ctypes’,后来查了一下,发现基本都一样,都是你抄我的,我抄你的,就是3.7版本用到外部模块_ctypes,需要一个新的包libffi-devel,安装此包之后再执行make&&make in...
2020-02-22 00:25:01
1180
1
转载 JVM内存结构 内存模型 内存对象
JVM内存结构、Java内存模型和Java对象模型,是什么首先,这三个概念是完全不同的三个概念。本文主要目的是对这三个概念加以区分以及做简单的介绍。而这每一个知识点都是又都是比较复杂的。以后会单独写文章做详细介绍。Jvm内存结构我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。其中有些...
2020-02-20 14:47:25
229
1
原创 网址 URL 路径加斜杠“/”和不加的区别
最近群友提了一个问题,爬虫闯关第三关时,发现被爬网址最后不加 /,就出现一直没有正确响应的情况,我打开浏览器的调试模式看了下,发现不加 / 时,地址返回的是 301 MOVED PERMANENTLY,怪不得哦~但是我也发现有些网址结尾带有斜杠,而有的网址后面没有带斜杠,这个斜杠到底是干嘛的?加不加有什么区别呢?又为什么我们在浏览器地址栏上打出一个网址,按回车后地址末尾会自动加上一个反斜杠?...
2019-12-09 14:23:03
8580
原创 new String与toString的区别
今天在学习rabbitmq的时候,消费端转换出的消息总是类描述,查了一下,是因为解析byte的时候用了.toString,应该用new Stringbyte[]字节数组的toString()获得的字符串,和使用new String(byte[]) 构造一个新的字符串。得出的结果不同。Java对象都继承于Object,Object中提供了toString方法,用于简单返回该类的类签名。在Ja...
2019-12-07 23:46:35
469
原创 rabbitMQ重启
重启rabbitmq服务通过两个命令:rabbitmqctl stop:停止rabbitmqrabbitmq-server restart: 重启rabbitmq因为rabbitmqctl是没有restart命令的,所以需要这么两步
2019-12-01 17:47:19
6171
原创 RabbitMQ使用手册中文
原文地址https://blog.youkuaiyun.com/csdnzouqi/article/details/78926603
2019-11-30 17:34:04
2889
转载 mybatis IncompleteElementException:Could not find result map java.lang.String
MyBatis项目中在查询数据库时遇到org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.String。原因了把resultType="java.lang.String" 写成了resultMap="java.lang.String" ,就会出错的,注意这是对你整...
2019-09-02 17:20:29
528
转载 TCP的三次握手与四次挥手理解
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字...
2019-05-18 15:44:57
116
转载 java web项目下的lib和build path 中jar包问题解惑
一、build path&WEB-INFO/lib介绍build path:可以说是引用;WEB-INFO/lib:可以说是固定在一个地方;eclipse编译项目的时候是根据build path的,如果不用eclipse来发布项目的话,就会出现找不到jar,tomcat运行项目首先是在它自己的公共lib里找jar,如果找不到的话就会去项目的WEB-INFO/lib目录找,如果找不...
2019-04-22 12:45:55
1086
原创 sqlplus执行单个sql脚本和批量sql脚本
用PL/SQL在oracle下执行多个SQL脚本的方法:PL/SQL developer----->File------>New---->command window然后在弹出的窗口里依次执行:SQL> @f:\abc\a.sql;SQL> @f:\abc\b.sql;SQL> @f:\abc\c.sql;SQL*Plus 中执行多个*.sql脚本文...
2019-04-20 11:07:15
7089
原创 NIO使用总结
服务端创建关键步骤1) 创建服务端启动类对象(ServerBootstrap)2) 设置线程组(Boss 线程组和 Worker 线程组)3) 设置服务端 channel 对象(NioServerSocketChannel)4) 设置 ChanelHandler 对象5) 绑定并启动端口监听(等待客户端链接)2. 服务端代码实现代码如下:创建事件服务器public class ...
2019-03-20 17:37:40
143
转载 一致性哈希算法(consistent hashing)的理解
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balan...
2019-03-16 22:34:04
117
转载 关于jar包add to build path与放入lib下的区别
一、add to build path比如某A.jar放在C盘,而你的classpath设置的是D盘的某些路径,如果你将A.jar包add to build to path,实际上是额外增加了一个对C盘这个jar包路径的引用,A.jar的物理路径没有发生改变。另外,这里引入的只是我们编译用到的jar包。二、将jar包放入lib下这时是指A.jar真实的放在了webroot下的lib文件...
2019-02-28 11:04:39
914
转载 类(型)的生命周期--装载、连接、初始化、卸载
Java虚拟机通过装载、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。 1. 装载 装载阶段包括三个基本动作: a) 通过该类型的完全限定名,产生一个代表该类型的二进制数据流。b) 解析这个二进制数据流为方法区的内部数据结构(方法区)c) 创建一个表示该类型的java.lang....
2018-12-03 15:54:19
225
原创 java中static详解
今天在看《Thinking in Java》时,看到文章介绍静态。就想再深入钻研一下,记几个注意事项:首先,static 是Java中的一个关键字,我们不能声明普通外层类或者包为静态的1.静态变量:静态变量是属于类的,而不是属于类创建的对象或实例(当然,类对象实例也可以调用静态变量,效果和直接类.变量一样)。因为静态变量被类的所有实例共用,所以非线程安全的。通常静态变量还和关键字fin...
2018-12-03 11:38:26
211
转载 Eclipse中maven项目目录 Java Resources 和src区别
使用maven管理java web项目时,我们往往会被eclipse上展示的目录结构所迷惑,明明有个Java Resources包,为啥又冒出个src文件夹呢?我们先看看整体的目录结构:经过对比,可以发现src下多了一个webapp文件夹,这个文件夹里存放着项目所有页面资源。项目右键>Properties>Deployment Assembly。可以看到src/ma...
2018-11-11 22:35:55
4433
原创 数据结构--树基本概念
树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合。n=0时称为空树(1)每个元素称为结点(node);(2)有一个特定的结点被称为根结点或树根(root)。(3)除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。节点的度:一...
2018-10-25 17:38:15
216
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人