自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卑微的小白

博主不懒,却什么都没有留下

  • 博客(25)
  • 收藏
  • 关注

原创 Java并发编程(JUC)(一)

今天深度学习了一下java并发编程的相关知识,在这里给大家做一个分享,可能理解不对的地方请大家评论指导,谢谢大家!首先,由于进程我线程是两个基本的执行单元,在了解并发编程之前我们需要了解一些关于进程和线程的知识(这里只是做大概描述,需要深度了解进程和线程的可查看网上其他教程以及相关书籍)。什么是进程和线程?进程通俗一点讲,进程就是系统中正在运行的程序。线程是操作系统能够进行运算调度的独立单位。进程和线程之间的关系进程是系统进行资源分配和调度的一个独立单位。而线程是进程的一个实体,是CPU

2020-11-24 13:16:24 221

原创 SpringCloud Ribbon(负载均衡)

1、SpringCloud Ribbon 是一个客户端的负载均衡组件,主要提供负载均衡算法。2、Ribbon中负载均衡算法实现:AbstractLoadBalancerRule:负载均衡策略的抽象类,在该抽象类中定义了负载均衡器ILoadBalancer对象,该对象能够在具体实现选择服务策略时,获取到一些负载均衡器中维护的信息来作为分配依据,并以此设计一些算法来实现针对特定场景的高效策略。RandomRule:随机策略,从服务实例清单中随机选择一个服务实例。获得可用实例列表upList和所有实例列.

2020-11-09 15:31:00 524

原创 Springcloud 注册中心Eureka(注册中心)

Eureka是Netflix的五大组件之一,用于服务注册与发现。SpringCloud将其集成在spring-cloud-netflix中。Eureka包含两个组件:Eureka Server 和Eureka Client。Eureka Server提供服务注册,各个服务启动之后会中Eureka Server进行服务注册,这样Eureka Server中的服务列表会存储所有可用的服务信息,服务节点可以通过管理界面直观看到。Eureka Client是基于服务提供者的一个客户端,服务提供者将其服务信息注

2020-11-09 14:59:03 324

原创 Mysql索引

索引的概念索引实际上是一种特殊的文件,在InnoDB中,索引是数据表空间的一部分。它里面存放着表中记录的指针,通俗点讲索引好比一本书的目录,方便快速查询。索引分为聚簇索引和非聚簇索引,聚簇索引是按照数据存放位置为顺序,非聚簇索引则不然。聚簇索引可以提高多行检索的效率,非聚簇索引对于单行检索效率较高。注意:索引以实际文件存在,如果索引创建过多,对于数据的更新影响较大,维护成本较高。对于需要进场插入和删除的数据表就没有必要创建索引,对于较小的表,也没必要创建索引。索引的分类1、普通索引索引的创建:

2020-11-06 16:02:23 133

原创 Redis缓存穿透与雪崩

缓存穿透概念缓存穿透的概念其实很简单,就是用户想要查询一个数据,当缓存里面没有这个数据的时候,就会去数据库中查询,如果数据库也没有就查询失败。在高并发的情况下,大量请求到缓存中查询,没有查到数据,就会去数据库中查询,导致服务器压力非常大,这就相当于出现了缓存穿透。解决方案1、布隆过滤器布隆过滤器是是一种数据结构,将所有可能查询的key放入布隆过滤器中,在用户请求到达缓存之前,用户请求查询的key在布隆滤器中进行筛选,如果不存在则直接丢弃。2、缓存空对象用户请求查询的数据在缓存以及数据库中都不

2020-11-03 19:09:30 106

原创 Redis持久化

Redis是内存数据库,如果不将数据保存到磁盘,服务器进程一旦结束,所以数据库信息将丢失,所以Redis提供了持久化功能。RDB(Redis DataBase)在指定的时间内将内存中的数据集快照写入磁盘内,它恢复时时直接将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化操作,会先将数据写到一个临时文件中,待持久化过程都结束,再用这个临时文件替换上次持久化好的文件。整个过程中主进程不进行仍和IO操作,确保了极高的性能。如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是

2020-11-02 17:46:33 89

原创 Redis配置文件详解

单位# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf# Note on units: when memory size is needed, it is possibl.

2020-10-30 16:18:36 143

原创 SpringBoot整合Redis

1、导入依赖(Redis整合在SpringData中)<!--springboot2.x之后,不在使用Jedis,而是替换成了lettuce Jedis:采用的是直连的方式,多个线程操作的话,存在线程安全问题,可以采用jedis pool连接池来避免线程安全问题 lettuc:采用netty,实例可以在多个线程中共享,不存在线程安全问题--><dependency> <groupId>org.springframework.boot</group

