关闭
当前搜索:

Java多线程复习与巩固(七)--任务调度线程池ScheduledThreadPoolExecutor

强烈建议看本文之前,先把《Java多线程复习与巩固(六)–线程池ThreadPoolExecutor》看完。首先因为ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,不了解ThreadPoolExecutor的原理看本文可能会有些吃力;另外本文的行文思路会按照《Java多线程复习与巩固(六)–线程池ThreadPoolExecutor》的顺序进......
阅读(35) 评论(0)

EffectiveJava读书笔记- 第4条:通过私有构造器强化不可实例化的能力

通过私有构造器强化不可实例化的能力 上一条讲单例的时候已经提到了私有化构造器。单例模式这么搞是为了保证全局只有一个实例,而这一条规则是为了让工具类一个实例都无法创建。 这样的例子在JDK中有很多:java.util.Collections,java.util.Arrays,java.util.concurrent.Executors,java.util.Objects,java.util.st......
阅读(47) 评论(0)

EffectiveJava读书笔记- 第3条:用私有构造器或者枚举类型强化Singleton属性

用私有构造器或枚举类型强化Singleton属性 单例模式(Singleton Pattern)无疑是笔试面试中被问得最多的问题之一。单例模式虽然看似简单,但是仍有很多东西值得思考。 GOF是这么定义单例模式的: 确保一个类只有一个实例,并提供一个全局访问点。 通常实现单例都需要我们私有化构造器,让对象无法在外部创建,同时提供一个外部访问的方法返回这个单例对象。 通常单例分为两大......
阅读(194) 评论(0)

EffectiveJava读书笔记- 第2条:遇到构造器有多个参数时要考虑用构建者模式

遇到构造器有多个参数时要考虑用建造者模式 静态工厂方法和构造器都有一个局限性: 当构造的对象有大量的可选参数时,你可能需要定义很多个静态工厂方法或者构造器。 用setter方法替代多参数构造器的几个缺点 书中提到多参数的构造器的一个替代方法,就是用JavaBean模式:使用无参构造器创建对象,然后调用setter方法设置每个必要参数以及一些可选参数。 1. 构造的过程中,对象可能处于不一......
阅读(27) 评论(0)

EffectiveJava读书笔记- 第1条:考虑用静态工厂方法代替构造器

考虑静态工厂方法代替构造器 静态工厂方法相对于构造器的好处: 1. 静态工厂方法有名字,相比构造器创建的对象更语义化 最好的例子就是并发库中的Executors工具类了。 Executors中有多个创建线程池的方法: public static ExecutorService newFixedThreadPool(int nThreads); public static Execut......
阅读(39) 评论(0)

Java SPI机制

SPI全称Service Provider Interface,是Java提供的一种让第三方实现或扩展的API。 java平台中很多功能都是以这种方式提供接口给开发者调用的,最典型的如:JDBC,JDNI,JCE(Java加密扩展),JAXP等,看JDK源码或者第三方源码的时候会经常碰到SPI,所以我觉得很有必要写个笔记把SPI记录下来。 定义SPI接口 这里我就拿JDBC的数据库驱动作......
阅读(18) 评论(0)

ssl证书申请以及nginx证书的配置

准备知识 SSL/TLS:这两个分别是Secure Socket Layer(安全套接字层),Transport Layer Security(传输层安全)的缩写。TLS是SSL的继承者,如果不是搞安全的专业人员,完全可以认为他们是一样的东西。 关于这两者的差异可以参考https://kb.cnblogs.com/page/197396/ key:因为SSL/TLS使用非对称加密算法...
阅读(29) 评论(0)

Spring@Conditional注解的使用

Spring3开始提供的profile机制用起来的确很爽,在Spring4中提供了一种更通用的条件化Bean定义机制。 @Conditional注解 使用@Conditional注解 定义一个Bean,这个Bean只有在满足MagicExistCondition中定义的条件时才会创建。 @Bean @Conditional(MagicExistCondition.class) pu......
阅读(33) 评论(0)

Spring@Profile注解的使用

通常开发测试与上线生产使用不同的环境配置,我们可以使用@Profile注解实现。 在类上使用@Profile注解 开发环境配置 package cn.hff; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.con......
阅读(45) 评论(0)

Spring整合阿里云OSS服务实现文件上传

相关配置 在阿里云控制台生成访问密钥(AccessKey) 创建OSS bucket。 阿里云提供了Endpoint(是阿里云自己的域名)。数据库中存储的文件地址如果包含阿里云的域名,将来如果不使用阿里云(使用其他的云服务,或者是自己搭建图片服务器),那么数据库中的地址全部要修改(这里面包括富文本内容,修改富文本内容中的图片地址复杂程度可想而知)。 域名解析选择CNA......
阅读(139) 评论(0)

Shiro认证与授权源码分析

这里使用官方提供的demo进行调试,进入源码分析。 官方demo地址:https://github.com/apache/shiro/tree/master/samples/quickstart public class Quickstart { private static final transient Logger log = LoggerFactory.getLogger......
阅读(127) 评论(0)

SpringMVC源码浅析

先来看一张整体的处理过程图: 下面的Spring源码版本为4.3.12,是目前最新的稳定版本。 源码版本不一致,可能会有稍许差异。 DispatcherServlet.doDispatcher() 先看一下DispatcherServlet方法的核心方法doDispatch: protected void doDispatch(HttpServletReque......
阅读(112) 评论(0)

Hessian初体验

前面两篇文章写了一个RMI的例子并简单分析了一下RMI的原理。 这里简单概括一下RMI的优缺点; 优点: 面向对象的远程服务模型;客户端可以像调用本机对象一样去调用远程对象的方法。 基于TCP协议,执行速度非常快。 缺点: 使用Java特有的序列化协议JRMP,不能使用在多语言实现的异构系统上。 在J2EE中WebService使用SOAP协议解决了异构系统通信的问题。因为SO......
阅读(95) 评论(0)

RMI原理浅析

之前看过一个RMI的简单示例。这篇文章简单的分析一下RMI的原理。 RMI应用程序的体系结构 上一个例子中,我们编写了两个程序,一个服务端(Server)和一个客户端(Client)。 在Server内创建一个远程对象(CalcServiceImpl),并生成存根,注册到Registry中。 客户端请求远程对象,并调用对象的方法。 Transport Layer:RMI传输层......
阅读(114) 评论(0)

RMI简单示例

RMI是Java1.1中实现的一种RPC通信机制。使用RMI可以让一个Java虚拟机中的对象调用另外一个虚拟机中对象的方法,它大大增强了Java开发分布式应用的能力。 这篇文章使用RMI实现一个简单的例子。 服务端代码 1.声明一个服务接口,提供给远程调用,该接口必须继承自java.rmi.Remote接口。 package cn.hff.service; import java......
阅读(112) 评论(0)
92条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:56899次
    • 积分:1389
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:13篇
    • 译文:0篇
    • 评论:5条
    相关链接
    博客专栏