Java核心知识点整理
文章平均质量分 80
Java核心知识点整理,知识涵盖面向对象,基本数据类型,java环境配置,封装,继承,多态,抽象类和接口,集合,多线程,IO流,异常处理,正则表达式等等,订阅专栏后进Java全栈交流群领取全栈教程视频
海拥✘
CSDN 内容合伙人,全栈领域优质创作者,华为云享专家,阿里云专家博主,InfoQ、蓝桥云课签约作者,HDZ核心组成员,全网粉丝20万+。一枚爱好计算机科学,乐于分享技术与快乐的博主。
展开
-
关于 Java 的简介(评论抽奖送书)
💂 个人网站:【海拥】【摸鱼小游戏】【开发文档导航】🤟 风趣幽默的人工智能学习网站:👉人工智能💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】💬 免费且实用的Java刷题(面经大全)网站:👉点击跳转到网站直接跳到末尾 参与评论送书JAVA 由 Sun Microsystems Inc 的 James Gosling 于1995 年开发,后来被 Oracle Corporation 收购。它是一种简单的编程语言。Java 使编写、编译和调试编程变得容易。它有助于创建可重用的代码和模..原创 2022-05-26 09:32:19 · 3597 阅读 · 95 评论 -
基于SpringMVC的文件上传如何实现
基于SpringMVC的文件上传在SpringBoot项目中,上传的文件默认不允许超过1M(也可能是其它值,根据SpringBoot的版本不同可能有差异),如果超出,将导致FileSizeLimitExceededException!如果需要自定义该限制值,需要在配置类中添加:@Beanpublic MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartCo原创 2020-08-01 16:52:50 · 13113 阅读 · 0 评论 -
项目之显示问题和回答问题(12)
56. 老师主页显示问题列表-持久层(a) 规划需要执行的SQL语句老师主页显示的问题列表应该显示出老师自己发表的问题,和学生指定该老师回答的问题。这样的列表数据可以使用此前的QuestionVO来表示每一个问题的数据,列表则使用List<QuestionVO>来表示。需要执行的SQL语句大致是:select question.*from questionleft join user_questionon question.id=user_question.question_id原创 2020-08-02 00:25:22 · 12735 阅读 · 0 评论 -
项目之显示回答和显示评论(13)
67. 显示回答列表-持久层(a) 规划SQL语句显示某问题的回答列表,需要执行的SQL语句大致是:select * from answer where question_id=16 order by status_of_accept desc, created_time desc以上查询只是针对一张表,并且是查询所有字段,则使用实体类就可以封装以上查询到的数据!但是,本次查询应该另创建VO类用于封装查询结果,因为后续显示回答时,每个“回答”还可以存在若干个“评论”,则在“回答”的数据中,应该存在原创 2020-08-02 00:34:05 · 8760 阅读 · 0 评论 -
项目之提问页面-显示问题、发表问题(8)
30. 提问页面-显示问题标签的下拉列表关于js代码:Vue.component('v-select', VueSelect.VueSelect);let createQuestionApp = new Vue({ el: '#createQuestionApp', data: { tags: [ {label: 'MyBatis Plus', value: 1}, {label: 'Spring Security', v原创 2020-07-29 22:43:13 · 4730 阅读 · 0 评论 -
在SpringMVC框架中统一处理异常及请求参数验证(4)
8. 在SpringMVC框架中统一处理异常在SpringMVC框架中提供了统一处理异常的机制(当然,在SpringBoot框架中也可以直接使用),使得每种异常只需要被处理1次即可,即使某种异常在多种请求中都会出现,也不需要反复处理!其核心是开发人员调用了可能抛出异常的方法时,在控制器中,直接将异常再次抛出,则SpringMVC在调用控制器的方法时,就会捕获到对应的异常对象,并且,如果开发人员定义了统一处理异常的方法,则SpringMVC框架就会自动调用该方法来处理异常!关于统一处理异常的方法:默原创 2020-07-25 00:53:07 · 12680 阅读 · 0 评论 -
项目之通过Spring Security获取当前登录的用户的信息(6)
20. 使用控制器转发注册页面将用户注册的register.html文件移动到templates文件夹下。在SystemController中添加:@GetMapping("/register.html")public String register() { return "register";}在SecurityConfig中,将注册相关的"/register.html"和"/portal/user/student/register"这2个URL添加到白名单中。21. 处理用户的权原创 2020-07-26 23:03:24 · 13860 阅读 · 0 评论 -
项目之前后端分离及导航栏标签列表(7)
24. 前后端分离前端:客户端,例如网页及相关组件都是属于前端开发领域;后端:服务器端;在传统的开发模式下,当服务器端处理了某种请求后,就会执行转发或重定向操作,使得客户端的浏览器访问另一个页面,整个开发过程,或需要开发的组件都是由服务器端开发人员完成的(即使使用到了前端的网页技术,甚至有专门的人员开发网页,最终也需要整合到服务器端的项目中,从项目的角度来看,并没有分离)。如需希望实现前后端分离,首先,就要使得服务器端不会过度甚至根本就不依赖网页,当处理了客户端的请求后,直接将相关数据响应到客户端去原创 2020-07-26 23:10:25 · 8254 阅读 · 0 评论 -
项目前期准备--了解项目的数据处理流程及注册功能(3)
4. z在项目中,每次处理用户提交的请求时,用户的请求数据的走向应该是:用户界面 --> 控制器层 --> 业务层 --> 持久层,以上各层的分工如下:用户界面:负责显示数据、提供用户操作入口,并提交请求,获取服务器响应的结果;控制器层:负责接收请求,并发出响应结果;业务层:负责业务流程和业务逻辑,以保障数据的安全性(数据必须按照业务所设定的规则而产生或发生变化)和完整性;持久层:负责数据访问,即增删改查。在开发项目时,开发顺序应该是:持久层 --> 业务层 --&g原创 2020-07-23 21:03:24 · 4684 阅读 · 0 评论 -
项目之热点问题和问答列表(9)
36. 热点问题-持久层先创建封装数据的VO类:@Datapublic class QuestionListItemVO { private Integer id; private String title; private Integer status; private Integer hits;}在持久层接口QuestionMapper中添加抽象方法:@Repositorypublic interface QuestionMapper extends原创 2020-08-01 16:43:35 · 8671 阅读 · 0 评论 -
项目之用户登录和访问权限的控制(5)
13. 用户登录-准备工作在开发注册功能时,在SecurityConfig类中配置以如下代码:@Overrideprotected void configure(HttpSecurity http) throws Exception { http.csrf().disable();}以上代码的作用是关闭跨域攻击,如果没有以上代码,则执行异步请求时就会出错!一旦添加了以上代码,却没有添加更多详细配置之前,Spring Security的登录拦截将不生效!为了便于开发登录功能,先暂时将以上原创 2020-07-26 22:59:23 · 10166 阅读 · 0 评论 -
项目之关于Summernote的图片处理和基于SpringMVC的文件上传(10)
45. 我的问答列表-前端页面在index.html页面,先找到整个列表区域的父级,为其添加id,以便于创建Vue对象:<!-- 约第185行 --><div class="container-fluid" id="questionsApp">找到每个问题的显示区域,为这个区域的根级添加v-for以循环显示:<!-- 约第193行 --><div v-for="question in questions" class="media bg-white m原创 2020-08-01 16:45:58 · 13042 阅读 · 0 评论 -
项目之删除评论、修改评论及架构--Kafka简介(14)
78. 删除评论-持久层(a)规划需要执行的SQL语句需要执行的SQL语句大致是:delete from comment where id=?通常,在处理增、删、改之前,还存在相关的检查,特别是删、改的操作之前,都应该检查被操作的数据是否存在、是否具有权限对该数据进行操作,及可能存在的其它业务规则。关于数据是否存在,可以通过查询来得到答案:select * from comment where id=?关于操作数据的权限,可以暂将业务规则设计为“评论的发表者,或任何老师,都可以删除评论”。原创 2020-08-02 01:07:26 · 13456 阅读 · 0 评论 -
项目之创建静态资源和设置子模块项目、开发简易上传功能(11)
48. 在父项目中管理子模块项目使用的依赖在一个项目中,如果某些依赖只是部分子模块项目需要使用的,应该将这些依赖配置在<dependencyManagement>节点中,凡配置在这个节点中的依赖,任何子模块项目中都不会直接拥有,如果某个子模块项目需要使用这些依赖,依然需要使用<dependency>节点来添加!与在子模块项目中直接添加<denpendency>(父级的<dependencyManagement>没有配置某个依赖而子模块项目中直接添加)的区别在原创 2020-08-01 16:51:55 · 8767 阅读 · 0 评论 -
Servlet从了解到放弃(08)
配置欢迎页面在web.xml中添加以下代码, 访问工程根路径的时候会自动找到该列表内的请求路径 <welcome-file-list> <welcome-file>HomeServlet</welcome-file> </welcome-file-list>同步请求和异步请求同步请求: 返回的内容包括页面和数据, 整个页面内容刷新使用通过浏览器地址栏, 超链接,form表单发出请求异步请求: 返回的内容只有数据,局部原创 2020-07-01 11:05:30 · 4579 阅读 · 0 评论 -
学习创建Maven,SpringBoot聚合项目及使用SLF4j打印日志(1)
1. 项目前期准备–学习创建Maven聚合项目1.1. 创建聚合项目先创建一个普通的Maven项目:然后,填写项目名称与组织ID:当项目创建成功后,默认会打开pom.xml,在该文件中添加配置:<packaging>pom</packaging>例如:完成后,该项目作为父级项目,可以暂时不处理了,接下来,对父级项目的名称点鼠标右键,再创建子级项目,创建的菜单命令是New > Module:创建Module(模块)项目时,依然选择Maven项目,在详细配原创 2020-07-19 00:01:53 · 6571 阅读 · 0 评论 -
关于检查客户端提交的请求参数
关于检查客户端提交的请求参数首先,客户端的提交请求参数都应该有相应的数据规则,并且,需要通过正则表达式或其它判断方式,以保证最终被处理的数据都是符合数据规则的,例如用户名的组成元素、密码的长度、电子邮箱的格式等。在客户端中,在提交请求之前,就应该对所有需要被提交的数据进行检查,避免将格式有误的数据提交到服务器。在服务器端中,是通过控制器接收请求参数的,在控制器接收到请求参数时,也应该第一时间就对这些参数进行检查,如果存在格式有误的数据,就应该直接响应“错误”,不予处理!在服务器端的开发人员眼里原创 2020-07-07 18:37:07 · 5218 阅读 · 0 评论 -
基于Spring JDBC的事务处理
基于Spring JDBC的事务处理事务(Transaction):在数据库中,可以保持一系列的数据操作要么全部执行成功,要么全部执行失败的机制!假设存在以下信息:账户余额阿三1000王五8000如果存在任务“王五向阿三转账5000元”,需要执行的SQL语句大致是:update 账户信息表 set 余额=余额-5000 where 账户='王五';update 账户信息表 set 余额=余额+5000 where 账户='阿三';如果出现某种意外,导致以上第原创 2020-07-07 18:45:33 · 4595 阅读 · 0 评论 -
关于UTF-8编码相关知识的简单介绍
计算机能够直接识别并处理的只有二进制数据。在计算机中,二进制的每个0或者每个1都占1个二进制位(bit),由于1个二进制位只能表示0或1中的某1个,也就只能表示2种可能性,不足以满足常规使用,所以,就设计了**字节(byte)**这种单位,每1个字节占8个二进制位,同时,字节是计算机中最基础的存储单位。二进制是计算机必须使用的语言,而人类生活却很难适应或使用二进制,所以,早期就制定ASCII码表,在这个表中,就记录了字母、数字、符号等与二进制数据的对应关系,例如字母a对应的就是110 0001,也就说,原创 2020-07-03 17:34:57 · 5579 阅读 · 1 评论 -
关于如何在idea中设置文档注释模板
操作:File -> Settings - > Editor -> File and Code Templates -> Files -> Class在右边的文件框里编辑需要注释的模板,应用保存之后,当我们创建类的时候就会自动生成注释。如果要设置接口的,可以选择Interface文件。文档注释注释模板:1、${PROJECT_NAME}:自动获取我们创建的项目名.2、${NAME}:设置类名,与下面的$ {NAME}一样才能获取到创建的类名3、TODO:代办事项的标记原创 2020-07-15 15:35:29 · 6996 阅读 · 0 评论 -
Java 中的关键字有哪些及其分类
Java 关键字下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。类别关键字说明访问控制private私有的protected受保护的public公共的default 默认类、方法和变量修饰符abstract声明抽象class类extends扩充,继承final最终值,不可改变的implements实现(接口)interface接口native本地,原生方法(非 Java原创 2020-07-15 14:39:26 · 8251 阅读 · 0 评论 -
关于整合基于注解的SSM框架小结
整合基于注解的SSM框架先创建一个SpringMVC项目:创建Maven项目,在创建过程中,Packaging必须选择war,创建好项目后,项目会因为缺少web.xml文件报错,则先在pom.xml中添加配置信息:<properties> <failOnMissingWebXml>false</failOnMissingWebXml> <maven.compiler.source>1.8</maven.compiler.source>原创 2020-07-14 20:29:15 · 5192 阅读 · 0 评论 -
通过SpringMVC框架响应JSON数据
1. 通过SpringMVC框架响应JSON数据在SpringMVC框架(含SpringBoot框架)中,当处理请求的方法之前添加了@ResponseBody后,或在控制器类之前使用的是@RestController,处理请求的方法的返回值将作为响应到客户端的数据。当服务器向客户端响应数据时,SpringMVC框架会使用“转换器”(Converter)将方法的返回值进行转换,及处理响应时的响应头(Response Headers)等内容,针对返回值类型不同,SpringMVC框架还会自动使用不同的转换器原创 2020-07-17 18:00:44 · 4800 阅读 · 0 评论 -
关于MySQL中的char与varchar的区别
在MySQL中,varchar和char都是可以存储字符串的类型,并且,在设计数据表时,必须明确的指定长度!varchar是变长的,假设某字段设计为varchar(10),当存入的是"java"字符串时,实际存入4个字符,则实际占用也是4个字符的空间大小;char是定长的,假设某字段设计为char(10),当存入的是"java"字符串时,将要存入的4个字符比设计的varchar(10)中指定的数量要少,则会补充6个空格,以达到10个字符,则实际占用也是10个字符的空间大小;所以,如果要存入的字符串的长原创 2020-07-03 17:32:27 · 3990 阅读 · 0 评论 -
Intellij IDEA快捷使用
Intellij IDEA快捷使用1. 快捷键1.1. 按键说明按键说明+需要同时按下加号左右两侧的键,按下逗号左侧的键后,松开,然后按下逗号右侧的键Ctrl控制键,键盘上标记了Ctrl的键,在Mac键盘上标记为controlShift上档键,键盘上标记了Shift的键Alt切换键,键盘上标记了Alt的键,在Mac键盘上与Option是同一个键Command命令键,Mac键盘独有,标记了Command的键Enter回车键,键盘上标记原创 2020-07-02 17:06:15 · 4681 阅读 · 0 评论 -
浅谈RESTful API设计风格
关于RESTful API相关资料:RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。重点:RESTful是一种URL的设计风格。解读:RESTful并没有严格的语法约定,不存在“必须满足什么条件才算是RESTful”,也并不是“不满足原创 2020-07-07 18:47:42 · 5183 阅读 · 0 评论 -
在SpringMVC中统一处理异常
在SpringMVC中,允许开发人员自定义方法,用于统一处理异常,以至于某些异常可能在多种处理请求的过程中都可能出现,但是,只需要编写1次处理的代码即可!该机制的核心在于:可能出现异常的、处理请求的方法,并不通过代码显式的处理异常!则等同于这些处理请求的方法会将异常抛出,而SpringMVC框架在调用这些处理请求的方法时,会捕获这些异常,此时,如果开发人员自定义了处理异常的方法,则SpringMVC会在捕获到异常之后,调用处理异常的方法。关于统一处理异常的方法,其声明原则:访问权限:应该使用pub原创 2020-07-03 17:44:07 · 8400 阅读 · 0 评论 -
Java中抽象类与接口的区别是什么?
抽象类与接口的区别1. 共同点都可以包含抽象方法;2. 区别抽象类是一种“类”,是使用class作为关键字来声明的;而接口是另一种数据,是使用interface作为关键字来声明的;抽象类中可以有各种权限不同、修饰符不同的属性,也可以包含普通方法、抽象方法,或者完全没有普通方法,或者完全没有抽象方法;而接口中的所有成员都是public的,所有属性都是static、final的,在JDK 1.8之前,所有的方法都是抽象的;普通的类与抽象类的关系是“继承”的关系,当普通的类继承了抽象类后,就有义务重原创 2020-07-06 14:06:02 · 8361 阅读 · 0 评论 -
密码加密之消息摘要算法
如果直接将用户填写的明文密码(原始密码)存储到数据库中,当出现数据库泄密,用户的账号安全就无法保障!所以,需要将明文密码进行加密,在数据库中,实际存储的会是密文(加密后的结果),即使数据库泄密,被看到也只是密文,如果无法通过密文还原出原文(原始密码),则不会影响账号安全。假设,某用户的原始密码是1234,假设使用非常简单的规则:“将每位数字增加1”,就可以得到2345,最终,会将2345存储到数据库中,即使出现数据库泄密,别人能看到的也只是2345,如果这个规则设计得更加复杂,无法将2345这种密文还原成原创 2020-07-03 17:39:22 · 5315 阅读 · 0 评论 -
设计模式之简单的单例模式如何实现
单例模式的特点:在同一时期,某个类的对象一定最多只有1个!也许会尝试多次的获取对象,但是,获取到的一定是同一个对象!假设项目中有King类:public class King {}很显然,目前它并不是单例的,因为,可以:King k1 = new King();King k2 = new King();King k3 = new King();以上代码就创建了3个King类型的对象!如果要实现单例,首先,就必须限制构造方法的访问,例如:public class King { p原创 2020-07-06 14:00:49 · 5176 阅读 · 0 评论 -
项目前期准备--MyBaitsPlus、MyBatisPlusGenerator和Spring Security(2)
1. 项目前期准备–MyBaitsPlusMyBatisPlus是基于MyBatis的基础之上的,它可以自动生成常规的数据访问,使得开发人员在使用时不需要自行编写那些每张表都会有常规数据访问功能,例如插入数据、根据id删除数据等。先创建数据库straw:CREATE DATABASE straw;并使用该数据库:USE straw;然后创建用户数据表,便于接下来访问数据:CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT原创 2020-07-23 11:23:00 · 8602 阅读 · 1 评论 -
50个最常用的Unix/Linux命令
50个最常用的Unix/Linux命令 - GongYong50个最常用的Unix/Linux命令这篇文章翻译自http://www.thegeekstuff.com/2010/11/50-linux-commands/这些都是一些很常用的命令,这篇文章中每个命令都有一些简单的示例说明它的用法,对于想学习Unix/Linux的人,这些命令基本上都是需要掌握的:targrepfindsshsedawkvimdiffsortexportargsls..翻译 2020-06-02 23:29:46 · 8488 阅读 · 0 评论 -
数据库(MySQL)相关例题27道及答案解析
一、单选题 (共计 12 题)1、(单选题)SQL语句分为DDL、DML、DQL、TCL、DCL,以下属于DML的是_______,是否_______事务。A.drop 不支持B.insert 支持C.alter 支持D.select 不支持【正确答案】B【答案解析】此题目考查的是 对SQL语句的分类的了解DDL 数据定义语言: create drop alter truncate 不支持事务DML 数据操作语言: insertupdate delete 支持事务DQL 数据查询原创 2020-06-25 23:30:04 · 6918 阅读 · 0 评论 -
JSON格式和Ajax简介
1. 服务器的响应方式在传统模式下,服务器端向客户端的主要响应方式是:转发,或重定向。使用这种模式时,通常,服务器端会向客户端响应某个页面,而这种模式是不利于当前的互联网架构的!因为现在客户端的种类越来越多,例如:电脑上的网页客户端、Android手机APP、iOS手机APP、Android平板电脑、iOS平板电脑、其它智能设备等,不同的设备存在明显的屏幕尺寸差异,如果把同一个网页响应到不同的客户端,是极为不合适的!所以,传统的响应模式只能适用于一些简单的、没有多种客户端的应用场景,例如:不知名的小型网站原创 2020-06-02 22:21:12 · 6336 阅读 · 0 评论 -
MyBatis基础面试题及答案
1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybatis 使用 RowBounds原创 2020-06-04 22:22:33 · 31262 阅读 · 0 评论 -
Servlet从了解到放弃(01)
###Servlet####什么是服务器服务器就是一台高性能电脑电脑上安装了提供服务的软件就称为 xxx服务器举例:邮件服务器: 就是在电脑上安装了提供邮件收发服务的软件ftp服务器: 就是在电脑上安装了提供文件上传下载服务的软件数据库服务器: 在电脑上安装了提供数据增删改查服务的软件(MySQL/Oracle…)web服务器: 就是在电脑上安装了web服务软件(Webserver)###Web服务软件做了那些事儿负责建立底层的网络连接负责将客户端请求的文件返回给客户端w原创 2020-06-24 17:17:23 · 6456 阅读 · 0 评论 -
Java第一次月考50题及解析
1、【单选题】(单选题)在Java中,用()关键字修饰的方法可以直接通过类名来调用。A.staticB.finalC.publicD.void【正确答案】A【答案解析】此题目考查的是Java中的static关键字。在Java语言中,由static关键字修饰的方法为静态方法,可以通过类名来直接调用。所以本题正确的选项为A。2、【单选题】(单选题)下列Java代码运行的结果是()。public class Test { public static void main(String[] a原创 2020-06-30 02:25:58 · 9592 阅读 · 0 评论 -
Servlet从了解到放弃(07)
浏览最多步骤:在home.html页面中使用列表组+多媒体对象实现目标样式在HomeServlet中调用ProductDao里面的findViewList方法获取装着Product对象的viewList集合,并把这个集合放进Context里面实现dao中的findViewList方法 只有SQL语句 和 findAll方法不一样在home.html页面中遍历放到容器中的viewList最受欢迎步骤:在home.html页面中使用列表组+多媒体对象实现目标样式在HomeServlet中调用原创 2020-06-29 14:26:45 · 21056 阅读 · 0 评论 -
Servlet从了解到放弃(05)
VRD項目准备工作:创建工程 名字VRD 把jar改成war改错 右键最长的点击最长的 , 替换工程中的web.xml 从苍老师文档服务器下载Servlet3.0 里面的web.xml 替换掉工程中自动生成的web.xml关联Tomcat 工程上右键 Properties 找到TargetedRuntimes 打钩把之前工程中用到的jar包坐标复制到新工程 检查奶瓶是否出现配置文件jdbc.properties 复制到新工程创建四个包 复制两个工原创 2020-06-24 17:50:07 · 8527 阅读 · 0 评论 -
Servlet从了解到放弃(04)
博客练习创建表:create database blog character set utf8;use blog;创建用户表create table user(id int primary key auto_increment,username varchar(20),password varchar(20))charset=utf8;创建博客表create table blogs(id int primary key auto_increment,title varchar(100),c原创 2020-06-24 17:32:27 · 5122 阅读 · 0 评论