自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从事务与锁机制出发深入理解 MySQL 在高并发场景下的稳定性保障

事务和锁是MySQL稳定性的基石,也是高并发系统中最容易被低估的复杂点。只有在设计阶段就充分考虑并发场景下的行为,数据库才能真正成为系统的支撑,而不是性能瓶颈。

2026-01-09 14:53:57 363

原创 理解 MySQL 的索引设计逻辑:从数据结构到实际查询性能的系统分析

高质量的索引设计,源于对数据结构、查询模式和业务场景的综合理解。与其盲目添加索引,不如先弄清楚查询真正“慢”在哪里。只有在理解原理的基础上进行设计,索引才能真正发挥其价值。

2026-01-09 14:50:52 396

原创 从语言演进到工程实践全面解析C++在现代软件开发中的设计思想性能优势与长期生命力

它在保留C语言高效、贴近硬件特性的基础上,引入了面向对象思想,使得程序在具备性能优势的同时,也能够更好地应对大型工程的复杂性。随着时间推移,C++不断吸收新的编程范式,从最初的面向对象,到泛型编程,再到现代C++强调的资源管理、并发与函数式特性,逐渐形成了一门高度多范式的语言。因此,现代C++的发展方向之一,就是在不牺牲性能的前提下,降低出错概率,提高代码的可维护性。初学者往往会被繁多的特性和复杂的语法细节所困扰,但在实际工程中,真正高质量的C++代码,往往遵循清晰、克制的设计原则,而不是滥用语言特性。

2026-01-09 14:35:59 442

原创 C语言的性能优化实践全解析:从编译器自动优化机制到程序员手动调优思维与工程经验总结

本文将从性能优化的基础理论出发,逐步深入到编译器优化、手动优化以及性能分析方法,系统性地梳理C语言中的性能优化路径。从算法选择,到编译器利用,再到贴近硬件的手动优化,每一步都服务于同一个目标:在可控成本下,获得可预期的性能收益。真正高水平的C语言程序,并不追求极端优化,而是在性能、可读性和可维护性之间找到最适合项目的平衡点。对于复杂逻辑或与硬件强相关的代码,编译器的优化能力可能受限,这正是手动优化存在的意义。现代编译器本身就是极其复杂的优化系统,合理利用编译器能力,是性能优化的重要一环。

2026-01-09 01:25:33 340

原创 从底层逻辑到工程实践,深入理解C语言在计算机世界中的核心地位与持久价值

这种“自由”并不总是友好的,它意味着程序员必须为自己的选择负责:一次疏忽的内存操作,可能带来难以排查的错误;理解了C语言,再去面对其他语言的自动内存管理、复杂框架或抽象机制时,反而更容易分辨哪些是本质,哪些只是工具层面的封装。语言的流行度可能会起伏,但C语言所代表的底层能力和工程思想,始终是计算机科学不可或缺的一部分。即便未来出现新的、更安全或更高效的系统级语言,它们在设计与实现上,也几乎必然会与C语言产生深刻的联系。从更宏观的角度看,C语言的价值不仅体现在“能做什么”,更体现在“如何思考”。

2026-01-09 01:19:34 395

原创 为什么你写了三年 Java,却依然写不出“像样的系统”?从工程思维说起

工作两三年,语法很熟,框架不陌生,CRUD 写得飞快,但一旦让你独立设计一个系统,却总是无从下手。项目越写越乱,改一个点牵一大片。问题的关键,不在于你“Java 不熟”,而在于你始终停留在“写代码”的层面,却没有真正进入“做系统”的阶段。很多人写 Java 写了很久,却始终写不出“像样的系统”,不是因为不努力,而是因为从未被引导去建立工程思维。真正成熟的 Java 工程师,往往先有清晰设计,再选择是否引入框架,而不是反过来。当你意识到这一点,并开始有意识地改变时,你的成长速度,会比过去三年加起来还要快。

2026-01-09 01:15:47 587

原创 C语言在嵌入式系统开发中的应用与挑战

