自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 (设计模式)单例模式

饿汉模式package 实现;/** * 懒汉模式:1 这样的优点在于 没有多线程的麻烦 2 能够保证每次实现的都是唯一的单例 * * 缺点在于: * 每次不论需不需要单例模式都需要去创建一个实例,会造成Java虚拟机内存的浪费。 * @author jhc * */public class Singleton { private Singleton(){ } p...

2019-04-01 11:41:53 115

原创 (Java)HashMap源码分析

HashMap中的底层的结构是由数组加链表组成的(当链表的元素超过八个的时候,链表转换成为红黑树。)而对对于数组中每个结点却是由Node组成的。这里数组对应的就是table, 而每个结点是由Node包含了四个属性,hash,key,value next这四个属性,hash是用来判断在数组中的索引位置,key表示键值,value表示的确定的值。next表示的是下一个node的值。 trans...

2019-03-16 14:10:53 120

原创 (剑指Offer)数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。1 采用按位异或一个整形数组中,一个数字出现了一次其余的数字出现了三次。统计每一位上面的1...

2019-03-14 20:16:55 113

原创 (JVM)破坏双亲委派模型。

双亲委派模型很好地解决了各个类加载器的基础类统一问题(越是基础的类越由上层加载器加载),基础类被其他的对象锁调用,但是如果基础类需要加载调回其他用户的代码的时候模型便会被破坏。SPI机制简介SPI的全名为Service Provider Interface,主要是应用于厂商自定义组件或插件中。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java SP...

2019-03-14 19:31:46 728

原创 (剑指offer)对于二分查找的一点点理解

二分的主要用途在于:一是对于已经排序的数组进行算法运算的时候二:是在于遍历数组的时候。递归实现二分查找 public void findX(int[] arr,int start,int end,int k){ if(start > end) return; int mid = (start+end)>>>1; if(arr[mid] > k){...

2019-03-13 20:51:11 134

原创 (JVM)虚拟机类加载机制

类加载的时机遇到new getstatic setstatic invokestatic这4个字节码指令的时候。即当创建对象,使用类的静态方法,静态变量的时候会对类进行加载。使用java.lang.reflect进行反射调用的时候,会启用类的加载初始化一个类发现其父类还没有进行初始化的时候,首先初始化其父类执行方法的时候,首先加载的是包含main()函数的主类。特殊情况:1 如果在...

2019-03-12 19:54:23 124

原创 (Java)重写equal方法的时候为什么要重写hashcode的方法

在HashMap中的get(Object key)的执行流程在HashMap中get(Object key)计算key的hashcode(),等到一个整数n然后用这个n%(length)【length代表当前map的最大的容量】=index用index作为下标,得到hashmap内部的桶的结构中位于index处的链表list(Java1.8中有可能是红黑树,这里用链表代替。)然后循环遍...

2019-03-04 20:56:58 2675

原创 (JVM)第三章垃圾回收

垃圾回收主要存在于对内存当中。可达性分析算法这个算法的基本思路是通过一系列成为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路劲称之为引用链,当一个对象到GCRoots没有认识引用链的时候,则证明此对象是不可用的。GCRoots的选择:虚拟机栈(堆栈中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象本地方法栈中JNI(即一般...

2019-03-02 17:18:45 159

原创 (剑指Offer)整数中1出现的次数(从1到n整数中1出现的次数)

题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。C++跟java的不同在于,C++可以直接通过指针去操作内存里面的东西,但...

2019-03-02 11:34:12 100

原创 (Java)关于泛型与类型擦除的理解

一个程序会出现的错误有两种错误:一个是编译器错误,一个是运行期错误。类型参数判断:当使用泛型类的时候,必须在创建对象的时候指定参数类型的值,而使用泛型方法的时候,通常不用指明参数类型,因为编译器会为我们找出具体的类型。 public Map<String,<? extends Person>> map = new HashMap<String,<? ext...

2019-03-01 15:01:13 105

原创 (Java)java中的自动装箱与自动拆箱

public class Test { /** * * 关于Java的自动装箱与自动拆箱 * 基本类型存储在栈中 * 对象存储在堆当中 * 而对于数字这种经常使用的存储在栈中 使用效率比较高 * 为了方别与其他的语言进行交互,一切基于对象的方法所以又提出了包装类型。 * == 比较的是两个对象的地址 * equals是可以自己重写用来判断内容是否相同,但是不会...

2019-02-28 17:36:41 125

原创 (SpringBoot)使用自己定义的注解去验证参数。

参数校验采用的是SpringBoot提供的一套验证框架。1 需要导入的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> ...

2019-02-27 14:35:10 864 1

原创 (JVM)类文件结构

字面量:类似于Java的常量的概念是具体的值。例如是 1,"abc"这种符号引用: 1 是类和接口的全限定名称。2 字段的名称和描述符。3 方法的名称和描述符。、简单名称:没有指定类型的描述符和参数类型,例如变量m和方法inc()全限定名称:即com/jhc/test/Test就是抱一个类所在的包也表示出来。描述符:用来描述方法或者字段的数据类型,方法的参数类型和返回值。就是把一个方法的...

2019-02-23 17:04:42 129

原创 (剑指Offer)32:从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。递归的版本这个递归的版本很有意思的地方在于他创建了一个深度的函数用来判断树的深度,然后根据深度决定root向下偏移几次。public void PrintFromTopToBottom(TreeNode root){ int length = countDepth(root); if(root == null || le...

2019-02-23 11:09:49 89

原创 (剑指Offer)31:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)关于栈相关的一些APIstack.pop()//返回栈顶的元素,并且删除该元素。...

2019-02-23 10:46:38 162 1

原创 (Java)try catch finally执行的顺序

public class Test { public static int testInt(){ int x =1; try{ x = 2; return x; }catch(Exception e){ return x; }finally{ x = 3; } } public static int testInt1(){ int x =1;...

2019-02-22 14:29:16 84

原创 (java)java1.8流Stream

流的几个特性流并不会改变原始数据。只是数据的视图流是懒加载的,所谓懒加载是指流不会立即执行而是在流需要的时候再去加载流分为中间操作和终止操作,顾名思义中间操作可以有好多种,而终止操作只有一种重要的一点为 流不能存储元素的!对流的理解:流是为了方便开发人员遍历集合的一种便利的API创建流//通过数组的形式获得String[] arr = new String[] {"aa","b...

2019-02-22 11:40:45 226

原创 (部署)在部署当中遇到的问题

值得一提的是:因为之前没有在服务器上面开发的经验,在安装过程中遇到的问题都是通过的百度来。下载文件的两种方式:1 apt-get install XXX 这个下载的文件是在linux的库中下载的2 wget http:// 这个下载的是tar.gz的包,通过tar -zxvf 解压包,然后对其进行环境变量的设置便可以使用。服务器上安装tomcathttps://w...

2019-02-22 09:45:06 249

转载 5种IO模型

https://blog.csdn.net/xiexievv/article/details/44976215

2019-02-20 15:00:15 152

转载 (操作系统)关于句柄

https://blog.csdn.net/wenzhou1219/article/details/17659485

2019-02-20 14:29:42 364

原创 (Git)如何改变git远端地址

参考的博客:https://blog.csdn.net/top_code/article/details/50381432Git 提示fatal: remote origin already exists 错误解决办法1首先删除远端的地址git remote rm origin2再添加远程库的地址git remote add origin url值得注意的是:当1出错的时候,...

2019-02-19 17:03:50 478

原创 (Maven)Maven启动项目遇到的一些问题

Maven打包以后,想要启动项目如果直接使用 java -jar XXX.jar这样会启动不起,具体的原因暂时不知道。推荐的使用的方法:在自己的项目的内部:1 mvn clean install2 mvn exec:java -Dexec.mainClass=“com.Application”maven打包的时候分为三种情况因为会用到不同的打包的maven插件所以需要导入不同的依赖...

2019-02-19 16:59:35 138

原创 (剑指Offer)21 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。当不需要报纸奇数与偶数之间的相对位置的关系的时候不需要考虑位置的相对的关系的时候,这个时候有一种类似于快速排序的思想的问题。即选取两个指针,一个前向遍历,一个后向遍历。具体的代码public static vo...

2019-02-18 14:01:06 125 1

原创 (Maven)maven打包项目并且向外发布

如果一个Maven项目想要发布出去,发布成为一个Jar包这样的形式的时候需要修改pom文件中,在build的标签下面添加一部分插件的内容。<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</ar...

2019-02-18 11:11:04 428

原创 (剑指offer)25 合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。我在这个题中学到了两点。1:在Java中的=赋值对于对象来说,其实是把这个地址赋值给它。可以操作其它的实例的引用来去改变这个地址中的内容。就体现在第一种方法当中,我创建了两个节点,一个节点去创造链表,一个节点去用来保存当前的状态。2:对于每次操作没有关联都是一种重新开始的时候,可以考虑一下递...

2019-02-16 19:56:30 98

原创 (Java基础)关于String.intern()方法

1 需要了解创建字符串的方式1 是直接 String s1 = new String(" abc");这个方式创建的字符串,s1指向的是一个堆上的实例的地址,但是与此同时也会在常量池当中创建出一个abc的字符串.以这种方式创建字符串,每一个变量指向的地址是不同的,因为每次都指向一个堆上的新的地址。但是常量池中却只有一个abc这样的常量String s1 = new String("abc...

2019-02-16 16:46:04 169

原创 (深入理解JVM)Java内存区域与内存溢出的异常

Java内存的区域程序计数器(线程私有)程序计数器是一块很小的内存空间,可以被视作为当前线程所执行的字节码的行号指示器。如果线程执行的是java的 方法,这个计数器记录的虚拟机执行指令码的行数。如果执行的是Native的方法则计数器为空。不会出现OutOfMemoryError的错误。java虚拟机栈(线程私有)在每个方法执行的时候会创建一个栈帧,栈帧是用来存储方法中的局部变量表,操作数栈...

2019-02-16 14:40:10 74

原创 (剑指Offer)16.数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。我对于这类题型的误区有下面的几个点首先:对于返回值类型容易搞错一直默认的是int的类型,容易导致返回的类型跟想要得到的类型不匹配。第二:对于如何取倒数我一直再犯迷糊,### 取倒数的方法就是 1.0/reuslt第三:对于边界值的考虑,一直以来我做这种类型的题考虑边...

2019-02-16 11:53:08 80

原创 (Java基础)Java中可变长变量(...)与数组之间的联系与区别

经常在源码中能够看到类似 function(Object… objects)…与数组的主要的区别在于:使用可变长变量作为形参可以传入多个值也可以不传入值,而用数组作为形参的话则必须传入值。public class Test { public static void test(int...arr){ int sum = 0; for(int i:arr){ sum += i; ...

2019-02-15 17:03:03 389

原创 (剑指Offer)二进制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。关于补码的知识对于负数的补码是其正数的二进制码然后按位取反后,在取反后的二进制码后面加一得到的负数的补码。而负数的补码的形式便是在计算机中存储的形式。Java中的移位左移<< ( 右移>>) 移位以后填充1还是0看最左端(最右端)的数字如果是1则填充1,如果是0的话则填充0.所以判断一个二进制码当中存...

2019-02-15 10:20:47 84

原创 7 旋转数组中的最小的数字

一开始的时候我也是打算遍历数组去寻找满足条件的解但是这样的算法的时间复杂度就太高了所以就在网上看了一下别人的思路具体的思路是因为一开始的排序的规则是非减的排序规则,所以旋转以后的数组会分为来个数组一个类似与递增数组,一个类似于从最小开始的递增的数组。而我们要找的是最小的数字,所以便可以用俩个指针来解决这个问题。首先第一个指针去找到递增数组的最大的值第二个指针去找到第二个递增数组的最小...

2019-01-23 15:22:31 79

原创 遇到的异常

response hasbeen ommitted这个异常出现的场景是:当对来自页面的请求进行处理之后出现了两种的方式resopnse.sendRidrect();主要是在这一步的时候没有返回。request.getSession().forward();@AllArgsConstructor这是lombok中的一个注解,顺带的还有@Builder@NoArgsConstruct...

2019-01-22 17:22:16 119

原创 Mysql中的使用到的一些的内容

limit在SQL语句的查询当中limit是用来进行分页查询的,就比如在ssm的项目中想要知道第几页里面的内容,如果去搜索整个数据库就会很慢,所以这里用到了limit这个限制。SELECT FROM sys_acl_moduleLIMIT #{offset},#{pagesize}这里要注意的是两个参数 offset和pagesize的含义。offset是用来表示其在表里的偏移量的...

2019-01-22 17:07:19 77

原创 部门模块的开发总结

这个模块中主要实现的功能部门管理 新增和修改用户管理创建一个DeptParam这个类用来作为前台与后端的交互的类,从前台取到数据然后封装以后再处理到数据库当中去。主要包括的属性可以根据数据库中的内容来创建。包括id,parentId,name,remark,seq在加上各种对于类的限制。创建SysDeptController这个类主要是用来处理来自dispatchServlet...

2019-01-18 13:43:31 434

原创 总结

truncate table sys_dept;以及报错https://blog.csdn.net/goldenfish1919/article/details/50600053

2019-01-17 13:22:02 70

原创 在权限管理中的一些通用的包

JsonData这个类用来作为一个Json的工具类来使用里面有下面几个方法:String msgInteger idObject datastatic success(Object data,String msg)static success(Object data)static faill(String msg)static Map toMap()这个类的主要作用是把它作为...

2019-01-15 12:26:54 169

原创 关于集合中类的一些包的使用方法以及常见的用途

GuavaPreconditions.checkNotNull() 用来判断里面的集合是否为空如果为空的会抛出异常Lists.asList(Object arg1,Object arg2) 将多个参数转换成为一个List的集合Commons包需要有两个依赖1 commons-collections2 commons-codecMapUtils.isNotEmpty(map)Coll...

2019-01-14 21:39:08 247

原创 java中可变参数类型的用法

https://blog.csdn.net/yrwan95/article/details/82821520

2019-01-14 20:41:55 1178

原创 SpringMVC与maven创建项目时候的注意的点

当创建pom.xml文件时候需要注意的问题需要加载的jar包有:spring beansspring contextspring webspring webMVCspring jdbcmybatismybatis与Spring连接mysqljava连接器Druid作为资源池还加载了一个lombok这个包的作用暂时还不清楚另外的一个小技巧是在pom 文件中创建一个&l...

2019-01-14 20:41:17 354 2

原创 从尾到头打印链表

一种解法是利用反转链表的方式然后 把反转的链表依次添加到result的结果当中去public static ArrayList<Integer> printListFromTailToHead(ListNode head){ if(head == null) return null; List<Integer> temp = new ArrayList<I...

2019-01-10 20:10:04 62

空空如也

空空如也

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

TA关注的人

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