- 博客(1556)
- 资源 (16)
- 问答 (4)
- 收藏
- 关注
原创 详解 Mysql LEFT JOIN和JOIN查询区别及原理
一、Join查询原理查询原理:MySQL内部采用了一种叫做 nested loop join(嵌套循环连接)的算法。Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通过前两个表的 Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复,基本上MySQL采用的是最容易理解的算法来实现join。所以驱动表的选择非常重要,驱动表的数据
2020-06-28 10:42:06 21832 8
原创 必学必会的nginx配置location匹配顺序总结
location匹配顺序1."="前缀指令匹配,如果匹配成功,则停止其他匹配2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)3.正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配4.如果第三步中有匹配成功,则使用该结果,否则使用第二步结果注意点匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配...
2019-06-18 16:36:08 23052 1
原创 Java线程池中线程异常后:是销毁还是复用?
还记得,我们在 3.1 的时候,发现 submit 也是调用了 execute 方法,但是在调用之前, 包装了一层 RunnableFuture,那一定是在 RunnableFuture 的实现 FutureTask 中有特殊处理了,我们查看源码可以发现。但是,我们通过 java.util.concurrent.FutureTask#get(),就可以获取对应的异常信息。当执行方式是 execute 时, 可以看到堆栈异常的输出,线程池会把这个线程移除掉,并创建一个新的线程放到线程池中。
2024-04-18 08:55:47 177
原创 RFC822:电子邮件的基本框架 java mail
以上介绍了RFC822所定义的头段,以后还可能有新的RFC文件来定义一些新头段,新头段的段名必须在NIC(Network Information Center, SRI International, Menlo Park, California)登记。登记的新头段段名不允许以“X-”或“x-”开头。用户可以自由使用自己定义的头段,但这种段的段名不能与RFC822所定义的段名相同,也不能与将来登记的新头段段名相同,否则可能被排斥。为此,用户自定义的段名可用“X-”或“x-”开头。
2024-04-18 08:55:27 742
原创 保证接口安全的11个小技巧
如何保证接口的安全性?根据我多年的工作经验,这篇文章从 11 个方面给大家介绍一下保证接口安全的一些小技巧,希望对你会有所帮助。
2024-04-17 08:52:33 853
原创 面试官:你负责项目的时候遇到了哪些比较棘手的问题?怎么解决的
为了解决接口幂等性的问题,我们采取了以下步骤:首先,我们重新梳理了现有的接口调用流程,明确了哪些接口需要保证幂等性。为了解决 CPU 使用率过高的问题,我们采取了一系列调优措施:首先,我们对存在性能瓶颈的模块进行了代码审查,寻找可能的优化点。在我负责的一个电商项目中,随着业务的发展和用户量的增长,数据库查询性能逐渐下降,特别是在高峰期,部分关键业务功能的响应时间明显延长,严重影响了用户体验。同时,我们也建立了一套完善的性能监控和预警机制,能够及时发现并解决潜在的性能问题,确保系统的稳定运行。
2024-04-16 08:57:21 1408 1
原创 RocketMQ为什么这么快?
在传统 IO 中,如果想将用户缓存区的数据放到内核缓冲区,需要经过 CPU 拷贝而基于零拷贝技术可以减少 CPU 拷贝次数,常见的有两种:mmap()sendfile()mmap() 是将用户缓冲区和内核缓冲区共享,操作用户缓冲区就好像直接操作内核缓冲区,读写数据时不需要 CPU 拷贝Java 中可以使用 MappedByteBuffer 这个 API 来达到操作内核缓冲区的效果。
2024-04-16 08:56:26 821
原创 服务发布或重启,发生抖动怎么办?
在发布或重启某线上某服务时(jetty8 作为服务器),常常发现有些机器的 load 会飙到非常高(高达 70),并持续较长一段时间(5 分钟)后回落(图 1),与此同时响应时间曲线(图 2)也与 load 曲线一致。注:load 飙高的初始时刻是应用服务端口打开,流量打入时(load 具体指什么可参考 http://www.cnblogs.com/amsun/p/3155246.html)。图 1 发布时候 load 飙高图 2 发布时候响应时间飙高。
2024-04-15 14:13:11 1073
原创 Java算法之时间复杂度和空间复杂度的概念和计算
在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。因为现在的内存不像以前那么贵,所以经常听到过牺牲空间来换取时间的说法。
2024-04-15 14:12:45 814
原创 线程间有哪些通信方式?
关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性。关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。可以通过Java内置的等待/通知机制(wait()/notify())实现一个线程修改一个对象的值,而另一个线程感知到了变化,然后进行相应的操作。
2024-03-29 13:35:38 228
原创 手写LRU
方法当链表大小超过容量时返回 true,使得每次访问一个元素时,该元素会被移动到链表的末尾。(boolean 类型,默认为 false),访问顺序则为 true,插入顺序则为 false。sed,最近最少使用) 缓存,确保当存放的元素超过容器容量时,将最近最少访问的元素移除。就会将链表首元素移除,由此我们就能实现一个 LRU 缓存。返回 true 时,视为缓存已满,我们可以封装一个简易版的 LRU(设置为 true 并重写。
2024-03-28 14:07:22 263
原创 K8s 无备份,不运维!
Kubernetes 集群备份主要是备份 etcd 集群。而恢复时,主要考虑恢复整个顺序:停止 Kube-apiserver --> 停止 etcd --> 恢复数据 --> 启动 etcd --> 启动 kube-apiserver。
2024-03-28 14:06:19 380
原创 SpringBoot+Docker:高效容器化的最佳实践
您可能知道 Docker 中的所有镜像都有 Linux 内核的基础层,因此我们不需要将这部分添加到我们的镜像中,因为我们的基础镜像提供了您的应用程序所需的底层内核和依赖项。在此示例中,我们使用多阶段构建,首先在单独的层中构建 Spring Boot 应用程序,然后将构建的 jar 文件复制到最终镜像中。通过这种方式使用多阶段构建,我们可以创建一个精简的 Docker 映像,其中仅包含运行 Spring Boot 应用程序所需的依赖项和文件。通过这样做,我们可以减小图像的大小并提高应用程序的性能。
2024-02-22 18:12:02 1338 3
原创 因为一次 Kafka 宕机,终于搞透了 Kafka 高可用原理!
所以,只要将Topic副本个数设置为和Broker个数一样,Kafka的多副本冗余设计是可以保证高可用的,不会出现一宕机就不可用的情况(不过需要注意的是Kafka有一个保护策略,当一半以上的节点不可用时Kafka就会停止)。存在一种情况,Leader刚收到了消息,Follower还没来得及同步Broker就宕机了,但生产者已经认为消息发送成功了,那么此时消息就丢失了。意思是生产者把消息发送出去之后,之后这消息是死是活咱就不管了,有那么点发后即忘的意思,说出去的话就不负责了。就不会出现丢失消息的情况吗?
2024-02-21 17:30:40 12207
转载 微服务之间的数据依赖问题,该如何解决?
如果是消息联调就比较麻烦,因为常常不知道某条消息被哪台服务节点消费了,为了让特定的服务器消费特定的消息,就需要临时改动双方的代码。整个架构方案上线后,商品数据的同步还算比较稳定,此时商品服务的开发人员只需要关注自身逻辑,无须再关注使用数据的人。如果需要关联使用商品数据的订单,采购服务的开发人员也无须关注商品数据的同步问题,只需要在查询时加上关联语句即可,实现了双赢。仔细计算后,发现之前数据冗余的方案中每个订单都需要保存一份商品的冗余数据,假设订单总数是 N,商品总数是 M,而 N 一般远远大于 M。
2024-02-21 17:29:21 66
原创 Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。
2024-02-21 16:12:01 12592
转载 可解决95%以上问题的Linux命令!能用到退休
对于我们程序员来说,我们始终绕不过去要与 Linux 系统打交道。很多人,特别是新手程序员,一看到 Linux 系统那个小黑框,就发怵,其实,如果你真正去深入了解了,然后再学会一些常用的命令,慢慢的再在工作加以运用,你会发现真不难,而且挺容易操作的。给大家整理了日常工作中常用的 Linux 系统命令,仅供大家参考,
2024-02-20 17:03:40 442
转载 三万字长文:JVM内存问题排查,如何让对JVM一窍不通的我快速开始排查应用内存问题
JVM 的堆空间分成 2 个区域:年轻代、老年代年轻代又进一步细分成 3 个区域:Eden、Survivor From、Survivor To。
2024-02-20 17:02:18 62
原创 零拷贝知识点,性能优化必争之地!
在进行数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与,可以去干别的事情。早期 I/O 操作,内存与磁盘的数据传输的工作都是由 CPU 完成的,而此时 CPU 不能执行其他任务,会特别浪费 CPU 资源。于是,为了解决这一问题,DMA 技术就出现了,实际数据传输工作由 DMA 控制器来完成,CPU 不需要参与数据传输的工作。零拷贝。
2024-02-20 09:26:51 12394
原创 Nacos底层原理一次给你讲个够
1.x 版本是通过 Http 协议来进行服务注册的2.x 由于客户端与服务端的通信改成了 gRPC 长连接,所以改成通过 gRPC 长连接来注册2.x 比 1.x 多个 Redo 操作,当注册的服务实例是临时实例是,出现网络异常,连接重新建立之后,客户端需要将服务注册、服务订阅之类的操作进行重做这里你可能会有个疑问既然 2.x 有 Redo 机制保证客户端与服务端通信正常之后重新注册,那么 1.x 有类似的这种 Redo 机制么?当然也会有,接下往下看。心跳机制仅仅针对临时实例而言。
2024-02-19 15:49:23 12264
原创 别再瞎写工具类了 Apache Commons 它都有
Apache Commons 是对 JDK 的拓展,包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。官网网址: http://commons.apache.org。
2024-02-19 15:48:45 12274
原创 从0到1 带你设计百万级并发应用要点
设计一个拥有上百万用户的系统是很有挑战性的,这将是一个不断优化、持续改进的过程。在本章中,我们先创建一个单用户的系统,然后逐渐将其扩展成可以服务上百万用户的系统。读完本文,你将掌握几个能帮助你破解系统设计面试难题的技巧。
2024-01-26 11:03:16 11895
原创 Mysql分库分表概念与实践(映射关系表&基因法以及扩容方案)
将一个库的数据拆分到多个相同的库中,访问的时候访问一个库把一个表的数据放到多个表中,操作对应的某个表就行本文主要描述了我们进行水平分库分表设计时的一些常见方案。我们在进行分库分表设计时,可以选择例如范围分表,Hash 分表,路由表,或者一致性 Hash 分表等各种方案。进行选择时需要充分考虑到后续的扩容可持续性,最大数据偏斜率等因素。
2024-01-26 11:02:37 12105
原创 LINUX 防火墙 firewalld-cmd命令
zone #作用域–add-port=80/tcp #添加端口,格式为:端口 / 通讯协议–permanent #永久生效,没有此参数重启后失效。
2024-01-25 09:08:54 12040
原创 Linux 命令大全之 用户、用户组 ( 添加、删除、修改 )
sudo (superuser do) 命令是一个命令行程序,它允许用户以 root 用户身份执行命令,而不需要知道 root 的密码,并能把输入输出写入日志 (/var/log/auth.log 文件记录了执行的所有命令和参数sudo 也是一种权限管理机制,它允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。默认的安全策略记录在 /etc/sudoers 文件中,而安全策略可能需要用户通过密码来验证他们自己。
2024-01-25 09:08:15 1517
原创 Centos7 两种方式安装 MySQL5.7 步骤 yum 、本地 tar 文件
它由 MySQL 的原始开发者制作,并保证保持开源。它由 MySQL 的原始开发者制作,并保证保持开源。因为没有安装下 / usr/local/mysq 目录下,所以需要修改成安装的 / az/mysql5.7 目录。由于 CentOS 的 yum 源中没有 mysql,需要到 mysql 的官网下载 yum repo 配置文件。命令中的用 % 代表所有 IP,如有需要,可换成指定 IP。可忽略,安装完成之后可以直接覆盖掉 MariaDB。密码就是初始化时生成的临时密码。密码为刚才获取的临时密码,即。
2024-01-24 11:01:02 1191
原创 程序员跳槽,HR 就喜欢听这样的离职原因。让老实人别再吃亏!
面试干货,HR 就喜欢听这样的离职原因。让老实人别再吃亏!分享如何回答: 你为什么离开上一家公司?
2024-01-24 11:00:08 421
原创 Kafka——管理Kafka(命令行工具)详解
有时候,我们需要知道提交的消费者群组偏移量是多少,比如某个特定的群组是否在提交 偏移量,或者偏移量提交的频度。也就是说,如果集群里有 5 个 broker,生产者的配额是 10MB/s,那么它可以以 10MB/s 的速率在单个 broker 上生成 数据,总共的速率可以达到 50MB/s。根 据分区大小的不同,复制过程可能需要花一些时间,因为数据是通过网络复制到新副本上 的。也就是说,在没有认证的情况下也可以使用这些命令行工具,在没 有安全检查和审计的情况下也可以执行诸如主题变更之类的操作。
2024-01-23 09:40:39 1211
原创 SpringBoot 自定义Filter 提前返回 CORS 错误 处理前后端分离跨域配置无效问题解析
浏览器有跨域限制,非同源策略 (协议、主机名或端口不同) 被视为跨域请求,解决跨域有跨域资源共享(CORS)、反向代理和JSONP的方式。本篇通过 SpringBoot 的资源共享配置 (CORS) 来解决前后端分离项目的跨域,以及从原理上去解决跨域配置不生效的问题。
2024-01-23 09:39:49 1218
原创 Spring Security 之方法级的权限管控 @PreAuthorize 使用详解
默认情况下, Spring Security 并不启用方法级的安全管控. 启用方法级的管控后, 可以针对不同的方法通过注解设置不同的访问条件.Spring Security 支持三种方法级注解, 分别是 JSR-205 注解 /@Secured 注解 / prePostEnabled 注解. 这些注解不仅可以直接加 controller 方法上, 也可以注解 Service 或 DAO 类中的方法.
2024-01-22 09:02:33 14165
原创 Kubernetes弃用Dockershim,转向Containerd:影响及如何应对
与之前的方案相比,这不仅带来了更纯粹的功能模块,而且缩短了调用链,提高了系统的效率和稳定性。containerd 是一种容器运行时引擎,原属于 Docker 的组件的一部分,主要提供容器生命周期管理(从创建到销毁容器)、拉取和推送镜像、存储管理(管理镜像及容器数据的存储)、调用 runc 容器运行等,现已由开源社区拆分脱离出来单独作为容器运行时项目。在 Kubernetes 中,Containerd 作为容器运行环境,负责管理 Pod 的生命周期,包括容器的创建、启动、停止和删除等操作。
2023-12-29 15:11:20 13159
原创 阿里终面:10亿数据如何快速插入MySQL?
要首先确认约束条件,才能设计方案。确定面试官主要想问的方向,例如 1T 文件如何切割为小文件,虽是难点,然而可能不是面试官想考察的问题。从数据规模看,需要分库分表,大致确定分表的规模。从单库的写入瓶颈分析,判断需要进行分库。考虑到磁盘对并发写的支持力度不同,同一个库多个表写入的并发需要限制。并且支持动态调整,方便在线上环境调试出最优值。存储引擎对写入性能支持不同,也要在线上对比验证数据库批量插入的最佳阈值需要反复测试得出。由于存在并发度限制,所以基于 Kafka 分离读取任务和写入任务比较困难。
2023-12-29 15:10:58 13200
原创 用好它们!没有你找不到的电子书
现在我都是一般在某当当 ,或者知乎等平台寻找一些大佬推荐的书籍 然后在这里直接下载阅读,不好了直接卸载,不用担心付费踩坑。这个是本人平时用的最多的一个 ,书籍数量比较多,而且你可以根据书名、作者、出版社 ···去精准的搜索自己想要的书籍。如果你可以突破国内的限制 ,这个网站绝对是书籍大宝藏。那就乖乖的用上面那两个国内的就可以了。界面设计非常好看 ,使用起来也非常简单,即可下载直接下载推荐的书籍,也可以根据关键词去搜索下载想要的电子书。书籍分类比较详细,书籍资源不是太多,都是比较正能量的,完全免费下载。
2023-12-28 09:07:03 12985
原创 elasticsearch笔记五:2024最新版ES8Java客户端-Elasticsearch Java 的client API 操作 Elasticsearch client 8.0
低级别的 REST 客户端,通过 http 与集群交互,用户需自己编组请求 JSON 串,及解析响应 JSON 串。兼容所有 ES 版本。高级别的 REST 客户端,基于低级别的 REST 客户端,增加了编组请求 JSON 串、解析响应 JSON 串等相关 api。使用的版本需要保持和 ES 服务端的版本一致,否则会有版本问题。
2023-12-28 08:56:23 14978 3
原创 elasticsearch 笔记四:聚合分析 聚合分析简介、指标聚合、桶聚合
聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值、最小值,计算和、平均值等。ES 作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。对一个数据集求最大、最小、和、平均值等指标的聚合,在 ES 中称为指标聚合 metric而关系型数据库中除了有聚合函数外,还可以对查询出的数据进行分组 group by,再在组上进行指标聚合。在 ES 中 group by 称为分桶桶聚合 bucketing。
2023-12-27 09:01:27 941
原创 elasticsearch 笔记三:查询建议介绍、Suggester、自动完成
查询建议,为用户提供良好的使用体验。主要包括: 拼写检查;自动建议查询词(自动补全)拼写检查如图:: 对给入的文本进行分词,为每个词进行模糊查询提供词项建议,并不会考虑多个term/词组之间的关系。。API调用方只需为每个token挑选options里的词,组合在一起返回给用户前端即可,在Term Suggester的基础上,会考量多个term之间的关系,比如是否同时出现在索引的原文里,相邻程度,以及词频等等,FST数据结构,类似Trie树,不用打开倒排,快速返回,前缀匹配。
2023-12-27 09:00:06 1328
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关注的人