未来,C语言将在嵌入式系统中继续发挥重要作用,特别是在对性能要求较高、资源受限的应用中,仍将占据主导地位。例如,汽车电子中的自动驾驶系统、工业控制中的PLC(可编程逻辑控制器)、以及智能家居中的控制中心等,都是嵌入式系统的典型代表。未来,嵌入式系统将需要处理更多的数据、更高的并发、更严格的实时性要求,同时也需要支持更多的通信协议和更强的计算能力。总的来说,C语言在嵌入式系统中的应用和发展前景广阔,尤其是在高性能、实时性要求严格的场景下,它将继续保持其主流地位,并为嵌入式技术的创新和发展提供强有力的支持。

2026-01-09 01:14:30 629

原创 华为企业数字化运维运营体系建设综合解决方案:运维运营体系架构、统一运维运营平台、多云管理与集成、组织设计与流程架构

旨在通过标准化、自助化、可视化、智能化的手段,提升企业运维运营的效率和质量,推动企业数字化转型的深入发展。流程架构:以服务开发、服务履行和服务管理为主线,支撑大数据业务的安全、可靠、集约、高效运作。目标:围绕“安全、稳定、高效、集约”建设运维运营体系,支撑高效警务运行。标准化:资源、接口、操作、流程、协议的标准化,实现“最佳秩序”。通过运营广度、深度、阶段跨度、时间长度四大维度评估运营能力。服务内容涵盖基础设施、网络、数据、应用、安全等多个方面。运营能力建设分为可视可控、效率运营、集约运营三阶段。

2025-12-01 10:51:18 369

原创 Windows下redis安装

进入Redis安装包目录,安装服务:redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbosewin+r -> services.msc,可以看到服务安装成功。

2025-12-01 09:04:26 426

原创 springboot3整合SpringSecurity实现登录校验与权限认证(万字超详细讲解)

用户提交登录请求Spring Security 将请求交给 UsernamePasswordAuthenticationFilter 过滤器处理。UsernamePasswordAuthenticationFilter 获取请求中的用户名和密码,并生成一个 AuthenticationToken 对象,将其交给 AuthenticationManager 进行认证。

2025-12-01 05:30:52 942

原创 PHP代码调试(vscode+xdebug+phpstudy)

第一步是配置php的环境变量,csdn里有很多文章可以直接搜索即可了解怎么配置,大概就是将phpstudy里的php文件位置复制到环境变量里,最后使用cmd检查是否配置成功。将php的路径放到此处,该路径就在小皮的Extensions里面。在vscode左侧的拓展处搜索可下载这个php debug。创建这个文件,注意端口号要与小皮里的一致。使用记事本打开配置文件里的php.ini。再点开phpdebug里的json。再点击它设置里的扩展组件。点开文件,首选项里的设置。点开vscode里的调试。

2025-12-01 03:45:48 305

原创 MySQL 批量插入详解:快速提升大数据导入效率的实战方法

批量插入是提高 MySQL 数据插入性能的重要手段。通过使用批量插入技术,可以显著减少 SQL 执行次数,提高数据导入的效率。本文通过一个学生信息表的实战示例,详细介绍了批量插入的实现方法,并提供了性能优化的建议。希望这篇文章对您在处理大规模数据时有所帮助。如果有更复杂的数据处理需求,您还可以考虑使用 MySQL 的LOAD DATA语句或专门的 ETL 工具来进行数据导入操作。

2025-12-01 02:00:36 844

原创 SpringBoot3 集成 Shiro

是一个强大且易用的Java安全框架,提供了身份验证、授权、密码学和会话管理等功能。它被广泛用于保护各种类型的应用程序,包括Web应用、桌面应用、RESTful服务、移动应用和大型企业级应用。没有Spring Security 那么多晦涩的概念和术语,其原理非常清晰易懂,也非常容易集成到自己的项目中。SpringBoot 2.x 已于去年底End of life,升级到 SpringBoot 3 成了一件必须要做的事情,而SpringBoot 3 在集成 Shiro 时,有一些坑,也有一些与之前不同之处。

2025-11-30 17:28:34 282

原创 PHP代码调试(vscode+xdebug+phpstudy)

