- 浏览: 116472 次
- 性别:
- 来自: 北京
最新评论
-
yueweichao0927:
return Criteria.where(queryFiel ...
使用Spring-data-mongodb构建通用的MongoDB DAO -
javatozhang:
引用dbmonster.bat -c dbmonster.pr ...
数据库数据自动生成工具dbmonster
文章列表
在对程序进行测试时,需要向数据库中插入大量数据来进行模拟。目前有很多工具可以自动生成,比如开源的dbmonster。
http://sourceforge.net/projects/dbmonster/
该工具通过配置数据库表的信息就可以生成指定条数的数据。
从网站上下载dbmonster-core-1.0.3包后,把相应的数据库jar包拷贝到lib目录下,比如mysql的jar包。然后配置dbmonster.properties:
dbmonster.jdbc.driver=com.mysql.jdbc.Driver
dbmonster.jdbc.url=jdbc:mysql: ...
和关系型数据库类似,在使用MongoDB的时候最主要还是CRUD,而Spring-data-mongodb封装了MongoTemplate类,可以方便的进行相应的操作。
首先,配置spring
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance& ...
原文地址:http://www.uml.org.cn/sjjm/201207161.asp
问题
某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。
PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。
存储结构
首先,我们用一张用户积分表user_score来保存用户的积分信息。
表结构:
示例数据:
在各种并发编程模型中,生产者-消费者模式大概是最常用的了。在实际工作中,对于生产消费的速度,通常需要做一下权衡。通常来说,生产任务的速度要大于消费的速度。一个细节问题是,队列长度,以及如何匹配生产和消费的速度。
一个典型的生产者-消费者模型如下:
在并发环境下利用J.U.C提供的Queue实现可以很方便地保证生产和消费过程中的线程安全。这里需要注意的是,Queue必须设置初始容量,防止生产者生产过快导致队列长度暴涨,最终触发OutOfMemory。
对于一般的生产快于消费的情况。当队列已满时,我们并不希望有任何任务被忽略或得不到执行,此时生产者可以等待片刻再提交任务,更好的做法是, ...
windows下查看端口被什么程序占用
- 博客分类:
- 杂
今天调试程序的时候发现有一个ip是我本地的应用请求我应用程序的8080端口,每5分钟一次,请求url如下:
/announce?info_hash=%E4%CC%91%DAg%D95U%9F%96AG%05%1A%E7B%1B%97%E4S&peer_id=%2DSD0100%2D%F9e%2F%29%3D%EA%CF%20x7%26%11&ip=10.2.154.70&port=9775&uploaded=1642806049&downloaded=1642806049&left=336592896&numwant=200&k ...
在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
责任链模式涉及到的角色如下所示:
Ø 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。下图中的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。
Ø 具体处理 ...
过滤器相关类的结构
spring mvc的org.springframework.web.filter包下的Java文件如下:
类的结构如下:
AbstractRequestLoggingFilter及其子类
AbstractRequestLoggingFilter类定义了两个方法beforeRequest和afterRequest分别用于设定过滤前后执行的操作,它有三个子类,分别是CommonsRequestLoggingFilter、ServletContextRequestLoggingFilter和Log4jNestedDiagnosticContextFilter, ...
问题描述:在创建合同时,会选择一个何时付款的策略,比如,目前策略有:
合同执行开始时付款100%,
合同执行结束后付款100%
合同每月结算当月应付金额
...
并且付款的策略还会改变。
最初的代码使 ...
Redis是什么
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。
Redis的优点
性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Order ...
BlockingQueue接口
BlockingQueue接口继承自Queue接口:
public interface BlockingQueue<E>extends Queue<E>
与Queue队列相比,它是线程安全的。添加和移除元素有四类方式,其中add()、remove()、offer()、poll()、element()、peek()方法继承自Queue。
Throws exception
Special value
Blocks
Times out
Insert
boolean add(e)
boolean offer(e ...
先看一个有问题的只能轮替发生的生产者-消费者模型代码(源自http://www.iteye.com/problems/96126的问题):
//生产/消费者模式
public class Basket {
Lock lock = new ReentrantLock();
// 产生Condition对象
Condition produced = lock.newCondition();
Condition consumed = lock.newCondition();
boolean available = false;
...
首先来看下spring -context-3.0.xsd中关于<contenxt:component-scan/>属性use-default-filters的定义:
<xsd:attribute name="use-default-filters" type="xsd:boolean"
default="true">
<xsd:annotation>
<xsd:documentation><![CDATA[
Indicates whether automa ...
先来看下proxy_set_header的语法
语法:
proxy_set_header field value;
默认值:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
上下文:
http, server, location
允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。 当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面的级别继承配置。 默认情况下,只有两个请求头会被 ...
ConcurrentHashMap类与 Hashtable 相似,都是线程安全的,但与 HashMap 不同,它不 允许将 null 用作键或值。
可以使用Iterator和Enumeration进行遍历,且不会抛出ConcurrentModificationException。不过,迭代器被设计成每次仅由一个线程使用。
ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。
ConcurrentHashMap的内部结构
ConcurrentHashMap ...
首先抽象实体Bean的父类BaseModel,包括通用的创建时间、分页等基本信息:
public abstract class BaseModel implements Serializable {
private static final long serialVersionUID = -665036712667731957L;
/**
* 排序 升 降
*/
private String order;
/**
* 排序字段
*/
private String orderBy;
...