自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 问答 (1)
  • 收藏
  • 关注

原创 redis实战(缓存)

也叫热点key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不能生效,这些请求都会打到数据库。指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。主动更新策略:cache aside pattern:由缓存调用者,在更新数据库的同时更新缓存。高一致性需求:主动更新,超时剔除作为兜底方案,例如店铺详情的缓存。

2025-12-17 22:34:58 219

原创 黑马点评(短信登录)

只有spring创建的对象才能@Autowired注入,不是就不能。5、存在,保存信息到threadlocal。5、保存用户信息到session。3、保存验证码到session。2、获取session中用户。1、校验手机号和验证码。1.获取session。4、新用户添加数据库。3、判断用户是否存在。

2025-12-15 18:18:58 213

原创 redis基础(java客户端)

提供了RedisTemplate工具类,其中封装了各种对redis的操作。lettuce:支持同步、异步、响应式编程,线程安全,支持redis哨兵模式,集群模式和管道模式。为了节省内存空间,当存储java对象时,手动完成完成对象的序列化和反序列化。传入的value值是Object类型,会自动进行序列化和反序列化。redisson:基于redis实现高级功能。jedis:学习成本低,但是线程不安全。

2025-12-11 20:12:06 219

原创 redis基础(数据结构)

zrangebyscore key min max:按照score排序后,获取指定score范围内的元素。hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行。hset key field value:添加或者修改hash类型key的field的值。hgetall:获取一个hash类型的key中的所有的field和value。hget key field:获取一个hash类型key的field值。

2025-12-11 12:03:51 662

原创 redis基础(安装配置redis)

非结构化(较自由,没有太多约束)无关联(数据之间没有关联)无SQL(不通过SQL语法操作数据库)事务(无法满足ACID)内存(大多存在内存)扩展性(天然考虑分布式)

2025-12-10 18:24:50 245

原创 mysql运维(读写分离)

读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效的减轻单台数据库的压力。通过mycat即可轻易实现上述功能,不仅可以支持mysql,也可以支持orcle和sql server。

2025-12-08 20:49:28 670

原创 mysql运维(分库分表)

目前的难题IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈cpu瓶颈:排序、分组、连接查询、聚合统计等sql会耗费大量的cpu资源,请求数太多,cpu出现瓶颈。分库分表的中心思想就是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的拆分策略垂直拆分:垂直分库、垂直分表水平拆分:水平分库、水平分表分库:将一个数据库中数据分散存储在多个数据库中分表:将一张表的数据分散存储在多个表中。

2025-12-08 16:17:35 640

原创 mysql运维(主从复制)

主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。mysql支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。主库(master)从库(slave)主库出现问题,可以快速切换到从库提供服务实现读写分离,降低主库的访问压力可以在从库中执行备份,以避免备份期间影响主库服务。

2025-12-03 21:58:07 205

原创 mysql运维(日志)

慢查询日志记录了所有执行时间超过参数long_query_time设置值并且扫描记录数不小于min_examined_row_limit的所有的sql语句的日志,默认未开启。可以使用log_slow_admin_statements和更改此行为log_queries_not_using_indexes。查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的sql语句。在二进制日志记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询语句。

2025-12-03 20:21:22 278

原创 mysql高级(mysql管理)

由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog日志管理工具。-e选项可以在mysql客户端执行sql语句,而不用连接到mysql数据库再执行,对于一些批处理脚本,这种方式尤其方便。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。mysqlshow客户端对象查找工具,用来很快地查找存在那些数据库、数据库中的表、表中的列或者索引。mysqlimport是客户端数据导入工具,用来导入mysqldump加-T参数后导入的文本文件。

2025-12-02 21:32:21 334

原创 mysql(innodb引擎)

当我形成read view后 我会从最新数据开始,首先判断最近更改事务id是否大于等于max_trx_id 如果大于等于,我直接按照指针回滚到上条数据,然后重复这个过程直到小于max_trx_id 然后我判断是否在m_ids中,如果在继续回滚,如果不在就是我要找到值(min_trx_id可快速判断不在,避免在小于min_trx_id后,继续判断是否在m_ids中),如果creator_trx_id=更改事务id可以访问(我自己可以访问我自己的更改)重做日志,是用来实现事务的持久性。

