10 快乐崇拜234

尚未进行身份认证

我要认证

学习笔记

等级
TA的排名 3k+

CreateProcess error=206, 文件名或扩展名太长

欢迎关注本人公众号近期接手一个老项目,启动报错:CreateProcess error=206, 文件名或扩展名太长这是因为Windows命令行支持的字符串长度有限制。Linux不会有这个问题。如果你是使用的gradle的bootrun方式启动,那么可以参考gradle官方文档 来解决这个问题,引入插件。方式一:Using the plugins DSLplugins { id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"}方式二:

2020-07-20 21:12:49

(一)分布式事务框架seata1.3 AT及XA模式实例演示

欢迎关注本人公众号概述Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。本文先将官方实例跑起来,看看运行效果,值后在对其原理和源码进行分析。下载源码进入seata的GitHub主页,下载seata和seata-samples两个项目。下载下来后可以用idea打开。下载完成后,idea导入seata-samples文件夹下的seata-xa和seata

2020-07-06 14:28:19

mysql8.0.20安装教程

欢迎关注本人公众号mysql8 的安装先比较之前的版本复杂了一些,下面就一步一步安装。下载到 mysql官网 下载最新版本的mysql下载完成后解压,并新建my.ini文件my.ini 文件配置my.ini文件内容:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=C:\Program Files\mysql-8.0.20-winx64# 设置mysql数据库的数据的存放目录datadir=C:\Program Files\my

2020-07-03 16:26:59

docker/k8s(1):docker安装使用

依赖docker使用安装docker使用yum安装最新版本dockeryum install docker查看docker版本[root@localhost ~]# docker versionClient: Version: 1.13.1 API version: 1.26 Package version: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the do

2020-07-01 17:46:55

transmittable-thread-local:解决线程池之间ThreadLocal本地变量传递的问题

欢迎关注本人公众号概述当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值 一文中介绍了InheritableThreadLocal的问题:主线程变量修改后,子线程无法取到的问题。阿里开源的transmittable-thread-local解决了这个问题。transmittable-thread-local介绍git地址:transmittable-thread-local需求场景在ThreadLocal的需求场景即是TTL的潜在需求场景,如

2020-06-30 21:26:28

当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值

欢迎关注本人公众号之前已经介绍,InheritableThreadLocal可以在子线程创建的时候,将父线程的本地变量拷贝到子线程中。那么问题就来了,是只有在创建的时候才拷贝,只拷贝一次,然后就放到线程中的inheritableThreadLocals属性缓存起来。由于使用了线程池,该线程可能会存活很久甚至一直存活,那么inheritableThreadLocals属性将不会看到父线程的本地变量的变化public class InheritableThreadLocalTest1 { pub

2020-06-30 20:39:23

InheritableThreadLocal:子线程继承父线程的本地变量

欢迎关注本人公众号概述ThreadLocal可以保存一些变量仅供当前线程使用,其他线程不可见。实际工作中可能会由于任务复杂,父线程创建几个子线程并发致性任务,那么父线程的本地变量如何传递到子线程呢? 答案是使用InheritableThreadLocal。代码实例public static ThreadLocal<Integer> threadLocal = new InheritableThreadLocal<>(); public static void m

2020-06-30 20:15:48

ThreadLocal 内存泄漏 代码演示 实例演示

欢迎关注本人公众号阅读本文前请先阅读: ThreadLocal内存泄露原因分析不使用ThreadLocal下面这段程序创建了一个有5个线程的线程池。每个线程致性都申请5M大小的堆空间。public class MyThreadLocalOOM1 { public static final Integer SIZE = 500; static ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, 5

2020-06-30 19:47:29

ThreadLocal内存泄露原因分析

欢迎关注本人公众号背景知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内存溢出异常之前,

2020-06-30 17:59:49

google aviator:轻量级Java公式引擎

文章目录常用的方法官方文档简介包依赖使用手册执行表达式使用变量exec 方法调用函数自定义函数编译表达式访问数组和集合三元操作符正则表达式匹配变量的语法糖nil 对象日期比较大数计算和精度字面量表示运算类型转换和提升decimal 的计算精度强大的 seq 库两种运行模式调试信息语法手册数据类型操作符算术运算符逻辑运算符关系运算符位运算符匹配运算符三元运算符内置函数常用的方法@Test public void playAviator(){ String string = AviatorEvalua

2020-06-30 15:44:14

如何让发布丝般顺滑

欢迎关注本人公众号文章目录欢迎关注本人公众号前言概述环境说明前言笔者在过去几年的工作中, 曾负责管理过多个项目,最高也负责过几百万日活的项目,十几人的研发团队,在工作中也总结了一些项目管理经验,参与制定了一些规范,提升团队的整体效率,保障服务的高可用。接下来笔者会将过去的一些经验进行总结,输出文档。管理相关的大多是软技能,每个人心中都有一套自己衡量标准;而且不同团队的做事风格,人员水平,组织架构,技术架构等都不同,所以笔者的经验也许并不适用于正在阅读文章的您;如果读者有认为不妥之处,欢迎留言交流。

2020-06-11 21:32:21

java自定义类加载器并观察类卸载过程

欢迎关注本人公众号文章目录欢迎关注本人公众号概述代码实现概述之前我写了篇博客: java自定义类加载器实现类隔离 ,里面介绍了如何自定义类加载器实现了类隔离。通常情况下,在JSP,OSGI及其他一些支持热替换的库,都是需要进行类的卸载回收的,否则类在替换后,老的类就没用了但是还在内存中,就会造成内存泄漏。我们知道类的卸载需要满足以下三个条件:该类所有的实例都已经被GC,也就是JVM中不存在该Class的任何实例。加载该类的ClassLoader已经被GC。该类的java.lang.Cl

2020-06-11 19:49:45

spring boot 全局统一日志打印

欢迎关注本人公众号概述本文以使用spring boot或者springmvc为例。微服务之间调用,或者controller接收请求时,为了方便排查问题,通常会将入参与出参(返回值)打印出来。为了简化代码,这里使用AOP统一处理日志的打印。由于比较简单,废话不多说,直接上代码:@Aspect@Component@Slf4jpublic class LogAspect { @Pointcut("execution(public * com.example.controller..*

2020-06-05 16:52:16

不要以为你用了BigDecimal后,计算结果就一定精确了

欢迎关注本人公众号异常再现大家应该都已经知道,涉及到金钱的计算应该使用BigDecimal,没有使用BigDecimal的已经被开除。但是使用了BigDecimal后计算结果就一定是精确的吗?未必。看下面测试BigDecimal a = new BigDecimal(1.01); BigDecimal b = new BigDecimal(2.02); BigDecimal c = new BigDecimal("1.01"); BigDecim

2020-05-26 17:52:21

spring boot 2.1学习笔记【十九】使用spring validation实现全局参数校验

概述本文介绍在Spring Boot中实现对controller请求的数据进行全局校验。JSR303/JSR-349: JSR303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,位于javax.validation.constraints包下。JSR-349是其的升级版本,添加了一些新特性。hibernate validation:hibernate validation是对这个规范的实现,并增加了一些其他校验注解,如@Email,@

2020-05-09 10:53:56

rabbitmq 事务消息

文章目录AMQP 事务消息confirm 事务消息生产者纯异步操作rabbitmq支持两种模式的事务消息:AMQPconfirmAMQP 事务消息代码比较简单,开启事务txSelect,提交txCommit,回滚txRollback。实例:生产者public class Send { private final static String QUEUE_NAME = ...

2020-02-21 16:08:59

rabbitmq消息可靠性之消息应答与持久化

文章目录消息应答ack持久化消息应答ack前面介绍了rabbitmq有两种ack模式自动ack:消息从rabbitmq队列中发送给消费者则从队列内存中删除该消息。此时如果消费者宕机等原因未来得及消费完消息,则该消息丢失。手动ack:消费者在去确定消费完消息以后再ack,rabbitmq服务器收到ack后才会从内存队列中删除消息,如此一来,可以保证消息在消费者和队列这个环节不丢失。注意一点...

2020-02-19 22:06:43

rabbitmq 7种队列实现java版

文章目录搭建maven项目引入依赖创建连接简单队列消息生产者消息消费者搭建maven项目引入依赖<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.8.0</...

2020-02-19 21:02:59

rabbitmq用户及vhost配置

文章目录用户添加用户配置virtual hosts授权用户访问vhost用户上一节我们是通过guest用户登录的,但是实际工作中肯定不能以该账户使用,通常是会设置多个账户供不同的业务方使用。下图中可以看到guest是administrator权限。添加用户我这里作为演示,添加一个admin用户,tags选的是admin(直接点击下面的几个选项即可)。添加完成后:可以看到virt...

2020-02-19 20:12:20

windows10安装rabbitmq

文章目录安装Erlang安装rabbitmq安装Erlang由于rabbitMQ是Erlang语言编写的,所以要先安装Erlang语言环境,与安装java类似。rabbitmq官网安装教程:https://www.rabbitmq.com/install-windows.html。官网已经告诉我们如何安装了。进入erlang下载页面:https://www.erlang.org/down...

2020-02-19 19:32:28

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。