自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我们的征途是星辰大海

我的GitChat : https://gitbook.cn/gitchat/author/5aa87360f09ada6c2d5d0533

  • 博客(673)
  • 资源 (1)
  • 问答 (6)
  • 收藏
  • 关注

原创 记忆宫殿——总结

前两天在看美剧《汉尼拔》,其中有这么一个情节,Will被关在精神病医院的监狱里面,看守问will : Do you want to read a book? Will回答: No,I have my imagination.这让我又想起了之前几年前,在学习记忆方法的时候,参考过的一种叫做记忆宫殿的方法。在这里先插入几句话,学习其实也是一门科学,涉及到的内容,我目前接触过的有(主次先后,按照个...

2018-11-19 22:51:29 1948 2

原创 Java并发编程的艺术——原子操作的实现原理

原子操作的定义atomic,表面上,指的是不能进一步分割的最小粒子。借鉴我们在数据库中学的事务的概念,atomic operation,意为——不可被中断的一个或者一系列操作。处理器如何实现原子操作使用总线锁保证原子性如果多个处理器同时对共享变量进行读改写操作,例如,i++操作,那么共享变量会被多个处理器同时操作,这样读改写操作就不是原子的了。例如,cpu1将共享变量i=1读到自己的缓存,...

2018-11-10 22:23:20 811

原创 Java并发编程的艺术——volatile和synchronized实现原理

volatilevolatile变量修饰的共享变量进行写操作时候,会都出lock前缀指令。lock前缀指令在多核处理器下会引发一下两件事情:将当前处理器缓存行的数据协会到系统内存。这个写回内存的操作会是在其他CPU里缓存了改内存地址的数据无效。总结下volatile的两条实现原则:Lock前缀指令会引起处理器缓存会写到内存。一个处理器的缓存回写到内存会导致其他处理器的缓存无效。...

2018-11-10 21:14:27 299

转载 Java的对象头和对象组成详解

Java的对象头和对象组成详解

2018-11-09 14:17:56 491

原创 Java -- 读写锁

对于读多写少的场景,我们此时应该允许读锁的多次重入,提高读操作的并发性,在这种情况下,我们将读写锁分离。 /** * 线程安全的local cache demo */ class LocalCache { private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); ...

2018-10-31 22:33:15 826

原创 ReentrantLock——公平锁与非公平锁对比

/** * 公平锁非公平锁 */ @Test public void FairLockAndNotFairLockTest() throws Exception { ReentrantLock2 fairLock = new ReentrantLock2(true); ReentrantLock2 unFairLock = ne...

2018-10-31 18:13:15 466

原创 AtomicReference

类似于AtomicLong等原子类一样,为了保证引用对象的原子性,可以采用AtomicReference。private Person person = new Person("lhc", 12); private AtomicReference<Person> personReference = new AtomicReference<>(person);...

2018-10-31 15:59:20 954

原创 为资源类编写 use {@code try}-with-resources constructions

@Test public void cloneTest() { /**use {@code try}-with-resources constructions**/ try(ObjAutoCloneable lock =new ObjAutoCloneable()){ //放置 }catch (Exception...

2018-10-31 15:58:30 320

原创 Spring源码解析--核心容器类简介

AliasRegistry:映射别名的超级接口;BeanDefinitionRegistry :通常用于保存bean 定义描述(BeanDefinition类型)信息, 例如,RootBeanDefinition 和 ChildBeanDefinition 类 的实例;通常由通过集成AbstractBeanDefinition,由bean工厂去实现接口中的方法;这是sprin...

2018-10-17 22:31:30 360

原创 why Mongo

占位4

2018-07-31 16:55:30 275 1

原创 MongoDB——分页排序聚合操作

占位3

2018-07-31 16:55:13 1637 1

原创 MongoDB 条件查询--比较操作

占位2

2018-07-31 16:54:51 559

原创 MongoDB基本命令

占位1

2018-07-31 16:54:17 315

原创 bluebird——Promise.join

今天需要一个这样的操作,两个异步操作,不知道哪个异步操作先完成,并且这两个异步操作没有关联关系,需要的是两个异步操作都完成之后,才能进行后面的一个动作。js实现。 最开始考虑的思路是,写个for循环,里面settimeout实现个类似后端语言中sleep的操作,但是感觉性能不好,放弃了。然后又仔细看了下ES6-9,发现没有提供我想要的这种东西。仔细寻找,发现有人提到es6的Promise的方法可...

2018-06-28 23:17:38 1046

原创 es6——async&await去除回调嵌套

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script><script type="text/javascript">async function ajax(url) { return new Promise(function (resolve, reject) { ...

2018-06-28 17:01:31 1148

原创 Redis——实现乐观锁

核心代码: try { Thread.sleep((int)Math.random()*5000); } catch (InterruptedException e) { e.printStackTrace(); } while (true){ ...

2018-06-27 22:42:54 1950

原创 Redis——实现悲观锁

抽象类:/** * \* Created: liuhuichao * \* Date: 2018/6/5 * \* Time: 上午10:35 * \* Description: redis 锁抽象类 * \ */public abstract class AbstractLock implements Lock{ protected volatile boolea...

2018-06-27 22:35:48 2301 1

原创 Java——线程组的两种常见用法

/** * \* Created: liuhuichao * \* Date: 2018/6/4 * \* Time: 下午4:01 * \* Description: thread group 常用 * \ */public class ThreadGroupTest { /** * 复制线程组 * @throws Exception */...

2018-06-27 22:32:40 571

原创 Canvans绘图问题集锦

小屏幕手机canvans大小超出屏幕大小前几天产品反馈说手机上canvans绘制海报时候,在5s上,绘制不全。当时根据海报背景图大小判断,海报大小超出了屏幕,canvans只绘制了屏幕可见部分,确实是刚踩过这个坑。不过canvans在绘图时候,可以进行图片缩放,之后再绘图,就ok了。...

2018-06-27 22:29:24 2038 138

原创 canvans——合并图片

var resultImg=new Image();resultImg.id="resultImg";resultImg.width=147;resultImg.height=246;resultImg.crossOrigin = "Anonymous";let bgImg=new Image();bgImg.id="bgImg";bgImg.src="https:/

2018-05-31 15:50:15 2049

原创 我的github整理-置顶-持续更新

开发daily 汇总https://github.com/SoledadVac/DailyDevProblems基于JWT的token认证https://github.com/SoledadVac/Spring-Boot-token-authGit IOhttps://github.com/SoledadVac/SoledadVac.github.ioCommon ...

2018-05-16 21:22:33 1531 9

原创 Guava——EventBus

基于pub&sub模型,并且支持多订阅。消息类:public class OrderEvent { private String message; public OrderEvent(String message) { this.message = message; } public String getMessage() {...

2018-05-14 22:23:15 482

原创 elasticsearch——Java api简单操作

/** * \* Created: liuhuichao * \* Date: 2018/5/8 * \* Time: 下午9:35 * \* Description: es simple api use * \ */public class SimpleEsTest { private TransportClient client; private IndexRe...

2018-05-08 23:39:24 668

原创 mysql索引最左匹配原则

测试表:-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT,...

2018-04-27 15:18:36 527 2

原创 zxing生成二维码

工具类:/** * \* Created: liuhuichao * \* Date: 2018/4/10 * \* Time: 下午3:51 * \* Description: 生成二维码,也支持其他条码生成 * \ */public class QRCode { private static final Logger LOGGER = LoggerFactory...

2018-04-10 20:57:35 263

原创 Guava——一些集合操作

/** * \* Created: liuhuichao * \* Date: 2018/4/3 * \* Time: 下午5:42 * \* Description:guava 集合测试 * \ */public class CollectionTest { /** * 不可变集合 */ @Test public void immut...

2018-04-03 23:04:52 1666

原创 Guava——简单工具类

/** * \* Created: liuhuichao * \* Date: 2018/3/30 * \* Time: 下午6:12 * \* Description:简单guava使用 * \ */public class simpleGuavaTest { /** * Optional 类使用 * 可能为null的T类型引用 ...

2018-04-03 23:03:49 613

原创 Guava——EventBus

发送的消息体:/** * \* Created: liuhuichao * \* Date: 2018/4/3 * \* Time: 下午4:59 * \* Description: 发布-订阅模式中传递的事件,是一个普通的POJO类 * \ */public class OrderEvent { private String message; publi...

2018-04-03 17:39:11 283

原创 Guava——LoadingCache定时更新缓存

/** * \* Created: liuhuichao * \* Date: 2018/4/2 * \* Time: 下午11:33 * \* Description:通过轮询安全更新缓存 * \ */public class RefreshCacheTest { private ScheduledExecutorService scheduledExecutorServ...

2018-04-02 23:52:33 9845 3

原创 Guava——LoadingCache demo

最近看缓存部分代码,思路是这样的:1,读写缓存操作,都是通过loadingcache来操作redis; 2,定时job轮询DB数据,定时刷新redis; 先来看下简单的LoadingCache使用:/** * \* Created: liuhuichao * \* Date: 2018/4/2 * \* Time: 下午9:52 * \* Description:loading...

2018-04-02 23:24:06 1424

原创 fastjson的序列化过滤器

/** * \* Created: liuhuichao * \* Date: 2018/3/30 * \* Time: 下午4:24 * \* Description:测试SerializeFilter * \ */public class SerializeTest { /** * 是否过滤字段 * PropertyFilter根据Propert...

2018-03-30 19:00:36 1772

原创 Guice——Multi Bind

对于一个接口有多个实现类的方式,该如何绑定,下面提供了两种基本方法。使用注解首先来看接口和它的两个实现类:/** * \* Created: liuhuichao * \* Date: 2018/3/28 * \* Time: 下午11:07 * \* Description:数据库接口 * \ */public interface DbInterface { ...

2018-03-30 00:21:35 922

原创 Guice——依赖注入demo

换了新公司,刚上班,发现他们项目都不用spring进行DI,用的是简洁的guice。 pom配置: <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> ...

2018-03-28 22:37:56 725 2

原创 贾斯汀布布

今天额外的睡不着,也许是最近白天时间比较多,导致自己太多的胡思乱想。 说是胡思乱想,其实还是对自己以后的规划。现在是感觉,自己每次走一步,就像是下棋,如果没有想好7步之内的变动,总是觉得不稳妥的。 每天忙忙碌碌的上班是没有意义的,至少我是这么觉得的。我过过买买买的日子,也过过负债的日子,都走过之后,发现这些对我的影响并不是很大,当然,没人跟钱有仇,但是,我意思是,你得真的问问自己,你想成为什么...

2018-03-14 03:36:08 1190 5

原创 Java虚拟机运行时数据区

程序计数器(Program Counter Register)当前线程所执行的字节码的行号指示器如果执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令地址;如果执行的是Native方法,这个计数器值为空。Java虚拟机栈Java方法执行的内存模型:每个方法在执行时会创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法从调用直至执行完成的过程,就对

2018-03-12 22:01:33 191

原创 Spring Boot——Zuul基本配置

server: port: 8882spring: application: name: esbp-battery-zuulzuul: retryable: false #关闭服务重试 add-host-header: true #API网关在进行请求路由转发前为请求设置Host头信息 routes: api-ebd: # ebd接口 path:

2018-03-12 21:21:14 3668 2

原创 Java并发编程笔记——从源代码到指令序列的重排序

在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分为下面三种:1,编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。2,指令级并行的重排序。现代处理器采用了指令集并行技术来将多条指令重叠执行。如果不存在数据依赖,处理器可以改变语句对应机器指令的执行顺序。3,内存系统的重排序。由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可

2018-02-18 16:36:07 556

原创 Java并发编程笔记——JMM

Java线程之间的通信由Java内存模型控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。如上图,如果线程A要与线程B通信的话,需要经过下面两个步骤:1,线程A把本地内存A中

2018-02-18 16:08:14 394

原创 Java并发模型基础(笔记)——并发模型的两个关键问题

在并发编程中,需要处理两个关键问题:线程之间如何通信以及线程之间如何同步。 通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没用公共状态,线程之间必须通过发送消息来显示进行通信。 同步是指程序中用于控制不同线程间操作发

2018-02-14 12:32:17 519

原创 Java 并发编程笔记——使用循环cas实现原子操作

一,使用循环CAS示例JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的。自旋CAS实现的基本思路就是循环进行CAS操作直到成功为止。/** * \* Created: liuhuichao * \* Date: 2018/1/27 * \* Time: 下午5:32 * \* Description:cas操作比较 * \ */public class Co

2018-01-27 21:06:52 779 3

ble设备扫描器.apk

ble设备扫描器.apk,目前只有扫描周边BLE设备的功能,又需要其他功能的,可以私信我。

2016-09-13

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

TA关注的人

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