- 浏览: 1436765 次
- 性别:
- 来自: 广州
最新评论
-
raymond.chen:
谢谢您的分享
使用Ngrok解决通过外网访问内网web应用 -
wangyudong:
速度有点慢,不过在也找到了一个开源的holer,配置一个key ...
使用Ngrok解决通过外网访问内网web应用 -
a1006458222:
...
Axis2的部署和应用 -
偷师来了:
不好意思 这样的博客我觉得就灭有必要分享出来了 命令大家都会看 ...
Consul框架介绍 -
lliiqiang:
怎么直接删除文件夹啊?固定的几个文件可以删除,不固定的呢?需要 ...
Flex AIR —— 文件读写
文章列表
Oracle的表分区
- 博客分类:
- 数据库
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
表分区的优点
改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度
增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用
维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可
均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个 ...
1、全局异常处理
结合@ExceptionHandler注解使用
用于捕获Controller中抛出的指定类型的异常,从而达到不同类型的异常区别处理的目的。
2、全局数据绑定
结合@ModelAttribute注解使用
表示其标注的方法将会在目标Controller方法执行之前执行。
3、全局数据预处理
结合@InitBinder注解使用
用于request中自定义参数解析方式进行注册,从而达到自定义指定格式参数的目的。
//1. 给接口中的变量取别名
@PostMa ...
@InitBinder注解的使用
- 博客分类:
- springmvc
被此注解的方法可以对WebDataBinder初始化。
@InitBinder只在@Controller中注解方法来为这个控制器注册一个绑定器初始化方法,方法只对本控制器有效。
注册编辑器
@InitBinder
public void initBinder(WebDataBinder binder) {
CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true);
binder.registerCustomEditor(Date.cla ...
@ModelAttribute注解用于将请求参数绑定到Model对象。
在Controller类所有方法执行前,先调用此@ModelAttribute方法,可用于注解方法和方法参数。
@ModelAttribute注释方法
//@ModelAttribute注释void返回值的方法
public void populateModel(@RequestParam String attrValue, Model model) {
model.addAttribute("attributeName", attrValue);
}
//@ModelA ...
安装和配置Maven
- 博客分类:
- Linux
下载安装包: http://mirror.bit.edu.cn/apache/maven/
将安装包apache-maven-3.2.5-bin.tar.gz上传到/opt/software目录下
解压 tar -zxvf apache-maven-3.2.5-bin.tar.gz
配置环境变量
打开 /etc/profile 文件,添加以下内容:
export MAVEN_HOME=/opt/software/apache-maven-3.2.5
export PATH=$MAV ...
自定义注解扫描并动态注册bean
- 博客分类:
- springboot
缺省情况下,ClassPathBeanDefinitionScanner类只会扫描带有@Component(@RestController、@Controller、@Service、@Repository)、@ManagedBean、@Named 注解的类,如果要扫描自定义注解类,则需要通过创建ClassPathBeanDefinitionScanner类的子类实现该功能,该类对外提供scan方法,根据传入的包名,自动扫描加载BeanDefinition并将BeanDefinition注册到registry中。
ClassPathBeanDefinitionScann ...
通过 @Import 注解动态创建bean实例主要有四种方式:
导入普通java类,将其作为Spring bean注入到Spring容器中。
导入 @Configuration 注解标注的配置类。
导入实现ImportBeanDefinitionRegistrar接口的实现类。
导入实现ImportSelector接口的实现类。
1、导入普通Java类
配置类:
@Configuration
@Import({Role.class}) //导入普通Java类
class ImportAnnotat ...
Springboot的扩展点
- 博客分类:
- springboot
1、SpringApplicationRunListener接口
SpringApplicationRunListener接口用于在Springboot启动初始化的过程中可以通过接口回调来让用户在启动的各个流程中可以加入自己的逻辑。
用来在整个启动流程中接收不同执行点事件通知的监听者,SpringApplicationRunListener接口规定了SpringBoot的生命周期,在各个生命周期广播相应的事件,调用实际的ApplicationListener类。
创建实现类:
public class SeasySpringApplicat ...
keytool的使用
- 博客分类:
- Java
keytool是密钥和数字证书的管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于自我认证或数据完整性以及认证服务。
所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的每个证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,该文件只包括主体信息和对应的公钥。
Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。
常用的命令:
创建keystore和密钥对
keytool -genkey -alias seasy ...
Exchanger(交换者)是一个用于线程间协作的工具类,用于成对出现的线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。
两个线程通过 exchange() 方法交换数据, 如果第一个线程先执行 exchange() 方法,会一直等待第二个线程也执行 exchange(),当两个线程都到达同步点时,两个线程交换数据,将本线程生产出来的数据传递给对方。
Exchanger可以用于遗传算法,也可以用于校对工作。
范例:
/**
* 两个线程进行数据交换
*/
public class ExchangerTest {
private ...
布隆过滤器BloomFilter
- 博客分类:
- guava
布隆过滤器是用来判断一个元素是否出现在给定集合中,具有快速,比哈希表更节省空间等优点,而缺点在于有一定的误识别率。布隆过滤器能够明确指出元素绝对不存在于一个集合中,或是可能存在于一个集合中。
布隆过滤器是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
布隆过滤器以下面的方式工作:
添加元素到过滤器。
对元素进行几次哈希运算,当索引匹配哈希的结果时,将该位设置为1的。
原理:S集合中有n个元素,利用k个哈希 ...
JWT(JSON WEB TOKEN)是目前最流行的跨域认证解决方案,是基于RFC 7519标准定义的一种可以安全传输的小巧和自包含的JSON对象。由于数据是使用数字签名的,所以是可信任的和安全的。JWT可以使用HMAC算法对secret进行加密或者使用RSA的公钥私钥对来进行签名。
JWT通常由头部(Header),负载(Payload),签名(Signature)三个部分组成,中间以.号分隔,其格式为Header.Payload.Signature
Header:声明令牌的类型和使用的算法
alg:签名的算法
typ:token的类型,比如 ...
Bitset数据结构的使用
- 博客分类:
- Java
Bitset是Java中的一种数据结构。Bitset中主要存储的是二进制位,做的也是位运算,每一位只用来存储0,1值,主要用于对数据的标记。
BitSet是位操作的对象,值只有0或1(即true 和 false),内部维护一个long数组,初始化只有一个long segement,所以BitSet最小的size是64;随着存储的元素越来越多,BitSet内部会自动扩充,一次扩充64位,最终内部是由N个long segement 来存储。
Bitset的基本原理是,用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过。默认情况下,BitSet所有位都是0即false。
...
Springboot2默认情况下使用lettuce框架访问Redis,只需要在pom.xml文件添加以下依赖即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency> ...
Spring Security框架
为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架,应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。
1、创建pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven. ...