自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 docker-compose 部署常见的微服务中间件,看这一篇就够了

进入pluginsps:有的有一个文件 analysis-ik 我从本地找到了ik分词的文件复制到者 想要的可以私聊进入ik/config我新建了my.dic my_stop.dic 自定义分词和禁止分词文件【可参考其他已有的dic文件书写 其实就是每一行一个词】然后在IKAnalyzer.cfg.xml中添加生效重启容器生效!!参考文章四、redis五、zookeeper六、nacos。

2025-05-17 01:11:56 268

原创 学习记录:mybatis和jdbc实现数据表作为参数的相关的sql操作

1. 业务场景就是分表存储 然后查询id 确定表查;查询其他信息 融合所有表查询2. 有些看似简单的操作,第一做问题很多,比如这里的指定表插入;平时mp使用多了,都不太会写mybatis的xml以及想不到jdbc插入3. 说明一下xmlUser getUserByParam(Map<String, Object> params) 这样单个参数的 直接解析使用</select>这样多个参数的必须指定@Param 调用必须使用Param中参数获取 比如 user.nameVALUES。

2025-05-16 02:01:13 897

原创 分布式锁redisson的中断操作

1、主动被中断 2、线程池提前关闭(这个常见点 比如线程池的shutdown和shutdownnow(强制关闭),线程被中断)3、用户操作(比如取消操作)1、第一次用,不熟悉redis、redisson和配置文件 以为只需要配置一个redis的ip和端口公用。虽然在普通的业务流程中可能较少遇到,但在高并发、需要精细控制资源的系统中,这种中断处理是必要的。的超时是由 Redisson 内部实现的,但如果在等待期间线程被外部中断,仍会抛出异常。为什么要写这个,因为中断异常会很常见。当其他线程调用当前线程的。

2025-05-12 00:35:57 952

原创 算法:ACM模式输入、输出

1)当左右节点中存在最后一个节点结束【对于当前节点的右边叶子节点在上一层已经构建好了】2)避免左节点为最后一个节点 不能使用2*i+2判断 使用2*i+1 然后判断右节点。

2025-04-06 16:32:23 167

原创 Aop实现简单基于日志记录

【代码】Aop实现简单基于日志记录。

2025-03-14 20:20:15 309

原创 深拷贝和浅拷贝

浅拷贝就只是拷贝了外部的对象 对于对象内部的引用对象还是用的原来的 这样就导致了修改拷贝对象的内部引用对象 导致原来对象的内部对象也改变。创建一个新对象,但不复制对象内部的引用指向的对象。复制的是对原始对象内存地址的引用。改变新对象内部的引用所指向的对象会影响原始对象。创建一个新对象,并递归地复制原始对象及其引用的所有对象。新对象和原始对象完全独立,修改一个不会影响另一个。简单讲:深拷贝相当于递归拷贝 对于其中的对象类型也进行拷贝新的 不用旧的。

2025-02-28 12:08:27 504

原创 Java 重写接口并注入重写父类(oauth2的登录流程)

3、因为在类DaoAuthenticationProvider中UserDetailsService是通过setter赋值的 而不是注入的方式 因此如果不该写setter 将新的实现类注入 就默认用旧版的 这样之前的逻辑就都失效了。一、重写了UserDetailService的loadUserByUserName 实现了密码校验以及用户信息扩展。三、将改写的接口实现注入到继承类中(否则 UserDeatil的实现类并不会生效)1:会从加载ioc中加载接口以及相关的实现类(已经注入了在第一步)

2025-02-27 18:40:06 224

原创 线程同步辅助类的使用

1、必须使用semaphore.acquire();否则线程数量不会被限制 和普通线程一样。2、如果不执行semaphore.release();线程永远占用一个数量。1、可以理解成countDown()一次就减一 直到0结束。1、调用一次await() 就加1 到达指定数量结束。3、最多指定数量的线程 执行完释放后 进入新的线程。线程池是线程不变 这里是位置不变 线程改变。

2025-02-26 22:57:01 235

原创 工具类:序列化反序列化

【代码】工具类:序列化反序列化。

2025-02-26 17:51:03 90

原创 Java语法:重写第三方类的方法和第三方接口实现类的不同

这里以oauth2协议+springSecurity框架的账户密码和微信扫码登陆为例。一方面是密码登录改写UserDeatilService的实现方法loadUserByUsername();另一方面是改写类DaoAuthenticationProvider的方法additionalAuthenticationChecks()。

2025-02-26 12:52:17 257

原创 分布式锁基于数据库实现

实现分布式锁的方案有很多,常用的如下:1、基于数据库实现分布锁利用数据库主键唯一性的特点,或利用数据库唯一索引、行级锁的特点,多个线程同时去更新相同的记录,谁更新成功谁就抢到锁。2、基于redis实现锁redis提供了分布式锁的实现方案,比如:SETNX、set nx、redisson等。拿SETNX举例说明,SETNX命令的工作过程是去set一个不存在的key,多个线程去设置同一个key只会有一个线程设置成功,设置成功的的线程拿到锁。3、使用zookeeper实现。

2025-02-25 22:52:26 342

