![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
大树叶
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
JAVA8 map操作 &删除元素 实战
【代码】JAVA8 map操作 &删除元素 实战。原创 2023-10-16 11:33:25 · 447 阅读 · 0 评论 -
关于线程池 lamda和线程启动的那些事
另外,Java 线程池 ThreadPoolExecutor 也是不错的多线程设计必用的,那如何设计一个比较好的线程池API让别的方法调用?2、写一个类实现Runnable接口,实现run()方法,用new Thread(Runnable target).start()方法。start()排队,CPU选中后执行就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。1、写一个类继承自Thread类,重写run()方法,用start()方法启动线程。实现并启动线程有两种方法。原创 2023-07-01 21:19:01 · 311 阅读 · 0 评论 -
Spring Boot RestControllerAdvice的用法
在Spring Boot中,应该用RestControllerAdvice 来统一异常处理在做前后端分离的项目时,后端通常都会拆分成多个独立的微服务,这时候就会涉及每个服务返回给前端的数据格式问题了。下面就来实现一个比较常用的数据格式,统一所有服务的返回值格式。一般返回的数据格式会包括4个部分,第一部分: 请求处理是否成功,第二部分:服务处理结果编码,第三部分:编码对应的文本信息,第四部分:返回值。如下所示:{“result”: true,“code”: 1000,“message”: “SUC转载 2022-03-03 17:18:35 · 1576 阅读 · 0 评论 -
java8 stream 分组的性能对比
java转载 2021-12-29 21:57:10 · 545 阅读 · 0 评论 -
【无标题】
SpringBoot的MockMvc那些事情SpringBoot基础之MockMvc单元测试在SpringBoot如何配置编写测试类编写test case查看测试结果SpringBoot基础之MockMvc单元测试MockMvc是由spring-test包提供,实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,使得测试速度快、不依赖网络环境。同时提供了一套验证的工具,结果的验证十分方便。接口MockMvcBuilder,提供一个唯一的build方法,用来构造MockM原创 2021-12-10 17:18:53 · 336 阅读 · 0 评论 -
java random 随机性和安全性小议
Math.random() 静态方法当第一次调用 Math.random() 方法时,自动创建了一个伪随机数生成器,实际上用的是 new java.util.Random()。当接下来继续调用 Math.random() 方法时,就会使用这个新的伪随机数生成器。public static double random() { Random rnd = randomNumberGenerator; if (rnd == null) rnd = initRNG(); // 第一次调用,创建.原创 2021-10-08 16:45:55 · 2989 阅读 · 0 评论 -
Java8 Date调整时间用法
Java8 Date调整时间用法Date mydate=new Date();mydate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().minusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd"));原创 2021-08-19 15:20:38 · 1799 阅读 · 0 评论 -
Java lamda和predicate用法例子
参考1.JAVA8之lambda表达式详解,及stream中的lambda使用2. 深入浅出 Java 8 Lambda 表达式转载 2021-08-03 17:59:42 · 379 阅读 · 0 评论 -
java8 stream, map, Option 等函数式编程的使用例子
java8中 stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。惰式执行。stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。可消费性。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。str原创 2021-08-02 16:53:47 · 616 阅读 · 0 评论 -
Java中使用动态mybatis语句经典用法
在Java中使用动态mybatis语句访问DB的例子如下,官方建议不用XML.package com.test.econtract.esign2bcore.dao;import com.test.econtract.esign2bcore.dao.model.PlatformInfoDO;import org.apache.ibatis.annotations.*;import org.springframework.stereotype.Repository;import java.util原创 2021-07-30 11:35:49 · 209 阅读 · 0 评论 -
mybatis动态script加入 >=号
@Select({"<script> ", " SELECT * FROM ext_statement_records WHERE business_system_id=#{businessSystemId} AND <![CDATA[date1 <=#{toDate} ]]> ", " AND id IN ", "<foreach collection='idList' item='item' open='(' close=')' separator=',原创 2021-07-30 11:31:48 · 315 阅读 · 0 评论 -
finally 和 return语句执行的先后顺序
finally 和 return语句执行的先后顺序 private int beforereturn(){ log.info("beforereturn run"); return 1; } private int testfinally(){ try{ int a=1; } catch (Exception e){ log.info("catch exception");原创 2021-07-28 15:04:53 · 135 阅读 · 0 评论 -
java8 optional那些事
java8的Optional让很多小伙伴减少了很多NullPointerException,虽然代码比较优雅,短小精干,但是语法比较晦涩难懂,故整理如下。1:调用他人接口时,再也不用各种判断了传统情况下,我们通过http工具或者使用微服务feign的方式调用其他接口,总是担心别人的接口返回各种奇怪的东西,甚至还有在字段上“缺斤少两”的情况。先判断返回code是不是成功,然后判断数据存不存在,一来二去,写了很多冗余代码,java8 的Optional 则可以优雅的处理上述情况。预期的返回结果:原创 2021-06-23 11:16:31 · 187 阅读 · 0 评论 -
java8 流式写法那些事
Java8有好多新的写法,眼花缭乱,如下:例子1:Java以前的写法 List<Long> recordsIDlist = new ArrayList<>(retrecordsList.size()); retrecordsList.forEach(item -> {recordsIDlist.add(item.getRecordId());}); Java8 新写法List<Long> recordsID.原创 2021-06-04 15:43:10 · 625 阅读 · 0 评论 -
Java那些事: @Retention 的含义
下面是一个java 注解的例子@Documented@Target(ElementType.METHOD)@Inherited@Retention(RetentionPolicy.RUNTIME)public @interface MethodInfo{ String author() default "Pankaj"; String date(); int revision() default 1; String comments();}其中注解@Re.原创 2021-03-15 00:32:49 · 562 阅读 · 0 评论 -
hadoop 提交jar的运行 org.apache.hadoop.util.RunJar
关于hadoop 提交jar的运行如下:https://www.cnblogs.com/admln/p/hadoop2-work-excute-submit.html注意:hadoop 3.x中, org.apache.hadoop.util.RunJar 的临时目录是通过 java.io.tmpdir 传入的,而不是原来的Configuration().get("hadoop.tmp.dir")File tmpDir = new File(System.getProperty(...原创 2020-09-02 21:39:21 · 1380 阅读 · 0 评论 -
Sentinel和Spring cloud Gateway集成的那些事
下面两篇专门的文档不错,权当收藏参考文档:1.分布式系统的流量防卫兵Sentinel-入门指南2.Spring Cloud Alibaba Sentinel 网关流量控制之Spring Cloud Gateway实战3.spring cloud gateway 2 深入了解 - filter转载 2020-07-26 12:14:09 · 485 阅读 · 0 评论 -
spring 三种方式:XML配置,JAVA配置和注解配置 小论
目前来说spring的配置方式一般三种:XML配置 JAVA配置 注解配置注解配置:@Service@Component@Repository@ControlleJAVA配置@Confirguration 相当于spring的配置文件XML@Bean 用到方法上,表示当前方法的返回值是一个bean这两种方法的区别在于如果使用注解的方式,那么你需要在Serivce层,DAO层的时候,需要在类上进行注解,就可获得spring的依赖注入。package demo;..原创 2020-07-26 10:50:40 · 763 阅读 · 0 评论 -
MYSQL, mybatis 如何使用自增主键
通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键。本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值:通过JDBC2.0提供的insertRow()方式 通过JDBC3.0提供的getGeneratedKeys()方式 通过SQL select LAST_INSERT_ID()函数 通过SQL @@IDENTITY 变量1.通过JDBC2.0提供的insertRow()方式自jdbc2.0以来,可以通过下面的方式执.原创 2020-07-10 17:31:14 · 2646 阅读 · 1 评论 -
apollo 安装与使用
官方文档见这里原创 2020-03-02 23:48:08 · 410 阅读 · 0 评论 -
字符乱码的现状和分析
字符乱码的事,估计大家都遇到过,很烦,什么utf-8、GBK、GB2312转来转去,不知道什么时候才能转正常。我们做个试验,如果你是windows系统,打开记事本,新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,出现了什么现象?乱码!那你赶紧去找IT吧,你中招了!开玩笑的,这是著名的“windows联通之谜事件”。继续往下看,后面会有谜底的解释。那么我们就讨论下字符编码哪些事吧...转载 2020-02-15 18:15:26 · 295 阅读 · 0 评论 -
MapReduce: DistributedCache的使用例子
需求场景: 过滤无意义的单词后再进行文本词频统计。处理流程是:1)预定义要过滤的无意义单词保存成文件,保存到HDFS中;2)程序中将该文件定位为作业的缓存文件,使用DistributedCache类;3)Map中读入缓存文件,对文件中的单词不做词频统计。该场景主要解决文件在Hadoop各task之间共享的问题,用conf传递参数不能传输大文件,于是通过DistributedCache派...原创 2020-01-17 14:16:35 · 434 阅读 · 0 评论 -
用Java实现 生产者/消费者问题
http://blog.csdn.net/monkey_d_meng/article/details/6251879原创 2014-10-07 12:41:42 · 1473 阅读 · 0 评论 -
jpa多对多映射
学生和老师就是多对多的关系。一个学生有多个老师,一个老师教多个学生。多对多映射采取中间表连接的映射策略,建立的中间表将分别引入两边的主键作为外键。jpa 对于中间表的元数据提供了可配置的方式,用户可以自定义中间表的表名,列名。下面就以学生和老师为例介绍多对多映射关系的实例开发 Student实体类 package com.ljq.entity;import j转载 2015-01-27 00:01:42 · 521 阅读 · 0 评论 -
java System.getProperties() 的用法
1.java的System.getProperty()方法可以获取的值 java.versionJava运行时环境版本java.vendorJava运行时环境供应商java.vendor.urlJava供应商的 URLjava.homeJava安装转载 2014-12-15 01:13:16 · 5971 阅读 · 0 评论 -
Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被转载 2014-12-18 16:14:33 · 459 阅读 · 0 评论 -
Java之静态内部类
Java之静态内部类(static class) 在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。 一、静态内部类的使用目的。在定义内部类的时候,在其前面加上一个权限修饰符static。这个内部类就变为了静态内部类。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程转载 2014-12-18 21:54:20 · 1008 阅读 · 2 评论 -
java 线程同步的那些事: yield(), sleep(), wait(), await(), signal(), sginalAll()
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行转载 2014-12-18 09:12:02 · 3468 阅读 · 0 评论 -
java 匿名内部类 lambda 在多线程中的使用例子
package Mythread;import java.util.*;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;import java.util.concurr原创 2014-12-12 12:19:02 · 2454 阅读 · 0 评论 -
Java垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放转载 2014-12-18 10:25:32 · 465 阅读 · 0 评论 -
Java hashset hashmap用法机制详解
参考文档:通过分析 JDK 源代码研究 Hash 存储机制http://www.ibm.com/developerworks/cn/java/j-lo-hash/index.html 简介 Map和Set是比较常用的两种数据结构。我们在平常的编程中经常会用到他们。只是他们的内部实现机制到底是怎么样的呢?了解他们的具体实现对于我们如何有效的去使用他们也是转载 2014-12-21 00:06:43 · 976 阅读 · 0 评论 -
JPA 2.0 锁机制
锁是处理数据库事务并发的一种技术,当两个或更多数据库事务并发地访问相同数据时,锁可以保证同一时间只有一个事务可以修改数据。锁的方法通常有两种:乐观锁和悲观锁。乐观锁认为多个并发事务之间很少出现冲突,也就是说不会经常出现同一时间读取或修改相同数据,在乐观锁中,其目标是让并发事务自由地同时得到处理,而不是发现或预防冲突。两个事务在同一时刻可以访问相同的数据,但为了预防冲突,需要对数据执行一次检查,转载 2015-01-10 21:52:21 · 597 阅读 · 0 评论 -
JAVA PriorityQueue 的那些事
pq.poll()和 pq.peek(),前者是取出第一个并返回,后者是返回第一个的副本PriorityQueue对元素采用的是堆排序,头是按指定排序方式的最小元素。堆排序只能保证根是最大(最小),整个堆并不是有序的。 方法iterator()中提供的迭代器可能只是对整个数组的依次遍历。也就只能保证数组的第一个元素是最小的。 此队列的头是按指定排序方式的最小元素。如果多个元素都是最小值,则头是原创 2014-12-20 22:38:50 · 792 阅读 · 0 评论 -
java TreeMap TreeSet 用法 原理 详解
简介 TreeMap和TreeSet算是java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围。而TreeMap内部对元素的操作复杂度为O(logn)。虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMap是转载 2014-12-21 00:10:16 · 3389 阅读 · 0 评论 -
JAVA PECS法则
什么是PECS?PECS指“Producer Extends,Consumer Super”。换句话说,如果参数化类型表示一个生产者,就使用;如果它表示一个消费者,就使用。下面是一个简单的Stack的API接口:public class StackE>{ public Stack(); public void push(E e): public E pop();转载 2014-12-21 01:03:41 · 3468 阅读 · 0 评论 -
JAVA String类 用法
String类 1、String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”;转载 2014-12-20 00:59:27 · 466 阅读 · 0 评论 -
HashSet TreeSet LinkedList ArrayList Hashmap Treemap
HashSet TreeSet LinkedList ArrayList Hashmap Treemap,哪些里边的对象是不能重复的,哪些是自动排序的,在使用自定义类型对象判断比较时,哪些需要重写equals,哪些需要重写compareTo。总结如下 首先它们6个是分属于三个类别中的,也就是List,Set,Map。List与Set都是放单独的对象的,Map则是放一个名值转载 2014-12-20 23:56:11 · 644 阅读 · 0 评论 -
java hashset的那些事
hashset和数学中的集合的概念一样,即使不能往集合中放置相同的元素.而如何判断往集合中放置的元素是否相同,则是通过Object类的hashcode和equals方法来确定的.具体的判断过程为:当使用hashset时,hashcode方法就会被调用,该方法判断已经存储在hashset中的对象的hash code值是否和新添加的对象的hash code值一样,如果不一致,则直接加进去; 若原创 2014-12-21 19:33:40 · 532 阅读 · 0 评论 -
Java foreach for map
java 中如何使用foreach来遍历和输出map的几种方法原创 2014-12-21 21:34:09 · 3015 阅读 · 0 评论 -
JPA2.0总结
前些天,我负责调研了JPA,持久化,主要是结合EJB3.0;这个项目还用了JIDE、TWaver ;相对jpa来讲,这个如果你之前做过Hibernate项目,你将会很容易理解JPA的应用。调研内容如下: 4. JPA 1.0 4.1 ORM: 单表,1:1, 1:n, n:m 4.2 其他: PK生成策略,延迟加载策略,级联(c转载 2015-01-10 22:07:00 · 1287 阅读 · 0 评论