
获得徽章 1
- #挑战每日一条沸点# 以上三点串起来就是:Spring内部是一个放置Bean的IoC容器,通过依赖注入的方式处理Bean之间的依赖关系。评论点赞
- #青训营笔记创作活动#
2月18日,打卡day37
git rebase
git rebase 用于分支变基。
git rebase master // 将当前分支变基到 master 分支上
git cherry-pick
git cherry-pick 命令用于获取指定的 commit,可以将分支 a 上的 commit 1,复制到分支 b上。
git cherry-pick [commitId] // 获取指定的commit
复制代码
git merge
git merge 命令用于分支合并,将其他分支的内容合并到当前分支中。
git merge [branchName]
展开评论点赞 - 2月17日,打卡day36
#青训营笔记创作活动#
流程发起人,由流程的启动人/发起人来处理这个流程。
单个用户,直接指定某一个具体的用户来处理这个流程,注意这里只能指定一个用户,并且这个用户将来在处理任务的时候,不需要认领,直接就可以处理。
候选用户:可以同时指定多个用户来处理这个 UserTask,将来用户在处理的时候,需要先认领(Claim)任务,然后才能处理。
候选组:可以同时指定多个用户组来处理这个 UserTask,这个处理的时候,也需要先认领,再处理
展开评论点赞 - #青训营笔记创作活动#
2月16日,打卡day35
1 通过注解跨域
使用 @CrossOrigin 注解可以轻松的实现跨域,此注解既可以修饰类,也可以修饰方法。当修饰类时,表示此类中的所有接口都可以跨域;当修饰方法时,表示此方法可以跨域,它的实现如下:
2 通过配置文件跨域
接下来我们通过设置配置文件的方式就可以实现全局跨域了,它的实现步骤如下:
创建一个新配置文件;
添加 @Configuration 注解,实现 WebMvcConfigurer 接口;
重写 addCorsMappings 方法,设置允许跨域的代码。
3.通过 CorsFilter 跨域
此实现方式和上一种实现方式类似,它也可以实现全局跨域,它的具体实现代码如下:
3.4 通过 Response 跨域
此方式是解决跨域问题最原始的方式,但它可以支持任意的 Spring Boot 版本(早期的 Spring Boot 版本也是支持的)。但此方式也是局部跨域,它应用的范围最小,设置的是方法级别的跨域,它的具体实现代码如下:
3.5 通过 ResponseBodyAdvice 跨域
通过重写 ResponseBodyAdvice 接口中的 beforeBodyWrite(返回之前重写)方法,我们可以对所有的接口进行跨域设置,它的具体实现代码如下:
展开评论点赞 - 2月15日,打卡day34
#青训营笔记创作活动#
在算法的分布式版本中,我们假设我们有 N 个 Redis master。这些节点是完全独立的,所以我们不使用复制或任何其他隐式协调系统。我们已经描述了如何在单个实例中安全地获取和释放锁。我们理所当然地认为算法会使用这种方法在单个实例中获取和释放锁。在我们的示例中,我们设置了 N=5,这是一个合理的值,因此我们需要在不同的计算机或虚拟机上运行 5 个 Redis 主服务器,以确保它们以几乎独立的方式发生故障。
展开评论点赞 - #青训营笔记创作活动#
2月14日,打卡day33
MyBatis作为JAVA体系中被广泛使用的数据库操作框架,其内部为了提升处理效率,构建了一级缓存与二级缓存,大大减少了对SQL的重复执行次数。评论点赞 - #青训营笔记创作活动#
2月13日,打卡day32
Optional 是 Java 语言的有益补充 —— 它旨在减少代码中的 NullPointerExceptions。
通过设计,自然的融入了 Java 8 函数式支持。评论点赞 - #青训营笔记创作活动#
2月12日,打卡day31
①先将SQL发送给SQL接口,SQL接口会对SQL语句进行哈希处理。
②SQL接口在缓存中根据哈希值检索数据,如果缓存中有则直接返回数据。
③缓存中未命中时会将SQL交给解析器,解析器会判断SQL语句是否正确:
错误:抛出1064错误码及相关的语法错误信息。
正确:将SQL语句交给优化器处理,进入第④步。
④优化器根据SQL制定出不同的执行方案,并择选出最优的执行计划。
⑤工作线程根据执行计划,调用存储引擎所提供的API获取数据。
⑥存储引擎根据API调用方的操作,去磁盘中检索数据(索引、表数据....)。
⑦发生磁盘IO后,对于磁盘中符合要求的数据逐条返回给SQL接口。
⑧SQL接口会对所有的结果集进行处理(剔除列、合并数据....)并返回。
上述是一个简单的流程概述,一般情况下查询SQL的执行都会经过这些步骤,下面再将每一步拆开详细聊一聊。
展开评论点赞 - 评论点赞
- #青训营笔记创作活动#
2月10日,打卡day29
有一点要值得注意:行锁并不是一成不变的,行锁会在某些特殊情况下发生粗化,主要有两种情况:
在内存中专门分配了一块空间存储锁对象,当该区域满了后,就会将行锁粗化为表锁。
当做范围性写操作时,由于要加的行锁较多,此时行锁开销会较大,也会粗化成表锁。
当然,这两种情况其实很少见,因此只需要知道有锁粗化这回事即可,这种锁粗化的现象其实在SQLServer数据库中更常见,因为SQLServer中的锁机制是基于行记录实现的,而MySQL中的锁机制则是基于事务实现的(后续《事务与锁原理篇》详细剖析)。
展开评论点赞