摘要:
为什么使用optional 使用Optional<T>除了简化粗鲁的if(null == object)、降低函数的复杂度、增加可读性之外,它是一种傻瓜式的防护,Optional<T>引导编码人员主动的思考引用为null的情况。 创建方法 Optional.of(T):获得一个Optional对象, 阅读全文
摘要:
背景 对于大型的互联网应用来说,数据库单表的记录行数可能达到千万级甚至是亿级,并且数据库面临着极高的并发访问。采用Master-Slave复制模式的MySQL架构,只能够对数据库的读进行扩展,而对数据库的写入操作还是集中在Master上,并且单个Master挂载的Slave也不可能无限制多,Slav 阅读全文
摘要:
转载:https://www.jianshu.com/p/f3c0e3fe48cf 一、什么是重构? 所谓重构是这样一个过程:在不改变代码外在行为的前提下,对代码作出修改,以改进程序的内部结构。本质上说,重构就是在代码写好之后改进它的设计。 重构(名词):对软件内部结构的一种调整,目的是在不改变软件 阅读全文
摘要:
整体思路: 创建一个需要扩展的组件 定义一个XSD文件,描述组件内容 创建一个java类,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义 创建一个Handler类,扩展子NameSpaceHandlerSupport,目的是将组件注册到容器。 编写(添加)Sp 阅读全文
摘要:
转载 https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html 简介 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据( 阅读全文
摘要:
开源项目集合 1. Apache的开源软件列表 http://www.oschina.net/project/apache 2. Java开源Apache项目 http://www.open-open.com/56.htm 3. 阿里巴巴的开源软件列表 http://www.oschina.net/ 阅读全文
摘要:
转载 http://t.cn/RS0UdrX Lombok简介 如Github上项目介绍所言,Lombok项目通过添加“处理程序”,使java成为一种更为简单的语言。作为一个Old Java Developer,我们都知道我们经常需要定义一系列的套路,比如定义如下的格式对象。 我们往往需要定义一系列 阅读全文
摘要:
当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习成本而且会很混乱,这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么 阅读全文
摘要:
有时我们项目中需要配置多个数据源,不同的业务使用的数据库不同 实现思路:配置多个dataSource ,再配置多个sqlSessionFactory,和dataSource一一对应。重写SqlSessionTemplate,支持多个sqlSessionFactory。最后配置mybatis自动扫描M 阅读全文
摘要:
映射器是mybatis的基础和核心,下面学习下映射器的使用 映射器的主要元素 select 查询语句,可以自定义参数和返回结果集 insert 插入语句,返回一个整数,代表插入的条数 update 更新语句,返回一个整数,代表更新的条数 delete 删除语句,返回一个整数,代表删除的条数 para 阅读全文
摘要:
在mybatis中要构建sqlSessionFactory对象,让它来产生SqlSession,而在mybatis-spring中,SqlSession的产生是通过SqlSessionTemplate来实现的,它提供了对SqlSession操作的封装。所以通过SqlSessionTemplate可以 阅读全文
摘要:
基本构成 SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口) SqlSessionFactory:依靠工厂来生成SqlSession(会话) SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取 阅读全文
摘要:
logback简介 Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的L 阅读全文
摘要:
在java web项目中我们通常会有这样的需求:当项目启动时执行一些初始化操作,例如从数据库加载全局配置文件等,通常情况下我们会用javaee规范中的Listener去实现 常用的监听器有spring的ContextLoaderListener 或者logback 阅读全文
摘要:
过滤器,拦截器,监听器具体应用上的区别 把整个项目的流程比作一条河,那么监听器的作用就是能够听到河流里的所有声音,过滤器就是能够过滤出其中的鱼,而拦截器则是拦截其中的部分鱼,并且作标记。所以当需要监听到项目中的一些信息,并且不需要对流程做更改时,用监听器;当需要过滤掉其中的部分信息,只留一部分时,就 阅读全文
摘要:
spring 过滤器简介 过滤器放在容器结构的什么位置 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet、一个Jsp页面,甚至是一个HTML页面)之前截获进入的请求,并且在它返回到客户之前截获输出请求。Filter:用来拦截请求,处于客户端与被请求资源之间,目的 阅读全文
摘要:
我们在开发过程中经常要用到线程池,线程池应该统一管理起来,而不是随用随建。ThreadPoolTaskExecutor——将线程池交给spring管理 1. ThreadPoolTaskExecutor配置 Reject策略预定义有四种: (1)ThreadPoolExecutor.AbortPol 阅读全文
摘要:
spring 拦截器简介 常见应用场景 1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录 阅读全文
摘要:
java对象的序列化 序列化一fastJSON 序列化二Serializable 阅读全文
摘要:
为什么使用线程池 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止消耗过多的内存 3.web项目应该创建统一的线程池,如静态或者交给容器处理,而不是每回都去 new 一个线程池 线程池流程 四种线程池 其实 阅读全文