自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 08-Stream流计算

Java8新特性Stream流计算最详解,多个案例详解

2022-11-07 17:29:31 1553 1

原创 四大函数式接口

优点:可以简化编程模型,底层大量应用这些。例:以Runnable为例。定义:有且仅有一个方法。

2022-08-08 17:17:05 220 1

原创 06-线程池(3大方法、7大参数,4种拒绝策略)

线程池不允许使用Executor去创建,而是通过ThreadPoolExecutor的方式,这样是为了让我们更好的了解线程池的运行规则,规避资源耗尽的风险。

2022-07-27 20:05:38 600

原创 05-读写锁、阻塞队列及四组API、同步队列

ReadWriteLocks维护一对关联的ocks,一个用于只读操作,一个用于写入,Readlock可由多个阅读器同时进行操作(多线程同时进行),而writelock是独家的。remove(),遵循先进先出的原则,先添加的元素先被移除,后添加的元素后移除。超过队列容量后再插入元素,不会抛出异常,插入元素打印后false代替。若超过最大容量的获取元素,也会形成一直阻塞的状态,程序会一直等待。放入元素A后,三秒后,取出元素A,放入元素B,三秒后,取出元素B…再超过容量大小的元素时,会等待两秒后程序结束。...

2022-07-26 15:15:38 172

原创 04-Callable及常用辅助类

Callable及常用辅助类

2022-07-18 15:33:44 275

原创 03-JUC下的常用集合安全类

多线程情况下操作类不安全问题解决。

2022-07-16 15:38:34 208

原创 02- 8锁现象

锁的定义是什么?锁的对象还是Class对象?

2022-07-12 14:45:54 109

原创 01Lock锁

线程:对于Java而言,Thread 、Runnable、CallableJava是开启不了线程的,需要调用本地C++的方法启动硬件来开启线程。并发:多线程操作同一个资源(CPU单核)并行:多条任务一起行走(CPU多核)获取CPU核数并发编程本质:要充分利用CPU资源处理任务sleep与wait的区别以多线程卖票为例:不难看出,多线程卖票在不加锁的情况下操作统一资源很容易出错。解决1:传统解决方法是在同步代码中加入Sychronized锁:...

2022-07-11 15:09:04 531

原创 ElasticSearch仿京东搜索

1.新建项目框架,导入依赖前端素材<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>

2022-03-28 18:08:26 2622

原创 03Springboot集成ElasticSearch

2022-03-25 17:20:37 2971

原创 02 Elasticsearch基本常用命令详解

IK分词器分词:把一段中文或者词组划分成一个个关键字,我们在搜索的时候会把自己的信息进行拆分,会把数据库中或者索引库中的数据进行分词,然后进行一个个匹配操作,默认的中文分词是将每一个看成一个词,比如“我爱王军”,会被拆分成“我”“爱”“王”“军”,这显然是不符合要求的。所以我们要安装中文分词器的Ik来解决这个问题ik提供了两个分词算法:ik_smart和ik_max_word.其中ik_smart是最少切分,ik_max_word是最细粒度划分

2022-03-23 16:32:44 4040

原创 01ELK安装及核心概念

简述ELK是ElasticSearch、Logstach、Kibana三大开源框架首字母的缩写,ElasticSearch,简称ES,es是一个开源的高可扩展性的分布式全文搜索引擎,他几乎可以实时的存并且可以扩展到上百台服务器,可以处理大数据时代的数据,es也可以使用java开发搜索功能,但是他的目的是通过简单的Restful来达到目的全文搜索、高亮的目的。LogStach是ELK的中央数据流引擎,用于不同的目标收集不同格式的数据,经过过滤后支持输出不同的目的地址。Kibana可以将elastics

2022-03-18 15:45:44 2304

原创 01Nginx基础(反向代理知识及常用命令)

NginxNginx(engine x)是一个高性能HTTP和反向代理WEB服务器,同时也提供了pop3/SMTP服务,其特点是占用内少和并发能力强,可以支持50000个并发的连接响应。正向代理Nginx的最大作用就是反向代理服务,作为最常见的WEB服务。若提及反向代理,不得不先与之对应的正向代理。正向代理是代理客户端的,类似跳板机,访问其外部资源。例如VPN.比如我们国内访问国外网站,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问网站,这样由代理去网站取到返

2022-02-15 16:37:32 254

