- 博客(54)
- 收藏
- 关注
原创 停止Win11系统的自动更新(30年)——如何避免系统自动更新
本文介绍了如何停止Windows 11的自动更新,帮助用户更好地控制系统更新。文章提供了四种方法:1) 通过设置暂停更新,2) 使用组策略编辑器禁用自动更新(适用于专业版及以上),3) 通过服务管理器禁用更新服务,4) 设置计量连接限制更新下载。每种方法都详细说明了步骤,用户可以根据需要选择最适合的方式。需要注意的是,停止自动更新可能会影响系统的安全性和稳定性,因此定期手动检查更新是必需的。
2025-02-08 16:26:49
1689
原创 TPS 和 QPS 的区别:深入了解这两个关键性能指标
TPS、QPS、性能优化、事务处理、查询处理、系统设计、高并发数据库、电商平台、支付系统、查询优化
2024-12-16 15:33:47
1622
原创 Java 使用 Redis 实现微博热搜功能
在实现热搜功能时,Redis 提供的SortedSet(有序集合)是非常合适的。SortedSet:是一个有序的集合,每个元素都有一个分数(score),Redis 会自动根据分数对元素进行排序。适合实现需要排序的场景,如热搜榜单、排行榜等。通过以上的实现,我们展示了如何使用Java和Redis来实现一个简单的微博热搜功能。通过 Redis 的有序集合,我们能够高效地记录和排序搜索关键词的热度,并在用户请求时实时返回当前最热门的话题。
2024-12-12 17:33:25
1102
原创 Java 使用 EasyExcel 实现百万级数据的秒级导出
使用 EasyExcel 导出百万级数据时,关键在于如何优化内存使用和性能。使用流式写入:避免一次性将所有数据加载到内存中,减少内存占用。分批写入:将数据分批处理,每次写入小部分数据,避免内存溢出。多线程优化:在导出过程中使用多线程并行处理数据,提高导出速度。EasyExcel 提供了高效且易于使用的 API,使得大数据量的 Excel 导出变得简单且高效。在实际开发中,结合这些技术,可以轻松应对百万级数据的导出任务。
2024-12-06 17:54:19
1879
1
原创 抖音评论系统的实现思路
MySQL:适合结构化数据,事务要求高的应用,如银行、电商系统等。MongoDB:适合数据模式不固定,需求快速迭代和大数据量处理的应用,如日志记录、社交平台、大数据分析等。数据库的选择,根据平台的用户量,以及平台未来的增长量进行进行选择。
2024-12-03 15:18:02
1715
原创 java使用easyexcel 一分钟 百万级数据快速分片导出 excel
由于 POI在处理大型文档时可能会占用大量内存,尤其是对于Excel文件。在处理特别大的数据集(如数万行Excel)时,性能可能会受到影响。有可能会出现内存溢出的情况。所以一般在处理百万计数据时,推荐使用easyexcel。首先准备数据:此处使用的mysql数据库,我们直接给表中插入四百万条数据。此处查询数据:四百多万条,大小将近100mb.数据的导出用时如下:我的电脑配置如下:本来还想将分片写入部分的代码,搞成多线形式同时写入,最后没有成功。原因是:easyexcel不支持多线程的同时写入。
2024-11-26 16:56:37
1150
原创 idea中,git提交时忽略某些本地修改.将文件从git暂存区移除
我们有时候在本地调试代码时,某些配置文件需要修改成本地环境中。当改完后,需要提交代码时,这些文件又不能推到git上。当出现这种情况,我们每次都需要手动去将不需要提交的文件的对号去掉。文件多了后,就很麻烦。4.现在在提交git时,我们就可以看见,我们移入新组的文件,已经不再默认的组中了。3,将不需要提交到git上的修改添加到新组中去。2.添加一个新的git分组。
2024-10-17 16:55:41
1028
1
原创 java使用策略模式优化代码中的if-else if 判断。
通过这种方式,你可以利用 Spring Boot 的依赖注入和管理功能,避免了使用大量的 if-else if 结构,使得代码更加清晰、灵活和可维护。注解将各种折扣策略注入到服务类中,并根据客户类型选择合适的策略。最后,可以在控制器(Controller)或其他服务中使用。方法接收客户类型和原始价格作为参数,并调用。在上述代码中,使用了。
2024-07-15 17:30:00
402
原创 大数据入门(四)
通过crc循环冗余校验法,可以实现数据的检错和纠错。Hadoop3.1.3副本节点选择。在数据传输过程中,如何确保数据的完整性性呢?
2024-05-16 17:15:00
192
原创 大数据入门(三)
HDFS的api相关操作:至此,hdfs的常用api操作,基本完成。点点赞点点关注呀,持续分享有用的知识........................
2024-04-18 16:30:00
193
1
原创 大数据入门(二)
HDFS(),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
2024-04-17 16:45:00
562
原创 傻瓜式启动关闭重启docker容器的脚本
持续更新有用的知识................................................选择对应的编号后,会列举所有关闭的容器或者所有开启的容器列表,当我要启动一个容器 时输入1,就会出现下面的页面。将代码写进一个sh文件。然后启动后,即可使用。然后输入指定的编号后,就会启动对应的容器。
2024-03-29 17:12:12
398
原创 大数据入门(一)
1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。2)Flume:Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;用于实时计算的场景较多。3、高效性:hadoop是并行工作的,以加快任务的处理速度。
2024-03-26 11:37:45
541
1
原创 java线上环境cpu飙升,排查策略。
CPU飙升问题定位的一般步骤是:首先通过top指令查看当前占用CPU较高的进程PID;查看当前进程消耗资源的线程PID:top -Hp PID通过print命令将线程PID转为16进制,根据该16进制值去打印的堆栈日志内查询,查看该线程所驻留的方法位置。通过jstack命令,查看栈信息,定位到线程对应的具体代码。分析代码解决问题。如果是空循环,或者空自旋。处理方式:可以使用Thread.sleep或者加锁,让线程适当的阻塞。在循环的代码逻辑中,创建大量的新对象导致频繁GC。
2024-03-22 16:17:39
950
原创 什么是分布式锁,分布式锁的几种实现方式
不具备可重入的特性,因为同一个线程在释放锁之前,行数据一直存在,无法再次成功插入数据,所以,需要在表中新增一列,用于记录当前获取到锁的机器和线程信息,在再次获取锁的时候,先查询表中机器和线程信息是否和当前机器和线程相同,若相同则直接获取锁;没有锁失效机制,因为有可能出现成功插入数据后,服务器宕机了,对应的数据没有被删除,当服务恢复后一直获取不到锁,所以,需要在表中新增一列,用于记录失效时间,并且需要有定时任务清除这些失效的数据;在这个例子中,锁用于控制访问数据库的流量,最终起到了保护系统的作用。
2024-03-15 17:15:06
1111
原创 订单超时自动取消订单实现策略
如果对于超时精度比较高,超时时间在24小时内,且不会有峰值压力的场景,推荐使用RocketMQ的定时消息解决方案。在电商业务下,许多订单超时场景都在24小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。点点关注呀,持续更新有用的知识............
2024-03-13 16:45:00
2882
1
原创 api接口防刷的多种策略(防止恶意刷接口行为)
6.网关:对于我们提供所有api接口,可以提供统一的API网关,它可以实现过滤、鉴权、限流等功能。用户请求我们的API接口时,需要先经过API网关,它转发请求到具体的API接口。5.日志监控和分析:监控接口请求日志,对异常请求进行识别和分析。通过监控异常请求的IP地址、请求路径、请求参数等信息,可以及时发现恶意刷接口行为,并采取相应的防御措施。综上所述,以上是一些常见的防止恶意刷接口行为的方法,可以根据具体场景选择适合的防御策略或者组合使用多种方式来提高安全性。
2024-02-18 11:51:24
1118
原创 java springBoot项目实现数据脱敏的策略
在实际的软件开发中,保护用户隐私数据是非常重要的。在Java Spring Boot项目中,通常需要对敏感数据进行脱敏处理,以确保数据安全性。本文将介绍几种常见的数据脱敏策略,并提供相应的实现方式和示例代码。
2024-02-06 14:41:57
758
原创 nacos修改yaml配置后,配置不生效问题,无法动态刷新配置问题
我们在springBoot项目中,通过@Value去获取,自定义在yaml中的配置时,会出现修改了nacos中的相关配置,但是服务没有动态刷新配置。解决方法1:在启动类添加动态刷新注解,@RefreshScope。解决方法2:将配置映射到一个实体类中。
2024-02-05 10:57:56
1954
1
原创 mybaitsPlus常见的主键自增策略
MyBatis-Plus 是 MyBatis 的增强工具,在自动生成 SQL 语句的同时提供了一些便捷的功能,其中就包括了主键自增策略。这样配置后,在执行插入操作时,MyBatis-Plus 会根据数据库的自增规则生成相应的主键值。其他策略的配置方式类似,只需将。属性设置为相应的值即可。选择主键自增策略时,需要根据数据库的支持和业务需求来合理选择。这些策略可以通过在实体类的主键字段上使用。
2024-01-16 09:39:42
1296
原创 spring源码解析(七)
通过代码模拟实现@Autowired,@Component,@Resource,@Component注解的简单的自我实现。持续更新中................,关注不迷路。具体实现过程,请看代码注释以及代码。
2024-01-11 17:32:22
410
原创 秒杀系统的设计思路(应对高并发,超卖等问题的解决思路)
用户通过前端请求获取秒杀地址的path。后端根据用户信息、商品ID等生成动态的秒杀地址。将生成的地址通过加盐的加密算法处理,存入Redis缓存中,建立用户ID和商品ID的关联。用户提交秒杀请求时,携带path参数,后端根据前端请求的URL获取path,再与Redis缓存中的地址进行比对,判断请求的合法性。通过这种方法,成功防止了用户通过直接请求秒杀地址进行恶意操作,保障了秒杀活动的公正性和安全性。
2023-12-29 17:18:24
1528
原创 布隆过滤器的基本原理
布隆过滤器(Bloom Filter)是一种空间效率高、查询速度快的数据结构,主要用于判断一个元素是否可能属于一个集合。它的主要特点是能够高效地判断一个元素是否在集合中,但不能确保元素一定在集合中,也就是可能存在一定的误判。
2023-12-27 17:19:24
885
原创 数据库千万级数据量查询的优化技巧及思路
数据库的分库分表是一种在数据库层面上的水平拆分策略,通过将一个大型数据库拆分成多个小型数据库(分库)并将每个小型数据库中的表拆分成多个子表(分表),来提高数据库的扩展性、性能和负载均衡能力。当单个数据库无法满足查询性能需求时,可以考虑使用数据库分片技术,将数据分散到多个数据库中,每个数据库只处理部分数据,从而提高查询的并发度和整体性能。这样,订单数据既按照一定规则分配到不同库,又在每个库内按照不同规则分配到不同表,实现了数据库的分库分表。2. 避免 SELECT。假设有两个库,一个主库(
2023-12-27 16:53:41
2560
原创 java高效读大文件(csv,text)的处理策略
从四种方式可以看出,性能最优的是Apache Commons IO流 对大文件的处理。我们可以得出一个结论,如果我们想要读取一个大文件,选择了错误的方式,就有可能极大地占用我的内存和CPU,当文件特别大时,会造成意向不到的问题。因此为了去解决这样的问题,有四种常见的读取大文件的方式。通过分析对比,发现,Apache Commons IO流是最高效的一种方式。
2023-12-26 17:38:40
2963
原创 java后端服务,常见的限流算法策略
1、计数器限流,一般用在单一维度的访问频率限制上,比如短信验证码每隔60s 只能发送一次,或者接口调用次数等。例如系统在指定的时间段内能同时处理 100 个请求,保存一个,处理了一个请求,计数器就加一,一个请求处理完毕之后计数器减一。
2023-12-21 17:48:53
1171
原创 幂等性解决方案
2、使用 redis 里面提供的 setNX 指令,比如对于 MQ 消费的场景,为了避免 MQ重复消费导致数据多次被修改的问题,可以在接受到 MQ 的消息时,把这个消息通过setNx 写入到 redis 里面,一旦这个消息被消费过,就不会再次消费。3、使用状态机来实现幂等,所谓的状态机是指一条数据的完整运行状态的转换流程,比如订单状态,因为它的状态只会向前变更,所以多次修改同一条数据的时候,一旦状态发生变更,那么对这条数据修改造成的影响只会发生一次。
2023-12-21 15:23:52
448
原创 手机扫码登录的实现原理
(注意此处:为啥要用临时token,为的就是手机端在下一步点击确认操作时,可以用它作为凭证,以此确保扫码,登录两步操作是同一部手机端发出的。2.接着,APP 扫描这个二维码,把 APP 的 token 信息、二维码 ID 发送给 Server 端,Server 收到请求后修改二维码的扫码状态,并生成一个临时 token.扫码登录的本质是,通过已经登录过的 App 应用,扫描未登录的 Web 端程序中的二维码, 通过某种机制触发登录凭证的写入从而实现 Web 端自动登录。然后浏览器定时轮询这个二维码的状态。
2023-12-15 11:28:59
843
原创 spring源码解析(五)
一个受 Spring 管理的 bean,生命周期主要阶段有 :1、创建:根据 bean 的构造方法或者工厂方法来创建 bean 实例对象2、依赖注入:根据 @Autowired,@Value ,@Resource或其它一些手段,为 bean 的成员变量填充值、建立关系此处注意: @Autowired不仅可以加载成员变量上,还可以加在方法上和构造方法上。3、初始化:回调各种 Aware 接口(@PostConstruct,@Bean()),调用对象的各种初始化方法。
2023-12-03 16:38:56
408
原创 代码解耦的一种实现方式
然而,后面如果又有一个需求是,在发送完短信后,在发送邮件。这时,我们就得新写一个发送邮件的类,然后注入到controller中,然后修改 “/register”请求,调用发送邮件的方法。这样后面如果还要别的需求,又得将service注入到,controller中。他的做法就是,将myservice注入到controller中,成为成员变量。通过事件解耦,优化后的代码,可知。我们只需要编写一个service类,让对应的方法监听,监听注册成功的事件即可。下面有一个需求,我在完成注册后,需要发送短信。
2023-11-29 21:37:12
83
1
原创 spring源码解析(四)
通过查看源码可知,源码中的addAll方法,底层实际调用的还是add方法。所以在addAll中的每个元素,都得调用一遍add方法。按照正常的逻辑来说,在程序执行完addAll方法后,第二个输出是6,这样才对。但是为什么输出了9呢,我们点进set的addall方法看看。可以看到,在使用组合关系的代码中,我们可以将这个对象作为一个变量放入我们的类中,来灵活的控制。需求:求解set总共进行了多少次add操作。通过下面的需求看看反面例子和正面例子。
2023-11-23 21:41:49
379
原创 微服务架构的优缺点
微服务架构是一种软件架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都运行在自己的进程中,并使用轻量级的通信机制与其他服务协作。这种架构风格有其优点和缺点,并不是所有的场合都适合使用微服务架构。我么需要根据自己的实际情况,自己的业务情况,具体分析。
2023-11-15 10:13:39
128
1
原创 HDFS上传本地的整个文件夹
注意:本地的localPath文件夹路径,最后一定要写一个斜杠(例如:/home/project/),project后面的斜杠一定要加。如果不加,会将这个东西当成一个文件,而不是一个文件夹。
2023-09-25 15:30:33
226
1
原创 @Transactional注解详解。失效的情况。
我们程序中的 @Transactional 只是给调用的数据库发送了:开始事务、提交事务、回滚事务的指令,但是如果数据库本身不支持事务,比如 MySQL 中设置了使用 MyISAM 引擎,那么它本身是不支持事务的,这种情况下,即使在程序中添加了 @Transactional 注解,那么依然不会有事务的行为,这就是巧妇也难为无米之炊吧。Spring本身并不提供事务,而是对JDBC事务通过AOP做了封装,隐藏了2和4的操作,简化了JDBC的应用。如果在方法中使用编程式事务操作,例如直接调用事务管理器的方法,
2023-08-16 14:35:07
291
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人