自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MARKPAIN的专栏

凡事都要坚持。

  • 博客(51)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 JVM中一次完整的GC流程中是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数

对象诞生即新生代->eden,在进行minor gc过程中,如果依旧存活,移动到from,变成Survivor,进行标记。当一个对象存活默认超过15次都没有被回收掉,就会进入老年代。主要的JVM参数:http://ifeve.com/useful-jvm-flags/...

2019-07-27 23:11:29 10805 1

原创 JVM内存为什么要分成新生代、老年代、持久代。新生代中为什么要分成Eden和Survivor

https://dsxwjhf.iteye.com/blog/22016871、Minor GC是发生在新生代中的垃圾收集,采用的复制算法;2、新生代中每次使用的空间不超过90%,主要用来存放新生的对象;3、Minor GC每次收集后Eden区和一块Survivor区都被清空;4、老年代中使用Full GC,采用的标记-清除算法类需要同时满足下面3个条件才能算是“无用的类”:1、该类所...

2019-07-27 22:51:25 8052 2

原创 java8新特性

1、lambda表达式2、函数式接口

2019-07-23 22:29:17 113

原创 (JAVA)剑指offer--矩阵中的路径

题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...

2019-07-23 21:32:28 135

原创 (JAVA)剑指offer--旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:二分法,最小数组肯定在第一个数字大于最后一个数字的那个数组里面不要小看二分法代码:public ...

2019-07-23 21:20:47 111

原创 (Java)剑指Offer--变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:动态规划假设现在要跳到第n个台阶,那么我们可以从第1,2,3,…,n-1个台阶开始跳。所以就是在上一步的基础上继续向第n个台阶走,这样的话就是把之前到达1,2,3,…,n-1个台阶的方法加起来就是能够到达当前第n个台阶的总跳法数。上代码:public int J...

2019-07-23 21:07:54 109

