Java
铁憨憨的学习记录
越努力,越幸运,加油
展开
-
如何定义自己的注解(Annotation)
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retention,...转载 2018-06-26 22:06:31 · 706 阅读 · 0 评论 -
多线程复习
概念: 如果一个 进程中同时运行了多个线程,用来完成不同的工作,则称为多线程。 多个线程交替的占用CPU资源,而非真正的并行执行。好处: 充分利用CPU资源 简化编程模型 带来良好的用户体验1、获取当前线程public class ThreadDemo { public static void main(String[] args) {...原创 2018-08-20 21:38:42 · 168 阅读 · 0 评论 -
Java线程池的深入理解
直接去看下面这篇博客,讲得非常好 http://www.cnblogs.com/dolphin0520/原创 2018-09-01 00:22:09 · 116 阅读 · 0 评论 -
关于HashSet是无序的个人理解
首先看下面两篇博客:https://blog.csdn.net/snail_rao/article/details/7341315https://blog.csdn.net/qq_24251323/article/details/52748398这两篇博客都有自己的理解,结合一下,可以总结有如下情况: (1)、当输入的值大小和底层数组大小差不多的时候,HashSet的输入顺序是...原创 2018-08-29 16:47:59 · 3673 阅读 · 0 评论 -
Java反射机制getModifiers()方法的作用
JAVA 反射机制中,Field的getModifiers()方法返回int类型值表示该字段的修饰符。其中,该修饰符是java.lang.reflect.Modifier的静态属性。对应表如下:PUBLIC: 1PRIVATE: 2PROTECTED: 4STATIC: 8FINAL: 16SYNCHRONIZED: 32VOLATILE: 64TRANSIENT: 12...转载 2018-09-03 17:08:58 · 13561 阅读 · 1 评论 -
通过eclipse的svn资源库添加的项目,没有Java Build Path,无法添加jre和jar包。
网上找了好多教程都没有解决,亲测下面的方法可行。 首先通过ctrl+shilt+R 快捷键,查找.project文件,并在文件里面添加下面的代码:<natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures>natures是标志...原创 2018-11-16 14:27:18 · 1944 阅读 · 1 评论 -
java 中关于String的 replace和replaceAll
replace和replaceAll是JAVA中常用的替换字符的方法。下面我们来看看他们的区别:直接上代码:用replace替换public class ww { public static void main(String[] args) { String classFile = "com.jd.beijing". replace(".", "/") + "M...原创 2018-12-05 10:57:39 · 8940 阅读 · 0 评论 -
Java 程序员必备的 15 个框架!
1.Spring毫无疑问,Spring 框架现在是 Java 后端框架家族里面最强大的一个,其拥有 IOC 和 AOP 两大利器,大大简化了软件开发复杂性。并且,Spring 现在能与所有主流开发框架集成,可谓是一个万能框架,Spring 让 JAVA 开发变得更多简单。官网:https://spring.io/projects/spring-framework源码:ht...转载 2018-12-07 19:12:52 · 190 阅读 · 0 评论 -
Java设计模式之Builder模式
在《Effective Java 第2版》中有提到,遇到多个构造器参数时要考虑使用构建器(Builder模式)。相比于重叠构造器(telescoping constructor)模式和JavaBeans模式,Builder模式实现的对象更利于使用。 下面从一个Person例子进行分析以上三种设计模式的使用,Person类有两个必要参数(id和name),有5个可选参数(age...转载 2018-12-11 10:33:02 · 118 阅读 · 0 评论 -
JSON Web Token的学习
一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。3、服务器向用户返回一个 session_id,写入用户的 Cookie。4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。5...转载 2019-02-25 16:26:12 · 116 阅读 · 0 评论 -
JVM的模型(多个不同角度的观察)
描述: 对于JVM,我想,对于Java开发的人并不陌生,但是对于里面的一些内容来说,我想就不是很了解了。我们平常对于JVM我想了解得最多的就是它的内存模型了,更确切的说,我想就是JVM的运行角度的理解。那么,从其他角度来看的话,你真的了解JVM吗?下面,我从多个不同角度来对JVM进行描述。(1)从JVM运行时视角来看,JVM内存可分为JVM栈、本地方法栈、PC计数器、方法...转载 2019-03-13 17:22:37 · 147 阅读 · 1 评论 -
Spring无法注入Static变量的原因及Spring注入静态变量
spring不能注入static变量的原因: Spring 依赖注入 是依赖 set方法 set方法是 是普通的对象方法 static变量是类的属性所以下面这种方式注入静态的变量是会报空指针异常的。spring 中如何注入静态变量: 1.xml方式实现:<bean id="mongoFileOperationUtil" ...原创 2019-04-18 20:55:11 · 4370 阅读 · 7 评论 -
Java的强引用,软引用,弱引用,虚引用及其使用场景
从 JDK1.2 版本开始,Java 把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(Strong Reference)强引用就是我们经常使用的引用,其写法如下:Object o = new Object();只要还有强引用指向一个对象,垃圾收集器就不会回收这个对象;显式地设置 o 为 nu...转载 2019-06-17 15:49:01 · 1102 阅读 · 0 评论 -
JDK、JRE、JVM三者间的关系
文章出处:http://playkid.blog.163.com/blog/static/56287260201372113842153/ JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集...转载 2019-06-18 09:52:38 · 78 阅读 · 0 评论 -
匿名内部类详解
匿名内部类总结:定义:匿名内部类也就是没有名字的内部类好处:正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();}class Child exte...转载 2019-08-26 15:30:22 · 196 阅读 · 0 评论 -
关于Java中的反射机制
定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++...原创 2018-08-17 00:26:51 · 215 阅读 · 0 评论 -
Spring MVC 的工作流程
先通过一张图来展示Spring MVC程序的执行请况:按图中标注的序号,Spring MVC程序的执行流程如下:(1)、 用户通过客户端向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。(2)、DispatcherServlet拦截到请求后,会调用HandlerMapping(处理器映射器)(3)、处理器映射器会根据请求URL找...原创 2018-08-19 11:07:28 · 255 阅读 · 0 评论 -
java接口和抽象类的区别
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),...转载 2018-08-03 12:59:45 · 77 阅读 · 0 评论 -
Servlet入门学习(一)
1. 什么是Servlet? Java Servlet 是运行在 Web 服务器或应用服务器上的程序;他是浏览器(HTTP客户端)请求和HTTP服务器上资源(访问数据库)之间的中间层。2. 第一个Servlet程序 1) 新建一个网站 打开MyEclipse,菜单File—New—Web Project,在Project Name中输入名称,本例为MySe...原创 2018-06-27 21:42:52 · 93 阅读 · 0 评论 -
Servlet入门学习(二)
1. 准备 在JavaWeb之Servlet入门(一)中,我们完成了第一个Servlet程序,完成了从URL到后台控制器的中转过程,接下来我们延续JavaWeb之Servlet入门(一)学习下如何传参及返回,如何配置404和error页。2. Servlet传递参数 1)调整HelloServletpublic void service(ServletRequest r...原创 2018-06-27 21:54:15 · 108 阅读 · 0 评论 -
Java类继承关系中的初始化顺序
Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态...转载 2018-08-03 20:02:14 · 139 阅读 · 0 评论 -
eclise导入已存在工程报 Faceted Project Problem 错误
现象: 向eclipse里面导入已存在工程时,报如下错误: Description Resource Path Location Type Target runtime Apache Tomcat v6.0 is not defined. ... Unknown Faceted Project Problem 原因分析: 更换机器或系统后,旧工程所使用的Tomcat已不存在, 解决: ...原创 2018-07-27 16:37:51 · 347 阅读 · 0 评论 -
Java集合复习笔记
先来看看集合体系框架图: 1、Collection (集合的最大接口)继承关系 ——List 可以存放重复的内容,有序 ——Set 不能存放重复的内容,所以的重复内容靠hashCode()和equals()两个方法区分,无序 ——Queue 队列接口, ——SortedSet 可以对集合中的数据进行排序...原创 2018-08-11 14:15:14 · 306 阅读 · 0 评论 -
Java集合常见面试题(一)
集合和数组的区别:1:数组是固定长度的;集合可变长度的。2:数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。3:数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。1.ArrayList和LinkedList的区别ArrayList(数组结构): 优点:get和set调用花费常数时间,也就是查询的速度快; ...原创 2018-08-11 20:25:08 · 14647 阅读 · 3 评论 -
Java集合常见面试题(二)
1.为什么Map接口不继承Collection 接口?Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Map被设计为键值对的集合,所以不需要继承Collection 接口2.HashMap和Hashtable之间的区别?同步或线程安全 Null键和Null值 迭代值 默认容量大小3...原创 2018-08-11 21:25:40 · 553 阅读 · 1 评论 -
Java中HashMap的实现原理
一、Java中的hashCode和equals1、关于hashCodehashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的 如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同 如果对象的equals方法被重写,那么对象的...转载 2018-08-11 22:26:13 · 132 阅读 · 0 评论 -
Java类加载分析
一、类的加载过程首先,Jvm在执行时,遇到一个新的类时,会到内存中的方法区去找class的信息,如果找到就直接拿来用,如果没有找到,就会去将类文件加载到方法区。在类加载时,静态成员变量加载到方法区的静态区域,非静态成员变量加载到方法区的非静态区域。静态代码块是在类加载时自动执行的代码,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。简单的画个内存运行...原创 2018-08-02 20:31:48 · 195 阅读 · 0 评论 -
this,static,final的用法
一、this 用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是够也应该有一个引用来访问自己的属性和方法纳?JAVA提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法。 Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配...原创 2018-08-02 22:39:49 · 142 阅读 · 0 评论 -
Java基础学习IO总结1
1、File类常用方法及应用创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。mkdir() 在指定位置创建一个单级文件夹。mkdirs() 在指定位置创建一个多级文件夹。renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在...原创 2018-08-03 09:35:33 · 111 阅读 · 0 评论 -
Java基础学习IO总结2(流的概念、分类)
1、Java Io流的概念 如何读写文件? 通过流来读写文件 流的概念: 流是指一连串流动的字符,是以先进先出方式发 送信息的通道 2、IO流的分类 1.2.1 按照流的流向分,可以分为输入流和输出流。输入流:java的输入流主要是InputSt...原创 2018-08-03 10:14:48 · 232 阅读 · 0 评论 -
java各种集合的线程安全
线程安全首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variable,就可能会出现不可预知的结果。根据上面的解释,很容易想出相应的scenario。 而用s...转载 2018-08-12 11:02:07 · 1191 阅读 · 0 评论 -
八大排序算法复习之交换排序
先来谈谈排序的概念: 所谓排序,就是根据排序码的递增或者递减顺序把数据元素依次排列起来,使一组任意排列的元素变为一组按其排序码线性有序的元素。 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 ...原创 2018-08-07 20:37:49 · 329 阅读 · 0 评论 -
Quart的入门学习
一、Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的用缓存的时候,每天十二点定时对内存中的全量数据进行一次更新。 人事系统会在每天早晨8点给有待办的人员自动发送Email提醒 在我们实际的项目中,当Job过多的时候,肯定不能人工去操作,这...转载 2019-09-06 17:50:32 · 646 阅读 · 0 评论