原创 Leecode刷题:LCR 076. 数组中的第 K 个最大元素

ps:对于所有数都相同会出现死循环。

2025-02-23 22:32:21 220

原创 Leecode刷题:209. 长度最小的子数组(ACM)

1)当水果有k+1种 不满足 =>缩=>当只有两种水果了=>扩 =>发现没有找到临界点满足【两种水果最大】2)由于求最大 因此可以记录所有满足条件的窗口求最大值 而求值最小 需要找刚好不满足的情况下的窗口+1。1) 滑动窗口 left=0 right=0 开始 left表示左端 right表示右端。1)首先一定要大于=>大于不一定是最小=>缩到刚好不满足=>当前窗口+1。2)while循环固定判断右端是否超出,未超出则加入窗口 (最后++)对比水果成篮 找最大的窗口。

2025-02-23 20:18:59 195

原创 Leecode刷题:443. 压缩字符串(ACM)

特殊的count>1 先记录count 然后重置count=1。所有新节点遇到就记录 然后更新count。1、双指针【记录不同节点】类似。2、记录次数[count记录]3、最后一个节点一定记录。

2025-02-23 19:28:11 158

原创 八股文实战之JUC:ArrayList不安全性

CopyOnWriteArrayList原理: 写入的时候(可能存在覆盖操作) =====>读写分离的思想(写入时复制一份给调用者 调用者写完 直接插入即可【防止写入时覆盖,造成数据问题】)lock锁。多个线程调用的时候(比如list),在读取的时候是固定的,但在写入的时候(可能存在覆盖操作)verctor原理:使用synchronized(效率低,因为只能允许一个线程操作)学习方案记录:1、先回用 2、货比三家、找不同解决方案 3、分析源码。源码:将整个列表复制一份然后插入数据 然后更新。

2025-02-22 22:16:18 301

原创 八股文实战之JUC:静态方法的锁和普通方法的锁

1、对于staic同步方法锁住的是class类模板(Class对象) 对象是线程(调用者) 调用者只有获取资源的锁才能调用。2、普通同步方法 锁住的资源是class对象 对象是线程(调用者)2、进程只有获取锁 才能访问锁对应的方法等资源。1、锁住的东西不同可以视作不同的锁。3、如果锁不同 就不存在锁竞争。

2025-02-22 21:25:19 192

原创 八股文实战之JUC:生产者消费者问题(虚假唤醒)

3)相应的wait和notify都需要修改成对应的对象,因为wait的目标是获取获取锁住对象的线程,即synchronized的对象的线程。1、对于wait需要使用while,防止虚假唤醒。1)常见的对于方法默认是实例对象this。2)如果不是this需要自己指定对象。

2025-02-22 19:55:27 221

原创 mydb:TM实现

TM就是事务管理:实现对于事务的新增(active)、事务的状态修改(commit、abort)、事务的状态判断。

2025-02-12 22:30:40 187

原创 java语法:Mysql使用

而普通查询是获取表1的所有行去和整个表2的所有行比较where条件 因此更加复杂。普通连接查询(join)=内连接查询(inner join)left join 和 left outer join等价。返回所有数据 如何(左或右)不存在 则返回null。外连接(全连接) 返回所有 不存在返回null。左边数据一定返回 还会返回右边匹配的数据。内连接 没有左右内连接 内连接等同连接。左连接 等价 左外连接 (右同理)ps:左内连接/右内连接 不存在。区别是 内连接是先连接然后去查询。

2024-08-02 11:42:22 282

原创 java语法:雪花算法生成随机id

生成的字符串形式的 ID 更类似于 UUID(Universally Unique Identifier)的格式。ID 由时间戳、数据中心 ID、机器 ID 和序列号四部分组成,确保 ID 的唯一性。这是核心方法,用于生成全局唯一的 64 位长整型 ID。通常用于生成一些特定格式的编号,如订单号、商品编号等。方法生成 ID,并将其转换为字符串形式返回。方法生成 ID,并将其转换为字符串形式返回。返回值为 UUID 风格的字符串 ID。返回值为 ID 的字符串表示。返回值为长整型 ID。

2024-06-28 22:28:58 761 1

原创 java技术:knife4j实现后端swagger文档

lombok依赖。

2024-06-28 22:20:44 402

原创 js:flex弹性布局

第二轴是否拉伸以及如何排列 默认是拉伸 /* align-items: stretch;/* 区别两边间隔占0.5 中间间隔占1 */flex-direction: row-reverse;ps:相当于justify-content中间隔方式。ps:相当于justify-content中对齐方式。/* 所有间隔相等 *//* 起点对其 *//* 终点对齐*/第一轴如何排列(假设:设置的轴称为第一轴)设置轴线:横轴 不轴内逆转。换行/列 是否轴外逆转。

2024-05-31 14:50:36 1185

原创 java技术:mq消息队列

可以理解成接收器仍然是接收队列 只是将队列和相应的交换机绑定起来,同时给交换机设置属性。接收消息: 给交换机设置不同的属性blue,yellow。发送消息时也设置属性key。接收消息: 给交换机设置不同的属性通配符。发送消息时也设置属性key。(后面两种一样,设置相应交换机即可)只是key不同 这个为" "发送方将消息发送至交换机(其他三种都是如此发送)接收方只需要接收相应的队列(区别于其他两种)ps:上述的发送接收前提是创建好了队列。ps:创建交换机同时绑定队列。

