总结
文章平均质量分 90
bobshute
这个作者很懒,什么都没留下…
展开
-
ES精简-1
1. ElasticSearch简介1.1 什么是ElasticSearchElaticsearch, 简称为es, es是一个开源的高扩展的分布式全文检索引擎, 它可以近乎实时的存储、 检索数据;本身扩展性很好, 可以扩展到上百台服务器, 处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能, 但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性, 从而让全文搜索变得简单。1.2 ElasticSearch的使用案例2013年初,原创 2021-01-24 23:56:07 · 391 阅读 · 0 评论 -
Docker4-DockerFile
1.概述Docker Dockerfile1.1 简介1.1.1 概述Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。1.1.2 步骤编写Dockerfile文件---->docker build---->docker run1.1.3 Dockerfile 样例查看进入https://hub.docker.com/,搜索查找,得到列表后,点击Supported tags and respective Dockerfile links原创 2020-10-18 23:57:35 · 171 阅读 · 0 评论 -
Dcoker3-核心命令
Docker 命令大全1. 系统命令docker version[root@bogon ~]# docker versionClient version: 1.7.1Client API version: 1.19Go version (client): go1.4.2Git commit (client): 786b29dOS/Arch (client): linux/amd64Server version: 1.7.1Server API version: 1.19Go ver原创 2020-10-09 23:12:25 · 435 阅读 · 0 评论 -
Dcoker2-安装
1. 安装要求CentOS 7 (64-bit) 以上: 要求系统为64位、系统内核版本为 3.10 以上。CentOS-6.5或更高的: 要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。[root@bogon Desktop]$ uname -r2.6.32-642.3.1.el6.x86_64[root@bogon Desktop]$ cat /etc/redhat-release CentOS release 6.8 (Final)2.安装操作官方安装手册原创 2020-07-18 23:11:33 · 199 阅读 · 0 评论 -
Docker1-基础
1.概述1.1 背景一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验.Docker 对此给出了一个标准化的解决方案。 安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应原创 2020-06-07 23:49:07 · 145 阅读 · 0 评论 -
Spring Cloud7-Config配置中心
1.概述1.1 微服务面临的配置问题微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题1.2 SpringCloud Config1.2.1 概述SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化原创 2020-05-31 23:57:09 · 146 阅读 · 0 评论 -
Spring Cloud6-Zuul网关
1.概述1.1 简介Zuul包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。注意:Zuul服务最终还是会注册进Eureka主要功能: 代理+路由+过滤https://git原创 2020-05-24 23:43:46 · 167 阅读 · 0 评论 -
Spring Cloud5-Hystrix断路器
1.概述1.1 分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。1.1.1 服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕原创 2020-05-17 23:28:59 · 149 阅读 · 0 评论 -
Spring Cloud4-Feign客户端负载均衡
1.概述1.1 官网解释:http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feignFeign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔...原创 2020-05-05 23:52:45 · 177 阅读 · 0 评论 -
Spring Cloud3-Ribbon客户端负载均衡
1.Ribbon 概述1.1 概述Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出**Load Balance...原创 2020-04-17 23:55:42 · 162 阅读 · 0 评论 -
Spring Cloud2-Eureka服务注册和发现
1.Eureka 概述1.1 设计架构Eureka 采用了 C-S 的设计架构。1.2 遵守原则Netflix在设计Eureka时遵守的就是AP原则1.3 Spring Cloud 中用途Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Eureka Server作为服务注册功能的服务器,它是...原创 2020-03-29 23:49:48 · 181 阅读 · 0 评论 -
SpringCloud1-微服务及相关微服务架构对比
0.Spring Cloud 常用网址http://projects.spring.io/spring-cloudhttps://springcloud.cc/spring-cloud-netflix.htmlhttp://www.springcloud.cn/https://www.springcloud.cc/1. 微服务概述1.1 概述微服务化的核心就是将传统的一站式应用,根据...原创 2019-12-30 23:42:52 · 179 阅读 · 0 评论 -
JPA小总结
1.JPA介绍1.1 JPA简介Java Persistence API:用于对象持久化的 APIJava EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层1.2 JPA和Hibernate的关系JPA 是 hibernate 的一个抽象(就像JDBC和JDBC驱动的关系):JPA 是规范:JPA 本质上就是一种 ORM 规范,不是ORM 框架 —— 因为...原创 2019-11-28 23:38:48 · 175 阅读 · 0 评论 -
Spring MVC小总结
1.基本原理1.1 Spring MVC在Spring中位置1.2 基本原理前端控制器、处理器映射器、处理器适配器、视图解析器第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找 Handler可以根据xml配置、注解进行查找第三步:处理器映射器HandlerMapping向前端控制器返回Hand...原创 2019-10-27 23:51:22 · 192 阅读 · 0 评论 -
并发编程19-ThreadPoolExecutor(线程池)和Executors框架
文章目录1. 线程池概述2. 创建一个线程池并提交线程任务3. 线程池源码解析3.1 参数认识3.2 构造方法3.3 内部类Worker3.4 提交任务3.4.1 addWorker3.5 执行任务3.6 关闭线程池4. Executors4.1 newCachedThreadPool4.2 newFixedThreadPool4.3 newScheduledThreadPool4.4 new...原创 2019-05-03 23:54:27 · 167 阅读 · 0 评论 -
设计模式8-外观模式
1.场景问题解决1.1 场景描述1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析2.2 重新设计Popcorn,Screen,Projector,DVDPlayer//爆米花public class Popcorn { private static Popcorn instance = null; private Popcorn() {...原创 2019-08-15 23:30:16 · 99 阅读 · 0 评论 -
设计模式6-命令模式
1.场景问题解决1.1 场景描述智能家居项目.家里有电灯,音箱,电视等子设备,有各自的开关接口.现需要一个:总的开关设备,将所有的家居都能控制起来.1.2 OO设计if,else判断,或者Case when处理.1.3 需求变动如果增加新或修改设备,就要修改总开关设备.1.4 带来问题要求总开关设备:扩展性好、维护性好.当前oo设计耦合性强.2.用设计模式改进2.1 分析...原创 2019-08-11 23:26:23 · 126 阅读 · 0 评论 -
设计模式12-状态模式
1.场景问题解决1.1 场景描述糖果售卖机,状态有售完0,待机1,已投币2,给糖果3.1.2 OO设计糖果售卖机public class CandyMachine { final static int SoldOutState = 0; final static int OnReadyState = 1; final static int HasCoin = 2; fina...原创 2019-08-23 23:57:55 · 103 阅读 · 0 评论 -
设计模式11-组合模式
1.场景问题解决1.1 场景描述还是餐厅,多个餐厅合并,每个餐厅的菜单实现方式不一样,有的为ArrayList有的为Array.1.2 OO设计参见:10迭代器模式1.3 需求变动增加餐后甜点子菜单,需要改子菜单和原菜单列表中的菜单项同级.原菜单列表中都为MenuItem,而现在还要增加子菜单.要求如下:[外链图片转存失败(img-ALTDnFFQ-1566140566608)(...原创 2019-08-18 23:36:30 · 117 阅读 · 0 评论 -
并发编程18-Fork,Join框架
1.Fork、Join1.1概述1.1 简介Fork/Join框架是用于并行执行任务的框架,一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join Pool采用优良的设计、代码实现和硬件原子操作机制等多种思路保证其执行性能多线程的目的不仅仅是提高程序运行的性能,但是可以充分利用CPU资源1.1.2 原理第一步分割任务。首先我们需要有一...原创 2019-05-03 23:36:05 · 124 阅读 · 0 评论 -
设计模式4-单例模式
1.场景问题解决1.1 场景描述有些对象我们只需要一个:线程池、缓存、硬件设备等如果多个实例会有造成冲突、结果的不一致性等问题2.用设计模式改进2.1 源码2.1.1 饿汉式单例模式/** 饿汉式单例模式-不会出现线程安全模式 */public class SingletonHunger { // 私有化构造方法 private SingletonHunger () {...原创 2019-06-24 23:45:40 · 114 阅读 · 0 评论 -
设计模式5-工厂模式(简单工厂、工厂方法、抽象工厂)
1.场景问题解决1.1 场景描述披萨商店,可以生产各种披萨.2.用设计模式改进2.1 简单工厂2.1.1 概述思路将变化的会有if else判断的相关模块,单独提到一个专门处理的类中(简单工厂).简单工厂模式: 定义了一个创建对象的类,由这个类来封装实例化对象的行为2.1.2 代码示例abstract class Pizza (Pizza抽象类)public abstra...原创 2019-07-01 23:55:56 · 134 阅读 · 0 评论 -
设计模式3-装饰者模式
1.场景问题解决咖啡厅组合咖啡本体和配料.1.1 场景描述咖啡单品----:Decaf(无咖啡因),Espresso(浓咖啡),LongBlack(深黑咖啡),ShortBlack(浅黑),价格各不同咖啡调料----:Milk(牛奶),mocha(摩卡),chocolate(巧克力),价格各不同以上单品为一份,然后调料可以自由组合,最终计算出咖啡的金额1.2 OO设计继承–&g...原创 2019-06-21 23:57:25 · 165 阅读 · 0 评论 -
设计模式2-观察者模式
1.场景问题解决气象站场景,合作方有提供气象数据变化的接口,然后需要气象数据变更的时候及时同步到自己的布告板上.1.1 场景描述Internet气象站项目,需要实现一下功能:1)提供温度、气压和湿度的接口2)测量数据更新时需时时通知给第三方 3)需要设计开放型API,便于其他第三方公司也能接入气象站获取数据1.2 OO设计1.2.1 设计类图1.2.2 代码/**...原创 2019-05-29 23:32:03 · 157 阅读 · 0 评论 -
设计模式1-策略模式
1.场景问题解决1.1 场景描述模拟鸭子游戏,鸭子能叫,能游泳,鸭子还有各种品种,绿头鸭,红头鸭.1.2 OO设计鸭子抽象类 Duck---->叫声和游泳是普通方法,display是抽象方法,继承的类要实现该方法public abstract class Duck { public Duck() { } public void Quack() { System.out...原创 2019-05-25 23:54:57 · 209 阅读 · 0 评论 -
IO基础整理
1.File1.1 源码解析File实现了Serializable序列化和比较Comparablepublic class File implements Serializable, Comparable<File>1.2 代码示例import org.junit.Test;import java.io.File;import java.io.Filenam...原创 2019-05-12 23:48:31 · 139 阅读 · 0 评论 -
并发编程20-并发总结
1.基础1.1 优缺点、目的死锁、饥饿线程安全数据共享1.2 线程和进程1.3 实现方式继承实现匿名内部Callable定时器线程池@Async1.4 线程状态1.5 优先级1.6 Thread常用函数startrunsetPrioritysleepwait、notify、notifyAlljoinsetDemonyieldinterru...原创 2019-05-08 23:47:38 · 154 阅读 · 0 评论 -
并发编程17-同步容器与并发容器和阻塞队列
0.总述1.同步容器1.1 概述Vector 线程安全 用的add方法synchronized,如果是并发编程时也是单线程的.但是当多线程的时候由于有锁,性能降低,所以在并发情况下不会用Vector…ArrayList 线程不安全底层用数组存数据,当添加的数据数目到一定程度,则将当前数据复制到一个更大的新的数组中.Collections.synchronizedList(Arra...原创 2019-04-28 23:45:47 · 289 阅读 · 0 评论 -
设计模式7-适配器模式
1.场景问题解决1.1 场景描述电源插头不适配,可以转换,需要适配器;火鸡和鸭子需要适配转换.1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析2.2 重新设计-对象适配器(火鸡和鸭子的适配器)2.2.1 概述类适配器:通过多重继承目标接口和被适配者类方式来实现适配,讲被适配的对象传进去(构造方法)2.2.2 源码interface Duck和...原创 2019-08-12 23:50:02 · 127 阅读 · 0 评论 -
设计模式9-模板模式
1.场景问题解决1.1 场景描述1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析2.2 重新设计2.3 源码-不带HookDrink(模板抽象类)public abstract class Drink { final void prepareRecipe() { boilWater(); brew();...原创 2019-08-16 23:50:55 · 92 阅读 · 0 评论 -
设计模式10-迭代器模式
1.场景问题解决1.1 场景描述两个菜馆合并后的菜单问题. 一个蛋糕店,一个小餐厅,原本各自有各自的菜单,一个为List,一个为Array,合并后出一份菜单.1.2 OO设计MenuItempublic class MenuItem { private String name,description; private boolean vegetable; private flo...原创 2019-08-17 23:13:53 · 123 阅读 · 0 评论 -
mongoDB2-用户管理
注意:本操作的mongoDB版本为3.6.0-rc4,3.0之前的版本操作方法不一样1.查看删除用户db.system.users.find() //查看用户 db.system.users.remove({}) //删除用户 > use adminswitched to db admin> db.system.users.find() { "_id" : "admin.admin", "原创 2018-01-01 10:06:50 · 313 阅读 · 0 评论 -
mybatis-小总结
1.基本原理mybatis是一个持久层的框架,是apache下的顶级项目。mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)。mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句...原创 2019-10-27 23:51:38 · 898 阅读 · 0 评论 -
设计模式24-常见设计模式使用总结
1.三个分类1.1 什么是设计模式模式:在某些场景下,针对某类问题的某种通用解决方案场景:项目环境问题:约束条件,项目目标等解决方案:通用、可以复用的设计,解决约束,达到目标1.2 三个分类创建型模式:对象实例化的模式,创建型模式解耦了对象的实例化过程结构型模式:把类或对象结合在一起形成更大的结构行为型模式:类和对象如何交互,及划分责任和算法1.3 模式总结简...原创 2019-09-21 23:14:42 · 140 阅读 · 0 评论 -
设计模式23-访问者模式
1.场景问题解决1.1 场景描述雇员管理系统遇到的问题:需要添加一些新的操作功能1.2 OO设计oo 该package为oo用法Employee 为雇员信息Employees 为对每个雇员信息操作类MainOOTest 为测试类public class Employee { private String name; private float in...原创 2019-09-20 23:11:12 · 97 阅读 · 0 评论 -
设计模式22-原型模式
1.场景问题解决1.1 场景描述电子账单项目遇到的问题:银行的电子账单、广告信:特点:量大、时间要求紧,在电子账单内容生成后,快速发送成功.1.2 OO设计多线程实现EventTemplate 为公用对象public class EventTemplate { private String eventSubject, eventContent; public EventTe...原创 2019-09-19 23:24:07 · 121 阅读 · 0 评论 -
设计模式21-备忘录模式
1.场景问题解决1.1 场景描述讨论一个游戏进度状态保存问题游戏进度保存:对象状态,场景…,需要安全性,不能被非保存人读取到如果在不使用数据库的情况下,怎么设计1.2 OO设计保存在数据库中1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析[外链图片转存失败(img-4IaLCwOf-1568819792579)(https://raw.githubusercon...原创 2019-09-18 23:16:49 · 84 阅读 · 0 评论 -
设计模式20-中介者模式
1.场景问题解决1.1 场景描述智慧房屋公司的产品:闹钟、咖啡机、电视机、窗帘等思考如何设计:各对象有几种状态改变相互作用如何1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析2.2 重新设计[外链图片转存失败(img-ik9VrvMn-1568733708520)(https://raw.githubusercontent.com/bobsh...原创 2019-09-17 23:22:02 · 94 阅读 · 0 评论 -
设计模式19-解释器模式
1.场景问题解决1.1 场景描述大数据统计项目遇到的问题:按照计算模型对现有数据统计、分析、预测一般的计算模型是一个或多个运算公式,通常是加减乘除四则运算计算模型需要运行期编辑设计方案要有高扩展性1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析计算模型按正常算术方式书写,解释器处理语法逻辑计算模型里有两类符号:数据和计算符用逆波兰算法分析算...原创 2019-09-16 23:46:47 · 101 阅读 · 0 评论 -
设计模式18-蝇量(享元)模式
1.场景问题解决1.1 场景描述1.2 OO设计1.3 需求变动1.4 带来问题2.用设计模式改进2.1 分析大量的微小的对象,对象属性拆开-内部属性和外部属性拆开;比如树对象,普通设计为:有一个集合存储树对象,每个对象有其对应的横坐标,纵坐标,及年龄 .而蝇量模式为: 多个集合(每个集合长度一样),第一个集合保存所有虚拟树对象,第二个保存所有树的横坐标,第三个保存树的所有纵坐标...原创 2019-09-15 23:44:41 · 162 阅读 · 0 评论