- 浏览: 140091 次
- 性别:
- 来自: 深圳
最新评论
-
wzk2111:
代码 可用,楼主的思路可以参考
javascript加密java解密 -
Imini123:
[align=center][color=red][/colo ...
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
igting:
js对+,@符号的加密应该有问题,java解密不对。
javascript加密java解密 -
Seanman:
初学freemarker,源码不全,不知道怎么用
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
无敌洋葱头:
目前这个只能对0-9 A-Z a-z加密,而且js还有问题。c ...
javascript加密java解密
package com.xxxpiao.common.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.apache.commons.lang.ArrayUtils; public class CollectionUtils { /** * 分批处理数组的工具类 * * @param collections * 需要处理的数组集合 * @param callBack * 处理数组的回调函数 * @param size * 每批处理的个数 */ @SuppressWarnings("unchecked") public static <E extends Object> void splitCollectionHandle(List<E> collections, ListCollectionCallback<E> callBack, int size) { if (collections == null || collections.isEmpty()) return; int collectionSize = collections.size(); if (collectionSize < size) { callBack.call(collections); return; } int forCount = collectionSize / size; int mode = collectionSize % size; Object[] objectArr = collections.toArray(); for (int i = 0; i < forCount; i++) { Object[] tempArr = ArrayUtils.subarray(objectArr, i * size, (i + 1) * size); List<E> objectList = (List<E>) Arrays.asList(tempArr); callBack.call(objectList); } if (mode > 0) { Object[] tempArr = ArrayUtils.subarray(objectArr, size * forCount, size * forCount + mode); List<E> objectList = (List<E>) Arrays.asList(tempArr); callBack.call(objectList); } } /** * 分组调用callBack里的业务,异步调用,全部组调用完后同步 * * @param collections * 需要处理的数组集合 * @param callBack * 处理数组的回调函数 * @param size * 每批处理的个数 */ @SuppressWarnings("unchecked") public static <E extends Object> void splitCollectionAsyncCall(List<E> collections, ListCollectionCallback<E> callBack, int size) throws InterruptedException, ExecutionException,Exception{ if (collections == null || collections.isEmpty()) return; int collectionSize = collections.size(); if (collectionSize < size) { callBack.call(collections); return; } class AsyncCall implements Runnable{ ListCollectionCallback<E> callBack=null; List<E> objectList = null; public AsyncCall(ListCollectionCallback<E> callBack,List<E> objectList){ this.callBack =callBack; this.objectList = objectList; } public void run(){ callBack.call(objectList); } } int forCount = collectionSize / size; int mode = collectionSize % size; final ExecutorService exePool = Executors.newFixedThreadPool(forCount+(mode>0?1:0));//每个组一个线程 final List<Future<?>> dataList = new ArrayList<Future<?>>(); Object[] objectArr = collections.toArray(); for (int i = 0; i < forCount; i++) { Object[] tempArr = ArrayUtils.subarray(objectArr, i * size, (i + 1) * size); List<E> objectList = (List<E>) Arrays.asList(tempArr); Future<?> future = (Future<?>) exePool.submit(new AsyncCall(callBack,objectList)) ; dataList.add(future); } if (mode > 0) { Object[] tempArr = ArrayUtils.subarray(objectArr, size * forCount, size * forCount + mode); List<E> objectList = (List<E>) Arrays.asList(tempArr); Future<?> future = (Future<?>) exePool.submit(new AsyncCall(callBack,objectList)) ; dataList.add(future); } List<Exception> exceptionlist = new ArrayList<Exception>(); for (Future<?> future : dataList) {//同步 try { future.get(); } catch (InterruptedException e) { exceptionlist.add(e); } catch (ExecutionException e) { exceptionlist.add(e); } catch (Exception e) { exceptionlist.add(e); } } if(!exceptionlist.isEmpty()){ exePool.shutdown(); throw exceptionlist.get(0); } exePool.shutdown(); } public static void main(String[] args){ return; } public static <E extends Object> void splitCollectionHandle(Collection<E> collections, CollectionCallback<E> callBack, int size) { if (collections == null || collections.isEmpty()) return; int collectionSize = collections.size(); if (collectionSize < size) { callBack.call(collections); return; } int forCount = collectionSize / size; int mode = collectionSize % size; Object[] objectArr = collections.toArray(); for (int i = 0; i < forCount; i++) { Object[] tempArr = ArrayUtils.subarray(objectArr, i * size, (i + 1) * size); List<E> objectList = (List<E>) Arrays.asList(tempArr); callBack.call(objectList); } if (mode > 0) { Object[] tempArr = ArrayUtils.subarray(objectArr, size * forCount, size * forCount + mode); List<E> objectList = (List<E>) Arrays.asList(tempArr); callBack.call(objectList); } } public static Map<String, Object> changeDbStyleKeyToJavaStyleKey(Map<String, Object> sourceMap) { if (null == sourceMap) { return sourceMap; } Map<String, Object> targetMap = new HashMap<String, Object>(); for (Entry<String, Object> entry : sourceMap.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); targetMap.put(StringUtil.changeDbcloumStyleToJavaStyle(key), value); } return targetMap; } /** * 把LIST中类型为简单对象类型INTERGER,LONG ...里的值转为逗号分隔的串 1,2,3 * 满足IN查询需要 * @param list * @return NULL或SIZE<1时返回 '' * @create_time 2012-9-22 下午04:43:39 */ public static String listToString(List<?> list){ if(list==null || list.size()<1){ return ""; } StringBuffer s = new StringBuffer(512); for(Object o :list){ s.append(o.toString().trim()+","); } if(s.length()>0) s.deleteCharAt(s.length()-1); return s.toString(); } public static String collectionToString(Collection<?> list){ if(list==null || list.size()<1){ return ""; } StringBuffer s = new StringBuffer(512); for(Object o :list){ s.append(o.toString().trim()+","); } if(s.length()>0) s.deleteCharAt(s.length()-1); return s.toString(); } }
package com.xxxpiao.common.utils; import java.util.Collection; public interface CollectionCallback<E extends Object> { public void call(Collection<E> collection); }
@Override public Map<String, BetPlan> queryBetPlanMapByPlanNoList(Collection<String> planNoSet) { final Map<String, BetPlan> resultMap = new HashMap<String, BetPlan>(); if (planNoSet == null || planNoSet.isEmpty()) { return resultMap; } CollectionCallback<String> callback = new CollectionCallback<String>() { @Override public void call(Collection<String> collection) { Map<String, Object> paramMap = new HashMap<String, Object>(); String planNoList = StringUtils.join(collection, ","); paramMap.put("planNoList", planNoList); List<BetPlan> betPlanList = betDbDao.queryList("BetPlanDao.queryBetPlanByPlanNoSet", paramMap); for (BetPlan betPlan : betPlanList) { resultMap.put(betPlan.getPlanNo(), betPlan); } } }; com.xxxpiao.common.utils.CollectionUtils.splitCollectionHandle(planNoSet, callback, 50); return resultMap; }
发表评论
文章已被作者锁定,不允许评论。
-
ES聚合查询大全
2020-11-18 16:16 266package com.xxx.es; import ... -
spring中使用logback日志组件替换log4j
2015-04-29 15:27 944logback比log4j的强大之处,请到logback的主页 ... -
java加密解密
2015-02-10 15:05 1728package com.neo.xnol.weixin.u ... -
eclipse常用配置
2015-01-05 11:23 1241Eclipse常用配置介绍 以 ... -
分布式事务-幂等
2014-12-30 14:04 681引用 http://www.360doc.com/conten ... -
实现基于nginx的tomcat负载均衡和集群配置
2014-12-26 16:22 1114今天看到"基于apache的tomcat负载均衡和集 ... -
java导出Excel
2014-10-14 17:00 1103package com.xxxpiao.datacompa ... -
<base target="_self"/>标签的巧妙用法
2014-10-10 15:34 746最近项目中一个小问题卡了我不少时间。我遇到的问题是:在项目的弹 ... -
分布式一致性-幂等
2014-09-28 14:53 1097关于分布式系统的数据 ... -
ModelResult-查询封装类
2014-09-25 09:14 3547package com.xxx.appmodel.doma ... -
LDAP工具类
2014-09-05 10:12 884package com.xxxpiao.common.ut ... -
通过JNDI访问LDAP目录服务
2014-09-04 17:46 3105package com.sina.test; imp ... -
java获取两个日期之间的年月(yyyy-MM)和年月日(yyyy-MM-dd)
2014-07-29 14:42 1842public List<String> pro ... -
maven-.m2
2014-07-28 14:48 797<settings> <!--< ... -
maven实战
2014-07-07 10:04 755<settings> <!--< ... -
验证敏感词汇
2014-07-04 10:01 958package com.xxxpiao.core.memb ... -
Jms实战
2014-07-02 09:27 695<?xml version="1.0&qu ... -
互联网数功能位,表扩展(flagBit,feature)
2014-06-26 17:39 812<select id="queryRegT ... -
线程运用-抽象类使用
2014-06-26 17:34 855package com.xxx.betcart.serve ... -
JDBC分批更新
2014-06-26 17:11 621@Override public boolean ba ...
相关推荐
这里,你需要首先查询出前`每页显示数*(当前页数-1)`条记录,然后从主查询中排除这些记录,以获取下一页的数据。 3. Oracle 分页 Oracle 使用 `ROWNUM` 属性来限制返回的行数。然而,由于 `ROWNUM` 在查询时就确定...
由于查询大量数据可能导致性能下降,因此采用分批查询策略是必要的。例如,可以设置一个批次大小,每次查询这个数量的数据。使用`LIMIT`和`OFFSET` SQL语句实现分页查询: ```sql SELECT * FROM table_name LIMIT ...
本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。线程池是一种多线程处理形式,预先创建了若干个线程,当有任务需要执行时,会从线程池中取出...
1. **分批处理**:避免一次性加载所有数据到内存中,而是采用分批次的方式进行查询和处理。 2. **合理设置查询参数**:例如设置`setFetchSize`来控制每次获取的数据量,减少内存压力。 3. **结果集的优化**:使用...
使用模版编程,采用代理模式,采集变化的细分,自动完成拼写SQL,降低数据库落地缺陷集成Mybatis-PageHelper分页,大数据量可以分批查询,提升查询速度 将同步存储可变落地抽象为EntityService,具体存储服务可继承...
3. **分块查询**:如果数据量过大,可以尝试分批查询,每次处理一部分数据,以减轻数据库系统的压力。 4. **使用全文搜索引擎**:如Elasticsearch或Solr,它们专门设计用于高效处理模糊和多列查询,尤其适合大数据...
- **合理分批查询**:为了避免给搜索引擎带来过多负担,建议将大量URL分成小批次进行查询。 - **定期监测**:定期使用工具进行收录查询,及时发现收录问题并采取措施。 - **结合其他工具**:与关键词分析、网站...
bulk collect在 select ... into、fetch ... into、returning ... into中的应用。
数据库可以提供高效的查询和数据管理功能,同时支持批量导入导出。 7. **数据预处理**:在导入Excel前,对数据进行清洗和预处理,如删除重复项、填充缺失值、转换数据类型,可以提高导入效率和数据质量。 8. **...
1、ListView 分页加载(主要是要搞明白数据库的查询操作: Cursor cursor = db.rawQuery("select * from test limit ? offset ?", new String[]{ ...4、SQLite 数据库的增删改查(分页查询、分批查询操作)
用户可以一次性输入多个快递单号,软件会自动分批查询并显示所有包裹的状态,极大地提高了工作效率。 4. **实时更新** 软件能够实时同步快递公司的最新数据,确保用户获得的信息是最准确、最新的。一旦快递状态有...
用开源 Apache POI 技术导出Excel,解决导出大数据出现OOM、栈溢出问题,此资源可实现百万级数据多线程分批导出Excel文件,不会内存溢出,生产环境已很稳定的使用者,所以用到的技术很核心、值得参考
"纯前端模糊查询和数据的分批加载demo"是一个很好的实践案例,它涵盖了如何仅使用JavaScript实现前端模糊查询以及如何通过分批加载来优化DOM性能。下面我们将深入探讨这两个核心知识点。 一、JavaScript模糊查询 1...
6. **性能优化**:对于大量网站的查询,可能需要考虑使用异步处理、队列或者分批查询来避免过大的负载。 7. **API调用频率控制**:为了遵守搜索引擎的使用政策,避免被封禁,源码可能包含对API调用频率的控制,如...
此时可以通过分批查询、增加过滤条件等方式减少返回的结果集大小。 7. **锁或死锁** 锁机制是用来保证数据一致性的重要手段,但不当的使用会导致查询等待时间过长甚至出现死锁情况,严重影响查询性能。 8. **SP_...
4. 批量处理优化:对于大数据量的处理,可以继续使用分批查询的方式,但需考虑调整每次分批的数量。通过分析数据分布和读取效率,找到一个平衡点,既能减少每次查询的耗时,又能尽量减少查询的总次数。 5. 使用持久...
6. **数据量过大**:查询返回过多数据会导致性能下降,通过优化查询逻辑或使用分批查询可以缓解此问题。 7. **锁和死锁**:并发控制不当会导致锁竞争,从而影响查询速度。优化锁策略和避免死锁是必要的。 8. **...
- 使用LIMIT和OFFSET来进行分批查询,减少单次查询的数据量。 - 释放不再使用的变量,例如使用unset()函数。 - 在处理大型数组或对象时,使用unset()来移除不再需要的部分。 - 定期清理内存,例如使用sleep()函数让...
change log: 1. 2006年 初始版本发布,主要封装一些访问 MYSQL 的 C API,能便捷的访问 MYSQL 数据库; 2. 2010年 版本是原来版本的修正版本; 主要增加功能如下: ...3. 增加分批查询数据(limit+offset)形式;
1. 设计查询语句:编写SQL语句,根据需求进行筛选,如按日期范围分批查询。 2. 批量处理:通过循环或批量操作接口,分批获取数据,避免一次性加载大量数据导致内存压力。 3. 数据转换:将查询结果转换为适合...