自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 java获取resources下的文件流

@获取resource下的文件

2022-06-28 15:22:28 657 1

原创 jdk8 stream示例

jdk8 stream示例//跟据某个属性分组 Map<String, List<PersonData>> collect = list.stream().collect(Collectors.groupingBy(PersonData::getType)); System.out.println(collect); //根据某个属性分组,汇总某个属性 Map<String, Integer&g

2021-11-26 09:13:53 378

原创 mysql 批量更新(先查询再更新)

mysql 批量更新(先查询再更新) UPDATE boom_talent_channel tcINNER JOIN(SELECT talent_id,dict_category_key,dict_category_value from boom_talent) t ON tc.talent_id = t.talent_idSET tc.dict_category_key=t.dict_category_key,tc.dict_category_value=t.dict_category_value

2021-11-25 14:28:41 1627

原创 mysql-查询并插入

数据库-查询并插入简单INSERT INTO `base_company_delivery_address` (`create_time`, `create_user`, `update_time`, `update_user`, `is_valid`, `company_id`, `address_info`, `electric_fence_id`, `point_type`, `address_short`, `province`, `city`, `district`, `contact

2021-11-25 14:27:36 7984

原创 J.U.C-4.CAS机制

CAS机制CAS(Compare And Swap,即比较并交换),是解决多线程并行情况下使用锁造成性能损耗的一种机制。其原理是利用sun.misc.Unsafe.java 类通过JNI来调用硬件级别的原子操作来实现CAS(即CAS是借助C来调用CPU底层指令实现的)。CAS机制=比较并交换+乐观锁机制+锁自旋设计思想:如果内存位置 的值与 预期原值 相匹配,那么处理器会自动将该位置值更新为新值,否则处理器不做任何操作。ReentrantLock、ReentrantReadWriteLock 都是基

2021-11-11 16:53:33 387

原创 J.U.C-3.LockSupport

LockSupportLockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现。LockSupport 提供park()和unpark()方法实现阻塞线程和解除线程阻塞。LockSupport和每个使用它的线程都与一个许可(permit)关联。permit相当于1,0的开关,默认是0,调用一次unpark就加1变成1,调用一次park会消费permit, 也就是将1变成0,同时park立即返回。再次调用park会变成block(因为permi

2021-11-11 16:48:35 818

原创 J.U.C-2.Unsafe

UnsafeJava不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供以下功能:通过Unsafe类可以分配内存,可以释放内存类中提供的3个本地方法allocateMemory(申请)、reallocateMemory(扩展)、freeMemory(销毁)分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。可以定位对象某字段的内存位置,也可以修改对象的字段值,即使它是私有的字段的定位数组元素定位挂起与恢复将一个线程进行

2021-11-11 16:44:50 410

原创 J.U.C-1.并发特性

J.U.C并发特性JAVA里面进行多线程通信的主要方式就是 共享内存 的方式,共享内存主要的关注点有两个:可见性 和 有序性。加上复合操作的 原子性,可以认为JAVA的线程安全性问题主要关注点有3个(JAVA内存模型JMM解决了可见性和有序性的问题,而锁解决了原子性的问题):可见性、有序性、原子性原子性(Atomicity):在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败有序性(Ordering):程序执行的顺序按照代码的先后顺序执行(处理器可能会对指令进行重排序)可见性

2021-11-11 15:32:55 839

原创 StringUtils中isEmpty和isBlank区别

经常判空可能用到StringUtils,具体是用isEmpty还是isBlank经常不知所措。下面我带大家一起读一下源码。先看isEmpty:isEmpty/** * <p>Checks if a CharSequence is empty ("") or null.</p> * * <pre> * StringUtils.isEmpty(null) = true * StringUtils.isEmpty(

2021-11-04 14:37:28 213

原创 JAVA8之妙用Optional解决判断Null为空问题

背景在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示。在这种情况下,有如下代码user.getAddress().getProvince();这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法:if(user!=null){ Address address = user.getAddress();

2021-11-02 09:48:07 168

原创 Linux常用命令记录

Linux常用命令记录1.开放防火墙端口firewall-cmd --permanent --add-port=端口号/tcpfirewall-cmd --reload

2021-11-01 10:31:10 114 1

原创 git命令-8.Git常用命令

八、Git常用命令1.仓库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]2.配置# 显示当前的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.na

2021-10-29 17:04:15 94

原创 git命令-7.推送主分支

七、推送主分支1.合并特性分支既然你应该很熟悉 fetch、pull、push 了,现在我们要通过一个新的工作流来测试你的这些技能。在大型项目中开发人员通常会在(从 master 上分出来的)特性分支上工作,工作完成后只做一次集成。这跟前面课程的描述很相像(把 side 分支推送到远程仓库),不过本节我们会深入一些.但是有些开发人员只在 master 上做 push、pull —— 这样的话 master 总是最新的,始终与远程分支 (o/master) 保持一致。对于接下来这个工作流,我们集成了

2021-10-29 16:28:20 975

原创 Mybatis xml批量更新

想要批量更新,不想用for循环了,mapper:int batchUpdateCustomer(List<BaseCustomerCarrierVO> baseCustomerCarrierVO);xml:<update id="batchUpdateCustomer" parameterType="java.util.List"> update base_customer_carrier <trim prefix="set" suffixOverri

2021-10-29 15:58:35 1021

原创 git命令-6.远程操作

六、远程操作1.远程仓库远程仓库并不复杂, 在如今的云计算盛行的世界很容易把远程仓库想象成一个富有魔力的东西, 但实际上它们只是你的仓库在另个一台计算机上的拷贝。你可以通过因特网与这台计算机通信 —— 也就是增加或是获取提交记录话虽如此, 远程仓库却有一系列强大的特性首先也是最重要的的点, 远程仓库是一个强大的备份。本地仓库也有恢复文件到指定版本的能力, 但所有的信息都是保存在本地的。有了远程仓库以后,即使丢失了本地所有数据, 你仍可以通过远程仓库拿回你丢失的数据。还有就是, 远程让代码社交化了

2021-10-27 10:54:13 217

原创 git命令-5.高级话题

五、高级话题1.多分支 rebase哥们儿,我们准备了很多分支!咱们把这些分支 rebase 到 master 上吧。但是你的领导给你提了点要求 —— 他们希望得到有序的提交历史,也就是我们最终的结果应该是 C6' 在 C7' 上面, C5' 在 C6' 上面,依此类推。即使你搞砸了也没关系,用 reset 命令就可以重新开始了。记得看看我们提供的答案,看你能否使用更少的命令来完成任务!git rebase master bugFix;git rebase bugFix side;git r

2021-10-27 10:17:18 224

原创 git命令-4.杂项(技术、技巧与贴士大集合)

四、杂项(技术、技巧与贴士大集合)1.本地栈式提交来看一个在开发中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!最后就差把 bugFix 分支里的工作合并回 master 分支了。你可以选择通过 fast-forward 快速合并到 master 分支上,但这样的话 master 分支就会包含我这些调试语句了。你肯定

2021-10-25 16:18:15 352

原创 git命令-3.移动提交记录

三、移动提交记录1.整理提交记录到现在我们已经学习了 Git 的基础知识 —— 提交、分支以及在提交树上移动。 这些概念涵盖了 Git 90% 的功能,同样也足够满足开发者的日常需求然而, 剩余的 10% 在处理复杂的工作流时(或者当你陷入困惑时)可能就显得尤为重要了。接下来要讨论的这个话题是“整理提交记录” —— 开发人员有时会说“我想要把这个提交放到这里, 那个提交放到刚才那个提交的后面”, 而接下来就讲的就是它的实现方式,非常清晰、灵活,还很生动。看起来挺复杂, 其实是个很简单的概念。Git

2021-10-25 15:52:31 439

原创 git命令-2.高级教程

二、高级教程在接触 Git 更高级功能之前,我们有必要先学习在你项目的提交树上前后移动的几种方法。1.再提交书树上移动(1) HEAD我们首先看一下 “HEAD”。HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可

2021-10-21 09:16:34 504

原创 git命令-1.基础教程

git命令一、基础教程1.git commitGit 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因 —— 我们会在图示中用箭头来表示这种关系。对于项目组的成员来说,维

2021-10-19 16:49:44 183

原创 性能优化之Java多线程批量拆分List导入数据库

性能优化之Java多线程批量拆分List导入数据库| 前言前两天做了一个导入的功能,导入开始的时候非常慢,导入2w条数据要1分多钟,后来一点一点的优化,从直接把list怼进Mysql中,到分配把list导入Mysql中,到多线程把list导入Mysql中。时间是一点一点的变少了。非常的爽,最后变成了10s以内。下面就展示一下过程。| 直接把list怼进Mysql使用mybatis的批量导入操作:@Transactional(rollbackFor = Exception.class) pu

2021-10-09 09:56:36 294

原创 Java 泛型通配符 T,E,K,V,?

Java 泛型通配符 T,E,K,V,?前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错

2021-10-08 16:18:07 55

原创 arthas 常用命令图解

高清图下载地址:链接:https://pan.baidu.com/s/124o0T7ODpJ6ejygtae-TtA提取码:0jbx

2021-09-30 11:28:56 147

原创 异常处理分析

一、简介异常,也称为例外,是在程序运行过程中发生的、会打断程序正常执行的事件。把它置于代码层面来理解,即阻止了当前方法或作用域继续执行。在Java中,异常被当做对象来处理,其基类是Throwable。Throwable(所有error和exception的父类)1、errorError表示编译时和系统错误,表示系统在运行期间出现了严重的错误,属于不可恢复的错误,一般是环境的问题或者JVM的问题,并非程序的问题;因此这种错误会导致程序终止执行,应用程序是无法处理此类错误的。Error不在我们调试代码可

2021-09-30 10:34:22 435

原创 根据Type获取类名映射对象,并根据构造方法赋值

public <T extends Object> T errorReturn(Integer code, String message, Type type){ Class<?>[] classTypes = new Class[]{int.class, String.class}; Object[] params = new Object[]{code, message}; Class clazz = null; C

2021-09-27 20:00:23 141

原创 aop实现乐观锁结合redis

aop实现乐观锁结合redis欢迎使用Markdown编辑器业务处理后置加锁并发业务进入业务完成取消加锁切面实现,删除redis缓存公共util欢迎使用Markdown编辑器本项目需要对业务实现乐观锁,防止数据重复操作,结合redis实现。本文为代码实现,无其他说明,学习aop,redis,乐观锁请自行学习。业务处理后置加锁###自定义注解package com.e6yun.project.tms.revoke.annotation;import com.e6yun.project.tms.r

2021-09-24 17:03:52 130

原创 Java中的ThreadLocal详解

Java中的ThreadLocal详解一、ThreadLocal简介二、ThreadLocal简单使用三、ThreadLocal的实现原理四、ThreadLocal不支持继承性五、InheritableThreadLocal类六、从ThreadLocalMap看ThreadLocal使用不当的内存泄漏问题一、ThreadLocal简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安

2021-09-19 11:34:38 194

原创 Object转换为Map(实体对象转换成带下划线的map)

import com.google.common.base.CaseFormat;import com.google.common.base.Converter;private static Converter<String, String> converter = CaseFormat.LOWER_CAMEL.converterTo(CaseFormat.LOWER_UNDERSCORE);/*** Object转换为Map(实体对象转换成带下划线的map)* @param obj

2021-08-11 15:41:55 656

原创 The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

The server selected protocol version TLS10 is not accepted by client preferences [TLS12]连接sqlServer报错项目启动报错提示:The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”。 ClientConnectionId:8252e571-a2d0-467b-95d0-1bacf0ac33

2021-06-08 15:12:51 302

原创 SpringBoot 接口防刷,一个注解搞定

说明:使用了注解的方式进行对接口防刷的功能,非常高大上,本文章仅供参考一,技术要点:springboot的基本知识,redis基本操作,首先是写一个注解类:import java.lang.annotation.Retention;import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.Rete

2021-04-26 16:22:02 100

原创 Spring Boot 如何解决跨域问题

前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。问题背景:Same Origin Policy,译为“同源策略”。它是对于客户端脚本(尤其是JavaScript)的重要安全度量标准,其目的在于防止某个文档或者脚本从多个不同“origin”(源)装载。它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。

2021-04-26 16:17:33 93

原创 你不知道的python30中简易用法

学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则。本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也是 30 段代码,Python 开发者也可以看看是不是有没想到的用法。Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性。如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发。简单30 段代码,它们都是平常非常实用的技巧,我们只要花几分钟就能从头到尾浏览一遍。1. 重复元素判定以下方法可以检查给定列表

2021-02-22 11:06:40 208

原创 MySQL 将某个字段值的记录排在最后,其余记录单独排序

1.按 status 值 2 5 3 的顺序排序,值相同则按修改时间排序order by FIELD(status,2,5,3),a.ModifyTime desc2.将 status = 3 的记录排在最后,其余的记录按修改时间排序order by FIELD(status,3),a.ModifyTime desc3.将 status = 3 的记录排在最前面,其余的记录按修改时间排序order by FIELD(status,3) desc,a.Modify...

2020-12-09 10:35:28 2451

原创 java-PDF转图片

1、maven工程添加依赖<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --><dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</vers

2020-10-24 10:22:28 178

原创 springcloud -03 服务注册到Eureka注册中心

3.4.1 商品服务注册 (1) 商品模块中引入坐标 在 shop_service_product 的pom文件中添加eureka client的相关坐标 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> </depende...

2020-08-09 15:45:33 107

原创 springcloud -01 eureka搭建

3.3 搭建Eureka注册中心 3.3.1 搭建Eureka服务中心 (1) 创建shop_eureka_server子模块 在 shop_parent 下创建子模块 shop_eureka_server (2) 引入maven坐标<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netfl...

2020-08-09 15:42:06 78

原创 spring cloud -01 案例搭建(超级全)

使用微服务架构的分布式系统,微服务之间通过网络通信。我们通过服务提供者与服务消费者来描述微服 务间的调用关系。 服务提供者:服务的被调用方,提供调用接口的一方 服务消费者:服务的调用方,依赖于其他服务的一方 我们以电商系统中常见的用户下单为例,用户向订单微服务发起一个购买的请求。在进行保存订单之前 需要调用商品微服务查询当前商品库存,单价等信息。在这种场景下,订单微服务就是一个服务消费 者,商品微服务就是一个服务提供者 数据库表 用户表...

2020-08-09 15:36:57 218

原创 bootstraptable行合并

onLoadSuccess: function (data) { data = $('#categorySonTab').bootstrapTable('getData', true); //合并单元格 mergeCells(data, "name", 1, $('#categorySonTab')); mergeCells(data, "url", 1, $('#categorySonTab')); mergeCells(data, "cateWord", 1, .

2020-08-01 10:58:27 419

原创 json转bean,Date格式转化处理(fastJson)

业务:json转成实体类,实体中有Date格式,直接转换报错!!!报错:Exception in thread "main" com.alibaba.fastjson.JSONException: For input string: "2018/11/16 3:06:41"废话不多说,直接上!json串:{'id':'181116030522211648','sendtime':'2018/11/16 3:06:41'}实体字段:@JSONField(format = "y

2020-07-02 18:10:17 670

原创 在java中使用dom4j解析xml

话不多说,直接上xml文档:<?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <

2020-07-02 14:59:58 3408

空空如也

空空如也

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

TA关注的人

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