`
程序新手
  • 浏览: 59683 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

IMG

 11   
应用层:   1)  尽量减少在方法上面加上synchronized关键字,可以在方法内部加,前者是类级别的锁,后者是对象级别的,如果lock可以满足,多使用lock接口,并发情况下,lock性能会更好   2)  缓存也可以在线程内做,通过ThreadLocal来实现,这样我们服务端缓存就可以变成 线程级别-》JVM级别-》本地文件-》memcached
        文章转自 http://www.cyberciti.biz/tips/rhel-lighttpd-15-installation-configuration-howto.html           Download lighttpd      Download and untar lighttpd-1.5.0-r1691.tar.gz tar ball   # cd /opt # wget http://www.lighttpd.net/assets/2007/2/23/lighttpd-1.5.0-r1691.tar.gz # tar -zxvf light ...
    1)自定义Annotation接口,如下所示   @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyAnnotation { String name() default "[defaultMethod]"; }     其中RetentionPolicy表示指定保留多长的注释,其取值范围为   CLASS           编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。 RUN ...

java BIO NIO AIO 理论篇

    博客分类:
  • io
     java中的IO主要源自于网络和本地文件        IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO      在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。        BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线 ...

类加载器原理

       类加载器源自于JAVA的applet需求,在JAVA中负责将字节码转换成内存中的Class对象放入方法区中,如果两个类的对象加载器不一致,那么这两个对象instanceof、equals方法必定返回false        类加载器的结构如下图所示,采用了双亲委派模式,意思是除了顶层的Bootstrap以外,其他加载器都有自己的父加载器,当遇到加载Class的请求的时候先会判断内存中此类是否有加载过,如果没有被加载则将请求交给父加载器来处理,如果父加载器没有,则自己在尝试加载,这样有层次的好处是为了不会导致内存中有更多混乱的类重复加载                     ...
         在开发过程中,添加完UrlWriter之后,部署到了服务器环境,发生了如下错误      To prevent a memory leak, the JDBC Driver has been forcibly unregistered.         原来Tomcat6会起一个线程检测是否有内存泄露 写道 Ignore those warnings. Tomcat is doing its job right. The actual bug is in someone else's code (the JDBC driver in question), n ...
问题背景讨论:在JAVA运行时,对JVM系统的检测、管理是开发同学一直期望的,目前有一些开源产品开源针对JVM进行监控,例如javamelody等等,这样框架虽然好,但是如果使用会带来一些问题。第一:由于javamelody入口是一个filter,所以会带来性能问题、第二:如果应用服务器很多,会缺乏统一管理,此外安全性、爬虫等等问题略过不提      JDK自带了故障检测工具Jconsole和1.6出来的Jvisualvm都可以远程对服务器进行监控,后者甚是提供可以在线得到ThreadDump和HeapDump文件,更是提供了可扩展插件功能(虽然可能会影响jvm服务器性能)     但现状很多公 ...
  本周开发任务基本完成,整理下关于JVM方面的知识点 照顾下新来JE的同学,先发个链接到两位大牛的主页               http://rednaxelafx.iteye.com/               http://icyfenix.iteye.com/          目录     1)概述           2)编译           3)Class文件结构          4)通过ClassLoader加载Class           5)类执行机制           6)运行时数据区         ...
       开发中遇到一个需求需要定时器实现,按照文档配置好Spring定时器,时间定到某个点重启Tomcat等待时间,等时间到了发现定时器未能执行,启动Tomcat过程中也没有发现错误      打开JDK1.6自带的故障检测工具,先监听到APP占用的JVM进程号,点击Heap dump 按钮后生产heap dump文件,搜索Spring定时器的类,发现已经加载到内存中,但是没有初始化(没有创建实例),重新审查XML文件,发现有一个属性叫做default-lazy-init=true,顿时恍然大悟,原来加上这个属性当应用服务器启动时,Spring只是负责将这些类加载到JVM中,并没有初始化 ...
        很多项目中都使用了Spring,Spring的特性有IOC和AOP,其他IOC为控制反转,实现的效果是将创建对象的权力分配给容器,我们只需要向容器中取对象,本文将分析Spring AOP的特性    (1)Spring AOP在开发中可以帮助我们实现什么功能?        1) 记录日志        2) 统一处理异常        3) 权限限制        4) 方法消耗时间监控        5) ....    (2)为什么要使用AOP?优点在哪里,缺点在哪里?        优点包括:减少业务复杂度、易维护、易扩展,如果这里把业务流程看做纵向,那么AOP则为 ...
   总结下工作中经常使用的JAVA集合类       Collection接口:    此接口继承了Iterable接口,因此此接口的子接口和实现类都可以调用iterator方法进行遍历,接口定义实现类大多为数据结构中的线性存储     List接口:    继承了Collection接口,对应数据结构中的线性表     Queue接口:    同样继承了Collection接口,对应数据结构中的队列,特点是FIFO    Set接口:    同样是线性表,特点与List相比是元素不重复    SortedSet接口:    按照对象的特定属性进行排序,插入的元素必须实现了Compara ...

JVM 运行时内存图

    博客分类:
  • jvm
  JVM运行时的内存图
  概念:JAVA的API中对ThreadLocal有这样的解释          该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联   代码实现:         1)创建ThreadLocal的类变量和普通类变量         2)用线程A修改和读取两个对象的值         3)用线程B再次修改和读 ...

JMX入门代码

    博客分类:
  • jvm
package org.jmx.monitor.local.test; import java.lang.management.ClassLoadingMXBean; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import j ...
Global site tag (gtag.js) - Google Analytics