- 博客(60)
- 资源 (16)
- 收藏
- 关注
原创 nacos-docker 单机版且使用本地 mysql 实现部署(无健康监控)
操作步骤Clone 项目git clone https://github.com/nacos-group/nacos-docker.gitcd nacos-docker修改 mqsql 单机版配置文件vim example/standalone-mysql-5.7.yaml注释掉不需要的 prometheus 与 grafana 与 mysqlversion: "2"services: nacos: image: nacos/nacos-server:latest conta
2021-01-11 19:02:18 585 1
原创 Jackson2 反序列化: setter 方法重载的坑
这几天遇到一个自己埋的坑 :<( , 一个 bean 中有一个 LocalDateTime 字段, 用了注解或配置相应反序列化器, 都无法序列化, 就是提示错误:com.fasterxml.jackson.databind.JsonMappingException: Problem deserializing property 'expireTime' (expected type: [simple type, class int]; actual type:`java.time.LocalD.
2020-10-31 13:31:47 2146
原创 Spring security 集成 JustAuth 实现第三方授权登录
Spring security 集成 JustAuth 实现第三方授权登录脚手架:一、特性spring security 集成 JustAuth 实现第三方授权登录: 此项目从 用户管理脚手架(UMS):https://github.com/ZeroOrInfinity/UMS | https://gitee.com/pcore/UMS) 项目中分离.支持所有 justAuth 支持的第三方登录,登录后自动注册 或 绑定.支持定时刷新 accessToken 分布式定时任务,支持第三方授权登录
2020-10-23 19:57:46 6135
原创 基于 springSecurity 的用户管理脚手架(UMS)
UMS (user manage scaffolding) 用户管理脚手架: github gitee用户管理脚手架集成:用户密码登录、手机登录、支持所有 JustAuth 支持的第三方授权登录、验证码、基于 RBAC 的 uri 访问权限控制功能、签到等功能。通过配置文件与实现 用户服务 与 短信发生服务 两个 API 接口就可以实现上述功能,实现快速开发,只需要专注于业务逻辑。一、UMS 功能列表:验证码(图片,短信, 滑块)校验功能。手机登录功能,登录后自动注册。支持所有 Just
2020-10-21 13:23:45 1492
原创 通过字节码分析 java for 循环的条件语句赋值问题
关于 java for 循环的退出条件语句赋值, 不管是习惯上的, 还是通过 IDE 快速生成, 都是习惯性的调用集合的size()或数组的length()方法赋值. 如下所示:List<Integer> list = List.of(1,2,3,4,5,6,7);for (int i = 0; i < list.size(); i++){ ...}我们通过字节码来看一下两种 for 循环的退出条件语句赋值: 1. 调用方法赋值 2. 变量赋值从上图中可以看出:
2020-09-11 13:06:19 415
原创 利用nginx的nginx-amqp模块把前端的数据转发到rabbitmq
系统环境Centos 7, Docker下载nginx: https://github.com/nginx/nginx/archive/release-1.17.9.tar.gznginx form插件: https://github.com/calio/form-input-nginx-module/archive/v0.12.tar.gz依赖: ngx devel kit 插件: https://github.com/vision5/ngx_devel_kit/archive/v0.3.1
2020-09-05 23:50:30 1861 2
原创 通过字节码分析java的try catch放在循环内外的问题
关于java的try catch放在循环内外的问题,看过挺多文章的;记得15年看过一篇文章说try catch语句千万不要写在循环语句内,不然会降低循环语句的性能,在很长的一段时间里也是这样做的,其实呢,当时已经用java7了,编译的字节码文件已经对try catch使用异常表优化了,性能上其实两者已经没有多大区别了。下面我们通过字节码来分析try catch在循环体内外的异同。先贴示例代...
2020-01-09 21:43:08 556
原创 web项目中不适用于java.sql.DriverManager描述的JDBC 4.0 Drivers及以后版本连接数据库是不需要用forName()?
在jdk1.6中java.sql.DriverManager明确指出,在JDBC 4.0 Drivers版本及以后版本不再需要使用Class.forName() 显式地加载 JDBC 驱动程序。mysql JDBC Driver源文件public class Driver extends NonRegisteringDriver implementsjava.sql.Driver...
2020-01-03 17:10:38 1811
原创 通过Xmanager远程安装Oracle11.2到Linux
环境:Xmanager4.0 CentOS6(2核 2G) oracle11.2参考文章:https://www.linuxidc.com/Linux/2017-04/142470.htmhttps://www.linuxidc.com/Linux/2017-08/146528.htmhttps://www.cnblogs.com/songyuejie/p/6372534.htmlhttp...
2018-05-28 00:20:47 12063 3
转载 聊聊并发(十)生产者消费者模式
本文首发于InfoQ 作者:方腾飞 校对:张龙在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处
2018-05-19 21:04:15 578
转载 聊聊并发(九)Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。
2018-05-19 21:04:04 361
转载 聊聊并发(八)——Fork/Join框架介绍
本文首发于InfoQ1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大
2018-05-19 21:03:31 492
转载 聊聊并发(七)——Java中的阻塞队列
原文首发于InfoQ1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞
2018-05-19 21:03:20 406
转载 聊聊并发(六)ConcurrentLinkedQueue的实现原理分析
1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Conc
2018-05-19 21:03:11 457
转载 聊聊并发(五)原子操作的实现原理
1 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作”。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。2 术语定义术语名称英文解释缓存行
2018-05-19 21:03:02 1473
转载 聊聊并发(四)深入分析ConcurrentHashMap
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的
2018-05-19 21:02:54 361
转载 聊聊并发(三)Java线程池的分析和使用
作者:方腾飞1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须
2018-05-19 21:02:41 259
转载 聊聊并发(二)Java SE1.6中的Synchronized
作者:方腾飞1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。2 术语定义术语
2018-05-19 21:02:31 295
转载 剖析Disruptor:为什么会这么快?(三)伪共享
作者:Martin Thompson 译者:丁一缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性
2018-05-19 21:01:26 804
原创 Storm与Kafka集成用eclipse调试集群连接不上的问题
Exception in thread"main" org.apache.storm.utils.NimbusLeaderNotFoundException: Couldnot find leader nimbus from seed hosts [localhost]. Did you specify a validlist of nimbus hosts for config nimbus.s
2018-01-26 23:22:05 1342 6
原创 dubbo-amdin-2.5.8打包war包(jdk7)
用jdk8打dubbo-amdin-2.5.8的war包,折腾了一天,在command命令模式下执行mvn package -Dmaven.skip.test=true,直接BUILD FAILED,编译过程就通不过。在MyEclipse下不修改pom.xml也是一样,在加入compiler与war插件后可以打war包了, maven-compiler-plugin 2.3.2 1
2018-01-21 17:39:38 721
原创 利用Rocketmq4.2版来实现分布式事务
花了点时间学了RocketMQ,下面是本人的一点点心得,如果觉的写的好就点个赞,但如果你要借鉴话,我还是劝你看下面参考资料里的视频(作者为阿里牛人),虽然他分享的视频是为了推销阿里云的DRDS、ONS(RocketMQ阿里版),只是讲了个大概,没有细说,但是指明一个大的方向,让人非常的受益。借用阿里牛人视频中的ppt:来说明单机事务拆分成分布式事务分解思想(具体自己看视频)。...
2018-01-15 23:34:14 9277 9
转载 centos 7 下 oracle 11gr2 手动启动方式
centos下数据库安装成功后,面临启动Oracle问题,下面是学习实践的总结一:手动启动数据库用Oracle用户登录$lsnrctl start$sqlplus / assysdbasql>startup然后就可以操作数据库了 二:自动启动数据库1.修改oratab#vi /etc/oratabxx:/opt/oracle/
2017-12-28 23:54:48 897
转载 CopyOnWriteArrayList类set方法疑惑?
在淘宝内网有位同事提了一个很好的问题,大家能否帮忙解答下?在CopyOnWriteArrayList类的set方法中有一段setArray(elements)代码,实际上这段代码并未对elements做任何改动,实现的volatile语意并不对CopyOnWriteArrayList实例产生任何影响,为什么还是要保留这行语句?见以下代码红体部分:01
2017-12-18 21:24:59 397
转载 Callable和Future
原文链接 译文链接 译者:Greenster 校对:沈义扬Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理。Thread类、Runnable接口和Java内存管理模型使得多线程编程简单直接。但正如之前提到过的,Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没有返回值这点稍微有点麻烦。 不能声明抛出检查型异常则
2017-12-18 21:24:54 245
转载 JUC LinkedBlockingQueue
java.util.concurrent.LinkedBlockingQueue 是一个基于单向链表的、范围任意的(其实是有界的)、FIFO阻塞队列。访问与移除操作是在队头进行,添加操作是在队尾进行,并分别使用不同的锁进行保护,只有在可能涉及多个节点的操作才同时对两个锁进行加锁。队列是否为空、是否已满仍然是通过元素数量的计数器(count)进行判断的,由于可以同时在队头、队尾并发地进行访问
2017-12-18 21:24:30 234
转载 剖析Disruptor:为什么会这么快?(四)揭秘内存屏障
译者:杜建雄 校对:欧振聪最近我博客文章更新有点慢,因为我在忙着写一篇介绍内存屏障(Memory Barries)以及如何将其应用于Disruptor的文章。问题是,无论我翻阅了多少资料,向耐心的Martin和Mike请教了多少遍,以试图理清一些知识点,可我总是不能直观地抓到重点。大概是因为我不具备深厚的背景知识来帮助我透彻理解。所以,与其像个傻瓜一样试图去解释一些自己都没完
2017-12-18 21:24:26 402
转载 内存屏障
原文地址 作者:Martin Thompson 译者:一粟 校对:无叶,方腾飞本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术。CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要远超主存访问速度。在上一篇文章 “Write Combing (合并写)”中我已经介绍了其中的一项技术
2017-12-18 21:24:14 299
转载 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
作者:Trisha 译者:方腾飞 校对:丁一我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问。
2017-12-18 21:23:32 456
转载 聊聊并发(一)深入分析Volatile的实现原理
引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能
2017-12-18 21:23:03 376
转载 通过Axon和Disruptor处理1Mtps
作者: AllardBuijze 译者:程晓明LMAX,一家金融公司,最近开源了其(新型零售金融交易平台的)核心组件之一:Disruptor。这个组件通过删除必须的锁来降低执行开销,且任然保证正确的处理订单。如果你问我,我会说这是一个优美精巧的工程。我尝试把Disruptor应用到Axon控制总线中,就是想看看它到底有多大的潜力。结果相当惊人。The DisruptorD
2017-12-18 21:12:43 667
转载 剖析Disruptor:为什么会这么快?(一)锁的缺点
原文:http://ifeve.com/disruptor-locks-are-bad/作者:Trisha’s 译者:张文灼,潘曦 整理和校对:方腾飞,丁一Martin Fowler写了一篇非常好的文章,里面不仅提到了Disruptor,而且还解释了Disruptor如何应用在LMAX的架构里。里面有提及了一些目前没有涉及的概念,但最经常问到的问题是 “Disruptor究
2017-12-17 12:23:05 733
转载 LMAX架构
作者:Martin Fowler译文地址:http://www.jdon.com/42452 译者:banqLMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量).这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单.业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(eve
2017-12-17 11:55:24 952
转载 线程间共享数据无需竞争
原文 地址 作者 Trisha 译者:李同杰LMAX Disruptor是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖。本文将用图表的方式为大家介绍Disruptor是什么,用来做什么,以及简单介绍背后的实现原理。Disruptor是什么?Disruptor是线程内通信框架,用于线程里共享数据。LMAX创建Disruptor作为可靠消息架构的一
2017-12-17 11:26:06 482
转载 Disruptor Wizard已死,Disruptor Wizard永存!
译者:杨帆 校对:丁一Disruptor Wizard(上一篇中提到的DSL组件)目前已经正式并入Disruptor的代码树当中。既然.net移植版包含了Wizard风格的语法很久了,并且看起来还挺受欢迎,所以为什么还要让人们非得搞两个jar而不是一个?我跟随Disruptor在术语命名上的变动做出了相应的更新。以前的Customer(消费者),现在叫EventProcessor(事件处理
2017-12-17 11:22:46 374
转载 LMAX Disruptor——一个高性能、低延迟且简单的框架
翻译:杨帆 校对:丁一Disruptor是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列,并且它是让LMAX Exchange跑的如此之快的一个关键创新。关于什么是Disruptor、为何它很重要以及它的工作原理方面的信息都呈爆炸性增长 —— 这些文章很适合开始学习Disruptor,还可跟着LMAX BLOG深入学习。这里还有一份更详细的白皮书。虽然disrup
2017-12-17 11:20:57 4031
转载 Disruptor(无锁并发框架)-发布
译者:罗立树假如你生活在另外一个星球,我们最近开源了一套高性能的基于消息传递的开源框架。下面我给大家介绍一下如何将消息通过Ring buffer在无锁的情况下进行处理。在深入介绍之前,可以先快速阅读一下Trish发表的文章,该文章介绍了ring buffer和其工作原理。这篇文章的要点如下:1.ring buffer是由一个大数组组成的。2.所有ring buf
2017-12-17 11:15:19 863
转载 解析Disruptor的依赖关系
作者:Trisha 译者:廖涵 校对:方腾飞现在我已经讲了 RingBuffer 本身,如何从它 读取以及如何向它 写入。从逻辑上来说,下一件要做的事情就是把所有的东西拼装到在一起。我前面提到过多生产者的情况——他们通过 ProducerBarrier 保证写入操作顺序与可控。我也提到过简单场景下的多消费者数据访问。更多的消费者的场景会变得更加复杂,我们实现了
2017-12-17 11:12:11 839
转载 如何使用 Disruptor(三)写入 Ringbuffer
作者:Trisha 译者:廖涵 校对:方腾飞这是Disruptor全方位解析(end-to-end view)中缺少的一章。当心,本文非常长。但是为了让你能联系上下文阅读,我还是决定把它们写进一篇博客里。本文的 重点 是:不要让 Ring 重叠;如何通知消费者;生产者一端的批处理;以及多个生产者如何协同工作。ProducerBarriersDisruptor 代码
2017-12-17 00:30:15 801
转载 Disruptor 2.0更新摘要
原文:Disruptor 2.0 – All Change Please 译者:杨帆马丁最近发布了Disruptor的2.0版本,从我们开始将其开源以来发生了很多变化,现在是个时候推出一个正式的里程碑了。马丁的博客上涵盖了这次更新的所有内容,这篇文章的目的是尝试把我以前的博文以新框架的架构转述给大家,因为将它们都重写一遍要耗费很多时间。现在我看到手工绘图的缺点了。在旧的版本中:
2017-12-17 00:26:31 356
MDN使用说明.txt
2020-02-28
jclasslib Bytecode viewer v5.4_Win64
2020-01-06
w3school离线手册20191204.chm 2019最新版
2019-12-11
hadoop-2.7.2的native包-含snappy (Centos 7)
2018-11-28
ik-analyzer-solr-7.2.1.jar(使用solr7.x)
2018-01-27
dubbo-admin-2.5.8.war (支持jdk7)
2018-01-21
commons-beanutils-1.9.3
2017-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人