自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (5)
  • 收藏
  • 关注

转载 全面了解java中的CAS机制

什么是CAS在jdk 1.5中增加的一个最主要的支持是Atomic类,比如说AtomicInteger, AtomicLong,这些类可帮助最大限度地减少在多线程中对于一些基本操作(例如,增加或减少多个线程之间共享的值)的复杂性。而这些类的实现都依赖于CAS(compare and swap)的算法。 乐观锁和悲观锁cpu是时分复用的,也就是把cpu的时间片,分配给不同的threa...

2018-07-27 16:57:08 250

原创 4. 虚拟机类加载机制(二)

1.类加载器把加载阶段的 “通过一个类的全限定名来获取一个类的二进制字节流”这个动作放到java虚拟机外部去实现,实现这个动作的代码模块为“类加载器”三种不同的类加载器:启动类加载器、扩展类加载器、应用程序类加载器除此之外,还有自定义的类加载器,它们之间的层次关系被称为类加载器的双亲委派模型。该模型要求除了顶层的启动类加载器外,其余的类加载器都应该有自己的父类加载器,而这种父子关系一般...

2018-07-20 16:58:28 201

原创 4. 虚拟机类加载机制 (一)

1.概述上节讲到虚拟机要加载Class文件,那是如何加载这些Class文件呢?Class文件中的信息进入到虚拟机会发生哪些变化?都是这节要讨论的。2. 什么是虚拟机的类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。3. 在java语言中类的加载、连接和初始化过程都是在...

2018-07-19 17:04:42 264

原创 3.类文件结构

1.  代码编译结果从本地机器码转变为字节码,是构成平台无关性的基石。实现平台无关性的基础是虚拟机和字节码存储格式。 java虚拟机不与java等任何语言绑定,java虚拟机只认识.class文件,任何语言只要编译成了.class文件(字节码),java虚拟机都能运行。即虚拟机不关心Class的来源是何种语言。2. 那Class文件包含哪些东西呢?包含有类的版本、字段、方法、接口等...

2018-07-19 11:46:49 217

原创 2. 垃圾收集器与内存分配策略(二)

上一篇我们已经讨论了内存回收的内容,我们再来说一下,对象的内存分配策略往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启用了本地线程分配缓冲,将按线程优先在TLAB上分配。普遍的内存分配规则:(1)对象优先在Eden分配  大多数情况下,对象在Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC(2)大对象直接进入老年代 所谓的大对象是指,需要...

2018-07-16 16:09:47 189

原创 2.垃圾收集器与内存分配策略(一)

1. 垃圾收集需要完成的三件事情:(1)哪些内存需要回收?(2)什么时候回收?(3)如何回收?哪些内存需要回收? 程序计数器、虚拟机栈、本地方法栈3个区域都是随着线程而生或死,当线程结束时,内存自然跟着回收了。但java堆和方法区则不一样,我们只有在程序运行期间才会知道创建哪些对象,这部分的内存分配与回收是动态的,所以,垃圾收集器主要关注堆和方法区的回收。什么时候回收?当然是对象死的时候回收。那如...

2018-07-15 17:40:17 203

原创 1.Java内存区域

1.对象的创建过程     (1)当遇到一个new指令的时候,首先去检查这个指令参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化,若没有,则先执行类的加载过程.     (2)在类加载检查通过后,虚拟机为新生对象在堆上分配内存。对象所需内存大小在类加载完后便可确定。那分配方案有两种:1.在java堆中内存是绝对规整的情况下,就把指针向空闲内存中移动...

2018-07-14 18:35:15 271

原创 面试准备:基于JDK1.8的 hashMap源码

在jdk1.8中hashMap进行了较大优化,具体可以回答以下几点:1.  hashMap内部由 数组+链表转变为数组+链表+红黑树实现,当链表节点大于8时,存储结构由链表转为红黑树。...

2018-07-12 16:20:50 759

原创 Mybatis语法解释

