自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

科比粉丝的博客

路漫漫其修远兮,吾将上下而求之。

  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 json中的json.parseObject()方法和json.tojsonString()方法

SON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法。首先用maven引入fastjson<?xml version="1.0" encoding="UTF-8"?>4.0.0...

2019-07-07 11:11:14 1539

原创 Spring中@Async

Spring中@Async在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解决这个问题何为异步调用?在解释异步调用之前,我们先来看同步调用的定义;同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果...

2019-06-26 15:25:45 226

原创 @JsonProperty的使用

@JsonProperty的使用jackson的maven依赖 com.fasterxml.jackson.core jackson-databind 2.5.3@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。import com.fast...

2019-06-26 09:30:24 664

原创 CyclicBarrier

CyclicBarrierCyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。  CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。 CyclicBarrier初始...

2019-06-26 09:29:38 179

原创 CountDownLatch

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。public class Test002 {public static void main(String[] args) throws InterruptedExc...

2019-06-25 16:41:19 110

原创 ConcurrentHashMap

ConcurrentHashMapConcurrentMap接口下有俩个重要的实现 :ConcurrentHashMapConcurrentskipListMap (支持并发排序功能。弥补ConcurrentHas hMa p)ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTabl...

2019-06-25 15:28:12 1262 1

原创 HasTable与HasMap

HasTable与HasMap1.HashMap不是线程安全的 HastMap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2.HashTable是线程安全的一个Collection。3.HashMap是Hashtable的轻量...

2019-06-25 15:26:30 682

原创 Vector与ArrayList区别

Vector与ArrayList区别1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。2.Ve...

2019-06-25 15:25:20 179

原创 停止线程思路

使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。使用interrupt方法中断线程。代码:class StopThread implements Runnable {private boolean flag = true;...

2019-06-25 11:32:47 109

原创 Condition用法

Condition的功能类似于在传统的线程技术中的,Object.wait()和Object.notify()的功能。代码Condition condition = lock.newCondition();res. condition.await(); 类似waitres. Condition. Signal() 类似notifyclass Res {public String us...

2019-06-25 11:28:18 2496

原创 Lock 接口与 synchronized 关键字的区别

Lock 接口可以尝试非阻塞地获取锁 当前线程尝试获取锁。如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁。Lock 接口能被中断地获取锁 与 synchronized 不同,获取到锁的线程能够响应中断,当获取到的锁的线程被中断时,中断异常将会被抛出,同时锁会被释放。Lock 接口在指定的截止时间之前获取锁,如果截止时间到了依旧无法获取锁,则返回。...

2019-06-25 11:00:47 254

原创 Lock锁

在 jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 synchronized 关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。Lock写法Lock lock = new ReentrantLock();lock.lock();try{//可能会出现线程安全的操作}finally{//一定在finally中释放锁/...

2019-06-25 10:46:10 131

原创 wait与sleep区别

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对...

2019-06-25 10:41:48 169

原创 wait()、notify、notifyAll()方法

wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。如果对象调...

2019-06-25 10:35:21 176

原创 什么是多线程之间通讯?

什么是多线程之间通讯?多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。画图演示多线程之间通讯需求需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。代码实现基本实现共享资源源实体类class Res {public String userSex;public String userName;}输入线程资源cl...

2019-06-25 10:24:00 505

原创 AtomicInteger类的理解与使用

首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下:复制代码public class Sample1 {private static Integer count = 0;synchronized public static void increment() { count++;}}复制代码以下是AtomicInteger的:复制代码p...

2019-06-25 10:11:01 155

原创 voliate关键字

1.voliate简介在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下.通过上一篇的文章我们了解到synchronized是阻塞同步的,在线程竞争激烈的情况下会升级为重量级锁。而voliate就可以说是java虚拟机提供的最轻量级的同步锁。但它同时...

2019-06-25 09:31:02 19280 5

原创 Java 枚举(enum) 详解常见的用法

一、枚举型常量package com.yang;//首先枚举是一个特殊的class//这个class相当于final static修饰,不能被继承//他的构造方法强制被私有化,下面有一个默认的构造方法private ColorEnum();//所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类public enum ColorEn...

2019-06-24 16:57:02 611

原创 java Queue 常用方法

Queue获取头元素的方法1.获取并移除poll()   获取并移除此队列的头,如果此队列为空,则返回 nullremove()  获取并移除此队列的头,如果此队列为空,则抛出NoSuchElementException异常2.获取但不移除peek()  获取队列的头但不移除此队列的头。如果此队列为空,则返回 nullelement()  获取队列的头但不移除此队列的头。如果此队列为...

2019-06-24 15:35:48 216 1

原创 Java中队列的解析

定义队列是一种特殊的线性表,遵循的原则就是“先入先出”。在我们日常使用中,经常会用来并发操作数据。在并发编程中,有时候需要使用线程安全的队列。如果要实现一个线程安全的队列通常有两种方式:一种是使用阻塞队列,另一种是使用线程同步锁。什么是阻塞队列?假设有一个面包房,里面有一个客人吃面包,一个师傅烤面包。篮子里面最多放2个面包,师傅考完了面包放到篮子里,而客人吃面包则从篮子里面往外拿,为了保证客...

2019-06-24 15:27:53 146

原创 SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。一、准备工作本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们需要装rabbi...

2019-06-24 14:18:41 118

原创 SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下:一、准备工作继续使用上一篇文章的工程,创建一个eureka-server工程,用作服务注册中心。在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-eu...

2019-06-24 11:36:54 115

原创 SpringCloud教程 | 第六篇: 分布式配置中心

在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件。它就是Spring Cloud Config。一、简介在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git...

2019-06-24 11:25:08 97

原创 SpringCloud教程 | 第五篇: 路由网关(zuul)

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简答的微服务系统如下图:注意:A服务和B服务是可以相互调用的,作图的时候忘记了。并且配置服务也是注册到服务注册中心的。在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuu...

2019-06-24 11:01:59 91

原创 SpringCloud教程 | 第三篇: 服务消费者(Feign)

上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。一、Feign简介Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,...

2019-06-20 15:07:53 201

原创 SpringCloud教程 | 第四篇:断路器(Hystrix)

最新Finchley版本:https://www.fangzhipeng.com/springcloud/2018/08/04/sc-f4-hystrix.html或者http://blog.csdn.net/forezp/article/details/81040990在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用Re...

2019-06-20 15:05:58 147

原创 SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。一、ribbon简介Ribbon is a client side load balancer whi...

2019-06-20 11:05:02 119

原创 Maven-dependencyManagement的使用

DepencyManagement应用场景当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。由于我们的模块很多,所以我们又抽象了一层,如下图抽出一个femicro来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的...

2019-06-20 10:13:55 136

原创 如何在IDEA启动多个Spring Boot工程实例

在我讲解的案例中,经常一个工程启动多个实例,分别占用不同的端口,有很多读者百思不得其解,在博客上留言,给我发邮件,加我微信询问。所以有必要在博客上记录下,方便读者。step 1在IDEA上点击Application右边的下三角,弹出选项后,点击Edit Configurationstep 2打开配置后,将默认的Single instance only(单实例)的钩去掉。step 3...

2019-06-20 10:07:46 793

原创 最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

一、spring cloud简介spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章:2小时学会sprin...

2019-06-20 09:56:48 178

原创 @EnableTransactionManagement的使用**

Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框...

2019-06-20 09:50:22 26613 2

原创 @JsonBackReference和@JsonManagedReference

jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore均是为了解决对象中存在双向引用导致的无限递归(infinite recursion)问题。这些标注均可用在属性或对应的get、set方法中。@JsonBackReference和@JsonManagedReference:这两个标注通常配对使用,通常用在父子关系中。@Js...

2019-06-18 16:24:40 1361

原创 swagger2注解详细说明

@Api:用在请求的类上,表示对类的说明tags=“说明该类的作用,可以在UI界面上看到的注解”value=“该参数没什么意义,在UI界面上也看到,所以不需要配置”@ApiOperation:用在请求的方法上,说明方法的用途、作用value=“说明方法的用途、作用”notes=“方法的备注说明”@ApiImplicitParams:用在请求的方法上,表示一组参数说明@ApiImpli...

2019-06-18 10:51:15 372

原创 Swagger的 @Api

Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目实现了与SpingMVC框架的无缝集成功能,方便生成spring restful风格的接口文档,同时swagger-ui还可以测试spring restful风格的接口功能。官方网站为:http://swagger.io/中文网站:http://www.sosoapi.com汇总作...

2019-06-17 16:52:12 1572

原创 @EnableAutoConfiguration

什么是自动配置?  自动配置是SpringBoot的一个特性,可以根据classpath中的jar依赖,自动注册bean;使用自动装配开启自动装配,@EnableAutoConfiguration;添加相应的starter pom;starter pom作用引入可能依赖的jar包(pom文件);注册相应的bean(spring.factories文件);自动装配原理  @Enab...

2019-06-17 16:49:11 2431

原创 @Param注解用法

实例一 @Param注解单一属性dao层示例Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password);xml映射对应示例select * from user_user_t where user_name = #{userName,jdbcType=VA...

2019-06-17 16:44:16 2423

CBoard安装手册v0.1.docx

CBoard安装手册v0.1

2019-06-24

空空如也

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

TA关注的人

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