zlj1217的博客

慢慢加油

排序:
默认
按更新时间
按访问量

并发编程——ThreadLocal总结

概念介绍 ThreadLocal是早期jdk版本中就有的一个工具,基本原理是同一个ThreadLocal所包含的对象(对ThreadLocal而言即为String类型变量),在不同的Thread中有不同的副本(实际是不同的实例)。这里有几点需要注意: - 因为每个Thread内...

2018-08-17 16:58:50

阅读数:15

评论数:0

spring中根据Application获取BEAN的工具类

背景 在最近的开发工作中,用到了策略模式(之前也写过关于策略模式这个设计模式的学习,但是之前那个不是在spring框架中),这时候策略中的context或者factory就要去动态的根据调用的策略类型不同去拿到对应的bean对象,这里去了解了一个通过application context拿取b...

2018-08-12 22:33:10

阅读数:5

评论数:0

Java8中list转map方法总结

背景 在最近的工作开发之中,慢慢习惯了很多Java8中的Stream的用法,很方便而且也可以并行的去执行这个流,这边去写一下昨天遇到的一个list转map的场景。 list转map在Java8中stream的应用 常用方式 1.利用Collectors.toMap方法进行转...

2018-08-12 22:13:34

阅读数:6

评论数:0

并发编程——线程基础(一)

线程是Java学习过程中比较难理解的一part,所以要好好打下基础,之后也会对juc包等其他并发编知识去做一个具体的原理性的学习。 一些概念 一、并发与并行 并发:同一个时间间隔内做很多件事情;并行:同一个时刻同时做多件事情。 其实对于这句话可以这样理解:并发是两个任务可以在重叠的...

2018-08-04 15:01:58

阅读数:35

评论数:0

记一次orika bean转换的bug

背景 用orika对象转换工具去转换list的时候,发现只去完整转了list的第一条数据,但是后边的数据都没有将字段全部映射上去。 描述: 1.debug时发现的,源数据list是数据都存在的 2.转完之后的list数据,发现userName、realName等字段是丢失的。 ...

2018-08-01 21:56:20

阅读数:35

评论数:0

设计模式——策略模式的学习

策略模式 定义一系列的算法,把每一个算法封装起来,并且使它们可以相互替换。这个模式中使得各个算法可以独立于使用它的客户而变化。 策略模式的构成: 1.抽象策略角色:策略类,通常由一个接口或者抽象类实现。 2.具体策略角色:包装了相关的算法和行为,实现策略接口或继承抽象类。 3.环境角色:...

2018-07-27 00:50:56

阅读数:14

评论数:0

idea中maven配置及时拉取snapshot的更新

场景 提供dubbo服务依赖的服务打的是snapshot的包,这里提供依赖的服务重构了接口中的两个方法,所以又去deploy打了包,这里叫我去 reimport 拉下包去拉到他打包的更新 这个时候发现reimport之后却参数一直没发生变化。 问题所在及解决办法 这里发现是idea中的...

2018-07-25 21:16:52

阅读数:92

评论数:0

Java8新特性之——Optional

Optional是在Java8中提供的一个容器对象。其提供了一个Optional.empty容器来代替一些方法的返回值的null,并且也让api一看就知道返回值的对象要去判断容器中是否存在值。并且Optional类中包含了一些方法来处理值是否存在的状况,比如调用之后如果是空的可以返回一个统一的处理...

2018-07-10 21:10:48

阅读数:24

评论数:0

线程通讯之循环打印abc

循环打印abc有很多方法,这里去记录一种用条件变量condition去写的一种实现方法。package communication; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lo...

2018-07-10 11:01:46

阅读数:16

评论数:0

并发容器之CopyOnWriteArrayList

前言 Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrit...

2018-07-08 16:38:25

阅读数:13

评论数:0

数据库及缓存一致性分析

首先说明一个观点:如果对数据一致性要求很高的话就不要存放缓存了,因为只要涉及到数据库和缓存双写就会造成一致性的问题。最简单一个一致性保持方法就是依赖缓存的一个过期时间去击穿保证数据一致性,但是这会导致在缓存失效到缓存重新存入这段时间内数据库一个压力(因为缓存一个场景就是环境数据库的压力),这里介绍...

