自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 收藏
  • 关注

原创 java技术--Java中JSON类库的简介使用(02)

1.java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库2.类库选择,下面是几个常用的 JSON 解析类库:(1)Gson: 谷歌开发的 JSON 库,功能十分全面(2)FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀(3)Jackson: 社区十分活跃且更新速度很快3.Fastjson 简介(1) Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式(2)也可以将 JSON 字符串转换为 Java 对象(3)Fastjson

2020-07-29 00:17:25 395

原创 java技术--JSON简介(01)

1.什么是JSON(1)JSON (JavaScript Object Notation, JS 对象标记)简介(2)json就是用JavaScript语法写的一个特殊的标记字符串2.JSON的作用(1)简化用JavaScript定义对象的方式(2)能用在AJAX中,做为数据载体之一3.JSON的语法作用(1)json是一种与语言无关的数据交换的格式 <1>json的key是字符串 json的value是Object(2)使用Json的格式与解析方便的可以表示一个对象信

2020-07-27 00:50:29 313

原创 java技术--高并发Redis缓存和MySQL数据一致性方案

1.缓存(Redis)和数据库(MySQL)间的数据一致性问题(1)读取缓存一般没有什么问题,但是一旦涉及到数据更新(2)数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题(3)不管是先写MySQL数据库,再删除Redis缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况(4)示例如下: <1>如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据 &

2020-06-05 17:29:20 1078

原创 java技术--Springboot基于Apache ftpserver实现文件上传下载(11-1)

1.Apache ftpserver相关简介(1)Apache FtpServer是100%纯Java FTP服务器(2)它被设计为基于当前可用的开放协议的完整且可移植的FTP服务器引擎解决方案(3)FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行,也可以嵌入Java应用程序中(4)使用MINA,FtpServer可以扩展到大量并发用户2.将ftpserver服务内嵌到springboot服务中(1)项目添加依赖//这些只是apache ftpserve

2020-05-28 11:30:18 439

原创 java技术--JVM调优(04)

1.一般的Java项目不需要JVM调优(1)JVM本身就是为这种低延时高并发大吞吐的服务设计和优化的(2)往往更偏重于应用服务本身的调优(3)一般项目加个xms和xmx参数就够了2.JVM调优6大步骤(1)JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数(2)JVM性能调优方法和步骤: <1>监控GC的状态 1.1.使用各种JVM工具,查看当前日志,分析当前JVM参数设置 1.2.分析当前堆内存快照和gc日志,根据实际的各区域内存划

2020-05-25 15:48:01 116

原创 java技术--JVM值对象访问以及如何使用对象的引用(03)

1.对象访问是最普通的程序行为(1)即使最简单的访问,也会涉及Java栈、Java堆、方法区这三个重要内存区域之间的关联关系 <1>Java栈中保存的是对象的引用,访问方式有两种:使用句柄和直接指针 <2>使用句柄 2.1. Java 堆中将会划分出一块内存来作为句柄池 2.2.reference 中存储的就是对象的句柄地址 2.3.句柄中包含了对象实例数据和类型数据各自的具体地址信息 <3>句柄访问方式的最大好处就是referenc

2020-05-25 14:49:03 119

原创 java技术--JVM程序执行流程(02)

1.程序执行流程我把它划分为以下几个步骤(1)编辑源码、编译生成class文件、加载class文件、运行class字节码文件(2)其中后两个步骤都是在jvm虚拟机上执行的2.编译源代码(1)编译源代码是经历的第一个环节 <1>就是在任何一个工具上编写源代码,可以是记事本,最后命名为Student.java <2>相当于在myeclipse这样的ide上新建一个.java的Class然后写内容(2)源码文件示例Person.java public class

2020-05-25 14:23:33 355

原创 java技术--JVM概述及组成(01)

1.JVM相当于Java的操作系统(1)JVM(java virtual machine) 即Java虚拟机,是运行java class文件的程序 <1>Java代码经过Java编译器编译,会编译成class文件,一种平台无关的代码格式 <2>class文件按照JVM规范,包括了java代码运行所需的元数据和代码等内容 <3>JVM加载class文件后,就可以执行java代码了(2)JVM有不同的实现,有Hotspot虚拟机,JRockit,IBM等

2020-05-25 10:46:14 276 1

原创 java技术--分布式事务之框架Seata应用实例(06)

1.阿里分布式事务框架GTS开源了一个免费社区版Seata(1)Seata项目地址:https://github.com/seata/seata-samples(2)Seata:(Simple Extensible Autonomous Transaction Architecture) <1>简易可扩展的自治式分布式事务管理框架,其前身是fescar <2>阿里巴巴GTS的开源版实现,它的特点是高性能且易于使用 <3>旨在实现简单并快速的事务提交与

