自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 被裁了(9年)

23年底是血腥的,裁了一大批,几乎对半砍的,前端那是一半以上。其实是一件好事,因为这个年纪也不是很大(32岁),但是市场行情已经发生了翻天覆地的变化(找工作没有那么容易)。天天只顾干活的我,不清楚是怎么回事,18年底有同事陆陆续续的离职,而且都是资历还可以的。19年初,做了大批裁员,而我却做了一次大幅提薪(好开心啊)。加上20年初,疫情四起,公司又做了大量裁员,那波裁员是很凄惨的,没有什么补偿。望眼看去,我那起初的战友,都不在了。那年(2015年)我刚毕业有一年多(20出头),阴差阳错来到了现在的单位。

2024-07-03 19:55:35 11493 24

原创 putIfAbsent、computeIfAbsent、computeIfPresent

集合基础

2023-12-14 15:24:37 214

原创 流程引擎camunda

camunda起步

2023-02-01 15:53:25 2928 1

原创 开源流程引擎activiti、flowable、camunda选哪个好?

流程引擎选择

2023-02-01 14:47:33 7469 1

原创 N+1终于等到了 但却放弃了

花开花落,四季知晓

2023-01-17 09:35:12 4652 6

原创 DML、DDL、DCL、CRUD指什么?

基础反应基本功。基本功反应专业。

2022-07-15 11:23:54 583

原创 程序人生(交流、沟通)

