- 浏览: 362428 次
- 性别:
- 来自: 上海
最新评论
-
小灯笼:
LoadRunner性能测试实战课程网盘地址:https:// ...
LoadRunner性能测试实战教程 -
爱上疯狂:
[范德萨发的是 发大水发大水发多大沙发啊quote]
main方法测试外系统接口 -
siphlina:
Loadrunner视频——http://pan.baidu. ...
LoadRunner性能测试实战教程 -
全球唯一的你:
LoadRunner性能测试实战视频教程课程观看地址:http ...
LoadRunner性能测试实战教程 -
凡人修仙:
课程:LoadRunner性能测试实战网盘地址: http:/ ...
LoadRunner性能测试实战教程
文章列表
多线程 主线程调用多个子线程
- 博客分类:
- bf
package com.tristan;
import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import com.google.common.util.concurrent.ThreadFactoryBuilder; ...
List<List<Rule>> partitionList = Lists.partition(rules, partitions);
可以对list进行分区
-------------------------
package com.tristan;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util. ...
思维方式不同
传统/互联网
功能实现,响应速度及时就ok了
大数据
需要考虑数据的拆分 -- 一份大文件进来需要拆分成很多个小文件
server/worker的关系
有些逻辑放在server端方便
比如并发逻辑的控制(顺序执行Map<String,BlockingQueue>, 只分配给一个worker来更新某张表的逻辑-->避免使用乐观锁了)
有些逻辑放在worker端方便
每次操作都需要访问的表,用hbase来查询会快很多。
--------------------------------
wait和sleep都可以用来停止一段时间
区别是wait是基于某个对象的,并且可以被notify
wait和notify都需要被synchronized 保护起来,否则编译时不会报错,但是运行时会报错。
wait notify
可以用于分布式的的响应, 如果数量没到就一直轮询并wait几秒钟, 等都处理完了,就继续下去。 同时可以用notify来通知, 就不需要等待几秒钟的时间了。
Long 转成 int
- 博客分类:
- bf
Long 转成 int
1》 (int)(long)long1
2》 Integer.valueOf(String.valueOf(long1))
3> long1.intValue()
作用就是使用外部环境中的变量时不需要作为参数传进来, 当然这些参数要设置成final, 不能改变其引用。
参见 PackageDispatcherImpl
mysql oracle 区别
- 博客分类:
- bf
mysql的date 只有日期没有时分秒 timestamp有
oralce的date 有时分秒 timestamp有毫秒 (oracle一般只会用date)
看上去mysql的date结构更加合理
---------------------
自增sequence oracle需要手动建立
mysql 只要在字段后加上 auto_increment
-----------------------
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
并发可以分为正常并发,恶意并发。
恶意并发可以用数据库的组合唯一索引来解决
正常并发可以用乐观锁加上递归来解决
synchronized只能解决单机问题, 集群环境则无能为力了。
传统IO最大的问题是
一个线程监听一个端口,一天只会有几次请求进来,但是该 cpu 不得不为该线程不断做上下文切换尝试,大部分的切换以阻塞告终
http://www.iteye.com/topic/834447
--------------------
支持所有文件格式
FileInputStream -- int(ascii码) -- FileOutputStream
FileInputStream -- BufferedInputStream -- byte[] -- BufferedOutputStream -- FileOutputStream
FileInputStream - ...
查询
建立索引
DB导数据到solr
-------------------
Stored 存储 - 能显示
Indexed 索引 - 能搜索
Tokenized 分词
luence倒排索引
数据库是B树索引
所以solr快
solr就是luence的web版
首先 B树不是二叉树, 可以有很多叉, 取决于定义Key的数量, 或者是权的数量
B树是平衡树的种类之一, 比二叉树的优点是, 由于它始终调整为“平衡”, 那么搜索时,始终能保持LOGN的效率, 二叉树如果极度不平衡, 比如左边一个,右边一长串, 这样的情况下最坏搜索效率能下降到N。
其所包含的索引条目都是按照顺序排列的
...
排序算法
冒泡排序 (1/2)N^2,快速排序 NlogN ,归并排序 NlogN
冒泡排序简单,不需要递归
快速排序对大多数集合很快,最差的情况是冒泡排序的2倍
归并排序稳定, 分治
JDK Arrays.sort用的是归并排序+冒泡排序(小于7的时候)
Java内存回收机制总结
- 博客分类:
- jj
根搜索算法
复制算法
标记整理算法
http://www.open-open.com/lib/view/open1380593930103.html
此处将引用《深入理解Java虚拟机——JVM高级特性与最佳实践》这本书的一些内容。
1、对象已死?
垃圾回收是对堆中对象的管理,首先就要确定什么是垃圾,即什么情况下堆中的对象可以被回收。
最常用的判定算法是引用计数算法,即每当有一个对象被其它对象所引用,则将对象的引用数+1,当对象的引用数为0时,则认为对象将不再被使用,可以回收。但引用计数算法有一个缺陷,即无法解决对象循环引用的问题。当对象相互引用时,将会给引用的双方的 ...
对于前台页面和后台接口拆分的项目,DB层用的是po 传输层dto 展示层vo
这种设计会有几个问题
1, 做一套CRUD页面的话,bean就要用3个,他们的属性基本一致,涉及到大量的属性拷贝。
2, 前台和接口都依赖于dto层,导致只要dto中数据修改,前台和接口所有的项目都要重新编译。
注: 这里可以做个偷懒 前台层直接用dto对象
改进
将dto剥离出来, dto直接定义在接口层(如果无必要直接将po包装下传出去也ok),前台vo和dto属性一致就ok,不用调用dto代码。
好处
1, 接口和前台不依赖于dto
2, 减少大量属性拷贝