自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(375)
  • 资源 (5)
  • 收藏
  • 关注

原创 “模板方法+职责链设计模式”解决业务场景重复以及场景之间依赖

前言应用小结

2021-01-10 22:39:13 241

原创 【设计之美】-重识封装、继承、多态、抽象

2020-05-31 20:33:46 242 1

原创 【踩坑】springboot项目集成redis和elasticsearch,解决启动冲突问题

启动类添加如下配置(已解决问题):System.setProperty("es.set.netty.runtime.available.processors","false");效果如下:参考文档如下(文档中有两种方案,本人用第一种已解决):https://www.jianshu.com/p/7a9dd59b6e59...

2020-03-31 23:05:44 1136

原创 【MongoDB】MongoDB-Change Streams

前言Change Stream是从mongodb3.6版本开始支持的一种新特性,是mongodb向应用发布数据变更的一种方式,即数据库中有任何数据变化,应用端都可以得到通知,类似于触发器的概念方案思路MongoClient去订阅mongodb数据库中某张表最新事件变化,类似于以事件驱动机制对collection变化做监听,化主动为被动,只需要被动等待collection变化消息Ch...

2020-02-29 21:31:18 1729

原创 【SpringBoot】集成swagger

1、引入依赖<!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version&am

2018-10-29 21:55:19 631 2

原创 很不入流的总结

进入这一行差不多四年多了,这一路走来,有些事情不得不承认还是做得不够成熟。 为什么阳光总是照耀在别人身上。我总是被遗忘的角落,这个世界太不公。 你有这样的想法和感受吗? 其实那是因为你自己躲开了阳光,自己躲在了角落。 我以前也是这样,在痛苦中挣扎 那一天,突然梦醒 为什么不做一个追逐太阳的人?...

2018-08-23 20:52:19 521 10

原创 【攻克RabbitMQ】多租户与权限的相关命令

多租户与权限#建立vhost,大括号里的参数表示 vhost 的名称。rabbitmqctl add vhost {vhost}#罗列当前vhost的相关信息,name标识vhost名称;tracing是否使用了RabbitMQ的trace功能rabbitmqctl list vhosts name tracing#删除vhost的命令,删除vhost同时也会删除其下所有的队列、交换器...

2018-08-22 09:49:55 499 2

原创 【攻克RabbitMQ】基础