2020-05-23 15:02:29 459

原创 java技术--分布式概念之分布式事务(05)

1.微服务架构中的分布式事务问题(1)传统的单体应用,假设一个单体应用的业务由3个模块构成,三者使用单个本地数据源(2)这样的话本地事务很自然就可以保证数据一致性(3)在微服务架构中就不这么简单了 <1>3个模块被设计为3个不同数据源之上的3个服务,每个服务对应一个数据库 <2>本地事务当然也可以保证每个服务中的数据一致性 <3>但是扩展到整个应用、整个业务逻辑范围来看,不同的服务怎么保证都成功2.分布式事务概念(1)分布式事务是指会涉及到操

2020-05-22 14:21:11 125

原创 java技术--分布式锁Redis代码实现(04)

1.基于Redis的实现方式(1)Redis有很高的性能;(2)Redis命令对此支持较好,实现起来比较方便(3)使用命令介绍: <1>SETNX:加锁 1.1.setnx(key, val): 1.1.1.当且仅当key不存在时,set一个key为val的字符串,返回1; 1.1.2.若key存在,则什么都不做,返回0 1.1.3.get(key):获得key对应的value值,若不存在则返回nil 1.1.4.ge

2020-05-21 17:24:31 116

原创 java技术--分布概念之分布式锁(03)

1.目前主流的分布式锁实现方案有两种:(1)基于redis:有开源redisson的jar包供使用(2)基于zookeeper:有开源的curator的jar包供使用(3)redis和zookeeper作分布式锁的区别: <1>zookeeper可靠性比redis强太多,只是效率低了点 <2>如果并发量不是特别大,追求可靠性,首选zookeeper <3>为了效率,则首选redis实现2.为什么使用分布式锁(1)使用分布式锁的目的 &l

2020-05-13 18:17:35 102

原创 java技术--Linux(Ubuntu)安装运维监控工具Zabbix4.2

1.安装前环境准备(1)部署zabbix需要安装apache,mysql和php <1>sudo apt-get install apache2 <2>sudo apt-get install mysql-server <3>sudo apt-get install php7.0 php7.0-gd libapache2-mod-php7.0 php7.0-mysql php7.0-bcmath php7.0-mbstring php7

2020-05-11 17:47:15 322

原创 java技术--网络:TCP/IP协议族数字签名与HTTPS详解(02)

1.HTTP协议本身存在的缺点:(1)明文传输、不能很好的验证通信方的身份(2)无法验证报文的完整性等2.HTTPS确切的的说不是一种协议,而是HTTP + SSL (TSL)的结合体(1)HTTP报文经过SSL层加密后交付给TCP层进行传输(2)SSL(安全套节层)主要采取的是RSA(非对称加密)与AES(对称加密)结合的加密方式(3)先通过RSA交互AES的密钥,然后通过AES进...

2020-05-06 11:53:10 178

原创 java技术--网络:TCP/IP协议族概念简介(01)

1.TCP/IP协议族简述(1)TCP/IP不单单指的就是TCP和IP这两个协议,而是指的与其相关的各种协议 <1>比如HTTP, FTP, DNS, TCP, UDP, IP, SNMP等都属于TCP/IP协议族的范畴2.TCP/IP协议的分层(1)在OSI标准中可以分为7层: <1>应用层、表示层、会话层、传输层、网络、数据链路层、物理层 <...

2020-04-30 17:37:52 164

原创 java技术--SpringCloud:服务追踪Sleuth代码实现(20)

1.主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件2.构建工程(1)主要有三个工程组成: <1>ZipkinServer:它的主要作用作为链路追踪服务中心,负责存储链路数据 <2>创建两个应用实例EurekaClient,EurekaClient1:分别对外暴露各自的接口 2.1.这两个可以相互调用...

2020-04-29 18:04:11 181

原创 java技术--SpringCloud:服务追踪Sleuth概念解析(19)

1.Spring Cloud Sleuth作用:(1)微服务架构是一个分布式架构,它按业务划分服务单元(2)一个分布式系统往往有很多个服务单元 <1>由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位 <2>主要体现在: 2.1.一个请求可能需要调用很多个服务 2.2.而内部服务的调用复杂性,决定了问题难以定位 &...

2020-04-29 15:24:22 231

原创 java技术--SpringCloud:消息总线Bus简介及代码实现(18)