第一步是配置php的环境变量,csdn里有很多文章可以直接搜索即可了解怎么配置,大概就是将phpstudy里的php文件位置复制到环境变量里,最后使用cmd检查是否配置成功。将php的路径放到此处,该路径就在小皮的Extensions里面。在vscode左侧的拓展处搜索可下载这个php debug。创建这个文件,注意端口号要与小皮里的一致。使用记事本打开配置文件里的php.ini。再点开phpdebug里的json。再点击它设置里的扩展组件。点开文件,首选项里的设置。点开vscode里的调试。

2025-11-30 15:43:34 336

原创 MySQL 教程(超详细,零基础可学、第一篇)

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 是开源的,目前隶属于 Oracle 旗下产品。MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。MySQL 使用标准的 SQL 数据语言形式。MySQL 可以运行于多个系统上,并且支持多种语言。

2025-11-30 13:42:25 877

原创 使用bitnamiredis-sentinel部署Redis 哨兵模式

在 Master-Slave 设置中使用 Sentinel 时,如果要设置 Master 和 Slave 节点的密码,请考虑为它们设置。在此示例中,我们假设你希望从你自己的自定义应用程序镜像连接到 Redis 服务器,该镜像在以下代码段中由服务名称标识。或者,如果你使用的是 Docker Compose,请将 image 属性的值更新为。,你的应用程序容器可以轻松访问在容器内运行的 Redis 服务器。如果你希望以不同的方式使用容器日志,你可以使用该选项配置容器。如果你愿意,你也可以自己构建镜像。

2025-11-29 22:30:50 785 5

原创 Ubuntu安装Redis

安装环境: Ubuntu 18.04 64位。

2025-11-29 20:44:16 343

原创 SpringBoot+Mybatis-plus实现分页查询(一看就会)

首先我们需要引入分页插件配置,然后创建DTO和VO,DTO包含我们需要的进行查询的字段,继承PageDto,VO是返回信息的对象,这样做不会影响我们创建的实体类。接下来就是service接口和serviceImpl实现类的创建,在实现类里面编写我们分页的逻辑然后三部分结构,引入Page实例、查询语句编写、page方法进行查询并复制给VO对象用于返回信息。

2025-11-29 19:05:40 689

原创 PageHelper 解析及实现原理

面向关系型数据库的 SQL 查询和数据导出时,如果数据条数非常大,直接将所有数据一次性查出或者导出显然是不可行的。这时候就需要进行分页查询或分页导出,将查询或导出的数据按照指定大小分页加载或写入,从而提高查询或导出的效率。而分页查询或分页导出的实现过程比较繁琐,需要考虑很多细节问题,容易出错。因此,出现了一些支持分页查询或分页导出的插件或工具类,例如 MyBatis-Plus 的分页插件 PageHelper。PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。

2025-11-29 17:22:09 266

原创 MySQL 批量删除海量数据的几种方法

可以将批量删除逻辑封装成存储过程,利用存储过程自动控制批量删除过程。方法适用场景优点缺点LIMIT分批删除需要简单分批删除逻辑简单,减少锁表时间需循环操作主键范围分批删除有连续主键的表高效,无偏移开销需手动指定范围自定义批量删除存储过程小批量删除自动化操作需要数据库支持存储过程临时表替换删除数据量非常大避免锁表,减少日志开销需要额外磁盘空间根据不同的业务场景和需求,选择合适的批量删除方式可以提高 MySQL 的删除效率,减少对数据库的影响。

2025-11-29 15:43:41 693

原创 手把手安装部署Redis(Windows和Mac)图文详解

Redis是一款开源的内存数据结构存储系统,它支持键值对的存储和多种数据结构,如字符串、列表、哈希表和集合等。Redis具有高性能、高可用性和可扩展性等特点,被广泛应用于缓存、消息队列和分布式锁等场景。

2025-11-27 17:08:44 299

原创 【Redis】设置Redis访问密码

网上查询后的办法:创建redis-server.exe 的快捷方式, 右键快捷方式属性,在目标后面增加redis.windows.conf, 这里就是关键,你虽然修改了.conf文件,但是exe却没有使用这个conf,所以我们需要。疑问: redis目录下有两个配置文件redis.windows.conf和redis.windows-server.conf,看到网上有的人用前者有的人用后者,不清楚到底该用哪一个。命令行设置的密码在服务重启后失效,所以一般不使用这种方式。客户端再重新登录,OK了。