​ 消息传递模式:点对点 (P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式作用​ 解耦、冗余、扩展性、削峰、可恢复性、顺序保证、缓冲、异步通信具体特点​ 可靠性、灵活的路由、扩展性、高可用性、多种协议、多语言客户端消息队列的运转过程:多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(轮询)给多个消费者进行处理,...

2018-08-22 09:39:28 287 1

原创 【攻克Redis】键值管理

键重命名#重命名#注意:如果newkey本身存在,这种重命名会覆盖存在的keyrename key newkey#确保只有newkey不存在时候才被覆盖renamenx key newkey注意:于重命名键期间会执行del命令删除旧的键,如果键对应的值比较大,会存在阻塞Redis的可能性如果rename和renamenx中的key和newkey如果是相同的,在Redis...

2018-08-20 15:53:09 396 2

原创 【攻克Redis】集合类型

集合​ 集合不允许有重复元素,并且结合中的元素是无序的,不能通过索引下标直接获取,Redis支持集合内的增删改查,支持多个集合取交集、并集、差集命令集合内操作#添加元素,返回结果为添加成功的个数sadd key element [element ...]#删除元素,返回结果为删除成功的个数srem key element [element ...]#计算元素...

2018-08-20 15:49:20 310 1

原创 【攻克Redis】列表类型

列表​ 列表(list)类型是用来存储多个有序的字符串,在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色。​ 列表元素是有序的,元素是可以重复的。命令添加#从右边插入元素rpush key value [value ...]#从左...

2018-08-20 15:47:23 245 1

原创 【攻克Redis】哈希类型

哈希​ 哈希类型是指键值本身又是一个键值对结构;哈希类型中的映射关系叫作field-value,注意这里的value是指field对应 的值,不是键对应的值,请注意value在不同上下文的作用。命令#设置值hset key field value#获取值,若不存在返回nilhget key field#删除fieldhdel key field [field .....

2018-08-20 15:45:33 769 1

原创 【攻克Redis】字符串类型

字符串常用命令#设置值#ex seconds:为键设置秒级过期时间。#px milliseconds:为键设置毫秒级过期时间。#nx:键必须不存在,才可以设置成功,用于添加。#xx:与nx相反,键必须存在,才可以设置成功,用于更新set key value [ex seconds] [px milliseconds] [nx|xx]#若键hello已存在,setnx失败...

2018-08-20 15:44:00 176 1

原创 【攻克Redis】全局命令、单线程模型

​ Redis有5种数据结构,它们是键值对中的值。预备全局命令#查看所有键,时间复杂读O(n),线上环境禁止使用keys *#键总数,不会遍历所有键,直接获取redis内置的键总数变量dbsize#检查键是否存在exists key#删除键del key [key ...]#键过期expire key seconds#查看键过期时间:返回值大于0为剩余时...

2018-08-20 15:41:12 209 2

原创 【攻克Redis】Linux安装Redis(源码安装)

安装#下载Redis指定版本的源码压缩包到当前目录。$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz #解压缩Redis源码压缩包。$ tar xzf redis-3.0.7.tar.gz #建立一个redis目录的软连接,指向redis-3.0.7#redis目录的软链接,这 样做是为了不把redis目录固定...

2018-08-20 15:38:38 382 2

原创 【攻克Redis】Redis基本知识

发展史Redis是一种基于键值对的Nosql数据库,Redis值可以是string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、 HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成Redis会将所有数据都存放在内存 中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利 用快照和日志的形式...

2018-08-20 15:37:04 279 2

原创 【JVM】JVM基础

程序计数器 PC Register:JVM支持多线程同时执行,每一个线程都有自己的PC Register,线程正在执行的方法叫做当前方法,如果是Java代码,PC Register里面存放的就是当前正在执行的指令的地址,如果是C代码,则为空。虚拟机栈JVM Stacks:Java虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机描述的是Java方法执行的内存模型:每个方法在执行的同时都会...

2018-08-18 17:57:35 200

原创 【SpringCloud NetFlix】网关Zuul(三)路由配置

简单路由SimpleHostRoutingFilter配置连接池:​ zuul.host.maxTotalConnections:目标主机的最大连接数,默认值为200。配置该项,相当于调用了PoolingHttpClientConnectionManager的setMaxTotal方法。​ zuul.host.maxPerRouteConnections:每个主机的...

2018-08-15 17:44:39 801

原创 【SpringCloud NetFlix】 网关Zuul(二)集群中使用Zuul

建立集群项目Eureka服务器服务提供者服务调用者网关Eureka服务器依赖 <dependencies> <dependency> <groupId>org.springframework.

2018-08-15 08:32:42 805

原创 【SpringCloud NetFlix】 网关Zuul(一)介绍与使用

介绍​ 是Netflix的一个子项目​ 提供代理、过滤、路由等功能编写第一个Zuul程序​ 建立服务项目:简单写一个restfull请求@SpringBootApplication@RestControllerpublic class SourceApp { public static void main(String[] args) { ...

2018-08-15 08:30:03 258

原创 【SpringCloud NetFlix】 SpringCloud整合Hystrix(三)整合Feign

SpringCloud整合Hystrix(三)整合FeignFeign整合Hystrix回退机制配置引入依赖 <dependency> <groupId>org.springframework.cloud</groupId&

2018-08-14 11:49:56 1099

原创 【SpringCloud NetFlix】SpringCloud整合Hystrix (二)请求合并与缓存

SpringCloud整合Hystrix (二)请求合并与缓存引入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-star

2018-08-14 11:13:38 460

原创 【SpringCloud NetFlix】SpringCloud整合Hystrix(一)整合与配置

SpringCloud整合Hystrix由于服务调用者有可能调用服务挂掉的提供者,服务调用方整合Hystrix引入依赖 <dependency> <groupId>org.springframework.cloud</groupId

2018-08-14 10:15:29 548

原创 【SpringCloud NetFlix】Eureka集群搭建

Eureka集群搭建​ 为了突出Eureka的高可用性,对其进行集群部署两个服务器实例、两个服务提供者实例在本机的“C:\Windows\System32\drivers\etc”下的hosts文件中添加如下配置:127.0.0.1 slave1 slave2Eureka服务注册中心server: port: 8761spring: applicati...

2018-08-14 09:35:17 285

原创 【SpringCloud Netflix】运行第一个Eureka程序

微服务发布与调用认识Eureka框架Eureka提供基于REST的服务,在集群中主要用于服务管理。Eureka提供了基于Java语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。使用该框架,可以将业务组件注册到Eureka容器中,进行集群部署。Eureka 提供的服务 调用功能,可以发布容器中的服务并进行调用。Eureka架构​ 有两个服务器...

2018-08-14 08:14:11 232

原创 【并发编程】线程安全性

线程安全性原子性定义提供了互斥访问,同一个时刻只能有一个线程来对它进行操作引入多线程情况下,进行count++操作。为了保证线程安全性,通常对该操作进行加锁,保证在count++的时候同步操作。Java提供了很多封装好的原子操作类。如可以替代刚刚提到加锁方式的AtomicInteger分类Atomic原子更新基本类型Atomic包提供了以...

2018-08-05 19:21:14 216

原创 【并发编程】JAVA内存模型

JAVA内存模型定义JMM决定一个线程对共享变量的写入何时对另一个线程可见。抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存。本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不是真实存在。上图的通信过程1、线程A把本地内存A中更新过的共享变量刷新到主内存中去2、线程B到主...

2018-07-31 15:09:22 195 5

原创 【并发编程】CPU多级缓存与缓存一致性

CPU多级缓存与缓存一致性定义cpu缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度却比内存要快得多为什么需要CPU cache?cpu的频率太快了,快到主存跟不上,这样在处理器时钟周期内,cpu常常需要等待主存,浪费资源。cache的出现,是为了缓解cpu和主存之间速度的不匹配问题(结构:cpu->cache>memory)C...

2018-07-29 20:55:34 3129 9

原创 【zookeeper】单机版安装

1、访问如下链接:zookeeper压缩包下载2、打开页面3、点击下载(可以看到zookeeper的历史版本)4、利用文件传输软件传输到服务器上的home文件夹(也可以上传到其他文件目录)下5、解压[root@localhost home]# tar -zxvf zookeeper-3.4.11.tar.gz 6、查看解压后的目录,并且重命名...

2018-07-22 20:00:08 175 4

原创 【SpringCloud】com.sun.jersey.api.client.ClientHandlerException

原因:默认配置情况,eureka会把自己当成客户端注册自己,在这里如果遇到上述错误,需要修改默认配置如下:register-with-eureka: false #是否将自己注册到Eureka Server上,默认为truefetch-registry: false #是否从Eureka Server上获取注册信息,默认为true ...

2018-07-14 17:02:35 26996 5

原创 【SpringCloud】Parameter 0 of method eurekaRegistration in org.springframework.cloud.netflix.eureka

在做SpringCloud的zuul网关测试的时候,出现如下错误:原因可能有如下两种:第一种pom.xml文件中,引入jar错误,正确引入包方式为: <dependency> <groupId>org.springframework.cloud</groupId> <artif...

2018-07-14 11:49:07 6105 2

原创 【SpringMVC】图解

2018-07-08 11:22:06 498 4

原创 Client does not support authentication protocol requested by server; consider upgrading MySQL client

用docker下载的镜像文件,然后启动镜像后,运行mysql实例正常,但是连接的时候报Client does not support authentication protocol requested by server; consider upgrading MySQL client,解决方法如下:首先运行mysql容器://docker start 容器iddocker start...

2018-07-01 08:33:23 983 4

原创 由于找不到msvcp140.dll无法继续执行代码

1、运行Ctrl+R,运行control命令,打开控制面板2、选中改文件,右键选择更改3、点击修复,即可解决

2018-06-28 16:30:40 399989 50

原创 【RabbitMQ】学习笔记(一)

 1、为什么我们认为应该选择RabbitMQ呢?除了Qpid之外,RabbitMQ是唯一实现了AMQP标准的代理服务器正式由于Erlang,RabbitMQ集群不可思议的简单每个人的经历不同,但我们发现RabbitMQ比竞争对手更可靠,更能防止崩溃RabbitMQ难以置信的容易安装和使用2、为什么通信过程需要信道呢?为什么不直接通过TCP连接发送AMQP命令呢?主要原因在于对操作系统...

2018-06-24 17:45:01 261 5

原创 【Java并发编程的艺术】并发编程的挑战

上下文切换1】什么是上下文切换?CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。2】怎么测试上下文切换次数和时长?① 利用LMbench可以测试:带宽和延时,下载链接:http://www.bitmover.co...

2018-06-10 17:15:08 347 4

原创 【JVM】基础

1、对象为什么放到堆里面?  对象放到堆里面,可以实现多个对象共享。可能会引起一些安全问题2、栈是运行时的单位和线程绑定,堆是存储的单位。局部变量没有线程安全问题,因为它不是共享的。  栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放,放在哪儿。Java中一个线程就会相应有一个线程与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,...

2018-06-03 18:59:25 189 2

原创 【SpringBoot】配置跨域访问

在主启动类Application.java类里面加入: private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfigu...

2018-05-29 16:19:51 1066 14

原创 【java基础】WebDataBinder

 作用:把字符串形式的参数转换成服务端真正需要的类型的转换工具 那就需要借助于PropertyEditor 来帮助你完成复杂对象的对应关系,这个借口提供了两个方法,将一个property 转成string getAsText(), 另外一个方法是将string类型的值转成property对应的类型。使用起来也很简单,例子如下:@InitBinder public void b...

2018-05-27 19:19:07 1403 12

原创 【Java基础】---break和continue

break:使用在switch-case中或者循环中,如果使用在循环中,表示:结束当前循环continue:使用在循环结构中,表示:结束当次循环注意:1】若有两层嵌套循环,要求,内部循环不满足,终止外部整个大循环,可以考虑使用标签。fortest:for (int i=1;i<5;i++){ for (int j=1;j<=10;j++){ i...

2018-05-20 17:21:08 217 16

Java生产环境下性能监控与调优详解视频

生产环境下性能监控与调优视频详解,在Java开发的路上,更进一步提升调优技能。

2018-08-11

正则表达式经典实例

史上最全的正则表达式

2017-02-28

1998-2016腾讯传

淘宝有自己的发展史,京东也有自己的发展史,你们知道吗,腾讯也有自己的发展史了,欢迎小伙伴们来领取福利啊。

2017-02-02

前端开发帮助手册大全

一些常用的帮助手册,希望对大家有用哦。

2017-02-02

空空如也

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

TA关注的人

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