1.消息总线Bus简介(1)消息总线Bus的作用 <1>在没有使用消息总线的时候,如果需要修改某个配置 1.1.如果涉及修改的微服务节点比较多,需要手动的逐个节点的刷新非常麻烦 1.2.在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题 1.3.让系统中所有微服务实例都连接上来(2)于该主题中产生的消息会被所有实例监听和消费,所以...

2020-04-29 14:34:40 5563

原创 java技术--SpringCloud:高可用的分布式配置中心简介及代码实现(17)

1.配置中心从远程git/svn读取配置文件(1)当服务实例很多时,都从配置中心读取文件(2)这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用2.准备工作(1)改造ConfigServer <1>在其pom.xml文件加上EurekaClient的起步依赖,代码示例如下: <dependency> <groupId...

2020-04-29 10:09:09 103

原创 java技术--SpringCloud:分布式配置中心config概念及代码实现(16)

1.概念简介(1)SpringCloud Config出现的原因 <1>没有springCloud前,传统的服务配置文件都是配置在项目里面的 1.1.resource目录下面的application.yml或者application.properties文件 1.2.这种配置文件的局限性是修改起来比较麻烦 1.3.要重新打包发布并且重启服务,这些缺...

2020-04-28 17:57:26 105

原创 java技术--SpringCloud:Zuul上传文件,中文文件名乱码解决办法(15)

1.问题描述(1)项目中又一个上传文件的oss服务,直接调用服务的上传文件成功(2)如果经过网关zuul服务上传中文名字的文件,文件名会出现乱码,最终导致上传失败(3)如果上传英文名字的文件,没有任何问题2.解决方案(1)首先列出zuul服务的配置application.properties:代码示例如下 server.port:8005 zuul.routes.oss-api...

2020-04-28 15:12:11 198

原创 java技术--SpringCloud:Zuul代码实现(14)

1.在微服务架构中,需要几个基础的服务治理组件(1)服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等(2)这几个基础组件相互协作,共同组建了一个简单的微服务系统(3)一个简答的微服务系统流程如下: <1>客户端的请求首先经过负载均衡(Ngnix) <2>再到达服务网关(zuul集群),然后再到具体的服务 <3>...

2020-04-28 09:05:24 203

原创 java技术--SpringCloud:Zuul概念解析(13)

1.Zuul是SpringCloud中的微服务网关(1)Zuul是一个微服务网关,首先是一个微服务 <1>网关: 是一个网络整体系统中的前置门户入口 <2>请求首先通过网关,进行路径的路由,定位到具体的服务节点上 <3>也是会在Eureka注册中心中进行服务的注册和发现 <4>Zuul网关不是必要的,是推荐使用的(2)推荐...

2020-04-26 14:27:23 223

原创 java技术--SpringCloud:Hystrix代码实现(12)

1.Hystrix概念回顾:(1)Hystrix是一个用于分布式系统的延迟和容错的开源库(2)在分布式系统里,许多依赖不可避免的调用失败,比如超时、异常等(3)Hystrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障(4)提高分布式系统的弹性2.准备工作(1)启动EurekaServer工程,端口8000(2)启动EurekaClient工程,端口8001...

2020-04-25 09:01:56 194

原创 java技术--SpringCloud:Hystrix概念解析(11)

1.服务故障的“雪崩”效应(1)在微服务架构中,根据业务来拆分成一个个的服务(2)服务间能相互调用(RPC),在SpringCloud用RestTemplate+Ribbon或Feign来调用(3)为了保证其高可用,单个服务通常会集群部署(4)由于网络原因或者自身的原因,服务并不能保证100%可用 <1>如果单个服务出现问题,调用这个服务就会出现线程阻塞 <2...

2020-04-24 09:38:27 112

原创 java技术--SpringCloud:Feign代码实现(10)

1.Feign概念回顾:简介(1)Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单(2)使用Feign,只需要创建一个接口并注解(3)Feign具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解(4)Feign支持可插拔的编码器和解码器(5)Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果(6)概括: &lt...

2020-04-23 17:59:43 312

原创 java技术--SpringCloud:Feign概念解析(09)

1.Feign简介(1)Feign是由Retrofit,JAXRS-2.0和WebSocket启发的一个java到http客户端绑定(2) Feign的主要目标是将Java Http Clients变得简单 <1>Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单 <2>使用Feign,只需要创建一个接口并注解@FeignClient...

2020-04-23 15:50:48 316

原创 java技术--SpringCloud:Ribbon微服务调用代码实现-ribbon+restTemplate(08)

1.在微服务架构中,业务都会被拆分成一个独立的服务(1)服务与服务的通讯是基于http restful的(2)Spring cloud有两种服务调用方式: <1>一种是ribbon+restTemplate,另一种是feign(3)在这一篇文章首先讲解下基于ribbon+rest2.Ribbon概念回顾:(1)Ribbon是一个负载均衡客户端,可以很好的控制htt和t...

