自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

转载 接口性能优化对于从事后端必了解

接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。该问题说简单也简单,说复杂也复杂。有时候,只需加个索引就能解决问题。有时候,需要做代码重构。有时候,需要增加缓存。有时候,需要引入一些中间件,比如 Message Queue。有时候,需要需要分库分表。有时候,需要拆分服务。等等。导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友

2021-12-02 14:04:45 506

转载 这才是微服务划分的正确姿势,值得学习

我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。有人说微服不难,难的是服务的划分,虽然我持保留意见。但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度。如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更多的..

2021-12-01 12:25:32 2782

原创 JSON 的文档数据库 RedisJson 介绍

redisJson官网地址:RedisJSON Tutorial | Redis Developer Hub RedisJSON 使 RediSearch 能够索引 JSON 文档,因此用户现在可以通过索引和查询内容来查找文档。这些组合模块为您提供了一个强大的、低延迟的、面向 JSON 的文档数据库!先决条件:#Redis 6.x 或更高版本 RediSearch 2.2 或更高版本 RediJSON 2.0 或更高版本RedisJson发布官方性能报告,性能碾压ES和Mongo...

2021-11-26 15:09:10 3062

原创 @ConditionalOnProperty注解控制配置文件是否生效

注解

2021-11-25 16:28:32 2729

原创 OLTP与OLAP的区别初了解

OLTP和OLAP的区别联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。OLTP的特点一般有:1.实时性要求高。我记得之前上大学的时候,银行异地汇款,要隔天才能到账,而现在是分分钟到账的节奏,说明现在银行的实时处理能力大大增强。2.数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应的数据处理与转移。3.交易一般是确定的,比如银行存取款的金额肯定是

2021-11-23 14:30:22 234

原创 Kafka分区分配策略-RangeAssignor、RoundRobinAssignor、StickyAssignor

引言按照Kafka默认的消费逻辑设定,一个分区只能被同一个消费组(ConsumerGroup)内的一个消费者消费。假设目前某消费组内只有一个消费者C0,订阅了一个topic,这个topic包含7个分区,也就是说这个消费者C0订阅了7个分区,参考下图(1)。此时消费组内又加入了一个新的消费者C1,按照既定的逻辑需要将原来消费者C0的部分分区分配给消费者C1消费,情形上图(2),消费者C0和C1各自负责消费所分配到的分区,相互之间并无实质性的干扰。接着消费组内又加入了一个新的消费者C2,如此消费

2021-11-05 17:00:02 277

原创 Kafka 跨集群同步方案

知乎https://zhuanlan.zhihu.com/p/46017539

2021-11-01 15:02:03 945

原创 java实现jsapi支付,微信异步通知结果

/** * 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url * * @return */ @PostMapping("/get/result") @ApiOperationSupport(order = 5) @ApiOperation(value = " 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url", notes = " 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url") public void n.

2021-09-14 17:15:29 1206 2

转载 java final 使用讲解(讲解string)

一、java final基本概念:1、主要用于修饰类、属性和方法:被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的2、final finally finalize区别:(1)final:可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。(2)finally:一般作用在try-ca

2021-08-24 12:01:59 1777

原创 tcp三次握手四次挥手详解

对于 TCP 三次握手和四次挥手的一些疑问:第一次握手,如果客户端发送的SYN一直都传不到被服务器,那么客户端是一直重发SYN到永久吗?客户端停止重发SYN的时机是什么?第三次握手,如果服务器永远不会收到ACK,服务器就永远都留在 Syn-Recv 状态了吗?退出此状态的时机是什么?第三次挥手,如果客户端永远收不到 FIN,ACK,客户端永远停留在 Fin-Wait-2状态了吗?退出此状态时机是什么时候呢?第四次挥手,如果服务器永远收不到 ACK,服务器永远停留在 Last-Ack 状...

2021-08-24 10:43:39 355

转载 redis事件监听的应用场景与案例实战

什么是事件监听在使用Redis的过程中,我们对Redis做的每一个操作,下发的每一个命令, 都可以认为是事件的存在。所谓事件监听,就是Redis Server会对客户端下发命令进行一个监控, 一但有人对Redis Server做操作, Redis Server都能知道,并通过某种方式将监听到的事件转发到对应的订阅者。应用场景需求一:一个电商商家后台,商家可以设置多个商品的价格并指定价格的生效时间。后台服务需要生效时间到时对所有已经上架的商品进行价格修改。并在价格修改成功后通知所有关注该商品的

