- 博客(7)
- 收藏
- 关注
原创 你确定你真的懂了枚举吗?
背景: 在工作中我们都会创建一些静态常量,例如:// 春天private static final String SPRING = 1;这种定义方式看似十分简单,但是其实是存在很多问题的:就是在使用过程中,别的开发人员会把你定义的常量用作别的用途,比如上面可能会被用作与别的数相加等等;所以这个时候就需要就需要使用枚举,java5新增了enum关键字(它与calss、interface关键字的地位相同),用于定义枚举类。枚举类是一个特殊的类,它一样可以有自己的成员变量、方法,可以实现一个或
2020-12-22 14:47:54
169
1
原创 微信v3版本-native支付和支付宝支付接口对接
微信支付宝对接背景: 由于公司业务需要想把支付宝和微信整合在一起,做一个统一的支付模块。其中经过了各种坑,因为之前也没搞过这个。所以这里记录下,同时,也让后面做相同业务的小伙伴们少走一些弯路。支付宝 接口:alipay.trade.precreate(统一收单线下交易预创建 接口描述: 收银员通过收银台或商户后台调用支付宝接口,生成二维码后,展示给用户,由用户扫描二维码完成订单支付。 这里我要讲下,我们使用这个功能的前提是你的商户账号已经开通“当面付”功能;这里我们不在贴出参数和响应参数的
2020-12-06 15:12:30
2402
4
原创 java并发编程5-AQS底层原理你还不知道吗
1.前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AQS实现的。AQS 全称是 AbstractQueuedSynchronizer,顾名思义,是一个用来构建锁和同步器的框架,它底层用了 CAS 技术来保证操作的原子性,同时运用了 CLH 同步队列作同步器,这也是 ReentrantLock、CountDownLatch 等同步工具实现同步的底...
2020-04-05 13:14:11
361
原创 java并发编程4-java之你所不知道的synchronized
1. 锁的基础知识:1.1 锁的种类:乐观锁 乐观锁是对于数据冲突保持一种乐观态度,操作数据时不会对数据锁定(这使得多个任务可以并行的对数据进行操作),只有到数据提交的时候才通过一种机制来验证数据是否存在冲突(一般是通过加版本号然后进行比对的方式实现);特点:乐观锁是一种并发类型的锁,本身不对数据进行加锁通过业务实现锁的功能,不对数据进行加锁就意味着允许多个请求同时访问数据,这种...
2020-04-03 22:44:21
154
原创 java并发编程3-互斥锁:原子性问题
在 可见性、原子性、有序性的追根溯源 的课后问答中,我们提到了long类型在32位和64位所引发的并发问题,它就是一个典型的原子性问题。那原子性问题的原因是什么?怎么解决原子性问题呢? 其实原子性问题的源头就是线程切换时间片所导致的,在早期单核时代,我们知道操作系统做线程切换是依赖 CPU 中断的,所以禁止 CPU 发生中断就能够禁止线程切换。em…好吧,我错过了这个好时代。那么在多核时代...
2020-04-03 22:28:00
185
原创 java并发编程2-一起看Happens-Before 规则的前因后果
上一章 可见性、原子性、有序性的追根溯源 我们了解到了java并发编程常见的3个问题,那么有问题肯定需要解决呀!这章我们聊聊如何解决可见性和有序性是怎么解决的——java内存模型。什么是java内存模型? 我们已经知道导致可见性的原因是缓存,导致有序性的原因是编译优化,有人说最直接的办法不就是直接禁用缓存和编译优化嘛!这样当然是不行滴!这样太影响性能了!合理的解决方案就是按需禁用缓存和编...
2020-04-03 12:08:36
197
原创 java并发编程1-可见性、原子性、有序性的追根溯源
1.课前知识:CPU、内存、I/O 设备速度的差异:CPU 和内存的速度差异可以形象地描述为:CPU 是天上一天,内存是地上一年(假设 CPU 执行一条普通指令需要一天,那么 CPU 读写内存得等待一年的时间)。内存和 I/O 设备的速度差异就更大了,内存是天上一天,I/O 设备是地上十年。解决方法:为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系机构、操作系统、编译程序都...
2020-04-02 19:44:30
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人