在Mybatis-spring上基于注解的数据源实现方案
摘要:一、遇到的痛点 最近在学习Spring-boot过程中,涉及到操作数据库。按照DOC引入mybatis-spring-boot-starter,然后按照套路配置application.properties、码Mapper、dataobject、xxx-mapper.xml的代码就OK了。这个时候,采用DataSourceAutoConfiguration默认方式实现的,这时单数据源可用了...
阅读全文
Java元编程及其应用
摘要:首先,我们且不说元编程是什么,他能做什么.我们先来谈谈生产力.同样是实现一个投票系统,一个是python程序员,基于django-framework,用了半小时就搭建了一个完整系统,另外一个是标准的SSM(Spring-SpringMVC-Mybatis)Java程序员,用了半天,才把环境刚刚搭好.可以说,社区内,成功的web框架中基本没有不强依赖元编程技术的,框架做的工作越多,应用编写就越轻松....
阅读全文
理解、学习与使用 Java 中的 Optional
摘要:从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Op...
阅读全文
Java 线程池(ThreadPoolExecutor)原理分析与使用
摘要:在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。 使用线程池的好处 1、降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3
阅读全文
阿里巴巴的开源项目Druid(关于数据库连接)
摘要:1 配置和dbcp类似,druid的常用配置项如下配置缺省值说明name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)jdbcUrl 连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://10.20.15...
阅读全文
Java 中的纤程库 – Quasar
摘要:来源:鸟窝,colobu.com/2016/07/14/Java-Fiber-Quasar/如有好文章投稿,请点击 → 这里了解详情最近遇到的一个问题大概是微服务架构中经常会遇到的一个问题:服务 A 是我们开发的系统,它的业务需要调用 B、C、D 等多个服务,这些服务是通过http的访问提供的。 问题是 B、C、D 这些服务都是第三方提供的,不能保证它们的响应时间,快的话十几毫秒,慢的话甚至1秒多...
阅读全文
fastjson使用中遇到的
摘要:二. fastjson 解析json字符串为四种类型 1. JavaBean Person person = JSON.parseObject(jsonString, Person.class); 2. List List listPerson =JSON.parseArray(jsonString, Person.class); ...
阅读全文
netty源码分析之揭开reactor线程的面纱(二)
摘要:如果你对netty的reactor线程不了解,建议先看下上一篇文章netty源码分析之揭开reactor线程的面纱(一),这里再把reactor中的三个步骤的图贴一下reactor线程我们已经了解到netty reactor线程的第一步是轮询出注册在selector上面的IO事件(select),那么接下来就要处理这些IO事件(process selected keys),本篇文章我们将一起来探讨...
阅读全文
netty源码分析之揭开reactor线程的面纱(一)
摘要:netty最核心的就是reactor线程,对应项目中使用广泛的NioEventLoop,那么NioEventLoop里面到底在干些什么事?netty是如何保证事件循环的高效轮询和任务的及时执行?又是如何来优雅地fix掉jdk的nio bug?带着这些疑问,本篇文章将庖丁解牛,带你逐步了解netty reactor线程的真相[源码基于4.1.6.Final]reactor 线程的启动NioEvent...
阅读全文
Vert.x 线程模型揭秘
摘要:来源:鸟窝,colobu.com/2016/03/31/vertx-thread-model/如有好文章投稿,请点击 → 这里了解详情Vert.x是一个在JVM开发reactive应用的框架,可用于开发异步、可伸缩、高并发的Web应用(虽然不限于web应用)。其目的在于为JVM提供一个Node.js的替代方案。开发者可以通过它使用JavaScript、Ruby、Groovy、Java,甚至是混合语...
阅读全文
Java RESTful 框架的性能比较
摘要:来源:鸟窝,colobu.com/2015/11/17/Jax-RS-Performance-Comparison/如有好文章投稿,请点击 → 这里了解详情在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元。微服务是一个概念,并没有规定服务的格式,但是很多厂...
阅读全文
理解 RxJava 的线程模型
摘要:来源:鸟窝,colobu.com/2016/07/25/understanding-rxjava-thread-model/如有好文章投稿,请点击 → 这里了解详情ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开...
阅读全文
Java借助CountDownLatch完成异步回调
摘要:public class AsyncDemo { private static void doSomeTask() { System.out.println("Hello World"); } private static void onCompletion() { System.out.println("All tasks finish...
阅读全文
在 Java 中运用动态挂载实现 Bug 的热修复
摘要:大多数 JVM 具备 Java 的 HotSwap 特性,大部分开发者认为它仅仅是一个调试工具。利用这一特性,有可能在不重启 Java 进程条件下,改变 Java 方法的实现。典型的例子是使用 IDE 来编码。然而 HotSwap 可以在生产环境中实现这一功能。通过这种方式,不用停止运行程序,就可以扩展在线的应用程序,或者在运行的项目上修复小的错误。这篇文章中,我将演示动态绑定、应用运行期代码变化...
阅读全文
图解java中的bytebuffer
摘要:因何而写网上关于bytebuffer的文章真的很多,为何在此还要写一篇呢?主要是基于以下几点考虑很多人在使用t-io时,还不会bytebuffer,只会照着t-io提供的例子照猫画虎,不利于灵活运用网上搜到的一些相关文章,讲得不是太易懂,不利于初学者灵活运用bytebuffer本文旨在讲解灵活运用bytebuffer所需的最小知识,以帮助用户快速掌握bytebuffer用极易的方式认识一下byte...
阅读全文
Stackoverflow 最受关注的 10 个 Java 问题
摘要:Stack Overflow 是一个大型的编程知识库。在 Stack Overflow 中已经有数以百万计的问题,并且很多答案有着很高的质量。这就是为什么 Stack Overflow 的答案经常位于 Google 搜索结果的顶部。尽管 Stack Overflow 上很多问题已经有了答案,每天还是会有很多问题被提出,很多问题仍然没有被回答或者没有获得满意的答案。那么当 Stack Overflo...
阅读全文
对协程的一些理解
摘要:协程协程(coroutine)最早由Melvin Conway在1963年提出并实现,一句话定义:协程是用户态的轻量级的线程线程和协程线程和协程经常被放在一起比较;线程一旦被创建出来,编写者是无法决定什么时候获得或者放出时间片的,是由操作系统进行统一调度的;而协程对编写者来说是可以控制切换的时机,并且切换代价比线程小,因为不需要进行内核态的切换。协程避免了无意义的调度,由此可以提高性能,但也因此,...
阅读全文
面向对象六大原则
摘要:在此之前,有一点需要大家知道,熟悉这些原则并不是说你写出的程序就一定灵活、清晰,只是为你的优秀代码之路铺上了一层栅栏,在这些原则的指导下你才能避免陷入一些常见的代码泥沼,从而让你专心写出优秀的东西。下面我们就以Android网络框架SimpleNet为例来学习这六大面向对象的基本原则,体会这些原则在开发过程中带来的强大能量。1 单一职责原则单一职责原则的英文名称是Single Responsibi...
阅读全文
JUC中AQS简介
摘要:AQS,在java.util.concurrent.locks包中,AbstractQueuedSynchronizer这个类是并发包中的核心,了解其他类之前,需要先弄清楚AQS。在JUC的很多类中都会存在一个内部类Sync,Sync都是继承自AbstractQueuedSynchronizer,相信不用说就能明白AQS有多重要。AQS原理AQS就是一个同步器,要做的事情就相当于一个锁,所以就会有...
阅读全文