![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 72
菜鸟大明
一只勤奋的老鸟,本着笨鸟先飞的宗旨,坚定的向未来翱翔。
展开
-
synchronized和Lock的区别
有区别所实现的锁功能是一致的,但是 Lock 的功能更为强大一些。比如 Lock 可以产生多个条件变量,可以实现多个类似于 wait, notifyAll 的等待及唤醒功能。而 synchronized 只有一个条件变量,也就是锁对象的 wait 和 notifyAll转载 2014-07-15 23:18:02 · 1770 阅读 · 0 评论 -
JVM内存模型 及 调优方案
(1)类装载子系统 装载 连接 初始化(2)方法区。被所有线程共享。垃圾收集也会清理方法区中的无用类型对象。 a. 类型信息。类加载器加载类时,从类文件中提取出来。 类的完整有效名转载 2014-09-03 14:32:25 · 728 阅读 · 0 评论 -
memcached 内存策略
Slab Allocation机制:整理内存以便重复使用最近的memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。 在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。 但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下, 会导致操作系统比memcached进程本身还慢。Slab Allocator就是转载 2014-09-02 10:38:48 · 446 阅读 · 0 评论 -
lvs、haproxy、nginx 负载均衡的比较分析
对软件实现负载均衡的几个软件,小D详细看了一下,从性能和稳定上还是LVS最牛,基本达到了F5硬件设备的60%性能,其他几个10%都有点困难。 不过就因为LVS忒牛了,配置也最麻烦了,而且健康检测需要另外配置Ldirector,其他HAPROXY和NGINX自己就用,而且配置超级简单。 所以小D建议,如果网站访问量不是门户级别的用HAPROXY或者NGI转载 2014-09-14 13:44:22 · 644 阅读 · 0 评论 -
JAVA 动态代理
1.什么是动态代理?答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。2.为什么使用动态代理? 答:因为动态代理可以对请求进行任何处理3.使用它有哪些好处?转载 2014-08-31 19:01:55 · 443 阅读 · 0 评论 -
ConcurrentHashMap详解
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表转载 2014-08-27 21:12:00 · 678 阅读 · 0 评论 -
http、TCP/IP协议与socket之间的区别
http、TCP/IP协议与socket之间的区别 网络由下往上分为: www.2cto.com 物理层-- 数据链路层--网络层-- IP协议传输层-- TCP协议会话层--表示层和应用层--转载 2014-08-15 09:59:36 · 800 阅读 · 0 评论 -
B树、B+树、B*树
BST即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B-树(B树)是一种多路搜索树(并不是二叉的):1.定义任意非叶子结点最多只有M个儿子;且M>2;2.根结点的儿子数为[2, M];3.除根结点以外的非叶子结点的儿子数转载 2014-09-10 17:45:52 · 512 阅读 · 0 评论 -
单个进程最大线程数
原文链接:http://jzhihui.iteye.com/blog/1271122windows 操作系统中允许的最大线程数。 ===========================================================================默认情况下,一个线程的栈要预留1M的内存空间而一个进程中可用的内存空间只有2转载 2014-08-20 10:21:48 · 7999 阅读 · 0 评论 -
搜索引擎之solr小结
前几天被安排到一个项目组里,项目组需要用到搜索引擎技术,因此花了两天调研了一下,后来又说不用了,那就做个小结,写个博文。原创 2014-07-31 20:39:10 · 843 阅读 · 0 评论 -
AspectJ教学
那么今儿我们就先来谈一谈AspectJ的实现吧,类似这样的文章在CSDN茫茫多,我为什么写这篇文章呢,因为我发现一提到AOP都是各路神仙开始讲SpringAOP与AspectJ的区别,要么就是SpringAOP的实现原理,感觉市面上缺少小白级别的文章,恰逢鄙人不才~SpringAOP的源码看着没啥灵感,也就只能写写这种教学文章了。原创 2014-07-11 17:39:22 · 1629 阅读 · 0 评论 -
Java线程学习笔记(一)
一、线程的创建方式:老掉牙的话题了,继承 java.lang.Thread父类或者实现Runnalbe接口,这里就提一句:class Thread implements Runnable Thread也是继承了Runnable接口的,Runnable才是大哥。重写run(),run()里放的都是具体的业务,包括对线程的具体操作。class Thread1 implements原创 2014-07-13 21:50:05 · 678 阅读 · 0 评论 -
hash算法原理
今儿在看hash算法原理的时候,找到了一个大神级别的转载 2014-08-06 13:29:15 · 415 阅读 · 0 评论 -
AspectJ框架实现原理
http://www.ibm.com/developerworks/cn/java/l-aspectJ/index.html中介绍了What is AspectJ 。AspectJ是一个代码生成工具(Code Generator)。AspectJ语法就是用来定义代码生成规则的语法。您如果使用过Java Compiler Compiler (JavaCC),您会发现,两者的代码生成规转载 2014-07-14 15:18:03 · 17818 阅读 · 2 评论 -
Java线程学习笔记(二) 线程的异常捕捉
线程异常的捕捉:正常的情况下,我们在main()方法里是捕捉不到线程的异常的,例如以下代码:public class ExceptionThread implements Runnable{ @Override public void run() { throw new NullPointerException(); } public原创 2014-07-13 23:49:50 · 1011 阅读 · 0 评论 -
ConcurrentLinkedQueue的实现原理分析
1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurr转载 2014-09-27 19:11:51 · 601 阅读 · 0 评论 -
JVM垃圾回收算法 总结及汇总
先看一眼JVM虚拟机运行时的内存模型:1.方法区 Perm(永久代、非堆)2.虚拟机栈3.本地方法栈 (Native方法)4.堆5.程序计数器1 首先的问题是:jvm如何知道那些对象需要回收 ?目前两种标识算法、三种回收算法、两种清除算法、三种收集器引用计数法每个对象上都有一个引用计数,对象每被引用一次,引原创 2014-09-07 20:22:52 · 1861 阅读 · 0 评论 -
JVM调优总结
JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。 如何调优观察内存释放情况、转载 2014-09-17 22:29:17 · 459 阅读 · 0 评论 -
秒杀系统架构分析与实战
秒杀系统架构分析与实战目录1 秒杀业务分析2 秒杀技术挑战3 秒杀架构原则4 秒杀架构设计5 大并发带来的挑战6 作弊的手段:进攻与防守7 高并发下的数据安全8 总结转载: 秒杀系统架构分析与实战1 秒杀业务分析正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5转载 2016-08-22 14:17:48 · 917 阅读 · 0 评论 -
心跳检测的思路及代码
外网服务端保存内网服务端会话的有效性以及平台上监控所有内网服务端的网络状况,模仿心跳机制实现,这里在做一点叙诉,关于思路和具体实现。在很多的平台应用中,都有这样的需求,平台内包括多个子系统或者属于其管控范围内的其他平台,需要对这些系统进行统一的监控,来查看当前的运行状态或者其他运行信息,我们的应用也有这样的一个情况,需要再外网服务端(平台)上监控,其下运行的多个内网服务端的网络状况,查阅了转载 2016-08-22 11:20:56 · 23398 阅读 · 2 评论 -
关于抢购,秒杀的一些细节
以下均为出现在抢购、秒杀的常经理1、token的作用token的用法为,用户渲染商品抢购页面时,服务端做一个加密处理,可以考虑为用MD5(户ID + 商品ID + 任意数字(例如用户生日)) .这个做法的关键是,防批量刷新商品。例如:A、一个用户在登录态下,刷所有抢购商品接口。B、一个用户不同的切换账号,来刷所有抢购商品接口。(如果登录有验证码,此步可以忽略)原创 2016-08-29 10:37:05 · 2734 阅读 · 0 评论 -
设计模式-命令模式
本文继续介绍23种设计模式系列之命令模式。定义将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。角色Command定义命令的接口,声明执行的方法。ConcreteCommand命令接口实现对象,是“虚”转载 2016-08-18 16:03:29 · 436 阅读 · 1 评论 -
分布式服务弹性框架“Hystrix”实践与源码研究(一)
文章初衷为了应对将来在线(特别是无线端)业务量的成倍增长,后端服务的分布式化程度需要不断提高,对于服务的延迟和容错管理将面临更大挑战,公司框架和开源团队选择内部推广Netflix的Hystrix,一是为了推进各部门的服务使用覆盖率,二是为了增加C Sharp语言版本的参与度(目前公司至少三成服务由.NET编写)。该博文属于个人对Hystrix研究和实践经验。什么是Hystrix?Hys转载 2016-08-18 15:21:46 · 1592 阅读 · 0 评论 -
JAVA基础—泛型小结
概念: 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。泛型的常用字符代表意思: ? 表示不确定的java类型。 T 表示java类型。 K V 分别代表j原创 2014-08-10 22:54:41 · 758 阅读 · 0 评论 -
在蘑菇街的阶段性技术总结
来到蘑菇街一晃有半年时间了,这半年时间真正体会到了一个告诉发展的互联网公司的告诉迭代开发产品的整个过程。原创 2015-05-19 22:43:40 · 1173 阅读 · 0 评论 -
jstack排查定位线程
现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),转载 2015-05-31 15:54:47 · 8544 阅读 · 0 评论 -
JAVA CAS原理深度分析
参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference.htmlhttp://www.searchsoa.com.cn/showcontent_69238.htmhttp://转载 2014-10-21 15:41:47 · 557 阅读 · 0 评论 -
java自带线程池和队列详细讲解
一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中转载 2014-10-20 19:38:49 · 513 阅读 · 0 评论 -
Java 信号量 Semaphore 介绍
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Sem转载 2014-10-24 18:20:44 · 478 阅读 · 0 评论 -
Java 栅栏 CyclicBarrier 介绍
1、类说明:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。2、使用场景:需要所有的子任务都完成时,才执行主任务,这个时候就转载 2014-10-24 18:49:48 · 924 阅读 · 0 评论 -
JAVA 模拟瞬间高并发
前些日子接到了一个面试电话,面试内容我印象很深,如何模拟一个并发?当时我的回答虽然也可以算是正确的,但自己感觉缺乏实际可以操作的细节,只有一个大概的描述。 当时我的回答是:“线程全部在同一节点wait,然后在某个节点notifyAll。” 面试官:“那你听说过惊群效应吗?” 我:“我没有听过这个名词,但我知道瞬间唤醒所有的线程,会让CPU负载瞬间加大。”原创 2014-10-21 17:48:58 · 32216 阅读 · 10 评论 -
FutureTask类
FutureTask类是Future 的一个实现,并实现了Runnable,所以可通过Executor(线程池)来执行,也可传递给Thread对象执行。 如果在主线程中需要执行比较耗时的操作时,但又不想阻塞主线程时,可以把这些作业交给Future对象在后台完成,当主线程将来需要时,就可以通过Future对象获得后台作业的计算结果或者执行状态。 Executor框架利用Futur原创 2014-10-23 20:14:03 · 824 阅读 · 0 评论 -
猎头,希望您能更理解找工作的人
这些日子找工作,接触到了很多很多猎头,曾经看过一篇文章说,猎头喜欢和什么样的人打交道,不喜欢和什么样的人打交道,而我恰好是猎头喜欢的那种类型,因此,平均每天都会有一个新的猎头找到我。 猎头这个职业,其实表面上看是一种服务行业,但实际上我认为它是一种具有“马太效应”的人脉关系网。所谓供需关系,有需求就会有供给,前些天看过一篇报道,说现在IT市场上每年的人才需求量在30万,而每年从各大互原创 2014-10-23 21:06:00 · 1126 阅读 · 0 评论 -
JAVA的反射机制学习笔记(二)
上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了,自己的步伐完全被打乱了~不能继续被动下去,得重新找到自己的节奏。4、获取类的Constructor通过反射机制得到某个类的构造器,然后调用该构造器创建该类的一个实例 Class类提供了几个方法获取类的构造器。public ConstructorT> getCo原创 2014-08-05 00:15:20 · 1492 阅读 · 0 评论 -
JFinal 源码超详细解析之DB+ActiveRecord
我记得以前有人跟我说,“面试的时候要看spring的源码,要看ioc、aop的源码"那为什么要看这些开源框架的源码呢,其实很多人都是"应急式"的去读,就像读一篇文章一下,用最快的速度把文章从头到尾读一遍,那结果就是当你读完它,你也不清楚它讲了一个什么故事,想表达什么。 一个优秀的架构的源码我认为就好像一本名著一样,你的“文学”水平越高,你就越能读出作者设计的精妙之处。一篇源码在你不同水平的时候,能读出不同的东西,因此,我觉得优秀的框架的源码是经久不衰的,反复读多少次都不嫌多,直到你能设计出预原创 2014-07-29 00:55:03 · 5055 阅读 · 2 评论 -
内部类学习笔记(三)匿名内部类
这篇不转载了,自己来写,因为匿名内部类是内部类系列里我认为最难理解的。原创 2014-06-29 21:05:11 · 616 阅读 · 0 评论 -
内部类学习笔记(二)方法内部类
顾名思义,把类放在方法内。转载 2014-06-29 15:49:48 · 476 阅读 · 0 评论 -
架构师之魂
如何成为一名架构师,市面上的教程可以说数不胜数,那么我这篇文章不是从技术入手,而是谈一谈架构师的灵魂。原创 2014-07-15 22:26:34 · 975 阅读 · 0 评论 -
内部类学习笔记(一)成员内部类
内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。几种内部类的共性:A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。B、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。package com.inner;/** *转载 2014-06-27 22:41:23 · 597 阅读 · 0 评论 -
新的开始!终于来到CSDN了,看看能坚持多久
公司的一个大牛走了,着实伤感,原创 2014-05-24 21:11:27 · 1484 阅读 · 1 评论