2020-04-23 11:52:00 220

原创 java技术--SpringCloud:Ribbon深度概念解析(07)

1.LoadBalancerClient:负载平衡器客户端(1)Riibon中一个非常重要的组件LoadBalancerClient,它作为负载均衡的一个客户端 <1>LoadBalancerClient在spring-cloud-commons包下 <2>LoadBalancerClient是一个接口,它继承ServiceInstanceChooser...

2020-04-22 15:09:07 128

原创 java技术--SpringCloud:Ribbon概念解析(06)

1.Ribbon概念(1)Ribbon是Netflix公司开源的一个负载均衡的项目 <1>是一个客户端负载均衡器,运行在客户端上 <2>是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为 <3> Feign已经默认使用了Ribbon(2)Ribbon的特性: <1>负载均衡,容错 <...

2020-04-21 18:01:02 203

原创 java技术--SpringCloud:Eureka客户端/服务端代码实现(05)

1.首先要创建一个父工程(1)父工程的packaging为pom类型(2)父工程中只包含pom配置文件即可,不需要其余东西2.创建服务注册中心(Eureka服务端)(1)创建1个model工程:作为服务注册中心,即Eureka Server(2)下面以创建server为例子,详细说明创建过程如下:本人使用MyEclipse2016 <1>创建好父工程后,在父工程右键...

2020-04-16 17:38:00 225

原创 java技术--SpringCloud:Eureka概念解析(04)

1.Eureka是一个服务注册和发现模块(1)使用Eureka实现服务治理(2)Eureka分为服务端和客户端(3)一个基于 REST 的服务,用于定位服务2.Eureka的一些概念(1)Register:服务注册 <1>当Eureka客户端向Eureka Server注册时,它提供自身的元数据 <2>元数据包含:IP地址、端口,运行状况指示符URL...

2020-04-15 17:14:42 112

原创 java技术--Spring Cloud Netflix(03)

1.Spring Cloud是Spring推出的大型项目,类似于Spring推出的其他项目(1)Spring Cloud包含了很多独立的项目 <1>spring-cloud-netflix、spring-cloud-config、spring-cloud-security等 <2>这些项目会独立发版,其中包含的项目的版本并不统一(2)Spring Clo...

2020-04-15 16:10:44 171

原创 javaa技术--SpringBoot异步任务调用(12)

1.定义异步任务(1)代码示例如下:@Component@Asyncpublic class AsyncTask { public void task1() throws InterruptedException { long start = System.currentTimeMillis(); Thread.sleep(3000); ...

2020-04-14 17:56:09 210

原创 Java技术--SpringBoot文件上传下载(11)

1.创建工程(1)创建一个springmvc工程需要 <1>spring-boot-starter-thymeleaf和 spring-boot-starter-web的起步依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId...

2020-04-14 17:26:57 100

原创 java技术--CAP定理与BASE理论(02)

1.CAP原则又称CAP定理(1)指的是在一个分布式系统中 <1>Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼 <2>CAP原则是NOSQL数据库的基石(2)分布式系统的CAP理论 <1>一致性(C): 1.1.在分布式系统中的所...

2020-04-14 10:45:09 301

原创 java技术--创建SpringCloudfu父maven project模块(02)

1.在MyEclipse中创建SpringCloudfu父maven project模块(1)File->new->other->maven->maven project<1>记得勾选框(两个都选),这里仅仅只是需要该项目的pom.xml文件<2>packging选择pom<3>生成后,有src文件,删除该文件,只保留pom.xm...

2020-04-13 15:06:01 142

原创 java技术--主流的RPC框架及与REST 和 SOAP、SOA的区别(01)

1.RPC的由来,产生原因(1)随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对(2)分布式服务架构和流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进 <1>分布式服务架构 1.1.用于提高业务复用及整合的分布式服务框架(RPC),提供统一的服务是关键 <2>流动计算架构(属于架构演进的一个过程) 2.1...

2020-04-11 14:55:26 190

原创 java技术--Netty客户端实现(03)

1.客户端代码示例public class Client { static final String HOST = System.getProperty("host", "127.0.0.1"); static final int PORT = Integer.parseInt(System.getProperty("port", "8081")); static final int...

2020-04-10 17:53:09 270

原创 java技术--Netty服务端实现(02)

1.在SpringBoot项目里添加netty的依赖,注意不要用netty5的依赖,因为已经废弃了<!--netty--><dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version&g...

2020-04-10 17:29:23 349 1

空空如也

空空如也

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

TA关注的人

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