- 博客(969)
- 资源 (1)
- 收藏
- 关注
原创 【表分区】MySQL表分区(partition)创建、查询、删除以及重建分区等
MySQL 支持表分区功能,可以通过分区来提高大型表的性能。分区可以基于不同的策略进行,例如基于范围(RANGE)、列表(LIST)、散列(HASH)或键(KEY)。请注意,分区操作可能会导致大量的 I/O 操作,特别是在大型表上。因此,在执行这些操作时应该谨慎,并考虑在低峰时段进行。以上示例展示了基本的分区操作。根据实际需求,可能还需要结合其他 SQL 语句来管理分区,例如。查询分区表与查询普通表相似,不需要特别的语法。下面是一些基本的示例,展示如何在 MySQL 中创建、查询、删除以及重建分区。
2024-09-30 20:47:25 488
原创 【数据库】两个集群数据实现同步方案
要实现实时的数据同步方案,尤其是在两个集群之间,通常需要考虑多种因素,包括数据的一致性、性能影响、网络延迟以及故障恢复能力等
2024-08-29 19:16:07 938
原创 【数据库】Oracle和Mysql的区别
Oracle 和 MySQL 是两种非常流行的数据库管理系统(DBMS),它们各有特色,在 SQL 语法上也存在一些差异。这些只是 Oracle 和 MySQL 之间的一些基本区别。具体使用时还需要参考各自的产品文档以了解更详细的语法和功能。
2024-08-29 18:33:26 1508
原创 【SpringBoot】SpringBoot应用Yaml 解析冒号(:)字符串踩坑排查记录
另外,还要注意的是,这里按“0x”开头的字符串如果不加引号,则按十六进制整数规则解析;一开始,我以为是Nacos的问题,同事提醒说直接在application.yml文件中这么配置,解析出来的也是 6841,所以可以确定是SpringBoot解析的时候出的问题。于是开始排查SpringBoot项目启动解析yml文件的过程,一步步断点,调试,发现SpringBoot项目是采用snakeyaml解析yml配置文件的。代码中预期获取的是字符串:“114:1”,但是日志打印出来的却是 6841。
2024-06-29 06:08:48 799
原创 【 技术栈】技术方案到底怎么写?
技术方案应该是相关方共同参与并且需要达成共识,技术方案需要考虑现有的资源成本,现有系统影响,以及合理性多方位来分析,通过技术文档可以让相关方理解整个功能的业务流转逻辑,对于后续工作推进也有一定作用。本文结合作者工作中写技术方案的经验做了总结,存在不足欢迎补充或者指正,欢迎大家在评论区分享下自己如何写技术方案。关注我们一起学习技术吧,坚持相信有输入一定要有输出,希望我们的技术能力越来越强大。
2024-06-08 18:48:26 1135
原创 【数据库】SQL中为什么不要使用1=1
1=1”在SQL语句中可能看起来无害,但实际上它是一种不良的编程习惯,可能会导致性能下降。就像在做饭时不会无缘无故地多加调料一样,我们在编写SQL语句时也应该避免添加无意义的条件。每一行代码都应该有它存在的理由,不要让人和数据库浪费时间在不必要的事情上。
2024-05-24 18:50:36 1093
原创 【Nginx】nginx如何实现透转?
通过精心配置,Nginx不仅能够高效地处理请求,还能在复杂网络架构中忠实传递每一份真实。记住,安全总是多层防御的结果,IP透传虽好,但别忘了结合其它安全措施,共同织就一张牢不可破的防护网。
2024-04-30 08:36:29 917
原创 【linux】使用less命令查找文件中的关键字
一般我们查看文件内容时,使用基本的cat,tail,more命令就可以了。但如果我们有时候想查询文件中的关键字内容时,这个时候就不得不依靠less命令。在Linux上输入less a.txt(文件名),会看到a.txt文件的内容。这个时候我们想用关键字搜索的话,有两种方式。一种是从上往下搜索另一种是从下往上搜索从下往上搜索内容需要输入G命令,让光标移到文件最后。从上往下搜索时,需要输入"/关键字"命令,从下往上搜索时,输入"G”命令后,还需要输入"?关键字"命令。文件中含有关键字,会高亮显示。
2024-03-18 14:38:47 1440 2
原创 【linux】Linux下vim常用命令:编辑、保存、退出
vim是我们在使用Linux是经常会使用的工具,新手总是忘记使用方法(当然我也是)。在这里记录下常用命令以防止以后再忘记。保存并退出: :wq (英文冒号,保存并退出当前编辑的文件);保存编辑文本: :w (英文冒号,保存当前编辑的文件);强制退出: :q!(英文冒号,强制退出不保存)。退出编辑文件: :q(英文冒号,退出当前编辑的文件);进入编辑模式: i (在当前位置插入,开始编辑);
2024-02-29 22:29:07 1090 1
原创 ps -ef | grep 命令详解
grep 命令是查找(Global Regular Expression。Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;| 符号,是个管道符号,表示ps 和 grep 命令同时执行;a :显示终端上的所有进程,包括其他用户的进程。u :以用户为主的格式来显示程序状况。x :显示所有程序,不以终端机来区分。ps 命令的作用是显示进程信息的;r :只显示正在运行的进程。-e : 显示所有进程。-h : 不显示标题。
2024-01-04 20:56:14 1441
原创 数据库中间件介绍
数据库中间件是一种介于数据库系统和应用程序之间的软件层。它充当了一个抽象层,屏蔽了底层数据库的细节,为应用程序提供了更简化的接口。数据库中间件的主要目标是提供更高的性能、可用性、可扩展性,并简化数据库管理。典型的数据库中间件设计方案有3种:proxy、smart-client、单元化架构方式优点缺点Proxy 模式1.多语言支持2.对业务开发透明1.实现复杂2.Proxy 需要保证高可用3.租户隔离需要考虑Smart-client 模式1.实现简单,易于使用2.天然去中心化。
2023-12-24 19:17:57 1265
原创 【Java】Java8 将List转换为用逗号隔开的字符串的几种方法
【代码】【Java】Java8 将List转换为用逗号隔开的字符串的几种方法。
2023-12-14 08:17:12 1610
原创 从理论分析高可用
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,通常是指通过设计减少系统不能提供服务的时间。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。为了保证系统的高可用,我们可以从事前、事中和事后三个时间阶段,从技术和业务两个层面来解决问题。对于保证系统的高可用,我们可以通过事前、事中和事后三个时间阶段以及技术和业务两个层面综合进行处理。事前的准备是最多的,因为我们要尽最大努力去保证不出现问题。
2023-12-12 21:22:43 635
原创 【MQ】Rocketmq如何保证消息不丢失
RocketMQ可以理解成一个特殊的存储系统,这个存储系统特殊之处数据是一般只会被使用一次,这种情况下,如何保证这个被消费一次的消息不丢失是非常重要的。本文将分析RocketMQ从哪些方面来保证消息的不丢失。消息系统将不同的系统进行解耦,在提高了系统的高吞吐量和异步性能的同时,也对系统稳定性带来了挑战,消息保证可靠性不丢失就是非常关键的一个稳定性挑战,本文分别从生产者,Broker,消费者端三端来考虑对应方案来处理消息不丢失的手段。
2023-12-11 21:21:09 893
原创 一次事务失效问题的排查
解决起来也很简单,开一个新的事务就可以了,这个时候testRollback()跟test()两个方法便是两个事务了,当然,如果业务要求testRollback()跟test()两个方法的数据是要同生共死的,那代码就不能这样写了。有一次代码评审,同事有一个问题,如果一个方法有多个事务同步管理器,他们的执行顺序是怎样的,我也是写这个博客,重新看了下代码才找到原因,玄机在这行代码中,有兴趣的朋友可以去看看。事务提交之后,会重置事务状态,这个时候自动提交会变更为true,也就是这个数据库连接其实已经没有事务了。
2023-12-10 21:51:15 1132
原创 【Spring】Spring 微服务中的数据分区和分片
在微服务架构中,高效的数据管理至关重要。当处理大量数据和高流量应用程序时,服务可能会遇到性能瓶颈。这就是数据分区和分片发挥作用的地方,确保数据的最佳分布以提高效率和性能。在本文中,我们将深入研究数据分区和分片的概念,以及如何在基于 Spring 的微服务中实现它们。在数据库和数据管理领域,分区是优化数据检索和存储的主要策略之一。数据分区涉及将数据库或表划分为更小、更易于管理的部分,并将每个部分视为更大数据集的组成部分。数字数据的指数级增长推动了对有效管理这种洪流的策略的需求。
2023-12-07 20:45:18 814
原创 【Spring Boot 】Spring Boot 常用配置总结
在涉及项目开发时,通常我们会灵活地把一些配置项集中在一起,如果你的项目不是很大的情况下,那么通过配置文件集中不失为一个很好的解决方案。在 Spring Boot 中,我们可以方便地通过读取格式的配置文件,进而注入我们的项目中。app:name: demo...这个自定义的内容,我们又怎么获取呢?
2023-12-06 09:34:08 1475
原创 【Spring Boot】忽视日志吃大亏手把手教你学习Spring Boot日志
不知有多少人和笔者一样,在刚学习编程的时候,对日志并不重视。那时候学习java代码是用System.out.println(),相信屏幕前不少人一开始也是这样。后来即使加入了项目,用上了日志插件,也只是使用,对写日志也并无兴致。不过随着开发年限的上升,你就会发现,开发的工作其实写代码只有一半,而另一半主要是排查问题。写的时候少写一行日志很爽,排查的时候,少这一行日志恐怕就要抓破脑袋了学习完本文,你应当对现在这几个常用框架的有所了解,并能基础应用了。
2023-12-01 22:10:34 713
原创 聊聊接口最大并发处理数
生活在 2023 年的互联网时代下,又是在国内互联网越发内卷的背景下,相信大家面试找工作、网上学习查资料时都了解过互联网系统设计三高指标,那就是高并发、高性能、高可用。本文主要讲高并发、高性能相关。本质上高性能也是为了给高并发铺平道路。而高并发设计中一部分也就是对应了本文主题接口最大并发数。
2023-11-30 23:12:25 980
原创 【DDD】领域驱动设计总结——如何构造领域模型
了解了如何创建和运用模型之后,我们再来探讨下如何构造一个领域模型。这就需要我们对领域进行分离,了解领域对象的分类及生命周期的管理。
2023-11-30 23:07:18 1003
原创 【Spring Boot】使用 Spring Boot 进行开发时经常会遇到的问题总结
后端开发是任何 Web 应用程序的支柱,负责处理数据、逻辑以及前端和数据库之间的交互。虽然 Spring Boot 简化了构建健壮后端系统的许多方面,但仍然存在开发人员需要警惕的常见问题。在这篇文章中,我将探讨其中的一些陷阱,并提供使用 Spring Boot 的 Java 示例代码来说明后端开发需要从多方面出发,考虑应对不同问题的方法。在这篇文章中,我深入研究了后端工程师面临的其他挑战,提供了使用 Spring Boot 的 Java 实际示例。
2023-11-30 22:56:48 883
原创 【java】记一次Java应用查询不到最新数据的问题
主备机房数据库做同步,redis可没做同步,那如果备机房之前测的时候把旧数据缓存起来了,之后在主机房管理平台修改了配置,数据库数据是改了,主机房redis是清了,数据库也同步到备机房了,但是备机房redis不会触发清除啊!复盘一下,首先是部署拓扑,做的主备机房异地灾备,主备机房数据库做同步,查看了两边数据是一致的!其实这个问题的关键是,备机房也和主机房一起工作了,导致备机房的redis有了缓存数据,按正常使用方式,备机房只有主机房故障才会启用,不会并且也不建议同时使用,因为可能还会有其他问题。
2023-11-30 22:45:24 625
原创 【Linux】Linux 系统 grep 命令超详细讲解
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。)命令用于根据给定的正则表达式搜索文本,并将匹配的行打印出来。grep 命令是一项非常有用的工具。
2023-11-26 21:50:39 1700
原创 【java】想要限制每次查询的结果集不能超过10000行,该如何实现?
对于一些Saas化软件,当某个租户在执行查询SQL时,如果查询条件出现了BUG,导致去查了所有租户的数据,这种情况是非常严重的,此时就需要在架构层面做限制,禁止一些特殊SQL的执行,另外,为了保护数据库,也可能会限制某些查询语句不要查询太多的数据,那么怎样在平台架构层面对业务层的SQL做拦截和校验呢?本文分享一下我司的做法。我们集团里有的项目用的Mybatis,有的项目用的Spring Data JPA,共同点在于都用的Druid连接池,所以可以在Druid层面做SQL的拦截和校验。
2023-11-22 22:23:29 893
原创 【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用FastThrow方式来抛出异常,而异常Trace即详细的异常栈信息会被清空。这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息。生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志,问题是 堆栈信息呢?哪里报的NPE在哪?,省略异常栈信息从而快速抛出异常.
2023-11-21 20:01:01 1361
原创 【Spring boot】RedisTemplate中String、Hash、List设置过期时间
时间类型:TimeUnitTimeUnit . SECONDS : 秒 TimeUnit . MINUTES :分 TimeUnit . HOURS :时 TimeUnit . DAYS :日 TimeUnit . MILLISECONDS :毫秒 TimeUnit . MILLISECONDS :微秒 TimeUnit . NANOSECONDS :纳秒。
2023-11-20 22:30:00 2251
原创 【Redis】RedisTemplate最全的常用方法
RedisTemplate常用方法String类型Hash类型List类型Set类型zSet类型Redis常用的数据类型:String、Hash、List、Set、zSet。
2023-11-19 22:06:19 1119
原创 【Java】ArrayList和LinkedList使用不当,性能差距会如此之大!
在面试的时候,经常会被问到几个问题:ArrayList是基于数组实现,LinkedList是基于链表实现当随机访问List时,ArrayList比LinkedList的效率更高,等等ArrayList和LinkedList在新增、删除元素时,LinkedList的效率要高于 ArrayList,而在遍历的时候,ArrayList的效率要高于LinkedList那这个回答是否准确呢?今天我们就来研究研究!从源码角度解析ArrayList.subList的几个坑。
2023-11-18 21:13:26 502
原创 【JAVA】去掉 if...else 的七种绝佳之法...
我相信小伙伴一定看过多篇怎么去掉 if…else 的文章,也知道大家都很有心得,知道多种方法来去掉 if…else ,比如 Option,策略模式等等,但我相信这篇文章绝对是最全,最完备怎么去掉 if…else 的文章,里面有些方法我相信有小伙伴肯定不知道,我也不卖关子,直接进入主题,如何干掉 if…else。
2023-11-13 22:55:20 2091
原创 【架构】后端项目经典分层架构介绍
开发后端项目时,我们最常见的一种架构模式就是分层架构。所谓的分层架构,就是把系统自上而下分为多个不同的层,每一层都有特定的功能和职责,且只和自己的直接上层与直接下层 “打交道”。分层架构的优点是:每一层都有明确定义的职责,易于理解和维护;而且各层可以独立扩展,以适应不同的需求。所以分层架构也是最适合新手入门学习、并且实际开发中应用最多的架构。
2023-11-10 22:29:15 2073 2
原创 【服务发现与配置】Consul特性及搭建
虽然说牛逼的公司都有那么几个牛逼的运维团队,牛逼的运维团队都有着神秘黑科技般敲代码的姿势;本人虽然不是一个运维工程师,但是有幸自己比较爱倒腾这些东西,也会那么一点点运维知识,虽然不算专业,但是还是可以在linux平台下敲一敲代码。去年由于自己业余时间搞了一个app项目,当时自己兼任后端开发,又同时兼任运维,经过多少个夜晚才把后端API网关 搭建起来,当时技术选型主要使用微服务架构,说到微服务架构,也就少不了分布式集群,那就更少不了Consul。
2023-11-09 22:30:29 1575
原创 【管理工具】CMAK安装和使用(kafka-manager)
Java环境:需要jdk11+官网上已经提供了编译好的压缩包:cmak-3.0.0.5.zip。直接下载使用即可brokers Spread: broker 使用率,某个topic的partitions/brokersbrokers Skew:broker的分配倾斜率失衡的broker:该broker上的partition数超过平均的partition,则该broker算失衡;失衡倾斜率:失衡的broker/所有的broker添加分片:Add Partitions。
2023-11-08 21:48:06 1199
转载 【配置】如何在打包Spring Boot项目时按需使用日常、测试、预发、正式环境的配置文件
在我们开发项目的时候,一般有四套环境:日常、测试、预发、正式。日常环境作为我们开发环境;测试环境给测试同学测试功能;预发环境给正式环境发布时提供准备;正式环境则是稳定的生产环境。这四套环境,数据库、中间件以及其他一些配置多多少少都有一些不同,所以如果我们只用一个application配置文件的话肯定是有问题的,一般的做法是准备4个配置文件,用来区分4个环境,每个文件填入的配置内容互不干扰,然后在项目打包的时候指定文件即可。如下图:具体做法。
2023-11-07 21:57:01 1047
原创 【三方调用】如何实现异步通知的重试机制
工作中经常要和第三方做对接,比如支付、电子合同等系统。操作成功之后,第三方会发送异步的通知,返回最终的处理结果,使用异步而不是使用同步通知,是为了加快系统响应速度,防止线程阻塞。任务处理完成后通过异步的通知,发送给对应的服务端。之前对接微信支付,完成支付后,微信发送一个异步通知给服务端,服务端根据支付通知修改状态,通知规则看到以下的一段话。
2023-11-06 22:56:00 433 1
原创 【架构图解】API架构图解:如何以图表形式展现复杂系统
架构图是链接到 API 的不同组件/服务如何相互交互的直观表示。当需要理解 API 的架构并将其传达给不同的利益相关者(包括其他开发人员、项目经理和客户)时,这些图表非常有用。图表/视觉效果有多种类型,每种都有其自己的用途和优点。在本部分中,我们将探讨不同类型的图表及其用途。
2023-11-05 21:03:37 1306
原创 【Shell 系列教程】Shell printf 命令( 六)
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。%-4.2f 指格式化为小数,其中 .2 指保留2位小数。
2023-11-04 21:58:06 879
原创 【Shell 系列教程】shell echo 命令( 五)
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。\c” # -e 开启转义 \c 不换行。OK #标准输入。OK It is a test #输出。\n” # -e 开启转义。注意: 这里使用的是反引号 `, 而不是单引号 '。您可以使用echo实现更复杂的输出格式控制。
2023-11-04 21:45:19 384
原创 【Shell 系列教程】shell基本运算符(四)
变量 file 表示文件 /var/www/runoob/test.sh,它的大小为 100 字节,具有 rwx 权限。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。注意:条件表达式要放在方括号之间,并且要有空格,例如: [关系运算符只支持数字,不支持字符串,除非字符串的值是数字。b] 是错误的,必须写成 [ $a == $b ]。文件测试运算符用于检测 Unix 文件的各种属性。
2023-11-04 21:36:43 379
原创 【Shell 系列教程】shell数组(三)
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。在数组前加一个感叹号!数组的键为: google ceshi taobao。数组的键为: google ceshi taobao。与大部分编程语言类似,数组元素的下标由 0 开始。-A 选项就是用于声明一个关联数组。
2023-10-30 20:34:31 321
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人