自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 i++是线程安全的吗?如何解决线程安全性?

AtomicInteger 的效率高是因为它是互斥区非常小,只有一条指令,而 Lock 的互斥区是拿锁到放锁之间的区域,至少三条指令。如果想要保证其多线程下的安全性,可以使用原子变量(AtomicInteger,参考 Java并发编程之原子变量)、如果是方法里定义的,一定是线程安全的,因为每个方法栈是线程私有的;如果是类的静态成员变量,i++则不是线程安全的,因为 线程共享栈区,不共享堆区和全局区。在这三步之间的都可能会有CPU调度,造成i的值被修改。如何解决线程安全性呢?读值,从内存到寄存器。

2024-02-01 08:10:11 443 1

原创 day03工作流

Activiti7官网提供的设计器就是基于bpmn-js实现的,使用npm run dev命令启动,访问地址是http://localhost:9013/业界流行的工作流技术有JBPM、Activiti、Flowable、Camunda,占有率最高的是Activiti。实现入退住,涉及多个表单的提交和多个角色的审核,若要实现这些流程的开发,最好的技术选型是使用工作流技术。前端开源项目中的项目bpmn-js开源项目,市面上的流程设计器都是基于它改造的。此项目中是为了实现入住管理,审批流。

2024-02-01 08:09:09 380 1

原创 中州day02

配置和使用模块:登录系统后,可以根据实际需求配置和使用相应的模块,如部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。若依平台是一个基于SpringBoot+Bootstrap的极速后台开发框架,具有强大的功能和丰富的模块。建立数据库:根据项目需求,建立相应的数据库。自定义开发:若依平台提供了强大的一键生成功能,包括控制器、模型、视图、菜单等,可以根据实际需求进行自定义开发。修改项目数据库连接密码:在项目配置文件中,修改数据库连接密码,确保与建立的数据库密码一致。

2024-01-30 21:00:26 386 1

原创 项目逐字稿

优惠券的规则信息表有:优惠券id,优惠券的名称、优惠券的名称、优惠券的类型、折扣类型、是否限定作用的范围、折扣力度(几折或者满多少减多少)、使用门槛、最高优惠金额、获取的方式(手动直接领取,兑换码兑换)、开始发放时间、结束发放时间、优惠券有效天数、优惠券有效期的开始时间,总数量、已发放的数量,已使用的数量、没人限领的数量、创建时间、更新时间、创建人、更新人;用户领取优惠券的记录:用户券id,优惠券模板id,优惠券有效期开始时间、优惠券有效期结束时间、优惠券使用时间、优惠券状态、创建时间、更新时间;

2024-01-30 17:15:18 360 1

原创 中州养老day01

中州养老的核心业务流程是这样的,首先要参观预约(老人及家属通过小程序或者APP预约,也可以电话预约),然后就可以出示预约信息到院参观,有入住意向之后可以办理入住(办理入住的时候就有一个很长的审批流),之后就给老人提供计划内的护理服务,家属可以绑定入住成功的老人,老人要外出需要请假销假(这也是审批流,但是比较短),最后老人觉得不合适可以办理退住。我在公司中开发一个项目的时候,会先大体查看项目的功能项,大体看看有哪些模块,模块中有哪些包,这些包都是干什么的。之后解决测试中出现的问题,解决完之后进行回归测试。

2024-01-28 21:54:41 529

原创 day08

其次,如果一个线程获取锁成功后,锁的默认生存时间为30s;Redisson会通过watchdog(看门狗),监视当前客户端是否持有锁,如果继续持有,会给持有锁的线程每隔10s续期一次;分布式锁是分布式场景下控制并发的一种手段,保证微服务在并发情况下抢锁只能抢一个;我了解的分布式锁的实现方式有mysql的唯一约束和redis的setnx;首先,在订单确认页面查询可用优惠方案,主要判断订单是否符合优惠的条件,例如满减门槛或者是否适用优惠券的分类;在高并发的情况下,只有一个客户能够成功执行命令,从而获取到锁;

2024-01-24 20:42:39 353

原创 day07

优惠券功能在我们的项目中主要用于提升销售力度、吸引用户量;优惠券的主要功能如下:1.优惠券发放:发放优惠券主要是更新优惠券领取时间范围和使用时间范围,优惠券状态,这里面只有开始领取时间需要判断是否立即发布,并生成兑换码;2.优惠券查询:在优惠券页面可以查看到手动领取,处于发放状态的优惠券如果优惠券未领取或未达到领取上限则可以立即领取,如果优惠券已领完则展示已领完如果用户已领取优惠券,则展示去使用;3.领取优惠券:校验优惠券是否存在,存在才可以领取;

2024-01-22 21:37:17 437

原创 day06

在这个过程中,由于每个月都操作,因此,我们使用的是XXL-JOB定时任务来执行的,另外,由于历史榜单较多,我们使用的是分库分表策略,每个赛季记录分为一张表。在实时榜单中,我们需要频繁的对数据进行操作,因此我们使用redis的zset进行储存数据,在用户获得积分后,同步写入到redis中,用户的积分就是zest集合中的分数,按照分数进行排名。XXL-JOB分为三个任务,首先,执行创建上个月的数据表,成功后,读取Redis数据,写入MySQL数据库,最后,清空Redis中的缓存。最后,情况Redis中的缓存。

2024-01-19 23:06:35 337 1

原创 day05

紧接着就是添加积分的业务了,我们得判断该积分获取的类型是否有积分获取的上限,没有的化就直接保存,若是有积分上限,我们要根据上限确定本次积分可以获取多少,这个过程中,首先我们需要获取到今天这个类型的获取积分方式在之前获取了多少分,然后与积分上限做对比,若超过了积分上限,就不可再添加了,结束程序;最后是查询今天获取的积分,我们会设置查询条件位今天的起始时间和结束时间,用户id,以及积分获取的方式分组等条件,查询今日积分按类型划分,然后将所有积分相加及是今日的所有积分。2.Pipeline(管道)

2024-01-18 21:53:20 342 1

原创 day04

返回的结果是redis中数据变更的数量,如果数量为null或0,删除失败,结束流程。

2024-01-18 08:14:50 352 1

原创 day03

首先,在实体类中定义验证规则,我们在我们的实体类中使用注解来定义字段的验证规则。在我们的问答系统中用到了两个微服务,三张数据表,分别为学习微服务(learning)中的问题表和回答或评论表,以及用户微服务的用户表;回答表则用于存储回答的内容,包括回答id、问题id、评论id、回答人id、回答的内容、回复的目标用户id、回复的目标回答id、回答次数;在我们的项目中来说,问题和评论的数据量比较大,且价值性不高,所以使用 MongoDB更合适,而不是使用MySQL来进行数据存储。

2024-01-15 23:50:21 371

原创 day02

生成课表的业务涉及到的微服务有交易微服务和学习微服务,使用消息中间件RabbitMQ异步调用;首先交易微服务负责传递消息到MQ上,用户先购买或者报名课程,如果课程是免费的,就可以直接报名;如果是付费的,则需要用户完成课程下单支付成功后,发送消息到MQ;然后学习服务中定义监听器负责监听MQ,当获取到MQ中的课程信息后,调用课表的业务层进行新增操作;最后调用课程微服务根据课程主键查询课程信息,再进行循环遍历,封装课表信息,计算并填入过期时间,id和课程id,再批量保存;

2024-01-14 12:31:28 402

原创 day01

项目实战流程

2024-01-12 16:11:07 396 1

空空如也

空空如也

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

TA关注的人

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