- 博客(249)
- 收藏
- 关注
原创 微服务nacos配置优先级,如何修改本地优先
我们想启动两个内容管理微服务,此时需要在本地指定不同的端口,通过VM Options参数,在IDEA配置启动参数。各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件 > 共享配置文件 > 本地配置文件。通过-D指定参数名和参数值,参数名即在bootstrap.yml中配置的server.port。启动ContentApplication2,发现端口仍然是63040,这说明本地的配置没有生效。这时候本地配置的就生效了。3、以共享配置文件 方式引入。2、以扩展配置文件方式引入。
2024-11-25 21:05:52
814
原创 JSR303校验
前端请求后端接口传输参数,是在controller中校验还是在Service中校验?答案是都需要校验,只是分工不同。Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。Service中要校验的是业务规则相关的内容,比如:课程已经审核通过所以提交失败。Service中根据业务规则去校验不方便写成通用代码,Controller中则可以将校验的代码写成通用代码。
2024-11-23 21:35:39
749
原创 解决跨域问题
在浏览器通过http://localhost:8601/地址访问前端工程。提示:从http://localhost:8601访问http://localhost:63110/system/dictionary/all被CORS policy阻止,因为没有Access-Control-Allow-Origin 头信息。CORS全称是 cross origin resource share 表示跨域资源共享。
2024-11-23 14:47:22
975
原创 修改仓库中子模块并推送到远程仓库的指定分支
因为现在修改的是仓库的子模块的东西,我们要先提交子模块,然后在提交主题仓库。更新主项目中的子模块状态:在主项目中,将子模块的状态更新到新的提交。查看子模块中的更改情况,确认哪些文件需要添加和提交。添加子模块中的文件:将子模块中的更改添加到暂存区。提交子模块中的更改,并附带一条描述性的提交信息。提交主项目中的更改,包括子模块的状态更新。首先,进入 XGBDIM 子模块目录。将更改推送到远程仓库的 zhb 分支。返回到主项目的根目录。
2024-11-20 15:39:49
463
原创 github克隆项目中的子模块submodule时遇到“无法访问远程仓库,请检查权限“
在拉取仓库的时候发现了新东西。仓库中有两个文件夹提示@点击之后,发现跳转到了另一个仓库 ,原来这是仓库的子模块,第一次见,也就是仓库中包含了其他的的仓库,就是这么简单的原理。但是在拉取仓库以后发现这两个子模块下是空的。原来拉去子模块要使用要是使用图形化工具,小乌龟之类的,拉取的时候记得勾上recursive但是这还没完。包含子模块一起拉取的时候又报了错。报错说我权限不够,我以为是SSH权限的问题,把自己的SSH重新在gittee上配置了一遍,发现还是报错。
2024-10-13 08:38:52
736
原创 SpringBoot中各种O的分层模型
设计模式的单一职责:各种XXOJavaBean,就是会做一些逻辑处理,包括接收事件,和查找事件等POJO的使用:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。
2024-09-26 12:34:17
1285
原创 Spring数据校验
/ 校验注解 绑定 校验器@Constraint(validatedBy = {GenderValidator.class}) //校验器去真正完成校验功能。Class<?Class<?我们上面的Vo中就用了@Gender的自定义校验,而我们只是标注了一个校验注解,真正的校验还是得交给校验器进行校验。@Constraint(validatedBy = {GenderValidator.class}) 就是指定我们的校验器在写一个校验器实现ConstraintValidator接口。
2024-09-26 11:18:03
1006
原创 Spring异常处理-@ExceptionHandler-@ControllerAdvice-全局异常处理
异常的处理分两类编程式处理:也就是我们的try-catch声明式处理:使用注解处理。
2024-09-26 10:24:36
884
原创 【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)
在虚拟机上通过Docker创建Nacos容器,已经创建成功,查看Nacos启动日志也是成功。但通过端口号加8848/nacos(如:http://IP:8848/nacos)无法访问到Nacos管理页面。可以看出我是因为用以前项目的nacos容器,以前配置过网段,所以我现在用虚拟机的IP访问不到,解决办法,在启动一个容器呗,不配置网段,多简单,这就是docker的方便之处。先检查好自己在虚拟机中的nacos容器确实是启动了,端口映射也是正确的。2、查询8848端口是否开放。3、开放8848端口。
2024-09-19 15:11:10
1712
原创 黑马点评27—原理—Redis内存回收
Redis本身是一个典型的key-value内存存储数据库,因此所有的key、value都保存在之前学习过的Dict结构中。内存淘汰:就是当Redis内存使用达到设置的上限时,主动挑选部分key删除以释放更多内存的流程。可以发现,当key的TTL到期以后,再次访问name返回的是nil,说明这个key已经不存在了,对应的内存也得到释放。惰性删除:顾明思议并不是在TTL到期后就立刻删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。当内存使用达到上限时,就无法存储更多数据了。
2024-09-12 22:04:51
1103
原创 黑马点评26—原理—Redis通信协议
try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth 123321// 3.2.set name 虎哥sendRequest("set", "name", "虎哥");// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 5.释放连接try {if (reader!if (writer!if (s!
2024-09-12 16:49:10
426
原创 黑马点评25—原理—Redis网络模型(真的是单线程吗?)
就去等待,在用户态创建一个空的events数组,当就绪之后,我们的回调函数会把数据添加到list_head中去,当调用这个函数的时候,会去检查list_head,当然这个过程需要参考配置的等待时间,可以等一定时间,也可以一直等, 如果在此过程中,检查到了list_head中有数据会将数据添加到链表中,此时将数据放入到events数组中,并且返回对应的操作的数量,用户态的此时收到响应后,从events中拿到对应准备好的数据的节点,再去调用方法去拿数据。我们的应用都需要通过Linux内核与硬件交互。
2024-09-12 13:25:06
1219
原创 黑马点评24—原理—Redis数据结构
对⼀个内部表示成long型的string执行append, setbit, getrange这些命令,针对的仍然是string的值(即⼗进制表示的字符串),而不是针对内部表⽰的long型进⾏操作。String的内部存储结构⼀般是sds(Simple Dynamic String,可以动态扩展内存),但是如果⼀个String类型的value的值是数字,那么Redis内部会把它转成long类型来存储,从⽽减少内存的使用。我们可以看到,key的类型固定是string,而value可能的类型是多个。
2024-09-12 08:46:20
871
原创 黑马点评23——最佳实践-服务端优化
客户端缓冲区:指的就是我们发送命令时,客户端用来缓存命令的一个缓冲区,也就是我们向redis输入数据的输入端缓冲区和redis向客户端返回数据的响应缓存区,输入缓冲区最大1G且不能设置,所以这一块我们根本不用担心,如果超过了这个空间,redis会直接断开,因为本来此时此刻就代表着redis处理不过来了,我们需要担心的就是输出端缓冲区。lua和事务都是要保证原子性问题,如果你的key不在一个节点,那么是无法保证lua的执行和事务的特性的,所以在集群模式是没有办法执行lua和事务的。
2024-09-11 22:31:17
1015
原创 黑马点评22——最佳实践-批处理优化
集群下的时候,使用Spring提供的SpringRedisTemplate这个已经做了关于集群的批处理优化,直接拿来用就行。pipeline就是大数据量的导入,pipeline是在单机模式下的。redis的处理耗时相比较网络传输的耗时其实是比较低的。所以我们最好采用批处理,
2024-09-11 21:52:35
403
原创 docker安装部署Canal-监听mysql
接下来添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对heima这个库的操作权限。恰好笔者这里就是使用了8.0.24的mysql,刚好遇到了这个问题,就在这里解决一下。Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。改成自己的密码哦,我们这里设置的密码是canal,所以我就要写canal。也就是密码的验证方式变化了,我们前面创建的用户使用的密码验证方式不行。运行完之后,我们可以查看用户,是不是真的添加进去了。打开mysql容器挂载的日志文件,我的在。
2024-09-11 19:41:55
2636
原创 黑马点评18——多级缓存-OpenResty
因为我们实际的tomcat一定是集群的,那我们的nginx会代理到tomcat的某一台服务器上(8081),在tomcat这一台服务器查询后返回结果,会形成一个JVM进程缓存,但是我们的nginx的默认负载均衡策略是轮询,下一次查询同一个商品id,nginx就把请求发到另一个tomcat服务器上(8082),那上次tomcat形成的jvm进程(8081)缓存无法命中,因为jvm进程缓存是不能共享的,所以,还得让8082服务器再次处理,那每次都这样,必然降低我们的命中率,降低性能。(注意:防火墙得关闭)
2024-09-11 16:59:25
1055
原创 安装OpenResty(Linux)
nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。看到里面的nginx目录了吗,OpenResty就是在Nginx基础上集成了一些Lua模块。默认情况下,OpenResty安装的目录是:/usr/local/openresty。opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。NGINX_HOME:后面是OpenResty安装目录下的nginx的目录。仓库,这样就可以便于未来安装或更新我们的软件包(通过。
2024-09-09 21:58:42
1690
原创 黑马点评16——多级缓存-JVM进程缓存
但是现在的nginx的压力太大了,所以nginx也要部署成集群当然我们的redis、tomcat都可以部署成集群。
2024-09-09 20:40:07
980
原创 win11控制台卡顿,白色空窗问题解决
在使用win11的时候,cmd打开控制台执行命令的时候,经常出现只弹出一个半透明窗口,卡好久才行的问题。打开cmd窗口,在标题栏上右键,打开属性。勾选“使用就控制台样式”
2024-09-09 19:59:14
748
原创 黑马点评15——分布式缓存-Redis分片集群
这是自动的故障转移,但有时候需要手动的故障转移——比如更换机器的时候,进行数据迁移。在分片集群中配置分片的每一个节点。添加新的节点后要重新分配插槽,
2024-09-09 17:56:28
604
原创 黑马点评14——分布式缓存-Redis哨兵
我们监控集群中的节点状态,发现master宕机,立马选一个新节点作为master。那谁来检测?——哨兵。
2024-09-09 15:19:20
299
原创 黑马点评13——分布式缓存-Redis主从
我们的repl_baklog是有上线的,一旦我们的环中,master持续记录,slave宕机的话,这时候增量同步就失败了,因为还没有同步的数据被新的master覆盖了。无法避免,只能尽量优化、减少。搭建过程参考我的博客。
2024-09-09 10:21:01
480
原创 单机部署Redis集群
我们需要执行命令来创建集群,在Redis5.0之前创建集群比较麻烦,5.0之后集群管理命令都集成到了redis-cli中。修改redis-6.2.4/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。
2024-09-07 11:36:07
2030
原创 黑马点评11——UV统计-HyperLogLog
我们这里没有真正的实现UV统计,但是我们在测试中测试1000000条数据,可以看出我们的内存占用非常小,而且误差也非常小。当高并发环境下的用户打过来的时候,我们把数据直接往HyperLogLog中放就可以了,误差完全可以接受。即使将来需要实现的话,其实难度也不是很大,直接把这些实现就可以了。简直就是天生用于UV统计的,太爽了!
2024-09-07 09:06:29
421
原创 黑马点评10——用户签到-BitMap数据结构
因为是当前用户的当天,所以保存需要的年月日不需要参数,可以直接获取。布隆过滤器也是使用BitMap实现的.但签到数据比较大,借鉴签到卡的思想。其实数据库完全可以实现签到功能。
2024-09-06 21:55:53
475
原创 黑马点评9——附近商户-GEO数据结构
数据库里没法实现按照地理坐标排序等复杂的搜索功能,我们把数据存到redis中,只需要保存id和对应的x以及y的坐标,就可以在查询的时候,从redis中根据坐标查询出id, 然后根据id去数据库中查询要的数据。
2024-09-06 20:51:59
581
原创 黑马点评8——好友关注-SortedSet
SortedSet会按照score值排序,然后有一个排名,如果按照排名查询,那和角标查询没什么区别,但是,我们的SortedSet也支持范围查询,score值就是我们的时间戳嘛,我们把时间戳从大到小的顺序进行一个排列,每一次查询的时候,记录下最小的时间戳,然后下次查询的时候,找比这个更小的,这样就实现了滚动分页了。分页流不能采用传统的分页模式,因为我们的数据会动态变化,比如上面的情况就会出现重复读取6的情况,list支持滚动分页吗?其实查询共同关注就是查询当前登录用户和查询的用户他们的关注的集合的交集。
2024-09-06 19:34:32
506
原创 黑马点评3——优惠券秒杀—全局唯一ID、秒杀下单、超卖问题(乐观锁)、一人一单问题(并发安全)
以前我们的优惠券下单业务是这样的:现在修改业务流程@Override// 1. 查询优惠券// 2. 判断秒杀是否开始// 尚未开始return Result.fail("秒杀尚未开始!");// 2/ 判断秒杀是否结束// 已经结束return Result.fail("秒杀已经结束!");// 4. 判断库存是否充足// 库存不足return Result.fail("库存不足!");// 5. 一人一单// 5.1 查询订单// 5.2 判断是否存在。
2024-08-31 23:49:06
2281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人