- 浏览: 2662689 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
1.不要使用string的split
不要使用string的split,可以看看内部的2B实现:
每次会造成正则表达式的重新编译, 这是很消耗性能/内存的过程。 自己使用java的正则接口(如果表达式非常复杂, 我不建议使用java的正则接口,建议采用oro库)。 讨论帖子:http://www.iteye.com/topic/626801?page=2
2.使用spring的BeanWrapperImpl做bean组装请提前做好类型转换
spring BeanWrapperImpl 实现的类型转换有性能问题,刚才我测试来一把
使用spring BeanWrapperImpl进行类型转换的耗时:
4.687(ms)
3.508(ms)
3.261(ms)
3.177(ms)
7.526(ms)
3.393(ms)
先自己做好类型转换再调用setPropertyValue()的耗时:
0.603(ms)
0.699(ms)
0.559(ms)
0.591(ms)
0.579(ms)
0.532(ms)
可以看宝宝webx3中AbstractValueParser.setProperties()的实现:
不要使用string的split,可以看看内部的2B实现:
public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); }
每次会造成正则表达式的重新编译, 这是很消耗性能/内存的过程。 自己使用java的正则接口(如果表达式非常复杂, 我不建议使用java的正则接口,建议采用oro库)。 讨论帖子:http://www.iteye.com/topic/626801?page=2
2.使用spring的BeanWrapperImpl做bean组装请提前做好类型转换
spring BeanWrapperImpl 实现的类型转换有性能问题,刚才我测试来一把
使用spring BeanWrapperImpl进行类型转换的耗时:
4.687(ms)
3.508(ms)
3.261(ms)
3.177(ms)
7.526(ms)
3.393(ms)
先自己做好类型转换再调用setPropertyValue()的耗时:
0.603(ms)
0.699(ms)
0.559(ms)
0.591(ms)
0.579(ms)
0.532(ms)
可以看宝宝webx3中AbstractValueParser.setProperties()的实现:
BeanWrapper bean = new BeanWrapperImpl(object); requestContext.getPropertyEditorRegistrar().registerCustomEditors(bean); for (String key : keySet()) { String propertyName = StringUtil.toCamelCase(key); if (bean.isWritableProperty(propertyName)) { PropertyDescriptor pd = bean.getPropertyDescriptor(propertyName); MethodParameter mp = BeanUtils.getWriteMethodParameter(pd); Object value = getObjectOfType(key, pd.getPropertyType(), mp, null); bean.setPropertyValue(propertyName, value); } else { getLogger().debug("No writable property \"{}\" found in type {}", propertyName, object.getClass().getName()); } }
发表评论
-
Raft
2018-07-12 14:20 762前言 上篇文章说解决问题要分而治之,先把分片的问题解决了再 ... -
java uuid
2017-09-14 18:18 560在java中产生uuid的方式是使用java.util.UU ... -
JAVA 编码规范
2017-09-06 11:34 414https://google.github.io/style ... -
mac 入门
2015-12-01 16:28 626http://foocoder.com/blog/wo-zai ... -
java 反编译工具gad
2014-05-09 12:04 977java 反编译工具gad,备个份。 -
java 代码大全(code book)
2014-04-29 10:59 1083参考这里: http://www.java2s.com/C ... -
SQL语法解析器JSQLParser
2014-02-09 19:53 2150SQL 语法解释器jsqlparser 是用java ... -
BufferedInputStream 深入研究。
2013-11-19 13:26 14271. BufferedInputStream的基本原理 ... -
java 启动脚本
2013-08-22 19:08 982java 启动脚本 #!/bin/bash cmd=&q ... -
CRLF escape
2013-08-06 17:51 1199最近需要对用户输入的CRLF即(\r\n)做escape, ... -
安全的自增类
2013-07-22 18:16 991java中一个计数器如果超过MAX_VALUE再自增会如何? ... -
solr日志被block的问题
2013-05-23 16:48 1264"catalina-exec-22386" ... -
beanMapper
2013-01-13 22:43 889实在被一堆get,set搞烦了,周末写了一个beanMappe ... -
java instanceof ,isInstance(),isAssignableFrom之前的差异
2013-01-06 11:00 962public class ItemQuery { ... -
通过gzip对字符串压缩
2012-12-22 18:10 3128通过GZIPOutputStream,GZIPInputStr ... -
关于URL编码
2012-12-21 14:18 1111一、问题的由来 URL就是网址,只要上网,就一定会用到。 ... -
spring的FactoryBean机制
2012-11-20 16:18 1240spring可以通过的FactoryBean的形式把一个Fac ... -
HashMap cpu占用 100%
2012-11-10 22:22 1815今天在重现出HashMap cpu占用100%了,只 ... -
文字扫描工具--java.util.Scanner
2012-11-10 14:33 1102A simple text scanner which c ... -
一个隐形的java int溢出
2012-11-06 22:17 1120故事的背景: 笔者最近在做一个类SNS的项目, ...
相关推荐
Java性能瓶颈可能导致系统响应变慢,用户体验下降,甚至可能导致服务器资源耗尽。而漏洞的存在则可能让系统面临被攻击的风险,因此,掌握有效的检测工具对于Java开发者来说是必备技能。本主题将深入探讨"JAVA性能...
- **CPU使用率高**:程序执行时,某些部分可能过度消耗CPU资源,导致性能下降。 - **内存泄漏**:对象不再被引用但未被垃圾回收器回收,占用内存资源不释放,导致系统性能下降甚至崩溃。 - **I/O操作效率低下**:如...
- 数据库是Java EE系统的核心,不恰当的SQL查询、缺乏索引、长时间运行的事务等都可能导致性能瓶颈。需要定期进行SQL调优,合理规划数据库容量,确保数据库事务处理效率。 6. **线程管理不当** - 不合理的线程池...
数据库交互是许多Java应用的性能瓶颈。优化SQL查询,使用预编译的PreparedStatement,批量操作,以及合理设计数据模型,可以大幅提高数据库访问速度。 此外,书中的示例代码可能涵盖了JVM调优,包括调整堆大小,...
Performance Analyzer是一款专门针对Java性能的工具,它提供了深入洞察应用程序性能的能力,帮助开发者识别并解决性能瓶颈。 在Java性能分析中,我们通常关注以下几个核心知识点: 1. **JVM内存模型**:Java虚拟机...
在测试过程中,我们应持续关注性能指标,如CPU使用率、内存占用、磁盘I/O、网络带宽等,寻找性能瓶颈,然后针对性地进行优化。例如,优化数据库查询、调整线程池配置、使用缓存技术、压缩数据传输等。同时,性能测试...
例如,对于ATM监控,可以实时检测并记录各种异常交易,如单笔金额上限、交易金额累计上限、卡交易笔数累计上限等,而不会因为频繁的数据库操作而导致性能下降或数据丢失。 总之,h2database作为Java内存数据库,...
本文将基于给定文件中的信息,深入探讨Java虚拟机性能监控的相关知识点。 #### 二、Java虚拟机性能监控的重要性 对于任何基于Java的应用程序来说,性能监控都是一个不可或缺的过程。随着系统负载的增加和技术的...
2. **代码优化**:编写高效代码,避免冗余计算,合理使用循环和条件判断,以及优化字符串操作等常见性能瓶颈。 3. **并发与多线程**:掌握线程池的使用,理解synchronized、volatile、Lock等并发控制机制,以及如何...
它能展示CPU使用率、内存占用、线程状态、类加载情况等信息,并支持JMX插件,帮助开发者定位性能瓶颈。通过VisualVM,我们可以进行堆内存分析、线程快照、方法追踪等功能,进行深入的性能诊断。 2. **JVM性能调优**...
- 冗余计算:程序在执行过程中重复进行相同的计算,未能有效利用已经计算的结果,导致性能下降。 - 同步机制的不当使用:过度同步可能会造成线程之间的竞争,降低并发性能。 - 不合理的线程使用:如线程过多导致上...
13. **优化异常处理**:异常处理不应成为性能瓶颈,避免在循环中抛异常。 14. **避免在循环中调用方法**:方法调用有一定开销,尤其是虚拟机外部的方法。 15. **使用本地方法**:对于CPU密集型操作,如位运算,使用...
2. 正确使用synchronized:过多的同步可能导致性能瓶颈,应尽量减少同步块的范围,或者使用锁分离、读写锁等高级并发技术。 3. 避免死锁:确保线程间不会陷入死锁状态,避免程序的不稳定性。 五、数据库优化 1. ...
Java 代码性能优化技巧总结 ...* 使用 profiling 工具来定位性能瓶颈。 * 使用 JVM 的参数来调整堆大小和垃圾收集器的行为。 Java 代码性能优化需要结合实际情况选择合适的优化技巧,充分发挥 Java 语言的性能潜力。
7. 频繁的同步操作:过度使用synchronized关键字可能导致性能瓶颈。 【优化步骤】 1. 分析性能瓶颈:使用工具如Jprobe、Optimizit、Vtune等识别性能问题。 2. 代码优化:修改或重构瓶颈代码,提升执行效率。 3. ...
再者,方法调用也是性能瓶颈之一。过度使用递归可能导致栈溢出,应尽量使用循环代替。另外,尽量使方法为final,以便JVM进行方法内联,提高执行效率。 线程同步和并发处理是Java性能优化的重要部分。使用并发容器如...
3. **易用性**:工具应该直观,便于理解和使用,以便快速定位性能瓶颈。 常见的Java性能分析工具有JProfiler、VisualVM、YourKit Java Profiler等。这些工具提供了深入的性能指标,如CPU使用率、内存分配、线程状态...
在Java程序中常见的性能瓶颈包括: - I/O操作过多,如数据库查询、网络通信等。 - 频繁的对象创建和销毁,导致垃圾收集压力增大。 - 数据结构选择不当,影响查找和访问效率。 - 并发控制不当,可能导致线程竞争和上...