spring ioc 体系结构
发表于
|
更新于
|
分类于
spring
,
source code
,
java
1. Resouce 体系org.springframework.core.io.Resource是对资源的抽象, 不同实现类代表了对不同资源的访问策略.
2. ResourceLoader 体系org.springframework.core.io.ResourceLoader统一处理资源加载过程.
3. BeanFactory 体系org.springframework.beans.factory.BeanFactory是底层的 IOC 容器, 负责管理BeanDefinition以及 Bean 实例, 默认使用的最终实现类是org.springframework.beans.factory.support.DefaultListableBeanFactory.
4. BeanDefinition 体系org.springframework.beans.factory.config.BeanDefinition是对 Bean 的抽象
5. BeanDefinitionReader 体系org.springframework.beans.factory.xml.XmlBeanD
...
code-snippet
发表于
|
更新于
spring mvc 文件上传下载加入依赖jar
12345678910<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version></dependency><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version></dependency>
增加 spring 配置1234<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsM
...
java8-optional
问题在调用一个方法后需要链式的获取某个字段, 比如:
123// 调用接口, 获取用户名ResponseDTO dto = xxxServcice.foo();String username = dto.getUser().getUserName();
但是上面的方法可能会抛出空指针异常, 因此, 为了程序的健壮性, 我们一般在每一步的get前都需要进行非空判断:
12345678// 调用接口, 获取用户名ResponseDTO dto = xxxServcice.foo();if (dto != null) { User user = dto.getUser(); if (user != null){ String username = user.getUserName(); }}
如果字段获取链路过深, 那么这些非空判断非常多, 很烦. 下面介绍下 如何使用 jdk8 中的Optional类解决这个问题.
OptionalAPI首先看一下Optional都有哪些方法
构造类方法有三个静态 empty(), o
...
spring-refresh方法分析
发表于
|
更新于
spring源码版本: 4.3.1-RELEASE
AbstractApplicationContext#refresh1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 设置启动时间和启动标识active为true // 如果是web应用, 则会替换servletContextInitParams和servletConfigInitParams配置 prepareRefresh(); // 创建DefaultListableBeanFactory, 加载BeanDefinition
...
在hexo中画图-ECharts
发表于
|
更新于
|
分类于
hexo
Echarts文档
Echarts百度开源的一款前端绘图库, ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
安装在博客目录下执行如下命令:1npm install hexo-tag-echarts --save
该插件依赖的ECharts版本为https://cdn.bootcss.com/echarts/3.8.0/echarts.common.min.js, 比较老了, 有些新的特性不支持, 需要手动修改ECharts版本, 修改博客目录下的node_modules/hexo-tag-echarts3/template.html文件, 将其中的ECharts引用url改为https://cdn.bootcss.com/echarts/4.1.0-release/echarts.min.js
折线图简单的123456789101112131415{% echa
...
在hexo中画图-PlantUml
发表于
|
更新于
|
分类于
hexo
PlantUml文档
PlantUmlPlantUML 是一个画图脚本语言,用它可以快速地画出:时序图, 流程图, 用例图, 状态图, 组件图.
安装在博客目录下执行如下目录, 安装PlantUml插件1npm install hexo-tag-plantuml --save
使用类图包你可以通过关键词 package 声明包,同时可选的来声明对应的背景色(通过使用html色彩代码或名称), 包也可嵌套1234567891011121314{% plantuml %}package "Classic Collections" #DDDDDD { Object <|-- ArrayList}package net.sourceforge.plantuml { Object <|-- Demo1 Demo1 *- Demo2 package net.sourceforge.plantuml.demo { Demo2 <-- Demo3 }}{
...
shell
基本语法echo 命令脚本中会大量用到echo命令输出执行日志
12345678# 单行$ echo hello worldhello world# 多行$ echo "helloworld"
常用参数-n默认情况下,echo输出的文本末尾会有一个回车符。-n参数可以取消末尾的回车符,使得下一个提示符紧跟在输出内容的后面。
123456789$ echo -n hello worldhello world$$ echo a;echo bab$ echo -n a;echo bab
-n参数可以让两个echo命令的输出连在一起,出现在同一行。
-e-e参数会解释引号(双引号和单引号)里面的特殊字符(比如换行符\n)。如果不使用-e参数,即默认情况下,引号会让特殊字符变成普通字符,echo不解释它们,原样输出。
12345678910$ echo "Hello\nWorld"Hello\nWorld$ echo -e "Hello\nWorld"HelloWorld$ echo -e 'Hello\nWorld'HelloWorld
变量声明变量变量声明方式: 变量名=变量值, =左右不要
...
jdk8时间日期
JDK8之前的日期api有很多不便的地方, 如:
java.util.Date 和 java.util.Calendar类易用性差, 不支持时区, 而且他们都不是线程安全的
用于格式化日期的类DateFormat被放在java.text包中, 它是一个抽象类, 在处理日期格式化时我们会实例化一个SimpleDateFormat对象, 但DateFormat也是非线程安全
对日期的计算方式繁琐, 而且容易出错, 因为月份是从0开始的, 从Calendar中获取的月份需要加一才能表示当前月份
由于以上这些问题, 出现了一些三方的日期处理框架, 例如Joda-Time, date4j等开源项目. 其中Joda-Time框架的作者正是JSR-310的规范的倡导者, 而Java 8中引入了新的日期API是JSR-310规范的实现, 所以能从Java 8的日期API中看到很多Joda-Time的特性.java.time包下有5个包组成, 大部分情况下只用基础包和format就够了
java.time: 包含值对象的基础包
java.time.chrono: 提供对不同的日历系统的访问
ja
...