自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 1. kafka-提高生产者吞吐量

(3)经过三个这些步骤后,消息会放到缓冲区中,但是kafka不会来一个消息就发一个到broker中,而是根据batch(批次)来,当以下任意一个条件满足,就会发送消息(主要流程,还有一些别逻辑)(2)在发送过程中,其中会经过三个步骤,a-拦截器(使用场景不多),b-序列化器,c-Partioner(分区器)上面的图可能不全, 我再详细描述下,在消息发送过程中,设计到两个线程main和sender线程;b - 等待时间到了(lingerMS默认是0ms,这个真要设置,不然来一个发一个,吞吐差)

2023-01-29 16:43:08 646

原创 5 Java NIO群聊系统Demo

Java NIO群聊系统Demo使用的是NIO三大组件,前面介绍的知识。服务端编写(1)服务器启动并接听6667(2)监听上线和下线(3)接收客户端消息,并实现转发客户端编写(1)连接服务器(2)发送消息(3)接受消息...

2022-07-01 19:53:43 171

原创 4 Java NIO--Selector

Java NIO 非阻塞IO是使用一个线程处理多个客户端连接,此时必须使用Selector(选择器)Selecor能够监测多个注册的通道上是否有时间发生,若有,便获取时间然后针对每个时间进行相应的处理。这样一个线程即可管理多个连接和请求,因此Selector也叫多路复用器NIO网络编程原理分析服务器端Demo客户端Demo...

2022-06-30 16:25:16 233

原创 3 Java NIO--Channel

