用策略模式重构工作中的代码

策略模式: 所谓策略模式,其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。 实际项目中,重构前的代码: if (processType != null) { ...

2018-12-19 22:48:57

阅读数 21

评论数 0

java8 JDK1.8 stream 对数据分组操作

之前想对数据进行分组统计之类的操作,需要使用关系型数据库的group by等操作来实现。但这两天工作中碰到一个问题,数据从其他系统获取而不再是我从数据库中取了,也就是说我没法使用关系型数据库提供的操作方法了。了解了一下java8中stream 对数据的处理。 这次碰到的需求是,拿到通过dubbo...

2018-08-15 11:35:06

阅读数 1086

评论数 0

在实际工作中理解乐观锁和悲观锁

先把需求提出:在用户提交表单数据后,保存表单数据之前,通过切面手段或硬编码生成一个表单编号放入表单数据中。生成编号的规则是A3501047800002009120003A+12位单位编码+年月+四位顺序号(按照A+12位单位编码+年月去查询目前的最大值,然后+1) 我也不知道为啥规则是这样,但上头...

2018-05-24 14:47:13

阅读数 48

评论数 0

为什么覆盖equals时也要覆盖hashCode方法

参考自《effective java》第九条。现在假设我们有一个矩形类Rectangle public class Rectangle { private int length; private int width; public Rectangle(int length...

2018-05-13 01:23:10

阅读数 360

评论数 0

JAVA中对CAS算法的应用

CAS算法:Compare and Swap比较并交换。总共由三个操作数,一个内存值v,一个线程本地内存旧值a(期望操作前的值)和一个新值b,在操作期间先拿旧值a和内存值v比较有没有发生变化,如果没有发生变化,才能内存值v更新成新值b,发生了变化则不交换。循环CAS算法则是不停的执行CAS操作。j...

2018-05-02 20:57:33

阅读数 280

评论数 0

java并发控制常用api

sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),属于Thread类中的方法。在调用sleep()方法的过程中,线程不会释放对象锁。依然持有着锁入眠,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。等待睡眠时间到了之后进入线程进入...

2018-04-26 10:29:25

阅读数 79

评论数 0

关于HashSet,LinkedHashSet ,TreeSet

HashSet这个类,表面上是Set接口的实现类,继承自Collection,但却是基于HashMap来实现的。之所以和List、Queue同属于Collection子类,我想是因为他们都是线性结构的吧。而Map类Key的唯一性正好适用于Set集合的唯一性的特性,所以Set类设计者就直接拿Map来...

2018-04-24 00:27:54

阅读数 60

评论数 0

理解断路器(curcuit breaker)模式

在分布式环境下,特别是微服务结构的分布式系统中, 一个软件系统调用另外一个远程系统是非常普遍的。这种远程调用的被调用方可能是另外一个进程,或者是跨网路的另外一台主机, 这种远程的调用和进程的内部调用最大的区别是,远程调用可能会失败,或者挂起而没有任何回应,直到超时。更坏的情况是, 如果有多个调用者...

2018-04-21 08:30:16

阅读数 236

评论数 0

SpringCloud之服务治理机制

服务提供者服务注册:服务提供者在启动的时候通过发送Rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。Eureka Server在收到这个请求后,将元数据信息存储在一个双层结构Map中,第一层的key是服务名,第二层的key是具体服务的实例名。服务同步:...

2018-04-09 16:53:29

阅读数 699

评论数 0

SpringCloud之注册服务提供者和注册服务消费者

上篇文章讲到了如何利用SpringBoot快速搭建一个SpringCloud的Eureka Server集群。这篇来讲一下如何创建并向Eureka Server集群注册一个或多个服务提供者、服务消费者。服务消费端这是我们开发环境中的目录结构我们需要的maven的依赖:<dep...

2018-04-09 16:51:12

阅读数 527

评论数 0

SpringCloud之高可用注册中心Eureka Server集群搭建

Spring Cloud的Eureka Server的高可用实际上就是将自己作为服务向其他服注册中心注册自己,形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。接下来介绍下如何搭建一个服务注册中心集群。下图是文件结构, 非常简洁,就一个启动类。不得不说有了spingBoo...

2018-04-08 15:43:04

阅读数 662

评论数 0

java中volatile关键字

volatile提供可见性支持,但是不能控制并发。在说volatile关键字之前,要先提一下JMM(java内存模型)对java线程之间通信的控制,线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写...

2018-04-06 17:58:01

阅读数 38

评论数 0

java多线程模拟死锁问题

什么时死锁呢?来自百度百科的解释:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。用比较好理解的大白话来说就时线程A拿到了资源1对象的锁,接下来准备要再拿资源2对象的锁的时候,线程B来了,线程B先拿了资源2对象的锁,...

2018-04-06 15:55:30

阅读数 233

评论数 0

阿里巴巴Java代码检测插件的安装和使用

做为一个码农,不能单单是为了完成功能编码,还需要对自己编写的代码质量负责。介绍一下最近在idea上安装的阿里巴巴发布的代码规范插件,功能非常的简单暴力。IDEA插件安装1、 File >> Settings >&gt...

2018-04-04 15:52:56

阅读数 90

评论数 0

JDK1.8新特性之接口类的新关键字default

写在前面:发现这个新特性是在看容器类源码时,看到Iterator类的时候发现接口类竟然有方法体,开始怀疑自己对接口定义的概念,于是又查了一下,才发现这是jdk1.8的新特性(好吧我承认我发现的有点晚T.T)public interface Iterator<E&amp...

2018-03-22 16:59:26

阅读数 446

评论数 1

HashMap底层分析

最近整理HashMap的知识,发现HashMap的底层数据结构在jdk1.8版本之后发生了变化,在1.8版本之前,和散列表的一样,是由散列桶(数组)+链表组成的。在1.8版本之后,结构如下图所示,由散列桶(数组)+链表+红黑树实现。先贴出HashMap中数据结构的定义/* 部分HashMap类中属...

2018-03-22 00:14:53

阅读数 112

评论数 0

防止按钮被快速多次点击,从而导致绑定点击事件的js方法ajax多次提交

一开始试了把ansyc设置成false,但是并没有用,在网上找了下,发现可以用以下方式解决。beforeSend:请求发送前,complete:请求完成(不管请求成功还是失败) $.ajax({ async:true, url:"/BoardManage/...

2017-04-07 15:02:40

阅读数 217

评论数 0

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