2020-10-30 15:34:47 280 2

原创 Redis事物

Redis事物本质:一组命令的集合!一个事物中的所有命令会被序列化,在事物的执行过程中,会按照顺序执行。(一次性,顺序性,排他性)Redis支持事物Redis单条命令不支持原子性Redis没有隔离级别的概念正常执行事物127.0.0.1:6379> MULTI //开启事物OK127.0.0.1:6379> set k1 v1QUEUED127.0.0.1:6379> set k2 v2QUEUED127.0.0.1:6379> set k3 v3QU

2020-10-29 23:55:59 310

原创 Redis三种特殊类型

Geospatial(地理位置)朋友的定位、附近的人、打车距离计算?#geoadd地理位置数据加入127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing(integer) 1127.0.0.1:6379> geoadd china:city 104.06 30.65 chengdu(integer) 1127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai(inte

2020-10-29 23:17:47 136

原创 Redis基本操作

基础知识redis默认有16个数据库select命令切换数据库dbsize命令查看数据库大小keys * 查看数据库中的所有键flushdb 清空当前数据库flushall 情况所有数据库set 设置key值get 获取对应key的valueexitsts 判断键值是否存在move 移除键值expire 设置键的过期时间ttl 查看键值剩余时间type 查看key值得类型Redis 是单线程的官方表示,redis是基于内存操作的,所以cpu不是redis的性能瓶颈,redi

2020-10-29 18:21:49 140

原创 RabbitMQ消息确认和renturn机制

1、消息确认机制(confirm)为了确保消息能够准确的发送到Broker中,RabbitMQ提供了消息确认机制。当生产者发送消息之后,如果Borker准确收到消息,则会返回给生产者一个应答。生产者通过接收到的应答判断消息是否成功发送。confirm机制的实现1、通过channel开启confirm机制2、在channel上添加监听器接受broker返回的应答信息//开启confirm机制channel.confirmSelect();//添加一个确认监听 channel.addConf

2020-10-27 18:31:06 821

原创 RabbitMQ延迟消息

RabbitMQ中没有对消息延迟进行实现,但是我们可以通过TTL以及死信路由来实现消息延迟。TTL(Time To Live 消息过期时间)如果消息一直存放在队列中没有被消费并且超过了过期时间则消息将变成死信(Dead Message),后续将无法被消费。消息成为死信的几种情况:1、消息被Consumer拒收,并且reject方法里的参数requeue为false,则消息不会被重新放回队列,不会被其他消费者消费。2、消息以及队列的过期时间到了3、队列的长度满了,排在前面的消息会被丢弃或者扔到死信

2020-10-27 17:53:37 1785

原创 RabbitMQ的工作模式

1、简单模式消息生产者将消息方式到队列中,消费者监听队列,如果队列中有消息,则取出消费,在消费者取出消息后队列将自动删除该消息。2、工作模式消息生产者将消息发送到队列中,一个队列有多个消费者监听,则多个消费者之间存在着竞争关系,消息会会被消费者谁先拿到谁先消费。高并发情况下,会产生某条消息会被多个消费者共同使用,这时可以添加一个开关(syncronize与同步锁)保证每个消息只被一个消费者消费。3、发布/订阅模式x表示rabbitmq的内部组件交换机,队列绑定到交换机上,消息发送到交换机中,

2020-10-27 16:45:50 175

原创 java操作RabbitMQ

1、创建虚拟主机、交换机、队列RabbitMQ提供了自己的管理界面,可以通过管理界面来完成VirtualHost、Exchange、queue的创建。1.1创建VirtualHost1.2创建交换机创建交换机的时候需要指定虚拟主机以及交换机的类型(direct(路由模式)、fanout(广播)、headers、topic)direct:Exchange通过消息携带的路由键来将消息分发到对应的队列中fanout:Exchange将消息分发到所有绑定到交换机的队列中headers:Exchang

2020-10-27 16:05:08 19141 1

转载 消息队列的应用场景

1、解耦(为面向服务的架构(SOA)提供最终一致性)场景说明:用户下单后,订单需要通知库存系统。传统的做法是订单系统直接调用库存系统的接口。传统模式的缺点:1.假如库存系统无法访问,则订单系统访问库存系统失败,从而导致订单失败2.订单系统与库存系统耦合引入消息队列订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户下单成功库存系统:订阅下单的消息,采用拉去/推送的方式获取下单信息。库存系统根据下单信息,进行库存操作假如:在下单时,库存系统不能正常使用,也不影响正常下

