- 博客(1492)
- 资源 (16)
- 问答 (4)
- 收藏
- 关注

原创 详解 Mysql LEFT JOIN和JOIN查询区别及原理
一、Join查询原理查询原理:MySQL内部采用了一种叫做 nested loop join(嵌套循环连接)的算法。Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通过前两个表的 Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复,基本上MySQL采用的是最容易理解的算法来实现join。所以驱动表的选择非常重要,驱动表的数据
2020-06-28 10:42:06
16791
8

原创 必学必会的nginx配置location匹配顺序总结
location匹配顺序1."="前缀指令匹配,如果匹配成功,则停止其他匹配2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)3.正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配4.如果第三步中有匹配成功,则使用该结果,否则使用第二步结果注意点匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配...
2019-06-18 16:36:08
22364
1
原创 JavaMail发送和接收邮件API(详解)
JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类。但它并没有包含在JDK中,而是作为JavaEE的一部分。厂商所提供的JavaMail服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP:简单邮件传输协议,用于发送电子邮件的传输协议;POP3:用于接收电子邮件的标准协议;IMAP:互联网消息协议,是POP3的替代协议。这三种协议都有对应SSL加密传输的协议,分别是SMTPS,POP3S和IMAPS。
2023-09-22 14:15:00
90
原创 大家平时天天说的分布式系统到底是什么东西?
其实分析完了之后,大家应该就大概知道了,招聘JD上写这个分布式系统的设计和开发经验,其实他是一个很大的主题,里面包含很多的内容。你的系统一旦分布式了之后,通信、缓存、消息、事务、锁、配置、日志、监控、会话,等等各种原来单块系统场景下很容易解决的问题,都会变得很复杂,需要引入大量外部的技术。所以你有没有参与过类似这样的一个大的分布式系统?你有没有基于各种技术解决过分布式系统场景下的各种技术问题?这就是人家希望和要求的分布式系统设计和开发的经验。如果大家还没接触过,建议多去学习一下。
2023-09-15 10:45:00
91
原创 一行代码搞定Spring策略模式,强的离谱
在Spring中大量使用策略模式来简化if/else代码,比如Spring Security 的各种等等,但是实现方式过于麻烦,使用重复套路来实现。
2023-09-13 09:19:01
3204
4
转载 七种 BeanDefinition,各显其能!
AbstractBeanDefinition 是一个抽象类,它根据 BeanDefinition 中定义的接口提供了相应的属性,并实现了 BeanDefinition 中定义的一部分方法。BeanDefinition 中原本只是定义了一系列的 get/set 方法,并没有提供对应的属性,在 AbstractBeanDefinition 中将所有的属性定义出来了。后面其他的实现类也基本上都是在 AbstractBeanDefinition 的基础上完成的。
2023-09-06 11:18:25
51
原创 mybatis-plus Invalid bound statement (not found): com.*.*.mapper.xxxMapper.selectById
3、XxxMapper.java的方法返回值是List,但是没有正确配置ResultMap,或者只配置ResultType。方法,发现其他实体的方法仍然使用,这是看实体类发现没有加主键注解,由于疏忽数据库建表是忘记加主键,然后使用。2、XxxMapper.java的方法在XxxMapper.xml中没有,运行则会报此错误。4、XxxMapper.java文件和XxxMapper.xml没有在一个文件夹下面。5、mapper接口中的方法名和mapper.xml中的id标签不一致。,此时改成主键注解改成。
2023-08-28 17:05:36
2895
原创 MyBatis Plus 解决大数据量查询慢问题
在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生 OOM(内存溢出);而且查询会很慢,因为框架耗费大量的时间和内存去把数据库查询的结果封装成我们想要的对象(实体类)。在业务系统需要从 MySQL 数据库里读取 100w 数据行进行处理,应该怎么做?
2023-08-24 14:15:00
12029
转载 一文说清楚支付架构
支付的技术架构是为了保障能够顺利处理支付请求而设计的结构体系。从系统的角度看,它包括了计算机系统的软件、硬件、网络和数据等。从参与的主体角度来看,它涉及交易的付款方、收款方、支付机构、银行、卡组织和金融监管机构等。要想成功地设计和构建支付系统的架构,需要深入地理解支付的业务生态体系,弄清楚并且照顾好支付业务生态体系中各利益相关方的诉求。本章将讨论支付业务生态体系中利益相关方的作用和特点,分析各利益相关方的核心诉求,总结出为满足利益相关方的需求而提供的各种功能,并且进一步把相关联的功能聚合成子系统。
2023-08-23 09:30:00
54
原创 Kafka的底层“真面目”
kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。kafka对外使用topic的概念,生产者往topic里写消息,消费者从读消息。为了做到水平扩展,一个topic实际是由多个partition组成的,遇到瓶颈时,可以通过增加partition的数量来进行横向扩容。单个parition内是保证消息有序。每新写一条消息,kafka就是在对应的文件append写,所以性能非常高。
2023-08-21 07:45:00
7932
转载 迄今为止最完整的 DDD 实践
实体有唯一的标识,有生命周期且具有延续性。例如一个交易订单,从创建订单我们会给他一个订单编号并且是唯一的这就是实体唯一标识。同时订单实体会从创建,支付,发货等过程最终走到终态这就是实体的生命周期。订单实体在这个过程中属性发生了变化,但订单还是那个订单,不会因为属性的变化而变化,这就是实体的延续性。
2023-08-20 07:15:00
62
转载 聊聊「订单」业务的设计与实现
订单业务一直都是系统研发中的核心模块,订单的产生过程,与系统中的很多模块都会高度关联,比如账户体系、支付中心、运营管理等,即便单看订单本身,也足够的复杂;业务在发展的过程中,必然会导致订单量的持续增加,订单自身、数据体量、实现流程,都需要不断的迭代更新,如果在订单流程的研发初期,没有相对全面的考量,那么很有可能导致中后期的重构;
2023-08-19 10:45:00
584
转载 SpringCloud 组件性能优化技巧
Ribbon 进行客户端负载均衡的 Client 并不是在服务启动的时候就初始化好的,而是在调用的时候才会去创建相应的 Client,所以第一次调用的耗时不仅仅包含发送 HTTP 请求的时间,还包含了创建 RibbonClient 的时间,这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,很容易就会出现上面所描述的显现。所以,如果我们使用默认路由,而没有通过配置的方式指定具体路由规则,那么 zuul.ribbon.eager-load.enabled=true 的配置就没有什么作用了。
2023-08-17 11:30:00
65
转载 订单超时怎么处理?看看阿里的方案
如果对于超时精度比较高,超时时间在 24 小时内,且不会有峰值压力的场景,推荐使用 RocketMQ 的定时消息解决方案。在电商业务下,许多订单超时场景都在 24 小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。
2023-08-17 06:30:00
68
原创 项目中不得不知的Git 使用规范
祖师爷 Linus 在创造了伟大的 Linux 之后,又创造了应用最广泛的代码管理工具 —— Git,极大地提高了程序员的生产力。现如今大部分项目都在使用 Git 作为代码管理工具,不论是在代码管理、版本控制以及团队协作上,Git 相比其他版本控制软件都有着无可比拟的优势。虽然 Git 是个优秀的工具,但是在项目中是否能够正确合理地使用,是否能够发挥其最大的优势,就我自己这几年的工作经历来看,对于大部分团队这个问题的答案是否定的。
2023-08-17 04:00:00
8994
转载 如何优雅做好项目管理?
项目( Project )是为创造独特的产品、服务或者成果而进行的临时性工作。管理( Management )通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现既定目标的活动过程。项目管理(Project Management) 在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。从项目的基本概况可以看出,每个项目是具备三种基本特征即独特性、临时性、目的性。
2023-08-16 12:15:00
61
原创 美团面试:为什么MySQL不建议使用NULL作为列默认值?
NULL值是一种对列的特殊约束,我们创建一个新列时,如果没有明确的使用关键字not null声明该数据列,Mysql会默认的为我们添加上NULL约束。有些开发人员在创建数据表时,由于懒惰直接使用 Mysql 的默认推荐设置。(即允许字段使用NULL值)。而这一陋习很容易在使用NULL的场景中得出不确定的查询结果以及引起数据库性能的下降。NULL并不意味着什么都没有,我们要注意NULL跟''(空值)是两个完全不一样的值。MySQL 中可以操作NULL值操作符主要有三个。IS NULL
2023-08-16 06:00:00
8966
原创 Spring Security6 最新版配置该怎么写,该如何实现动态权限管理
自定义 JSON 登录也和之前旧版不太一样了。小伙伴们知道,Spring Security 中默认的登录接口数据格式是 key-value 的形式,如果我们想使用 JSON 格式来登录,那么就必须自定义过滤器或者自定义登录接口,下面先来和小伙伴们展示一下这两种不同的登录形式。Spring Security 默认处理登录数据的过滤器是 UsernamePasswordAuthenticationFilter,在这个过滤器中,系统会通过。
2023-08-15 10:00:00
10268
转载 从小白到高手:掌握Spring九大核心功能的完整攻略!
本节主要讲了实现IOC的几个核心的组件BeanDefinitionReader和ClassPathBeanDefinitionScanner:读取资源,生成BeanDefinitionBeanDefinitionRegistry:存储BeanDefinitionDefaultListableBeanFactory:IOC容器,同时实现了BeanDefinitionRegistry接口。
2023-08-14 07:45:00
62
原创 聊一聊Sentinel背后的原理
Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。上面两句话来自Sentinel官网的自我介绍,从这短短的两句话就可以看出Sentinel的定位和拥有的强大功能。通过整篇文章的分析之后,再回头看看Sentinel的简介的内容,其实就能更好地理解Sentinel的定位和拥有的强大功能。
2023-08-14 07:15:00
6808
转载 SpringBoot中如何对数据访问层进行单元测试?
我们公司作为一个面向银行、金融机构的TO B类企业,频繁遇到各个甲方爸爸提出的国产化数据库的改造需求,包括OceanBaseTiDBgeldenDB等等。每次适配都需要投入大量的人力进行测试工作,那么有没有更高效、低成本的方式去解决这个问题呢?本文就介绍一种快高效、可复用的解决方案——对数据访问层做单元测试。本文分享了基于项目中针对数据访问层进行单元测试的一种方式,这种方式只注入mybatis相关的bean,快速高效的对不同类型的数据库进行测试,保证程序的正确性。
2023-08-11 09:40:16
147
转载 @AutoConfigurationPackage 和 @ComponentScan 有何区别?
首先,从名字上看,这两个注解意义特别接近,就是自动配置包,自动配置包的目的是能让系统扫描到包内的 Bean;则是组件扫描,这个松哥在之前的教程中也多次提到过了,就不再赘述了,所以这里就有一个问题,这两个注解有啥区别?
2023-08-10 13:08:57
148
原创 Spring Boot 启动注解分析
虽然我们在日常开发中,Spring Boot 使用非常多,算是目前 Java 开发领域一个标配了,但是小伙伴们仔细想想自己的面试经历,和 Spring Boot 相关的面试题都有哪些?个人感觉应该是比较少的,Spring Boot 本质上还是曾经 SSM 那一套,只是通过各种 starter 简化了配置而已,其他都是一模一样的,所以 Spring Boot 中很多面试题还是得回归到 Spring 中去解答!
2023-08-10 11:14:42
8400
2
转载 牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码
一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。所有的扩展接口,以及各个扩展点的使用场景。使用场景:用户可以扩展这个类,来为要实例化的bean作一个代理,比如为该对象的所有的方法作一个拦截,在调用前后输出一行log,模仿。可以看到,该类用于执行各种驱动接口,在bean实例化之后,属性填充之后,通过执行以上红框标出的扩展接口,来获取对应容器的变量。
2023-08-02 11:40:41
95
转载 聊聊Spring AOP 中的Advisor
平时我们项目中涉及到 AOP,基本上就是声明式配置一下就行了,无论是基于 XML 的配置还是基于 Java 代码的配置,都是简单配置即可使用。声明式配置有一个好处就是对源代码的侵入小甚至是零侵入。不过今天松哥要和小伙伴们聊一聊编程式的 AOP,为什么要聊这个话题呢?因为在 Spring 源码中,底层就是通过这种方式创建代理对象的,所以如果自己会通过编程式的方式进行 AOP 开发,那么在看 Spring 中相关源码的时候,就会很好理解了。
2023-07-29 22:40:38
94
原创 分析业务团队如何进行技术建设
本文简单探讨了前端业务团队如何进行技术建设的问题。以维护团队知识库为起点,打造业务架构虚拟团队,并高效地造有用的轮子。通过这些方向,推动团队成员进行技术产出,解决技术焦虑问题。由于笔者经验不足,本文仅仅作为抛砖引玉,还望有所帮助,或探讨指正。
2023-07-26 08:30:00
7012
原创 1万字+30张图 对mysql索引概念以及原理全方位讲解
相比于只有 name 一个字段的索引来说,索引页就多存了一个索引列。最后形成的 B + 树简化为如下图。
2023-07-25 07:30:00
6347
转载 支付宝:服务端如何防止订单重复支付?
如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互。支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。这个过程中经常可能遇到的问题是掉单,无论是超时未收到回调通知也好,还是程序自身报错也好。总之由于各种各样的原因,没有如期收到通知并正确的处理后续逻辑等等,都会造成用户支付成功了,但是服务端这边订单状态没更新。
2023-07-24 17:59:59
100
原创 强力推荐!史上最强logo设计Midjourney提示词合集
作为资深设计师, 我深知一个好的 logo 对提升品牌形象有多么重要。但是设计一个新颖又富有辨识度的 logo 往往难于登天。我相信很多设计师和我一样,为 logo 设计问题而彻夜难眠。为了解决我们共同的痛点, 我潜心研究, 吐血整理出 22 条 Midjourney 提示词。它们涵盖多种流行风格,只要输入关键词,立刻就能呈现出数百种设计草图。我知道这将极大拓宽你的设计思路,让你在海量选项中脱颖而出!
2023-07-24 08:00:00
13773
2
原创 JVM调优-CMS常见参数、线程计算与推荐配置
该值代表老年代堆空间的使用率,默认值为 68。在 cms gc remark 之前做一次 ygc,减少 gc roots 扫描的对象数,从而提高 remark 的效率,默认关闭。当使用 CMS 收集器时,默认年轻代使用多线程并行执行垃圾回收(UseConcMarkSweepGC 开启后则默认开启)。被启用时,并发的 CMS 阶段将以多线程执行(因此,多个 GC 线程会与所有的应用程序线程并行工作)。该参数启用后 JVM 无论什么时候调用系统 GC,都执行 CMS GC,而不是 Full GC。
2023-07-21 07:15:00
6824
转载 一次线上 JVM 调优实践,FullGC40 次 / 天到 10 天一次的优化过程
FullGC 一天超过一次肯定就不正常了。发现 FullGC 频繁的时候优先调查内存泄漏问题。内存泄漏解决后,jvm 可以调优的空间就比较少了,作为学习还可以,否则不要投入太多的时间。如果发现 CPU 持续偏高,排除代码问题后可以找运维咨询下阿里云客服,这次调查过程中就发现 CPU 100% 是由于服务器问题导致的,进行服务器迁移后就正常了。数据查询的时候也是算作服务器的入口流量的,如果访问业务没有这么大量,而且没有攻击的问题的话可以往数据库方面调查。
2023-07-20 11:24:26
124
原创 RocketMQ实战总结|记一次消息队列堆积的问题排查
根据以上机制,回到本问题,假如这台 Proxy 机器的众多 MQ 消费者线程中有任意一个被卡住,那么整个 queue 的消费位点将永远停留在被卡住的消息对应的 offset。Tip:MQ 拉消息的机制是,拉到的消息会先存放在内存中容量为 1000 的 cache 中,然后这些内存中的消息将被消费者线程消费。至此,Proxy 系统个别机器 MQ 堆积严重的问题根因找到:该机器的某个消费者线程在通过 HTTP 下载图片时一直卡住,导致整个 queue 的消费位点无法往前推进,从而持续堆积。
2023-07-20 07:00:00
7027
1
原创 请给 SpringBoot 写一个优雅的单元测试吧?
前面的知识表明,单元测试就是对一个系统中的某个最小单元的逻辑正确性的测试,通常是对一个方法来进行测试,因为只测试逻辑正确性,所以这个测试是独立的,不与任何外界环境相关,比如不需要连接数据库,不访问网络和文件系统,不依赖其他单元测试。但是现实的业务逻辑中往往有很多复杂错综的依赖关系,比如你想对 Service 进行单元测试,那么它要依赖一个数据库持久层的 Repository 对象,这时候就难办了,若创建了一个 Repository 便连接了数据库,连接了数据库便不是一个独立的单元测试。
2023-07-19 01:45:00
27024
6
转载 Elasticsearch 8.X 性能如何优化?看这一篇就够了!
Elasticsearch 是实现用户无缝搜索体验的关键工具。它通过提供快速、准确和相关的搜索结果,彻底改变了用户与应用程序的互动方式。然而,要确保 Elasticsearch 部署达到最佳性能,就必须关注关键指标,并对诸如索引、缓存、查询、搜索以及存储等各种组件进行优化。在本博文中,我们将深入探讨如何调整 Elasticsearch 以实现最佳性能和发挥最大潜能的最佳实践与技巧,从优化集群健康、搜索性能和索引,到精通缓存策略和存储选项。
2023-07-18 14:16:31
162
原创 基于 rsync 像 macOS 的 Time Machine 一样备份您的 Linux 服务器
这个脚本我用了几天,感觉 Time Machine 的特性都具备了,而且磁盘满的时候可以自动清理最早的备份,权限、硬链接全部正常,觉得应该完美了。最重要的是 (wo) 不(bu)用 (hui) 配置复杂的 rsync,可以说是 Linux 版的 Time Machine!-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;前几天我误删了几个文件,还好我有设置 Time Machine 自动备份,于是我打开 Time Machine,点几下鼠标,文件就回来了!
2023-07-18 08:30:00
24728
原创 小心@Async注解,让我们进入Spring循环依赖的坑
早期暴露出去的对象,可能是 AService 本身或者是 AService 的代理对象,而且是通过 AnnotationAwareAspectJAutoProxyCreator 对象实现的,但是通过 AsyncAnnotationBeanPostProcessor 的回调,会对 AService 对象进行动态代理,这就导致 AService 早期暴露出去的对象跟最后完全创造出来的对象不是同一个,那么肯定就不对了。也就说,AOP 和 @Async 注解虽然底层都是动态代理,但是具体实现的类是不一样的。
2023-07-17 06:30:00
23896
原创 Spring依赖注入Bean类型的8种情况详解
到这 Spring 能够注入的 Bean 的 8 种类型就讲完了,其实这 8 种类型可以分为以下几种功能:单一注入,就是注入一个单一的对象集合注入,可以注入数组或者集合延迟注入,比如 @Lazy、ObjectFactory、ObjectProvider、JSR-330 Provider安全注入,不存在不会抛异常,比如 Optional、ObjectProvider。
2023-07-14 08:00:00
24684
原创 Spring 中的父子容器你了解吗?
在 SSM 项目中,Spring 容器是父容器,SpringMVC 是子容器,子容器可以访问父容器的 Bean,但是父容器不能访问子容器的 Bean。更近一步,有小伙伴可能也了解过,不用父子容器,单纯就用一个 SpringMVC 容器似乎也可以,项目也能运行。那么现在问题来了:既然单纯一个 SpringMVC 容器就能使项目跑起来,那我们为什么还要用父子容器?父子容器的优势是什么?
2023-07-13 07:45:00
21171
2022图解网络 IPv6 、网络设备、二层交换机、三层交换机、防火墙、无线、设备选型,网络规划和实战
2022-07-04
windows加密器9款加密工具合集:U盘防拷贝、视频加密、PDF文件加密、EXE文件加密等
2022-05-13
Jenkins持续集成从入门到精通.pdf
2021-09-07
Navicat.7z
2020-03-26
Maven基础讲义.zip
2019-07-30
西蒙iPhone-OpenGL ES 教程【中文翻译版PDF】
2017-09-01
SurfaceView
2015-05-05
CameraDemo
2015-05-02
android 选项卡TanHost
2015-05-02
iOS 怎么上架后台持续定位的应用
2016-01-20
求vs2012怎么连接Oracle,大神们求助!!!
2015-05-09
请问Android.mk在哪里,需要自己写吗?求各位大侠指教。
2015-04-08
android获取GPS添加权限后出现问题。求大神给指点。
2015-04-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人