2025-11-27 13:21:36 391

原创 Spring报错解决一览

如你生成的token中可用资源包括 查询用户信息,但是在请求用户信息的时候,它有拦截会查看你token中的标识是否跟自己的标识相同。解决: 原因多样,总的来说就是去服务器端根据token查询用户信息错误(1)就是token失效等 (2)地址在没有配置ssl的时候使用https等。解决:权限不足, 获取的token中锁允许访问的resource与实际访问的resource信息不匹配,被拒绝访问。问题三:springSeurity明明配置了password授权,但是在做改动的时候提示如下。

2025-11-27 11:38:46 349

原创 Spring Boot 整合 Redis 步骤详解

通过上述步骤,我们成功地在 Spring Boot 应用中集成了 Redis,并实现了基本的数据缓存功能。这不仅提高了应用的性能,还为开发者提供了更多灵活的数据管理手段。

2025-11-26 21:05:13 334

原创 MySQL的索引

索引是对数据库表中一列或多列的值进行排序的。MySQL索引的建立对于MySQL的高效运行是很重要的,索引。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

2025-11-26 19:22:58 326

原创 Java进阶文件输入输出实操(图片拷贝)

把某个目录下的全部图片,全部拷贝到另外一个目录。

2025-11-25 17:40:01 353

原创 数据库Redis数据库

Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的 NoSQL 数据库即非关系数据库。Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。2、Redis命中机制和淘汰机制。

2025-11-25 13:26:37 746

原创 MySQL 批量删除海量数据的几种方法

可以将批量删除逻辑封装成存储过程,利用存储过程自动控制批量删除过程。方法适用场景优点缺点LIMIT分批删除需要简单分批删除逻辑简单,减少锁表时间需循环操作主键范围分批删除有连续主键的表高效,无偏移开销需手动指定范围自定义批量删除存储过程小批量删除自动化操作需要数据库支持存储过程临时表替换删除数据量非常大避免锁表,减少日志开销需要额外磁盘空间根据不同的业务场景和需求,选择合适的批量删除方式可以提高 MySQL 的删除效率,减少对数据库的影响。

2025-11-24 16:53:31 292

原创 Oracle分页sql

在Oracle数据库中,分页查询通常涉及到ROWNUM伪列,这是一个Oracle特有的关键字,用于返回结果集中行的编号。

2025-11-23 17:46:42 135

原创 MySQL 常用 SQL 语句大全

这些 SQL 语句和技巧覆盖了数据库操作的广泛领域,从基础查询到高级管理和优化。掌握这些可以帮助你更高效地管理和操作 MySQL 数据库。使用 GROUP_CONCAT 函数。删除表中的所有记录(也叫截断表)内连接(INNER JOIN)右连接(RIGHT JOIN)基于其他表的更新(关联更新)左连接(LEFT JOIN)全连接(FULL JOIN)在 WHERE 子句中。计算字段的平均值和总和。在 FROM 子句中。查看当前的数据库状态。

2025-11-23 15:53:27 283

原创 org.springframework.security.access.AccessDeniedException 不允许访问

检查我的WebSecurityConfigurerAdapter子类SecurityConfigWithoutUserDetail。org.springframework.security.access.AccessDeniedException: 不允许访问。* 捕捉AccessDeniedException,spring security抛出的无权限访问的异常信息。发现,我自定义的myAccessDeniedHandler类没有调用。测试spring security的权限校验功能时,

2025-11-20 12:57:12 372

原创 MySQL 批量删除海量数据的几种方法

可以将批量删除逻辑封装成存储过程,利用存储过程自动控制批量删除过程。方法适用场景优点缺点LIMIT分批删除需要简单分批删除逻辑简单,减少锁表时间需循环操作主键范围分批删除有连续主键的表高效,无偏移开销需手动指定范围自定义批量删除存储过程小批量删除自动化操作需要数据库支持存储过程临时表替换删除数据量非常大避免锁表,减少日志开销需要额外磁盘空间根据不同的业务场景和需求,选择合适的批量删除方式可以提高 MySQL 的删除效率,减少对数据库的影响。

2025-11-20 11:13:19 377

原创 开启mysql的binlog日志