在使用Mybatis的时候,我们将查询语句写入.xml文件中,那具体的xml文件赢如何写呢?我们可以拿一个例子来解释:1. 前提:我们首先定义了java Bean:Color类public class Color { private Integer id; private String name; private Integer parentId; private...

2018-07-06 11:12:39 477

转载 全面了解java中的CAS机制

什么是CAS在jdk 1.5中增加的一个最主要的支持是Atomic类,比如说AtomicInteger, AtomicLong,这些类可帮助最大限度地减少在多线程中对于一些基本操作(例如,增加或减少多个线程之间共享的值)的复杂性。而这些类的实现都依赖于CAS(compare and swap)的算法。乐观锁和悲观锁cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process...

2018-07-02 15:43:03 200

转载 transient关键字详解

1,transient的用途及使用方法1,用途  我们知道,当一个对象实现了Serilizable接口,这个对象就可以被序列化,我们不关心其内在的原理,只需要了解这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。而在开发过程中,我们可能要求:当对象被序列化时(写入字节序列到目标文件)时,有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(...

2018-05-14 11:35:51 240

转载 java IO知识点

1.对于字节流InputStream和OutPutStream,当read()和writer()时,他们只接受byte[]型数组。对于字符流Reader和Writer,read()接受char[]类型,writer()可以接受字符串、char[]数组,int值等参数。为什么已经存在字节流还要引入字符流熟悉java的应该知道,字节流比字符流产生的更早,可以说jdk一面世,已经有字节流了。那么为什么后...

2018-05-04 16:40:33 700

转载 AOP概念与运行原理

转载于:https://blog.csdn.net/u012403290/article/details/64443021引言AOP指的就是面向切面编程,在实际的开发和工作中很多地方都深有体现,比如权限控制,控制全局状态等。接下来会详细阐述AOP的概念,给出对应的DEMO来深入学习实践,探讨AOP的意义。技术点: 1、反射(reflect)在运行状态中,对于任意一个类,都能够知道这个类的属性和方法...

2018-04-28 10:49:19 294

转载 LinkedHashMap源码分析

1. 综述:LinkedHashMap继承了HashMap,HashMap是以散列表的形式存储数据的,所以,LinkedHashMap其实也是散列表的结构,但是“linked”是它对HashMap功能的进一步增强,LinkedHashMap用双向链表的结构,把所有存储在HashMap中的数据连接起来。那么,LinkedHashMap的双向链表与HashMap中的链表有什么不同呢?①桶中的链表是散列...

2018-04-26 20:35:58 167

原创 TreeSet源码分析

TreeSet常用方法,都是调用Treemap中的方法,只是在添加的时候用静态常量PRESENT来填充map的value位置。iterator()迭代器方法,返回的就是map的keySet的迭代器。总结TreeSet底层实现严重依赖于TreeMap,所以弄清楚TreeMap是关键。...

2018-04-25 21:21:18 169

原创 LinkedHashSet源码分析

 LinkedHashSet具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按照元素的插入次序显示。看LinkedHashSet的内容。public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneab...

2018-04-25 21:09:21 192

原创 HashSet源码分析

对于HashSet而言,它是基于HashMap实现的。HashSet底层采用HashMap来保存元素,因此HashSet底层其实比较简单。package java.util;public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io....

2018-04-25 20:56:03 177

原创 LinkedList源码分析

1.综述:  LinkedList 是通过一个直线型的双向链表来实现的,它允许插入所有元素,包括null,同时,它是线程不同步的。下面是双向链表的结构:LinkedList构造方法有两个,一个是无参构造,一个是传入Collection对象的构造。2.属性://链表的节点个数transient int size = 0;//指向头节点的指针transient Node<E> fi...

2018-04-25 20:10:00 180

原创 ArrayList源码分析

基于jdk 1.8的源码分析1.ArrayList底层使用java中的数组实现,类型为Object数组transient Object[] elementData; //ArrayList就存放在这个数组里面2.数组默认容量为10:private static final int DEFAULT_CAPACITY = 10;3.元素数量private int size;4.为了应对不同的构造函...

2018-04-24 21:51:59 169

原创 adsas

1. java只支持单重继承,一个类可以实现多个接口2. 接口不提供构造方法,接口中的方法默认为public abstract修饰,接口中的属性默认使用public static final修饰,接口允许多继承。3. 抽象类和接口都不允许实例化,一个类可以实现多个接口,但只能继承一个抽象类。接口中的每个方法都是抽象方法,抽象类中的方法并非都是抽象的。4. abstract不能与final并列修饰同...

2018-04-19 19:27:13 314

原创 Thinking in java:17 容器深入研究

1. Set和存储顺序2. 理解Map再次强调默认的Object.equal()只是比较对象的地址,所以如果要用自己的类作为HashMap的键,必须同时重载hashCode()和equal()方法。3. 理解hashCode()  使用散列的目的在于:想要使用一个对象来查找另一个对象。散列的价值在于速度(为什么使用散列):散列使得查询得以快速进行。我们知道存储一组元素最快的数据结构是数组,所以使用...

2018-04-18 22:05:25 217

原创 为什么Java里的Arrays.asList()返回的List不能使用add、remove方法?

我们从下面这段简单代码讲起,public class MainFacade { public static void main(String[] args) { List<Integer> list = Arrays.asList(1,2,3); list.add(5); System.out.print(list...

2018-04-15 20:52:34 8468 7

原创 Thinking in java: 14类型信息

1.  java识别对象和类的信息的两种方式:   (1)RTTI,她假定我们在编译时已经知道了所有类型;名字含义:在运行时,识别一个对象的类型。   (2)反射机制,他允许我们运行时发现和使用类的信息。2. 类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并且编译了一个新类,就会产生一个Class对象(更恰当的说是被保存在一个同名的.class文件中)。为了生成这个类的对象,ja...

2018-03-30 15:16:17 180

原创 Thinking in java : 16 数组

请优先使用高级容器集合,除非证明用数组确实效率高,否则当然优先使用容器集合。1.  数组是一种效率最高的存储和随机访问对象引用序列的方式,其代价就是固定大小。ArrayList的效率比数组低很多。不可越界否则产生RuntimeException。2. 无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个对象用以保存指向其他对象的引用。3. 对象数组:保存引用;所有...

2018-03-28 21:54:22 180

转载 java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?

在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System.out.println()里面为一个对象的引用时,自动调用toString方法将对象打印出来。如果重写了tostring方法则调用重写的toString 方法。因为    1.System.out.println()的这个方法源码中调用了String.valueOf(Objec o),public...

2018-03-28 19:12:13 722

原创 Thinking in Java : 13、字符串

1. 不可变String    String对象是不可变的。String类中每个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则丝毫未动。public class Welcome{ public static String upcase(String s) { return s.toUpper...

2018-03-28 15:44:54 156

原创 Thinking in Java : 11、持有对象(容器)

1. 集合类:List、Set、Queue、Map,我们称为容器。他们都可以自动调整大小。2. 向上转型,ArrayList、LinkedList具有List接口中未包含的额外方法,若你需要使用这些方法,就不能向上转型为更通用的接口。List<Apple> apples = new ArrayList<Apple>();List<Apple> apples =...

2018-03-24 14:01:58 214

原创 Thinking in Java :8.多态

1. 动态绑定实现多态。Java中static方法和final方法(private方法属于final方法)不能使用动态绑定,不具有多态性!2. 向上转型: 例如: Father father = new Son(); 3.重要:向上转型后的实例变量与方法的访问  package cn.hdu.li;//import sun.tools.jconsole.Tab;class Useful{...

2018-03-19 21:52:45 182

原创 Thinking in Java :关于初始化的总结

看了这么多,对初始化顺序做个总结:在含有 继承、静态变量、一般变量、构造函数的几个类里面,顺序如下:1.基类静态变量2.子类静态变量3.进入main函数: 若创建了一个子类对象,                             4.基类一般变量                               基类构造函数                            5.子类一般变量 ...

2018-03-19 09:37:58 196

转载 Thinking in Java : 7.复用类

转载于:http://blog.csdn.net/ZJDWHD/article/details/52441298其他的就不想再贴过来了,就只写一下自己觉得重要的,详细的请去上面链接看。7. final关键字     根据上下文环境,关键字final的含义存在着细微的差别,但通常它指的是“这是无法改变的。”不想做改变可能处于两种原因:设计或效率。由于这两个原因相差很远,所以关键字final可能会被误...

2018-03-17 16:38:17 162

转载 thinking in java:接口和抽象类

写的不错的文章,转载一下:http://blog.csdn.net/fly_zxy/article/details/51113087抽象类和普通类的区别抽象类和接口的区别3.接口中能用到的设计模式      1.策略设计模式:创建一个能够根据所传递的参数对象的不同而具有不同行为。“策略”指传递进去的参数对象,它包含要执行的代码。      2.适配器设计模式      3.工厂方法设计模式4.类可...

2018-03-16 19:36:51 223

转载 关于继承中构造方法的知识

转载于:http://blog.csdn.net/wangyl_gain/article/details/49366505#replyjava中子类能继承父类的构造方法吗?带着这个疑问我们首先来看个例子://B类继承A类public class B extends A { public static void main(String[] args) { B...

2018-03-16 16:39:09 331 1

原创 thinking in java:5. 初始化与清理

1.例子:public class ArrayOfPrimitives{ public static void main(String[] args){ int[] a1={1,2,3,4,5}; int[] a2; a2=a1; for(int i=0;i<a2.length;i++) a2[i] = a2[i]+1...

2018-03-15 19:31:28 318

原创 thinking in Java:5.1初始化与清理

1.重载:每个重载的方法必须有一个独一无二的参数类型列表。注意:无法以返回值区分方法重载方法重载要满足的条件:1.方法名相同。2.参数类型或参数列表顺序不同。3.返回值可以相同也可以不同。所以,不能使用返回值来区分方法重载下面看一段报错代码,体现了企图用返回值区分方法重载会产生的矛盾public class TestOverload { public static void main(...

2018-03-15 15:46:48 187

原创 Thinking in Java 3.操作符

1.关系操作符==和!=也适用于所有对象。看代码:public class Equalsasd{ public static void main(String[] args){ Integer n1 = new Integer(); Integer n2 = new Integer(); System.out.println(n1==n2); ...

2018-03-14 16:56:56 224

原创 Thinking in Java: 2.对象

1.java对象存储在什么地方?堆:用于存放所有Java对象,堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。当需要对象时new一个就行,当然灵活性的代价是:存储分配和清理需要更多时间。2.基本类型boolean、char、byte、short、int、long、float、double,new将对象存放于堆里,但以上不用new来创建,而是创建一个并非是引用的自动变量,这个变量...

2018-03-14 15:30:35 154

原创 Spring+SpringMVC+Mybatis配置总结

1.关于扫包的配置spring的扫包配置文件为annotation.xml,springMVC的扫包配置在springmvc-back.xml和springmvc-front.xml中。我们具体来解释一下什么是扫包。其实Spring和SpringMVC是有父子容器关系的,而且正是因为这个才往往会出现包扫描的问题,我们在此来分析和理解Spring和SpringMVC的父子容器关系并且给出Spring...

2018-03-10 20:10:13 210

原创 拦截器与Fiter(过滤器)的区别

两者都是AOP编程思想的体现,都能实现权限检查、日记记录,不同的是:1. 适用范围不同。 Fiter是Servlet规范规定的,只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing中。2. 规范不同。  Filter是在Servlet规范中定义的,是Servlet容器支持的。而拦截器是Spring容器内的,是Spring框架支持的。3. 使用的资源不同。...

2018-03-09 20:00:06 860

转载 数组内存分配之堆、栈

转载于:点击打开链接首先看一下数组:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。数组的定义格式:格式1:数据类型[]  数组名;int[] a:定义一个int类型的数组a变量。格式2:数据类型  数组名[];int  a[]:定义一个int类型的a数组变量。推荐使用第一种格式,第一种格式的可读性更强。注意:这两种定义做完了,数组...

2018-03-02 11:31:09 1477

原创 创建和操纵表

1.创建表  利用CREATE TABLE创建表CREATE TABLE customers( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL, cust_address char(50) NULL, cust_city char(50) NULL

2018-01-27 16:44:12 248

ws2_32.lib静态链接库

ws2_32.lib静态链接库

2017-05-03

Activemq所需的动静态链接库文件

此资源共包含Activemq所需的9个动静态链接库,cppunitd.lib、cppunitd_dll.dll、cppunitd_dll.lib、libapr-1.dll、libapr-1.lib、libapriconv-1.dll、libapriconv-1.lib、libaprutil-1.dll、libaprutil-1.lib。其中版本截止到2017.5.3均为最新,cppunit-1.13.2、apr-util-1.5.4、apr-iconv-1.2.1、apr-1.5.2、activemq-cpp-library-3.9.4版本

2017-05-03

ws2_32.lib

ws2_32.lib

2017-05-03

串口调试助手

绝对简单好用的串口调试工具,方便快捷,功能强大。

2013-10-14

大二数据结构迷宫问题(文档+源代码)

迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经多次试验终于得到它学习走通迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。用一个二维数组maze[i][j]表示迷宫,其中l<=i<=m,1<=j<=n。数组元素值为1表示该位置是墙壁,不能通行;元素值为0表示该位置是通路。假定从maze[l][1]出发,出口位于maze[m][n],移动方向可以是4个方向(东、南、西、北)。运用栈进行求解。

2012-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除