- 博客(101)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 为什么Maven的很多命令前面都有-D参数?
之前看到Maven的很多命令前面都有一个-D参数,一直不知道由来。今天看Maven实战的时候恰好看到,对于-D参数来讲。用法: -DpropertyName=propertyValue作用:对插件的目标参数进行配置实例,例如大家经常使用的maven在执行本地安装命令install的时候跳过单元测试为 mvn install -Dmaven.test.skip=true。参数-D是J...
2019-04-04 10:08:47 6173
原创 【算法第四版】2.5.2练习题答案 组合词输出
2.5.2、[编程题]组合词问题描述:从标准输入读入一列单词并打印出其中所有由两个单词组成的组合词。例如,如果输入的单词为after、thought和afterthought,那么afterthought就是一个组合词。输出描述:输出输入中存在的所有的组合词思路:本题目思路相对比较简单,直接选择剩余元素进行随机组合然后和数组中的元素进行比较即可。java代码:import
2018-02-02 16:23:49 993 1
转载 排序算法-堆排序的详细解释
图解排序算法(三)之堆排序预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如
2018-02-01 21:28:33 763
原创 Java中数组在内存中的存放原理?
Java中数组被实现为对象,它们一般都会因为记录长度而需要额外的内存。对于一个原始数据类型的数组,一般需要24字节的头信息再加上保存值所需的内存,其中24字节的头信息分别包含以下几个部分。下面分别分析一维、二维、三维的数组存储情况。下面首先对一维数组进行分析,以int[]型数组为例,假设数组长度为N,那么需要的内存占用(24+4N)个字节,原因分析比较简单,图解示例如下:即占用内存
2018-01-25 20:35:27 2728
原创 为什么数组没有实现Iterable接口,但可以使用foreach语句遍历?
在Java中,对于数组为什么能够使用foreach语句一直感觉很困惑。对于能够使用foreach语句进行遍历的对象,只有两种情况,其中一种是遍历对象必须实现Iterable接口,实现ierator()方法,这是对象使用foreach语句的前提。另外一种情况就是特殊对象数组。那么对于数组可以使用foreach该如何去理解呢?首先需要说明的是,实现了java.lang.Iterable接口的对
2018-01-21 16:30:06 2678 2
原创 递归算法的解析(Java实现)
今天对递归算法进行了学习,开始很多困惑现在逐渐的对具体的运行过程有了一些了解,写篇博客记录一下。关于递归算法的解释这里不再写,具体可以参考博客:http://blog.csdn.net/luoweifu/article/details/8509688首先以斐波纳契数列为例进行分析,关于该数列:斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,
2018-01-18 16:34:51 642
原创 关于Tomcat服务器无法打开tomcat7w.exe的解决办法
今天配置Tomcat服务器的时候遇到了一点问题,提供借鉴。关于配置教程网上很多自己参考,如果遇到问题可以查看下面这个链接基本说的比较详细:https://zhidao.baidu.com/question/874079261073744612.html主要是配置完之后打开tomcat7w.exe仍然打不开,当时以为没有配置好,尝试了很多办法,依然打不开。但是后来发现虽然这个文件打不开但是在cm
2017-12-29 22:10:59 9633
转载 JVM中对象的创建过程
参考书籍:《深入理解Java虚拟机》参考博客:http://blog.csdn.net/tjiyu/article/details/53923392下面我们详细了解Java程序中new一个普通对象时,HotSpot虚拟机是怎么样创建这个对象的,包括5个步骤:相应类加载检查过程、在Java堆中为对象分配内存、分配后内存初始化为零、对对象进行必要的设置、以及执行对象实例方法,最后我们再从JVM
2017-12-13 21:28:33 810
转载 JVM堆内存中垃圾回收机制的原理
原文地址:http://ifeve.com/jvm-yong-generation/一、JVM垃圾回收机制具有以下的特点:1、 垃圾回收机制只负责回收堆内存,不会回收任何物理资源;2、 程序无法精确控制垃圾回收的进行,会在合适的时候进行;3、 在垃圾回收机制回收的任何对象之前,总会先调用它的finalize()方法。下面具体讲解一下堆内存的年轻代,如何进行垃圾回收的:
2017-12-13 09:51:51 1005
原创 Eclipse无法导入某些包的解决方案
今天在使用sun包的时候发现无法导入,在rt.jar压缩包下面明明看到sun的存在。使用时总是提示Access restriction错误提示,后来发现在eclipse中默认对sun包没有访问权限,如果想进行访问必须对环境进行一些修改,下面是具体的方法(以工程名MyExerciseProject为例,导入sun包)。1. 在工程名(注意不是文件名)上右键点击Properties,弹出Prope
2017-12-09 15:00:17 19379 1
原创 Eclipse IDE中设置JVM启动参数
关于《深入理解Java虚拟机》里面测试OutOfMemoryError异常的部分,需要对虚拟机的启动参数进行设置,下面是一些设置的步骤:1. 右键选择项目,在弹出的菜单进行选择2. 在弹出的Debug Configurations面板,左侧的type filter text下面选择Java Application,找到自己的项目,例如我的项目HeapOOM.3. 在Debug
2017-12-08 14:27:11 5920
原创 Java为什么匿名内部类参数引用需要用final进行修饰?
事实上,除了匿名内部类内部,方法和作用域内的内部类内部使用的外部变量也必须是 final 的。原因大致总结一下:简单解释就是:方法中的局部变量的生命周期很短,方法结束后变量就要被销毁,加上final是为了延长变量的生命周期。进一步解释: 内部类通常都含有回调,引用那个匿名内部类的函数执行完了就没了,所以内部类中引用外面的局部变量需要是final的,这样在回调的时候才能找到
2017-11-26 10:32:41 3849 1
原创 Java反射机制理解
Java中的反射提供了一种运行期获取对象元信息的手段。即正常方法是通过一个类创建对象,反射方法就是通过一个对象找到一个类的信息。Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象
2017-11-15 19:04:13 381
原创 Eclipse关于创建子包,总是子包与父包是并列的关系?
使用Eclipse建立子包的时候,总是出现子包与父包出现在同一个级别中,按照建立子包的方法,重复操作了两次,发现相同的问题,最后发现一个比较小的问题,所以导致了建立子包没有出现预期的效果。假设我在包typeinfo下面创建了子包toys,创建完成后,总是出现的效果如下:想要出现的效果如下:通过项目文件查看,虽然两种呈现效果,其最终建立的子包位置都是一样的。但是如果想为了
2017-11-13 19:01:36 15222 7
原创 Java中关于子类覆盖父类的抛出异常问题
Java中子类覆盖父类方法抛出异常不能比父类多,这个表述不够准确。准确一点的描述为:子类抛出的异常类型不能比父类抛出的异常类型更宽泛。假设父类抛出异常ParentException,另外有两个子类继承自ParentException分别为ChildException1, ChildException2, 那么 子类可以同时抛出异常ChildException1,ChildException2.
2017-11-09 22:04:45 6693
原创 Java如何将处理完异常之后的程序能够从抛出异常的地点向下执行?
因为Java中的异常处理理论,支持的是终止模型,在这种模型中,抛出异常之后,程序无法返回到异常发生的地方向下继续执行。但是,如果我们现在想要Java实现类似恢复模型的行为,希望异常在处理之后继续往下进行执行,那么有什么解决的办法吗?思路:把try块放在while循环里,这样就能不断的进入try块,直到获得满意的结果结束。下来看下面的程序:package exceptions;cla
2017-11-09 20:09:12 4307
原创 Java中throws,throw抛出异常问题
Java中异常的分类,主要分为两大类型1. 系统自动抛出的异常所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。2. 语句抛出的异常用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。那么throws和thr
2017-11-08 15:35:39 3447
原创 Java的接口中是否可以使用静态方法
接口是极度抽象化的类,接口的所有方法都是抽象的,并没有具体的实现。而抽象方法是不能使用static进行修饰,有static的方法是不能override的,所以这样定义接口才有意义。但接口中的变量也都是static final类型的。从另外一个方面理解,静态的变量和方法在内存种分配了空间, 而接口只是类的表现形式,是没有分配空间的。但是需要注意的是Java8引入了一种新特性,为了使接口具有
2017-11-02 14:58:42 13548
原创 Java接口的名称冲突问题
对于方法重载的区分,主要通过下面三种方式:1. 参数个数2. 参数类型3. 参数顺序(较少使用,维护困难)至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载则没有任何关系。、Java编程时,假设存在两个接口,但接口中存在相同名称的方法,但是其仅返回值不同。如下:interface interfac1{void method();}interfac
2017-11-01 17:25:30 3132
原创 Java 关于含有继承类的成员初始化过程讲解
参考资料《Java 编程思想》,关于含有基类的导出类,其成员的初始化过程是一个容易让人困惑的地方,下面通过具体的实例进行讲解,代码取自《Java 编程思想》,代码如下:import static net.mindview.util.Print.*;/** * All rights Reserved, Designed By www.tydic.com * * @project: M
2017-10-30 18:10:34 387
原创 Java中基类子对象的构建过程从“基类向外”扩散的如何理解?
《Java编程思想》复用类一章,提出基类的子对象的构建过程是从基类“向外”进行扩散的。下面通过实例进行讲解,首先看下面的代码:import static net.mindview.util.Print.*; //《java编程思想》提供的类库/** * @author Administrator * */public class Cat extends Animal { pu
2017-10-29 17:12:03 838
原创 Java为什么基本数据类型不需要进行创建对象?
Java是一门面向对象的语言,即一切皆是对象!那么为何数据类型中还分为:基本类型和对象? Java中有8种基本数据类型boolean、byte、short、char、int、flaot、long、double,基本数据类型作为Java语言的一部分,但基本数据类型不是对象,基本数据类型放在堆栈中,对象放在堆中。堆的读写速度远不及栈,如果使用基本数据类型相当于在栈上进行操作,对变量的
2017-10-29 13:58:59 3820
原创 Java的外部类为什么不能使用private、protected进行修饰
对于这个问题,一直没有仔细思考,今天整理一下:对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。如果类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那
2017-10-28 21:49:08 16843 8
原创 《Java编程思想》中为什么可以直接用方法名调用静态方法?
《Thinking in Java》一书中,有很多地方作者直接使用静态方法名,直接调用其它包里面的方法,通常情况下我们访问一个静态方法,需要通过 类名.方法名 的途径。但是这里情况有所不同。在程序的包导入部分声明为:import static PackageName.Class.*; 表示的是静态导入PackageName.Class类的所有静态方法(注意只是静态方法),然后就可以直接调用Clas
2017-10-28 17:26:27 712
原创 Java解释器的运行过程解释
首先介绍一下Java解释器的概念,Java解释器:解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并在特定的平台进行运行。简单一点,java的解释器只是一个基于虚拟机JVM平台的程序 ,即jdk或jre目录下bin目录中的java.exe文件。 Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。步骤1:可以通
2017-10-28 11:24:14 12290 1
原创 Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
有时候对于一个游戏对象,需要其沿着自身的坐标轴方向进行运动,那么首先如何获取自身的坐标轴方向?获取自身的坐标轴方向可以通过transform组件进行获取(负方向加负号即可) Vector3 moveDirection = transform.right; 获取自身的x轴的方向 Vector3 moveDirection = transform.forward; 获取自身的z轴的方向
2017-10-27 10:51:25 53615 4
原创 Unity关于MeshCollider碰撞体无法触发碰撞事件
Unity为对象添加网格碰撞体之后,仍然无法发生碰撞。后来发现组件的属性Is Triggle进行了勾选,取消之后能够发生正常的碰撞。//为游戏对象,添加碰撞体GameObject blank;private float moveSpeed = 1.0f; if(!blank.GetComponent()) { blank.AddC
2017-10-25 11:08:02 13281
原创 OpenGL中对混合操作的实例演示
对于混合的基本概念这里不仔细讲,可参考这篇博客http://blog.csdn.net/augusdi/article/details/23769375。这里直接通过代码,测试效果:#include #include #include #include const int n = 100;const GLfloat R = 0.5f;const GLfloat Pi = 3.
2017-10-23 21:21:04 390
原创 关于OpenGL中深度截取(GL_DEPTH_CLAMP)的讲解
关于透视投影视椎体,如下图所示在视觉坐标系下,片段fragment的深度放缩到0-1之间的一个有限范围内。片段的深度值为0的话则表明它与近裁截面重合相交(如果是真实世界的话就是刺入你的眼睛),1代表物体的最远距离(但不是无限远)。为了消除远裁截面并在任意距离上绘制图形,我们需要在深度缓存depth buffer中储存任意大的深度值–当然这是计算机不可能实现的。那么假设,我们
2017-10-23 19:04:19 6978 1
原创 对OpenGL中模板缓冲区解释
前段时间转载了一篇关于OpenGL的博客,但是并没有对里面的内容理解的很透彻,今天通过实例重新讲解一下。关于模板缓冲区的基础知识参考上篇博客http://blog.csdn.net/yangyong0717/article/details/78313725。对于模板缓冲区的值是如何设置的是一个关键问题,主要是借助于glStencilFuncSeparate()和glStencilOpSep
2017-10-22 22:12:53 577
转载 OpenGL中关于模板缓冲区的详细解释
模板缓冲区的概念,至今依然不是特别理解,这篇博客写的很好,相信对大家的理解也有帮助。模板缓存是深度缓存的扩充,当你需要控制哪一个像素需要被渲染,哪一个像素需要被忽略时,模板缓存能够为你提供更多的方法。和深度缓存一样,模板缓存存储了所有像素的模板值,但是这次你必须手动控制这些值如何改变。记住,如果一个像素深度测试失败了的话,模板测试将不会再决定该像素是否绘制,而像素会反过来影响模板缓存中的值。为了
2017-10-22 21:53:38 4097
原创 OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的区别
glStencilFunc()函数是OpenGL提供的对模板缓冲区进行控制的命令,这是OpenGL2.0之前使用的函数,其函数原型为void glStencilFunc(GLenum func, GLint ref, GLuint mask).func指定比较函数,它指定了测试通过的条件,其取值可以是:(为方便表示,参考值为refValue, 缓冲区值bufferValue)G
2017-10-22 16:58:51 2135
原创 OpenGL中关于帧缓冲区的理解
《OpenGL超级宝典》中对帧缓冲区的解释比较简单,文中说一个OpenGL窗口的表面被称作“帧缓冲区”。又查了一些资料可以更加容易理解一些,帧缓冲区(显存):是由像素组成的二维数组,每一个存储单元对应屏幕上的一个像素,整个帧缓冲对应一帧图像即当前屏幕画面。帧缓冲通常包括:颜色缓冲,深度缓冲,模板缓冲和累积缓冲。这些缓冲区可能是在一块内存区域,也可能单独分开,看硬件。
2017-10-18 15:56:40 6230
转载 关于Malloc内存分配函数的解析
原文地址:http://blog.csdn.net/xw13106209/article/details/4962479一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节
2017-10-15 21:53:28 784
转载 关于OpenGL中几种纹理环绕模式的理解
最近在学习OpenGL的纹理坐标时,有一个疑惑就是纹理坐标范围大于1的概念一直没有搞懂是什么意思,通过这篇博客下面的图示,明白了坐标大于1就是说在场景中的模型,大于原来贴图的尺寸时候的情况。下面是对这几个环绕模式的具体解释,原博客的地址:http://blog.csdn.net/l_andy/article/details/53405758在纹理映射中,纹理坐标的范围为[0.0
2017-10-10 21:13:46 7823 1
转载 软件设计要求—“高内聚低耦合”
耦合度一、什么是耦合度软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦
2017-10-10 19:31:37 3650
转载 HTTP协议优秀博客推荐
最近在学习HTTP协议,看到一位博主整理的关于HTTP协议讲解的博客,我就顺着这些博客开始看到,感觉收获很多。下面把这些博客推荐给大家。通过对这些博客的阅读,能够对HTTP协议的基础知识有一定的了解,然后就可以去阅读一些相关的HTTP专业书籍,对具体的知识点进行深入的学习。具体书籍网上有很多推荐,这里就不再写了。1:特别推荐阮一峰老师的关于网络协议的两篇非常棒的博文(阮老师的其他博文也
2017-10-08 20:13:27 444
原创 《OpenGL超级宝典》中第七章TextureRect示例程序,RenderScene()函数解析
这是蓝宝书第七章上面的TextureRect示例的部分源代码,刚开始阅读时候存在很多疑惑,慢慢的结合前面的知识,逐渐的知道这些代码的原理,对其中的部分代码做一些注解仅供理解参考,这里只对RenderScene(),场景渲染函数进行注解:void RenderScene(void){//基于时间的旋转动画static CStopWatchrotTimer;
2017-10-08 14:46:44 2637
算法第四版所需要用到的stdlib.jar algs4.jar
2018-01-21
OpenGL纹理设置过滤器和环绕模式的疑惑
2017-09-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人