`
文章列表
类定义:   public class Test{ public synchronized method1(){...} public synchronized method2(){...} }   问题:   多线程并发访问method1和method2时,两者会互斥吗?   下面的测试程序来回答这个问题。 public class TestSynchronizedMethod { private void ivkMethod1(){ Thread thread1 = new Thread() { public void run() ...
根据用户需求,将公司产品部署到win32 websphere上。部署过程中,报OOM错误。 使用IBM工具分析javacore文件后,得到详细的分析,如下是部分信息:   1.================================================================================== Cause of thread du ...
项目需求: 产品需要监视不同种类的多个数据库,例如:多个mysql库,多个oracle库,多个sybase库,多个msserver库等等,连接池需要根据客户数据库种类和数量的实际情况进行动态创建。   难点: 1.每个库创建一个连接池,不能重复创建。 2.每个连接池维护自身的线程安全性,访问每个连接池的线程单独排队,相互之间不能影响。   实现思路: 将每个库的连接池实例保存到一个static Map中,key为库路径,value为连接池对象。如果对象已经存在,则不再创建,直接获取。   Map的read-write的组合操作,需要线程安全控制。
Java对多线程的支持与同步机制深受大家的喜爱,通过JMM可以了解到几个涉及多线程编程的几个关键字: synchronized、final、volatile。   一、作用 1.synchronized 1.1 synchronized优点: 正确使用synchronized可以解决data race问题,同时保证了变量的可见性; 1.2 synchronized缺点: synchronized作用范围内线程的串行化执行,在一定程度上降低了程序的并发性;对性能要求严格的情况下,尽量减小synchronized的作用范围,依赖于对synchronized的作用范围进行细致地分析 ...
故障描述: 线上系统运行过程中出现OOM异常,导致jvm crash。 系统运行在IBM AIX上,通过IBM heap工具分析得到结果,如下图所示:   java应用日志分析: 1.通过查看应用日志,发现在某个时间点jvm heap内存出现异常:内存使用不断上升直至溢出。 2.由于系统特性使然,heap内存分配为64M,通过上图可以发现,异常时mina框架的MessageWriteRequest对象已经占用了61M左右的heap,导致溢出。   故障分析: 通过跟踪mina源程序,发现是由于大量消息阻塞的消息queue中,无法发送也没有及时清除,最终导致heap内存溢 ...

常用linux命令_1

    博客分类:
  • OS
1.权限赋予执行权限chmod +x *.sh --赋操作文件夹权限chmod -R 755 tomcat2.查看linux版本cat /etc/issue3.启动memcached./memcached -d -m 2048 -u root -p 11211关闭kill  4.查看端口情况4-1 查看CLOSE_WAIT端口netstat -an | grep CLOSE_WAIT 4-2 查看端口被什么程序占用 ...
项目由于数据量较大,采用了对mysql进行了水平扩展的方式来支撑大数据量的存储、访问和负载均衡。这篇文字主要总结了一下已在线上运行的数据访问层,并在此基础上对逻辑架构进行一些补充和完善,有些是个人的设想,欢迎有经验的朋友批评指正,谢谢。       设计简介: 1. router 负责sql路由和过滤 1.1 app sql router: 负责应用对数据库操作的路由。 1.2 sql statistics center: 负责对整个系统中所有sql的统计。   2. Hot manager 负责sql热点的监视和分析 2.1 sql monitor : 负责sql监视(过滤 ...
项目中有很多异步、定时及周期性任务的需求,其实现有一定的特点,汇总以备忘。       简单分析:   结构分析: 1.Task属性包含处理任务的完整类名、任务处理的参数、延迟的时间(毫秒)、执行的周期间隔(毫秒)。1.1 任务的完整类名执行任务时,可以根据处理任务的完整类名,利用反射机制生成任务类的实例1.2 任务处理的参数执行任务时,可以从该参数中获取相关的参数值。 2.TaskThread实现了接口Runnable,并且包含了当前线程要执行的任务对象。用户自定义任务类需要extends该类。   3.TaskManager任务管理器包含了任务队列,访问任务队列的线程,并 ...
项目中数据库进行了水平切分,为了处理跨节点集合查询,采用了多线程并发操作的方式来处理,并且对各线程执行的结果进行操作,如果是返回结果集,则合并排序;如果是聚合操作,则求和。个人觉得该实现方式很有代表性,所以抽取了原型实现备忘。   集合处理:   import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; /** * 集合查询 * * 场景: 数据 ...
java应用中通常会有处理大批量数据的场景,这里介绍一种分页处理的方式,仅供参考。 大批量数据通常不能一次读取或者写入,因为一次读取会消耗过多的内存,一次写入会长时间占用DB连接, 我的思路是参照分页查询的模式缩小每次操作的数据集,循环执行,直到处理完毕。   两种实现方式: 1.采用单线程模式顺序执行。 每次读取固定大小的数据记录,然后插入到存储设备。   2.采用多线程模式。 1个线程读取,另1个线程负责处理数据。 读写并发执行,一定程度上提高了功能的吞吐量和CPU的利用率。   具体实现: 1. 采用固定大小的队列来存储分页数据; 2. 队列满了,则开始执行 ...
wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 •如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。 •如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。 •如果对象调用了notifyAll方法就会通知所有等待这个对象控制权的线程继续运行。 其中wait方法有三个over load方法: wait() wait(long) wait(long,i ...
最近遇到的一个关于socket.close的问题,在某个应用服务器出现的状况(执行netstat -np | grep tcp):  tcp        0      0 10.224.122.16:50158         10.224.112.58:8788          CLOSE_WAIT tcp        0      0 10.224.122.16:37655         10.224.112.58:8788          CLOSE_WAIT tcp        1      0 127.0.0.1:32713             127.0.0.1 ...
使用mysql的系统中常见的sql错误:   1.事务中某些表是非innodb类型。   SQLWarning ignored: SQL state 'HY000', error code '1592',   message [Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessin ...
今年参与了一个在线教育网站的项目,规划承载1000W用户,一期上线用户80W。我有幸负责其中分布式会话开发和数据访问层(DAL)的开发及管理工作,项目已到上线阶段,突然有感触一路走来的一些经验及教训,不好意思,教训居多。   数据访问层由我负责主导,开发工作由另一位同事负责。由于手头事务繁杂,没有太多时间来对这块的工作进行细致的管理,只做到了对关键功能点的设计思路及实现难点的掌握和主导,但是还有一些地方做的不够,例如:细节代码的review,对细节设计不太合理的地方没有及时提出修改意见,并监督执行等等一些问题,导致在该同事离开以后发现对DAL的一些细节的设计不是很清楚,花了一段时间才了解 ...
1. 通过jstatd启动RMI服务         配置java安全访问,将如下的代码存为文件 jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下, grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };   执行命令: jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi ...
Global site tag (gtag.js) - Google Analytics