java
大刀客
这个作者很懒,什么都没留下…
展开
-
Java 8之函数式编程(Function、Consumer、Supplier、Predicate)
1、Function定义public interface Function <T, R>Represents a function that accepts one argument and produces a result.(表明接受一个参数和产生一个结果的function)T: the type of the input to the function(入参类型)R: the type of the result of the function(出参类型)调用函数R ap原创 2020-12-24 11:33:06 · 668 阅读 · 1 评论 -
Java ThreadLocal详细使用示例
1、定义Threadlocal类可以实现线程本地存储的作用,它是线程Thread的局部变量,每个线程Thread使用独立的副本。2、要点不存在线程共享问题一般使用private static修饰3、ThreadLocal实现原理首先,一个线程可以有多个ThreadLocal对象,是因为线程Thread中维护了一个ThreadLocal.ThreadLocalMap的map,如下所示Thread.java /* * InheritableThreadLocal values原创 2020-09-28 18:00:48 · 1707 阅读 · 0 评论 -
Guava RateLimiter详解
Guava RateLimiter详解一个rate limiter包含了最高的许可数量,及可执行的最高速率。每个acquire()都会堵塞直到获取许可,获取许可则许可数量减一。Rate limiter 与 Semaphore区别Rate limiter 限制的是速率Semaphore限制的是并发数RateLimiter使用方法一个RateLimiter一般直接按速率定义例1:每秒2速率限制执行final RateLimiter rateLimiter = RateLimiter.cre原创 2020-09-27 10:48:25 · 378 阅读 · 0 评论 -
dependencyManagement与dependencies区别
简单区别如下:1,dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。2,dependencies即使在子模块中不写该依赖项,那么子模块仍然会从父项目中继承该依赖项(全部继承)。...原创 2019-11-06 11:09:47 · 83 阅读 · 0 评论 -
Java String字符串替换replace和replaceAll不生效
使用java String类型自带replace和replaceAll方法会出现不生效的问题,主要是因为写法的问题String类的replace方法是带有返回值的,并不是修改String对象本身举例public static void main(String[] args){ String str = "aaa"; String ret = str.replace(...原创 2019-03-28 10:19:16 · 5996 阅读 · 1 评论 -
Java xml数据格式返回实现
前言:对于服务器后端开发,实现的大部分接口,返回的数据格式一般要求都是json,但是也有使用xml格式的网上有多种实现方式,这里使用注解的方式把java类使用@RequestBody实现Java对象和XML/JSON数据自动转换很多人会认为接口方法使用@Controller搭配@ResponseBody和@RequestMapping注解后,java对象会转换成json格式返回。但实际上配...原创 2019-03-23 11:47:51 · 6813 阅读 · 0 评论 -
guava ListenableFuture实现多线程
最近项目中多线程的实现使用了ListenableFuture,所以就研究了下,使用ListenableFuture接口使java的多线程实现(参考另外一篇java多线程实现)变的简单jar包引入首先在项目pom.xml文件中引入 <dependency> <groupId>com.google.guava</groupId> ...原创 2019-03-21 20:37:51 · 1368 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式什么是建造者模式Builder接口ConcreteBuilder对象Directorprocduct什么是建造者模式最近接手一个Java项目 ,代码里不少地方用到了建造者模式,所以就想着把这种设计模式好好学习一下,整理一下建造者模式 也可以叫生成器模式,是一种创建型的设计模式,简单的理解就是使用简单的对象创建复杂的对象,而工厂模式则偏向于隐藏创建细节,而对象的创建本身并不...原创 2019-01-25 16:26:49 · 119 阅读 · 0 评论 -
设计模式系列-总则
最新在看一本书《设计模式之禅》,感觉写的挺好,所以学习加总结设计模式的六大原则我这里只是简单的列一下大的原则和自己的理解,详细内容可以去看我上面提到的那本书1,单一职责对于接口设计,要做到职责单一,结构清晰 我的理解:不管是接口还是函数,功能要清楚,不用一个接口实现好多功能,这样如果它提供的一个功能要修改,可能影响其他功能,不如拆成多个接口2,里氏替换主要继承...原创 2018-09-14 11:40:21 · 143 阅读 · 0 评论 -
BeanUtils.copyProperties()与PropertyUtils.copyProperties()对比
BeanUtils.copyProperties()与PropertyUtils.copyProperties()1、 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同)。2、 BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到”后付前”这个词来帮助自己记忆这个功能。即将obj2的值赋值给obj1。3、 ...原创 2018-07-18 17:47:05 · 733 阅读 · 0 评论 -
Java 8之Stream用法
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,结合Lambda 表达式,极大的提高编程效率和程序可读性 Stream常用的生成方式有:Collection.stream()和Collection.parallelStream(),也可以使用数组Arrays.stream(T array) 或者直接使用Stream.of()使用Collection接口提供的...原创 2018-07-18 17:34:18 · 890 阅读 · 0 评论 -
java 8新特性之lambda,简化你的代码
刚开始工作时,使用的语言是ruby,使用Ruby可以写出简短而又功能强大的代码,ruby语法简单最近一年接触的都是java项目,刚刚接手到的一个项目使用了很多java 8的特性,代码看起来简洁许多,特此研究了一下lambda语法:JavaScript 是最典型的函数式编程语言。它有个好处,提供了一种强大的功能——闭包,相比于传统的编程方法有很多优势,闭包是一个可调用的对象,它记录了...原创 2018-07-18 16:14:26 · 477 阅读 · 0 评论 -
Java 8之Optional类
Optional类Java8 新增了非常多的特性,这里主要研究下Optional类,做个记录Optional 是个可以包含null值的容器对象,如果值存在,isPresent()方法返回true并且使用get() 获取值,类的具体定义可以看源码主要用的的类方法:static &lt;T&gt; Optional&lt;T&gt; of(T value) 返回一个Optional对...原创 2018-05-03 19:22:25 · 320 阅读 · 0 评论 -
java多线程和spring多线程实现
java多线程和spring多线程实现线程thread线程的创建方法: 1、继承Thread类创建新的可执行线程class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } ...原创 2018-04-02 16:37:18 · 4490 阅读 · 0 评论 -
Spring Bean的生命周期
参考 https://www.cnblogs.com/redcool/p/6397398.html转载 2018-02-18 23:48:39 · 122 阅读 · 0 评论 -
springboot相同类名bean引发问题
使用第三方jar包里的注解时,特别是这个注解是要把bean注入到spring的时候,写代码的时候IDE不会提升错误,但是运行时会出现bean不存在报错原因: 1,要注解的两个类来之不同的依赖jar包,但是有相同的类名2,第三方注解把这两个类注册到不同的java文件里面时,可能就会出现错误注:spring没有在编译时就检查出来 也是因为第三方注解...原创 2018-02-18 23:14:38 · 9258 阅读 · 0 评论 -
JVM原理详解
JVM是Java Virtual Machine(Java虚拟机)的缩写,实现了java语言与平台无关的特性原创 2018-02-18 23:00:19 · 119 阅读 · 0 评论 -
SpringBoot spring bean注册方法
把一个class声明成一个或多个bean,并且能够被spring容器处理的方法:1,使用 AnnotationConfigApplicationContextAnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();ctx.register(AppConfig.class);ctx.ref...原创 2018-02-18 23:19:11 · 1818 阅读 · 0 评论 -
字符串替换各语言版本
字符串替换。1、ruby gsub2、python str.replace or re.sub()3、java str.replaceFirst("old","new")原创 2017-06-21 18:06:00 · 287 阅读 · 0 评论