java基础
j2se基础知识概要叙述
另一花生
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
Queue:poll、offer、element、peek的区别
数据结构的解释 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。Queue继承了Collection接口Queue使用时要尽量避免Col...原创 2022-01-07 07:30:53 · 3097 阅读 · 0 评论 -
辩证思考与灵活应用
面向对象分析、设计、实现,每个环节的界限划分都比较清楚。而且,设计和实现基本上是按照功能点的描述,逐句照着翻译过来的。这样做的好处是先做什么、后做什么,非常清晰、明确,有章可循,即便是没有太多设计经验的初级工程师,都可以按部就班地参照着这个流程来做分析、设计和实现。不过,在平时的工作中,大部分程序员往往都是在脑子里或者草纸上完成面向对象分析和设计,然后就开始写代码了,边写边思考边重构,并不会严格地按照刚刚的流程来执行。而且,说实话,即便我们在写代码之前,花很多时间做分析和...原创 2021-08-15 13:56:47 · 218 阅读 · 0 评论 -
定义类与类之间的交互关系
泛化(Generalization)可以简单理解为继承关系。public class A { ... }public class B extends A { ... }实现(Realization)一般是指接口和实现类之间的关系。public interface A {...}public class B implements A { ... }聚合(Aggregation)是一种包含关系,A 类对象包含 B 类对象,B 类对象的生命周期可以不依赖 A 类对象的生命周期,也就是说原创 2021-08-15 13:52:20 · 134 阅读 · 0 评论 -
常见的客户端缓存框架选型
原创 2021-05-25 23:52:04 · 166 阅读 · 0 评论 -
并发集合类小结
非阻塞队列ConcurrentHashMap 支持并发安全 不支持排序ConcurrentSkipListMap 支持并发安全 支持排序ConcurrentSkipListSet 支持并发安全 不允许重复元素ConcurrentLinkedQueue 支持并发 支持列头操作ConcurrentLinkedDeque 支持并发 支持列双向操作CopyOnWriteArrayListCopyOnWriteArraySet阻塞队列ArrayBlockingQueue 有界阻塞队列Prior.原创 2021-02-18 16:28:50 · 162 阅读 · 1 评论 -
改进版本Future,将结果推送过来,而非主动阻塞拉取等待
public class FutureInAction3 { public static void main(String[] args) { Future<String> future = invoke(() -> { try { Thread.sleep(10000L); return "I am Finished."; } catch (Inte.原创 2021-02-16 11:28:24 · 216 阅读 · 0 评论 -
自己动手实现一个Future
public class FutureInAction { public static void main(String[] args) throws InterruptedException {// Future<String> future = invoke(() -> {// try {// Thread.sleep(10000);// return "I am fini.原创 2021-02-16 11:11:50 · 294 阅读 · 0 评论 -
面试问题总结
最近朋友面试问的问题1.介绍一下你在项目中所做的模块。2.单点登录的原理,你们jwt中包含哪些信息?3.Feign客户端的远程调用是怎么实现的?协议是什么?Hystrics熔断保护的实现原理?4.Redis的有哪些模式?5.项目中的搜索功能是怎么实现的?ES+kibana ik分词6.MQ怎么知道消息被指定的消费者消费?怎么使不同的生产者生产的消息被不同的消费者消费?1.引入第三方登录时,怎么使得你自己的token和第三方的token关联起来?2.讲一下为什么JVM要分为堆...原创 2021-01-17 11:43:28 · 173 阅读 · 0 评论 -
HashMap常考问题
第一题:当key为null时,这次put操作,数据将被放入哪个桶位?为什么?第二题:为什么HashMap内部的散列表数组的长度一定是2的次方数?第三题: . HashMap内部的散列表结构,什么时候初始化?以及初始化大小分别有哪几种情况?第四题: HashMap为什么需要扩容?谈谈你的理解第五题: HashMap扩 容算法,请你描述一下!第六题: HashMap内部散列表中存放的node元素中的hash属性值,与你插入的key的hashcode是否一致,为什么?第七题: JDK1.8中Hash原创 2021-01-17 09:41:04 · 336 阅读 · 1 评论 -
中断标记状态
中断机制通过使用称为中断状态的内部标记来实现。调用Thread.interrupt()设置这个标记。当线程通过调用静态方法Thread.interrupted()检测中断时,中断状态会被清除。非静态的isInterrupted()方法被线程用来检测其他线程的中断状态,不改变中断状态标记。按照惯例,任何通过抛出一个InterruptedException异常退出的方法,当抛该异常时会清除中断状态。不过,通过其他的线程调用interrupt()方法,中断状态总是有可能会立即被重新设置。JAVA中断.原创 2020-10-23 16:07:13 · 613 阅读 · 0 评论 -
JAVA语法变化在Spring中的体现
JAVA5枚举、泛型、注解、封箱、解箱JAVA6@OverrideJAVA7Diamond语法:集合泛型可写可不写多Catch:代码遇到多个异常,可用一句话直接捕获Try wiht resource:自动资源管理,底层自动生成close方法调用JAVA8Lambda语法、可重复注解:一个类或者一个方法上,可标注多个注解、类型注解...JAVA9模块化、接口私有化JAVA10局部变量类型推断...原创 2020-10-05 18:07:53 · 183 阅读 · 0 评论 -
Serializable接口的作用
什么情况下需要序列化 ??a)当你想把的内存中的对象写入到硬盘的时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;a)比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就...原创 2020-04-23 23:04:26 · 855 阅读 · 0 评论 -
String、StringBuffer、StringBuilder有什么区别
1 String(1) String的创建机理由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象...原创 2020-03-24 12:23:01 · 126 阅读 · 0 评论 -
强软弱虚引用区别
1 强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题。对于一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式...原创 2020-03-24 00:49:08 · 760 阅读 · 0 评论 -
强引用、软引用、弱引用、幻象引用有什么区别
在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用;Java中根据其生命周期的长短,将引用分为4类。1 强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回...原创 2020-03-23 00:27:22 · 187 阅读 · 0 评论 -
谈谈final、finally、 finalize有什么不同
一、final:适合用来在语义方面标识当前的方法、变量、类不可以更改,适合封装一些代码,让用的人知道这些不要随意更改。final标识的变量不等于不可变,对于变量而言这个变量只是不能够在赋值,但是可以做任何增删改查操作。所以从这方面来讲,final在高并发下面的数据一致性起来积极作用,对性能比较好。要想写一个不可变的对象,首先需要对象的类和成员都是private和final;其次对象的赋值不要直接...原创 2020-03-23 00:19:48 · 275 阅读 · 0 评论 -
NoClassDefFoundError与ClassNOtFoundException区别
NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。ClassNotFoundException的产生原因:Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类...原创 2020-03-21 17:38:29 · 349 阅读 · 0 评论 -
XML之JDOM解析
1.什么是JDOM?JDOM(Java-based Document Object Model)Java特定的文档对象模型。自身不包含解析器,使用SAX。优点:1、使用具体类而不是接口,简化了DOM的API。2、大量使用了Java集合类,方便了Java开发人员。缺点:1、没有较好的灵活性。2、性能较差。2.代码示例/**原创 2017-04-08 23:12:45 · 776 阅读 · 0 评论 -
001_重拾多线程之线程安全问题总结
什么是线程安全?当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。(出自并发编程实战)当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称呼这个类是线程安全的。有几个问题需要清楚:并发与并行的关系: 线程与进程的关系: 共享变量问题...原创 2018-12-15 18:29:12 · 298 阅读 · 0 评论 -
002_重拾多线程之多线程并发级别
并发级别:多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别进行分类,大致上可以分为阻塞、无饥饿、无障碍、无锁、无等待几种。1.阻塞(blocking) 一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized关键字,或者重入锁时,我们得到的就是阻塞的线程。 无论是synchronized ...原创 2018-12-15 22:31:04 · 363 阅读 · 0 评论 -
重拾Java回忆录(十二):Java12线程的使用
进程和线程进程:一个操作系统中执行的一个子程序,包含虚拟cpu,代码,数据 DOS多进程:一个操作系统中执行的多个子程序,提高cpu的使用率线程:在一个进程中同时执行的子程序流多线程:在一个进程中同时执行的若干的子程序流进程和线程的区别:进程有独立的进程空间(存放数据),彼此之间是独立的线程的堆空间是共享的,栈空间是独立的,而且线程占用的资源比较小,相互之间可以影响原创 2015-01-20 17:54:36 · 1432 阅读 · 0 评论 -
我们眼中的static关键字
就在刚才我在看线程方面的东西时候,看见一段这样的代码package book.thread;public class Priority { static class MyThread extends Thread{ private int ID = 0; public MyThread(int id){ this.ID = id; } public void原创 2015-01-31 15:23:36 · 1301 阅读 · 1 评论 -
XML之DOM4J解析-总结四种方法
1.DOM4J是什么以及优缺点?DOM4J(Document Object Model for Java)简单易用,采用Java集合框架,并完全支持DOM、SAX和JAXP。优点:1、大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。2、支持XPath。3、有很好的性能。缺点:1、大量使用了接口,API较为复杂。原创 2017-04-08 23:22:13 · 1029 阅读 · 0 评论 -
xml之SAX解析
1.什么是SAX(Simple API for XML)?流模型中的推模型分析方式。通过事件驱动,每发现一个节点就引发一个事件,通过回调方法完成解析工作,解析XML文档的逻辑需要应用程序完成。优点:1、不需要等待所有数据都被处理,分析就能立即开始。2、只在读取数据时检查数据,不需要保存在内存中。3、可以在某个条件得到满足时停止解析,不必解析整个文档。4、效率和性能较原创 2017-04-08 22:34:23 · 551 阅读 · 0 评论 -
重拾Java回忆录(六):java06常用的类型分类
常用的类型分类 封装类java提供为每种简单的数据类型提供的一种类的表现形式Int --IntegerFloat--FloatDouble--Double…值属性------转换-----引用属性(装箱/拆箱)Object类--所以的Java的父类,最抽象的类,该类可以实例化--具有的常用的方法hashcode返回对象的哈希码:java执行的时候,内原创 2015-01-19 17:04:06 · 889 阅读 · 0 评论 -
重拾Java回忆录(三):Java03类的特性
类的特性 封装: 是指在定义类的时候,对类中的属性的一种定义的要求 在定义类的属性时,要求能够限制外部类的访问,有效的保护数据 ,解决的方案:添加访问修饰符 : private --如此操作产生的问题类中的属性对外不提供任何的信息,所有的操作只能在类中进行解决的方案:在类中有选择的编写属性的操作方法,有针对性提供类中属性的信息--允原创 2015-01-04 19:15:00 · 1450 阅读 · 3 评论 -
重拾Java回忆录(一):Java01基本数据类型和基本语句
编写java程序的基本的要求1.编写java类其实就是编写java文件(默认的情况下类名和文件名要求一致)2.类在编写的时候,应该放在一个包(package)包的含义:一个文件夹的显示(文件的层次关系的反映)包中的层次依靠 . 进行层进,用于区分不同的java文件包之间的应用1.创建类 package 包名(指明类的位置)2.使用类 import 包名.类名(可以使原创 2015-01-17 23:16:19 · 1411 阅读 · 1 评论 -
重拾Java回忆录(四):Java04修饰符的使用
修饰符的使用 1.static :静态修饰符 可以修饰 方法 属性 内部类 代码块属性 凡是使用static修饰的内容,所有者是整个类(被所有类产生的对象共享) 加载的过程:在类的加载过程中,静态属性常驻内存(不需要new ,就能开辟存储的空间)方法静态块:初始代码块,该代码块只在类加载的时候被执行一次(主要用于静态属性的初值的设定原创 2015-01-19 11:25:25 · 990 阅读 · 0 评论 -
接口回调的原理:接口变量 调用 被类实现的接口的方法
今天偶遇一个大哥问我一个j2se的问题,结果我就懵了,现在懂了,赶快给大家分享一下,自己也总结一下,省得忘了,以下内容是经过百度思索以后总结的,雷同很会高= =二话不说,先上代码!interface People { void peopleList();} class Student implements People { publicvoid peopleL原创 2014-02-18 01:02:06 · 7209 阅读 · 0 评论 -
三种常用的对应list集合的双重遍历
三种常用的对应list集合的双重遍历,直接上代码package com.collections.lists;import java.util.ArrayList;import java.util.Iterator;import com.collections.lists.vo.Product;import com.collections.lists.vo.Produ原创 2014-02-14 19:44:51 · 6465 阅读 · 0 评论 -
字符串常用的知识
1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2、charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3、getChars() 截取原创 2014-02-04 18:42:02 · 1528 阅读 · 0 评论 -
Tomcat6的服务器配置
Tomcat6的服务器配置文件放在 ${tomcat6}/conf 目录底下。我们可以在这里找到 server.xml 和 context.xml。当然,还有其他一些资源文件。但是在在本文中我们只用得上这两个,其他的就不介绍了。1. 首先,需要为数据源配置一个JNDI资源。 我们的数据源JNDI资源应该定义在context元素中。 在tomcat6版本中,context元素已经从serve原创 2014-01-21 11:13:56 · 1214 阅读 · 0 评论 -
重拾Java回忆录(七):Java07String和Date的使用
String , StringBuffer , StringBulider的使用 String: 不可改变的Unicode字符序列 内存中会自动的创建一个字符串池(放置公共的数据),如果使用字面值创建字符串,Java就会在次池中查找 StringBuffer : 可变长的Unicode字符序列 (多使用)--允许并发操作,是一个线程安全的//String s=""原创 2015-01-19 17:10:46 · 933 阅读 · 0 评论 -
重拾Java回忆录(二):Java02类和对象
类:主观的抽象,对象的模版,可以实例化成为对象---定义一种模版,而模版不能直接的使用---使用类就需要创建成为对象--将现实中的具体对象,进行抽象的结果(强调对象之间的相同点,忽略不同的过程) --使用抽象结果: 将模版进行具体化(实例化),用实例化的结果进行操作 习惯上定义类的格式Package XXX;Import XXX;[修饰符] Class 类名{原创 2015-01-17 23:21:55 · 2273 阅读 · 0 评论 -
XML之DOM解析方式
目前XML的解析是四种,今天说一下DOM(Document Object Model)方式,我自己认为是最简单的一种,很好记~先说几个基本概念,脑子里要有点印象;1.什么是XML语言?可扩展标记语言(Extensible Markup Language, XML) ,用于标记电子文件使其原创 2017-04-06 23:35:51 · 539 阅读 · 0 评论 -
java笔试题小记
package com.suanfa;public class Base { int i;// 0 Base() { add(1); System.out.println("---i---"+i); } void add(int v) { System.out.println("before "+i);原创 2016-01-09 11:44:58 · 936 阅读 · 1 评论 -
人月神话:有多传奇?
前言本文为《人月神话(40周年纪念版)》试读博文 摘要 这是一本软件工程领域的经典之作,第一次笔者听到这个书名还是在大学的一次技术研讨会上,现在已经过去两年多,借此机会来重新研读一下此书。 我将通过一个准程序员的视角来阐述自己对本书的浅见,希望大家给予指点批评! 正文焦油坑是啥?首先映入眼帘的是野兽与野兽打架的场景..几只野兽挣扎着半天也无法逃脱这个坑,如同过去几十年大原创 2015-06-02 01:41:53 · 2058 阅读 · 6 评论 -
Java 动态代理
Java 动态代理 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。 Proxy模式是很常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火车票的代售点去买。寄信不一定是自己去寄,可以把信委托给邮局,由邮局把信送到目的地。 以上的也原创 2015-05-04 15:12:46 · 1330 阅读 · 0 评论 -
重拾Java回忆录(十):Java10反射机制
反射:在java程序的运行时动态的分析或者使用一个类进行操作Java.lang.Class :描述类信息的类类对象:描述一个类的信息,当jvm加载一个类时,就会产生描述信息对象(反映当前的运行类的信息),称为Class对象 如何获取Class对象通过类对象可以得到一个类中的结构信息--得到类的组成的情况Field属性类:类中的属性Method方法类:原创 2015-01-20 16:30:11 · 1551 阅读 · 0 评论 -
重拾Java回忆录(十一):Java11内部类的使用
什么是内部类:定义在另外一个类中的类,称为内部类编译完成后产生2个类 Outter.class 和 Outter$Inner.class内部类的分类静态内部类:定义在类中使用static描述静态内部类中只能访问外部类的静态成员实质:在一个类中定义了一个静态类型,该类型产生的对象可以操作包含类中的静态属性成员内部类: 作为外部类的一个成员出现,与外部类的属性和方法并列原创 2015-01-20 17:49:59 · 1407 阅读 · 0 评论