自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JDK1.8新特性 optional类的使用(五)

空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很...

2019-03-24 22:19:49 536

转载 JDK1.8新特性 日期的使用(四)

新的日期API LocalDate | LocalTime | LocalDateTimepublic class Main { /** * 关于LocalDateTime */ @Test public void test1(){ LocalDateTime date=LocalDateTime.now(); Sys...

2019-03-24 18:27:00 266

转载 JDK1.8新特性 ForkJoin并行流的使用(三)

在jdk1.8新的stream包中针对集合的操作也提供了并行操作流和串行操作流。并行流就是把内容切割成多个数据块,并且使用多个线程分别处理每个数据块的内容。Stream api中声明可以通过parallel()与sequential()方法在并行流和串行流之间进行切换。jdk1.8并行流使用的是fork/join框架进行并行操作。Fork/Join 框架:就是在必要的情况下,将一个大任务,进行...

2019-03-24 18:20:09 804

转载 JDK1.8新特性 Lambda使用 (二)

Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及java.util.st...

2019-03-24 18:05:06 890

转载 JDK1.8新特性 深入理解 (一)

1、函数式接口函数式接口的提出是为了给Lambda表达式的使用提供更好的支持。什么是函数式接口?简单来说就是只定义了一个抽象方法的接口(Object类的public方法除外),就是函数式接口,并且还提供了注解:@FunctionalInterface四大函数式接口:Consumer、Supplier、Function和Predicate它们之间有哪些区别呢?(1)、Consumer 《...

2019-03-24 12:06:43 725

原创 解决mysql8.0.15“2059 - Authentication plugin 'caching_sha2_password' cannot be loaded”的问题

原来,MySql 8.0.15 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,...

2019-03-17 09:59:16 450

转载 第十六章 Spring Cloud GateWay

在上一篇文章当中,大家对Spring Cloud GateWay有了一个初步的认识,网关作为一个系统的流量入口,有着举足轻重的作用。网关的作用:(1)、协议转换、路由转发。(2)、流量控制。(3)、权限判断。(4)、缓存。流程详述:客户端向Spring Cloud GateWay发出请求,GateWay Handler Mapping 确定与之对应的路由,然后再发送到GateWay ...

2019-03-16 22:01:11 102

原创 第十五章 Spring Cloud GateWay 初识

Spring Cloud作为Spring Cloud官方推荐的第二代框架,取代Zuul网关。网关作为流量控制,在微服务架构当中有非常重要的作用。网关常用的功能有路由转发、权限校验和限流控制等。本案例来源于官网,在官网的基础之上进行实现。1、准备工作本篇文章需要父项目(spring-cloud-brimen-gateway)和子工程(spring-cloud-gateway-first),关于...

2019-03-14 21:14:32 241

原创 Java线程-闭锁(CountDownLatch)

CountDownLatch有时被称为“闭锁”,其作用相当于一扇门:在CountDownLatch达到结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当CountDownLatch到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。CountDownLatch可以用来确保某些活动直到其它活动都完成后才继续执行。她与Cycl...

2019-03-14 16:34:48 249

原创 Java线程-异步获取执行结果(FutureTask)

FutureTask可用于异步获取执行结果或者取消执行任务的场景,通过传入Runnable或者Callable的任务给FutureTask,调用run()方法放入线程池,之后通过外部的FutureTask的get()方法获得结果。FutureTask主要用于非常耗时的计算。1、执行多任务计算利用FutureTask和ExecutorService,可以用多线程的方式提交计算任务,主线程继续执行...

2019-03-13 17:28:37 4637 3

原创 Java线程-线程池

Sun在Java5当中,对线程的类库做了大量的扩展,线程池是Java5的新特征之一。有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类。线程池的思想是一种对象池的思想,开辟了一块内存空间,里面放了很多的线程,线程的执行调度由池管理器来进行处理,当有线程任务时,会从池子当中取一个进行执行,当任务执行完成以后,重新放入池子,以便于给其它任务...

2019-03-13 17:15:00 157

原创 Java线程-障碍器(CyclicBarrier)

Java5当中添加了障碍器,为了适应一种新的设计需求,比如说一个大型任务,有很多的子任务,只有当子任务都完成了,才能执行主任务,这个时候就需要障碍器。障碍器是多线程并发控制的一种有效的手段。示例如下:public class Thread_CyclicBarrier { public static void main(String args[]){ //创建障碍器,并...

2019-03-12 15:21:39 160

原创 Java线程-线程池-原子操作

所谓的原子量就是该变量是原子的,该操作不可再分,因此是线程安全的。为何会使用原子量呢?原因是多个线程操作同一个变量也会引发问题,在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但是这样解决太麻烦。Java5之后,专门提供了用来进行单变量多线程并发安全访问的工具包java.util.concurrent.atomic,其中的类也很简单。下面给...

2019-03-12 15:08:54 509

原创 Java线程-线程池-条件变量

条件变量是Java5线程当中很重要的一个概念,顾名思义,条件变量就是条件当中的一种变量,这里的条件没有实际意义,仅仅是个标记而已。条件变量都实现了java.util.concurrent.locks.Condition接口,条件对象的实例化是通过一个lock对象上调用newCondition()方法来获取的,这样条件就和一个锁对象绑定起来,Java当中的条件变量只能和锁配合使用,来控制并发程序访...

2019-03-12 14:42:23 762

原创 Java线程-线程池-阻塞栈

阻塞栈和阻塞队列类似,不同的是,阻塞栈是“后入先出”的结构。阻塞队列是“先入先出”的结构,每次操作的都是队列头。阻塞栈是Java6的新特征。Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。代码如下:public class Thread_Bdueue { public static ...

2019-03-12 14:00:03 277

原创 Java线程-阻塞队列

阻塞队列是Java5线程特征当中新增的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue。阻塞队列的概念是:如果指定长度的队列满了,添加新元素的操作就会被阻塞等待,直到有空位位置。有了这样的功能,就为多线程排队等候的模型提供了便捷的通道。java.util.concurrent.BlockingQueue继承了java.util.Queue接...

2019-03-12 13:49:44 428

原创 Java线程-信号量

Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源,并且通过信号量可以得知可用资源的数目等等,这里总是在强调“数目”二字,但不能指出来有哪些在等待,哪些资源可用。代码如下:public class Main { public static void main(String args...

2019-03-12 11:20:39 151

原创 Java线程-线程池-读写锁

上文使用lock接口以及对象,很好的实现了对竞争资源的访问控制,这种锁不区分读写,成为普通锁。为了提高性能,Java提供了读写锁。在读的地方使用读锁,在写的地方使用写锁。在一定程度上提高了程序的执行效率。Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock,详细的API可以查看Java...

2019-03-12 10:53:03 302

原创 Java线程-线程池-锁(lock)

在Java5当中,专门提供了锁对象,利用锁可以方便的实现对资源的封锁,用来控制对竞争资源并发访问控制,这些内容主要集中在java.util.concurrent.locks包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。Condition将Object监视器方法(wait、notify和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lo...

2019-03-12 10:34:33 5266

原创 Java线程-线程池-带返回值

Java5之前,线程是没有返回值的。Java5之后,可以写有返回值的任务了。有返回值的任务必须实现Callable接口,没有返回值的任务实现Runnable接口。执行Callable接口后,可以获得一个Future的一个对象,通过Feture的get方法就能获得返回的Object数据了。代码如下:public class ThreadExtend_Pool_Return_Value {...

2019-03-12 09:54:19 7232

原创 Java线程-线程池-自定义线程池

自定义线程池,代码如下:public class ThreadExtend_Pool_Custom extends Thread { private String name;//线程的名字 public ThreadExtend_Pool_Custom(String name){ this.name=name; } @Override pu...

2019-03-11 19:11:46 3911

原创 Java线程-线程池-延迟连接池

创建一个可以延迟的连接池子,并且固定大小为2。如果线程数量超过2,那么,当前线程就会进入等待状态,直到其它线程用完之后,再获得被释放的池子执行任务。public class ThreadExtend_Pool_Scheduled extends Thread {public class ThreadExtend_Pool_Scheduled extends Thread { priva...

2019-03-11 18:43:33 1961

原创 Java线程-线程池-固定大小

Sun在Java5当中,对线程的类库做了大量的扩展,线程池是Java5的新特征之一。有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类。线程池的思想是一种对象池的思想,开辟了一块内存空间,里面放了很多的线程,线程的执行调度由池管理器来进行处理,当有线程任务时,会从池子当中取一个进行执行,当任务执行完成以后,重新放入池子,以便于给其它任务...

2019-03-11 18:17:38 1506

原创 线程安全类-线程同步

当一个类很好的同步并保护它的数据时,那么这个类就可以说是“线程安全的”在类的层面上来说是线程安全的,但是操作多个线程仍然不是安全的。比如说一个集合是线程安全的,两个线程操作同一个集合对象,第一个线程查询集合非空后,删除集合当中的第一个元素。第二个线程也执行与第一个线程相同的操作,第一个线程查询非空后,第二个线程查询也非空。第二个线程再执行删除,显然是不对的,因此此时集合已经没有元素了。举个例...

2019-03-11 17:29:08 203

原创 第十二章 Spring Cloud 断路器(Hystrix)

在微服务架构当中,根据业务来拆分成一个一个的微服务,服务和服务之间可以相互调用(RPC),Spring Cloud可以用RestTemplate+Ribbon和Feign来实现,为了保证高可用,单个服务会集群部署,由于网络或者自身原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现阻塞,此时如果有大量的请求涌入,Servlet容器就会被消耗完毕,由于服务和服务之间有依赖姓,...

2019-03-07 21:45:08 199

原创 Java线程-并发协作-死锁

线程发生死锁的可能性很小,即使看似发生死锁的代码,在运行时发生死锁的可能性小之又小。发生死锁的原因一般情况下是两个对象的锁相互等待造成的。代码如下:package Test;/** * java线程,并发协作,死锁 */public class ThreadExtend_DeadLock extends Thread{ private DeadLock deadLock;...

2019-03-06 16:32:11 198

原创 Java线程-并发协作-生产者消费者模型

不管任何语言,生产消费者模型都是最经典的,就像每一门编程语言“Hello World!”一样。准确来说,应该是“生产-消费-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。业务描述如下:(1)、生产者在仓库未满时进行生产,仓库满了,则停止生产。(2)、消费者仅仅在仓库有产品时才能进行消费,空仓则进行等待。(3)、当消费者发现仓库没有产品可以消费时,就通知生产者进行生产。(4...

2019-03-06 16:12:55 127

原创 线程的同步-同步块

线程的同步,除了同步方法外,我们还可以使用代码块,使用代码块比同步方法有更好的效果。。追其同步的根本目的,是控制竞争资源的正确访问,因此只要在访问竞争资源的时候,只要保证同一时刻只能有一个线程访问即可,因此Java引入了同步代码块的策略,以提高其性能。我们对上一篇文章进行改进:User类:package thread_synchronization;public class User {...

2019-03-06 15:28:48 191

原创 线程同步-同步方法

防止多个线程访问数据对象时,对数据造成破坏或者是说多个线程访问同一个对象进行数据处理时,发生了错误,因此就需要线程同步。我们来创建一个实例进行说明:我们来构建一个信用卡账户,起初额度为100w,然后模拟透支,存款等操作。1、创建一个非同步的实例第一步:创建一个User对象创建一个User对象,添加两个变量账号(code)和余额(cash);添加一个处理业务的方法oper()。代码如下:...

2019-03-06 15:10:22 262

原创 线程的调度-守护线程

守护线程与普通线程在写法上基本没有啥区别,调用线程对象的setDaemon(true),可以设置为守护线程。守护线程使用情况较少,并非没用。比如说:Java的垃圾回收、内存管理都属于守护线程;还有我们在做数据库应用时,使用的数据库连接池,也有很多后台应用,监控连接个数、超时时间和状态等。当设置setDaemon(true)时,必须在启动之前进行调用。public class Thread_D...

2019-03-06 11:57:23 191

原创 线程的调度-合并

线程合并的含义就是将几个并行的线程合并为单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕后才能执行,可以使用join()方法。join()为非静态方法,定义如下:(1)、void join() 等待该线程终止(2)、void join(long millis) 等待该线程终止最长时间为millis毫秒。(3)、void join(long millis,int nanos) 等...

2019-03-06 11:44:11 175

原创 线程的调度-优先级

与线程休眠类似,线程的优先级无法保障线程的执行此讯,只不过是优先级高的线程获得CPU的概率比较大,而优先级低的线程并不是没有机会执行。优先级用1-10的整数来进行表示,数值越大的优先级越高,默认情况下,有限级是5。在一个线程当中开启另外一个新线程,则该新线程成为该线程的子线程。public class Thread_Priority { public static void main...

2019-03-06 11:14:45 457

原创 线程的调度-让步

线程让步的含义是运行着的线程让出CPU资源,交给其它线程运行,但是交给谁,它并不清楚,一般情况下,谁抢到,谁就运行。线程的让步使用Thread.yield()方法,它是一个静态方法,暂停当前正在执行的线程对象,并留机会给其它线程执行。代码如下:public class Thread_Yield extends Thread { public static void main(Strin...

2019-03-06 11:00:03 234

原创 线程的交互-等待和唤醒

线程的等待:(1)、void notify() 唤醒在此对象监视器上等待单个线程。(2)、void notifyAll() 唤醒在次对象监视器上等待的所有线程。线程的唤醒:(1)、void wait() 导致当前线程等待,直到其它线程调用此对象的notify()和notifyAll()方法。(2)、void wait(long timeout) 导致当前线程等待,直到其它线程调用此对象的...

2019-03-06 10:41:01 155

原创 线程的调度-睡眠

Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能。不管程序怎么编写,我们只能最大限度的去影响程序执行的次序,而无法做到精确控制。线程休眠时,会将CPU资源交给其它线程,当休眠一定时间后或者达到一定条件之后,重新进入就绪状态,等待线程的执行。线程休眠的方法是Thread.sleep(long millis)和Thread.sleep(long millis, in...

2019-03-06 10:13:03 198

原创 线程的基本实现

在Thread对象上调用start()方法,方法处于就绪状态,而不是调用别的方法。在调用start()方法之前,线程还处于新建状态。调用sart()方法之后,线程获得机会后会调用run()方法,这个时候run方法里面可以编写一些自己的业务逻辑。1、实现Runnable接口public class RunnableImpl implements Runnable { private ...

2019-03-05 19:03:46 105

原创 线程的基本知识

1、进程和线程区别进程:应用程序的执行实例,有独立的内存空间和系统资源。线程:CPU调度和分派的基本单位,进程当中执行运算的最小单位,可完成一个独立的顺序控制流程。联系(1)、一个线程只能有一个进程,一个进程可以有多个线程。(2)、资源分配给进程,同一进程当中的所有线程共享该进程的所有资源。(3)、线程在执行过程当中需要协作同步,不同进程的线程要利用消息通讯的方法实现同步。2、线程...

2019-03-05 18:27:47 345

原创 display:flex布局方式

2009年,W3C提出了一种新的方案–Flex布局,可以简便、完整、响应式地实现各种页面布局。目前已得到所有现在浏览器的支持。Flex是Flexible Box的缩写,翻译成中文就是“弹性盒子”,用来为盒装模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。一、容器属性1、基本概念采用Flex布局的元素,被称为Flex容器(flex container),简称“容器”。其所有子元素...

2019-03-04 22:17:55 3061

原创 第五章 Spring Cloud 路由网关(zuul)

在基础架构当中,需要几个服务治理组件,包括服务的注册与发现、负载均衡、路由网关、服务消费、断路器和配置管理等几个组件,共同组成了简单的微服务系统。架构图如下:1、Zuul 简介zuul的主要功能是做路由转发和过滤,比如说/api/user转发到user,/api/shop转发到shop。2、准备工作本篇文章是基于上一篇文章的基础之上实现的,因此在之前4个工程的基础之上再加一个工程一共是...

2019-03-04 21:19:40 242

原创 第四章 Spring Cloud 服务消费者(Feign)

Feign是一个声明式的伪客户端,它使得写http客户端变得更为简单,使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。总而言之:1、Feign 采用的是基于接口的注解。2、Feign 整合了ribbon,具有负载均...

2019-02-28 22:04:02 185

空空如也

空空如也

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

TA关注的人

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