- 浏览: 397583 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (176)
- J2EE (24)
- Oracle (16)
- WebService (2)
- Other (11)
- 编译可添加参数 -keep-generated-actionscript=true (1)
- Log4 日志级别 (1)
- 汉字转拼音 (1)
- 定制文件提取和下载(提供多选) (1)
- soa suit update ip (1)
- IBM X3850 X5 系统安装 (1)
- XEN 虚拟化技术 (3)
- Windows 2003 (1)
- suse (1)
- solaris (1)
- weblogic (3)
- linux (2)
- solairs (1)
- os (1)
- oracle linux suse (1)
- Oracle Inventory Directory (1)
- 开启JBoss7的access_log功能 (0)
- jboss (2)
- 2013 (0)
- 2013-oracle-bpm (2)
- Oracle ERP (2)
- javascript (1)
- start shell command (1)
- PowerDesigner反向工程 mysql (1)
- http://it-ebooks.info/ (1)
- 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一) (1)
- web (1)
- 网站测速实用工具 (1)
- http://www.realvnc.com/download/vnc/5.1.1/ (1)
- 一次关于Waiting for table metadata lock的处理 (1)
- 64位系统下报libstdc++.so.6 GLIBCXX 错误 (1)
- http://baike.baidu.com/link?url=xB3rEIodVQXE7f4PACW9gi4rQeXvzwDirx8c1caiVny8VxqZHggyD3SLmJXV9_OH0jBi9xbY0toxg8noHn1O7a (1)
- MyEclipse (1)
- 探索Eclipse的OSGi控制台 (1)
- http file server (1)
- ZooKeeper-3.3.4集群安装配置 (1)
- 使用Zookeeper实现分布式共享锁 (1)
- http://blog.sina.com.cn/s/blog_7cd4dd3e0101e1rd.html (1)
- http://blog.csdn.net/chenyi8888/article/details/6626302 (1)
- http://www.cnblogs.com/qinwanlin/archive/2012/12/03/2797339.html (1)
- Apache Felix环境配备 (1)
- 安装Subversion1.82(SVN)插件 (1)
- Maven 打包war包 (1)
- squid (1)
- Nginx 做反向代理,后端是 tomcat,chrome 浏览器访问项目时加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH: (1)
- master and slave have equal MySQL server UUIDs 解决方法 (1)
- 分享6个目前国内优秀的Java开源项目----后台管理框架,值的收藏 (1)
最新评论
-
Aceslup:
嗯,已经知道解决方法了。需要JDK环境。
VisualVM指定JDK环境启动 -
静夜独窗:
很好,收藏,有时间好好看看
JVM那些事(heap&stack) -
LoveJavaMM:
你好,看了你的文章有点疑问
第一:
vi /etc/pam. ...
suse 11 telnet 和 ftp安装开通端口 -
方块石:
老兄,解压的要输入内容,是啥子
ant脚本部署war包全过程~~ -
hy158753228:
LZ有遇到过这个问题么:
我安你的说法安装了插件,打开一个.c ...
MyEclipse 8.6反编译插件安装
今天在开发过程中碰到了一处使用了beanutil中的fasthashmap.在网上查询对比了两者的区别。总算是弄明白了。
发现在缓存对象的时候基本上都使用commons的FastHashMap.
google一下发现HashMap vs FastHashMap的文章,感觉很奇怪.
下班后download下来FastHashMap的代码看了一下
commons中FastHashMap类的doc写道:
java.util.HashMap类的一种自定义实现,以应付多线程环境中大量只读方法而非改变改变结构的方法的访问.
当以fast模式运行时,只读方法不是线程安全的,而写操作以下面的步骤进行操作
1 克隆当前的数据集合
2 在克隆对象上进行修改
3 用修改过的克隆对象替换原对象
当FastHashMap被初始化的时候,默认是以slow模式运行.
另外该文档强烈建议:如果是以单线程的模式访问hashmap,建议直接使用hashmap而非FastHashMap,以获得
最大的性能.
接下来我们看FastHashMap的代码实现
首先是类定义,类构造器和类属性
- public class FastHashMap extends HashMap {
- protected HashMap map = null;
- protected boolean fast = false;
- public FastHashMap() {
- super();
- this.map = new HashMap();
- }
- }
public class FastHashMap extends HashMap { protected HashMap map = null; protected boolean fast = false; public FastHashMap() { super(); this.map = new HashMap(); } }
FastHashMap继承于HashMap,存储由HashMap实现的,通过fast来设置是否是以快速模式执行.可以初步认为FashHashMap是HashMap的一个代理.
先看get操作
- public Object get(Object key) {
- if (fast) {
- return (map.get(key));
- } else {
- synchronized (map) {
- return (map.get(key));
- }
- }
- }
public Object get(Object key) { if (fast) { return (map.get(key)); } else { synchronized (map) { return (map.get(key)); } } }
默认情况下,对map进行了同步,get方法的实现还是线程安全的.
这是之所以比HashMap类put数据速度慢的原因.
再看put操作
- public Object put(Object key, Object value) {
- if (fast) {
- synchronized (this) {
- HashMap temp = (HashMap) map.clone();
- Object result = temp.put(key, value);
- map = temp;
- return (result);
- }
- } else {
- synchronized (map) {
- return (map.put(key, value));
- }
- }
- }
public Object put(Object key, Object value) { if (fast) { synchronized (this) { HashMap temp = (HashMap) map.clone(); Object result = temp.put(key, value); map = temp; return (result); } } else { synchronized (map) { return (map.put(key, value)); } } }
注意到如果是fast模式,map的引用发生了改变,因此这一刻锁定了this,锁定了当前FastHashMap类的实例.这在大量读写方法并发的情况下,执行效率是很低的.
默认情况对map进行了同步,也是线程安全的.
因此总结
FastHashMap在设定fast=true的情况下才是以fast模式运行的
其次
FastHashMap是为了多线程的情况使用的,而hashmap应用于当线程情况.两者根本就不处于同一个应用场景.因此比较也是无意义的.
其次FastHashMap的put方法使用的是整个对象的实例锁,如果写进程很多很容易堵塞,这一点在fasthashmap的官方文档中已经很清楚写道:
* to operate in a multithreaded environment where the large majority of
* method calls are read-only, instead of structural changes.
发表评论
-
java jdk 下载地址
2012-01-17 14:14 1001jre http://java.com/zh_CN/down ... -
myeclipse插件汇总积累
2011-06-17 21:53 10821. tomcat插件: http://www.eclip ... -
[转]css3
2011-05-03 14:53 1288作为一个Web开发者,保持对未来Web标准的关注、学习和了解是 ... -
IE&FF兼容性
2011-04-04 17:33 12201. document.form.item 问题 (1)现 ... -
MyEclipse 8.6反编译插件安装
2011-01-08 16:03 9344第一步: 下载j ... -
QC邮件转发工具Mail Direct安装配置手册
2010-11-01 13:57 4994转 + > http://blog.163.com/k ... -
solaris机器操作....
2010-06-30 21:29 13761. 查看用户所在的组cat ... -
java反编译工具~
2010-06-11 20:10 904前几天从同事那里弄来一个很不错的java反编译工具。感觉有起来 ... -
收藏的URL
2010-02-25 17:19 9741. eclipse中反编译插件jadClipse http ... -
使用 Telnet 端口 25 测试 SMTP 通信
2010-02-24 17:10 2883From: http://www.cnitblog.com/w ... -
操作log4jAPI
2009-11-12 10:58 1187import java.io.ByteArrayOutputS ... -
Eclipse 插件
2009-10-15 10:09 12741. commons4e 插件. 这个Eclipse插件方便 ... -
最近公司内网打不开myeclipse官网
2009-06-25 09:17 2166最近想上官网下载些东西, 一直都打不开。后来使用代理 ,终 ... -
ant脚本部署war包全过程~~
2009-06-17 17:38 3798最近写了一个部署打包的ant,功能真强大,自动更新svn源码, ... -
自动生成toString方法.
2008-12-07 16:23 2064package com.zte; import java.la ... -
sqlplus如何执行command脚本。
2008-10-26 11:27 1871打开sqlplus,file->open->com ... -
使用ant 自定义复制指定文件
2008-09-08 15:19 3635//CopyFile.java类文件 import ... -
Hibernate 的 batch_size 与事务
2008-09-04 14:56 1492batch_size 即同时提交数据的数量,原本与事务并没有什 ... -
连接字符串中碰到的SelectMethod=cursor
2008-09-01 14:45 2110今天在数据库连接字符串中看到了selectMethod=cur ... -
Sqlplus中编译java需添加jar包的命令!
2008-08-20 17:52 1530loadjava -user user/pwd@sid pat ...
相关推荐
org.apache.commons 的经典jar 包 commons-beanutils-1.8.0-bin、 commons-betwixt-0.8、 commons-cli-1.1、 commons-codec-1.3、 commons-collections-3.2.1-bin、 commons-digester-1.8、 ...
当使用json技术时需要很多工具包,...2、java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap org.apache.c 3、java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
2层设计-2.4G RF高频信号收发模块硬件(cadence原理图+PADS PCB图+BOM)文件,可供学习及设计参考。
FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 目前FTP服务器软件都为国外作品,例如Server_U、IIS,国内成熟的FTP服务器软件很少,有一些如(Crob FTP Server),但从功能上看来远不能和那些流行的服务器软件媲美。
语音端点检测及其在Matlab中的实现.zip
Matlab 交互式多模型目标跟踪IMM.zip
numpynumpy试题(2021年整理精品文档).zip
【作品名称】:基于Python+Django城市PM2.5空气质量数据可视化分析系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: Python基于Django城市PM2.5空气质量数据可视化分析 开发软件:Pycharm + Python3.7 + Django + Echarts + Mysql 实现目标:利用已经收集各个城市包括北京、上海、广州、成都、沈阳的PM2.5空气数据,利用python进行各种数据分析,将分析结果保存到csv文件中,然后利用django框架的网站,前端采用echart对分析的结果进行图表可视化展示。
c#实现求解白拉修斯方程。程序使用文件流,四阶龙哥库塔法
单片机3.DSN
NumPy 的用途是什么
Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)Java游戏设计打飞机程序(源代码+LW)
Java项目之企业人事工资管理系统(源码) 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9
vb.net做的教务管理系统 功能完善 后台数据库使用的acce.zip
Nvidia 17.1最新win10&Win11 vGPU驱动 名称:551.78_grid_win10_win11_server2022_dch_64bit_internationa
协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。
参考文献: [1]李明轩,齐步洋,贺大玮.工业园区需求响应资源聚合优化配置方法[J].电网技术,2022,46(09):3543-3549.DOI:10.13335/j.1000-3673.pst.2021.1666. 1.摘要 需求响应资源数量的不断提升对响应资源的优化运行方法提出了更高的要求。面向工业园区内负荷聚合商开展日内需求响应的应用场景,提出了一种资源聚合优化配置方法,即在日前时段对响应资源预先聚合优化形成一定数量满足 特定条件的聚合体,再在日内运行时段对各聚合体进行优化调用以满足电网侧需求。该方法实现对数量庞大、分散存在、特性各异的资源的灵活聚合和优化配置,充分发挥各资源响应潜力和互补特性,并通过将大量求解计算从日内转移至日前时段,平衡了响应实时性要求与计算规模的矛盾。通过算例分析验证了所提模型与方法的合理性和有效性。
毕业设计[主机域名]HostDirector v1.01_hostdirector101.zip
基于MATLAB的pca人脸识别.zip
Qt+OpenCV通用视觉框架全套源码.zip.008