Channel,通道,也可以理解为连接。在传统BIO中,流(Stream)是单向的,例如FileInputStream对向只能进行读取数据的操作,而NIO中的通道是双向的,可以读写操作。Channel在NIO中是一个接口,常用的Channel有:FileChannel:用于文件的数据读写DatagramChannel:用于UDP数据读写ServerSocketChannel和SocketChannel:用于TCP读写通道的读写函数示例,注意读写是站在通道角度看的read(ByteBuffer dst

2022-06-30 10:53:53 135

原创 2 Java NIO--Buffer使用说明

Java NIO--Buffer

2022-06-29 22:15:55 258

原创 1-8 (6). RabbitMQ高级特性-死信队列和延迟队列

1. 死信队列在RabbitMQ应该称为死信交换机DLX:Dead Letter Exchange(死信交换机),当消息称为Dead message后会重新发到死信交换机中。成为死信的三种情况(1) 队列长度达到限制(2) 在消费者手动ack中,basicNack/basicReject,并且不把消息重新放入原队列中,即requeue=false(3) 原队列存在消息过期设置,消息超时后未被消费实现方式不难,主要通过给队列设置相关参数即可:x-dead-letter-exchange和x-de

2022-04-28 17:01:52 1487

原创 1-8 (5). RabbitMQ高级特性-消费端限流和消息过期时间

1.消费端限流具体流程如下:(1)设置手动确认机制;(2)设置prefetch=n,n即为消费端一次从队列拿取n条消息,直到n条消息消费成功,下次才再拿n条# 配置RabbitMQ的基本信息spring: rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest virtual-host: / #设置手动确认机制 listener: simple:

2022-04-28 11:31:14 322

原创 1-8 (4). RabbitMQ高级特性-消费端ACK

Consumer ACK指Acknowledge,确认有三种方式:(1)自动确认:acknowledge=“none”(默认)(2)手动确认:acknowledge=“manual”(3)根据异常情况确认:acknowledge=“auto”,使用较为麻烦自动确认一般是Consumer接收到后就会发送确认信息,并在队列中移除消息,然而在实际生产环境中,有可能出现业务异常,消息就会丢失,通过手动确认,可以确认业务完成后,调用channel.basicAck(),手动确认,出现异常则可以调用chan

2022-04-28 10:45:47 426

原创 1-8 (3). RabbitMQ高级特性-消息可靠性投递

RabbitMQ的消息投递路径为:producer–>rabbitmq broker–>exchange–>queue–>consumerRabbitMQ提供了两种方式用来控释消息投递的可靠性模型(1)confirm 确认模式(2)return 退回模式分别为:(1)消息从producer到exchange,会返回一个confirmCallback(2)消息从exchange到queue投递失败则返回一个returnCallback1.confirm 确认模式测试:

2022-04-27 16:42:07 1285

原创 1-8 (2). SpringBoot整合RabbitMQ-消费者

SpringBoot整合RabbitMQ-消费者主要流程是:1.创建Springboot工程2.依赖引入3.编写yml配置4.编写监听类,使用@RabbitListener完成队列监听1.略2.依赖引入<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

2022-04-27 09:30:45 2243

原创 1-8 (1). SpringBoot整合RabbitMQ-消息生产者

SpringBoot整合RabbitMQ-消息生产者主要流程是:1.创建Springboot工程2.依赖引入3.编写yml配置4.编写配置类,并定义交换机,队列等信息5.注入RabbitTemplate,完成消息的发送1.略2.依赖引入<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</a

2022-04-26 20:16:23 841

原创 2-3.SpringCloud——Ribbon负载均衡

负载均衡本质就是把流量进行均衡,防止某个服务被请求过多,过载,而同样业务的其他服务几乎没有压力。负载均衡算法,其实这个也是找工作的热点问题之一有轮询,随机,加权轮询,加权随机,最少连接数,ip Hash法等。这里不再展开。SpringCloud中的Netflix使用的Ribbon项目地址https://github.com/mingweihua/ming-cloud前期基础可以看以前的文章2-1.SpringCloud前期基础(微服务概念、服务调用方式、Http客户端工具、RestTempla

2021-12-12 21:36:39 431

原创 2-2.SpringCloud——Eureka注册中心

前面介绍了SpringCloud前期基础但是服务调用方和服务提供方耦合度太高,提供方出现问题,服务不能用时,致使调用方也会出现问题。因此Eureka出现, Eureka时一个注册中心,本身就是一个服务,可以做出集群,保证高可用(HA)。事实上,服务提供方是拥有多个单点服务提供同一个业务功能,以保证高可用。因此服务提供方需要往Eureka注册自身服务,而服务调用者也会向Eureka注册自身来获取可用的服务。此外Eureka提供了心跳监听,服务续约,服务下线,服务剔除等,自行研究。这里简单介绍如何部署

2021-12-11 21:17:56 377

原创 面试题:Spring和Springboot得区别

什么是Spring作为Java开发人员,大家都Spring都不陌生,简而言之,Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在Java Web开发的早期阶段,我们需要编写大量的代码来将记录插入到数据库中。但是通过使用Spri

2021-08-08 21:58:53 952

原创 3.2 学习SpringSecurity--设置用户名和密码

接着3.1的文章,显然使用配置好的用户名和随机生成的密码是不好的,因此设置用户名和密码Security提供了三种方式方式一:通过配置文件设置server: tomcat: uri-encoding: UTF-8 port: 8080 servlet: context-path: /securityspring: security: user: name: ming password: ming自行回去测试,项目放在github

2021-06-29 23:46:36 285

原创 3.1学习SpringSecurity--快速入门spring security

本次项目是基于Springboot由于使用Security,因此必须有创建web工程这边Security的就不多说了,自行百度<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> &l

2021-06-29 20:51:16 143

原创 1 Java BIO应用案例

BIO,称为同步阻塞IO模型,是网络IO模型之一,也是最老,最简单的IO模型。一个线程与一个连接的Socket进行通讯。可以使用线程池进行一个并发通讯,但是当并发上去了,系统资源将被消耗殆尽。应用案例:(1)启动一个ServerSocket监听6666端口(2)调用accept进行阻塞,直到有客户端连接(3)当有客户端连接时,启动一个线程与之通信,为了方便,这里采用线程池这里的客户端将不再使用java编写客户端,直接通过telnet进行通信代码:package BIO;import jav

2021-06-25 20:46:01 233

原创 阿里笔试模拟题-74.钱庄

概述:钱庄每天能够收到很多散钱,第i个散钱的值2wi。为了便于管理,钱庄每天都会向中央银行申请兑换钱币,假设钱庄有一些散钱使得2k1+2k2+…+2km=2^x(x为非负整数),那么就可以将这些散钱兑换成一个大钱币,问在钱庄收到的这些散钱最终最少能变成几个钱币。输入一个整数n,表示一共有n个钱币(1 <= n <= 106);再输入n个整数wi,表示有价值2wi(0 <= wi <= 10^6)的钱币。输出兑换后最少的钱币数示例1输入:4[1, 1, 2, 3]输出:

2021-03-22 10:59:32 176

原创 阿里笔试模拟题-66.Bob的花束

概述:Bob和Alice是青梅竹马。今天,Bob终于要鼓起勇气向Alice表白了!说到表白,自然是少不了买花了。Bob来到了花店,花店一共提供了9种花,每一种花都有对应的价钱。但是Bob的零花钱有限,不能把所有的花都买下来送给Alice。为了方便挑选,Bob给这9种花分别标号1-9,Bob希望买到的花按照编号可以排出尽可能大数字,请问Bob能够排出的最大的数字是多少?输入一个正整数value,代表Bob拥有的零花钱。(0<=value<=10^6)和有9个数字的数组a,ai代表第i种

2021-03-18 10:38:16 213 1

原创 阿里笔试模拟题-68.一的个数

概述:给你两个数字l、r,问在区间[l,r]内的所有数中,二进制表示下“1”的个数最多的一个数是多少,如果有多个相同的,输出所有符合条件的数中最小的一个数。输入一个整数l,和一个整数r。(1<=l<=r<=10^9)输出一个数字表示[l,r]内二进制下“1”的个数最多的数。如果有多个,输出符合条件的数中最小的。示例1输入:510输出:7题目地址68.一的个数题目解题方法有文档解释,文档下载地址为以下程序员面试宝典这边我解释一下我的解题思路。就是一个二进制数(0

2021-03-18 10:26:09 220

原创 阿里笔试模拟题-49.吃奶酪

概述:Tom和Jerry都很喜欢吃奶酪,现在有n块奶酪散落在坐标轴上(1<=n<=100000),他们分别在a1,a2,a3…an(1<=ai<=100000,一个点可以有多块奶酪)上,Tom和Jerry分别在1和100000两个点上,他们每走一步需要花费1s,问他们拿到所有的奶酪至少要花费多少时间输入奶酪数量n,和n个奶酪的坐标输出一个数,表示他们拿到所有奶酪所用的最短时间示例1输入:4[350,2000,80000,99999]输出:20000题目地址49.

2021-03-15 09:52:12 263 1

原创 阿里笔试模拟题-56.Tom爱吃巧克力

概述:Tom非常喜欢巧克力,他上次买的巧克力吃完了,所以他打算再去买k块巧克力回来(1<=k<=1e5),他又是一个非常节俭的一个人,所以他想花最少的钱去买巧克力,现在有n家卖巧克力的店(1<=n<=1e5),每个店的巧克力都限购bi块(最多只能买bi块,1<=bi<=1e5),每块的价格是ai(1<=ai<=1e9),请问Tom买k块巧克力最少要花多少钱。题目保证n个bi的总和大于等于k。输入卖巧克力的店的个数n(1<=n<=1e5);打算去

2021-03-15 09:49:36 207 1

原创 阿里笔试模拟题-37.最强的团队

概述:有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。最强的团队的定义为这个团队的所有小队的平均能力值最高。如果有多个最强团队,则选包含小队最多的一个。现在请你写个程序,输出这个最强的团队包含的小队的个数。输入小队的数量n,和n个数,分别代表各小队的能力值ai输出一个数表示这个最强团队包含的小队的个数示例1输入:6[1,2,3,3,2,1]输

2021-03-15 09:45:40 241

原创 阿里笔试模拟题-44.最大边权和

概述:现在有n个点(1<=n<=1000),每个点都有一个值称为点权ai(ai为偶数,1<=ai<=1000),现在可以将任意两个点相连,连起来以后这条边也有一个值称为边权,这个边的边权为这两个点的点权之和的一半。现在需要你添加n-1条边,问将这n个点连通以后(连通是指任意两个点都能互相到达)的最大的边权和是多少。输入点的数量n;和n个数,表示点权的值输出最大的边权和示例1输入:5[2,4,6,8,10]输出:30题目地址44.最大边权和题目解题方法有文档解释

2021-03-15 09:27:36 202

原创 阿里笔试模拟题-43.打怪兽

概述:现在有3只怪兽,他们的都有自己的血量a,b,c(1<=a,b,c<=100),当Tom打死第一怪兽的时候花费的代价为0,其余的怪兽的代价为当前的怪兽的血量减去上一个怪兽的血量的绝对值。问Tom打死这些怪兽所需要的最小代价分别输入三只怪兽的血量输出打死三只怪兽的最小代价示例1输入:258输出:6题目地址43.打怪兽题目解题方法有文档解释,文档下载地址为以下程序员面试宝典但是官方只有解题思路,没有具体代码,所以这边我就附上我的解题代码,具体思路可以参照上面的解释

2021-03-15 09:21:56 506

原创 阿里笔试模拟题-110.数组变换

概述:给出一个长度为 n 的数组,和一个正整数 d。你每次可以选择其中任意一个元素 a[i] 将其变为 a[i] + d 或 a[i] - d,这算作一次操作。你需要将所有的元素全部变成相等元素,如果有解,请输出最小操作次数,如果无解请输出-1。输入数字n、数字d,和一个长度为n的数组a。1 <= n <= 100000,1 <= d <= 100, 1 <= a[i] <= 100000。输出一个数字,表示最小的操作次数,如果无解输出-1。题目地址110.数

2021-03-15 09:17:41 839 1

原创 1-7(2). SpringBoot整合Redis

随着 Spring Boot2.x 的到来,支持的组件越来越丰富,也越来越成熟,其中对 Redis 的支持不仅仅是丰富了它的API,更是替换掉底层 Jedis 的依赖,取而代之换成了 Lettuce。区别Jedis在实现上是直接连接Redis-Server,在多个线程间共享一个Jedis实例时是线程不安全的,如果想要在多线程场景下使用Jedis,需要使用连接池,每个线程都使用自己的Jedis实例,当连接数量增多时,会消耗较多的物理资源。与Jedis相比,Lettuce则完全克服了其线程不安全的缺点:Le

2021-01-13 12:04:14 132 1

原创 1-7(1). 云服务器Linux安装和配置Redis

首先先去官网下载一个Redis包https://redis.io/download然后通过把Xftp把该包放在/usr路径下使用Xshell连接服务器(连接途径等都没限制,随意)解压包tar -zxvf redis-6.0.9.tar.gz 顺手也把包删了rm redis-6.0.9.tar.gz编译cd redis-6.0.9/make如果出现问题可以试试网上说是因为Redis默认使用jemalloc来做内存管理,因为jemalloc被证明解决fragmentation

2021-01-12 21:39:48 130

原创 idea整合Git

先去官网下载Git官网但是国外网实在太慢,而且老中断,这边提供一个安装包,从官网下的,Git-2.30.0-64-bit(for window)地址是:(下载免费,也不用积分,不整虚的)能点个赞顺手关注更好。Git-2.30.0-64-bit安装是除了选个安装位置后,傻瓜式next就行。1. idea整合Git先打开settingPath to Git executable选择安装地址,我这边是D:\Git\cmd\git.exe应用即可2. 在idea上拉取Github上的项目

2021-01-09 18:00:50 432

原创 1. 并发编程的三个问题

1. 可见性指一个线程对共享变量进行修改,另一个线程立即得到修改后的值测试代码public class Test01Visibility { private static boolean flag = true; public static void main(String[] args) throws InterruptedException { new Thread(() -> { while (flag) { //千万别打印,打印就没有效果 } }).s

2021-01-06 12:04:24 141

原创 2-1.SpringCloud前期基础(微服务概念、服务调用方式、Http客户端工具、RestTemplate)

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。微服务微服务的具体概念 大家可以上百度百科看一下,这里就不再多说,提一下微服务两个很重要的特性有自己的堆栈,包括数据库和数据模型;对外暴露Rest风格的接口微服务并不关系技术实现,因此和语言无关,只要提供Rest接口即可。服务调用方式RPC,RemoteProduce Call 远程过程调用,基于原生TCP通信。热门的就是阿里的dubboHttp,其实是基于TCP的一种网络传输协议,也可

2021-01-05 11:18:10 161

原创 1-6. SpringBoot整合JDBC线程池,整合Mybatis(相关事务控制、通用Mapper)快速实现旧式SSM架构

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。博主的坚持 离不开大家关注、评论和点赞,感谢大家支持。护发路上互相扶持!!!...

2021-01-03 17:36:38 538

原创 1-5. SpringBoot---java后端开发人员的神器lombok

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。pom.xml中导入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>java开发人员经常会写一些自定义对象,需要get/set方法、toString方法,hashCode

2021-01-02 09:15:10 1097 5

原创 1-4. SpringBoot配置自定义拦截器,实现日志管理

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。自定义一个类实现HandlerInterceptorpackage cn.sysu.ming.interceptor;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.H

2021-01-02 08:47:34 556 2

原创 1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。这节讲一下SpringBoot的学习必须的一些基础,Java配置。其实在Spring2.0时代就已经有注解配置了,但是开发人员还是喜欢注解和xml混合配置,当SpringBoot出来后,这个全注解配置,即Java配置就成为主流。讲一个例子在SpringMVC+Spring+Mybatis框架整合时,必须注入IOC容器的时一个数据库连接池,因此做过SSM架构搭建的人都知道要配置以下<!-- 配置连

2021-01-01 09:06:25 2455 5

原创 1-2. 超简单快速构建SpringBoot

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。基于1-1. 从普通maven工程到快速搭建一个SpringBoot启动工程—链接这边讲一下基本开发不会自己创建了,都是基于集成开发工具快速构建或者从spring官网上下载下来选择相关需要依赖包,这里还是简单选个web此时可以看到相关所有东西都帮我们添加好了,包括父工程、依赖包、启动类、配置文件等编写controller类请参看1-1. 从普通maven工程到快速搭建一个SpringBoot启

2020-12-31 23:34:31 213

原创 1-1. 从普通maven工程到快速搭建一个SpringBoot启动工程

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。今天先介绍最简单的搭建一个快速SpingBoot工程先用Idea快速创建一个maven工程,不需要使用模板然后在pom.xml中配置一个父工程,因为SpringBoot项目都是得指向该父工程,让其帮你管理相应的依赖版本。因此SpringBoot项目有两个最大好处抛弃复杂繁琐的配置,约定大于配置良好的依赖管理,不需要分心关注版本冲突。版本最好用带RELEASE的,公开版出现问题的概率特特特小

2020-12-31 11:20:33 402 5

原创 leetcode42,接雨水,思路清晰,由简入繁讲解,java语言

记录自己刷题弄的一些思路先列出问题给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trapping-ra

2020-12-29 18:55:52 284 1

原创 Springboot+mybatis+PageHelper 前端使用bootstrap-table实现分页

项目是使用maven工程管理,因此导入pagehelper的依赖,可以通过以下链接找最新的依赖https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-s

2020-12-23 09:20:36 972 4

原创 String,StringBuiler和StringBuffer一些浅认识

在阿里巴巴java开发手册上,推荐在循环体里,字符串的连接使用StringBuilder的append方法,并举出反例;反例:String str = "strat";for (int i = 0; i < 100; i++) { str = str + "hello";}今天就说说对String,StringBuilder 和 StringBuffer的浅认识Stri...

2019-07-18 13:35:26 218

Git-2.30.0-64 for window

Git-2.30.0-64 for window

2021-01-09

空空如也

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

TA关注的人

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