java
文章平均质量分 86
等待你的蜕变
这个作者很懒,什么都没留下…
展开
-
修改配置myeclipse/eclipse的注释作者名author
在做开发的时候,经常需要将作者的名字、时间以及功能介绍等以注释的形式添在代码中,我在用myeclipse开发java的时候也常这样做,但是之前一直没有去设置author,每次使用快捷方法生成注释的时候,@author后面默认的都是我之前装系统的时候设置的计算机名字,而且每次我也都是在生成之后然后删掉重新写上自己要的名字,一直这样做的话,确实很烦,今天就在网上找到了两种方法,可以设置@author为转载 2016-04-25 14:08:28 · 637 阅读 · 0 评论 -
深入理解Java中的final关键字
Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可转载 2017-07-14 09:39:46 · 196 阅读 · 0 评论 -
Java的Main方法与Java进程之间的关系
Java应用程序的入口就是main方法()!启动一个Java应用程序,就是要运用它的main方法,这时候就启动了一个Java虚拟机------在Windows下查看任务管理器,就会发现多出了一个javaw.exe的进程,这个就是java虚拟机!而main()方法其实是Java虚拟机这个进程的一个主线程(默认至少还有一个垃圾回收器的守护线程,所以运行一个java应用程序,启动了一个java进转载 2017-03-10 15:27:47 · 1354 阅读 · 0 评论 -
Java 中的进程与线程
进程与线程在程序开发中无疑占有极其重要的地位,而 Java 语言为了能提供统一的、与平台无关的关于进程和线程的编程接口,必然要对操作系统提供的相关功能做进一步封装。本文主要介绍 Java 中关于进程与线程的相关封装类,揭示如何创建 Java 进程与线程,Java 封装类和实际的系统本地进程和线程是如何对应的,以及使用 Java 进程和线程的一些限制。概述进程与线程,本质转载 2017-03-10 15:17:25 · 291 阅读 · 0 评论 -
IO 的底层实现问题
最近在看 JAVA NIO 的相关知识,了解一下IO的底层实现原理。IO涉及到的底层的概念大致如下:1) 缓冲区操作。2) 内核空间与用户空间。3) 虚拟内存。4) 分页技术。一,虚拟存储器虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。虚拟存储器的三大能力:①将主存看成是一个存储在磁盘转载 2017-03-09 16:30:53 · 350 阅读 · 0 评论 -
深入分析 Java I/O 的工作机制
I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动。这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 I/O 瓶颈。本文的目的正是分析 I/O 的内在工作机制,你将了解到:Java 的 I/O 类库的基本架构;磁盘 I/O 工作机制;网络 I/O 的工作机制;其中以网络 I/O 为重点介绍 Jav转载 2017-03-09 15:54:35 · 224 阅读 · 0 评论 -
Socket网络编程,TCP/IP和Http等网络协议理解
一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。http协议 对应于应用层 tcp协议 对应于传输层 ip协议 对应于网络层 三者本质上转载 2017-03-09 13:58:13 · 2590 阅读 · 0 评论 -
Java I/O底层是如何工作的?
目录缓存处理和内核vs用户空间虚拟内存内存分页面向文件、块的I/O文件锁定面向流的I/O缓存处理和内核vs用户空间缓冲与缓冲的处理方式,是所有I/O操作的基础。术语“输入、输出”只对数据移入和移出缓存有意义。任何时候都要把它记在心中。通常,进程执行操作系统的I/O请求包括数据从缓冲区排出(写操作)和数据填充缓冲区(读操作)。这就是转载 2017-03-08 23:03:26 · 228 阅读 · 0 评论 -
String类不可变性的好处
String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。String类不可变性的好处只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是转载 2017-07-14 09:47:44 · 936 阅读 · 0 评论 -
什么是静态(static)?什么是静态方法,静态变量,静态块和静态类?
static是Java中的一个关键字,我们不能声明普通外层类或者包为静态的。static用于下面四种情况。静态变量:我们可以将类级别的变量声明为static。静态变量是属于类的,而不是属于类创建的对象或实例。因为静态变量被类的所有实例共用,所以非线程安全的。通常静态变量还和关键字final一起用,作为所有对象共用的资源或常量。如果静态变量不是私有的,那么可以通过ClassName.vari转载 2017-07-14 09:55:01 · 2026 阅读 · 0 评论 -
Spring AOP在函数接口调用性能分析及其日志处理方面的应用
面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志。本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信息,包括:函数签名,传入参数,函数处理时间,异常信息拦截等, @Around是可以同时在所拦截方法的前后执行一段逻辑,可以满足我们的需求。目标对象目标对象是一个客户管理服务,下转载 2017-10-13 13:49:32 · 949 阅读 · 0 评论 -
线程池
不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求。线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的。本文主要介绍Java线程池的使用和如何正确的配置线程池。单线程我们先从基础开始。无论使用哪种应用服务器或者框架(如Tomcat、Jetty等),他们都有类似的基础实现。Web服务的基础是套接字(socket),套接字负责监听端口,等待T转载 2017-09-14 16:54:18 · 312 阅读 · 0 评论 -
JAVA数组去除重复数据
前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种。一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List list = new ArrayList(); for (int i=0; istr.原创 2017-08-02 22:33:25 · 572 阅读 · 0 评论 -
Cglib代理
CGLIB和我们的java的动态代理是有区别的,CGLIB是代理的类,而我们的java动态代理是代理的对象 首先我们先说一个"好像"和我们要讲的东西不相干的东西.(其实很重要的,能带你拐一个小的弯.)首先有两个类,子类和父类,父类和子类有相同的方法,当我们调用父类的时候,执行的是父类还是子类?不管你知道我不知道,我确定是子类.(如果是字节码的画,谁调用的就是谁的字节转载 2017-07-18 17:41:12 · 294 阅读 · 0 评论 -
NIO入门
我们在写java程序的时候,为了进行优化,把全部的精力用在了处理效率上,但是对IO的关注却很少。这也可能是由以前java早期时JVM在解释字节码时速度慢,运行速率大大低于本地编译代码,因此以前往往忽视了IO的优化。但是现在JVM在运行时优化已前进了一大步,现在的java应用程序更多的是受IO的束缚,也就是将时间花在等待数据传输上。现在有了NIO,就可以减少IO的等待时间,从而提升IO的效率转载 2017-07-17 14:54:00 · 299 阅读 · 0 评论 -
自己写一个java.lang.reflect.Proxy代理的实现
Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的。本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口、代理内容,生成代理。抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既转载 2017-07-16 10:51:06 · 378 阅读 · 0 评论 -
java泛型
Java泛型是JDK5引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用的时候使用具体的类型来替换。泛型最主要的应用是在JDK5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面上说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。从不好转载 2017-07-14 11:18:33 · 298 阅读 · 0 评论 -
动态绑定 vs 静态绑定
动态绑定(又名后期绑定)动态绑定是指编译器在编译阶段不知道要调用哪个方法,直到运行时才能确定。让我们用个例子来解释。譬如我们有一个叫作’SuperClass’的父类,还有一个继承它的子类’SubClass’。现在SuperClass引用也可以赋给SubClass类型的对象。如果SuperClass中有个someMethod()的方法,而子类也重写了这个方法,那么当调用SuperClass引转载 2017-07-14 10:03:50 · 291 阅读 · 0 评论 -
软件开发之技能梳理
编程开发本质是运用程序和计算机来解决现实中的各种问题,因此,编程开发人员的才智发挥载体是计算机或者说计算设备,直接武器是程序。程序员用来进行编程开发所需要的技能,归结起来主要如下:1. 理解计算模型和框架: 顺序计算、并发计算 (并行计算、分布式计算); 理解应用所基于的计算模型和框架是非常重要的。传统应用通常基于顺序计算,而现代商业应用,比如云计算,通常基于分布式计算架构; 大规模的转载 2017-02-17 16:33:01 · 419 阅读 · 0 评论 -
HashSet、HashMap,散列表数据结构(哈希表)
很多开发者,初学者都知道HashSet无序,不可重复,线程非同步。底层是哈希表结构。但它是怎么做到的?什么是散列表数据结构(哈希表)?有什么特性?都清楚吗?不清楚继续往下看。它是这样做到的:先来看HashSet的源码,首先看默认构造器:[java] public HashSet() { map = new HashMap(); } // ok,我们看转载 2016-06-22 20:49:56 · 1734 阅读 · 0 评论 -
java的几个关键
Java的学习比较复杂,在相关的一系列平台、规范和协议上。有经验的Java程序员都知道,只掌握了Java语言本身很难开发应用程序。撇开这些复杂的概念不谈,从初学者的角度,对于Java语言本身的学习给出几点见解和建议。本讨论基于以下假设:1.学习的目的是为了将来进行应用程序的开发,而不是进行语言理论研究2.将来的应用开发是在成熟的平台上展开,而不是自己从底层开发平台一、掌握静态方法和属性静态方法和属转载 2016-06-16 23:43:30 · 418 阅读 · 0 评论 -
java几个问题
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。问题一:我声明了什么!String s = "Hello world!";许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”转载 2016-06-15 11:42:57 · 243 阅读 · 0 评论 -
为什么要使用集合框架?
很多时候,我们专心研究一个东西的时候,往往忘记了我们最初的目的是什么。 曾经研究过那么久的Java集合框架,为了搞清里面的细节,甚至都跑去重新买了一本数据结构,终于知道了线性表,知道了树,知道了查找表。也自己动手实现了ArrayList,LinkedList,HashMap等。 今天在公交车上,突然想到“我们为什么要使用Java集合框架呢?”竟然一时语塞,半天想转载 2016-06-24 02:02:27 · 1161 阅读 · 0 评论 -
Hash表分析以及Java实现
这篇博客主要探讨Hash表中的一些原理/概念,及根据这些原理/概念,自己设计一个用来存放/查找数据的Hash表,并且与JDK中的HashMap类进行比较。我们分一下七个步骤来进行。 一。 Hash表概念二 . Hash构造函数的方法,及适用范围三. Hash处理冲突方法,各自特征四. Hash查找过程五. 实现一个使用Ha转载 2016-06-23 23:28:35 · 5753 阅读 · 4 评论 -
java多线程例子
我们在实现多线程广播屏幕截图的时候因为CPU对多个线程之间的执行顺序是随机的也就导致了我们发图片的时间间隔的不确定性从而导致了有些图片从开始发到发完的时间的不确定性严重降低了系统的实时性(实际上,在TCP模式下用线程池多线程随机发送图片改良下的远程监控系统,如果服务器端放电影,观测客户端,会发现经常会出现电影“倒着放”的现象,原因也就是这个还有救网络路由时间转载 2016-06-23 23:11:30 · 339 阅读 · 0 评论 -
JVM JRE JDK三者的区别和联系
一、 详细介绍1、JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。JVM 是 Java 平台转载 2016-06-23 13:20:51 · 6839 阅读 · 1 评论 -
MyEclipse的使用技巧
1.快捷键的使用a.关于注释的使用单行注释:Ctrl+/ 块注释:Ctrl+Shift+/ 删除块注释:Ctrl+Shift+\b.代码的移动选中代码alt+上下箭头c.查看代码F3或者Ctrl+鼠标左键点击原创 2015-07-15 09:35:24 · 343 阅读 · 0 评论 -
快速开发平台的构建思路
快速开发平台,重点在于快,要快无非就是两种手段:1、生成代码2、重用模块 详细看如下的分支图 就第一种情况生成代码来说,是每个快速开发平台必备的,基本上所有的快速开发平台都能生成CRUD,从jsp页面到java代码都可以,当然能不能生成直接可用的代码就似乎平台的功力了,有些是生成后,需要手动去调整某些东西才能运行,例如,一些表单的验证转载 2016-04-27 13:19:45 · 3221 阅读 · 3 评论 -
j2ee13个规范总结
什么是J2EE?在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了.J2EE就是基于Java技术的一系列标转载 2016-06-17 17:56:05 · 313 阅读 · 0 评论 -
Java编程中“为了性能”需做的26件事
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 本文参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,转载 2016-06-19 16:03:40 · 212 阅读 · 0 评论 -
JSON for java入门总结
一、JSON介绍JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,比如JAVA产生了一个数据想要给JavaScript,则除了利用XML外,还可以利用JSON;JSON相比XML的优势是表达起来很简单;官网:http://www.json.org/JSON是AJAX中的X(就是可以取代XML);转载 2016-06-22 20:42:54 · 350 阅读 · 0 评论 -
java 单例模式的7种实现方法
第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private Singleton (){} 4 public static Singleton getInstance() { 5 if (instance == nul转载 2016-06-22 20:34:08 · 358 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会涉及到散转载 2016-06-22 00:54:26 · 333 阅读 · 0 评论 -
HashMap工作原理
HashMap 的工作原理是近年来常见的 Java 面试题。几乎每个 Java 程序员都知道 HashMap,都知道哪里要用 HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现 HashMap 来考察你的编程能力。ConcurrentHashMa转载 2016-06-22 00:50:58 · 284 阅读 · 1 评论 -
java中的缓存思想与相应的设计模式
学习的过程中,频繁见到缓存,而在s2sh框架中,也会经常使用到一级缓存与二级缓存,实现原理与实现的响应机制在此进行相应的总结:简单的讲,缓存就是将默写资源或者数据会频繁会被使用到的数据或者资源存储在系统外,比如数据库、硬盘文件等,那么每次操作这些数据的时候都从数据库或者硬盘上去获取,速度会很慢,会造成性能问题。一个简单的解决方法就是:把这些数据缓存到内存里面,每次操作的时候,先到内转载 2016-06-21 18:57:48 · 2572 阅读 · 0 评论 -
简单的例子谈java的并发
一个简单的单例示例单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写public class UnsafeLazyInitiallization { private static UnsafeLazyInitiallization instance; private UnsafeLazyInitiallization() { } pub转载 2016-06-21 12:17:59 · 5139 阅读 · 3 评论 -
NIO 概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selecto转载 2016-06-21 11:45:05 · 265 阅读 · 0 评论 -
Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr转载 2016-06-21 11:43:42 · 340 阅读 · 0 评论 -
多线程和队列的通俗理解
我们先不要用专业的角度来看多线程。先来回忆一下,现实生活中,自己曾经一个人做的事,和多个人同时做的事。 假如现在某百货商场做一个抢购活动,限时限量的。那么就意味着你抢得越多就越占便宜,至少可以这样去理解。 那么如果你一个人去抢的话,你只有两只手,抢得再利害也只有那么一点,在同等时间的情况下,你的机会会很少的,这也就是我们经常谈到的“效率”二字。转载 2017-12-29 16:00:20 · 9623 阅读 · 0 评论