![](https://img-blog.csdnimg.cn/20190909215606530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java开发
奋斗中的老青年
可关注公众号 代码小搬运
展开
-
Spring Boot项目基础配置
自定义打包方式首先去除pom文件中的原有的parent<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE&...原创 2020-01-20 09:22:15 · 415 阅读 · 0 评论 -
创建Spring Boot项目
Intellij idea创建Spring Boot项目选择官方默认的脚手架工具就行next后进入项目信息填写页面,填好信息后直接next就行在上一步过来后基本上只要确认下代码存储位置就行到此,一个简易的Spring Boot项目就创建完成了。新建Spring Boot项目结构简介项目启动为了方便演示,去pom文件中增加web项目依赖 <depe...原创 2020-01-18 08:45:00 · 150 阅读 · 0 评论 -
Java实现API限流
企业应用中,特别是商城网站,针对于某些API接口请求过于频繁作出某时间段限制访问次数,此文介绍的是通过注解+拦截器来实现限流。自定义注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;imp...原创 2020-01-14 09:27:46 · 1660 阅读 · 0 评论 -
JSON转换工具类及ObjectMapper配置
bean:import lombok.*;@Getter@Setter@AllArgsConstructor@NoArgsConstructor@ToStringpublic class People { private int age; private String name;}JSON工具类:import java.io.IOException;i...原创 2020-01-06 08:57:29 · 715 阅读 · 0 评论 -
日期工具类
本文为一个日期操作的工具类,希望能在工作中帮到大家:package com.lei.tang.java8.utils;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import lombok.AllArgsConstructor;import lombok.Ge...原创 2019-12-30 09:19:33 · 103 阅读 · 0 评论 -
文件操作
好记性不如烂笔头,此文为了记录下文件的基本操作,需要的时候,方便查阅,下面进行实例:按字节读取文件 /** * 按字节读取文件,一般用于读取图片、声音、影像等二进制文件 * * @param fileName 文件全名 * @param bytes 单次读取字节长度 * @throws IOException */...原创 2019-12-23 09:53:35 · 70 阅读 · 0 评论 -
Java实现url调用远程接口
前段时间做了一些关于微信方面的开发,在项目中写了个调用微信接口的工具类,当然此工具不只是用来调用微信API,也可调用类似微信API的所有接口,多的不说,直接上代码:import java.net.URI;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import com.goo...原创 2019-12-18 09:09:47 · 1299 阅读 · 0 评论 -
微信报错:45027
错误信息:{“errcode”:45027,“errmsg”:“template conflict with industry hint: [WxS7va04591975]”}创建微信模板失败,以上错误造成原因为公众号设置行业与需创建的模板行业存在冲突,重新选择模板或更改公众号行业信息。...原创 2019-12-11 09:00:02 · 2050 阅读 · 0 评论 -
Java8之构建流
由值构建流:使用静态方法Stream.of,通过显式值创建一个流。它可以接受任意数量的参数Stream<String> stringStream = Stream.of("我", "是", "字", "符", "串");由数组构建流:使用静态方法Arrays.stream从数组创建一个流。它接受一个数组作为参数Stream<String> stringStr...原创 2019-11-12 08:59:50 · 150 阅读 · 0 评论 -
Java8之数值流
在Java8之规约那篇文章中我们用到了数值的计算:Integer sum = numbers.stream().reduce(0, (a, b) -> a + b);,这段代码的问题是,它有一个暗含的装箱成本。每个Integer都必须拆箱成一个原始类型,在进行求和。所以Stream API提供了原始类型流特化,专门支持处理数值流的方法。映射到数值流:将流转换为特化版本的常用方法有mapT...原创 2019-11-06 09:28:38 · 194 阅读 · 0 评论 -
最长回文子串
题:给定一个字符串 s,找到 s 中最长的回文子串 public String longestPalindrome(String s) { if (s == null || s.length() < 1) { return ""; } char[] chars = s.toCharArray(); in...原创 2019-10-30 12:58:35 · 83 阅读 · 0 评论 -
Java8之流操作函数介绍
操作类型返回类型使用的类型/函数式接口函数描述符filter中间Stream<T>Predicate<T>T -> booleandistinct中间(有转态-无界)Stream<T>skip中间(有转态-有界)Stream<T>longlimit中间(有转态-有界)Str...原创 2019-10-24 09:06:15 · 185 阅读 · 0 评论 -
Java8之归约
归约:将流中所有元素反复结合得到一个新值,这样的查询可用被归类为规约操作(将流规约成一个值)。用函数式编程语言的术语来说,这称为折叠。数值类型集合:元素求和 Integer sum = numbers.stream().reduce(0, (a, b) -> a + b); log.debug("sum 操作得到:[{}]", sum); ...原创 2019-10-21 08:51:43 · 579 阅读 · 0 评论 -
Java8之查找与匹配
首先准备集合:List<People> list = Lists.newArrayList(new People(19, "张三"), new People(23, "李四"), new People(15, "王二"),new People(30, "麻子"));匹配anyMatch:流中是否有一个元素能匹配给定的谓词,存在则返回true,否则false。例:警察检查网...原创 2019-10-14 10:00:16 · 577 阅读 · 0 评论 -
json转换工具
本文是在工作中用到的利用ObjectMapper类进行json与bean的互换工具类,希望能帮助到初入职场者原创 2019-04-12 10:35:59 · 961 阅读 · 0 评论 -
手机号隐藏
多的不说,直接上demo String phone = "12345678983"; phone.replaceAll("(\\d{3})\\d{5}(\\d{3})", "$1*****$2");利用String自带的replaceAll方法进行替换达到隐藏效果,此方法的第一个参数为分组正则表达式参数注释:(\d{3})\d{5}(\d{3}):此参数需...原创 2019-09-03 09:45:45 · 184 阅读 · 0 评论 -
微信接口报错:40163
场景:当使用H5做微信授权时,微信服务器返回错误信息{"errcode":40163,"errmsg":"code been used, hints: [ req_id: nkeen7aLRa-tGQn4 ]"},从返回的errmsg中可以看出是code被使用过。结论:微信网页授权,通过code去获取用户微信信息,code只能调用一次,如果code已使用,则需要获取新的code作为微信凭证。...原创 2019-09-09 21:48:48 · 10451 阅读 · 0 评论 -
Java8之流操作
java.util.stream.Stream中的Stream接口定义了许多操作。它们可分为两大类: List<Orange> list = Lists.newArrayList(new Orange(1.2, "红"), new Orange(2.3, "黄"), new Orange(3.2, "绿"), new Orange(0.2...原创 2019-09-18 08:59:08 · 173 阅读 · 0 评论 -
Java8流操作之筛选与切片
筛选:用谓词筛选(一个返回boolean的函数)筛选,筛选出各不相同的元素用谓词筛选:Stream支持的filter方法,接受一个谓词作为参数,返回所有符合要求元素的流List<Integer> list = Lists.newArrayList(1, 3, 10, 2, 8, 4, -10, -5);//筛选出大于等于4并是偶数的元素后迭代输出list.stream()....原创 2019-09-25 09:26:18 · 921 阅读 · 0 评论 -
Java8之map和flatMap
首先定义一个实体类,下面demo中用到:@Getter@Setter@AllArgsConstructor@NoArgsConstructorpublic class People { private int age; private String name;}map方法:这里的map所指的并不是Java中的Map集合,而是Stream中的一个方法,它的作用是...原创 2019-10-10 15:42:11 · 289 阅读 · 0 评论 -
管道通信
PipedWriter:字符管道输出流,它继承于WriterPipedReader:字符管道输入流,它继承于WriterPipedInputStream:字节管道输入流,继承于InputStreamPipedOutputStream:字节管道输出流,继承于OutputStreamPipedWriter和PipedReader的作用是可以通过管道进行线程间的通讯。在使用管道通信时,必须将P...原创 2019-08-26 08:51:56 · 491 阅读 · 0 评论 -
CyclicBarrier实现线程通信
CyclicBarrier:从字面上的意思可以知道,这个类的中文意思是“循环栅栏”。大概的意思就是一个可循环利用的屏障。一个线程组的线程需等到所有线程完成后才继续下一步。例:CyclicBarrier(int parties):parties指定线程数public static void main(String[] args) throws InterruptedException {...原创 2019-08-12 08:25:33 · 135 阅读 · 0 评论 -
Java8之方法引用
为什么使用方法引用方法引用可以让你重复使用现有的方法定义,并像Lambda一样传递他们。在某些情况下,比起使用Lambda表达式,他们更易读。方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷写法。方法引用就是根据已有的方法实现来创建Lambda表达式,但是,显示地指明方法的名称,这样使得代码的可读性更高。使用场景如果一个Lambda表达式代表的只是“调用某一方法”,那么就可以适用...原创 2019-07-04 08:18:59 · 125 阅读 · 0 评论 -
Java8行为参数化
需求:提供一个橘子的筛选功能,可通过颜色、重量为条件定义橘子实体:@Getter@Setterpublic class Orange { private double weight; private String color;}初学者:通过定义橘子工具类来实现,如果增加属性,如果需要提供筛选功能,那么又要继续增加筛选方法public class OrangeUt...原创 2019-06-05 09:12:21 · 103 阅读 · 0 评论 -
StopWatch秒表的使用
通过源码及普通的例子介绍StopWatch,使用场景测试代码块执行时间、时间差等原创 2019-05-05 17:43:22 · 4335 阅读 · 1 评论 -
Apache Poi基本操作
因版本问题,可能枚举存在差异原创 2019-04-24 13:10:49 · 312 阅读 · 0 评论 -
RestTemplate详解
本文是对于RestTemplate中的一些常用方法参数及返回做了一些介绍原创 2019-04-10 10:55:10 · 775 阅读 · 0 评论 -
EntityManager基本查询
import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.persistence.Query;import java.util.List;import java.util.Map;import lombok.extern.slf4j.Slf4j;imp...原创 2019-03-13 18:00:10 · 3882 阅读 · 0 评论 -
Spring Cloud注册中心集群配置文件
注册中心配置一:eureka: instance: hostname: server1 client: # 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己 register-with-eureka: false # 表示是否从 Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要...翻译 2019-03-13 16:20:36 · 395 阅读 · 0 评论 -
spring cloud单点服务注册中心、服务提供者
服务注册中心:spring boot版本为2.0.0.RELEASEpom文件:<dependency> <!-- spring cloud配置 --> <groupId>org.springframework.cloud</groupId> <artifactId&...原创 2019-03-12 17:21:54 · 172 阅读 · 0 评论 -
ArrayList、Vector和LinkedList比较
继承与实现接口:ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableVector<E> extends AbstractList<E> implements List<E&...原创 2019-07-10 08:25:52 · 73 阅读 · 0 评论 -
Java8之List转换
List转换成mappublic static void listConversionToMap(List<Orange> list) { //颜色作为key,重量作为value,如果key重复,取较重的值(注意:key重复不做处理会报-->java.lang.IllegalStateException: Duplicate key) Map<String...原创 2019-07-01 08:23:20 · 4409 阅读 · 0 评论 -
线程响应中断
首先介绍下Thread的两个方法:interrupt():设置当前中断标记为trueisInterrupted():检查线程的中断标记@Slf4jpublic class StopThread implements Runnable { public static void main(String[] args) throws InterruptedException { ...原创 2019-08-19 08:44:50 · 1892 阅读 · 0 评论 -
线程通信之等待通知机制
等待通知机制模式是java中比较经典的线程通信方式,两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。例:两个线程从集合中获取数据@Slf4jpublic class ThreadWaitNotify { private static final List<Integer> list = Lists.newArrayList(2, ...原创 2019-08-02 08:26:10 · 177 阅读 · 0 评论 -
CountDownLatch倒计数器并发工具
CountDownLatch:用于多线程并行执行例:@Slf4jpublic class CountDownLatchDemo { private static volatile int index = 0; public static void main(String[] args) throws InterruptedException { //创建倒...原创 2019-08-06 08:41:29 · 156 阅读 · 0 评论 -
volatile 共享内存
volatile原理:Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。在访问vola...原创 2019-08-05 08:53:42 · 558 阅读 · 0 评论 -
HashMap和ConcurrentHashMap
HashMapput//put方法最终实现final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; //判断当前桶是否为空,空的就需要初始化(resize 中会判断是否进...原创 2019-07-23 08:43:43 · 99 阅读 · 0 评论 -
线程池及Spring Boot举例
创建线程池:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)corePoolSize:线程池的基本大小m...原创 2019-07-26 08:51:09 · 215 阅读 · 0 评论 -
线程通信之join方法
join方法就是挂起调用线程,直到被调用线程执行完毕后再继续执行。例:threadB线程中threadA的join方法,所以threadB需在threadA执行完毕后才继续执行join后的代码,而主线程执行threadB.join(),所以最终主线程需等threadA和threadB执行完毕后才继续。@Slf4jpublic class JoinThread { public sta...原创 2019-07-30 08:54:44 · 123 阅读 · 0 评论 -
Java线程状态
线程状态:NEW:当使用new Thread()创建一个新的线程,又还没有开始执行它的时候就处于NEW状态;RUNNABLE:当线程执行start之后,线程进入RUNNABLE状态,之后还可能会继续转换成其它状态;BLOCKED:等待执行锁;WAITING:无限期等待另外线程唤醒,即等待其它线程执行notify或notifyAll;TIMED_WAITING:限时等待另外线程唤醒;T...原创 2019-07-29 09:33:17 · 89 阅读 · 0 评论