2025-12-02 16:27:28 869

原创 mysql(锁)

为了避免dml在执行时,加的行锁与表锁的冲突,在innodb中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。2、innodb的行锁是针对于索引加的锁,不通过索引条件检索数据,那么innodb将对表中的所有记录加锁,此时就会升级为表锁。行级锁,每次操作锁住对应的行数据,锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在innodb存储引擎中。

2025-11-28 22:49:38 903

原创 mysql高级(视图、存储过程、触发器)

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。局部变量:是根据需要定义的在局部生效的变量,访问之前,需要declare声明,可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的begin…视图是一种虚拟存在的表。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果,所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

2025-11-27 20:46:51 728

原创 mysql高级(sql优化)

Using filesort:通过表的索引或者全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫fileSort排序。Using index:通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高。innodb的行锁是针对索引加的锁,不是针对记录加的锁,并且给索引不能失效,否则会从行锁升级为表锁。因为二级索引存储信息少,每个页中存储的记录多,这样就可以减少IO次数,进而提高执行效率。

2025-11-26 19:04:18 292

原创 mysql高级(索引)

帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引提高数据检索效率,降低数据库IO成本通过索引列对数据进行排序,降低数据排序成本,降低CPU的消耗索引列占用空间索引大大提高了查询效率,同时却也降低了更新表的速度,如对表进行增删改时,效率降低。

2025-11-25 21:24:33 692

原创 Mysql高级(存储引擎)

存储数据、建立索引、更新/查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型默认存储引擎:innodb(mysql5.5版本之后)

2025-11-21 18:00:50 264

原创 mysql基础

作用于表字段上的规则,用于限制存储在表中的数据目的:保证数据库中数据的正确性、有效性、完整性非空约束:not null唯一约束:unique主键约束:primary key(非空唯一)默认约束:default(不赋值采用默认值)检查约束:check(保证字段值满足某一条件)外键约束:foreign key(用来让两张表的数据之间建立连接,保证数据的一致性和完整性)要么全成功,要么全失败。

2025-11-21 17:06:26 700

原创 苍穹外卖(第11天)

处理Miscrosoft office各种文件格式的开源项目,简单来说就是,我们可以使用POI在java程序中对Miscrosoft office各种文件进行读写操作。一般情况下POI都是用于操作Excel文件。

2025-11-19 14:47:55 124

原创 苍穹外卖(第十天)

任务调度工具,可以按照我们约定的时间自动执行某个代码逻辑。

2025-11-17 17:23:40 358

原创 苍穹外卖(第七天)

4、在管理端接口setmealcontroller的save、delete、update、startorstop等方法上加入CacheEvict注解。@Cacheable:执行方法前查询缓存中是否有数据,如果有数据,直接返回,没有则调用方法,并将方法返回值放到缓存。2、在启动类上加上@EnableCaching注解,开启缓存注解功能。@EnableCaching:开启缓存注解功能,通常加载启动类上。通过redis来缓存菜品数据,减少数据库查询操作。@CachePut:将方法的返回值放到缓存中。

2025-11-12 16:50:16 139

原创 苍穹外卖(第六天)

Apache jakarta common下的子项目,可以用来提供高效的、最新的、功能丰富的支持http协议的客户端编程工具包,并且它支持http协议最新的版本和建议。核心API:httpclient、httpclients、closeablehttpclient、httpget、httppost。3、调用httpclient的execute方法发送请求。1、创建httpclient对象。2、创建http请求对象。

2025-11-10 10:57:00 129

原创 苍穹外卖(第五天)

zrange key start stop [withscores](通过索引区间返回有序集合中指定区间内的元素)setex key seconds value(设置指定key的值,并将key的过期时间设置为seconds秒)hset key field value(将哈希表key中的字段field的值设置为value)setnx key value(只有key不存在时设置key的值)hget key field(获取存储在哈希表中指定字段的值)set key value(设置指定key的值)