2018-07-06 18:10:17

阅读数:30

评论数:0

spring cache学习(一):spring cache注解简单了解

  最近了解到spring cache非常方便的对一些方法的结果值做了缓存,结合spring boot中的注解使用更加方便,这里去学习一下。在做分类视图可配置化时,发现组织架构的接口加了@cacheable注解,这里就去了解一下spring的cache支持。1.相关注解spring boot ca...

2018-07-05 15:46:03

阅读数:42

评论数:0

mockito框架简单学习

mock框架有很多,这里去学习了mockito框架在日常开发中的使用以及一些使用注意事项简单使用1.stub打桩测试,通过触发定义好的stub描述条件,返回需要我们的行为2.spy 和 mock的区别 1.mock是针对类或接口,生成对应的代理对象。 如下述List接口 2.sp...

2018-07-03 16:47:27

阅读数:17

评论数:0

redis做自旋锁及相关测试

redis的setNx命令可以获取redis中的锁,这里见到了一种自旋锁的写法。redis可以去做分布式锁,但要注意锁的粒度,和最后删除时网络抖动的影响。其中封装自旋锁的好处:可以在一个线程中重试的去获取锁,减少线程上下文切换带来的性能消耗,但要注意自旋锁重试次数的合理设置,过大会造成cpu占用率...

2018-07-03 16:42:59

阅读数:39

评论数:0

@PostConstruct注解

简介 @PostConstruct注解和@PreDestroy是两个作用于Servlet生命周期的方法注解,实现Bean初始化之前和销毁之前的自定义操作。 应用场景 @PostConstruct 主要用来容器初始化之前去初始化一些缓存或者配置等。 执行顺序及注意事项 一、执行顺序 @P...

2018-06-29 10:12:51

阅读数:22

评论数:0

mybatis中一个小技巧

在业务中经常需要进行分页查询和排序查询。在mybatis的配置文件中每次都去写limit和order by条件会比较麻烦,这里遇到一种把这两个条件写在一个BaseMapper.xml中,然后在其他的mapper文件中进行引入这个条件,这样既能省去很多条件sql,也可以统一规范传入dao层分页参数和...

2018-06-13 16:00:27

阅读数:34

评论数:0

校招面试总结(一)

校招过程中的面试总结: 先写了这几个 之后会把美团、头条、滴滴和一些小公司的面经在第二个总结补充一下A.阿里(菜鸟)二面GG一面:40分钟1.简单自我介绍2.Java的面向对象怎么理解3.简历上有写MATLAB 怎么去用的 数学建模吗?4.集合类 hashMap源码 发生hash碰撞怎么办 1.8...

2018-04-15 17:34:56

阅读数:101

评论数:0

redis 锁的一个小坑纪念一下

之前在工作的过程中做了很多锁的校验,有做并发锁校验,也有做分布式系统订单状态校验的锁,但是这次造成线上bug的代码是因为自己一个很小的失误,这次纪念一下。这次是在解决批量去操作的时候,去将要批量操作的数据去锁住,防止并发操作(分布式系统交互要注意这种并发和幂等的操作)。这里在循环中去加了redis...

2018-02-08 15:30:40

阅读数:68

评论数:0

java.rmi.server.ExportExcepetion:Port already in use问题解决

在灰度环境的一个工程启动的时候报错经过排查 是因为在同一个服务器上 端口40040被占用了。这里从报错很容易看出是端口占用,但是排查一堆文件下面的时候 发现是jmx的端口占用。修改jmx端口号的是在{tomcat路径}/bin/catalina.sh脚本下去修改的。纪念一下参考的资料:http:/...

2018-02-08 15:06:23

阅读数:69

评论数:0

最近了解到的知识点

近期更新博客比较少了 因为工作比较忙了吧。 这里记录一下最近了解到的知识点: 1.navicat 工具 在执行insert的时候 会为tinyint类型的 not null的字段自动插一个0  而在代码运行过程中是不会去自动补0的。这个时候就会报错(表设计为not null 但是插入的为...

2017-12-21 17:33:02

阅读数:66

评论数:1

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