- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 什么是mysql的回表操作
为了优化查询性能,数据库设计者通常会尽量避免回表,例如通过使用覆盖索引(Covering Index),即索引包含了查询所需的所有列,这样就可以直接从索引中获取数据,而无需回表。3、回表到聚集索引:由于非聚集索引不包含所有列的信息,数据库系统需要使用这些主键值去聚集索引中查找完整的行记录。例如,如果在非主键列上有一个索引,查询会遍历这个索引的B+树结构。4、获取完整行数据:通过聚集索引,系统可以找到对应的行,并返回查询所需的全部列。2、获取主键:当找到满足查询条件的索引条目时,系统会获取对应的主键值。
2024-07-03 11:24:32
140
原创 Spring框架七大事务传播行为
如果当前存在事务,则在嵌套事务内执行。嵌套事务可以独立于外部事务进行提交或回滚,而外部事务的回滚会触发嵌套事务的回滚。如果当前存在事务,就在该事务中执行;如果当前没有事务,就以非事务的方式执行。这适用于那些不需要事务的方法,但也不介意在事务环境中执行的情况。总是创建一个新的事务,并且在新事务中执行,即使当前存在事务。这样,内层事务与外层事务完全无关,内层事务的回滚不会影响外层事务,反之亦然。总是非事务地执行,如果当前存在事务,则将当前事务挂起。不应该在一个事务中执行,如果当前存在事务,则抛出异常。
2024-07-03 10:50:38
262
原创 Spring事务十种失效场景
3、隔离性:并发访问时,每个人拿到的事务id是不一致的,而每个人对数据的操作是相互隔离的,这个比较深奥,后面单独再讲讲数据库的隔离级别。2、一致性:意味着一旦发生数据变化,在数据执行单元内,要么都成功,要么数据都回滚到在单元内操作之前的数据。正因为有了事务控制,我们才能对数据正确的处理,查阅,但是如果用不好事务,也会给我们的数据造成错误。事务管控的方法开启多线程调用,事务id不在当前线程,则是无法事务回滚的。1、原子性:执行单元内,要么都执行,要么都不执行,不能说执行一半,剩下一半不执行了。
2024-07-02 15:25:03
430
原创 redis的淘汰策略(8种淘汰策略优缺点)
Redis提供了多种内存淘汰策略来处理内存超出限制的情况,当redis的内存使用达到最大允许的内存值,且没有更多的内存空间容纳新数据时,根据配置的淘汰策略,redis会选择删除合适的键进行空间内存释放。以下是redis支持的几种淘汰策略:1、noeviction:不淘汰任何数据,如果内存已经满了,不支持客户端写入新的数据,会直接发出拒绝,返回错误2、volatile-lru:最常用的淘汰策略,该策略是淘汰掉设置了过期时间的键,并按照最少访问频次进行淘汰。3、volatile-lfu:
2024-03-09 17:49:42
2263
原创 Spring的工作原理
Spring支持基于注解的配置方式,如@Component、@Service、@Repository、@Controller等用于标识类作为Spring管理的Bean;Spring提供了一个Ioc容器,它负责对象的生命周期管理,包括创建、初始化、装配和销毁。通过依赖注入,开发者不需关心组件间的依赖关系如何建立,而是通过配置文件声明这些依赖关系,由Spring容器在运行时自动注入。容器的核心实现是BeanFactory,它读取配置元数据,并根据这些信息来进行实例化、配置、装配和管理bean。
2024-03-09 13:25:13
492
原创 SpringBoot的工作原理
自动装配是SpringBoot关键特性之一。基于spring-boot-autoconfigure模块中的各种条件和约定优于配置的原则,当SpringBoot应用启动时,会根据类路径(classpath)下的jar包依赖、应用属性以及某些特定的文件结构等信息,自动配置所需要的bean,这种机制极大的减免了开发者的手动配置映射xml配置bean的工作,简化了工作流程。使用SpringBoot打包成可执行的Jar或WAR文件后,可以直接通过命令Java -jar启动应用,使得部署变得更加快捷高效。
2024-03-05 11:27:17
528
原创 Redission分布式锁lock和tryLock的区别
3、在scheduleExpirationRenewal中比较重要的方法就是renewExpiration,当线程第一次获取到锁(也就是不是重入的情况),那么就会调用renewExpiration方法开启看门狗机制。在renewExpiration会为当前锁添加一个延迟任务task,这个延迟任务会在10s后执行,执行的任务就是将锁的有效期刷新为30s(这是看门狗机制的默认锁释放时间)1、在获取锁的时候,不能指定leaseTime或者只能将leaseTime设置为-1,这样才能开启看门狗机制。
2024-01-24 11:23:17
751
2
原创 java集成solr异常情况处理
修改managed-schema文件调整对应字段类型,plong->long,string->String,pint->int date->Date, text_general->List plongs->List ,然后对应的重启solr。保证字段存入的solr数据格式为pdate类型,java对应的格式设置为Date,在数据取出转对象时可直接调用hutool的。1:Solr启动JVM内存不足,调整内存启动,Xms最小内存设置为1g,最大2g,按需分配。4:日期格式转换问题。
2024-01-18 20:48:32
395
原创 SpringBoot实现solr多字段模糊查询
最终结果实现:按照预期的排序效果进行排序,且按照正常的关键字进行字段模糊搜索,50w接口相应速度也还可以在50ms左右,没有模拟高并发的情况。编写数据查询代码,模糊查询匹配:关键字前后拼*,and条件通过增加fq设置,排序可以根据加入的顺序来控制。1、搜索关键词:动态内容模糊匹配 或 动态内容标签名称模糊匹配 或 动态关联话题名称模糊匹配。solr中的schema配置文件,调整字段类型,一般在managed-schema中。注意改完需要重启solr,如果是docker安装的solr的话,直接运行。
2024-01-18 19:35:03
701
原创 java对接微信支付、退款
继上一篇实现java对接支付宝,本篇记录一下java实现微信、小程序的支付与退款实现过程,话不多说,直接上代码。WXPayUtil: 证书privateKey替换自己注册的商家证书key。支付业务层 ,微信支付核心代码在createAppPay方法中。ps:这里的微信priavateKey是微信证书的私钥key。
2024-01-16 13:35:20
848
原创 java对接支付宝实现app支付、退款
注册完之后能得到支付宝的appId、支付宝公钥,和应用私钥。如果要做支付宝转账还需要支付宝证书模式的appId、证书模式支付宝公钥和证书模式应用私钥。支付宝PayClient实例化bean注入(非加签模式非证书模式注入),一般用于app支付。业务层:该业务层中增加了一部分业务操作,可用来参考支付退款实现。将前段时间做的支付工作,做个工作总结吧,顺便分享给大家一下。支付宝支付回调控制层。
2024-01-16 13:09:29
874
原创 Docker安装xxl_job
访问地址:服务器ip:8848 账号密码为admin/123456。注意查看防火墙状态,可以关闭防火墙,也可以开放固定端口防火墙。基本条件,xxl_job数据库建立,执行sql。3.xxl_启动成功。
2024-01-15 13:51:48
640
原创 SpringBoot集成Solr
在上一篇中已经讲解了如何使用docker安装Solr,本篇讲解一下在SpringBoot项目中如何简单集成solr。ps:这里的核心库名称建立可以参考我的上一篇安装文章了解,也可以自己在solr的web界面建立,可以把solr的核心库理解为mysql中的表,只是里面可以存储非结构化的数据。到了这里我们的solr集成配置就完成了,下面可以使用solr进行crud了。HttpSolrClient注入。
2024-01-15 12:04:57
691
原创 docker安装solr
启动之后就可以访问solr了,访问地址http://ip:6016 .# 将managed-schema复制到主机并修改内容。# 将managed-schema复制回容器内。3、修改启动应用程序web.xml文件。4、修改字段(如果需要)# 运行一个临时solr。# 停止并删除solr。# 用户名 密码 权限。# 在最后追加以下内容。2、引入账号配置文件。
2024-01-12 13:35:48
1060
原创 Java对接快递100
前期准备工作:注册快递100后台,得到对应的配置信息。快递100地图轨迹订阅接口地址:http://poll.kuaidi100.com/pollmap。最近在做物流这块的功能相关设计,比对国内好几家第三方物流api,最终还是选择了快递100。业务逻辑处理完之后以快递100的接口返回要求返回,要不在控制台会看到推送失败的错误。快递100计费方式采用按次收费,需要购买,如果次数不足的话,接口会提交失败。配置的回调地址,快递100在查询到地图物流数据之后会推送到你发送的回调url。
2024-01-11 20:13:29
837
原创 循环依赖问题场景和解决方案
场景2:使用 @RequiredArgsConstructor注入bean,配置也增加 spring.main.allow-circular-references=true了,但还是出现了循环依赖问题,项目启动失败?循环依赖产生,所以Spring框架采用三级缓存解决掉了循环依赖问题,Spring三级缓存具体怎么解决的不在本章做过多描述。Spring循环依赖发生原因:A类注入B类,B类注入A类,导致bean在初始化时,循环注入,导致谁都无法成功注入成功,如下图。或者yaml文件增加。
2024-01-11 15:47:52
448
原创 java使用es查询
众所周知,elasticsearch简称es,它是基于基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们
2018-01-02 16:40:53
8123
原创 基于Echart.js一点总结
Echart概述: Echarts,一个纯js的图库表,可以流畅的运行在pc端和移动端的设备上,底层依赖轻量级的Canvas类库Zrender,提供直接、生动、可交互性的可视化报表。Ecahrt可生成饼图,折线图、柱状图、散点图和地域分布图等等各种图形,一般基于ajax请求所返回的数据然后进行解析,生成自己所需要的图形,一般返回map数据类型,map中的key和value都可以以集合的形
2017-09-22 18:03:41
2024
1
下拉框加上搜索功能插件
2017-09-14
Myeclipse14版破解文件
2017-09-04
页面正在加载.jsp
2017-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人