2024-05-30 13:24:45 561

原创 python:pycharm虚拟解释器报错环境位置目录为空

如果选不了 查看项目路径是否带中文,如果没中文也不行,最好不要放桌面,放不带中文的一个盘下。虚拟解释器要选到虚拟解释器目录下python.exe。

2024-05-24 21:23:49 2502

原创 java技术:oauth2协议

fuction:管理访问控制及哪些请求需要认证,以及需要哪些权限。

2024-05-23 17:16:42 1612

原创 java网络:过滤器修改请求头

如oauth2的过滤器即使order值比较大 仍会先执行。基于HttpServletRequest。有时候存在使用@Order(1) 不生效。

2024-05-23 16:26:49 634

原创 java报错:Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gate

而gateway是包含spring-boot-starter-webflux这个包的 如果使用第一种 需要排除pring-boot-starter-webflux。1、上面的代码:基于spring-boot-starter-web。2、基于spring-boot-starter-webflux。上面是security的访问配置。

2024-05-22 21:26:17 1113

原创 java技术:全局异常处理器、常用枚举、以及字段赋值

ps:对于异常处理一般是throw new Exception(e),可以静态化输出。全局异常处理类处理不同的异常都返回异常类型RestErrorResponse。RestErrorResponse定义:(前端沟通定义)

2024-05-18 13:42:08 277 1

原创 java技术:spring-secrity实现认证、授权

加载security前会加载的过滤器 可设置校验的接口匹配 这里的.antMatchers("/**").anonymous()时放行所有 既所有接口都会进入auth校验。.antMatchers("/r/**").authenticated()//访问/r开始的请求需要认证通过。.antMatchers("/**").anonymous()//放行接口。

2024-05-18 10:53:09 1043 1

原创 java技术:nacos

二、nacos加载顺序(优先级相反)5、重新创建一个(挂载配置)

2024-05-15 19:10:34 435

原创 java技术:aop切面

aop类型:@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行@Before:前置通知,此注解标注的通知方法在目标方法前被执行@After :后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行@AfterReturning : 返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行@AfterThrowing : 异常后通知,此注解标注的通知方法发生异常后执行区别:Around()环绕通知 传参使用ProceedingJ

2024-05-06 09:56:07 471

原创 java报错:java.lang.IllegalStateException: Method has too many Body parameters

feign调用将参数指定。

2024-04-15 12:11:06 181

原创 gitignore:常用说明

/src则只会忽略同级目录下src文件夹及其内容 不包括子文件夹。文件中添加忽略该文件的规则,以防止将其重新添加到版本控制中。文件夹,但不包括子文件夹中的内容。都会被匹配,同时它们的子文件夹中的内容也会被忽略。文件夹及其子文件夹中的内容。不会被匹配,它的子文件夹中的内容不会被忽略。的文件夹,无论其所在的层级如何。的文件夹以及其子文件夹中的内容。3、提交并推送gitignore文件。:这个模式匹配任意层级的目录下的。:这个模式匹配任意层级的目录下的。或者直接在仓库删除(推荐),以忽略指定的文件。

2024-04-11 20:58:04 366

原创 git:常用cmd命令

git branch。

2024-04-11 20:53:21 726

原创 java语法:sql相关

中ids不能是空列表 否则报错。

2024-04-11 16:53:03 457

原创 java语法:后端接收json对象

JSON.parseObject(jsonPlan,Plan.class) 将json字符串转成抽象的实体类 JSONObject。JSONObject.parseObject(jsonPlan,Plan.class) 将json字符串转成指定的实体类。中不包括某个字段(如name),而使用object.getString("name")就会报错。获取实体类的json字符串。二、如何将json转成实体类。一、接收json格式对象。fastjson依赖。

2024-04-10 21:54:59 1054

原创 java报错:程序包XXXXXX不存在,但pom文件没报错

直接找不到的包在生命周期重新install;

2024-04-09 21:15:22 334

原创 java技术:发生跨域解决

【代码】java之浏览器发生跨域解决。

2024-03-27 18:00:03 278

原创 Java语法:请求参数设置

当请求中没有提供该参数时,方法参数将使用默认值。注解将请求参数的值绑定到方法参数上,可以将参数值自动转换为方法参数的类型。,表示参数是可选的,如果请求中没有提供该参数,方法参数将会使用默认值或。如果请求中没有提供该参数,将会抛出异常。,表示如果请求中没有名为"page"的参数,将使用默认值1。注解可以从请求的查询字符串中获取对应参数的值。,表示从请求中获取名为"id"的参数值。注解可以从表单数据中获取指定参数的值。获取查询参数:通过指定参数名称,:指定请求参数的名称。:指定参数的默认值。

2024-03-27 12:14:47 481

原创 java报错:多模块启动报错Failed to determine a suitable driver class

原因多模块冲突 用idea分别打开启动。

2024-03-25 22:43:37 315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除