自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

深圳克林斯曼

专注、努力

  • 博客(86)
  • 收藏
  • 关注

原创 把登陆人信息放入ThreadLocal

1.定义工具类UserThreadLocalpublic class UserThreadLocal { private static ThreadLocal<User> userThread = new ThreadLocal<>(); public static void set(User user){ userThread.set(user); } public static

2020-11-18 16:13:08 376

原创 Springboot项目从配置文件中获取值的两种方式

方式一:使用配置类如灵活配置一个数字4:在application.properties中:app.calculate_period=${APP_CALCULATE_PERIOD:4}代码:Configuration配置类@Configuration@ConfigurationProperties("app")@Validatedpublic class A...

2020-05-06 17:29:44 1080

原创 前后端访问发送跨域问题解决

原因略解决:提供一个配置类,写个过滤器,设置白名单、响应头访问方式等等信息。import org.apache.commons.lang3.ObjectUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.context.annotation.Bean;import org.spr...

2019-11-06 14:55:03 178

原创 向Mysql批量插入50万条数据

》批量插入数据脚本表Sql:CREATE TABLE dept(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,dname VARCHAR(20) NOT NULL DEFAULT '',loc VARCHAR(13) NOT NULL DEFAU...

2019-11-03 22:42:40 2187

原创 如何给java项目写日志切面工具类

话不多说,直接上代码!package com.dada.kit.vivo.aop;import com.dada.kit.utils.InfoLogUtil;import com.dada.kit.logger.CxLogFieldName;import com.dada.kit.logger.CxLogManager;import com.dada.kit.logger.CxLo...

2019-10-16 14:35:29 456 1

原创 java线程池大小_线程池大小设置多少合适?

所负责的服务开了多少个线程?这些线程都是如何管理?开的线程数合理吗?如果合理,为什么合理?如果不合理,为什么不合理?

2022-11-18 21:45:04 4081 1

原创 如何编写service层切面

import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;/** * @ClassName Communicati.

2022-11-18 21:42:29 426

原创 线程池ThreadPoolExecutor的使用demo

1.示例代码: Runnable + ThreadPoolExecutor首先创建一个 Runnable 接口的实现类(当然也可以是 Callable 接口,我们上面也说了两者的区 别。) MyRunnable.javaimport java.util.Date;public class MyRunnable implements Runnable { private String command; public MyRunnable (String s){

2021-11-27 16:17:22 766

原创 切面打印日志

import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;/** * @ClassName Communicati.

2021-11-27 16:06:40 141

原创 java+vue下载xls文件到本地

1.后端java springboot背景:文件是以xls类型的文件。第一步:添加依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14/version></dependency><dependency> <groupId&

2021-11-15 18:09:03 518

原创 自旋锁spinlock初始概念并写一个自旋锁案例

是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少上下文切换的消耗,缺点是循环会消耗CPU.手写自旋锁demo:/** * @author: dada * @date: 2020/12/19 * @description: 手写自旋锁 */public class SpinLockDemo { AtomicReference<Thread> atomicReference = new AtomicReference<>();

2020-12-19 16:57:53 203 2

原创 在多线程环境下操作集合如何确保其安全性

我们知道ArrayList是线程不安全的,当高并发环境下如何兼顾性能和线程安全呢?直接上代码:/** * @author: dada * @date: 2020/12/18 * @description: 不安全的案例ArrayList */public class NoSafeArrayListDemo { public static void main(String[] args) { //List<String> list = new Array

2020-12-18 16:54:53 216 3

原创 多线程使用CAS引发的ABA问题的案例

(之前被面试官问起多线程CAS相关问题时,亿脸懵逼,赶紧恶补一下。)概念: CAS是compare and swap的缩写,即比较与交换。就是你修改主内存中的值时先要比对之前的值,如果相同那么就修改。或者这么理解: 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS底层原理 CAS如何实现?unsafe.getAndAddInt原理总结CAS: CAS(CompareAndSwap) 比较当前工作内存种的值和主内存种的值,如果相同.

2020-12-18 12:28:19 345

原创 设计模式之单例模式(懒汉式)

使用volatile的特性(保证可见性),实现单例模式package com.dada.thread.threaddemo.chapter03;/** * @author: dada * @date: 2020/12/17 * @description: 单例模式 */public class SingleDemo { private static volatile SingleDemo instance = null; private SingleDemo(){

2020-12-17 21:08:26 95

原创 分布式事务解决方案之四:最大努力通知

(自学笔记)--------------------6.1.什么是最大努力通知 最大努力通知也是一种解决分布式事务的方案,下边是一个是充值的例子: 交互流程: 1、账户系统调用充值系统接口 2、充值系统完成支付处理向账户系统发起充值结果通知若通知失败,则充值系统按策略进行重复通知 3、账户系统接收到充值结果通知修改充值状态。 4、账户系统未接收到通知会主动调用充值系统的接口查询充值结果。 通过上边的例子我们总结最大努力通知方案的目标: 目标:..

2020-12-15 21:22:33 336

原创 分布式事务解决方案之三:可靠消息最终一致性

(自学笔记)----------------------5.1.什么是可靠消息最终一致性事务 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能 够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。 此方案是利用消息中间件完成,如下图: 事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件 之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信

2020-12-15 21:16:48 115

原创 分布式事务解决方案之二:TCC

(自学笔记)------------------4.1.什么是TCC事务 TCC是Try、Confifirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confifirm、撤销Cancel。Try操作做业务检查及资源预留,Confifirm做业务确认操作,Cancel实现一个与Try相反的 操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所 有分支事务的Cancel操作,若try操作全

2020-12-15 21:02:19 208 1

原创 分布式事务解决方案之一:2PC(两阶段提交)

(自学笔记)-----------------3.1.什么是2PC?2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。在计算机中部分关系数据库如Oracle、MySQL支持两阶段提交协议,如下图: 1. 准备阶段(Prepare phase):事务管理器给每个参与者发送Prepare消息,每个数据库参与者在本地执行事 务,并写本地的Undo/.

2020-12-15 20:24:38 410

原创 redis入门到删库-redis学习笔记

第0章NoSQL非关系型数据库,不仅仅是SQL为什么用?1.Memcached+MySQL+垂直拆分2.MySQL主从复制读写分离3.分表分库+水平拆分+MySQL集群特点:键值对存储;第一章 Redis简介1.概述Redis:Remote Dictionary Server远程字典服务器开源,C语言写的,遵循BSD协议...

2020-11-30 17:07:53 265

转载 多线程按序打印如何实现?

1、题目编写一个程序,开启 3 个线程,这 3 个线程的 ID 分别为 A、B、C,3 个线程交替打印 1-100 的整数,样例 Sample:Thread1:1Thread2:2Thread3:3Thread1:4Thread2:5Thread3:6....Thread3:99Thread1:100大家可以先思考一下,试试看看能否实现?2、解题思路题目中要求 3 个线程启动之后,需要按顺序一个接着一个来执行,重点是 3 个线程都处于运行状态,如何能让他们按顺序来打印

2020-11-28 22:10:32 292

转载 Redis面试2020

Redis 持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即S

2020-11-28 21:02:57 148

原创 多线程几种实现方式

第一种方式:继承Thread类package com.kingh.thread.create;/** * 继承Thread类的方式创建线程 * * @author <a href="https://blog.csdn.net/king_kgh>Kingh</a> * @version 1.0 * @date 2019/3/13 19:19 */public class CreateThreadDemo1 extends Thread { public

2020-11-18 18:12:44 230

原创 Instant获取30天以前的时间

30天前,现在是2020.5.14传入天单位:Instant requestTimeUtc = Instant.now().minusMillis(TimeUnit.DAYS.toMillis(30));传入秒单位Instant requestTimeUtc = Instant.now().minusSeconds(2592000);demo:public static void main(String[] args) { Instant day = Ins...

2020-05-14 18:50:16 1769

原创 pom文件更新失败后解决方法

案例:比如无法更新此依赖: <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.764</version> &...

2020-05-05 17:10:23 496

原创 @NotEmpty、@NotNull、@NotBlank 的区别,Boolean类型入参用什么注解

@NotEmpty 用在集合上面(不能注释枚举)@NotBlank用在String上面@NotNull用在所有类型上面1. @NotEmpty Asserts that the annotated string, collection, map or array is not {@code null} or empty. 加了@NotEmpty的String类,Collection、M...

2019-11-05 16:59:48 3051

原创 Mysql varchar与char区别

区别一,定长和变长char 表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。(但是如果存的数值超过固定长度,超出部分则会被舍弃。如:varchar(2),存:'abcd',则实际存入数据库只有‘ab’);因为其长度固定,char的存取速度还是要比varch...

2019-11-04 17:51:53 133

转载 OAuth2实现单点登录SSO

1. 前言技术这东西吧,看别人写的好像很简单似的,到自己去写的时候就各种问题,“一看就会,一做就错”。网上关于实现SSO的文章一大堆,但是当你真的照着写的时候就会发现根本不是那么回事儿,简直让人抓狂,尤其是对于我这样的菜鸟。几经曲折,终于搞定了,决定记录下来,以便后续查看。先来看一下效果2. 准备2.1. 单点登录最常见的例子是,我们打开淘宝APP,首页就会...

2019-11-01 17:58:47 443

原创 添加自定义注解

案例1:1.demand,排除某个接口的日志输出,用自定义注解@NoHealth,只要有该注解的方法,切面日志忽略该方法。2.codeNoHealth interface:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotati...

2019-10-21 11:02:14 170

转载 IntelliJ IDEA 超实用使用技巧分享

前言工欲善其事必先利其器最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。同时,在这次分享之后,本人自己也学习到了一些新的使用技巧,所以借着这次机会,一起分享出来。希望可以帮到一些人。基于的 IDEA 版本信息:IntelliJ IDEA 2018....

2019-10-18 17:54:32 307 1

转载 java常用工具类

package commons;import com.alibaba.fastjson.JSONObject;import org.apache.commons.beanutils.BeanUtilsBean;import org.apache.commons.beanutils.PropertyUtilsBean;import org.springframework.util.Dige...

2019-09-25 15:53:09 176

转载 Java 8 lambda表达式

Java8 lambda表达式10个示例例1、用lambda表达式实现Runnable我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例。看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类。...

2019-09-23 17:06:30 111

转载 声明式事务不回滚@Transactional的避坑正确使用

看到好文章,轉發的純屬收藏親測有效转发:https://blog.csdn.net/weixin_41485592/article/details/80877665案例:自定义异常类public class IAMException extends Exception { //.....}serviceImpl类1.这种情况抛异常,数据不会回滚...

2019-07-11 17:15:59 1157

原创 前后端交互字段自动驼峰映射

1.后端传给前端:import com.fasterxml.jackson.databind.PropertyNamingStrategy;import com.fasterxml.jackson.databind.annotation.JsonNaming;import lombok.*;import lombok.experimental.Accessors;import ja...

2019-07-08 18:51:40 1271 1

原创 springboot 单元测试案例

1.实际业务:controller层@GetMapping(value = "/abc/{username}/acc", produces = MediaType.APPLICATION_JSON_VALUE) public Map<String,Set<String>> findUserAccess(@PathVariable(name = "usern...

2019-07-02 14:46:51 503

原创 自定义正则校验注解

案例:校验电话号码定义:import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.Retent...

2019-06-26 15:37:01 798

转载 spring项目《接口响应体格式统一封装》

前言在之前的文章中我们有介绍过,如何更好、更简单的写好一个接口(接口返回值篇),今天的这篇文章我们主要介绍,怎么统一处理下接口的返回格式问题。问题分析我们先来分析下我们所面临的问题在哪里,然后接着给出解决方案。在写一个接口时,我们通常会先统一定义一下接口的返回格式是什么,然后在跟前端去对接,通常的返回格式大体两种(我们以保存用户为例):1. 成功/失败响应格式不一致(此种方式作为我们默认的...

2019-05-22 23:44:49 459

原创 测试时报错:java.lang.Exception: No tests found matching

java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testSave], {ExactMatcher:fDisplayName=testSave(com.atguigu.hibernate.entities.HibernateTest)], {LeadingIdentifierMatcher:fClass...

2019-05-19 17:23:09 354

转载 出现java.sql.SQLException: No suitable driver的几种解决办法

今天在用C3p0连接MySql数据库 这个时候出现了上面的错误,一般来说这种错误有3个方向解决 一般都是db的配置的问题 ,一定要小心DB 的配置八月 19, 2017 8:30:46 下午 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run警告: com.mchange.v2.resourcepool.BasicR...

2019-05-16 22:34:14 16360 2

原创 作为服务注册中心 Eureka比zookeeper好在哪?

Ps:CAP原则,只能满足其二, C:Consistency强一致性 A:Availability可用性 P:Partition tolerance 分区容错性一个分布式系统不可能同时满足CAP,由于分区容错性p是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。Eureka 遵守AP原则Zookeeper遵守CP原则Zoo...

2019-03-29 18:09:44 209

转载 SpringMVC-常见面试总结

1、什么是Spring MVC ?简单介绍下你对springMVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、SpringMVC的流程?(1)用户发送请...

2019-03-28 22:07:38 163

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除