- 博客(154)
- 收藏
- 关注
原创 JSON.parse解析大整数踩坑
可以看到id的最后两位变成了00,uid的最后三位变成了400,原因是js序列化整数为Number的时候数据超出了Number的范围,导致出现了不可预测的结果。项目返回的id是long类型,比较大,简洁一下前端的代码如下。最好的解决方案是后端将大整数返回类型改为String。内的数字才是符合规范。
2025-07-30 16:39:26
148
原创 MySQL的union、union all导致排序失效
今天练习SQL,使用union all 连接各个查询导致我的各个查询排序失效,最后发现使用union all后会忽略各个模块的order by,只有最外层的order by才会生效。使用limit之后会优先将limit对应的查询强制执行完毕,再进行union all。方案 ② 在各个模块加上limit。方案① 嵌套一层select。
2025-07-19 10:28:01
277
原创 MySQL使用any_value()函数解决only_full_group_by报错
但是any_value返回的数据是组内随机的,确保数据安全准确后使用。意思是分组后select查询的列必须在group by列表中,函数是从当前分组中随机返回一个值,可结合。于是就可以用any_value。使用,也可结合窗口函数。
2025-07-18 15:19:01
316
原创 MySQL字符串常用函数
(1) 获取字符串的长度(2) 获取字符数量(3) 找到子串第一次出现的位置(从1开始),如另外instr也是一样的,只是参数与上面颠倒了一下,instr(str, sonStr),如。
2025-07-16 09:09:50
307
原创 MySQL自定义order by排序规则
① 一个字段排序优先China,其次America,最后Japanselectfromtb_userorder byasc可省略,如果有些数据不在指定范围内,则从最后开始按照默认排序② 多个字段排序先按照address升序排序,相同再按照name降序排序selectfromtb_userorder byfield(name, '李四', '张三', 'jane', 'jack') desc① 一个字段优先China,其次America,最后Japanselectfrom。
2025-07-15 16:16:30
160
原创 解决url参数传递嵌套对象的问题
我希望前端可以通过url传递嵌套的对象,如这个helpParam是帮我传递一些不定参数的对象,但是这样写实际上会被转化为/api/user/list?但是url是不支持[]这种字符的。
2025-07-15 09:25:03
198
原创 MySQL窗口函数详讲
关键字preceding:之前的following:之后的unbounded:无限制的: 当前行关键字使用意义窗口第一行从当前行向前数n行当前行从当前行向后数n行窗口最后一行。
2025-07-14 16:39:01
1471
原创 国内安装electron失败已解决
使用npm下载electron一直报错,最终在官网找到答案。以[email protected]版本下载为例。然后配置以下环境变量。
2025-06-27 07:15:00
368
原创 数据结构-前缀树
现有一个字典树,里面有money、mother、salary、salary、say五个单词。前缀树又叫字典树,可以快速查找字符串或字符串前缀出现的次数,方便进行前缀匹配、词频统计。其中根节点位置还没有字符,相当于空串,字符作为路径进行搜索,节点里有pass、end,
2025-04-17 16:18:01
1179
原创 算法刷题-AcWing-6123哞叫时间
② 编写update函数,代表更新指定范围内abb子串的出现次数,并对可能满足条件的结果进行记录。③ 按照刚刚的思路,考虑没有出现26变字符的情况和出现26变字符的情况。① 定义变量,获取输入。
2025-04-07 18:21:25
464
1
原创 Java网络编程NIO
缓冲区,包括直接内存缓冲和JVM内存缓冲。NIO是基于channel通信,一个线程管理一个selector,一个selector管理多个channel,这样一个线程就能管理多个客户端连接。一般是通过服务通道监听端口,等待客户端的连接通道,然后将连接通道注册到Selector,等待事件触发通道行为。由于IO无法直接操作应用内存,因此需要将应用内存数据拷贝到直接内存,如果使用直接内存,就可以少一次拷贝操作。:选择器,负责管理多个通道channel,通过监听通道绑定的事件,及时处理通道数据。
2025-04-03 14:08:24
1142
5
原创 JDK7HashMap为什么会死循环?
① 线程1记录当前迁移的节点为A,下一个将要迁移的节点为B,但是此时线程2刚好执行。⑥ 由于已经成环,因此循环迁移下一个节点永无止境,造成死循环。② 线程2记录当前迁移的节点为A,下一个将要迁移的节点为B。现有两个线程同时对数据进行迁移,都执行。(1)HashMap本身是不支持并发的。⑤ 线程1头插法迁移A,链表成环。③ 线程2迁移A,下一个将迁移B。④ 线程2迁移B,结束。
2025-03-31 08:15:00
1035
原创 Java网络编程socket
如:2001:0DB8:0000:0023:0008:0008:200C:417A,省略无效的0 -> 2001:DB8:0:23:8:8:200C:417A。TCP是一种可靠的通信协议,在通信的两端各建立一个Socket对象,通信之前连接已经建立,数据是通过IO流进行网络传输的。② 特殊情况:如果计算出的16进制表示形式中间有多个连续的0,则会进行0位压缩,如:FF01:0:0:0:0:0:0:1101 -> FF01::1101。③ 速度快,一次只能传输64KB数据,数据不安全,容易丢失。
2025-03-16 20:08:29
845
原创 Spring切面编程AOP
Spring AOP(面向切面编程)是 Spring 框架提供的一个模块,用于在不修改业务代码的情况下,增强或修改方法的行为。它通过切面(Aspect)实现了横切关注点的解耦,常用于日志记录、事务管理、权限控制等。定义一个控制器,包含一个test方法System.out.println("test方法执行中...");!!
2025-03-05 19:15:57
916
原创 什么是索引下推?
索引下推是MySQL5.6出现的优化手段,一般在联合索引中出现,对于失效的联合索引字段,在存储引擎层仍会进行条件筛选。如果没有索引下推,失效的联合索引字段并不会在存储引擎层筛选,而是返回到server层进行二次筛选。可以看到在索引层按照索引的匹配规则过滤了一次,在server层又按照非索引字段过滤了一次。可以看到age字段是在server层过滤的,并且存储引擎层进行了两次回表。要理解索引下推,首先知道MySQL架构分层。失效的索引也会在引擎层进行筛选。在MySQL5.6之前。MySQL5.6之后。
2025-03-05 19:14:32
393
原创 Redis搭建集群
现在本机搭建一主二从,主写从读,7001端口的redis为master节点,7002、7003为从节点。至此集群搭建完毕,在master节点写的内容可以在slave节点看到,但是slave节点只能读不能写。③ 给两个从节点配置主节点(只修改7002、7003的节点的redis.conf即可)今天学习了搭建redis集群,以redis6.2.6为例,在windows下搭建。② 打开他们的redis.conf,分别配置端口为7001、7002、7003。⑤ 启动redis-cli,分别连接三台redis。
2025-02-25 17:58:23
562
原创 Param ‘serviceName‘ is illegal, serviceName is blank
今天测试nacos服务配置拉取时报了这样一个错误,发现是spring.application.name空值造成的,但是我的bootstrap.yml文件明明配置了,难不成是没有加载bootstrap.yml文件?于是我引入了下面的依赖。果然,程序不报错了,解决!
2025-02-18 18:09:05
285
原创 Nacos源码集群部署
nacos2.x默认会使用三个端口,我们配置的是客户端端口(也是http主端口),主端口+1000为gRPC通信的客服端,主端口+1001为gRPC通信的服务端。因此为了避免端口冲突,我们的集群中不同nacos的端口不能紧邻,所以我们的三台nacos端口分别设置为8841、8843、8845。在任意地方创建nacos-home文件(方便找到集群配置文件等)找到console模块中的Nacos启动类,右键编辑。分别配置三个nacos的启动参数,运行启动即可。
2025-02-16 10:21:09
340
原创 Nacos集群部署
nacos2.x默认会使用三个端口,我们配置的是客户端端口(也是http主端口),主端口+1000为gRPC通信的客服端,主端口+1001为gRPC通信的服务端。因此为了避免端口冲突,我们的集群中不同nacos的端口不能紧邻,所以我们的三台nacos端口分别设置为。修改conf/application.properties文件,分别配置三个nacos的端口(8851、8853、8855)和mysql数据源。将conf/cluster.conf.example复制一份,改名cluster.conf。
2025-02-16 09:56:43
440
原创 nacos2.0.4源码启动
编辑启动类,添加VM选项(如果没有这一项,可以在修改选项中找到并显示),因为源码中是没有这个包的,需要在编译时生成。确定,然后运行Nacos类即可。,也可以在项目根目录执行。在项目maven处执行。解压缩,导入idea。
2025-02-15 17:30:07
307
原创 ThreadLocal相关面试题
答:如果外部对ThreadLocal对象的强引用关系断了,key还使用强引用,就会导致这个ThreadLocal对象无法被回收,同时这个Entry对象和value也无法被回收,就会造成内存泄漏。② 每次执行set方法时,都会清除一些无效的Entry(key为null的Entry,因为key=null证明外部已经不再使用,这个ThreadLocal对象已经被回收)答:如果value用弱引用,被gc回收了,key还存在,但是通过key获取不到数据了。
2025-02-13 08:55:16
307
原创 ReentrantLock底层原理分析
是juc包下的可重入锁,是AQS(AbstractQueuedSynchronizer) 的子类,可以完成公平锁、非公平锁。
2025-02-13 08:00:00
508
原创 Spring切面编程AOP
Spring AOP(面向切面编程)是 Spring 框架提供的一个模块,用于在不修改业务代码的情况下,增强或修改方法的行为。它通过切面(Aspect)实现了横切关注点的解耦,常用于日志记录、事务管理、权限控制等。定义一个控制器,包含一个test方法System.out.println("test方法执行中...");!!
2025-01-14 10:33:24
595
原创 元素 “context:property-placeholder“ 的前缀 “context“ 未绑定
步骤②,在xsi:schemaLocation中添加如下字符串。
2025-01-13 08:00:00
234
原创 翻转对问题
③ 左侧[left, mid]是i的范围,但是j在i的右侧,所以j的范围为[i+1, mid] + [mid + 1, right],所以在求出j在[i + 1, mid]范围后,还需要求出跨左右范围[mid + 1, right]因为左右范围数据是有序的,假设左范围为[9, 8, 7, 6], 右范围为[5, 4, 3, 2],L指针指向左侧范围数据,R指针指向右侧范围数据,的个数,最简单的思想当前是暴力,遍历每一个i,向后一直寻找满足条件的j,并记录翻转对的个数,但是这样的时间复杂度是O(n^2)
2024-12-24 08:00:00
594
原创 java乱序执行实验
当执行到x=b时,还未执行b=1,那么b=0,x=0,此时a=1已经执行过了,最后y=1。当执行到x=b时,已经执行b=1,那么b=1,x=1,此时a=1已经执行过了,最后y=1。为了对Java代码进行优化,提高执行效率,JVM和编译器对代码进行了优化,有些代码可能会乱序执行。可以看出15s内出现了4次乱序执行,之所以出现这种情况,就是代码从。所以x=0或x=1时,y=1。同理y=0或y=1时,x=1。那么不可能出现x与y同时为0的情况。如果是顺序执行的话,
2024-12-17 21:46:51
377
原创 CAS中的ABA问题
CAS(compare and set)操作是多线程环境处理并发的原子操作,更新一个值前先比较,如果与预期值一样则更新,否则失败。现有线程t1和线程t2,共享变量str="A"① 首先读取str,那么t1中缓存值为A,t2中缓存值也为A,② 紧接着t2修改str为B(str="B"),然后又修改str为A(现在str="A")由于t1中缓存值为A,内存中str也为"A",t1线程就会误以为str没有被修改过。ABA问题最核心在于t1错误的认为str没有被修改过。
2024-12-16 08:30:00
375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人