- 博客(52)
- 收藏
- 关注
原创 Linux安装anaconda
安装Anaconda完成后,如果安装过程中没有选择自动添加环境变量,你需要手动添加。打开你的shell配置文件,通常是。这将显示当前的PATH环境变量,你应该能够看到Anaconda的路径包含在其中。来检查是否安装成功,如果能够显示conda的版本信息,那么表示安装和配置成功。应该替换为你的Anaconda安装路径。例如,如果你的Anaconda安装在。请注意,如果你使用的是其他shell,如zsh,你可能需要编辑。,使用文本编辑器打开,例如使用。完成以上步骤后,你可以使用。
2024-08-07 14:22:42 342
原创 9.分布式锁
线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,如果脚本中的key、value不想写死,可以作为参数传递。
2024-08-05 21:30:31 958
原创 8.优惠卷秒杀
优惠卷秒杀8.1 -全局唯一ID每个店铺都可以发布优惠券:当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题:id的规律性太明显受单表数据量的限制场景分析:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。场景分析二:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们
2024-08-04 14:35:30 1025
原创 6.缓存击穿问题及解决思路
假设线程1去查询缓存,然后从value中判断出来当前的数据已经过期了,此时线程1去获得互斥锁,那么其他线程会进行阻塞,获得了锁的线程他会开启一个 线程去进行 以前的重构数据的逻辑,直到新开的线程完成这个逻辑后,才释放锁, 而线程1直接进行返回,假设现在线程3过来访问,由于线程线程2持有着锁,所以线程3无法获得锁,线程3也直接返回数据,只有等到新开的线程2把重建数据构建完后,其他线程才能走返回正确的数据。这种方案巧妙在于,异步的构建缓存,缺点在于在构建完缓存之前,返回的都是脏数据。解决方案二、逻辑过期方案。
2024-08-01 14:35:09 856
原创 Spring MVC
找到对应的控制器,也就是com.blue.controller.HelloController,然后在对应的控制器类中处理,返回模型,然后根据模型中的跳转,赋值等,在springmvc-servlet.xml中配置的前缀和后缀,跳转到对应的页面。当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
2024-07-10 17:15:38 1092
原创 Spring(二)
事务:把一组业务当成一个业务来做,要么都成功,要么都失败!事务在项目开发中十分的重要,涉及到数据的一致性问题,不能马虎!确保完整性和一致性。
2024-06-28 22:16:23 958
原创 MyBatis(二)
只读的缓存会给所有调用者返回缓存对象的相同实例。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。flushInterval(刷新间隔)属性可以被设置为任意的正整数,设置的值应该是一个以毫秒为单位的合理时间量。size(引用数目)属性可以被设置为任意正整数,要注意欲缓存对象的大小和运行环境中可用的内存资源。
2024-06-25 10:46:55 629
原创 MyBatis(一)
官网:https://mybatis.org/mybatis-3/zh_CN/index.html什么是MyBatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2024-06-24 15:03:50 542
原创 小结(一)
在JavaWeb项目中都是通过Servlet实现前后端的转接;自己编写Servlet方法后继承类库中的HttpServlet抽象类,其中的Service方法最为重要,它将前端的请求方式通过字符串匹配的形式来执行对应的后端方法。两个重要的参数:;request//获取cookies//该方法返回请求头中指定名字的值,大小写不敏感//此方法返回请求的HTTP方法,例如,GET, POST, HEAD, PUT, DELETE等。//该方法返回此请求的URL的部分,该部分表示请求的上下文路径。
2024-06-21 00:27:50 836
原创 Http请求中的Get和Post
然而,这绝对不是一个必须的做法,二者在大部分的情况下是分别处理POST和GET请求的。如果你的POST请求与GET请求需要执行相同的逻辑,那么可以这样做以减少代码重复;但如果他们需要执行的逻辑不同,那么你应该在doPost()和doGet()中分别写不同的逻辑代码。在Java的Servlet编程中,我们可以根据需要处理不同的请求类型,在doPost()方法中调用doGet()方法也是可以的。以上代码的意思是,当这个Servlet接收到POST请求时,它会直接调用doGet()方法进行处理。
2024-06-20 20:39:17 250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人