- 博客(75)
- 资源 (29)
- 收藏
- 关注

原创 Spring Cloud学习纪要汇总
小博Spring Boot快速入门GitChathttps://gitbook.cn/gitchat/activity/5a444c451f6ee91a25846ac1小博Spring Cloud学习纪要篇章小博博客地址Spring Cloud Eureka (服务治理)https://blog.youkuaiyun.com/u012102104/article/details/8...
2018-12-11 15:21:31
11119

原创 Java 校招面经合集
小博Java面试路上的点点滴滴 篇章 小博博客地址 Java面试之基础篇 https://blog.youkuaiyun.com/u012102104/article/details/79772903 Java面试之框架篇 https://blog.youkuaiyun.com/u012102104/article/details/79772419 Java面试之数据结构...
2018-09-03 15:41:22
31289
原创 Redis数据结构源码探秘
Redis简介 Redis是一个开源的、使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 具有很多优势:性能极高:Redis纯内存读写,读的速度是110000次/s,写的速度是81000次/s 。丰富的数据类型: Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。原子: Redis的所有操作都是原子性的,意思就是要么成功执行
2020-07-13 10:57:57
1202
原创 二叉树的各种遍历姿势
Node节点public static class TreeNode { TreeNode left; TreeNode right; int val;}递归式先序public static List<Integer> view(TreeNode root, List<Integer> result) { if(null == root) { return result; } result.add(root.
2020-05-19 11:20:47
376
原创 服务熔断降级简介
背景 在微服务中,当一切正常时,请求流看起来是这样的: 当其中有一个服务(例如服务I)有延迟时,它可能阻塞整个用户请求: 在高流量的情况下,一个依赖服务的延迟可能导致服务器上的所有资源在数秒内饱和,这也意味着后续再有请求将无法立即提供服务:解决方案 当使用熔断降级框架时,框架会包装每个依赖项,原有架构会发生变化,每个依赖项相互隔离,当延迟发生时,它会被限制在资源中,并包含回...
2020-04-09 14:28:31
5177
原创 Java8 Stream的各种使用姿势
Stream简介 Java 8 API添加了一个新的抽象称为流(Stream),它可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。概括来说:Stream的出生就是为了代码好看、为了性能高如何Debug 在IDEA的Debug窗口找到Trace Current Stream Chain按钮...
2020-03-19 10:36:08
1530
原创 LocalDateTime用法大全
常规使用LocalDateTime now = LocalDateTime.now(); // 2020-01-29T14:35:51.207int year = now.getYear(); // 2020Month month = now.getMonth(); // JANUARYint monthValue = now...
2020-01-29 19:52:21
23941
原创 RabbitMQ消息队列的高可靠使用
整体解决方案 TopicExchange型交换机,会根据RouteKey将消息路由至匹配队列(推模式下,消息将被推送至消费者的监听函数处理),消息流转和路由的示意图如下。生产端可靠性保障 为防止消息在未发送到Broker前就由于网络原因或其他情况导致丢失,生产者端需要保障消息成功送达中间件,手段一般有两种,一是使用事务机制,但这种做法是非异步的,吞吐量性能较差;另一种是确认机制,本例...
2019-12-29 17:56:29
1035
原创 MySQL中的查询小技巧
数据表 一个简单的示例表,user_id为用户id外键,score为用户分数。使用 CASE WHEN 自定义排序优先级 用户分数查询系统中,首页列表按照分数降序排列,即原本应是如下顺序: 出于人性化考虑,当用户进入系统时,我们希望该用户的所有得分都在最前面显示,且不影响其他记录的排序。这时可以用CASE WHEN来自定义排序的优先级。写法①:简单CASE语句-- WHE...
2019-10-08 21:06:50
10777
原创 Markdown语法教程
Markdown 是一种轻量级标记语言,创始人为 John Gruber。它允许人「使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档」。——维基百科背景优点专注于文字内容;纯文本,易读易写,可以方便地纳入版本控制;语法简单,没有什么学习成本,能轻松在码字的同时做出美观大方的排版。使用场景各类代码托管平台主流的代码托管平台,如 GitHu...
2019-09-24 15:41:36
11493
1
原创 Git常用命令汇集
开发中常用到的Git命令大集合最基础# 初始化git仓库,将会创建.git文件夹git init# 克隆simaple项目git clone user@server:path/repo.gitgit clone https://server/path/simpale# 将指定文件文件加入本地仓库git add simple-file# 将当前目录所有文件加入本地仓库g...
2019-05-25 11:34:09
10509
原创 使用Hexo在GitHub上搭建私人博客
前言 一般故事的开始,都要有好多准备工作,在使用Hexo之前,你要做好如下准备:注册GitHub账号电脑安装node.js、npm或cnpm电脑安装git利用好GitHub Pages,让你免费光速搭建私人博客,点击查看效果预览GitHub上的操作创建博客仓库新建仓库username.github.io,其中username必须是你的github用户名在仓库Setti...
2019-03-15 16:50:53
10828
原创 代码详解设计模式--责任链模式
责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。优点降低耦合度。它将请求的发送者和接收者解耦;简化了对象。使得对象不需要知道链的结构;增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任;增加新的请求处理类很方便。缺点不能保证请求一定被接收;系统性能将受到一定影响,而且在进行...
2019-03-01 13:52:41
10731
原创 代码详解设计模式--中介者模式
中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。优点降低了类的复杂度,将一对多转化成了一对一;各个类之间的解耦;符合迪米特原则。缺点中介者会庞大,变得复杂难以维护。// 聊天室public class ChatRoom { public static void show...
2019-03-01 13:38:14
10719
原创 代码详解设计模式--建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。优点建造者独立,易扩展;便于控制细节风险。缺点产品必须有共同点,范围有限制;如内部变化复杂,会有很多的建造类。// 点单public interface Item { public String name(); public Packing packing(); public floa...
2019-03-01 13:32:28
10980
原创 代码详解设计模式--观察者模式
观察者模式 观察者模式中,当一个对象被修改时,会自动通知它的依赖对象。优点:观察者和被观察者是抽象耦合的;建立了一套触发机制。缺点:如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。// 被观察者public class Su...
2019-03-01 13:06:26
10753
原创 代码详解设计模式--装饰器模式
装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变其结构。// 形状接口public interface Shape { void draw();}// 圆形public class Circle implements Shape { @Override public void draw() { System.out.println("画圆"...
2019-02-12 13:58:03
10738
原创 代码详解设计模式--过滤器模式
过滤器模式 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。最常见的应用如MyBatis中。// 实体@Data@AllArgsConstructorpublic class Person { private String name; private String gender; private String maritalStat...
2019-02-12 12:28:12
10671
原创 代码详解设计模式--适配器模式
适配器模式 作为两个不兼容的接口之间的桥梁,结合了两个独立接口的功能。优点可以让任何两个没有关联的类一起运行。提高了类的复用。增加了类的透明度。灵活性好。缺点过多地使用适配器,会让系统非常零乱,不易整体进行把握。// 播放器接口public interface MediaPlayer { public void play(String audioTyp...
2019-02-12 12:19:19
10938
原创 代码详解设计模式--策略模式
策略模式 定义一系列的算法,把它们一个个封装起来, 并且使这些算法可以在运行时根据不同需要调整。优点:算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点:策略类会增多。所有策略类都需要对外暴露。// 策略public interface Strategy { public int doOperation(int num1, int num2);...
2019-02-12 10:08:14
11033
原创 代码详解设计模式--模板模式
模板模式 一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。优点:封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点:每个不同实现都需要一个子类来实现。//游戏模板类public abstract class Game { abstract void initialize...
2019-01-04 14:29:54
10573
原创 代码详解设计模式--代理模式
代理模式 代理模式是为了向其他对象提供一种控制本对象访问的途径。优点:职责清晰。高扩展性。智能化。缺点:由于增加了代理对象,可能会造成请求的处理速度变慢。实现代理模式需要额外的工作。public interface Image { void display();}public class RealImage implements Image { ...
2019-01-04 14:21:36
10820
原创 代码详解设计模式--单例模式
抽象工厂模式 实例:除了上篇简单工厂模式画形状的功能,我们还需要给形状涂色,所以还需要有颜色工厂。此时我们将所有工厂抽象出来,设立一个工厂生产器。优点:能保证客户端始终只使用某一个既定的工厂。缺点:工厂扩展非常困难,要增加一个工厂,既要在抽象工厂里加代码,又要在具体工厂生产器里加代码。//形状public interface Shape { void draw();}/...
2019-01-04 13:52:05
11305
原创 代码详解设计模式--抽象工厂模式
简单工厂模式 实例:创建一个形状接口和实现该接口的圆形和方形,然后定义形状工厂。Demo演示类使用工厂来获取不同的形状对象。优点:屏蔽产品的具体实现,调用者只关心产品的接口。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。缺点:每增加一个形状,都需要增加一个具体类和工厂的 if / else 分支。在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。...
2019-01-04 11:39:28
11211
原创 代码详解设计模式--简单工厂模式
写在前面后面小博会整理成专栏并详细解释,目前仅做缓存用。设计模式工厂模式public interface Shape { void draw();}public class Circle implements Shape { @Override public void draw() { System.out.println("画圆"); }}...
2018-12-28 16:53:03
10626
原创 Spring Cloud 学习纪要九:Sleuth
Spring Cloud Sleuth:链路跟踪 Spring Cloud Sleuth是一种分布式追踪解决方案,它兼容Zipkin。微服务架构由于服务单元数量众多、调用关系杂乱、业务复杂,如果出现了错误和异常很难去定位,所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,让每个请求步骤直观可见,而 Sleuth + Zipkin 便可以帮助我们做...
2018-11-26 22:10:00
10528
原创 Spring Cloud 学习纪要八:Hystrix
Spring Cloud Hystrix:熔断降级 Spring Cloud Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或第三方库,防止级联失败,从而提高系统的可用性与容错性。开发环境版本IDEA2018.2.6JDK1.8Spring Boot2.0.6Spring CloudFinchley.SR2...
2018-11-26 16:23:04
10498
原创 Spring Cloud 学习纪要七:Zuul
Spring Cloud Zuul:统一网关 Spring Cloud Zuul 提供动态路由,监控,弹性,安全等边缘服务,将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,那么整个系统只需要暴露一个服务,对外屏蔽服务端实现细节,这样也减少了客户端与服务器的网络调用次数,这就是api gateway,也是Zuul可以帮我们实现的功能。开发环境版本I...
2018-11-25 20:14:23
10536
原创 Spring Cloud 学习纪要六:Stream
Spring Cloud Stream:消息驱动 Spring Cloud Stream 是一个构建消息驱动微服务的框架,应用程序通过 input 或者 output 来与 Spring Cloud Stream 中 binder 交互,而 binder 负责与消息中间件交互。开发环境版本IDEA2018.2.6JDK1.8Spring Boot2.0....
2018-11-24 22:11:29
10846
原创 Spring Cloud 学习纪要五:Bus
Spring Cloud Bus:消息总线 上一篇我们讲到统一配置中心Spring Cloud Config,实现了分布式项目配置文件的统一管理,但是留下了一个问题:修改配置之后如何免重启自动生效。Spring Cloud Bus组件就可以用来做这件事,值得注意的是,前面我们所使用的版本Greenwich.M1的bus组件存在bug,我们将config和provider项目改为如下版本(其他项...
2018-11-24 16:58:46
11124
6
原创 Spring Cloud 学习纪要四:Config
Spring Cloud Config:配置中心 普通应用中,当一个系统的配置文件发生改变时,需要重启该服务才能使新配置生效。而Spring Cloud Config可以实现微服务中所有系统配置文件的统一管理,当配置文件发生变化的时候,系统会自动更新获取新的配置。开发环境版本IDEA2018.2.6JDK1.8Spring Boot2.1.0Spr...
2018-11-22 15:36:19
10737
原创 Spring Cloud 学习纪要三:Ribbon
Spring Cloud Ribbon:负载均衡 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器,它可以通过在客户端中配置ribbonServerList来设置服务端列表去轮询访问以达到均衡负载的作用。开发环境版本IDEA2018.2.6JDK1.8Sp...
2018-11-20 12:03:44
10742
原创 Spring Cloud 学习纪要二:Feign
Spring Cloud Feign:服务通信 Spring Cloud Feign是简化Java HTTP客户端开发的工具,它的灵感来自于Retrofit、JAXRS-2.0和WebSocket。接下来将展示一个入门Demo。开发环境版本IDEA2018.2.6JDK1.8Spring Boot2.1.0Spring CloudGreenwic...
2018-11-20 11:10:59
10402
原创 Spring Cloud 学习纪要一:Eureka
Spring Cloud Eureka[服务治理组件] Spring Cloud Eureka是Spring Cloud Netflix服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务注册发现功能,接下来将展示一个入门Demo.开发环境版本IDEA2018.2.6JDK1.8Spring Boot2.1....
2018-11-20 10:27:52
10846
原创 synchronized与static synchronized详解
synchronized与static synchronized的区别synchronized是实例锁,对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块。注意这里是类的当前实例, 类的两个不同实例就没有这种约束了static synchronized是类锁,控制类的所有实例的并发访问,限制多线程中该类的所有实例同时访问JVM中该类所对应的代...
2018-10-31 10:32:08
17881
原创 并发编程
/** * 线程池 */private static final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 10, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(500));/** * 推送结果 */@Overr...
2018-10-24 16:46:18
10452
深入理解Java虚拟机 JVM高级特性与最佳实践(第2版).pdf,完整,带书签, 完整版
2018-03-22
SpringBoot工程简单例子
2017-12-25
WebService工程
2017-12-25
MyEclipse2017 CI7 破解工具
2017-08-09
轮播图ViewPager
2016-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人