Java
eff666
这个作者很懒,什么都没留下…
展开
-
Java内存泄漏详解
1、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方法进行原创 2017-05-07 16:11:57 · 601 阅读 · 0 评论 -
synchronized关键字
1、引言我们知道Java API提供了丰富的多线程机制,但是要想多线程机制能够正常运转,需要采取一些措施来防止多个线程访问相同的资源。为防止出现这样的冲突,只需在线程使用一个资源时为其加锁即可。访问资源的第一个线程加上锁以后,其他线程便不能再使用那个资源,除非被解锁。在Java中,对这种特殊的资源,Java提供了synchronized关键字来防止它们的冲突。用Java中的synchronized关原创 2017-04-08 11:25:29 · 392 阅读 · 0 评论 -
TCP协议的三次握手和四次挥手
1、TCP(Transmission Control Protocol)传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。2、TCP报文格式TCP报文格式图:上图中有几个字段需要重点介绍下:(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认序号:Ack序号,占32位,只有ACK标志位为1原创 2017-03-12 13:57:07 · 339 阅读 · 0 评论 -
java Exception出错的栈信息打印到日志中
try { ....} catch (Exception e) { e.printStackTrace(); log.err(e.getMessage()); .....}通常我们都会去这样找到出错的信息,而打印的出错的信息栈,因为会输出到std.err中,所以在我们自己定义的日志文件中是不能够找到的,为了解决这个问题,可以通过如下代码解决:public static String er转载 2017-03-18 10:53:10 · 14297 阅读 · 0 评论 -
使用BigDecimal进行精确运算
1、概述 我们知道,java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。在使用BigDecimal类来进行精准计算的时候,主要分为以下步骤:(1)用float或者double变量构建BigDecimal对象。 (2)通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。 (3)把BigDec原创 2016-10-26 19:31:52 · 630 阅读 · 0 评论 -
java中的throw和throws区别
1、throws throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:public class Shoot { static void pop() throws NegativeArraySizeException { //定义方法并抛出Negative原创 2016-09-21 08:57:58 · 488 阅读 · 0 评论 -
java定时器用法
1、代码示例//继承TimerTaskpublic class TestTimerTask extends TimerTask{ public void run() { while (true) { boolean result = getFlag(); if (result) { break;原创 2016-09-20 19:12:03 · 358 阅读 · 0 评论 -
Java序列化与反序列化
1、Java序列化与反序列化(what) Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。序列化是Java中实现持久化存储的一种方法。 2、为什么需要序列化与反序列化(why) 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等,而这些数据都会以二进制序列的形式在网络上传送。原创 2016-10-09 21:44:58 · 585 阅读 · 0 评论 -
java中获取文件的路径
1、java代码获取文件当前路径(1)利用System.getProperty()函数获取当前路径System.out.println(System.setProperty("user.dir", "c:users"));System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径原创 2016-08-10 08:58:26 · 1053 阅读 · 0 评论 -
Java关键字之abstract(抽象类的概念和使用)
1、概述 (1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用 abstract 修饰符来表示抽象方法和抽象类。 (2)abstract修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法声明中使用abstract修饰符,表明该方法是一个抽象方法,它需要在子类实现。如果一个类包含抽象方法,则这个类也是抽象类,必须使用abst原创 2016-08-26 08:59:12 · 25891 阅读 · 5 评论 -
Java static变量和static方法介绍
1、概述 static修饰符能够与变量、方法一起使用,表示是“静态”的。静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法。静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同。如:原创 2016-08-25 08:52:04 · 731 阅读 · 0 评论 -
Java中的注解
1、 简介Annotation(注解)就是Java提供了一种为程序元素关联任何信息或任何元数据(metadata)的途径和方法。它是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原创 2017-04-08 11:51:47 · 455 阅读 · 0 评论 -
Java集合List、Set和Map的区别
Java集合1、集合与数组 Java中对集合的理解是相对于数组而言的。 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)。 而java集合可以存储和操作数目不固定的一组数据。所有的JAVA集合都位于java.util包中!java集合只能存放引用类型的的数据,不能存放基本数据类型。简单来说就是,数组存放大小固定,类型一样的数据;而集合存放大小不固定,原创 2016-07-17 16:32:06 · 1061 阅读 · 0 评论 -
java api从高德地图获取某个位置的经纬度
1、代码展示import com.fasterxml.jackson.databind.JsonNode;import com.ning.http.client.AsyncHttpClient;import com.ning.http.client.AsyncHttpClientConfig;import com.ning.http.client.ListenableFuture;原创 2016-08-05 08:51:47 · 18465 阅读 · 6 评论 -
Spring IoC介绍
在前一篇文章中,我们讲了java web项目搭建,现在看下spring ioc在java中的运用,开发工具为Intellij Idea。1、简介 IoC(Inversion of Control)通常称为控制反转,是Spring框架的核心。即通过Spring容器控制对象之间的依赖关系,而不是对象自己通过new的方式去创建依赖的对象,相对于主动去创建对象,这种失去对对象的控制便叫做控制反转,控制反转原创 2016-09-29 18:43:17 · 445 阅读 · 0 评论 -
Spring AOP介绍
1、简介 spring提供了两个核心功能,一个是IoC(控制反转),另外一个便是Aop(面向切面编程),IoC有助于应用对象之间的解耦,AOP则可以实现横切关注点(如日志、安全、缓存和事务管理)与他们所影响的对象之间的解耦。AOP主要包含了通知、切点和连接点等术语,下面分别介绍。1.1 通知(Advice) 通知定义了切面是什么以及何时调用,何时调用包含以下几种:Before 在方法被调用之前调原创 2016-09-29 18:53:44 · 492 阅读 · 0 评论 -
Spring框架的七大模块
1、Spring框架的七大模块(1)核心容器(Spring core)核心容器提供spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。它主要的组件就是BeanFactory,是工厂模式的实现。同时BeanFactory适用控制反转(IOC)思想将应用程序的配置和依赖性规范与实际的应用程序分开。Core模块是Spring的核心类库,Spring的所有功能转载 2017-02-28 20:22:19 · 3055 阅读 · 0 评论 -
Spring框架中获取连接池的四种方式
1、连接池概述 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没转载 2017-02-28 20:28:12 · 11551 阅读 · 0 评论 -
Spring四种依赖注入方式
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转载 2017-02-28 20:33:18 · 586 阅读 · 0 评论 -
Spring AOP
1、AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应转载 2017-02-28 20:37:28 · 345 阅读 · 0 评论 -
HashCode详解
1、概念 通常想查找一个集合中是否包含某个对象,就是逐一取出每个元素与要查找的元素进行比较,当发现某个元素与要查找的对象进行equals方法比较的结果相等时,则停止继续查找并返回肯定的信息,否则返回否定的信息。如果一个集合中有很多元素譬如成千上万的元素,并且没有包含要查找的对象时,则意味着你的程序需要从该集合中取出成千上万个元素进行逐一比较才能得到结论,于是,有人就发明了一种哈希算法来提高从集原创 2016-09-20 19:34:46 · 2140 阅读 · 0 评论 -
Hibernate框架ORM的实现原理
1、什么是ORMORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。2、什么是Hibernate对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可原创 2017-03-09 18:40:43 · 808 阅读 · 0 评论 -
Java中Array.sort()的几种用法
Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。下面为大家介绍这几种形式的用法。1、Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。public class Test { public static void main(String[] args) {原创 2017-03-19 20:55:39 · 68521 阅读 · 2 评论 -
Java关键字之this
1、概述 this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。如:public class Demo{ public int x = 10; public int y = 15; public void sum(){ // 通过 this 点取成员变量 int z = this.x + t原创 2016-08-24 08:52:02 · 353 阅读 · 0 评论 -
java关键字之final
1、final 简单来说,当我们的程序中使用了final关键字后,那就表明这个东东是无法改变的。final常用的三种情况:基本类型数据,方法和类。 2、final基本类型数据 对于基本类型数据,final使其数值恒定不变;对于对象的引用,final使其引用恒定不变。即该引用一旦被初始化指向一个对象,就再无法把它改变让其指向另一个对象。原创 2016-07-31 17:35:45 · 271 阅读 · 0 评论 -
java关键字之super
1、概要 (1)super关键字与this类似,thi 用来表示当前类的实例,super用来表示父类。 (2)super可以用在子类中,通过点号(.)来获取父类的成员变量和方法。super也可以用在子类的子类中,Java 能自动向上层类追溯。 (3)父类行为被调用,就好象该行为是本类的行为一样,而且调用行为不必发生在父类中,它能自动向上层类追溯。 (4)super不是一个对象的引用原创 2016-08-23 08:38:24 · 435 阅读 · 0 评论 -
java反射机制
1、java反射 Class类与java.lang.reflect类库一起对反射的概念进行了支持。该类库包含了Filed,Method和Constructor类(每个类都实现了member接口)。这些类型的对象是由jvm在运行时创建的,用来表示未知类里对应的成员。这样可以使用Constructor创建新的对象,用get()和set()方法读取和修改Field对象关联的字段,用invoke()方原创 2016-08-16 19:14:28 · 380 阅读 · 0 评论 -
java中根据两个位置的经纬度计算距离
1、代码 /** * 根据两个位置的经纬度,来计算两地的距离(单位为KM) * 参数为double类型 * long1 位置1经度 * lat1 位置1纬度 * long2 位置2经度 * lat2 位置2纬度 */ public class Distance { private static final double EARTH_RAD原创 2016-08-05 08:42:47 · 7044 阅读 · 0 评论 -
java加密技术DES和Base64实例
1、实例 /** * DES解密 */ public static byte[] decrypt(byte[] data, String key) throws Exception { try{ SecureRandom random = new SecureRandom(); DESKeySpec desKey = new DESKey原创 2016-08-05 08:35:33 · 1087 阅读 · 0 评论 -
java中overload与override的区别
1、综述 重写(Override)也称覆盖,它是父类与子类之间多态性的一种表现,而重载(Overload)是一个类中多态性的一种表现。 override从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。overload它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。原创 2016-07-31 17:28:30 · 16012 阅读 · 2 评论 -
java中类的访问权限介绍
1、在一个.java文件中,有且仅有一个public类;类名必须与.java文件名相同;在一个.java文件中可以有多个不是public的类,但是不推荐这种做法,通常一个类完成某一个功能。 2、对于一个类而言,仅有包访问权限或者public,类不可以是private(这样会使得除该类之外,其他类都不可以访问它),也不可以是protected。包访问权限是指类去掉public即为包访问权限。原创 2016-07-31 17:22:34 · 568 阅读 · 0 评论 -
可变参数列表与枚举介绍
1、可变参数列表原创 2016-07-31 17:18:30 · 568 阅读 · 0 评论 -
static数据的初始化
1、static数据对每个类来说都只有一份存储空间,非static数据则是每个对象都有一个存储空间。可通过类名直接来访问类中的static方法或成员,即不用创建对象,就可以调用它。static方法内部不能调用非static方法,反过来可以。 2、对于静态数据无论创建多少个对象,静态数据都只占用一份存储区域。因为静态对象只会被初始化一次,只有在第一次被创建,或者第一次访问静态数据的时候,它才会被初始原创 2016-07-31 17:12:41 · 967 阅读 · 0 评论 -
Java内部类详解
1、内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。原创 2016-07-31 17:04:15 · 687 阅读 · 0 评论 -
位运算简介及实用技巧
2、什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果原创 2016-07-30 10:15:40 · 1584 阅读 · 1 评论 -
Java中的日期时间介绍
public class TestDate { public static void main(String[] args){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); // 1.得到当原创 2016-07-17 17:03:36 · 671 阅读 · 0 评论 -
Java 数组详解
1、概要 数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。 组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。 2、初始化数组//2.1 动态初始化int[] array = new int[3];原创 2016-08-19 08:47:39 · 1002 阅读 · 0 评论 -
Java switch详解
1、概要 (1)switch 语句由一个控制表达式和多个case标签组成。 (2)switch 控制表达式支持的类型有byte、short、char、int、enum(Java 5)、String(Java 7)。 (3)switch-case语句完全可以与if-else语句互转,但通常来说,switch-case语句执行效率要高。 default在当前switch找不到匹配的case时执行。原创 2016-08-19 08:53:25 · 2608 阅读 · 0 评论 -
java中的正则表达式匹配
最近在处理数据的时候,需要对数据进行验证,在这里就用到了正则表达式来匹配数据格式。因此,总结了一些java中正则的使用。 1、详解Pattern类和Matcher类 java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现。Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建原创 2016-08-10 20:20:02 · 760 阅读 · 0 评论 -
Java通配符(?)
1、如果要定义一个泛型类来表示坐标,坐标可以是整数、小数或字符串,请看下面的代码:class Point<T1, T2>{ T1 x; T2 y; public T1 getX() { return x; } public void setX(T1 x) { this.x = x; }原创 2016-08-22 20:01:02 · 1936 阅读 · 0 评论