随笔分类 -  Java

上一页 1 2 3 4 5 6 7 ··· 9 下一页

Seata的分布式事务实现原理
摘要:Seata分布式事务方案 简介 Seata是阿里开源的分布式事务解决方案中间件,对业务侵入小,在应用中Seata整体事务逻辑基于两阶段提交的模型,核心概念包含三个角色: TM:事务发起者。用来告诉TC全局事务的开始,提交,回滚。 RM:事务资源,每一个RM都会作为一个分支事务注册在TC。 TC:事务 阅读全文

posted @ 2020-09-30 19:13 Milton 阅读(11431) 评论(0) 推荐(0) 编辑

Java的协程Quasar
摘要:协程是对函数和线程进一步优化的产物, 是一种函数的编排方式, 将传统意义上的函数拆成更小粒度的过程. 简单说, 就是比函数粒度还要小的可手动控制的过程. 协程可以通过yield 来调用其它协程,接下来的每次协程被调用时,从协程上次yield返回的位置接着执行,通过yield方式转移执行权的协程之间不 阅读全文

posted @ 2020-09-15 15:24 Milton 阅读(761) 评论(0) 推荐(0) 编辑

串口设备短信模块开发笔记
摘要:硬件设备 首先是硬件设备,这类短信模块,modem pool大都是基于Q2406A, Q2406B之类的串口设备,只支持GSM和GPRS,不支持电信CDMA,早先的设备只有COM口,如果是一个pool,对应每一个模块都会引出一个COM口,后来出的设备改成了USB2.0接口,其芯片主要是PL2303系 阅读全文

posted @ 2020-08-22 22:07 Milton 阅读(1188) 评论(0) 推荐(0) 编辑

CyclicBarrier的使用
摘要:CyclicBarrier CyclicBarrier机制 和join()类似, 对于需要等待多个线程执行完成后再继续的场景, 都可以使用CyclicBarrier. 其使用方法是在主线程创建一个CyclicBarrier实例, 设置信号量, 设置结束时的回调方法, 然后在各个工作子线程的末尾调用这 阅读全文

posted @ 2020-04-30 17:30 Milton 阅读(526) 评论(0) 推荐(0) 编辑

多模式匹配的Trie实现
摘要:业务场景 这种需求一般用于敏感词过滤等场景, 输入是大文本, 需要快速判断是否存在匹配的模式串(敏感词), 或者在其中找出所有匹配的模式串. 对于模式串数量不超过5000的场景, 直接用暴力查找速度也能接受, 对于更大规模的模式串, 需要对匹配进行优化. 实现原理 带Fail Next回溯的Trie 阅读全文

posted @ 2020-04-28 16:08 Milton 阅读(464) 评论(0) 推荐(0) 编辑

MyBatis Interceptor
摘要:MyBatis的拦截器可以用于在以下对象及方法中拦截修改: Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParame 阅读全文

posted @ 2020-04-21 18:06 Milton 阅读(2517) 评论(0) 推荐(2) 编辑