命令,您需要在操作系统的命令行界面(例如Windows的命令提示符或PowerShell,Linux或macOS的终端)中执行,而不是在MySQL命令行客户端或任何SQL管理工具中。加一行log-bin=“C:/ProgramData/MySQL/MySQL Server 5.7/logs/log-bin”指定了二进制日志索引文件的名称,该文件记录了所有当前活跃和旧的binlog文件的位置。指定了服务器将保留的最大binlog文件数量。指定了binlog文件在被自动删除前可以保留的天数。

2025-11-19 15:17:32 273

原创 【MySQL基础篇】概述及SQL指令:DDL及DML

数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

2025-11-19 13:32:03 1015

原创 【mysql】锁机制 - 2.行锁间隙锁临键锁

唯一索引等值查询:当查询的记录存在, 临键锁 会退化成行锁当查询的记录不存在,临键锁会退化成间隙锁非唯一索引等值查询:当查询的记录存在,会加 临键锁和 间隙锁两把锁当查询的记录不存在,只会加 临键锁,然后退化为间隙锁非唯一索引和主键索引的范围查询的区别:唯一索引在满足条件时, 临键锁 退化为间隙锁和记录锁非唯一索引范围查询, 临键锁不会退化 为间隙锁和记录锁。

2025-11-18 17:42:06 441

原创 SpringSecurity+jwt实现权限认证功能

前面我们已经通过使用springboot框架获得了管理数据的基本能力,但是一个系统不和或缺的功能是安全登录。这里我们以springsecurity+jwt方案实现登录以及权限控制。本文对jwt登录校验,权限管理的原理简单描述,并且提供了实现方案。

2025-11-18 15:49:22 334

原创 最新豆瓣电影Top250爬虫(附完整代码)

总共有10页,每页25条电影数据,page_start为每页的起始位置,如第一页为0,第二页为25,因此想要爬取全部页数的数据只用从0遍历到250,以25为步长即可,即range(0, 250, 25)。数据存储此处使用pandas模块直接保存为了.xlsx文件,可以很方便地使用Excel查看,也可以根据需要选择保存到数据库中。用XPath提取网页数据,在提取的时候发现演员数据放在了JS中,因此这部分需要用正则表达式提取。数据,包括电影的电影名、导演、演员等基本信息,以及海报图片、剧情简介和评论数量。

2025-11-17 13:32:58 440

原创 【SpringBoot】讲清楚日志文件&&lombok

提示:以下是本篇文章正文内容,下面案例可供参考在程序中获取志对象需要使志 LoggerFactory,如下代码所示// 1.得到?志对象志需要将每个类的类型传递进去,这样我们才知道志的归属类,才能更便、更直观的定位到问题类今天的博客,希望大佬们能在评论指出错误!~~???

2025-11-17 11:52:18 767

原创 【Spring】Cookie和Session是什么

在计算机领域,会话是一个客户与服务器之间的不中断的请求响应。对客户的每个请求,服务器能够识别出请求来自于同一个客户。当一个未知的客户向 Web 应用程序发送第一个请求时就开始了一个会话。当客户明确结束会话或服务器在一个时限内没有收到客户的任何请求时,会话就结束了。服务器需要清楚地区分每个请求时从属于哪个用户,也就是属于哪个会话,就需要在服务器这边记录。此时在服务器这边就需要记录“令牌”的信息,以及令牌对应的用户信息,这个就是。但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的。

2025-11-16 16:11:08 492

原创 SpringCloud系列教程:微服务的未来(十四)网关登录校验、自定义过滤器GlobalFilter、GatawayFilter

在微服务架构中,API 网关扮演着至关重要的角色,负责路由请求、执行安全验证、流量控制等任务。Spring Cloud Gateway 作为一个强大的网关解决方案,提供了灵活的方式来实现这些功能。本篇博客将重点介绍如何在 Spring Cloud Gateway 中实现网关登录校验,以及如何利用自定义过滤器(GlobalFilter 和 GatewayFilter)来处理请求和响应。通过这些技术,开发者可以在网关层统一处理认证、授权等功能,同时保持对路由的细粒度控制。

2025-11-16 14:17:20 608

空空如也

空空如也

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

TA关注的人

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