Java基础/高级
文章平均质量分 61
java基础知识和高级知识,相关问题的解决方法。(不包括jvm,java命令,java api的详情以及各种框架等)
30年后世界会是怎样
这个作者很懒,什么都没留下…
展开
-
mysql面试题
如何设计一个关系型数据库?首先划分为两大部分,一个存储部分,类似文件系统将数据持久化到硬盘上, 另一个是程序实例部分,创建模块: 存储管理,缓存机制,SQL解析,日志管理,权限划分,容灾机制**,索引管理,锁模块**。数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全 依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。事务的基本要素 ACIDAto转载 2020-06-18 10:39:44 · 522 阅读 · 1 评论 -
Linux面试题
如今程序员生产的代码99%都部署在linux环境下,代码发现缺陷,程序员的第一反应是到 Linux 上拉日志下来看。程序员不是运维,不需要掌握非常多复杂命令。推荐终端工具SecureCRT xshell常用命令(重要)ls/ll、cd、mkdir、rm-rf、cp、mv、ps -ef | grep xxx、kill、free-m、tar -xvf file.tar查看进程:(例:如何查看所有xx进程) ps -ef | grep xxx ps -aux | grep xxx(-转载 2020-06-16 17:05:23 · 229 阅读 · 0 评论 -
设计模式
有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文:面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。 职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来。 对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不能说改就改;对扩展开放就比较好理解了,也就是说在我们写好的代码基础上,很容易实现扩展。创建型模式创建型模式的作用就是创建对象,说到创建一转载 2020-06-16 17:03:40 · 187 阅读 · 0 评论 -
jvm面试题
JVM 的主要组成部分及其作用类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会加载类文件到内存,Class loader只管加载,只要符合文件结构就加载。运行时数据区(Runtime Data Area)是jvm的重点,我们所有所写的程序都被加载到这里,之后才开始运行。字节码文件只是 JVM 的一套指转载 2020-06-16 16:02:58 · 421 阅读 · 0 评论 -
java多线程面试题
临界资源临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。进程间采取互斥方式,实现对这种资源的共享。临界区:每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他进程进入。线程和进程的区别?进程是系统资源分配的最小单位,线程是程序执行的最小单位 进程使用独立的数据空间,而线程共享进程转载 2020-06-16 15:43:31 · 652 阅读 · 0 评论 -
java并发基础
JMM(Java 内存模型)原子性(Atomictiy)原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。可见性(Visibility)可见性是指当一个线程修改了某一个共享变量的值时,其他线程能否立即知道这个修改。缓存优化,硬件优化,指令重排,编辑器的优化。可能导致的可见性问题。有序性(Ordering)有序性是指:在本线程内观察,所有操作都是有序的。在一个线程观察另一个线程,所有操作都是无序的,无序是因为发生了指令重排序。在转载 2020-06-16 15:25:16 · 192 阅读 · 0 评论 -
Java容器
一 概览容器的思维导图:CollectionListJava 的 List 是非常常用的数据类型。List 是有序的 Collection。Java List 一共三个实现类: 分别是 ArrayList、Vector 和 LinkedList。ArrayList:ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数 组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数 组的数据复制到新的存储空间中。转载 2020-06-16 00:28:35 · 262 阅读 · 0 评论 -
计算机网络面试题
TCP/IP四层网络模型第一层 网络接口层网络接口层包括用于协作IP数据在已有网络介质上传输的协议。协议:ARP,RARP第二层 网间层网间层对应于OSI七层参考模型的网络层。负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。协议:本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),ICMP协议。第三层 传输层传输层..转载 2020-06-16 00:14:34 · 543 阅读 · 0 评论 -
java基础
Java 语言有哪些特点/什么是Java?简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); GC实现垃圾回收; 异常处理机制; 支持多线程; 支持网络编程并且很方便; 编译与解释并存;面向对象和面向过程的区别面向过程:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、..转载 2020-06-15 23:57:30 · 182 阅读 · 0 评论 -
Java8 Stream 性能测试
之前的文章中我们介绍了Java 8中Stream相关的API,我们提到Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。那么,Stream API的性能到底如何呢,代码整洁的背后是否意味着性能的损耗呢?本文我们对Stream API的性能一探究竟。为保证测试结果真实可信,我们将JVM运行在-server模式下,测试数据在GB量级,测试机器采用常见的商用服务器,配置如下: OS CentOS 6.7 x86_64转载 2021-04-20 19:46:29 · 287 阅读 · 0 评论 -
JAVA 浮点数的范围和精度
(一)IEEE754标准IEEE754标准即IEEE浮点数算术标准,由美国电气电子工程师学会(IEEE)计算机学会旗下的微处理器标准委员会发布。以32位float数据为例,在内存中的存储形式是1bit的符号位(S),8bit表示指数部分(Exp),23表示小数部分的尾数(Fraction)。表一单精度浮点数在内存中存储形式 1bit符号 8bit指数部分 23bit尾数 符号位——S取0时表示负数,取1时表示负数。...转载 2020-05-28 11:22:24 · 1388 阅读 · 0 评论 -
java中list的sort()功能如何使用?
排序时正序/倒序处理起来可能会混淆,可以用更简单的方法。可以使用java.util自带的比较器来做Comparator.comparingInt(Integer::intValue).reversed() // 倒序Comparator.comparingInt(Integer::intValue) // 正序 示例:public class Main { ...转载 2020-04-30 13:53:39 · 4158 阅读 · 0 评论 -
Java 如何重写对象的 equals 方法和 hashCode 方法
前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31。接下来看看各种为什么。一、需求: 对比两个对象是否相等。对于下面的 User 对象,只需姓名和年龄相等则认为是同一个对象。二、解决方案: 需要重写对象的 equals 方法和 hashCode 方法package c...转载 2020-04-02 15:40:59 · 261 阅读 · 0 评论 -
ava动态获取接口下所有实现类集合 Java动态获取实现某个接口下所有的实现类对象集合
最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行。我想的方案是:直接获取某个接口下面所有的实现类的对象集合,方便以后只需要 实现这个接口,就能自动被加载执行。话不多说,说说我的实现方案。开始想着用反射自己写一个工具类,后面懒得去折腾,就直接用第三方工具包了,这里我用的是org.reflections。maven配置:<dependency><...转载 2020-03-12 09:11:13 · 304 阅读 · 0 评论 -
Java获取接口所有实现类的方式详解
有时候,根据业务逻辑的需求,我们想要获取到某个接口的所有实现类。在这里大致介绍两种方式:1.借助Spring容器实现Spring作为一个容器,管理着一个项目中所有经过配置的Java类(xml配置文件或Annotation方式)。如果某个接口的所有实现类均被Spring托管了,那么通过Spring就可以很简单的返回这些实现类。import org.springframework.bea...转载 2020-03-12 09:03:45 · 9063 阅读 · 1 评论 -
Java对信号的处理
Java对信号的处理本文主要包括Java如何处理信号,直接上代码。1. 实现SignalHandlerpackage com.chzhao.SignalTest;import sun.misc.*;@SuppressWarnings("restriction")public class TestSignal implements SignalHandler { ...转载 2020-03-12 06:49:21 · 1244 阅读 · 0 评论 -
java foreach实现原理
在平时Java程序中,应用比较多的就是对Collection集合类的foreach遍历,foreach之所以能工作,是因为这些集合类都实现了Iterable接口,该接口中定义了Iterator迭代器的产生方法,并且foreach就是通过Iterable接口在序列中进行移动。 Iterable接口API:package java.lang;import java.util.I...转载 2020-03-04 16:37:04 · 281 阅读 · 0 评论 -
Java LinkedList详细介绍(源码解析)和使用示例
第1部分 LinkedList介绍LinkedList简介LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了Clonea...转载 2020-03-01 23:10:37 · 170 阅读 · 0 评论 -
java8 时间
//LocalDateTime --> StringDateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime time = LocalDateTime.now();String localTime = df.format(time);// String -->...转载 2019-12-05 10:55:01 · 272 阅读 · 0 评论 -
Java 8 - Optional.flatmap和Optional.map之间的区别
map和flatMap都接收一个mapping function参数。map和flatMap返回的都是Optional类型的数据。当mapping function返回的是Optional类型的数据时,可以直接使用flatMap,flatMap直接返回该Optional。当mapping function返回的不是Optional类型的数据时,使用map,因为map会进行一次Optio...原创 2019-11-26 12:28:00 · 6145 阅读 · 1 评论 -
为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default
第一个问题: private: 很好理解,类和接口如果定义成private,那么其他任何类都不能访问,这样的类写出来也没有意义。protected: 这个问题用反证法比较好解释清楚,假设类B和A不在同一个包,A又是protected类, 那么B能访问A的前提是B是A的子类,而B能成为A的子类(或者说B能继承A)的前提又是B能访问A。这两个条件互为前提,无法实现。 第二...转载 2019-11-25 10:46:41 · 1998 阅读 · 1 评论 -
java解码base64字符串并保存为文件
举个例子(在controller中接收base64字符串,解码并保存为本地文件):package com.example.image.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapp...原创 2019-11-14 10:04:41 · 3189 阅读 · 0 评论 -
Lombok简化java代码
Lombok简介Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。IntelliJ IDEA 使用它的方法先安装插件Paste_Image.png然后引入lombok的jar包<dependency> <groupId>org.p...转载 2019-04-04 09:40:34 · 150 阅读 · 0 评论 -
JAVA全栈工程师应具备怎样的知识体系?
转自:https://item.btime.com/m_2s21qmeao11Java是超高人气编程语言,拥有跨平台、面向对象、泛型编程等特性。在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属。今天是针对各类目有更详细的经验分享。常用的东西要熟练,不常用的要知道。其实并不用为了要有这些知识而学习它,因为更重要的是应用场景中...转载 2018-11-04 19:05:14 · 590 阅读 · 0 评论 -
如何成为一名优秀的全栈工程师
写在最前我的前一篇文章《给职场新人的10点职涯建议》发表后,得到了很多简友,特别是年轻程序员朋友们的喜爱,这令我颇感意外,但又很受鼓舞。同时,我也收到了一些简信,大多来自那些毕业不久,刚步入工作岗位的职场新人。询问的内容也大多是如何选择职业方向,如何成为一名优秀的软件工程师,以及怎样快速提高自身的技能等。我在一一回复的同时,不禁想结合自身的经历,谈谈如何才能成为一名优秀的全栈工程师。什...转载 2018-11-04 18:55:22 · 311 阅读 · 0 评论 -
深入理解Java8 Lambda表达式
一、Lambda表达式是什么?Lambda表达式有两个特点:一是匿名函数,二是可传递。匿名函数的应用场景是:通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用Lambda表达式。lambda表达式所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。可传递使用场景是:就是将Lambda表达式传递给其他的函数,它当...转载 2019-04-08 17:09:14 · 165 阅读 · 0 评论 -
Java中对List集合的常用操作
目录:list中添加,获取,删除元素; list中是否包含某个元素; list中根据索引将元素数值改变(替换); list中查看(判断)元素的索引; 根据元素索引位置进行的判断; 利用list中索引位置重新生成一个新的list(截取集合); 对比两个list中的所有元素; 判断list是否为空; 返回Iterator集合对象; 将集合转换为字符串; 将集合转换为数组; 集...转载 2019-04-08 17:29:00 · 183 阅读 · 0 评论 -
Lambda表达式和Java集合框架
Java8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Framework)中新加入方法的使用.前言我们先从最熟悉的Java集合框架(Java Collections Fram...转载 2019-04-08 17:50:53 · 136 阅读 · 0 评论 -
Java反射机制详解
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。(功能、作用 -> 应用?)1、关于Class 1、Class是一个类,一个描述类的类(也就是描述类本身),封装了描述方法的Method,描述字段的Filed,描述...转载 2019-04-15 10:38:54 · 173 阅读 · 0 评论 -
Java 学习线路图
学习是一个循序渐进的过程,是一件非常难得坚持的事情。如果真的想学Java,一定要下定决心!这里我分享给你的Java学习线路图,希望对你有帮助:java学习线路图这个学习线路图我分为了几个阶段,每个阶段能学到什么,能做什么,具体知识点请往下看,每个阶段知识点我都整理出来了,更适合学习!java语言入门可掌握的核心能力:掌握Java开发环境基本配置;掌握运算符、表达式、...转载 2019-05-27 10:01:10 · 457 阅读 · 2 评论 -
Java面试208题及答案解析
Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,...转载 2019-11-22 09:17:51 · 886 阅读 · 0 评论 -
Java全栈工程师知识体系介绍
转自:https://www.cnblogs.com/zbdxcyg/p/7202041.html Java全栈工程师知识体系介绍 Java全栈工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人,也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer。 那么想要成为一名合格的Java全栈工程师需要掌握哪些知识呢? 今天就在这里总结一...转载 2018-11-04 18:44:09 · 750 阅读 · 0 评论