CoreJava(核心Java)
文章平均质量分 70
冲杯茶喝
世界上本没有对错,当我们把自己做的事情定义为对,那跟自己做的事情冲突的自然成了错
展开
-
再谈Java原子变量以及同步的效率 -- 颠覆你的人生观
再谈Java原子变量以及同步的效率 -- 颠覆你的人生观原创 2014-11-18 15:07:00 · 2013 阅读 · 0 评论 -
单例模式的坑
先看一段代码/** * @author xiaofei.wxf */public class SingletonA { private SingletonA(){} static final SingletonB b = SingletonB.b; static final SingletonA a = new SingletonA();}/** * @原创 2015-02-15 16:07:26 · 1133 阅读 · 0 评论 -
JAVA字节码文件操作技巧
你知道如何操作JAVA字节码文件吗,这里将介绍与操作Java字节码有关的基本知识和操作Java字节码的方法及Demo,首先我们来看一下AOP的概念,AOP是OOP的延续,是AspectOrientedProgramming的缩写,意思是面向方面编程。如何操作JAVA字节码文件本文将介绍与操作Java字节码有关的基本知识和操作Java字节码的方法及Demo,谈到操作Java字节码,不转载 2013-09-23 10:23:39 · 1132 阅读 · 0 评论 -
Logback+slf4j应用总结(下载地址已更新)
如果是刚刚接触logback,建议先下载本文最后的《Logback手册.pdf》官方手册阅读。1、 如何替换现有的log4j 现有项目: 去掉slf4j-log4j.jar和log4j.jar,添加logback-core.jar、logback-classical.jar。然后删除log4j.xml并且添加logback的配原创 2013-09-23 09:59:39 · 2408 阅读 · 0 评论 -
Java Annotation Retention(可见性)
注解有三个可见性:源码可见(SOURCE) 字节码可见(CLASS) 运行时可见(RUNTIME) 这三个可见性是层层递增的,也就是说运行时可见的注解在前两种状态都是可见的。下面来验证说明下 三个注解源码: TestAnnoRetentionSource:Java代码 @Retention(RetentionPolicy.SO原创 2013-09-23 10:24:11 · 1586 阅读 · 0 评论 -
Netty HashedWheelTimer过多导致内存泄漏的排错
系统环境:CentOS release 5.6 (Final)Netty 3.6.5 final 发现问题:在一次压力测试中,发现Netty Based服务器连上4500+的clients就开始一直FullGC。解决问题:GC日志: Java代码 2013-07-01T09:24:52原创 2013-09-23 10:27:30 · 5816 阅读 · 1 评论 -
Java Thread BLOCKED和WAITING两种状态的区别(英)
Thread.State in Java? BLOCKED vs WAITINGWhat is Thread.State in Java? What's it used for?Thread.State - This is a static nested class (Read more about nested classes in the article转载 2014-02-27 16:48:59 · 9880 阅读 · 0 评论 -
权重随机的实现
权重随机在项目中经常用到,所以我把它抽象到一个工具类中。一般实现随机权重有两种方式:1. 使用一个数组存放权重对应的实际目标,比如A的权重是2,B的权重是3,那么数据长度为5, 数组前两个存放A,后三个存放B。然后随机一个0-数据长度的数字,直接取数组对应下标的值就可以了。优点:数据结构简单,算法搞笑,实现简单缺点:当权重值比较大同时数据又比较多的时候,会浪费内存原创 2014-05-05 16:34:42 · 2549 阅读 · 1 评论 -
【JAVA内存】如何计算一个Java对象占用的字节数
原文地址:点击打开链接 ,翻译有出入之处,请以原文为准本文中,我们讨论一个问题:如何计算(或者说,估算)一个Java对象占用的内存数量?通常,我们谈论的堆内存使用的前提是以“一般情况”为背景的。不包括下面两种情形: 某些情况下,JVM根本就没有把Object放入堆中。例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中。被Object占用内存转载 2013-09-23 09:53:24 · 1450 阅读 · 0 评论 -
“装饰者模式”和“对象适配器模式”异同
这两种模式在Java IO包下应用很多典型的包装者模式:InputStream ---> FilterInputStream ---> InputStream典型的适配器模式:Reader ---> InputStreamReader ---> InputStream一、定义先看下两者的定义装饰者:不改变接口,加入新的责任适配器:讲一个接原创 2013-09-23 09:55:01 · 2417 阅读 · 0 评论 -
Java Happens-before法则
Java存储模型有一个happens-before原则,就是如果动作B要看到动作A的执行结果(无论A/B是否在同一个线程里面执行),那么A/B就需要满足happens-before关系。在介绍happens-before法则之前介绍一个概念:JMM动作(Java Memeory Model Action),Java存储模型动作。一个动作(Action)包括:变量的读写、监视器加锁和释放锁、转载 2013-09-23 10:17:53 · 1567 阅读 · 0 评论 -
为没有本打算却没有做的分析准备的内容
这是曾经为一次分享准备的内容,但后来没有用上,这边记录下。内容是关于游戏服务器选型相关的内容。服务器分布式、架构 比如:1. 哪些业务是需要水平扩展,哪些数据是全局的(用户信息),哪些又是局部的(游戏区数据),尽量用成熟的产品避免单点2. 数据存储:文件存储、关系型数据库rdb(mysql、oracle、postgresql)还是NOSQL原创 2014-03-21 09:12:34 · 1269 阅读 · 0 评论 -
Java 判断IP地址为内网IP还是公网IP
Java 判断IP地址为内网IP还是公网IP原创 2015-01-08 17:57:32 · 12886 阅读 · 4 评论 -
java jstack dump 线程 介绍 解释
最近抽时间把JVM运行过程中产生的一些线程进行了整理,主要是围绕着我们系统jstack生成的文件为参照依据。 前段时间因为系统代码问题,造成性能到了天花板,于是就dump了一份stack出来进行分析。 看stack其实也需要一定的经验,毕竟它里面很多线程不可能都是有问题,所以,需要对他们有一定认识。 现在市面上很少有人对这一块做整理,所以,导致很多新人在拿到一个stack文件之后,也是一头雾转载 2013-09-23 10:14:35 · 1005 阅读 · 0 评论 -
Jmeter《Java请求》使用总结
1. 线程组,在我们测试方案里面,每个线程模拟一个用户,执行用户的登录、等等等一系列的操作。由于我们的项目是长连接的,如何能实现多个sample公用一个长连接客户端,考虑了很久,最后实现方法如下: 1 package tea.client.network; 2 /** 3 * @author Teaey 4 * @creation 2012-8-25 5 */原创 2013-09-23 10:12:29 · 1252 阅读 · 0 评论 -
Java中有趣的事【集锦】持续更新ing
2----2 在vps服务器上,开发了一个web应用,部署在tomcat。好了,启动。打开服务器(win2003)浏览器访问,localhost/xxxx/xxxx ok,大功告成。外网接入我X,不行,一直处于加载状态? 赶紧找问题。防火墙? 防火墙关了再试,照样端口问题?到%TOMCAT_HOME%/conf/server.xml,修改之,HTTP端口改为其他,照样原创 2013-09-23 10:19:18 · 2210 阅读 · 0 评论 -
java如何清理DNS Cache
一、测试环境OS:Windows7 x64JDK:1.6.0_45二、本人找到四种方式清理jvm的DNS缓存,大家可以根据自己的情况选用。 1. 在首次调用InetAddress.getByName()前,设置java.security.Security.setProperty("networkaddress.cache.ttl", "0"); 2. 修改jre/lib/s原创 2013-12-19 20:02:59 · 5782 阅读 · 0 评论 -
max_map_count超出导致的OOM
max_map_count超出导致的OOM转载 2014-03-20 16:05:55 · 22894 阅读 · 0 评论 -
Java进程堆外内存(off heap)大小
使用ByteBuffer.allocateDirect分配的off heap内存大小本机进程在Jvisualvm中安装 Mbeans插件,然后查看java.nio/BufferPool/direct 进程内使用代码获取MBeanServer mbs = ManagementFactory. getPlatformMBeanServer() ;ObjectName objectName = ne原创 2015-07-21 16:14:19 · 6359 阅读 · 0 评论