2025-11-04 19:13:42 649

原创 苍穹外卖(第三天)

问题:代码冗余、不便于后期维护思路:自定义注解AutoFill,用于表示需要进行公共字段自动填充的方法自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值在Mapper的方法上加入AutoFill注解实现:获取当前被拦截的方法上的数据库操作类型获取到当前被拦截的方法的参数-实体对象准备赋值的数据根据当前不同的操作类型,为对应的属性通过反射来赋值。

2025-11-01 14:07:06 184

原创 周报(2025.10.29)

2025-10-24 15:31:20 88

原创 周报(2025.10.22)

2025-10-24 15:23:06 77

原创 周报(2025.10.15)

2025-10-24 15:01:45 77

原创 周报(2025.10.9)

2025-10-24 14:52:11 75

原创 苍穹外卖第二天(员工管理)

为每一个线程提供单独一份存储空间,具有线程隔离效果,只有在线程内才能获取到对应值,线程外则不能访问。ThreadLocal:并不是一个Thread,而是Thread的局部变量。

2025-10-23 21:20:00 234

原创 苍穹外卖第一天

需求分析:需求规格说明书、产品原型设计:UI设计、数据库设计、接口设计编码:项目代码、单元测试测试:测试用例、测试报告上线运维:软件环境安装、配置定位:专门为餐饮企业定制的一款软件商品功能架构:体现项目中的业务功能模块。

2025-10-17 14:44:07 466

原创 SSM(代码生成器)

SSM完结撒花~

2025-10-10 16:34:24 151

原创 SSM(MybatisPlus)

MybatisPlus(mp)是基于Mybatis框架基础上开发的增强型工具1、创建新模块,选择spring初始化,并配置模块相关基础信息2、选择myspl driver依赖3、手动添加mp依赖</</</</4、设置jdbc参数(application.yml)5、制作实体类与表结构(类名与表名对应,属性名与字段对应)如果不对应使用@TableName()绑定6、定义数据接口,继承BaseMapper。

2025-09-26 22:31:11 448

原创 周报(2025.9.24)

2025-09-25 17:56:09 114

原创 SSM(springboot部分)

如果测试类在SpringBoot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的设定。3级:classpath:config/application.yml。4级:classpath:application.yml(最低级)注意:在idea中运行时,并不会替换,而是在maven打包时替换。1、创建新模块,选择Spring初始化,并配置模块相关基础信息。2、选择当前模块需要用到的技术集(Mybatis、Mysql)2级:file:application.yml。

2025-09-20 22:53:00 667

原创 Maven进阶

当工程中某个模块发生更新时,必须保障工程中与更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题。继承描述的是两个工程间的关系,与java中继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建。路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。2、在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)

2025-09-19 09:05:59 645

原创 周报(2025.9.17)

2025-09-17 19:26:48 95

原创 SSM整合(统一响应,拦截器)

如果不设置统一相应格式,前端人员处理数据会变得困难引入统一响应格式Result。

2025-09-12 16:37:01 284

原创 周报(2025.09.10)

2025-09-10 21:32:10 95

原创 SSM(springMVC入门+请求与响应)

SpringMVC是一种基于java实现MVC模型的轻量级Web框架SpringMVC与servlet技术功能等同,均属于web层开发技术。

2025-09-09 10:38:02 838

原创 周报(2025.09.03)

2025-09-03 17:08:09 110

原创 SSM(spring部分整合)

Spring 整合其他技术 =引入依赖 + 注册核心类 Bean + 配置资源 + 交给 Spring 生命周期管理 + 用 AOP 等机制增强Spring 时代:SqlSessionFactory 是厨房,Mapper 是厨师。Spring 只帮你建好厨房,厨师你得自己找。Spring Boot 时代:Boot 不但建好了厨房,还帮你把厨师请好,甚至发工资了,你只需要点菜(调用 Mapper 方法)就行。

2025-09-03 16:23:51 207 1

空空如也

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

TA关注的人

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