适用于Spring Boot Jar的启停部署脚本
摘要:shell脚本参数 使用-z或-n对一个变量判空时, 若直接使用[ -n ARG ]这种形式,当{ARG}中有空格将会报错, line 27: [: sd: binary operator expected 需要使用 [[ -n ${ARG} ]] 或 [ -n "${ARG}" ] 完整脚本 # 阅读全文

posted @ 2020-03-15 17:53 Milton 阅读(393) 评论(0) 推荐(0) 编辑

RabbitMQ笔记
摘要:RabbitMQ服务 RabbitMQ官网地址: https://www.rabbitmq.com/ 下载页: https://www.rabbitmq.com/download.html 用Docker启动RabbitMQ服务 根据下载页上的说明 docker run -it --rm --nam 阅读全文

posted @ 2020-03-13 18:51 Milton 阅读(259) 评论(0) 推荐(0) 编辑

Mybatis的缓存过期机制和RedisCache
摘要:MyBatis的缓存过期机制, flushInterval参数 在实际测试中, 发现Redis中的缓存数据TTL为-1, 在Hash中的key也无过期时间信息, 怀疑RedisCache的实现是否能正常处理缓存过期, 因此一路追查到了MyBatis的代码. MyBatis在每个Mapper中, 可以 阅读全文

posted @ 2020-02-21 14:38 Milton 阅读(1610) 评论(0) 推荐(0) 编辑

Java多个线程顺序打印数字
摘要:要求 启动N个线程, 这N个线程要不间断按顺序打印数字1-N. 将问题简化为3个线程无限循环打印1到3 方法一: 使用synchronized 三个线程无序竞争同步锁, 如果遇上的是自己的数字, 就打印. 这种方式会浪费大量的循环 public class TestSequential1 { pri 阅读全文

posted @ 2019-08-06 19:10 Milton 阅读(7466) 评论(0) 推荐(0) 编辑

Java多线程的Callable, Future, FutureCallback, CompletableFuture
摘要:Callable可以看成是一个增强版的Runnable, 带返回结果, 需要通过Future或者FutureTask来提交任务或运行线程, 然后通过Future/FutureTask的get方法得到返回结果. Callable在子线程中运行, 在主线程中异步得到执行结果(get()方法是阻塞的), 阅读全文

posted @ 2019-08-05 15:36 Milton 阅读(1810) 评论(0) 推荐(1) 编辑

Java多线程的Semaphore
摘要:Semaphore 信号量, 在多线程应用中, 用来控制同时访问某个特定资源的操作数量, 或者同时执行某个指定操作的数量, 还可以用来实现某种资源池限制, 或者对容器施加边界. 简单地说, Semaphore就是synchronized的加强版, 可以控制线程的并发数量. 控制对某一方法并发的访问数 阅读全文

posted @ 2019-08-04 01:03 Milton 阅读(182) 评论(0) 推荐(0) 编辑

Spring Boot方式的Dubbo项目
摘要:项目依赖 需要org.apache.dubbo.dubbo-dependencies-bom, 需要org.apache.dubbo.dubbo-spring-boot-starter, 当前版本有2.7.0和2.7.1, dubbo版本已经发布到2.7.2了, 但是starter还没更新到2.7. 阅读全文

posted @ 2019-07-16 12:10 Milton 阅读(2552) 评论(0) 推荐(0) 编辑

Java线程的wait(), notify()和notifyAll()
摘要:Java线程生命周期 类java.lang.Thread包含一个静态的State enum用于定义每种可能的状态. 在任意的时间点, 线程会处于以下的状态之一: NEW – 新创建的线程, 还未启动(在调用 start() 之前的状态). A thread that has not yet star 阅读全文

posted @ 2019-05-18 01:48 Milton 阅读(2536) 评论(0) 推荐(0) 编辑

Java线程同步的Monitor机制(Lock配合Condition)
摘要:Monitor模式是一种常见的并行开发机制, 一个Monitor实例可以被多个线程安全使用, 所有的monitor下面的方法在运行时是互斥的, 这种互斥机制机制可以用于一些特性, 例如让线程等待某种条件, 在等待时线程会将CPU时间交出去, 但是在条件满足时确保重新获得CPU时间. 在条件达成时, 阅读全文

posted @ 2019-05-17 20:09 Milton 阅读(514) 评论(0) 推荐(0) 编辑

函数式接口, Collection等
摘要:Lambda 函数式接口 lambda 表达式的使用需要借助于 函数式接口, 也就是说只有函数式接口才可以将其用 lambda 表达式进行简化. 函数式接口定义为仅含有一个抽象方法的接口. 按照这个定义, 一个接口如果声明了两个或两个以上的方法就不叫函数式接口. JDK1.8为接口的定义引入了默认方 阅读全文

posted @ 2019-05-14 19:09 Milton 阅读(252) 评论(0) 推荐(0) 编辑

用于Spring Boot Jar部署的shell脚本
摘要:使用getopts改写的脚本 # Please define the absolute path of tomcat instance JAVA_HOME=/opt/jdk/latest BASE_DIR=/home/tomcat JAVA_OPTS="-server -Xms512m -Xmx51 阅读全文

posted @ 2019-03-13 18:32 Milton 阅读(347) 评论(0) 推荐(0) 编辑

Mongodb 笔记 - 性能及Java代码
摘要:性能 以下数据都是在千兆网络下测试的结果 写入 数据量的增大会导致内存占满, 因为mongodb会将数据尽可能地载入内存, 索引占用的空间也很可观非安全模式下, 速度取决于内存是否占满能差一个数量级, 占满时大概1~2MB/s, 未占满时大于20MB/s安全模式下, 速度也取决于内存是否占满, 但是 阅读全文

posted @ 2018-11-17 10:46 Milton 阅读(1114) 评论(0) 推荐(0) 编辑

YAML格式的语法
摘要:基本格式 用空格缩进, 不能用tab 用#标记注释 列表: 用短划(-)标记元素 映射: 用冒号(:)分隔key, value. 如果写在一行, 需要用逗号分隔并前后加花括号 字符串: 不加引号, 加单引号或者加双引号都可以, 加双引号时可以使用\开头的转义字符 多行字符串可以用 | 或 > 符号, 阅读全文

posted @ 2018-11-07 18:02 Milton 阅读(16924) 评论(0) 推荐(0) 编辑

Spring Cloud开发实践(四): Docker部署
摘要:使用Spring Boot的提升主要在于jar的打包形式给运维带来了很大的便利, 而Spring Cloud本身的优点不是那么明显, 相对于Dubbo而言, 可能体现在跨语言的交互性上(例如可以配合PHP作为前端模块), 还有现成的服务跟踪治理工具上. 对于熟悉Dubbo项目结构的开发来说, Spring Cloud的结构会相对松散, 上游的服务接口与下游的服务调用之间没有强依赖关系. 这样在上游接口调整后, 并不能及时被IDE发现而提醒下游, 会给团队配合带来一些不便. 这个系列通过代码实例介绍Spring Cloud开发中的一些有益的实践. 阅读全文

posted @ 2018-10-26 18:38 Milton 阅读(450) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 9 下一页

导航