小编Kum*_*ish的帖子

_id和$ oid之间的区别; mongo数据库中的$ date和IsoDate

我们使用mongo db在生产数据库中存储某些记录.

我们看到我们的记录"_id" : { "$oid" : "50585fbcb046b2709a534502"}在生产数据库中,而我们看到与"_id" : ObjectId(" 50585fbcb046b2709a534502 ")qa数据库中相同的记录.对于我们"ld" : { "$date" : "2011-12-03T17:00:00Z"}在prod数据库中看到的日期,而"ld" :ISODate("2011-12-03T17:00:00Z")在qa数据库中.我们已经在qa环境中成功测试了我们的查询,但担心它可能会在生产中失败

1)我的java查询是否可以在prod&qa上无缝地工作?(我使用morphia apis来查询)2)它们内部是否以相同的方式存储?

java mongodb morphia

14
推荐指数
1
解决办法
7370
查看次数

需要在5秒内使用hibernate在mysql中插入100000行

我试图使用Hibernate(JPA)在5秒内在MYSQL表中插入100,000行.我已经尝试过hibernate提供的每一个技巧,但仍然不能超过35秒.

第一次优化:我开始使用IDENTITY序列生成器,这导致插入60秒.我后来放弃了序列生成器并开始@Id自己通过阅读MAX(id)和使用AtomicInteger.incrementAndGet()自己分配字段来分配字段.这将插入时间减少到35秒.

第二次优化:我通过添加启用了批量插入

<prop key="hibernate.jdbc.batch_size">30</prop> <prop key="hibernate.order_inserts">true</prop> <prop key="hibernate.current_session_context_class">thread</prop> <prop key="hibernate.jdbc.batch_versioned_data">true</prop>

到配置.我很震惊地发现批量插入绝对没有减少插入时间.现在还有35秒!

现在,我正在考虑尝试使用多个线程插入.任何人有任何指针?我应该选择MongoDB吗?

下面是我的配置:1.Hibernate配置`

<bean id="entityManagerFactoryBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.progresssoft.manishkr" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
                <prop key="hibernate.jdbc.batch_size">30</prop>
                <prop key="hibernate.order_inserts">true</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
                <prop key="hibernate.jdbc.batch_versioned_data">true</prop>
            </props>
        </property>
    </bean>

    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          id="dataSource">
        <property name="driverClassName" value="${database.driver}"></property>
        <property name="url" value="${database.url}"></property>
        <property name="username" value="${database.username}"></property>
        <property name="password" value="${database.password}"></property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate jpa batch-insert

13
推荐指数
2
解决办法
1万
查看次数

如何用<input type ="text">打开android/chrome上的数字键盘?

输入的要求是输入美国的邮政编码,因此它将是5个整数,但它只是应用程序的一堆字符串.标记是HTML5.

  • 我无法使用,input type="number"因为01234将被转换为1234,对于邮政编码来说无赖!
  • 我目前正在使用input type="tel"数字键盘打开,但我认为邮政编码实际上是一个文本,因此我应该使用input type="text"其他一些过滤器强制数字键盘打开,这就是我做的,我尝试使用pattern="[0-9]*"但这似乎只适用于Safari浏览器(苹果设备)并打开数字键盘,但在Android设备(Chrome浏览器)上打开文本键盘而不是数字键盘.

因此,input type="text" pattern="[0-9]*"适用于iPhone iPad的Safari浏览器上,但也不会在Android设备上的Chrome浏览器.

任何人都知道如何input type="text"使用Chrome浏览器在Android设备上使用数字键盘打开?或者' input type="tel"'是在所有设备上普遍打开数字键盘的唯一方法吗?

类似的问题有时回到电话:文本输入的数字键盘

html5 android google-chrome mobile-safari android-softkeyboard

8
推荐指数
1
解决办法
3963
查看次数

git fetch和git merge之间的概念差异?为什么他们对我有同感?

所以git fetch概念上意味着从远程分支获取东西.现在git merge mybranch意味着将mybranch合并到当前分支中.我看不出两者有什么区别?我遗漏的那种鲜明的概念"在眼前"的区别是什么?

git

2
推荐指数
1
解决办法
163
查看次数

Future.get()没有返回所有结果

我正在创建15个可调用任务,并提交它们:

List<Future<MyResult>> futures = new ArrayList<Future<MyResult>>();
List<MyResult> myResults = new ArrayList<MyResult>();

for(int i = 1; i <= 15; i++){
    Callable<MyResult> task = new MyProcessor(//parameters);
    Future<MyResult> future = executorService.submit(task);
    futures.add(future);//used to iterate over to call get() to collect results in next for loop
}
Run Code Online (Sandbox Code Playgroud)

然后我收集了15个MyResult对象:

for(Future<MyResult> future : futures){
  try {
    MyResult myResult = future.get();
    processorResults.add(myResult);
    } catch (InterruptedException e) {
      //...
    } catch (ExecutionException e) {
      //...
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:不是从get()方法返回所有15个MyResult对象,我有时会得到少于15个对象.有时12有时10有时甚至更小,有时甚至15.

我的印象是,get()方法是一个阻塞调用,并且将等待所有15个线程返回相应的结果,但看起来我错过了其中一些并继续前进.我做错了什么?我没有收集结果/正确等待结果?当从任何MyProcessor任务抛出ERROR时会发生这种情况吗?

java multithreading future executorservice

0
推荐指数
1
解决办法
1947
查看次数