- 博客(11)
- 资源 (6)
- 收藏
- 关注
原创 java反射代码实战解析
package com.practise;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 功能描述 * * @author junglon * @datetime ${date} ${time} */public class GenericMethodTest { public static void main(S
2020-05-28 14:51:29 160
原创 Java并发编程之基础篇(五)——闭锁、栅栏、信号量
Java并发编程之基础篇(五)——闭锁、栅栏、信号量闭锁——CountDownLatch闭锁类似于一道大门,所有的线程都在大门外等候,当大门打开时,所有线程一起开工。CountDownLatch提供了一个构造函数,可以传入一个整数作为参数,表示初始计数器。每调用一次countDown()方法时,计数器减一,当计数器减到0时,表示大门开放。可以把CountDownLatch想象成赛车的倒计时计数器,当计数器为0时,所有赛车加速驶出。下面我们通过开发一个简单的压力测试小工具来演示CountDownLat
2020-05-27 11:13:25 246
原创 异步编程之CompleTableFuture
异步编程之CompleTableFuture一、前期准备(基础讲解)1、 什么是异步?所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。2、使用前注意点介绍在并发时代,我们常用多线程来进行异步编程,但是多线程有一个缺点,就是不容易获取线程执行后的值,尽管用一些奇招可以获取,但是这已经远离了我们的初衷。java 1.5提供了一
2020-05-25 17:25:27 836
原创 Java并发编程之基础篇(四) -- 线程间的协作
Java并发编程之基础篇(四) – 线程间的协作这篇介绍一下线程之间如何进行通信之前介绍的内容都是如何保证线程之间的运行互不干扰,但是有的时候,线程之间必须互相合作。比如清洗盘子完成之后,才能对盘子进行烘干操作,烘干必须在清洗之后,那么清洗线程和烘干线程如何进行沟通呢?Java进程间的通信与访问共享变量一样,都需要借助互斥的特性来实现,在互斥的基础上,JDK为线程提供了一种自我挂起的能力。也就是说想实现进程间的通信,前提必须是在synchronized同步块或者方法中实现。实现互斥同步机制,Java
2020-05-22 10:44:15 252
原创 Java并发编程之基础篇(三) -- ThreadLocal
Java并发编程之基础篇(三) – ThreadLocalThreadLocal介绍上篇文章讲到,如果想在多线程的环境下,实现共享可变资源的安全访问,最好的方式是加锁,也就是同一时刻只有一个线程在使用共享可变资源。如果我们有一种方式可以根除对变量的共享,那么就可以实现不加锁的情况下对变量进行安全访问。还拿之前抢卫生间坑位的例子举例,如果只有一个卫生间坑位,五个人都想去卫生间的话,那么就需要加锁同步。如果给每个人都提供一个单独的坑位,那么就可以不加锁了,因为没有争抢的场景发生。Java通过Thread
2020-05-22 10:28:49 201
原创 Java并发编程之基础篇(二) -- 锁
Java并发编程之基础篇(二)上一篇基础篇介绍了并发编程最基本的东西。这篇说一下多线程如何正确的访问共享可变资源。所谓的共享可变资源就是每个线程都可以读也都可以写的资源。如何让多个线程正确的修改以及读取共享变量是一门学问。问题引入如下段代码实现了一个线程计数器功能,也就是统计一下有多少个线程执行了任务。首先定义一个任务public class Task implements Runnable { public static int count = 0; public void
2020-05-22 10:03:38 205
原创 Java并发编程之基础篇(一)-- 线程与任务
Java并发编程之基础篇进程和线程理解提到并发编程,很多人会想到多线程;希望让多个线程共同完成一项任务,以提高生产效率。所以要聊并发编程之前,就要先说一下什么是线程,要说什么是线程就需要说一下什么是进程。进程:在现代操作系统中,每一个独立运行的程序都是一个进程,比如运行中的word,微信等等都是一个独立进程。线程:在现代操作系统中,线程也叫轻量级进程,每个进程里面可以包含多个线程。CPU资源可以在多个线程之间不断切换,仿佛所有线程在并行执行。每个线程都有自己的计数器,堆栈,和局部变量等属性。这
2020-05-22 09:48:33 606
原创 理解java中的Optional
快速理解Optional1.前言相信在日常的开发中大家都会遇到java的NPE(Null Pointer Exception)所谓的空指针异常,而且都被搞的头昏脑涨,有大佬说过“防止 NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一so…so …我们今天就要尽可能的利用Java8的新特性 Optional来尽量简化代码同时高效处理NPE(Null Pointer Exception 空指针异常)2.认识Optional并使用简单说,Opitonal类就是Java提供的为
2020-05-21 11:19:05 3712 2
原创 延时队列
延时队列一、延时队列的应用什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。延时队列在项目中的应用还是比较多的,尤其像电商类平台:1、订单成功后,在30分钟内没有支付,自动取消订单2、外卖平台发送订餐通知,下单成功后60s给用户推送短信。3、如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存4、淘宝新建商户一个月内还没上传商品信息,将冻结商铺等。。。。上边的这些场景都可以应用延时队列解决。二、
2020-05-19 10:45:42 491
原创 java新特性
一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。特点:1 . 不是数据结构,不会保存数据。2. 不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。(保留意见:毕竟peek方法可以修改流中
2020-05-18 14:43:07 183
原创 Spring常用注解总结
Spring常用注解总结1. @SpringBootApplication这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。@SpringBootApplicationpublic class SpringSecurityJwtGuideApplication { public static void main(java.lang.S
2020-05-11 13:03:26 285
genarator自动生成代码,支付宝、微信、钉钉等登陆第三方网站
2022-12-14
genarator代码注释,实体类无setter和getter,实体类生成标签(lombok,table等),实体类注释
2022-12-14
微信实现网页扫描二维码登录
2020-12-11
MD5加密工具类
2018-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人