2021-07-13 11:49:14 791

原创 redis过期事件监听(实际项目中有使用)

/** * @Description: redis监听器配置 */@Configurationpublic class RedisSubscribeConfig { @Bean public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) { RedisMessageListenerContainer.

2021-07-13 11:39:04 328

原创 elk-logstash 读取日志(1): 环境搭建(Windows)

ES logstash 实现日志文件读取(windows环境)es版本7.12下载 https://www.elastic.co/cn/downloads/elasticsearchLogstash 7.12.1下载 https://artifacts.elastic.co/downloads/logstash/logstash-7.12.1-windows-x86_64.zipes可视化goole浏览器插件:elasticsearch-head-chrome-pluginES 安装解压.

2021-05-20 23:35:35 555

原创 elk-logstash 读取日志(2): messages和log日志生成时间替换时间戳

目前日志:2021-05-20 14:26:34.817 [http-nio-9031-exec-9] INFO com.abutment.producer.RocketMqHelper.sendMessage - >>>>生产者发送topic为: dispatch_topic msgId: AC1188CD08496B884D5764F234ACDB4E tag: GID_91610000786990367Y2021-05-20 14:26:34.817 [http-n...

2021-05-20 23:26:28 1307

原创 rocketmq/消息管理

1.同步消息2.异步消息3.单向消息

2021-05-19 10:29:50 160

原创 SpringBoot 配置文件存放位置及读取顺序

SpringBoot配置文件可以使用yml格式和properties格式分别的默认命名为:application.yml、application.properties存放目录SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:项目根目录下 项目根目录中config目录下 项目的resources目录下 项目resources目录中config目录下读取顺序 如果在不同的目录中存在多个配置文件,它的读取顺序是:1、config/ap...

2021-05-11 18:11:53 1165

原创 解决redis多客户端并发竞争key:采用Redisson客户端加锁

业务场景:多个客户端并发竞争key,实现操作,保证只有一个客户端可以实现对key操作成功设计思路:采用Redisson客户端实现分布式锁,保证并发操作命令串行化执行,预期结果准确事例: 设计demo,demo2,同事有如下代码相当于6个线程并发对anyLock中值进行修改,串行执行,预期结果是330 并发执行demo1接口:http://127.0.0.1:9999/redissonOpt/makeRedisLockKeyParallel,demo2接口:http://12...

2021-05-11 10:47:19 754

原创 IDEAL代码质量插件

1.SonarLintSonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道下载与安装在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint我们还可以禁用某些规则如果需要同步自定义的规则时,可以绑定到SonarQube查看检测的结果对于代码中的..

2021-04-25 09:58:51 234

原创 Elasticsearch: Reindex接口使用

在我们开发的过程中,我们有很多时候需要用到Reindex接口。它可以帮我们把数据从一个index到另外一个index进行重新reindex。这个对于特别适用于我们在修改我们数据的mapping后,需要重新把数据从现有的index转到新的index建立新的索引,这是因为我们不能修改现有的index的mapping一旦已经定下来了。在接下来的介绍中,我们将学习如何使用reindex接口。为了能够使用reindex接口,我们必须满足一下的条件:_source选项对所有的源index文档是启动的,也即源

2021-04-19 15:07:34 565

原创 nginx 下部署前端实例

1.下载nginx2.进入nginx.conf3.配置4.将前端项目放入nginx目录下的html目录5.启动后端项目和nginx服务启动命令 start nginx ;重新启动命令 nginx -s reload6.访问localhost就能看到项目了(默认80端口)注意:如果nginx配置了域名,则需要在电脑上修改hosts文件,hosts文件位置:C:\Windows\System32\drivers\etc在hosts里面配置域名映射。...

2021-04-14 15:20:25 110

转载 SpringBoot启动时让方法自动执行的几种实现方式

在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?接下来我带领大家逐个解答1.实现ServletContextAware接口并重写其setServletContext方法 @Component publicclassTestStartedimplementsServletContextAware{ /** *在填充普通bean属性之后但在初始化之前调用...

2021-04-14 11:05:41 198

原创 java8接口中default 方法使用实战

在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口中被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方法如果接口A中有default方法:public interface A { public default void a(){ System.out.println("这是A"); }}Test类实现接口A:...

2021-04-12 10:38:51 920

原创 阿里云+slb+nginx+esc+其它组件架构方案说明

一种适合创业公司的技术架构方案创业公司,觉得很重要的一点,是快速的以市场行动去验证业务方向的可行性。对于在创业公司的技术团队,一支作为服务支撑的团队,应该遵循的设计原则是:在此前提下,老夫基于阿里云服务实践(是实践不是YY)了一套技术架构方案,如果你不幸步行于此,希望下图没有坑害到你。与其说是架构方案,还不如说是脚手架,因为你所看到的,都是我们最常用的框架和技术,可能不同的是,用了一些阿里云的一些服务。对于上图,老夫解答一些可能会存在疑问的点。问题1:用了阿里云负载均衡(SLB),ng

2021-04-09 11:33:52 1306

原创 线程池参数的合理设置

一:线程池参数简介ThreadPoolExecutor类可设置的参数主要有:corePoolSize:核心线程1.核心线程会一直存活,及时没有任务需要执行2.当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理3.设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,新任务会放在队列中排队等待执行maxPoolSize:最大线程数1.当线程数>

2021-02-18 10:59:51 1927

原创 记2020-12-14面试

今天去一家俗称互联网公司面试,没有自我介绍,没有项目经历介绍,直接上聊1.你了解jvm吗?回答基本流程ok,但是对虚拟机栈中局部变量表的数据存储方式回答出了问题,导致面试官提出异议并解释。 虚拟机栈的相关文章推荐:https://zhuanlan.zhihu.com/p/453541522.说说线程吧?...

2020-12-14 23:47:44 131

原创 rabbitmq消息中间件常见高级面试问题:

1.RabbitMq的工作模式:simple 简单模式.work 资源竞争模式,publish/subscribe 发布订阅模式、routing路由模式、topic 主题模式(路由模式的一种).RPC https://www.cnblogs.com/xyfer1018/p/11581511.html2.如果确保消息能够准确发送,比如:消息传输中因为网络问题失败。投递失败的消息怎么处理 https://blog.youkuaiyun.com/keehom/article/details/108313297...

2020-12-02 10:00:45 269

原创 python实现文件内容全量的copy

# coding:utf-8import reimport os,os.pathdef file_cp(path,path2): #path = #path2 ='D:/testpy/test/config.properties' if not os.path.exists(path2): print ('file not exist') return if not os.path.exists(path): prin...

2020-09-14 22:26:00 290

原创 java 类加载顺序——Java类中声明了静态对象时静态代码块、构造代码块、构造方法的执行顺序

java 类加载顺序——Java类中声明了静态对象时的静态代码块、构造代码块、构造方法的执行顺序先来看看这一段构造函数的执行顺序。package csdn;public class ParentClass { static int num = 0; String name = "qqqqqq"; static String name2 = "wwwwwwwwwww"; static ParentClass parentClass = new ParentClass(...

2020-07-11 20:46:35 294

转载 java 类加载顺序——Java子父类间静态代码块、构造代码块、构造方法的执行顺序

在学习Java基础期间,子父类的静态代码块、构造代码块、构造方法的执行顺序容易混淆,现在通过一段程序来说明它们的执行顺序。一、先看一个简单的静态测试程序:class FatherStaticTest{ static//静态代码块 { System.out.println("执行父类的静态代码块。"); } FatherStaticTest()//父类不带参数的构造方法 { Syst...

2020-07-11 20:12:37 348

转载 java 类加载顺序——java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解

一、描述java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序:首先,在类加载时,为类中的静态成员变量分配内存空间,并为其赋予默认值(整数型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null);其次,执行静态成员变量的显式初始化操作。静态成员的初始化方法有两种,其一为在声明的时候直接初始化,其二为使用静态代码块进行初始化,这两种初始化方式会按照在类中的出现顺序来执行,而且只在类加载的时候执行一次。再次,如果创建了类的对象,便会...

2020-07-11 20:06:35 473

转载 ActiveMQ从入门到精通(一)

这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTP and Pub/Sub)、与Spring整合、ActiveMQ集群、监控与配置优化等。话不多说,我们来一起瞧一瞧!JMS首先来说较早以前,也就是没有JMS的那个时候,很多应用系统存在一些缺陷:1.通信的同步性client端发起调用后,必须等待server处理完成并返回结果后才能继续执行2.client 和 server 的生命周期耦合太高cli

2020-06-15 10:07:26 284 1

转载 UML类图几种关系的总结

红色字体表示的是,在Visio2010中这些术语的叫法(自己感觉是这样的)在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是...

2020-05-27 10:32:15 206

原创 策略模式和适配器模式区别

直接从字面上看也是两个完全不同的模式;从归类上也是一个是结构模式,一个是行为模式;从定义角度:一个是将一个类的接口转换成客户希望的另外一个接口,从而使原本因接口不兼容不能一起工作的类可以一起工作;一个是把一系列算法封装起来,提供一个统一的接口给客户,并使这些算法可以相互间替换;当然,从Java的实现的角度看,都是定义些接口,定义些类来实现应用这些模式;从使用的角度来看也都是用于解决问题的,当你登峰造极,精通设计模式,这些模式对你来说也就是个工具,没什么区别了;...

2020-05-27 09:55:26 3085

原创 sleep和sleep(0)的区别

操作系统原理操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片算法,而Windows则属于抢占式的。在时间片算法中,所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在 时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程 序所要做的就是维护一张就绪进程列表,,当进程用完它的时间片后,它被移到队列的末尾。所谓抢占式操作系统,就是说如果一个进程得到了 CPU 时间,除非

2020-05-26 10:16:56 794

原创 Kafka在高并发的情况下,如何避免消息丢失和消息重复?kafka消费怎么保证数据消费一次?数据的一致性和统一性?数据的完整性?

1、kafka在高并发的情况下,如何避免消息丢失和消息重复?消息丢失解决方案:首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的所有处于ISR的分区都确认收到该消息后,才算发送成功消息重复解决方案:消息可以使用唯一id标识生产者(ack=all 代表至少成功发送一次)消费者 (offset手动提交,业务逻辑成功处理后,提交offset)落表(主键或者唯一索引的方式,避免重复数据)业务逻辑处理(选择唯一...

2020-05-21 14:35:30 492

原创 如何建立rabbitmq链接

PooledConnectionFactory实现ConnectionFactory接口。为因JmsTemlate每次发送消息时都会重新创建连接,创建connection,session,创建productor。这是一个非常耗性能的地方,特别是大数据量的情况下。因此出现了PooledConnectionFactory。这个类只会缓存connection,session和productor,不会缓存...

2020-04-02 10:39:02 1020

原创 详解linux中nginx启动 重启 关闭命令

启动操作 ? 1 nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径停止操作停止操作是通过向nginx进程发送信号来进行的步骤1:查询nginx主进程号? 1 ps -ef | grep nginx 在进程列表...

2018-09-04 00:12:46 164

原创 Linux centos7环境下安装Nginx的步骤详解

Linux centos7环境下安装Nginx的步骤详解1、 首先到Nginx官网下载Nginx安装包下载好后会见到类似下面的一份文件创建nginx-src目录并且去到nginx-src目录里运行如下命令即可:? 1 mkdir nginx-src && cd nginx-src 当然也可以在Linux底下运行以下命令...

2018-09-04 00:10:55 4482

原创 linux 下安装mysql

安装步骤1、下载    下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads    下载版本:我这里选择的5.6.33,通用版,linux下64位    也可以直接复制64位的下载地址,通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5....

2018-08-18 11:18:09 131

原创 webservice

  <plugin>    <groupId>org.jvnet.jaxb2.maven2</groupId>    <artifactId>maven-jaxb2-plugin</artifactId>    <version>0.13.1</version>    <executions&am

2018-02-10 17:02:28 308

payDemo.zip

微信支付H5APPNATIVEJSAPIDEMO,直接移植可用

2021-09-14

MAT分析工具资源包.7z

MAT分析工具资源包

2020-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除