自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)

转载 微服务架构SpringCloud技术分解

一、简介Spring Cloud是基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案–服务注册与发现、服务消费、服务保护与熔断、网关、分布式调用追踪和分布式配置管理等。二、Spring Cloud 完整技术Spring Cloud的完整技术架构图如下...

2019-07-12 14:36:10 150

原创 微服务框架的介绍

一、什么是微服务微服务并没有一个官方的定义,可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。以往的应用程序开发中,应用程序都是单体型,在开发和部署上比较方便,但是随着业务的不断增加,开发迭代和性能瓶颈等问题都会增加开发难...

2019-07-11 13:31:56 14760

转载 SpringBoot实现文件下载

本文纯属转载,主要是为了方便后续参考和继续使用,转载自博客Spring Boot项目实现下载项目根目录下指定目录(doc)里的文件。代码参考如下:一、接收页面下载的请求,开始下载项目中的文件@RequestMapping("downloadFile") @ResponseBody public void Download(HttpServletResponse response) {...

2019-07-04 15:31:45 8057 1

原创 Redis分布式锁

一、什么是分布式锁在Java的多线程编程中,锁可以看成是多线程情况下访问共享资源的一种线程同步机制。在单个进程中,所有的线程都在同一个JVM进程里,Java语言提供的锁机制可以同步对共享资源的访问。但是在分布式环境下,Java语言提供的锁就无法同步多个不同线程对共享资源的访问了,这个时候就必须借助分布式锁来解决分布式环境下共享资源的同步问题。分布式锁一般有三种实现方式:基于数据库的乐观锁基...

2019-07-02 19:32:17 73

转载 ElasticSearch的简单介绍

一、什么是ElasticSearch在实际项目开发中,每个系统都会存在一个搜索功能,当数据达到很大且搜索要做到一定程度时,维护和扩展度就会越来越高,并且在全文检索的速度上、结果内容的推荐、分析以及统计聚合方面也很难达到预期效果。ElasticSearch正是为了解决这一问题而出现,ElasticSearch能够建立全文索引(把文本中的内容拆分成若干关键词,然后根据关键词创建索引。查询是根据关键...

2019-07-01 10:49:33 65

原创 Spring Cloud网关Zuul介绍

一、Spring Cloud网关是什么在微服务框架下,单体应用会被切割成多个微服务,如果将所有的微服务直接对外暴露会引发如下类似问题:客户端需求和每个微服务暴露的细粒度API不匹配。部分服务使用的协议不是Web友好协议。可能使用Thrift二进制RPC,也可能使用AMQP消息传递协议。微服务难以重构。如果合并两个服务,或者将一个服务拆分成两个或更多服务,这类重构就非常困难了。对客户端的...

2019-06-26 16:01:25 75

转载 SpringBoot面试题整理

SpringBoot常规的面试题整理如下:一、SpringBoot的简单介绍SpringBoot是用来简化Spring框架应用初始化搭建以及开发的全新框架,比如通过自动化配置省去了大量繁琐的配置文件。二、SpringBoot的优点快速创建独立运行的Spring项目与主流框架集成;使用嵌入式的servlet容器,应用无需打包成war包;starters自动依赖与版本控制大量的自动配置...

2019-06-24 14:40:20 1180

原创 Quartz的使用浅析

一、Quartz引入背景假定在业务逻辑中存在一个这样的需求,“每天的午夜12点,进行一次网络请求操作之后,将操作的结果写入数据库中”。针对这一需求,很简单明了的解决方案,在代码中引入一个定时间,定时的时间设置在午夜12点,该问题似乎被完美的解决了。但是如果将Java的Jar包程序进行分布式部署之后,你会发现整个业务逻辑中,进行了多次网络请求,然后写入了多次数据库。此时你就会想到,在整个业务逻辑中...

2019-05-31 16:53:30 51

转载 Kubernets学习一(基础概念篇)

一、简言Kubernets是一套开源的dockers容器编排系统,与Kubernets并存的容器编排系统有Docker Swarm、Marathon和Nomad。Kubernets比较核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望运行状态运行。二、框架和基础概念的理解Kubernets架构图参考如下(架构图来源)。从Kubernets的架构图中可以看到,kubernets...

2019-01-14 16:41:54 187

转载 Spring-Boot 访问外部接口的几种方案总结

一、简介在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,针对这一需求目前存在着三种解决方案,下面将对这三种方案进行整理和说明。二、Spring-Boot项目中访问外部接口2.1 方案一 采用原生的Http请求在代码中采用原生的http请求,代码参考如下:@RequestMapping("/doPostGetJson")public S...

2018-12-14 23:10:56 25945 1

原创 Prometheus添加rules生成新的指标规则

问题背景在Prometheus查询部分指标时需要通过将现有的规则组合成一个复杂的表达式,才能查询到对应的指标结果,比如在查询CPU使用率时,参考如下100 - (avg by (instance) (irate(node_cpu_seconds_total[5m])) * 100)在Prometheus界面可以通过该规则查询出所有端点的CPU使用率,但是这样引入了一个问题,就是在进一步使用...

2018-12-13 17:20:59 4590

原创 KafKa常用命令总结

Kafka常用操作命令查看当前服务器中所有topic[root]# ./bin/kafka-topics.sh --list --zookeeper 10.240.185.37:2181__consumer_offsetsadvancedtopicbasictopic查看某个Topic的详情[root]# bin/kafka-topics.sh --topic advancedto...

2018-12-13 16:39:52 95

转载 Spring Cloud服务发现之Eureka

一、Spring Cloud服务的注册与发现Spring Cloud服务注册和发现可划分为:服务消费者、服务生产者和服务发现组件,三者关系如下:各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。服务消费者可以从服务发现组件查询服务生产者的网络地址,并使用该地址调用服务生产者的接口。各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组...

2018-12-03 17:39:39 85

转载 Spring Cloud服务发现几种方案的比较

一、Spring Cloud服务发现存在的方案Spring Cloud服务发现存在以下几种方案和策略:Consulconsul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都...

2018-12-03 14:05:40 2653

原创 JPA 复合主键的增删改查操作

一、JPA和复合主键的简介JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合。JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA的目标是为了整合第三方ORM框架,建立一套标准的API。目前JPA的提供商包括ORacle,Redhat,Eclipse等,提供的产品包括Hiberate, Eclips...

2018-11-29 09:54:50 3770

原创 Mesos和Marathon简介和浅析

一、Mesos和Marathon是什么1.1 Mesos是什么Mesos是什么呢,可以用这样一个例子进行说明。假定某公司需要频繁进行大数据计算,该任务运行时需要N多个CPU和内存,为了满足这个需求,有两种方案:1.使用小型服务器,为任务提供足够的资源。2.采用分布计算,即提供一批普通配置的机器,组成集群,将计算任务拆分到各个机器上计算,然后汇总结果。Mesos就是实现这类分布式计算的框架...

2018-11-28 14:33:10 6408

原创 Spring Boot开发中的常用注解的介绍

一、简言在spring boot的开发中常常会用到注解 @RequestParam、@PathVariable、@RequestBody、@PageableDefault、@RequestMapping、@GetMapping 和 @PostMapping定义提供给前端的接口函数。下面将会对这些注解进行说明。二、注解说明@PathVariable :绑定URI模板变量值,用来获得url中的动...

2018-11-24 11:32:14 1153

原创 Prometheus的服务发现之Consul介绍篇一

一、引言Prometheus是一套开源的系统监控报警框架,此前对Prometheus有过介绍Prometheus的介绍与实践,Prometheus会去各个监控节点Pull数据。现在存在一个问题,如何让Prometheus去新增的监控节点Pull数据。二、Prometheus的服务发现机制本博主对Prometheus的服务发现机制亲自进行验证的方式有两种,一种是基于文件的服务发现;一种是基于C...

2018-11-13 16:16:33 2337 1

原创 POM的语法规则

一、POM简介pom作为项目对象模型,通过使用pom.xml来实现管理maven项目,主要描述了项目的如下部分:配置文件、开发者需要遵循的规则、缺陷管理系统、组织和licenses、项目的url、项目的依赖性和其它所有的项目相关因素。二、POM的语法规则一份比较全的pom.xml文件可以参考如下,通过它我们来对pom.xml中的语法规则进行说明。<project> <...

2018-11-01 16:20:41 1033

原创 Spring、SpringMVC、 SpringBoot和SpringCloud概念的

SpringSpring 是一个开源框架,起初是为解决企业应用开发的复杂性而创建,但是现在已经不止于企业应用。Spring的核心就是提供一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。Spring MVCSpring MVC可以理解为Spring和MVC结合的一种开发架构,Spring的概念可以参阅上面所述。MVC是一种将数据业务、显示逻辑和控制逻辑进行分层的设计模式,业内常见...

2018-10-31 16:58:06 3112

转载 Spring基础概念IOC、DI、Bean和AOP

一、前言IOC、DI和AOP属于Spring开发的核心思想,是学习Spring开发绕不开的基础知识点,下面将会结合网上的众家之言对它们进行一次总结。二、IOC、DI和AOP的概念理解2.1 IOC是什么IoC(Inversion of Control,控制反转)并不是一种技术,只是一种思想,一个重要的面向对象的编程的法则—好莱坞法则:“别找我们,我们找你”,在实际编程中体现的便是,由IO...

2018-10-31 13:57:32 93

转载 prometheus的数据类型介绍

一、简介Prometheus将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并定时保存在硬盘上。时间序列中的每一个样本由以下三部分组成。指标(metric): metric name和描述当前样本特征的labelsets组成,参考格式如 <metric name>{<label name>=<label value>, ...

2018-10-23 11:17:18 7754

原创 Prometheus的介绍与实践

一、Prometheus简介Prometheus是一套开源的系统监控报警框架。Prometheus作为新一代的云原生监控系统,相比传统监控监控系统(Nagios或者Zabbix)拥有如下优点。易管理性Prometheus: Prometheus核心部分只有一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。Nagios: 需要有专业的人员进行安装,配置和管理,并且过程很复杂。业务...

2018-10-15 11:50:03 15372

原创 Prometheus配置过程中出现的bug及解决方案

一、简介Node exporter,Promenade和Alertmanager在安装配置后,Prometheus运行出现的bug,并针对这些bug进行了解决。本博客主要总结这些bug和解决方案,进行记录。Prometheus运行命令参考如下:docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.y...

2018-10-15 10:42:07 6016

原创 Docker介绍、安装和使用

一、Linux 容器介绍在介绍Docker前,需要先了解一个概念Linux容器,Linux容器是与系统其它部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供进程所需的全部文件。容器提供的镜像包含了应用所有依赖项,因此从开发到测试再到生产的整个过程,它都有可移植性和一致性。容器与虚拟化对比虚拟化:是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,进行抽象、转换后...

2018-10-14 14:07:50 91

原创 Android List、Set和Map的介绍和使用

一、前言Android中常用的数据结构包括List、Set和Map这三大类的集合,其中List和Set属于Collection。List与Set的区别在于List可以存放重复的数据,但是Set不可以。 Map一般为key-value这样的对于关系,比如常用的HashMap。 Android中的集合类关系图Collection 接口的接口 对象的集合|-List ...

2018-09-17 17:54:08 9958

原创 Android APP和 Weex混合开发从环境搭建到APP工程运行

一、简言目前Android可行的混合编程方案有Weex和ReactNative两种方案,两者基本类同,只是使用框架技术有点不一样。从网上的资料可以查知到Weex相比ReactNative更容易上手,另外ReactNative在处理IOS端的长列表时容易出现内存泄漏。关于Weex和ReactNative的进一步比较可以参阅博客Weex 和 React Native 的比较看这里和Weex和Rea...

2018-09-14 17:12:34 1529

原创 OkHttp缓存max-age详解补充

一、前言此前编译过一篇博文OKHTTP缓存max-age和max-stale详解,在里面提到过一个问题,就是max-age在request和response中设置效果是否一样,下面将会从实验测试的角度来对这个参数进行说明。二、测试验证和说明2.1 实验测试代码说明 OKHttp的构建部分 OkHttpClient.Builder builder = new OkHttpC...

2018-08-30 22:28:00 630

原创 Glide 圆形图片和圆角图片的实现

一、前言Glide分为V3.版本和V4.版本,在V3.版本中,选项由一系列复杂的异构建造者(multityped builders)单独处理。比如BitmapRequestBuilder、DrawableRequestBuilder、GifRequestBuilder等。但是在Gilde V4中,由一个单一类型的唯一一个建造者接管一系列选项对象,即RequesetBuilder。本博客主要介绍...

2018-08-28 23:04:27 376 1

转载 Glide V4使用笔记

一、前言Glide分为V3.版本和V4.版本,在V3.版本中,选项由一系列复杂的异构建造者(multityped builders)单独处理。比如BitmapRequestBuilder、DrawableRequestBuilder、GifRequestBuilder等。但是在Gilde V4中,由一个单一类型的唯一一个建造者接管一系列选项对象,即RequesetBuilder。本博客主要介绍...

2018-08-28 14:40:27 206

原创 Android沉浸式和状态栏颜色的修改

一、前言关于沉浸式实现的方法网上已经有很多了,但是也有点良莠不齐,在遇到实际项目中的问题之后还是需要查阅大量的博客来对问题进行查证。本博客主要是在解决沉浸式的几个问题之后,对沉浸式的一点总结方便后面再次遇到同样问题时,能够很快的查阅而不至于重头做起,也希望对你能够有帮助。二、沉浸式的实现方法沉浸式的实现方式有两种,一种是通过设置Theme来实现;另一种是在代码中进行实现。 2.1 通...

2018-08-15 17:43:11 12117

原创 Gson解析--之方法使用篇一

一、前言本篇主要是对Json字符串转换成Java对象的方法进行总结。在介绍前需要对序列化和反序列化这两个名词进行一番解释。 序列化:将Java对象转换成Json字符串。 反序列化:将JSon字符串转换成Java对象。二、Gson的基本用法将Json字符串转换为对应的类对象。参见如下范例://Json字符串{ "rst": 0, "msg":...

2018-07-05 22:33:37 277

转载 Gson源码阅读--之Java反射Type类型知识

一、背景在阅读Gson源码前需要掌握有关Java的Type类型的知识点。二、Type类型2.1 Java编程语言中的所有类型Type是Java编程语言中所有类型的父接口。这里的所有的Java类型包括原生类型(raw types),参数化类型(Parameterized Types)、数组类型(GenericArray Type)、类型变量(Type Variables)和基本类型(...

2018-07-05 15:53:36 263

转载 Android自定义控件--之为什么使用自定义控件

一、 前言如果在网上搜索Android自定义控件,可以发现多是自定义控件是如何实现或者是讲解自己实现的非常不错的自定义控件,很少有文章来说明为什么使用自定义控件。一个可能的原因是大家觉得自定义控件太过好用,用起来太顺其自然,因此就没有去想过为什么会引入自定义控件。下面将从Android设计的角度出发来谈谈自定义控件的引入。二、问题引入如果计划APP中的每个Activity添加一个统...

2018-06-27 16:40:32 896

原创 Android IntentService 的深入浅出

一、问题引入Android代码设计中耗时的IO操作会放置在Service中进行执行,但是由于Service也是运行在主线程中,因此在设计中会在Service开一个线程来完成耗时IO操作的业务部分。线程一般会放置在Service的onStartCommand函数中执行。public class MyService extends Service {@Overridepublic I...

2018-06-26 15:54:36 73

原创 Rxjava之PublishSubject的使用

一、问题引入此前对rxjava的诸多用法小小的进行过总结,rxjava的使用给代码设计带来了很多惊奇和方便。但是在了解到PublishSubject之后再次被rxjava的简便给折服了。在介绍PublishSubject之前,先容我给出这样一个命题,在Android的开发中,我们经常会在Service中处理批量下载的任务,然后将下载的进度显示在Activity中。如果需要完成Service中数...

2018-06-26 11:32:55 5691

原创 单例模式详解

一、前言单例模式是一种常用的软件设计模式,在它的核心结构中值包含一个被称为单例的特殊类,一个类只有一个实例,即一个类只有一个对象实例。该模式在Java和Android代码开发中很是常见,在面试过程中经常会被问到,我曾以该问题面试很多工作5年以上的同学,他们很难将问题答全,甚至连最基本的懒汉模式和恶汉模式也没能说出来,为此有必要总结一下。二、单例模式单例模式中分为懒汉模式和饿汉模式,...

2018-06-25 22:41:30 86

原创 OKHTTP缓存max-age和max-stale详解

一、前言      此前了解过OKHTTP的缓存的使用,并对缓存的使用进行了初步的总结https://blog.csdn.net/polo2044/article/details/80650856。缓存主要是为了在没有网络的情况下,或者资源不需要实时去后端进行更新时,可以直接从缓存中获取资源信息。一方面是能够在断网的情况下仍然给用户良好的界面展示,另一个方面是避免频繁的请求网络给后端带来压力。...

2018-06-22 23:03:51 2367 2

转载 Android Touch事件传递

转载自:https://mp.weixin.qq.com/s/X_TiQ-pQ4VvPxpwfh9yGUA一、前言 Android的Touch事件属于一个很基本的Android知识点,在面试中经常会被问到,在实际的代码开发中偶然也会碰到,特别是在自定义控件的时候,需要处理自定义控件与底层布局的冲突。因此很有必要总结一下Android Touch事件的传递过程。二、Android To...

2018-06-13 20:12:41 79

转载 Android Service的入门级介绍

2018-06-11 20:55:16 59

空空如也

空空如也

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