程序员在圈子里有很多标签,从衣着上:双肩包、格子衫从生涯上:钱多命短从人际交往上:闷骚.......很多程序员沟通都存在严重的障碍,可以搞定千千万万bug,攻克各种技术难题,但遗憾在沟通交流上。想必大家也听到过,产品跟开发打起来了,开发跟测试撕起来了,某某连个女友都找不到等。我也是个程序员,清晰的认识到自己也存在沟通交流问题,就针对性去学习,今天刚好有同事找,就运用了下,如下是两个人的对话:A:上次给你说的负责CR的事情 要不你再考虑下?挑战下自己,而且你也对CR比较感兴趣,多好。[

2022-04-25 17:31:09 414 3

原创 MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?

count 是一个函数,用来统计数据,但是 count 函数传入的参数有很多种,比如 count(1)、count(*)、count(字段) 等,哪个性能最好呢?是不是count(*)就是性能最差呢?先说个结果吧:count(*)=count(1)>count(主键)>count(name)下面我们来按照通常的 innodb 存储引擎说明。这条语句是统计「 t_order 表中,name 字段不为 NULL 的记录」有多少个。也就是说,如果某一条记录中的 name 字段的值为

2022-04-20 11:38:42 4885

原创 consul服务注册与发现机制

最近,网关服务让下游服务接入consol,为了解决网关转发下游服务,下游服务刚好有节点不可用,转发到不可用的节点上报错。针对分布式多节点,上面的问题长会发生,就引入了注册中心。...

2022-03-30 17:26:27 1282

原创 secureCRT连接sftp

今天要从对方的sftp服务器上下载文件,这边想看一下对方的文件目录,如何连接登录上去呢: sftp userName@host紧接着就需要输入密码,输入之后便连接上去了。便可以通过一些简单的命令查看.上传本地文件到sftp服务器: put 本地路径 服务器路径下载服务器资源到本地:get 服务器地址 本地地址...

2022-03-24 11:16:33 1696

原创 Apollo获取value的方式

1、@value标签@Value("${key}")//这个还可以做一些转化,@AplloJsonValue()//若value是一个json格式,可直接转化成json @ApolloJsonValue("${app.name.majiabao.list}") private List<String> mjbList;2、通过Config方式直接获取Config config = ConfigService.getConfig(namepace);//这里也可

2022-03-14 20:30:24 4850

原创 接口可以有实现方法吗?

接口之所以成为接口,就在于它没有实现,只是声明。但后来一切都变了,Java 里出现了默认方法,C# 也出现了默认方法。接口已经不像传统意义上的接口,其概念开始向抽象类靠近,一个纯抽象的东西,突然出现了实体,于是开始傻傻分不清了。世界已经变了,可他是怎么开始改变的呢?在jdk8之前,接口里的方法都是定义的方法,没有方法体。需要实现类去实现。那在JDK8,就出现了默认方法,就是接口里面方法,有方法体,只需要在方法上增加个default,如下:方法的实现类里面,可以override也可以不,但

2022-03-10 15:02:14 4161

原创 influxDB查看数据库表

安装(待续)基本概念(待续)基本操作命令1、连接数据库,找到对应的目录,到usr/bin下,执行./influx[shuyao@shuyao-test-001 bin]$ pwd/mnt/dat1/soft/influxdb-1.8.4-1/usr/bin[shuyao@shuyao-test-001 bin]$ lsinflux influxd influx_inspect influx_stress influx_tsm log nohup.out[shuyao@

2022-03-09 11:12:12 14034

原创 redis批量删除key

首先要先连接上redis,如下命令:redis-cli -hhost-p portauth password连接上我们可以查看:keys *关键字*. del批量删除:flushdb 删除当前数据库中的所有Keyflushall 删除所有数据库中的所有的key2、使用linux中的xargs来删除所有的keyredis-cli keys "*" | xargs redis-cli del3、删除包含有某些关键字的keyredis-cli keys "xxx*" |..

2022-03-09 10:01:38 654

原创 接口设计需要考虑哪些方面

去设计接口,我们如何考虑呢?很多程序员是拿到一个项目,看别人怎么写,自己就怎么写,入乡随土嘛;那如何去设计一个优雅的接口,需要考虑哪些,下面我做了下总结。接口设计原则:1、必须符合Restful,统一返回格式,约定业务层错误编码,每个编码可以携带可选的错误信息。2、命名必须规范优雅,圈内都是按照阿里开发规范来的。3、单一职责,接口功能明确单一,不是为了省事,各种融于;比如登录接口,就是登录校验。很多程序员为了省事,把用户信息都一并还回,这是不可取的。4、可扩展性。似乎感觉跟单一职责相反,

2022-03-07 21:02:19 1721

原创 谈谈final、finally、finalize

这三个从长相上看似相似,其实差别很大。下面一一介绍:final是一个修饰符,可以修饰类、变量、方法,分别表示的含义是不同的。1、final修饰类,表示该类是不能被继承的。2、final修饰变量,表示该变量是不能被修改的。3、final修饰的方法,表示该方法不能被重写(override)finally则是Java保证重要代码一定被执行的一种机制,通常try-finally或者try-catch-finally。一般使用场景:锁的释放、流的关闭、连接池释放。finalize是java对象

2022-03-04 19:33:52 533

原创 Spring事务失效场景

1、Spring事务最终依赖的数据库的事务,如果用的是mysql的话,执行引擎要是innodb;因为只有innoDB 支持事务。2、Spring的事务是原理是aop,所以加事务所在bean是要Spring容器管理的;自己new出来的对象肯定是不行的。3、Spring事务标签@Transactional必须注解在public方法上。private、protected、default以及finally修饰的方法或者类,以及静态方法,事物都会失效的。...

2022-02-25 10:57:46 3132 3

原创 Spring bean是线程安全的吗?

当提到SpringBean是线程安全的吗?其实意思是bean里面的定义的变量是线程安全的,单独的一个bean是没有什么安全不安全的概念的。其实可以回答是安全,也可以回答是不安全的。下面来看一下Spring注解属性:Scope@Scope("prototype")表示每次获得bean的时候都会创建一个新的对象@Scope("singleton")表示Spring容器里面的单例,通过Spring容器去获取的时候每次总是同一个实例。那这就很明显了,用@Scope("prototype"

2022-02-23 18:00:07 5746 2

原创 static代码块什么时候被执行?

首先看下面的例子,定义一个类,里面包含静态变量、静态方法、静态代码块,如下:public class Helper { public static String HELP = "help"; public static void initHelper(){ System.out.println("helper init....."); } static { System.out.println("static started.....

2022-02-10 11:04:17 7519 1

原创 垃圾回收算法(标记算法)

标记算法分类:标记-清除标记-复制标记-整理

2022-01-26 10:02:59 305

原创 dubbo同步异步调用

通常我们通过dubbo调用服务接口,等待提供方处理完响应结果,这是同步调用;也是默认的调用方式。通过查看原吗DubboInvoker可以看到:整体来说有三种方式:1、是否关注结果,return=true关注,默认也是关注的;return=false是不关注结果2、同步,可以通过参数配置:async="false"3、异步,可以通过参数配置:async="true"通过源码以查看便很清晰。...

2022-01-19 17:48:16 1040

原创 dubbo负载均衡算法

dubbo的负载均衡算法有4种:随机(RandomLoadBalance)随机算法里面还包含设置的权重,假如有四个节点:A、B、C;如果权重一样,则随机选择一个即可: // 如果权重相同或权重为0则均等随机 return invokers.get(random.nextInt(length));如果设置了权重:A(20%)、B(30%)、C(50%)A,权重weight=2 B,权重weight=3 C,权重weight=5这些服务器totalWeight = AWeigh

2022-01-19 17:25:27 996

原创 mysql复合索引

1、首先synchronied是一个修饰符,而ReentrantLock是一个类。2、synchronied加锁释放锁是jvm自动的,而ReentrantLock是要主动lock,unlock,容易死锁,所以在使用的地方在finally里面做unlock。3、synchronied是非公平锁,多个线程自旋等待拿到锁。ReentrantLock可是公平也可以是非公平,可以通过创建的时候设置参数参考文章:Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)_zx

2022-01-18 17:21:12 5227

原创 mysql事务特性ACID、事物隔离级别

mysql事务特性如下:1、原子性(类似一个原子,是一个整体,要么成功,要么失败)2、一致性(比如a->b转钱,a少钱了,b加钱了,不会b没有加钱成功)3、隔离性(同一时间,只允许同一个事物请求同一数据。比如a账户的钱不可能同时有加有减)4、持久性(事物完成后就保存在数据库里了,不能再回滚了)事务并发下的问题:1、脏读(事物还没有提交,数据就被另外一个事物读到了)2、不可重复读(事物A多次读同一数据,事物B对这一数据进行了修改,事物A多次读取的结果不不同)3、幻读(事物

2022-01-13 17:19:07 341

原创 查看CPU过高

1、首先登陆到服务器上2、top查看cpu占用比例(top -H -p pid,抛开root账号下的)3、找到了占用比例高的进程pid,ps -ef | grep pid,便知道对应是哪个应用。4、可以利用现有的工具arthas-boot.jar,进入进程里面java -jar arthas-boot.jar pid5、attach进入之后,thread命令,可以查看是哪个线程占用比例高然后针对线程到代码里分析。必要时可以dump下内存文件,用mat打开分析。.

2022-01-09 14:53:24 522

原创 synchronied与ReentrantLock区别

1、首先synchronied是一个修饰符,而ReentrantLock是一个类。2、synchronied加锁释放锁是jvm自动的,而ReentrantLock是要主动lock,unlock,容易死锁,所以在使用的地方在finally里面做unlock。3、synchronied是非公平锁,多个线程自旋等待拿到锁。ReentrantLock可是公平也可以是非公平,可以通过创建的时候设置参数...

2022-01-06 16:47:07 279

原创 docker进入一个容器

命令:docker ps -a 找出容器ID下面进入容器,这边会讲两种方式:1、docker attach <container-id>2、docker exec -it <container-id> bash那这两种方式有什么区别吗?docker exec 这个会在容器内新起一个进程,docker attach会把标准输出输入连接到容器的PID内,如果有两个终端连接容器,是同时连接在一个tty上。attach连接到容器上,当终端关闭退出来的时候,容器也会被关

2022-01-06 10:57:54 1008

原创 sublime 列模式 列编辑

之前在win下使用的是notepat++,现在使用Mac,Mac上没有可用的notepat版本,只能去使用sublime,那如何列编辑呢,比如我在一串ID 后面加上逗号,如下:按住option不放,同时按下触摸屏也不要放,滑动触摸屏即可。这个操作有点难,那就左手按住option和屏幕,右手滑动即可。看下图效果...

2021-12-28 14:05:47 1451

原创 com.google.common.cache.Cache.LoadingCache本地缓存还回null报错

com.google.common.cache.Cache.LoadingCache如下定义一个缓存变量:protected LoadingCache<String,UserIdVo> studentCache2 //CacheBuilder的构造函数是私有的,只能通过其静态方法newBuilder()来获得CacheBuilder的实例 = CacheBuilder.newBuilder() //设置并发级别为8,并发级别是指可以同时写缓存的线程数 .conc

2021-12-27 20:10:19 3318

原创 java Integer -128-127

Integer aa = -128; Integer bb = -128; System.out.println(aa==bb);//true Long aal = 127l; Long bbl = 127l; System.out.println(aal==bbl);//true Double aad = 127d; Double bbd = 127d; S...

2021-12-03 11:14:59 322

原创 java的传值与传址

java基础_细节决定成败

2021-12-02 16:49:09 860

原创 java四种引用方式

1、强引用,在引用中,即使oom,也不会被gc2、软引用,内存不够时会被gc,内存够不会被gc掉3、弱引用,无论内存是否充足,都会被gc掉,再次get到的为null4、虚引用,不影响对象的生命周期,任何时候都有可能会垃圾回收掉详细学习:Java的四种引用方式 - 空谷幽澜 - 博客园...

2021-11-30 15:30:01 167

原创 String、StringBuffer、StringBuild

String:是连续的内存空间,每天连接都需要重新new对象,很好堆内存。StringBuffer:是动态变化的,内存空间不连续,而且是线程安全的。append方法里同步的修饰StringBuild:是动态变化的,内存空间也是不连续的,但是是线程不安全的,append方法没有同步修饰。StringBuffer、StringBuild初始大小=初始值长度+16 public StringBuilder(String str) { super(str.length() + 16

2021-11-25 20:18:23 226

原创 CompletableFuture异步处理业务

持续学习、持续更新中...

2021-11-18 20:02:20 549

原创 synchronized底层锁概念

偏向锁:第一次来,偏向你,就给你自旋锁:有人在厕所里,我在外面等着,while了10次,占用着cpu;升级成重量级锁重量级锁:向操作系统申请资源。对象头里面的markword锁只能升级,不能降级以上是synchronized的底层原理...

2021-09-02 20:35:19 137

原创 定时任务每隔10分钟

0 */10 * * * 0 0/10 * * * 区别:第一个表示服务启动后每10分钟执行一次;第二个表示服务启动后

2021-06-16 19:35:43 25629 2

原创 字符串用||分割

字符串用||分割,String.split("|"); 发现根本不好用,这是为什么呢?因为被转义了。那该怎么办呢?可以使用String aa = "aa|bb|cc";String[] aaArr = aa.split("\\|");String.split(Pattern.quote("|"));

2021-05-17 19:56:03 474

原创 volatile修饰符

volatile修饰的变量,它是线程可见的,啥意思呢;也就是当多个线程共享一个变量,其中一个变量把值更改后,其他线程立马能够接收到变化后的值。看一下整体模型,每个线程是把主内存的变量读取到自己的工作内存里,工执行引擎使用,如下图。看一下我写的一个测试类,启动两个线程,输出变量。ThreadA把变量更改了,TheadB里面就知道了;这里就有一个疑问,不是各自执行自己工作内存中的副本嘛,怎么就A改了,B立马就知道了,难道是A通知了B?慢慢来,我慢慢道来。如下图,看一下java线程内存模型。.

2021-04-09 14:30:31 156

原创 jdk动态代理

jdk动态代理,也是代理模式的体现,同时就是java面向切面思想的一种实现。打个比方,玩王者荣耀,突然有事挂机,系统在默默的代替我在玩,这就是代理的思想。这里看一下SystemPlayerImpl是怎么实现的.写个测试类测一下:但这会发现一个问题,如果类比较多,那代理也就比较多,这也就是普通的代理。现在来看一下jdk动态代理是怎么实现的。看一下DProxy的实现,主要是实现jdk的InvocationHandler客户端实现,可以代理PlayerImpl,也可以代理P

2021-04-07 18:21:54 59

原创 java反射,执行任意类任意方法

需求:写一个执行任意类任意方法步骤:1、读取配置文件2、解析配置文件内容3、生成字节码Class4、创建对象与方法5、执行方法如下图:首先获取类加载器,获取资源流。

2021-04-03 22:38:43 251

nginx配置,不同的转发,静态资源加载

nginx转发,不同的端口号,不同的映射,以及静态资源的加载

2018-06-03

空空如也

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

TA关注的人

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