原创 05RabbitMq--如何保证MQ分布式事务的数据一致性,可靠性

生产者方面:问题:生产者方面会出现消息投递不成功解决:开启消息确认机制spring.rabbitmq.publisher-confirm-type=correlated关于三种选值:none:默认值,不开启confirmcallback机制。correlated:开启confirmcallback,发布消息时,可以指定一个CorrelationData,会被保存到消息头中,消息投递到Broekr时触发生产者指定的ConfirmCallback,这个值也会被返回,以进行对照处理,Correla

2022-02-10 17:15:34 2129

原创 04RabbitMq--ttl队列过期时间和死信队列

TTL队列过期时间表示对消息设置预期时间,在这个时间内都可以被消费者获取,一旦过了这个时间,队列就会被自动删除。目前有两种方法设置:通过队列属性设置,队列中所有消息都是相同的过期时间。对消息进行单独设置,不同的队列有不同的过期时间。如果同时使用上面两种方法,则以先达到设置的小的ttl时间为准,一旦过了时间,则会变成死信队列,消费者无法获取此队列中的消息。1.配置类@Configurationpublic class ttlRabbitmqConfig { @Bean p.

2022-02-09 16:55:22 1556

原创 03RabbitMq-SpringBoot整合RabbitMq五种模式

一、Fanout模式生产者1.导入amqp协议依赖 <!--rabbitmq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>

2022-02-08 17:37:52 1223

原创 02RabbitMq--轮询分发和公平分发两种分发方式

1.轮询分发队列给每一个消费者都发送一样的量的数据。以下为例:生产者发送数据:public class Send{ //队列名称 private static final String QUEUE_NAME = "QUEUE1"; public static void main(String[] args) { try { //获取连接 Connection connectio

2022-01-13 17:01:46 2498

原创 01RabbitMq--消息中间件基础知识及RabbitMq五种工作模式

消息中间件它是一种接收数据,接收请求,发送数据,存储数据等功能的技术服务。消息中间件利用可靠的消息传递机制进行系统和系统之间的通讯。通过提供消息传递和消息的排队机制,它可以在分布式系统环境下扩展进程之间的通讯消息中间件核心组成部分消息的协议消息的持久化机制消息的分布策略消息的高可用 高可靠消息的容错机制协议计算机底层操作系统与应用程序通讯之间共同遵守的一组约定,只有遵守了约定,两者才能互通交流。主要目的是让客户端(Java go…)可以进行沟通和通讯,和一般的网络应用程序不同,

2021-12-17 17:29:09 1739

原创 十五:Redis--缓存穿透和雪崩和击穿

Redis缓存的使用极大提高了应用程序的性能和效率,特别是数据查询的方面,但同时也带来了问题,其中最严重的就是数据一致性的问题,还有就是缓存穿和缓存雪崩。缓存穿透当用户想要查询一条Redis内存数据库不存在的数据时,也就是缓存没有命中,于是向持久层数据库中去发起查询,发现没有,于是本次查询失败。但是当用户很多时,都没有命中,于是都去请求了持久层的数据库,这会给持久层的数据库带来了很大的压力,这就相当于出现了缓存雪崩(秒杀)。解决方案1.布隆过滤器布隆过滤器是一种数据结构,对所有可能查询到的数

2021-09-30 17:17:33 261 1

原创 十四:Redis--主从复制、哨兵模式

概念:主从复制是将一台Redis的服务器数据,复制到其他的Redis服务器,前者称为主节点(master/leader),后者称为从节点(slave/flower),数据的复制是单向的,只能从主节点复制到从节点,master以写为主,slave以读为主。默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点,但一个从节点只能有一个主节点。主从复制的作用主要包括:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式故障恢复:当主节点出现问题后,从节点可以代替

2021-09-30 15:19:02 84

原创 十三:Redis--Redis订阅发布

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。微信 微博 关注系统。Redis可以订阅任意数量的频道。订阅、发布消息图:

2021-09-29 14:31:18 130

原创 十二:Redis持久化------RDB和AOF

RDB持久化快照保存过程过程:在指定时间间隔内将内存中的数据集快照写入磁盘,也就是snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化结束后,再用这个临时文件替换掉上次持久化好的文件。整个过程中,主进程不进行任何IO操作,这样就确保了极高的性能,如果需要进行大规模的数据恢复,且对于数据恢复程度可以有容错,则RDB方式要比AOF的效率要高,RDB的缺点就是最后一次持久化的数据可能无法恢复,我们默认的

2021-09-28 17:07:27 131

原创 十一:Redis配置文件详解以及持久化操作

一 分析Redis.conf配置文件Redis配置文件如下

2021-09-27 17:13:42 76

原创 九:Redis-事务的基本操作

Redis事务的本质:一组命令的集合,一个事务的所有命令都会被序列化,在事务的执行过程中,会按照顺序执行。一次性、顺序性、排他性、执行一些命令Redis事务中没有隔离级别的概念所有的命令并没有直接执行,而是在发起执行命令的时候(exec)才会被执行Redis单条命令会保证原子性,但是Redis事务不会保证原子性Redi事务:开启事务(multi)命令入队()执行事务(exec)1.正常事务执行127.0.0.1:6379> multi #开启事务OK127.0.0.1:

2021-09-19 16:13:13 100

原创 十:Redis-Springboot集成Redis以及自定义Redis序列化以及Redis工具模板

Springboot整合SpringBoot操作数据库:Springdata jpa jdbc mogodb redis说明:SpringBoot2.x之后Jredis被替换成了lettcureJredis采用的 是直连的方式,多个线程操作的话,是不安全的,如果想要避免这种情况,就要采用Jredis pool连接池,更像Bio模式lettcure:采用netty,实例可以再多个线程之间共享,不存在线程不安全的情况,可以减少线程数据了,更像Nio模式一:导入redis的相关依赖<!--

2021-09-19 16:03:12 203

原创 八:Redis-Hyperlog基数统计详解和Bitmap位图场景详解

Hyperlog基数A{1 2 3 4 5}B{4 5 6 7 8}基数:8(统计去除重复元素的个数)优点占用内存是固定的,只需要占用12kb的内存!但是有0.81%的错误率,用于统计网页访问人数是可以接受度的。基数统计127.0.0.1:6379> pfadd key1 1 2 3 4 5 #向key1中添加值(integer) 1127.0.0.1:6379> pfcount key1 #统计key1值的个数(integer) 5127.0.0.1:6

2021-09-16 11:24:16 1271

原创 七:Redis-Geospatial地理位置详解

添加城市的经纬度规则:两级无法直接添加,我们一般会下载城市数据,直接通过程序一次性导入有效的经度从-180度到+180度有效的纬度从-85到+85当输入的坐标超过上述指定范围后,会返回一个错误127.0.0.1:6379> geoadd china:city 116.40 39.30 beijing #添加北京城市经纬度(integer) 1127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai#添加上海城市经纬度(..

2021-09-15 16:49:07 371

原创 六:Redis-Zset有序集合详解

设置一个值或多个值127.0.0.1:6379> zadd zset 1 one #设置单个值(integer) 1127.0.0.1:6379> zrange zset 0 -1 #查看有序集合1) "one"127.0.0.1:6379> zadd zset 2 two 3 three 4 four #设置多个值(integer) 3127.0.0.1:6379> zrange zset 0 -1 #查看有序集合1) "one"2) "two"3) "..

2021-09-15 15:12:01 100

原创 五:Redis-Hash类型详解

相当于Map集合,key-map,这时候的值是一个map集合,本质和String没有区别,是一个key-value设置值127.0.0.1:6379> hset user1 name wangchangjun #设置user1 name(integer) 1127.0.0.1:6379> hget user1 name#获取user1 name"wangchangjun"127.0.0.1:6379> hmset user1 age 23 hobby swim loca

2021-09-15 13:26:26 176

原创 四:Redis-Set类型集合详解

向set中插入值,查询所有的值,查询某个值是否存在127.0.0.1:6379> sadd set k1 k2 k3 k4 k5 #向set插入值(integer) 5127.0.0.1:6379> sadd set k5 #不可插入重复的㢝(integer) 0127.0.0.1:6379> smembers set #查询所有的值,随机存储,1) "k4"2) "k2"3) "k3"4) "k1"5) "k5"127.0.0.1:6379> sis..

2021-09-14 17:22:20 81

原创 三:Redis-List列表类型详解

所有的list命令都是以l开头push值(插入)可以push重复的值127.0.0.1:6379> lpush list one #向key头部插入列表(integer) 1127.0.0.1:6379> lpush list two(integer) 2127.0.0.1:6379> lpush list three(integer) 3127.0.0.1:6379> lrange list 0 1 #查看指定范围内的值(类似栈,先进后出)1) "thr

2021-09-14 15:32:30 61

原创 二:Redis:String字符串类型详解

追加字符串 ,查看字符串长度127.0.0.1:6379> set k1 v1 #设置值OK127.0.0.1:6379> get k1 #获得值"v1"127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> append k1 hello #向某个字符串后面追加字符串,返回追加后的长度(integer) 7127.0.0.1:6379> get k1"v1hello"127.0.0.1:6379> strl..

2021-09-14 10:57:02 76

原创 一:Redis-单机到集群的架构演进,Nosql的作用、Redis的基本命令

架构演进第一阶段:单机Mysql年代第一阶段由于网站的访问量不大,所以单个数据库足以应付。第二阶段;Memcashed+Mysql+垂直拆分第二阶段的网站访问量增大,可以使用缓存来减轻网站压力,可以设置多个数据库,一些数据库用于修改内容并将内容同步到其他用于读的数据库中 ,在进行读数据的操作时,不涉及写的数据库。...

2021-09-13 18:06:54 124

原创 七:Springcloud config分布式配置

概述微服务意味着要将单体应用拆分成一个个子服务,因此系统中会出现大量的服务,由于每个服务需要各自的配置信息才能运行,所以一套集中式的动态配置管理设施必不可少的。SpringCloud提供了一套ConfigServer来解决这个问题如下图:SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为 各个不同微服务应用的所有环节提供了中心化的外部配置。Spring Cloud Config分为服务端和客户端两个部分:服务端也称为分布式配置中心,它是一个独立的微服

2021-08-28 16:28:08 85

原创 六:SpringCloud:Zuul--路由网关

Zuul路由网关含义Zuul包含了请求路由和过滤两个追主要的功能:其中路由功能主要负责请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求处理过程进行干涉,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合后,将Zuul自身注册到未Eureka服务治理下的应用,同时从Eureka获得其他微服务的消息,即以后访问微服务都是通过Zuul来跳转的。Zuul服务最终会被注册到Eureka中提供 代理+路由+过滤三大功能如上图:最外层代表Eureka,

2021-08-28 15:12:11 95

原创 五:SpringCloud--Hystrix:服务熔断与降级

分布式系统面临的问题:复杂分布式系统结构中应用程序有数十个依赖关系,每个依赖关系在某些时候都会不可避免的失败。服务雪崩如上图:

2021-08-22 14:10:42 162

原创 四:SpringCloud-Ribbon、Feign 负载均衡

1.Ribbon含义Sping cloud Ribbon是基于Netfix实现的一套客户端负载均衡工具Ribbon是NetFix发布的一套开源项目,主要功能提供给客户端软件负载均衡方法,将Netfix的中间层服务连接在一起,Ribbon的客户端提供一系列完整的配置项:连接超时,重试等,...

2021-08-22 12:38:02 107

原创 三:Springcloud--服务注册中心--Eureka

1.Eureka含义Eureka是基于Rest服务,用于定位服务,实现云端中间层服务发现和故障转移,服务注册与发现对于微服务非常重要,只需要使用服务的标识符,就可以访问到服务,功能类似于Dubbo的注册中心 zookeeper.Eureka采用了C-S架构,Eureka-server作为服务注册功能的服务器,称为注册中心,而系统中其他的微服务,使用Eureka的客户端连接到Eureka-Server并维持心跳链接,这样用户可以通过Eureka-Server来监控系统中各个微服务是否正常。三大角色:

2021-08-21 16:43:45 133

原创 二:Springcloud----Rest学习--服务提供者与消费者

服务提供者:1.创建父工程–用于管理项目的依赖和各模块<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht

2021-08-21 16:09:24 105

原创 一:SpringCloud理解及概念

一:SpringCloud概念SpringCloud是基于SpringBoot提供的一套微服务解决方案,包括服务注册于发现,配置中心,服务网关,服务熔断与降级,利用SpringBoot的开发便利性,巧妙简化了分布式的基础设施的开发,提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等,SpringCloud通过SpringBoot将经得起考验的服务框架组合起来进行在封装,屏蔽掉了复杂的配置和实现原理从,**最终变成一个个的依赖,**留

2021-08-17 10:02:09 986 1

空空如也

空空如也

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

TA关注的人

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