![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础知识与理解
文章平均质量分 97
java基础知识与理解,包括一些java基础知识,许多内容来自于《java核心技术卷I》
wyplj_sir
只是总结。
展开
-
Volatile和CAS
文章目录1、错误的双重检查锁加锁双重检查锁volatilevolatile什么是重排序volatile禁止重排序volatile写时volatile读时synchronized优化前优化后偏向锁:轻量级锁:CAS在代码规范中,有一条规范是“static 和 synchronized不应双重检查锁”1、错误的双重检查锁先回顾一下单例模式,单例模式是指:一个类有且仅有一个实例,并且自行实例化向整个系统提供。单例模式通常分为饿汉式和懒汉式。饿汉式:饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用原创 2022-08-08 20:30:18 · 352 阅读 · 0 评论 -
深入浅出Java泛型
泛型泛型初印象 说起泛型,第一感觉是,这个东西我记得老师讲过,但我不记得老师讲了啥。再认真思索一下,好像是有个<T>, <?>,但它们是什么含义,怎么使用,全然不知。 当我提起泛型时,被问了下面几个问题。什么是泛型?泛型,即**“参数化类型”**。参数对我们而言很熟悉:定义方法时需要形参,调用方法时传递实参。通常我们使用的参数类型是具体的,而“参数化类型”就是将具体的参数类型也定义为参数的形式,使用时传入具体的类型。我的代码里会用到泛型吗?泛型虽然听上去不是很原创 2022-04-20 20:34:36 · 2304 阅读 · 2 评论 -
单链表中环的问题
文章目录1.是否存在环2.环的长度今天被问了单链表中环的问题,答得一团糟,所以复习还是很重要的1.是否存在环如果单链表中存在环的话,遍历链表会陷入死循环,一般会使用双指针的方法来进行判断。思路:使用双指针对链表进行遍历,快指针fast和慢指针slow,fast每次走两步,slow每次走一步如果在遍历过程中,fast遍历到了null,说明没有环如果fast和slow指向同一个节点,说明存在环while (fast.next != null && fast.nex原创 2020-09-17 21:21:48 · 147 阅读 · 0 评论 -
String类的isEmpty()、null和“”的区别
文章目录demo代码:运行结果:结论:总结:String类的isEmpty()、null和“”都有空的含义,但三者是不同的。demo代码:为了更清晰的看三者的区别,可以写一个demo,如下:要注意如果string为null,不能对其调用isEmpty方法和equals方法,会报错:package Tests;/** * @author zhangjie * @date 2020/9/13 */public class StringEmptyDemo { public原创 2020-09-13 20:58:05 · 2582 阅读 · 0 评论 -
反射和代理(静态代理和动态代理)
反射Java的反射机制其实就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。用一句话来概括反射就是加载一个运行时才知道的类以及它的完整内部结构。Java反射机制剖析Java-反射和动态代理静态代理和动态代理...原创 2020-05-19 11:51:49 · 691 阅读 · 0 评论 -
Java内部类浅析
文章目录内部类1.成员内部类2.静态内部类3.局部内部类4.匿名内部类看到自己去年转载的一篇关于内部类的文章,把自己看出好多疑问……不如重新跟着学习一下……内部类内部类,顾名思义,就是在一个类的内部定义的类。优点:内部类与外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)内部类是另外一种封装,对外部的其他类隐藏方便编写事件驱动程序和线程代码可以实现多重继承Java的类是单继承的,只能有一个父类。每个内部类都能独立的继承一个类,而外部类的继承,对于内部类没有影响。接口只是解决原创 2020-05-09 14:39:13 · 102 阅读 · 0 评论 -
抽象类和接口的区别(jdk8/jdk9)
抽象类和接口的区别1、一个类可以实现多个接口,但只能实现一个抽象类。接口本身可以通过extends关键字扩展多个接口。2、 抽象类可以有构造方法,接口中不能有构造方法。3、抽象类中不一定都是抽象方法,也可以全是具体方法(非抽象方法)。在Java8之前,接口中的所有方法必须是抽象的。但Java8的时候,接口可以有默认方法和静态方法。4、接口中只能有static final变量,不能有其他变量...原创 2020-04-27 16:22:59 · 1399 阅读 · 2 评论 -
图的遍历:深度优先遍历和广度优先遍历
图的遍历一般有两种方式:深度优先和广度优先。深度优先(DFS)深度优先遍历也叫深度优先搜索(Depth First Search)。它的遍历规则:不断地沿着顶点的深度方向遍历。顶点的深度方向是指它的邻接点方向。具体点,给定一图G=<V,E>,用visited[i]表示顶点i的访问情况,则初始情况下所有的visited[i]都为false。假设从顶点V0开始遍历,则下一个遍历的顶点...原创 2020-04-09 14:02:38 · 996 阅读 · 0 评论 -
CGlib动态代理
一、CGlib介绍参考链接:设计模式之代理模式https://www.cnblogs.com/lixiuyu/p/5919643.htmlCGlib(Code Generation Library)是一个强大的,高性能的代码生成库。它被广泛使用在基于代理的AOP框架(例如Spring AOP和dynaop)提供方法拦截(interception)。它可以在运行期扩展Java类与实现...原创 2019-04-19 15:48:56 · 210 阅读 · 0 评论 -
Java内部类
原文链接:https://www.cnblogs.com/shen-hua/p/5440285.htmlJava中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类) 我们先看这样一段话:人是由大脑、肢体、器官等身体结果组成。而组成我们人体的心脏它也有自己的属性和行为(血液、跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为...转载 2019-03-18 15:21:45 · 123 阅读 · 0 评论 -
Java中创建对象的5种方式
https://www.cnblogs.com/wxd0108/p/5685817.html转载 2019-03-04 13:54:19 · 60 阅读 · 0 评论 -
java小问题
1.面向对象编程有哪些特点?封装、继承、多态封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装的好处:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作继承:是 java中实现代码重用的重要手段之一.java中只支持单继承,即每个类只能有一个父类.继承表达的是 is a 的关系,或者说是一种特殊和一般的关系....原创 2017-10-16 16:16:09 · 272 阅读 · 0 评论 -
Bean\Entity\Model\POJO
一、Bean对于Bean而言,我的理解是只要是Java的类的就可以称为一个Bean,更用在Spring上,被Spring管理的对象就可以将其称作为Bean。它不仅仅可以包括对象的属性以及get,set方法,还可以有具体的业务逻辑。二、Entity这个最容易理解,其特点是:数据表对应到实体类的映射三、ModelModel是MVC中一个概念,可能不和Entity转载 2017-10-26 10:09:00 · 312 阅读 · 0 评论 -
排序算法
1、冒泡排序比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。public void bubbleSort(int[] A){ for(int i=0;i<A.length-1;i++){ ...原创 2019-02-27 19:51:33 · 128 阅读 · 0 评论 -
String,StringBuffer,StringBuild区别
Stringstring是不可变对象,对string对象的每个改变操作都会生成新的string对象String s = "hello";s = s + " world";执行这段代码,会开辟三次内存空间,“hello”、“world”、“hello world”,s指向新生成的“hello world”对象。所以内容经常改变的字符串不使用String类型(会造成内存中大量的无引...原创 2019-02-27 21:46:17 · 282 阅读 · 0 评论 -
abstract,final,static
abstract1、abstract修饰方法abstract修饰方法,使这个方法变成抽象方法,即只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现。abstract void xxx();2、abstract修饰类abstract修饰类,使这个类成为一个抽象类,类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需...原创 2019-02-28 12:54:13 · 180 阅读 · 0 评论 -
Java中输入输出流
原文:https://www.cnblogs.com/biehongli/p/6074713.html参考:https://www.cnblogs.com/zhaoyanjun/p/6292384.html1、流流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作...转载 2019-03-04 23:10:07 · 528 阅读 · 0 评论 -
Java File类
原文:https://www.cnblogs.com/biehongli/p/6074713.htmlFile类File类是IO包中唯一代表磁盘文件本身的对象。通过File来创建,删除,重命名文件。File类对象的主要作用就是用来获取文本本身的一些信息。如文本的所在的目录,文件的长度,读写权限等等。(有的需要记忆,比如isFile(),isDirectory(),exits();有的了解即...转载 2019-03-04 21:58:37 · 109 阅读 · 0 评论 -
JavaWeb Cookie和Session
https://www.cnblogs.com/whgk/p/6422391.html转载 2019-03-05 12:32:10 · 245 阅读 · 0 评论 -
Spring AOP 介绍
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。一 AOP的基本概念(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用(3)Advice(通知):AOP在特定的切入点上执行的...转载 2019-03-02 22:45:28 · 93 阅读 · 0 评论 -
java对象与json之间的转换
Java对象转换成jsonTeacher teacher = new Teacher();String str = JSONObject.fromObject(teacher).toString();Json串转换成Java对象JSONObject jsonObject = JSONObject.fromObject(jsonString);Te原创 2017-11-08 20:10:05 · 196 阅读 · 0 评论