- 浏览: 137101 次
- 性别:
- 来自: 深圳
最新评论
文章列表
在开发Springboot应用时经常会采用如下MAVEN方式引用并不受MAVEN仓库管理的JAR
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc41</artifactId>
<version>4.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sqljdbc41 ...
以下本人总结了多种Web应用场景可以充分利用Redis的特性,大大提高生产效率
(1)在用户主页中显示最近的项目列表:首先Redis使用的是常驻内存的缓存,速度非常快。因此我们可以使用LPUSH来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为1000。如果用户需要检索的数据量超越这个缓存容量,这时才把请求发送到数据库。
(2)计数:大家都知道应用中经常要进行各种数据统,比如想知道什么时候封锁一个IP地址。INCRBY命令让这种用途变得很容易,通过原子递增保持计数;GETSET用来重置计数器;过期属性用来确认一个关键字什么时候应该删除。
(3)队列:在当前的 ...
Rabbitmq心跳机制与配置
- 博客分类:
- 开源动力
Rabbitmq 心跳机制与配置
默认情况下,在3.5.5版本之前,rabbitmq设置的默认与客户端心跳时间为580秒,之后为60秒。
如果时间间隔配置为0,则表示不启用heartbeat检测,两者时间会每隔timeout / 2 进行一次心跳互通。
启用心跳检测后,rabbitmq会为每个tcp连接创建两个进程用于心跳检测,关闭的时候也是成对的方式。
一个进程定时检测tcp连接上是否有数据发送(这里是指rabbitmq发送数据给客户端),如果一段时间内没有数据发送给客户端,则发送一个心跳包给客户端,然后循环进行下一次检测;另一个进程定时检测tcp连接上是否有数据接收,如果一段 ...
Spring 框架笔记—4.16.2 标准与自定义事件
Event handling in the ApplicationContext is provided through the ApplicationEvent class and ApplicationListener interface. If a bean that implements the ApplicationListener interface is deployed into the context, every time an ApplicationEvent gets published ...
高级话题之—Exception Handling in Spring MVC
Spring MVC provides several complimentary approaches to exception handling but, when teaching Spring MVC, I often find that my students are confused or not comfortable with them.
【Spring MVC 提供了几种免费的异常处理方式 ...
RabbitMQ调优系列2 为大量连接进行调整
Some workloads, often referred to as "the Internet of Things", assume a large number of client connections per node, and a relatively low volume of traffic from each node. One such workload is sensor networks: there can be hundreds of thousands or millions of sens ...
RabbitMQ调优系列1 调整I/O线程线程池
Erlang runtime uses a pool of threads for performing I/O operations asynchronously. The size of the pool is configured via the RABBITMQ_IO_THREAD_POOL_SIZE environment variable. The variable is a shortcut to setting the +A VM command line flag, e.g. +A 128.
【Erlang 运行时使用一 ...
避免用例驱动的坑
一、什么是一份好的用例
能和客户达成需求共识,就是一份好的用例!
从用户的角度,用例比模棱两可的功能点描述要清晰,也更直白。
从开发团队角度,RUP的核心方法论之一---用例驱动,明白人自然明白它的妙用。
设计人员的设计手段:“用时序图分析用例的实现,在描述过程中确定构件或类,分配它们的职责和方法”,通过对用例覆盖率的追踪,需求与设计之间的信息损耗这个巨大问题会大大降低。
二、避免用例驱动的常见坑
1. 客户没有能力阅读用例
解决方法:放弃编写用例,改回用户容易看的传统方式。例如做原型图
2.团队没有能力实现用例驱动
如果开发团队在设计与测试时,根本不依照用例 ...
MySQL分区表使用场景及特点介绍
- 博客分类:
- MySQL
MySQL分区表使用场景及特点介绍
本文旨在介绍MySQL分区表的运用场景及其特点,MySQL分区表主要有
Hash分区表
Range分区表
LIST分区表
一、Hash分区表
Hash分区表特点:逻辑上为一个表,但在物理上存储在多个文件中,以用户登陆日志表为例,
user_login_log(
log_id int '日志ID',
login_id int '登陆用户ID',
login_time datetime '用户登陆时间',
login_ip int '登陆IP',
...
Maven 测试插件failsafe 与 surefire 区别
区别一
failsafe主要用于集成测试,maven-failsafe-plugin 只会搜索*IT.java来跑测试
surefire主要用于单元测试,maven-surefire-plugin只会搜索*Test.java来跑测试
注意事项
如果想要在maven打包的时候跳过集成测试,只需要mvn clean install -DskipITs。
Spring boot 参考手册——第40章测试功能 阅读笔记和注意点
基于Spring boot 1.3.8.RELEASE版本
40.3 测试Spring Boot应用
1.spring-boot-test在创建Spring boot测试所需要的ApplicationContext时和创建Spring Framework的测试所需要的ApplicationContext并无太大区别,但有一点要注意:
像外置属性、日志记录及其他Spring boot特性需要基于SpringApplication创建
2.spring-boot-test 提供的注解@SpringApplicat ...
Hibernate框架中为持久化的对象设计了三种状态,处于这三种状态的对象通过一定的操作对象状态可以发生相互转化:
transient--瞬时态:通过new关键字创建的实体对象或尚未与Hibernate Session关联的对象,失去引用的话,就会被Java虚拟机回收。
persistent--持久态:通过get/load、Query查询获得或已经与当前Hibernate Session产生关联,并且相关联的session没有关闭,且事务尚未提交。
detached--脱管态:无法直接获得;存在持久化OID,但没有与当前Hibernate Session关联,hibernate不能检测到脱管状态 ...
Git 常见用法记录
- 博客分类:
- 开源动力
记录Git常见用法
以下Git命令的用法在是日常工作中使用频次较高,特此记录。在下文所示的命令行中
master 表示<local_branch>
origin/master 表示<remote_branch>
显示远程有而本地没有的commit信息
$ git log master origin/master
显示本地仓库分支与远程仓库分支差异
git diff master origin/master
统计文件的改动
git diff --stat master origin/master
撤销暂存区中的修改
git ...
redo log是关系型数据库的核心啊,保证了ACID里的D。
所以redo log是牵一发而动全身的操作 当内存数据页跟磁盘数据页不一致的时候,把内存页称为'脏页'。
如果redo log设置得太小,redo log写满.那么会涉及到哪些操作呢,我认为是以下几点:
1.把相对应的数据页中的脏页持久化到磁盘,checkpoint往前推
2.redo log还记录了undo的变化,undo log buffer也要持久化进undo log
3.当innodb_flush_log_at_trx_commit设置为非1,还要把内存里的redo log持久化到磁盘上
4.redo log还记录了cha ...
InnoDB 刷脏页的控制策略
- 博客分类:
- MySQL
InnoDB 使用缓冲池(buffer pool)管理内存,缓冲池中的内存页有三种状态:
第一种是,还没有使用的;
第二种是,使用了并且是干净页;
第三种是,使用了并且是脏页。
InnoDB 的策略是尽量使用内存,因此对于一个长时间运行的库来说,未被使用的页面很少。
而当要读入的数据页没有在内存的时候,就必须到缓冲池中申请一个数据页。这时候只能把最久不使用的数据页从内存中淘汰掉:如果要淘汰的是一个干净页,就直接释放出来复用;但如果是脏页呢,就必须将脏页先刷到磁盘,变成干净页后才能复用。
所以,刷脏页虽然是常态,但是出现以下这两种情况,都是会明显影响性能的:
.一个查询要淘汰的脏页个数太多, ...