2020-10-27 01:15:17 211

原创 Java Object类

ObjectObject是所有类的超类,是Java语言中唯一一个没有父类的类。一个类可以不是Object的直接子类,但一定是Object类的子类,因为Java中的没一个类都是继承Object类的。Object类的常用方法equals: 比较两个对象的值是否相等(比较地址)hashCode:该方法返回对象的哈希码值,哈希码是一个代表对象的十六进制整数,不同的对象哈希码不相同toSt...

2019-08-25 20:10:57 143

原创 简述String、StringBuffer、StringBuilder

StringString是Java中的一种引用数据类型,是不可变字符串,因为在Java中String类是final类型的。在程序任何地方,相同字符串字面常量都是同一个对象。String重写了equals方法,用于比较两个字符串内容是否相等优点:不可改变,线程安全缺点:当字符串需要改变时,会创建新的字符串,会消耗一定的内存空间使用场景:少量的字符串操作StringBuffer可变字...

2019-08-25 20:03:49 203

原创 Java 异常

异常什么是异常?程序在运行期间出现的错误称为异常,为不是在编译时出现的错误。异常类的继承关系检查性异常若系统在运行时可能产生该类异常,则必须写出相应的处理代码,否则无法通过编译 非RunTimeException异常非检查性异常若系统运行期间肯可能发生该类异常,则不必在程序中声明对该类异常的声明处理,就可以编译执行。RunTimeException:运行时异常异常处理机...

2019-08-24 15:25:09 126

原创 浅谈Java内部类

内部类定义在类中的类称为内部类特点可以是任何的访问修饰符内部内中不能又静态信息内部类也是类,可以继承,重写,重载,this,super都能用外部内可以在自身类中创建内部类对象来访问内部类内部类可以直接使用外部类的任何属性和方法,如果属性和方法发生冲突,外部类.this.属性或方法静态内部类内部可以包含任何信息静态内部类的方法只能访问外部类的static关联的信息创建内部类...

2019-08-24 15:11:46 163

原创 简述java抽象类和接口

什么是抽象抽象就是抽取相关的特性(属性和方法)组成对象,用用程序的方法逻辑和数据结构模拟现实世界的对象。比如说人就是一个抽象的对象,人都具有说话、行走的能力。个人是一个具体的对象,继承了人的特征。abstractjava中使用abstract关键字定义抽象方法或抽象类。抽象类...

2019-08-24 14:16:48 186

原创 Java static、final 关键字

static在java中,static表示静态,可以修饰属性,方法,也可以是代码块。static的作用是用于创建独立于具体对象的域成员或者方法。static可以需要解决什么问题当我们用new关键字创建对象的时候,数据才会被分配存储空间,类中的成员及方法才能被对象调用。当我们使用new关键字创建的对象共享同一个资源,而不是说每个对象都拥有自己的数据,或则说根本不需要创建对象,资源本省和对象...

2019-08-20 00:14:32 102

原创 MYSQL 知识总结(2)

函数单行函数单行函数对单行操作每行返回一个结果有可能返回值与原参数数据类型不一致单行函数可以写在SELECT、WHERE、ORDER BY子句中有些函数没有参数,有些函数包括一个或多个参数函数可以嵌套数学函数ABS(x):返回x的绝对值;SQRT(x):返回非负数x的平方根;PI():返回圆周率;MOD(x,y)或%:返回x被y除的余数;CEIL(x)、CEILING(...

2019-08-11 22:29:58 113

原创 MySQL 知识总结(1)

数据库基础(1)数据管理主要经历的阶段数据库类型网状数据库:网状数据库是采用网状的原理与方法,以网状数据模型为基础建立的数据库,网状数据模型是以记录类型为节点的网状结构,即一个节点可以有一个或多个上下级节点,两个节点之间甚至可有多种联系。层次数据库:层次数据库是一种特例的网状数据库,数据之间的联系表现为分层的树状结构。每个实体信息构成一个片段,片段是应用程序访问数据库的基本单位,每个片...

2019-08-11 21:44:51 120

原创 HTML5+CSS3实现图片的缩放旋转,一眼就懂

HTML界面<html> <head> <meta charset="UTF-8"> <title>照片墙</title> <link rel="stylesheet" type="text/css" href="../css/pictureWall.css"/> </head> <bod...

2019-08-04 17:12:45 2947

空空如也

空空如也

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

TA关注的人

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