原创 (Java)剑指Offer--跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:斐波拉契直接上代码:public class Solution { public int JumpFloor(int target) { if(target<=2){ return target; ...

2019-07-17 09:24:38 94

原创 (JAVA)剑指Offer--矩形覆盖

题目描述:我们可以用 21 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 21 的小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法?思路:找规律题代码如下:public int RectCover(int n) { if (n <= 2) return n; int pre2 = 1, pre1 = 2; int resu...

2019-07-16 12:14:28 125

原创 (Java)剑指offer--斐波拉契数列

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路:动态规划不要重复计算public int Fibonacci(int n) { if (n <= 1) return n; int[] fib = new int[n + 1]; fib[1] = 1; ...

2019-07-15 22:26:55 152

原创 Java)剑指offer--用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:首先必须明白栈和队列的区别。stack1只需要不断地往里push,stack2最上面的元素就是原来stack1最底下的元素。当stack2为空的时候才需要把stack1的元素压到stack1中。直接上代码:public class Solution { Stack<Integ...

2019-07-15 22:16:02 84

原创 (Java)剑指offer--二叉树的下一个结点

题目描述:

2019-07-15 21:59:30 140

原创 springboot整合activemq(简单入门的例子)

1、docker-compose安装activemqversion: '2'services: activemq: #定义主机名 hostname: myactivemq #使用的镜像 image: webcenter/activemq #容器的映射端口 ports: - 61616:61616 - 8161:8161...

2019-07-15 21:31:57 529

原创 计算机网络--七层结构示意图

学习计算机网络,必然得知道七层架构。截取一张网上的图,好好观摩。学习之路,长路漫漫,要坚持,即使有时候困难重重。

2019-07-14 08:56:02 994

原创 springboot整合rabbitmq(简单入门的例子)

1、docker-compose安装rabbitmqversion: '3'services: rabbitmq: image: rabbitmq:management-alpine container_name: rabbitmq environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_D...

2019-07-14 08:13:51 677

原创 springboot整合kafka(简单入门的例子)

jdk 1.8springboot 2.1.6.RELEASE安装kafka和zookeeper我使用的是docker-compose部署,配置文件是从网上直接荡下来的,我也不知道具体配置什么意思,只知道zookeeper是2181端口,kafka是9092端口。version: '2.3'services: zoo1: image: wurstmeister/zooke...

2019-07-13 19:28:05 1128

原创 JVM的内存结构,Eden和Survivor的比例

Eden区是一块,Survivor区是两块。Eden区和Survivor区的比例是8:1:1JVM内存的结构为堆:存放对象栈:运行时存放栈帧程序计数器方法区:存放类和常量Jdk 1.8之后好像取消了方法区,直接将永久代放到了本地内存里面。...

2019-07-12 23:16:13 5892 2

原创 什么情况下会发生栈内存溢出

java中的栈一般存储的是栈帧。所以栈内存溢出就是栈帧的数量太多超过了系统预先设定的值,所以导致内存溢出。可能的原因就是方法循环调用,栈帧充满了整个栈后溢出。...

2019-07-12 22:52:29 3398

原创 反序列化会遇到什么问题,如何解决?

简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)强烈建议在一个可序列化类中显示的...

2019-07-12 07:27:34 3854

原创 什么是序列化 怎么序列化 为什么序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 Securi...

2019-07-12 07:21:23 8432

原创 java中的HashSet内部是如何工作的

HashSet 的内部采用 HashMap来实现。由于 Map 需要 key 和 value,所以HashSet中所有 key 的都有一个默认 value。类似于HashMap,HashSet 不允许重复的 key,只允许有一个null key,意思就是 HashSet 中只允许存储一个 null 对象。如果需要详细了解,还是看一下HashSet的源码比较好。参考链接:https://bl...

2019-07-12 07:13:04 1396

原创 有没有可能两个不相等的对象有相同的hashcode

答案是:有参考链接:https://blog.csdn.net/prh1023/article/details/80652704

2019-07-12 07:08:08 3732

原创 a.hashcode()有什么用,与a.equals(b)有什么关系

hashcodehashcode()方法提供了对象的hashCode值,是一个native方法,返回的默认值与System.identityHashCode(obj)一致。通常这个值是对象头部的一部分二进制位组成的数字,具有一定的标识对象的意义存在,但绝不定于地址。作用是:用一个数字来标识对象。比如在HashMap、HashSet等类似的集合类中,如果用某个对象本身作为Key,即要基于这个对...

2019-07-11 07:22:35 867

原创 java中的泛型解决了什么问题

泛型的本质是参数化类型,这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。在 Java SE 1.5 之前没有泛型的情况的下只能通过对类型 Object 的引用来实现参数的任意化,其带来的缺点是要做显式强制类型转换,而这种强制转换编译期是不做检查的,容易把问题留到运行时,所以 泛型的好处是在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率...

2019-07-11 07:18:58 2962

原创 说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法

其实我也说不明白。但是Object的equals方法是直接比较内存地址的(这里是针对对象而言);参考一下别人的描述吧:https://blog.csdn.net/qq_21163061/article/details/73606523...

2019-07-11 07:15:16 2471

原创 在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么

说到类加载,就必须对类加载机制非常熟悉。类加载使用的是双亲委派模型,当你想要加载一个类的时候,必须先给你的父加载器,它再去想办法加载,如果它不能加载,再告诉我们,我们自己想办法。所以,在java中java.lang.String肯定在上层的ClassLoader被加载过了,所以你自己写的完全没有机会加载。如果可以加载的话,那么我们可以把所有java自带的类全部重写用我们自己的,这样大家使用就...

2019-07-11 07:11:45 3150

原创 数组和链表数据结构描述,各自的时间复杂度

我们都知道:数组是开辟一块连续的空间用来保存数据的。链表是通过节点一个连一个来保存数据,更具灵活性。根据索引获取元素数组O(1) 链表O(n)查找元素数组O(n) 链表O(n)插入、删除元素数组需要移动数据,链表只需要改变指针指向。写的是自己的看法,可能不对,后续需要完善。...

2019-07-11 07:04:19 706

原创 请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。

OO就是面向对象。那面向对象的四大特性就是:抽象 封装 继承 多态从修饰符的角度来说,我觉得满足抽象和封装两个特性。一个类总有暴露给外面的方法,也有自己独立的方法不想被别人知道。修饰符的存在可以在包与包之间、类与类之间产生一种权限的关系,并不能保证随心所欲,这样才能确保安全。参考链接:https://blog.csdn.net/riemann_/article/details/8748...

2019-07-11 06:59:27 728

原创 如何在父类中为子类自动完成所有的hashcode和equals实现,这样做有何优劣

https://java-min.iteye.com/blog/1416727父类为子类写好的话,我觉得优点就是:我们不用自己去写但缺点就是有时父类的equals和hashcode不满足我们自己的要求,我们需要重新去重写。...

2019-07-11 06:52:46 5127

原创 单例模式的实现

单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一个实例。比如我们在系统启动时,需要加载一些公共的配置信息,对整个应用程序的整个生命周期中都可见且唯一,这时需要设计成单例模式。如:spring容器,session工厂,缓存,数据库连接池等等。常见的方式有饿汉式懒汉式枚举其中需要考虑到线程安全需要考...

2019-07-11 06:46:36 72

原创 java中final的用途

1、修饰类,不能被继承2、修饰常量,初始化赋值,不能修改3、修饰方法,不能被覆盖加油

2019-07-11 06:43:06 169

原创 动态代理和cglib实现的区别

一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实...

2019-07-11 06:40:55 820

原创 动态代理的几种实现方式和它们的优缺点

一般主要有两种实现方式:1、jdk动态代理2、cglib动态代理两种方法同时存在,各有优劣。jdk动态代理是由java内部的反射机制来实现的,cglib动态代理是通过继承来实现的,底层则是借助asm(Java 字节码操控框架)来实现的(采用字节码的方式,给A类创建一个子类B,子类B使用方法拦截的技术拦截所有父类的方法调用)。总的来说,反射机制在生成类的过程中比较高效,而asm在生成类之...

2019-07-11 06:36:18 722

原创 Java反射中,Class.forName和ClassLoader的区别

Java中Class.forName和classloader都可以用来对类进行加载。Class.forName除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classloader使用双亲委派模型只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。Class.for...

2019-07-11 06:28:11 216

原创 反射获取class对象和类实例

1、获取Class对象在 Java API 中,提供了获取 Class 类对象的三种方法:第一种,使用 Class.forName 静态方法。前提:已明确类的全路径名。第二种,使用 .class 方法。说明:仅适合在编译前就已经明确要操作的 Class第三种,使用类对象的 getClass() 方法。2、获取对象实例共两种方法:2.1、直接用字节码文件获取对应实例// 调用无参...

2019-07-11 06:23:44 547

原创 java中的包权限问题

一直晕晕乎乎的,记录一下。private 权限限于同一个类中;default 权限限于同一个包中,即包权限=default权限;protected权限限于同一个包中,以及不在同一个包中的子类public 权限在不同包中都可以图片来源于牛客网。...

2019-07-10 08:58:57 527

原创 (Java)剑指offer--重建二叉树

参考CN-Notes:https://cyc2018.github.io/CS-Notes/#/题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:这道题主要是要理解中序遍历和前序遍历的顺序问...

2019-07-10 07:35:07 125

原创 java中的异常

异常分类: 可查异常(CheckException),运行时异常(RuntimeException)和错误(Error)3种其中,运行时异常和错误又叫非可查异常,因为运行时异常只能是程序运行起来会发生的异常。常见的运行时异常有:除数不能为0异常:ArithmeticException下标越界异常:ArrayIndexOutOfBoundsException空指针异常:NullPointe...

2019-07-10 07:07:05 109

原创 深拷贝和浅拷贝的区别

深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。浅拷贝的时候基本数据类型是能实现拷贝的,但是对象类型只是引用同一个实例,深拷贝就是要新建一个同类型对象,然后将属性指向这个引用。假设B复制了A,修改A的时候,看B是否发生变化:如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)浅拷贝...

2019-07-10 06:43:51 94

原创 反射的原理和获取class对象的方法

反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。反射就是在运行的时候使用类加载器加载到程序中,然后你可以调用这个类的相应方法。获取class对象有三种方式:第一种,使用 Class.forName 静态方法。当你知道该类的全路径名时,你可以使用该方法获取 Class 类对象。Class clz = Class.forName(“java.lang...

2019-07-09 22:25:34 230

原创 reactor模型

https://www.cnblogs.com/crazymakercircle/p/9833847.htmlhttps://blog.csdn.net/qq924862077/article/details/81026740还是看不懂哇。

2019-07-09 22:15:22 80

js使用mqtt小demo

js支持mqtt.消息的发布订阅和消息的处理,每个消息都有一个特定的主题和具体的消息内容

2019-01-22

java操作csv文件的Demo

使用javaCSV.jar操作csv文件,很简单的读写,大佬跳过!

2018-08-10

基于数码管的时钟显示系统

本例程主要是简单应用了数码管,结合单片机的定时功能显示具体的时间,并设有闹钟功能,包含仿真文件和实验代码。

2016-01-07

4X4矩阵键盘

矩阵键盘的keil工程和proteus仿真文件

2015-04-18

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

TA关注的人

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