![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA foundation
文章平均质量分 60
青色刀客
这个作者很懒,什么都没留下…
展开
-
字符编码详解
每一个程序员都不可避免的遇到字符编码的问题,特别是做Web开发的程序员,“乱码问题”一直是让人头疼的问题,也许您已经很少遇到“乱码”问题,然而,对解决乱码的方法的内在原理,您是否明白?本人作为一个程序员,在字符编码方面同样遇到不少问题,而且一直对各种编码懵懵懂懂、不清不楚;在工作中也曾经遇到一个很烦人的编码问题。这两天在网上收集了大量编码方面的资料,对字符编码算是理解的比较清楚了。下面把我认为比较转载 2015-06-08 11:28:51 · 625 阅读 · 0 评论 -
logback高级特性使用(二) 自定义Pattern模板
自定义Pattern模板创建自定义格式转换符有两步:1.写一个转换器类,继承ClassicConvert示例代码:[java] view plaincopypackage com.cj.log; import ch.qos.logback.classic.pattern.ClassicConverter;转载 2015-01-27 14:23:45 · 8521 阅读 · 1 评论 -
jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
1.Jstack 1.1 jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。如下图所示 注:这个和thread dump是同样的结果。但是thread dump是用kill -3 pid命令,还是服务器上面少用kill为妙 1.2 命名行格式 jstack [ option ] pid转载 2014-09-01 13:32:33 · 847 阅读 · 0 评论 -
关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
1.XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入事转载 2014-08-14 16:37:06 · 461 阅读 · 0 评论 -
EDA事件驱动架构
事件代表过去发生的事件,事件既是技术架构概念,也是业务概念。以事件为驱动的编程模型称为事件驱动架构EDA。 EDA是一种以事件为媒介,实现组件或服务之间最大松耦合的方式。传统面向接口编程是以接口为媒介,实现调用接口者和接口实现者之间的解耦,但是这种解耦程度不是很高,如果接口发生变化,双方代码都需要变动,而事件驱动则是调用者和被调用者互相不知道对方,两者只和中间消息队列耦合。 事件驱转载 2014-08-14 18:50:53 · 980 阅读 · 0 评论 -
Netty系列之Netty安全性
1. 背景1.1. 严峻的安全形势1.1.1. OpenSSL Heart bleed漏洞2014年上半年对网络安全影响最大的问题就是OpenSSL Heart bleed漏洞,来自Codenomicon和谷歌安全部门的研究人员发现OpenSSL的源代码中存在一个漏洞,可以让攻击者获得服务器上64K内存中的数据内容。该漏洞在国内被译为” OpenSSL心脏出血漏洞”,因其破转载 2014-08-13 09:47:49 · 2297 阅读 · 1 评论 -
深度解析Java 8:JDK1.8 AbstractQueuedSynchronizer的实现分析(上)
前言Java中的FutureTask作为可异步执行任务并可获取执行结果而被大家所熟知。通常可以使用future.get()来获取线程的执行结果,在线程执行结束之前,get方法会一直阻塞状态,直到call()返回,其优点是使用线程异步执行任务的情况下还可以获取到线程的执行结果,但是FutureTask的以上功能却是依靠通过一个叫AbstractQueuedSynchronizer的类来实现,转载 2014-08-13 09:40:10 · 841 阅读 · 0 评论 -
Netty系列之Netty高性能之道
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技转载 2014-08-13 11:04:59 · 484 阅读 · 0 评论 -
Linux 性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的、简单的小工具。系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools) 和幻灯片。和 Brendan 去年的 talk 比较,今年增加了测试和优转载 2014-09-09 17:04:58 · 464 阅读 · 0 评论 -
敏捷文档编制路线图
John是一家大型公司的长期分析师,负责捕获新的软件产品及现有软件产品的需求。他用SRS(软件需求规格说明书)记录所有客户对正在开发或维护的特定产品的需求。Jane是同一家公司的开发人员。她通常接收John的软件需求规格说明书(SRS),而后开始对要实现的内容进行技术分析和设计。完成分析之后,她就开始写代码实现。相关厂商内容移动开发中的痛点H转载 2014-08-13 09:51:46 · 545 阅读 · 0 评论 -
20个设计模式和软件设计面试问题
不管是参加Java面试还是C#面试,设计模式和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎么把一个问题分割成一段段代码或者软件设计,但这些能力和技巧并不能凭空而来。你需要持续做大型、小型系统的设计和编码,并且不断从错误中学习。从面向对象设计原则 开始是一个不错的选择。好吧,这篇文章是关于一些在各种面试中频转载 2014-08-13 09:17:36 · 1139 阅读 · 0 评论 -
性能分析十八招,你用哪一招
摘要:对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。本文将阐述进行性能分析采用的十八个方法论。对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。为确保软件满足或超过设计的期望值,有必要分析应用程序的性能以发现潜在的问题。性能分析一个必不转载 2014-08-12 14:23:27 · 4545 阅读 · 0 评论 -
Java线程面试题Top50
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用转载 2014-08-21 16:49:02 · 573 阅读 · 0 评论 -
Hibernate和UUID标示符
简介在前一篇博客中,我们讨论了UUID代理键(surrogate keys)以及比自增标示符更适用的使用场景。UUID的数据库生成方式有很多种方式可表达一个128位UUID。每当遇到疑问时,我喜欢用stack exchange来作为权威参考。由于表ID一般会建索引,经过压缩的数据类型会占用更少的空间。按照效率由高到低有如下几种选择:一部分数据库(转载 2014-08-06 09:39:09 · 546 阅读 · 0 评论 -
多核系统上的 Java 并发缺陷模式(bug patterns)
对于多线程编程经验较少的程序员而言,开发多核系统软件将面临两个方面的问题:首先,并发会给 Java 程序引入新的缺陷,如数据速度和死锁,它们是非常难以复现和发现的。其次,许多程序员并不知道特定多线程编程方法的微妙细节,而这可能会导致代码错误。为了避免给并发程序引入缺陷,Java 程序员必须了解如何识别缺陷在多线程代码中很可能出现的关键位置,然后才能够编写出没有缺陷的软件。在本文中,我们将帮助转载 2015-01-27 15:13:09 · 456 阅读 · 0 评论 -
Spring 事务管理高级应用难点剖析: 第 1 部分
DAO 和事务管理的牵绊很少有使用 Spring 但不使用 Spring 事务管理器的应用,因此常常有人会问:是否用了 Spring,就一定要用 Spring 事务管理器,否则就无法进行数据的持久化操作呢?事务管理器和 DAO 是什么关系呢?也许是 DAO 和事务管理如影随行的缘故吧,这个看似简单的问题实实在在地存在着,从初学者心中涌出,萦绕在开发老手的脑际。答案当然是否定的!我们都知道:转载 2015-01-27 17:48:01 · 441 阅读 · 0 评论 -
浅谈JS DDoS攻击原理与防御
分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击。Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师。近日,他撰文介绍了攻击者如何利用恶意网站、服务器劫持和中间人攻击发起DDoS攻击,并说明了如何使用HTTPS以及即将到来的名为“子资源一致性(Subresource Integrity,简称SRI)”的Web新技术保护网站免受攻击。现代网转载 2015-05-19 19:22:44 · 525 阅读 · 0 评论 -
java中的线程通信
原文链接 作者:Jakob Jenkov 译者:杜建雄 校对:方腾飞 java中线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了。 1、通过共享对象通信 java学习中线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程A在一个同步块里设置boolean型成员转载 2015-05-15 10:25:19 · 418 阅读 · 0 评论 -
JVM研究
1 JVM 简介JVM是我们Javaer的最基本功底了,刚开始学Java的时候,一般都是从“Hello World”开始的,然后会写个复杂点class,然后再找一些开源框架,比如Spring,Hibernate等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存溢出什么的,今天是交易系统报了StackOverfl转载 2015-05-14 20:49:48 · 444 阅读 · 0 评论 -
关于垃圾回收被误解的7件事
对Java垃圾回收最大的误解是什么?它实际又是什么样的呢? 当 我还是小孩的时候,父母常说如果你不好好学习,就只能去扫大街了。但他们不知道的是,清理垃圾实际上是很棒的一件事。可能这也是即使在Java的世界中, 同样有很多开发者对GC算法产生误解的原因——包括它们怎样工作、GC是如何影响程序运行和你能对它做些什么。因此我们找到了Java性能调优专家Haim Yadid,并把名为J转载 2015-04-28 09:38:58 · 388 阅读 · 0 评论 -
Java字节码忍者禁术
Java语言本身是由Java语言规格说明(JLS)所定义的,而Java虚拟机的可执行字节码则是由一个完全独立的标准,即Java虚拟机规格说明(通常也被称为VMSpec)所定义的。JVM字节码是通过javac对Java源代码文件进行编译后生成的,生成的字节码与原本的Java语言存在着很大的不同。比方说,在Java语言中为人熟知的一些高级特性,在编译过程中会被移除,在字节码中完全不见踪影。这方面最明显的转载 2015-04-27 14:06:23 · 495 阅读 · 0 评论 -
【转】对前端质量保障的思考 - Barret Lee
我们时时在踩坑,有时也忍不住埋怨前人给我们留下了无数的坑,可回头想想,自己是不是也在挖坑等别人踩…上次听 赵海平 的讲座,他提到 Facebook 没有测试人员,以前和现在都没有,以后也不打算有。还提到上线之后就开发者坐在系统前等着,只要有bug,系统能够在五分钟之内检测到,并提供快捷方式修复。我惊叹的是他们能够在五分钟之内监控到所有的问题,实时回馈并及时修复。当然在探讨质量保障这个话题前,我们需要转载 2015-04-24 10:27:46 · 806 阅读 · 0 评论 -
可扩展、高可用服务网络设计方案
定义可扩展:在用户访问数量快速增长的情况下,不终止现有服务来扩展系统的容量。比如web服务器目前已经不能接受更多的用户访问,可以在不停止服务的情况下增加第2台服务器,甚至更多的服务器,而且新增服务器对已有的服务器不会造成负面影响。高可用性:没有办法保证系统7*24不发生故障,但用户却要求任何时候都可以正常访问系统,这就是系统高可靠性的需求。一般来说,一个服务是运行在一个系统/机器上,一旦系转载 2015-04-15 10:15:16 · 674 阅读 · 0 评论 -
JVM 线程堆栈分析过程详解
在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因。在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术。在线程堆栈中存储的信息,通常远超出你的想象,我们可以在工作中善加利用这些信息。我的目标是分享我过去十几年来在线程分析中积累的知识和经验。这些知识和经验是在各种版本的JVM以及各厂商的JVM供应商的深入分析中获得的,在这个过程中我也总结转载 2015-03-27 09:58:17 · 1005 阅读 · 0 评论 -
JVM并发机制探讨—内存模型、内存可见性和指令重排序
并发本来就是个有意思的问题,尤其是现在又流行这么一句话:“高帅富加机器,穷矮搓搞优化”。从这句话可以看到,无论是高帅富还是穷矮搓都需要深入理解并发编程,高帅富加多了机器,需要协调多台机器或者多个CPU对共享资源的访问,因此需要了解并发,穷矮搓搞优化需要编写各种多线程的代码来压榨 CPU的计算资源,让它在同一时刻做更多的事情,这个更需要了解并发。在我前一篇关于并发的文章http://my.o转载 2015-03-27 10:03:02 · 373 阅读 · 0 评论 -
成为Java GC专家(5)—Java性能调优原则
本文由 ImportNew - 蒋 生武 翻译自 dzone。欢迎加入翻译小组。转载请参见文章末尾的要求。这是“成为Java GC专家”系列的第五篇文章。在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念。你应该了解了JDK7中5种GC类型以及各种类型对应转载 2014-12-05 11:12:11 · 898 阅读 · 0 评论 -
Java内部类总结
内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类 为什么需要内部类? 典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象转载 2015-01-27 14:04:25 · 375 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 ——synchronized 和volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变转载 2015-01-27 14:05:52 · 398 阅读 · 0 评论 -
对TCP/IP网络协议的深入浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑。主要是因为对网络协议不太熟悉,对一些概念也没弄清楚。后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网络协议有了初步的认识,在这里总结出来,可以梳理一下我对网络协议的理解,加深印象.话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂转载 2014-08-06 09:39:25 · 449 阅读 · 0 评论 -
Java语言基础特性——第二部分
使用Java5中的类型安全枚举和注解(以及元注解)编程深入研究安全的枚举类型,并学会在switch语句中正确的使用;然后开始使用Java注解和元注解类型,元注解用来阐明Java代码里注解的作用和功能,例如Target。在我的Java语言基础特性的第一篇(上)及第一篇(下)文章中介绍了断言和泛型,最后对为什么泛型组件是Java5中相当有争议的一个新特性进行了讨论。本文我将介绍Java5另外两转载 2014-06-18 10:09:42 · 616 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理 分享到:39本文由 ImportNew - 唐小娟 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢转载 2013-11-18 09:24:41 · 518 阅读 · 0 评论 -
驯服 Tiger: 并发集合
在 Java 编程的早期阶段,位于 Oswego 市的纽约州立大学(SUNY) 的一位教授决定创建一个简单的库,以帮助开发人员构建可以更好地处理多线程情况的应用程序。这并不是说用现有的库就不能实现,但是就像有了标准网络库一样,用经过调试的、可信任的库更容易自己处理多线程。在 Addision-Wesley 的一本相关书籍的帮助下,这个库变得越来越流行了。最终,作者 Doug Lea 决定设法让它成转载 2013-10-17 10:18:44 · 675 阅读 · 0 评论 -
JDK 7 中的 Fork/Join 模式
介绍随着多核芯片逐渐成为主流,大多数软件开发人员不可避免地需要了解并行编程的知识。而同时,主流程序语言正在将越来越多的并行特性合并到标准库或者语言本身之中。我们可以看到,JDK 在这方面同样走在潮流的前方。在 JDK 标准版 5 中,由 Doug Lea 提供的并行框架成为了标准库的一部分(JSR-166)。随后,在 JDK 6 中,一些新的并行特性,例如并行 collection 框架,转载 2013-10-17 09:53:23 · 657 阅读 · 0 评论 -
JAVA值传参和引用传参
这是个老生常谈的问题了,经过了先辈们无数的争论,但是还是没有提出一个令所有人满意的答案。当然,我在这里只是就我自己对Java和其他语言的一些认识谈谈自己的理解和看法。 首先,我们要明确下面这两条不可争论的事实了: 【1】、对象是传引用的 【2】、基本类型是传值的 我对这个问题是这样理解的: 有过C++背景的朋友可能都会有一个认识,因为C/C++传参有很多种选择,直接传递对象或值转载 2013-08-01 11:33:25 · 1135 阅读 · 0 评论 -
Java 2 引用类使用指南
当在 Java 2 平台中首次引入 java.lang.ref 包(其中包含 SoftReference 、 WeakReference 和 PhantomReference类)时,它的实用性显然被过分夸大了。它包含的类可能是有用的,但这些类具有的某些局限性会使它们显得不是很有吸引力,而且其应用程序也将特别局限于解决一类特定的问题。垃圾收集概述引用类的主要功能就是能够引用仍可以被垃转载 2013-07-24 18:07:11 · 604 阅读 · 0 评论 -
从 Java 代码到 Java 堆
优化应用程序代码的内存使用并不是一个新主题,但是人们通常并没有很好地理解这个主题。本文将简要介绍 Java 进程的内存使用,随后深入探讨您编写的 Java 代码的内存使用。最后,本文将展示提高代码内存效率的方法,特别强调了 HashMap 和 ArrayList 等 Java 集合的使用。背景信息:Java 进程的内存使用参考知识如需进一步了解 Java 应用程序的转载 2013-07-25 12:09:15 · 592 阅读 · 0 评论 -
Java 中的进程与线程
简介: 进程与线程在程序开发中无疑占有极其重要的地位,而 Java 语言为了能提供统一的、与平台无关的关于进程和线程的编程接口,必然要对操作系统提供的相关功能做进一步封装。本文主要介绍 Java 中关于进程与线程的相关封装类,揭示如何创建 Java 进程与线程,Java 封装类和实际的系统本地进程和线程是如何对应的,以及使用 Java 进程和线程的一些限制。发布日期: 2013 年转载 2013-07-25 12:04:36 · 885 阅读 · 0 评论 -
【转】Java 类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用转载 2013-07-24 18:03:33 · 525 阅读 · 0 评论 -
并发集合类
在Java类库中出现的第一个关联的集合类是 Hashtable ,它是JDK 1.0的一部分。 Hashtable 提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的―― Hashtable 的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。 Hashtable 的后继者 HashMap 是作为JDK1.2中的集合框架的一部分出现转载 2013-07-25 15:31:47 · 602 阅读 · 0 评论 -
JVM 介绍
JVM详解本文详细讲解了JVM(Java Virtual Machine)的方方面面,首先由java的特性来描绘JVM的大致应用,再细细阐述了JVM的原理及内存管理机制和调优.最后讲述了与JVM密切相关的Java GC机制.本文内容大多来自网络,但内容十分丰富,是学习JVM的好资料.后面会再针对JVM的两大职责classloader和 execution engine进转载 2013-08-01 09:51:36 · 776 阅读 · 0 评论