
java8
文章平均质量分 74
viqiang1991
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
全方位,多角度理解ThreadLocal(强烈推荐)
本次给大家介绍重要的工具ThreadLocal。讲解内容如下,同时介绍什么场景下发生内存泄漏,如何复现内存泄漏,如何正确使用它来避免内存泄漏。 ThreadLocal是什么?有哪些用途? ThreadLocal如何使用 ThreadLocal原理 ThreadLocal使用有哪些坑及注意事项 1.ThreadLocal是什么?有哪些用途?首先介绍Thread类中属性threadLocals:/*ThreadLocalvaluespertainingt...转载 2022-01-11 09:00:10 · 227 阅读 · 0 评论 -
Spring的@Transactional如何实现的(必考)
@Transactional注解简介@Transactional是spring中声明式事务管理的注解配置方式,相信这个注解的作用大家都很清楚。@Transactional注解可以帮助我们把事务开启、提交或者回滚的操作,通过aop的方式进行管理。通过@Transactional注解就能让spring为我们管理事务,免去了重复的事务管理逻辑,减少对业务代码的侵入,使我们开发人员能够专注于业务层面开发。我们知道实现@Transactional原理是基于spring aop,aop又是动态代理模式的转载 2022-01-11 08:55:44 · 225 阅读 · 0 评论 -
为什么不建议直接使用 Async 注解?
应用场景 同步 异步 Spring 已经实现的线程池 Spring中启用@Async @Async应用默认线程池 @Async应用自定义线程池 对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。在项目应用中,@Async调用线程池,推荐使用自..转载 2022-01-11 08:53:59 · 187 阅读 · 0 评论 -
吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
1 FastThreadLocal的引入背景和原理简介既然jdk已经有ThreadLocal,为何netty还要自己造个FastThreadLocal?FastThreadLocal快在哪里?这需要从jdk ThreadLocal的本身说起。如下图:在java线程中,每个线程都有一个ThreadLocalMap实例变量(如果不使用ThreadLocal,不会创建这个Map,一个线程第一次访问某个ThreadLocal变量时,才会创建)。该Map是使用线性探测的方式解决hash冲突的问题,转载 2022-01-11 08:51:52 · 117 阅读 · 0 评论 -
接口性能优化
接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。该问题说简单也简单,说复杂也复杂。有时候,只需加个索引就能解决问题。有时候,需要做代码重构。有时候,需要增加缓存。有时候,需要引入一些中间件,比如mq。有时候,需要需要分库分表。有时候,需要拆分服务。等等。。。导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友一个参考。1.索引接口性转载 2022-01-11 08:35:48 · 711 阅读 · 0 评论 -
STS中临时授权时出现“You are not authorized to do this action. You should be authorized by RAM“报错
问题描述使用STS临时授权的方式可以操作OSS实现上传、下载等功能,在使用代码实现授权时出现以下报错。Error message: You are not authorized to do this action. You should be authorized by RAM.问题原因出现报错存在的部分原因如下:原因一:代码中使用的AccessKey和AccessKeySecret是主账号的,并非RAM用户的。 原因二:没有为RAM用户添加AliyunSTSAssumeRoleAc转载 2021-07-14 19:53:48 · 8156 阅读 · 1 评论 -
移动端文件直传到阿里云OSS流程(JAVA获取STS凭证,以及CALLBACK回调)
1.快速搭建移动端文件上传流程如下服务器只需要提供一个sts凭证的接口,以及阿里云回调的接口。官方文档查阅:https://help.aliyun.com/document_detail/31920.html2.获取sts凭证在获取凭证之前先要配置相关的用户,以及RAM访问控制如果有新建用户可以不需要新建,没有用户可以新建一个用户并且为该用户添加AliyunOSSFullAccess,AliyunSTSAssumeRoleAccess两个权限。这个步骤可以得到accessKeyId.转载 2021-07-14 19:31:44 · 1734 阅读 · 0 评论 -
对DO VO BO DTO POJO的概念与区别(笔记)
说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 第 1 个:DAO DAO(Data Access Object)数据访问对象,它是一个面向对象的数据库接口,负责持久层的操作,为业务层提供接口,主要用来封装对数据库的访问,常见操作无外乎 CURD。我们也可以认为一个 DAO 对应一个 POJO 的对象,它位于业务逻辑与数据库资源中间,可以结合 PO 对数据库进行相关的操作。 第 2 个:PO PO(Persistent Object)持久层对象,它是由一转载 2021-07-14 18:08:01 · 258 阅读 · 0 评论 -
按照Map的键进行排序
public static void main(String[] args) { // 创建一个Map,并填入数据 Map<String, Integer> codes = new HashMap<>(); codes.put("United States", 1); codes.put("Germany", 49); codes.put("France", 33); codes.put.原创 2021-05-18 20:52:03 · 292 阅读 · 0 评论 -
Spring Security 使用总结
各个技术的简要介绍json : 与前端交互的数据交换格式个人理解上,它的特点是可以促进 web 前后端解耦,提升团队的工作效率。 同时也是跟安卓端和 iOS 端交互的工具,目前是没想出除了 json 和 XML 之外的交流形式诶(或许等以后有空闲时间会看看)。它的另一个特点是轻量级,简洁和清晰的层次可以方便我们阅读和编写,并且减少服务器带宽占用。jwt (json web token)用人话讲就是将用户的身份信息(账号名字)、其他信息(不固定,根据需要增加)在用户登陆时提取出来,并且通过转载 2021-02-18 20:50:01 · 1175 阅读 · 1 评论 -
动图 + 源码,演示 Java 中常用数据结构执行过程及原理
主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的.HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下:LinkedList经典的双链表结构, 适用于乱序插入, 删除. 指定序列操作则性能不如ArrayList, 这也是其数据结构决定的.add(E) / addLast(E)add(index, E)这边有个小的优化, 他会先判断index是靠近队头转载 2021-02-07 17:15:47 · 144 阅读 · 0 评论 -
Java8中lambda表达式的应用及一些泛型相关知识
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利顺带用到一些泛型编程,一切都是为了简化代码场景:一个数据类,用于记录职工信息 1 2 3 4 5 6 7 public class Employee { public String name; public int age; public char sex; public String...转载 2021-01-05 09:22:57 · 733 阅读 · 0 评论 -
Java 8 Stream.distinct() 列表去重示例
Java 8 Stream.distinct() 示例在这篇文章里,我们将提供Java8 Stream distinct()示例。distinct()返回由该流的不同元素组成的流。distinct()是Stream接口的方法。distinct()使用hashCode()和equals()方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。如果distinct()正在处理有序流,那么对于重复元素,将保留以遭遇顺序首先出现的元素,并且以这种方式选择不同元素...转载 2021-01-05 09:14:31 · 1274 阅读 · 0 评论 -
java8 Stream 大数据量List分批处理切割
java8 Stream 大数据量List分批处理//按每3个一组分割private static final Integer MAX_SEND = 3;public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); int limit = countStep(list.size()); //方法一:使用流遍历操.转载 2021-01-05 09:07:21 · 2273 阅读 · 0 评论 -
java8 List集合的排序,求和,取最大值,按照条件过滤
public class Java8Test { public static void main(String[] args) { Person p1 = new Person("麻子", 31); Person p2 = new Person("李四", 20); Person p3 = new Person("王五", 26); List<Person> personList = new ArrayList.原创 2021-01-05 09:06:35 · 834 阅读 · 0 评论 -
CompletableFuture 使用详解
1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)public static <U>转载 2021-01-05 09:03:44 · 463 阅读 · 0 评论 -
在Intellij idea 中YAML文件出现代码提示
转载 2020-10-02 20:47:28 · 1348 阅读 · 0 评论 -
如何优雅地根治null值引起的bug
业务中的空值场景存在一个 UserSearchService用来提供用户查询的功能:问题现场对于面向对象语言来讲,抽象层级特别的重要。尤其是对接口的抽象,它在设计和开发中占很大的比重,我们在开发时希望尽量面向接口编程。对于以上描述的接口方法来看,大概可以推断出可能它包含了以下两个含义: listUser(): 查询用户列表 get(Integerid): 查询单个用户 在所有的开发中,XP推崇的TDD模式可以很好的引导我们对接口的定义,所以我们将TDD作为开发..转载 2020-06-27 12:00:52 · 282 阅读 · 0 评论 -
在Java中如何优雅地判空
为了避免 NullPointerException来找我们,我们经常会进行如下操作:NullObject模式对于项目中无数次的判空,对代码质量整洁度产生了十分之恶劣的影响,对于这种现象,我们称之为“判空灾难”。那么,这种现象如何治理呢,你可能听说过 NullObject模式,不过这不是我们今天的武器,但是还是需要介绍一下 NullObject模式。什么是NullObject模式呢?In object-oriented computer programming, a null o..转载 2020-06-27 11:33:02 · 400 阅读 · 0 评论 -
18 个 Java8 日期处理的实践
Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。编号 类的名称 描述...原创 2020-04-22 14:54:52 · 158 阅读 · 0 评论