
Struts2
文章平均质量分 83
Andy.World
人无远虑 - 必有近忧
展开
-
JVM调优总结(十一)-反思
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress转载 2017-02-22 17:37:50 · 197 阅读 · 0 评论 -
三道java高级工程师面试题
1.junit 下测试多线程注意事项。2.高并发 ,处理时间短,选用哪种线程池, 并发低,处理时间长,选用哪种线程池, 高并发,处理时间长,如何处理。3.100亿个数字,如何最快找出其中10000个最大的数。详细查看地址:http://bbs.youkuaiyun.com/topics/392086319转载 2017-02-15 17:29:10 · 316 阅读 · 0 评论 -
JVM内存管理–GC算法精解(五分钟让你彻底明白标记/清除算法)
相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧。不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内看完,那就不是LZ的错啦。好了,前面只是小小开个玩笑,让各位猿友放松下心情。下面即将与各位分享的,是GC算法中最基础的算法——标记/清除算法。如果搞清楚这个算法,那么后面两个就完全是小菜一碟了转载 2017-02-15 17:47:53 · 361 阅读 · 1 评论 -
【集锦】2016年阿里云在线直播精华合集
https://yq.aliyun.com/articles/66146?utm_campaign=wenzhang&utm_medium=article&utm_source=QQ-qun&utm_content=m_9820原创 2017-02-15 18:06:55 · 349 阅读 · 0 评论 -
java.util.concurrent 并发框架,异步执行器 Executor
目录(?)[-]注意重点看 16 17 18javautilconcurrent - Java 并发工具包半成品阻塞队列 BlockingQueueBlockingQueue 用法BlockingQueue 的方法BlockingQueue 的实现Java 中使用 BlockingQueue 的例子数组阻塞队列 ArrayBlockingQueue延迟队列 Dela转载 2017-02-28 17:42:06 · 1393 阅读 · 0 评论 -
tcp长连接和保活时间
TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后,会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。默认的Keepalive超时需要7,200,000 milliseconds,即2小时,探测次数为5次。它的功效和用户自己实现的心跳机制是一样的。开启Keepalive功能需要消耗额外的宽带和流量,尽管这微不足道,但在按流量转载 2017-04-13 23:32:57 · 20469 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
本文由 ImportNew - 光光头去打酱油 翻译自 javacodegeeks。欢迎加入翻译小组。转载请见文末要求。在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。转载 2017-04-29 18:53:24 · 357 阅读 · 0 评论 -
Java并发包中Lock的实现原理
Java并发包中Lock的实现原理1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中),它包含以下方法//尝试获取锁,获取成功则返回,否则阻塞当前线程void lock(); //尝试获取锁,线程在成功获...转载 2017-04-29 18:55:30 · 515 阅读 · 0 评论 -
Java锁----Lock实现原理
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]ReentrantLock的调用过程锁实现加锁21 SyncnonfairTryAcquire22 AbstractQueuedSynchronizeraddWaiter23 AbstractQueuedSynchronizeracquireQueued解锁Lock VS Synchroni转载 2017-04-29 18:59:05 · 568 阅读 · 0 评论 -
对线程的新的认识.线程句柄和线程ID
CreateThread, 会返回线程句柄, 同时, 传递的参数会给线程ID赋值.昨日读了 windows 多线程程序设计. 知道了线程句柄和线程ID的区别.线程ID: 我目前已知的有一个用途: 向一个线程投递消息.线程句柄: 基本上, 所有操作线程的windowsAPI均使用线程句柄.每多一个句柄, 线程对象就多一个引用计数, 当引用计数为0时, 线程对象将被系统回收转载 2017-04-29 19:02:26 · 2321 阅读 · 0 评论 -
5亿整数的大文件,怎么排?
本文目录 [-点此收起]问题内部排序3路快排:归并排序:sort命令来跑位图法外部排序1.分2.合问题给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,如下一行一个整数:619630235576816121580203934520950061746773793431220163717123转载 2017-02-15 17:13:41 · 251 阅读 · 0 评论 -
从JVM内存模型谈线程安全
目录(?)[-]存储器层次结构虚拟内存并发模型线程JVM内存结构JVM内存模型总结作为一个三个多月没有去工作的独立开发者而言,今天去小米面试了一把.怎么说呢,无论你水平如何,请确保在面试之前要做准备,就像其中一位面试官说的一样,我知道你水平不错,但是无论如何也是要准备下的,不然你怎么会连这个方法也忘记了?此刻,我突然觉得我是一个假程序员.为什么这么说呢,作为转载 2017-03-03 09:19:55 · 299 阅读 · 0 评论 -
java中JVM的原理
2014-06-05 10:50 45087人阅读 评论(9) 收藏 举报 分类:JVM(7) 目录(?)[-]Java代码编译和执行的整个过程Java源码编译机制类加载机制类加载双亲委派机制介绍和分析类执行机制内存管理和垃圾回收JVM内存组成结构JVM内存回收关于JVM内存管理的一些建议一、Java虚拟机转载 2017-02-22 17:53:30 · 239 阅读 · 0 评论 -
说说IO(一)- IO的分层
IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。 IO系统的分层: 三层结构上图层次比较多,但总的就是三部分。磁盘(存储)、VM(卷转载 2017-02-22 17:40:40 · 515 阅读 · 0 评论 -
说说IO(二)- IO模型
这部分的东西在网络编程经常能看到,不过在所有IO处理中都是类似的。IO请求的两个阶段: 等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。 使用资源阶段:真正进行数据接收和发生。 举例说就是排队和服务。 在等待数据阶段,IO分为阻塞IO和非阻塞转载 2017-02-22 17:41:12 · 382 阅读 · 0 评论 -
说说IO(三)- IO性能的重要指标
最重要的三个指标 IOPSIOPS,即每秒钟处理的IO请求数量。IOPS是随机访问类型业务(OLTP类)很重要的一个参考指标。 一块物理硬盘能提供多少IOPS?从磁盘上进行数据读取时,比较重要的几个时间是:寻址时间(找到数据块的起始位置),旋转时间(等待磁盘旋转到数据块的起始位置),传输时间(读取数据的时间和返回的时间)。其中寻址时间是固定的(磁头定位到数据的存储转载 2017-02-22 17:42:24 · 618 阅读 · 0 评论 -
说说IO(四)- 文件系统
文件系统各有不同,其最主要的目标就是解决磁盘空间的管理问题,同时提供高效性、安全性。如果在分布式环境下,则有相应的分布式文件系统。Linux上有ext系列,Windows上有Fat和NTFS。如图为一个linux下文件系统的结构。 其中VFS(Virtual File System)是Linux Kernel文件系统的一个模块,简单看就是一个Adapter,对下屏蔽了下层不同文件系统之间的转载 2017-02-22 17:43:25 · 308 阅读 · 0 评论 -
说说IO(五)- 逻辑卷管理
LVM(逻辑卷管理),位于操作系统和硬盘之间,LVM屏蔽了底层硬盘带来的复杂性。最简单的,LVM使得N块硬盘在OS看来成为一块硬盘,大大提高了系统可用性。 LVM的引入,使得文件系统和底层磁盘之间的关系变得更为灵活,而且更方便关系。LVM有以下特点: 统一进行磁盘管理。按需分配空间,提供动态扩展。条带化(Striped)镜像(mirrored)快照(snapshot)转载 2017-02-22 17:44:01 · 356 阅读 · 0 评论 -
说说IO(六)- Driver & IO Channel
这部分值得一说的是多路径问题。IO部分的高可用性在整个应用系统中可以说是最关键的,应用层可以坏掉一两台机器没有问题,但是如果IO不通了,整个系统都没法使用。如图为一个典型的SAN网络,从主机到磁盘,所有路径上都提供了冗余,以备发生通路中断的情况。 OS配置了2块光纤卡,分别连不同交换机SAN网络配置了2个交换机存储配置了2个Controller,分别连不同交换机转载 2017-02-22 17:44:52 · 426 阅读 · 0 评论 -
说说IO(七)- RAID
Raid很基础,但是在存储系统中占据非常重要的地位,所有涉及存储的书籍都会提到RAID。RAID通过磁盘冗余的方式提高了可用性和可高性,一方面增加了数据读写速度,另一方面增加了数据的安全性。 RAID 0 对数据进行条带化。使用两个磁盘交替存放连续数据。因此可以实现并发读写,但带来的问题是如果一个磁盘损坏,另外一个磁盘的数据将失去意义。RAID 0最少需要2块盘。转载 2017-02-22 17:45:24 · 417 阅读 · 0 评论 -
说说IO(八)- 三分天下
DAS、SAN和NAS 为了满足人们不断扩大的需求,存储方案也是在发展的。而DAS、SAN、NAS直接反映这种反映了这种趋势。 单台主机。在这种情况下,存储作为主机的一个或多个磁盘存在,这样局限性也是很明显的。由于受限于主机空间,一个主机只能装一块到几块硬盘,而硬盘空间时受限的,当磁盘满了以后,你不得不为主机更换更大空间的硬盘。独立存储空间。为了解决空间的转载 2017-02-22 17:46:33 · 300 阅读 · 0 评论 -
JVM调优总结(十二)-参考资料
能整理出上面一些东西,也是因为站在巨人的肩上。下面是一些参考资料,供大家学习,大家有更好的,可以继续完善:) · Java 理论与实践: 垃圾收集简史 · Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning · Improving Java Application Perfo转载 2017-02-22 17:51:46 · 205 阅读 · 0 评论 -
线程ID 与 线程句柄 区别 (转载)
以下几点是一些总结:●CreateThread() API 用于创建线程。 API 返回同时线程句柄和线程标识符 (ID)。 线程句柄有完全访问权创建线程对象。 运行线程时线程 ID 唯一标识线程在系统级别。●ID是在Windows系统范围内唯一标示Thread的。 ●Handle是用来操作Thread的,可以有多个,每个HANDLE可以有不同的操作权限,在不同进程OpenTh转载 2017-04-29 19:07:54 · 424 阅读 · 0 评论 -
进线程, 进线程句柄, 进线程ID, 句柄与ID间转换, 伪句柄, 伪句柄转为句柄
线程 与 线程句柄(refer to: http://blog.youkuaiyun.com/titan_koa/article/details/2439027)1. 线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到r转载 2017-04-29 19:09:39 · 754 阅读 · 0 评论 -
JVM内幕:Java虚拟机详解
这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程JVM 系统线程每个线程相关的程序计数器栈本地栈栈限制栈帧局部变量数组操作数栈动态链接线程共享堆内存管理非堆内存即时编译方转载 2017-07-01 17:54:57 · 252 阅读 · 0 评论 -
序列化和反序列化
摘要 序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系转载 2017-06-10 18:18:51 · 248 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
原文出处: 海子volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volat转载 2017-07-11 22:05:42 · 171 阅读 · 0 评论 -
JVM(8):JVM知识点总览-高级Java工程师面试必备
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么转载 2017-07-03 18:00:44 · 232 阅读 · 0 评论 -
分布式事务最终一致性常用方案
目前的应用系统,不管是企业级应用还是互联网应用,最终数据的一致性是每个应用系统都要面临的问题,随着分布式的逐渐普及,数据一致性更加艰难,但是也很难有银弹的解决方案,也并不是引入特定的中间件或者特定的开源框架能够解决的,更多的还是看业务场景,根据场景来给出解决方案。根据笔者最近几年的了解,总结了几个点,更多的应用系统在编码的时候,更加关注数据的一致性,这样系统才是健壮的。一、基础理论转载 2017-07-06 17:24:00 · 405 阅读 · 0 评论 -
分布式锁的基本原理
基本概念:分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。举个例子:1.假设有一个进程A,每小时准点给用户发送一条短信"Hello world",为了高可转载 2017-07-24 23:36:55 · 309 阅读 · 0 评论 -
分布式锁原理及实现方式
本文转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance转载 2017-07-24 23:44:58 · 487 阅读 · 0 评论 -
Java对象锁和类锁全面解析(多线程synchronized关键字)
原文出处: 小宝鸽最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念。最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没用对都不知道。今天把一些疑惑都解开了,写篇文章分享给大家,文章还算比较全面。当然可能有小宝鸽理解得不够深入透彻的地方,如果说得不正确还望指出。看之前有必要跟某转载 2017-09-10 00:23:32 · 1167 阅读 · 0 评论 -
子类重写父类方法后的调用规则
例题:(单选题) 下面代码的输出是什么?public class Base { private String baseName= "base"; public Base(){ callName(); } public void cal转载 2017-09-11 02:19:36 · 5413 阅读 · 1 评论 -
Java高效并发之乐观锁悲观锁、(互斥同步、非互斥同步)
乐观锁和悲观锁首先我们理解下两种不同思路的锁,乐观锁和悲观锁。这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,转载 2017-07-01 15:53:26 · 436 阅读 · 0 评论 -
java多线程:synchronized和lock比较浅析
转载:http://www.toutiao.com/a6392135944652587266/?tt_from=weixin&utm_campaign=client_share&app=news_article&utm_source=weixin&iid=7704173001&utm_medium=toutiao_ios&wxshare_count=1 synchroni转载 2017-07-01 15:52:03 · 247 阅读 · 0 评论 -
Java中ConcurrentHashMap学习
ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都要锁住整个结构。Conc转载 2017-06-29 01:37:18 · 248 阅读 · 0 评论 -
信号量与互斥锁
信号量与普通整型变量的区别:①信号量(semaphore)是非负整型变量,除了初始化之外,它只能通过两个标准原子操作:wait(semap) , signal(semap) ; 来进行访问;②操作也被成为PV原语(P来源于Dutch proberen"测试",V来源于Dutch verhogen"增加"),而普通整型变量则可以在任何语句块中被访问; 信号量与互斥锁之间的转载 2017-04-29 21:48:47 · 272 阅读 · 0 评论 -
秒杀多线程第一篇 多线程笔试面试题汇总
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]第一篇 多线程笔试面试题汇总一概念性问答题二选择题三综合题 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各转载 2017-04-29 22:00:28 · 663 阅读 · 0 评论 -
秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
版权声明:本文为博主原创文章,未经博主允许不得转载。 本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex?转载 2017-04-29 22:06:18 · 262 阅读 · 0 评论 -
秒杀多线程第三篇 原子操作 Interlocked系列函数
版权声明:本文为博主原创文章,未经博主允许不得转载。上一篇《多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表转载 2017-04-29 22:08:23 · 218 阅读 · 0 评论