- 博客(375)
- 资源 (5)
- 收藏
- 关注
原创 【踩坑】springboot项目集成redis和elasticsearch,解决启动冲突问题
启动类添加如下配置(已解决问题):System.setProperty("es.set.netty.runtime.available.processors","false");效果如下:参考文档如下(文档中有两种方案,本人用第一种已解决):https://www.jianshu.com/p/7a9dd59b6e59...
2020-03-31 23:05:44 1166
原创 【MongoDB】MongoDB-Change Streams
前言Change Stream是从mongodb3.6版本开始支持的一种新特性,是mongodb向应用发布数据变更的一种方式,即数据库中有任何数据变化,应用端都可以得到通知,类似于触发器的概念方案思路MongoClient去订阅mongodb数据库中某张表最新事件变化,类似于以事件驱动机制对collection变化做监听,化主动为被动,只需要被动等待collection变化消息Ch...
2020-02-29 21:31:18 1844
原创 【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 645 2
原创 很不入流的总结
进入这一行差不多四年多了,这一路走来,有些事情不得不承认还是做得不够成熟。 为什么阳光总是照耀在别人身上。我总是被遗忘的角落,这个世界太不公。 你有这样的想法和感受吗? 其实那是因为你自己躲开了阳光,自己躲在了角落。 我以前也是这样,在痛苦中挣扎 那一天,突然梦醒 为什么不做一个追逐太阳的人?...
2018-08-23 20:52:19 534 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 518 2
原创 【攻克RabbitMQ】基础
消息传递模式:点对点 (P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式作用 解耦、冗余、扩展性、削峰、可恢复性、顺序保证、缓冲、异步通信具体特点 可靠性、灵活的路由、扩展性、高可用性、多种协议、多语言客户端消息队列的运转过程:多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(轮询)给多个消费者进行处理,...
2018-08-22 09:39:28 297 1
原创 【攻克Redis】键值管理
键重命名#重命名#注意:如果newkey本身存在,这种重命名会覆盖存在的keyrename key newkey#确保只有newkey不存在时候才被覆盖renamenx key newkey注意:于重命名键期间会执行del命令删除旧的键,如果键对应的值比较大,会存在阻塞Redis的可能性如果rename和renamenx中的key和newkey如果是相同的,在Redis...
2018-08-20 15:53:09 411 2
原创 【攻克Redis】集合类型
集合 集合不允许有重复元素,并且结合中的元素是无序的,不能通过索引下标直接获取,Redis支持集合内的增删改查,支持多个集合取交集、并集、差集命令集合内操作#添加元素,返回结果为添加成功的个数sadd key element [element ...]#删除元素,返回结果为删除成功的个数srem key element [element ...]#计算元素...
2018-08-20 15:49:20 323 1
原创 【攻克Redis】列表类型
列表 列表(list)类型是用来存储多个有序的字符串,在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色。 列表元素是有序的,元素是可以重复的。命令添加#从右边插入元素rpush key value [value ...]#从左...
2018-08-20 15:47:23 254 1
原创 【攻克Redis】哈希类型
哈希 哈希类型是指键值本身又是一个键值对结构;哈希类型中的映射关系叫作field-value,注意这里的value是指field对应 的值,不是键对应的值,请注意value在不同上下文的作用。命令#设置值hset key field value#获取值,若不存在返回nilhget key field#删除fieldhdel key field [field .....
2018-08-20 15:45:33 796 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 208 1
原创 【攻克Redis】全局命令、单线程模型
Redis有5种数据结构,它们是键值对中的值。预备全局命令#查看所有键,时间复杂读O(n),线上环境禁止使用keys *#键总数,不会遍历所有键,直接获取redis内置的键总数变量dbsize#检查键是否存在exists key#删除键del key [key ...]#键过期expire key seconds#查看键过期时间:返回值大于0为剩余时...
2018-08-20 15:41:12 221 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 394 2
原创 【攻克Redis】Redis基本知识
发展史Redis是一种基于键值对的Nosql数据库,Redis值可以是string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、 HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成Redis会将所有数据都存放在内存 中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利 用快照和日志的形式...
2018-08-20 15:37:04 291 2
原创 【JVM】JVM基础
程序计数器 PC Register:JVM支持多线程同时执行,每一个线程都有自己的PC Register,线程正在执行的方法叫做当前方法,如果是Java代码,PC Register里面存放的就是当前正在执行的指令的地址,如果是C代码,则为空。虚拟机栈JVM Stacks:Java虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机描述的是Java方法执行的内存模型:每个方法在执行的同时都会...
2018-08-18 17:57:35 214
原创 【SpringCloud NetFlix】网关Zuul(三)路由配置
简单路由SimpleHostRoutingFilter配置连接池: zuul.host.maxTotalConnections:目标主机的最大连接数,默认值为200。配置该项,相当于调用了PoolingHttpClientConnectionManager的setMaxTotal方法。 zuul.host.maxPerRouteConnections:每个主机的...
2018-08-15 17:44:39 835
原创 【SpringCloud NetFlix】 网关Zuul(二)集群中使用Zuul
建立集群项目Eureka服务器服务提供者服务调用者网关Eureka服务器依赖 &amp;amp;lt;dependencies&amp;amp;gt; &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.
2018-08-15 08:32:42 817
原创 【SpringCloud NetFlix】 网关Zuul(一)介绍与使用
介绍 是Netflix的一个子项目 提供代理、过滤、路由等功能编写第一个Zuul程序 建立服务项目:简单写一个restfull请求@SpringBootApplication@RestControllerpublic class SourceApp { public static void main(String[] args) { ...
2018-08-15 08:30:03 269
原创 【SpringCloud NetFlix】 SpringCloud整合Hystrix(三)整合Feign
SpringCloud整合Hystrix(三)整合FeignFeign整合Hystrix回退机制配置引入依赖 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.cloud&amp;amp;lt;/groupId&amp;amp;
2018-08-14 11:49:56 1114
原创 【SpringCloud NetFlix】SpringCloud整合Hystrix (二)请求合并与缓存
SpringCloud整合Hystrix (二)请求合并与缓存引入依赖&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.cloud&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-cloud-star
2018-08-14 11:13:38 478
原创 【SpringCloud NetFlix】SpringCloud整合Hystrix(一)整合与配置
SpringCloud整合Hystrix由于服务调用者有可能调用服务挂掉的提供者,服务调用方整合Hystrix引入依赖 &amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.springframework.cloud&amp;amp;amp;lt;/groupId
2018-08-14 10:15:29 562
原创 【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 299
原创 【SpringCloud Netflix】运行第一个Eureka程序
微服务发布与调用认识Eureka框架Eureka提供基于REST的服务,在集群中主要用于服务管理。Eureka提供了基于Java语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。使用该框架,可以将业务组件注册到Eureka容器中,进行集群部署。Eureka 提供的服务 调用功能,可以发布容器中的服务并进行调用。Eureka架构 有两个服务器...
2018-08-14 08:14:11 247
原创 【并发编程】线程安全性
线程安全性原子性定义提供了互斥访问,同一个时刻只能有一个线程来对它进行操作引入多线程情况下,进行count++操作。为了保证线程安全性,通常对该操作进行加锁,保证在count++的时候同步操作。Java提供了很多封装好的原子操作类。如可以替代刚刚提到加锁方式的AtomicInteger分类Atomic原子更新基本类型Atomic包提供了以...
2018-08-05 19:21:14 228
原创 【并发编程】JAVA内存模型
JAVA内存模型定义JMM决定一个线程对共享变量的写入何时对另一个线程可见。抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存。本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不是真实存在。上图的通信过程1、线程A把本地内存A中更新过的共享变量刷新到主内存中去2、线程B到主...
2018-07-31 15:09:22 215 5
原创 【并发编程】CPU多级缓存与缓存一致性
CPU多级缓存与缓存一致性定义cpu缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度却比内存要快得多为什么需要CPU cache?cpu的频率太快了,快到主存跟不上,这样在处理器时钟周期内,cpu常常需要等待主存,浪费资源。cache的出现,是为了缓解cpu和主存之间速度的不匹配问题(结构:cpu-&gt;cache&gt;memory)C...
2018-07-29 20:55:34 3170 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 189 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 27050 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 6166 2
原创 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 1006 4
原创 由于找不到msvcp140.dll无法继续执行代码
1、运行Ctrl+R,运行control命令,打开控制面板2、选中改文件,右键选择更改3、点击修复,即可解决
2018-06-28 16:30:40 401562 50
原创 【RabbitMQ】学习笔记(一)
1、为什么我们认为应该选择RabbitMQ呢?除了Qpid之外,RabbitMQ是唯一实现了AMQP标准的代理服务器正式由于Erlang,RabbitMQ集群不可思议的简单每个人的经历不同,但我们发现RabbitMQ比竞争对手更可靠,更能防止崩溃RabbitMQ难以置信的容易安装和使用2、为什么通信过程需要信道呢?为什么不直接通过TCP连接发送AMQP命令呢?主要原因在于对操作系统...
2018-06-24 17:45:01 270 5
原创 【Java并发编程的艺术】并发编程的挑战
上下文切换1】什么是上下文切换?CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。2】怎么测试上下文切换次数和时长?① 利用LMbench可以测试:带宽和延时,下载链接:http://www.bitmover.co...
2018-06-10 17:15:08 361 4
原创 【JVM】基础
1、对象为什么放到堆里面? 对象放到堆里面,可以实现多个对象共享。可能会引起一些安全问题2、栈是运行时的单位和线程绑定,堆是存储的单位。局部变量没有线程安全问题,因为它不是共享的。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放,放在哪儿。Java中一个线程就会相应有一个线程与之对应,这点很容易理解,因为不同的线程执行逻辑有所不同,...
2018-06-03 18:59:25 205 2
原创 【SpringBoot】配置跨域访问
在主启动类Application.java类里面加入: private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfigu...
2018-05-29 16:19:51 1079 14
原创 【java基础】WebDataBinder
作用:把字符串形式的参数转换成服务端真正需要的类型的转换工具 那就需要借助于PropertyEditor 来帮助你完成复杂对象的对应关系,这个借口提供了两个方法,将一个property 转成string getAsText(), 另外一个方法是将string类型的值转成property对应的类型。使用起来也很简单,例子如下:@InitBinder public void b...
2018-05-27 19:19:07 1433 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 237 16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人