自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

转载 一个著名的日志系统Log4j

一、为什么要用日志系统1、日志是个很重要的东西, 因为程序运行起来以后, 基本上就是一个黑盒子,如果程序的行为和预料的不一致,那就是出现Bug了,如何去定位这个Bug 呢? 2、如果没有日志系统只能有两种调试程序的方法:单步调试,一步步地跟踪,查看代码中变量的值, 这种办法费时费力, 并且只能在程序员的机器上才能用。在特定的地方打印日志, 通过日志的输出,帮助快速定位。3、使用System

2017-10-27 09:15:29 635

转载 Java多线程编程-单例模式几种写法的错与对

一、背景知识在所有的主流23中设计模式中,单例模式作为最简单也最容易理解也是使用最普遍的设计模式,他是一种对象创建模式,用于产生一个对象的具体实例,他可以确保系统中一个类只产生一个实例。单例模式的优点如下: 1、对于频繁创建的对象,可以省去new的操作锁花费的时间,对于一些重量级的对象创建来说可以说是一笔开销的节省; 2、由于new的次数变少了,系统内存的使用频率也会降低,这也减轻了G

2017-10-26 15:34:39 320

转载 编码习惯之接口定义

编码习惯之接口定义: 返回格式不统一,应返回ResultBean,分页的有另外一个PageResultBean 没有考虑失败的情况 出现与业务无关的输入参数,尤其当前用户信息不应该出现在参数里 出现复杂的输入参数,应该定义对应的bean 没有返回应该返回的数据,新增接口应该返回新对象的id标识

2017-10-26 13:34:48 354

转载 ThreadLocal出现OOM内存溢出的场景和原理分析

一、案例代码1、首先看一下代码,模拟了一个线程数为500的线程池,所有线程共享一个ThreadLocal变量,每一个线程执行的时候插入一个大的List集合: 2、设置JVM参数设置最大内存为256M,以便模拟出OOM: 3、运行代码,输出结果: 可以看出,单线程池执行到第212的时候,就报了错误,出现OOM内存溢出错误。 4、在运行代码的时候,同时打开JDK工具jConsole 监控内存

2017-10-23 14:43:46 3921 1

转载 两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier

一、倒计时CountDownLatchCountDownLatch是一个非常实用的多线程控制工具类,称之为“倒计时器”,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。 举了例子: 我们知道的集齐七颗龙珠就可以召唤神龙,那我们就一起召唤一下,下边我需要派7个人(7个线程)去分别去找这7颗不同的龙珠,每个人找到之后回来告诉我还需要等待的龙珠个数减1个,那么当全部的人都找到龙珠之后,

2017-10-18 16:50:49 461

原创 线程本地ThreadLocal的介绍与使用

1、ThreadLocal简介我们通过上两篇的学习,我们已经知道了变量值的共享可以使用public static变量的形式,所有的线程都使用同一个被public static修饰的变量。那么如果我们想实现每一个线程都有自己的共享变量该如何解决哪?JDK提供的ThreadLocal正是为了解决这样的问题的。类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成

2017-10-18 12:06:19 831

转载 Java动态代理

1、什么叫动态代理“所谓运行时对类进行修改,打个比方来说,我写了一个HelloWorld的类,其中有两个方法:sayHello()和sayHelloToPHP(), 然后这个类运行起来了,我们希望在运行的时候可以修改这类: 1、加一个新方法sayHelloToPython(); 2、现在的sayHello()方法里加一点新东西; 3、把sayHelloToPHP()这个方法删

2017-10-13 12:02:30 346

转载 Effective Java(用实例域代替序数、用EnumSet代替位域)

1.用实例域代替序数枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用实例域,例如:public enum ErrorCode { FAILURE(0), SUCCESS(1); private final int code; //上一条讲到枚举天生不可变,所有域都应该是final的。 E

2017-10-11 16:17:47 472

转载 oracle序列的cache_size说明

当前所新增的单据的序列,是在 [ LAST_NUMBER-CACHE_SIZE, LAST_NUMBER ]之间; 当序列走到5303时,其LAST_NUMBER会自动增加CACHE_SIZE值。创建序列对象的sql如下:create sequence name increment by x //x为增长间隔 start with

2017-10-11 15:01:59 6589

转载 全表扫描和索引扫描的区别

1) 全表扫描(Full Table Scans, FTS)为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件。Oracle顺序地读取分配给表的每个数据块,直到读到表的最高水线处(high water mark, HWM,标识表的最后一个数据块)。一个多块读操作可以使一次I/O能读取多块数据块(db_block_multiblock_read_count参数设

2017-10-11 14:23:39 3124

转载 CSDN积分兑换链接

账号设置里进行手机绑定CSDN账户 奖励5C币 完成任务送若干分积分 http://task.csdn.net/ 3.充值 C币,兑换下载积分 到http://mall.csdn.net/coin兑换上传有效技术(N分)资源,被下载一次系统奖励N分,100分上限。论坛可用分可以兑换下载分:论坛可用分:下载资源分=5:1兑换地址:http://forum.csdn.net/Poi

2017-10-11 11:26:09 7594 9

原创 Java文件读操作(两种read方法)

将文件中的数据读入程序,是将程序外部的数据传入程序中,应该使用输入流——InputStream或Reader。而由于读取的是特定的数据源——文件,则可以使用输入对应的子类FileInputStream或FileReader实现。 在实际书写代码时,需要首先熟悉读取文件在程序中实现的过程。在Java语言的IO编程中,读取文件是分两个步骤: 1、将文件中的数据转换为流(由系统完成,只需要创建

2017-10-09 14:44:34 31003 5

转载 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字:^d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(-)?d+(.d{1,2})?

2017-10-09 13:42:39 361

转载 Java中使用匿名内部类创建多线程的3种方式

//匿名内部类的格式public class AnonymousClass { public static void main(String[] args){ //第一种方法:继承thread类实现多线程 new Thread(){ public void run(){ for (int i = 0; i

2017-10-09 13:12:40 2316

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除