自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小菠萝的博客

一枚996的爱生活的程序猿

  • 博客(58)
  • 资源 (1)

原创 我给面试官讲解了单例模式后,他对我竖起了大拇指!
原力计划

单例模式相信大家都有所听闻,甚至也写过不少了,在面试中也是考得最多的其中一个设计模式,面试官常常会要求写出两种类型的单例模式并且解释其原理,废话不多说,我们开始学习如何很好地回答这一道面试题吧。1. 什么是单例模式面试官问什么是单例模式时,千万不要答非所问,给出单例模式有两种类型之类的回答,要围绕单例模式的定义去展开。单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有

2020-07-12 11:02:07 6543 29

原创 推荐你收藏的 Java IO 文章,2万字带你从 BIO 聊到 NIO

Java IO 体系Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 NIO 与 BIO 的区别,然后对 NIO 中重要的三个组成部分进行讲解(缓冲区、通道、选择器),最后实现一个简易的客户端与服务器通信功能。BIO NIO 和 AIO 的区别我们会以一个经典的烧开水的例子通俗地讲解它们之间的区别类型烧开水BIO一直监测着某个水壶

2020-09-07 16:01:50 61

原创 填坑之路 - 完美解决 IDEA 初始化SpringBoot无法连接https://start.spring.io

你是不是也遇到了下面这种情况,一直都解决不了?网上的解决方案有两种:1. settings -> appearance -> System settings -> HTTP Proxy -> Auto-detect proxy settings然而以失败告终!2. 使用 http://start.spring.io/很明显,博主也以失败告终了!那么,终极的解决方案就是:连手机热点!连上手机热点后,上图选 Default,然后选下一步,你就成功了

2020-08-10 22:31:00 134

原创 [ Java 基础系列 ] 学好 Java 反射,看这篇就对了!

Java基础 反射篇反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射······当然了,反射在日常开发中,我们没碰到过多少,至少我没怎么用过。但面试是造火箭现场,可爱的面试官们又怎会轻易地放过我们呢?反射是开源框架中的一个重要设计理念,在源码分析中少不了它的身影,所以,今天我会尽量用浅显易懂的语言,让你去理解下面这几点:(1)反射的思想以及它的作用​ ???? 概念篇(2)反射的基本使用及应用场景 ???

2020-08-09 10:46:06 101

原创 [ Java 基础系列 ]很详细很详细的 Java 集合框架教程!

新手引导集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet······信手拈来,抬手就拿来用,在IDE上龙飞凤舞,但是作为一名合格的优雅的程序猿,仅仅了解怎么使用API是远远不够的,如果在调用API时,知道它内部发生了什么事情,就像开了透视外挂一样,洞穿一切,这种感觉才真的爽,而且这样就不是集合提供什么功能给我们使用,而是我们选择使用它的什么功能了。集合框架总览下图堪称集合框架的上帝视角,讲到集合框架不得不看的就是这幅图,当然,你会觉得眼花

2020-08-03 23:00:01 202

原创 用多人运动给面试官解释模板方法模式,他表示我的想法很骚
原力计划

说在前面:如果想最快速度温习这一设计模式,可直接跳到第4点的总结,不过其余3点个人觉得也非常有意思的!感兴趣的童鞋可以看看┗|`O′|┛ 嗷~~模板方法模式是一个比较实用且简单的设计模式,它的关键点有:(1)父类提供好方法模板,交给子类去实现(2)父类定义好方法的执行顺序,对外暴露出一个执行方法,让子类调用执行。1. 什么是模板方法模式举一个贴近生活的例子:我们每个人的早上、下午、晚上都可以做不同的事:(1)男程序员:早上敲代码、下午摸鱼、晚上多人运动(2)女程序员:早上敲代码、

2020-07-16 08:27:02 195

原创 [ Java基础系列 ] 注解入门指南 ! 造轮子必备知识 !
原力计划

Java 注解入门指南1. 基本注解常见的基本注解 :@Override : 重写方法的注解@Deprecated : 标识过期的注解@SfeVarargs : Java 7 中引入 , 抑制堆污染的注解@SuppressWarings(“unchecked”) : 抑制编译器警告@FunctionalIntrerface : 标识函数式接口 , 常用于Lambda表达式2. 元注解元注解 : 元注解修饰注解 , 而元注解也是一种注解 (套娃警告) , 它们是一种专门用于修饰非元注

2020-06-14 09:23:14 434

原创 看完这篇,我再也不怕面试官问垃圾收集了
原力计划

看完这篇,我再也不怕面试官问垃圾收集了说在前面:本文的篇幅较长,看本文的时候最好先去上个厕所,先准备好一杯枸杞茶,慢慢品,本文将会讲解三种垃圾收集算法:标记-清除、复制、标记-整理算法,以及各种成熟度较高的垃圾收集器:Serial、Serial Old、ParNew、Parallel Scavenge、Parallel Old、CMS以及G1(Garbage First)在讨论垃圾收集算法之...

2020-04-07 23:37:58 1034 1

原创 JVM史上最全的图文剖析对象可达性分析
原力计划

虚拟机如何确定一个对象是不是垃圾引用计数算法使用一个引用计数器记录该对象还有多少个引用指针指向该对象,此算法简单高效但需要在代码中进行额外的逻辑处理以防止循环引用导致内存泄露的问题。让我们来一起看看下面的例子来理解循环引用和内存泄漏两个概念:/** * @author Zeng * @date 2020/4/6 11:41 */public class ReferenceCo...

2020-04-07 17:48:01 622 2

原创 2K+超详细文字配上详图带你解析Java虚拟机各大运行时数据区域!!
原力计划

1. JVM的五大运行时数据区域剖析JVM数据区域说在前面:JVM~JVM,一个强敌,众多Java工程师的噩梦,众多大神们的必修秘籍之一,今天我就要向大神们看齐,希望能捞到一点经验。此文仅代表作者个人观点,在文中不时引入其它参考书籍的资料并引入少部分个人观点,如有严重错误,希望能毫不犹豫地指出并狠狠地diss我!本文是以JDK1.8的运行时数据区来展开撰写的。先放一张作者自画像,可以看到在我...

2020-04-06 18:27:48 260

原创 图文并茂!一文教你掌握十大排序算法之堆排序

1. 堆排序算法原理堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。它的最好、最坏和平均时间复杂度都为O(N*logN),它是一种不稳定排序,下面了解堆这种数据结构。堆是一种特殊的完全二叉树,分为大顶堆和小顶堆;在原有的二叉树的性质上,大顶堆还需要严格保证父节点的值大于等于孩子节点的值;小顶堆则严格保证父节点的值小于等于孩子节点的值。堆只是一个逻辑结构,本质上...

2020-03-04 15:47:52 2332 5

原创 图文并茂!一文教你掌握十大排序算法之快速排序

目录1. 快速排序原理介绍2. 快速排序算法步骤3. 代码实现1. 快速排序原理介绍快速排序是一种不稳定的排序算法,它的时间复杂度是O(N*logN),快速排序的基本思想是:每次从待排序的序列中选出一个基准数/枢轴(英文称为pivot),然后比它小的数都放到它的左边,比它大的数都放到它的右边,然后再对pivot的左边和右边两个序列进行快速排序,当排序的序列中只有一个数时不需要进...

2020-03-02 19:57:01 399 6

原创 图文并茂!一文教你掌握十大排序算法之归并排序

1. 归并排序原理介绍归并排序是建立在归并操作上的一种排序算法,它是一种稳定排序算法,它的时间复杂度是O(nlogn)。归并排序算法的核心在于分治(divide-and-conquer),分治法的思想:“分”是将一个问题分解成很多不同的小问题进行递归求解,“治”是将各个小问题的解重新凑合在一起组成最终的答案。对序列[3, 5, 2, 1, 4, 6, 8, 7]进行归并排序,首先是“分...

2020-03-01 23:36:13 175 4

原创 图文并茂!一文教你掌握十大排序算法之希尔排序(增量排序)

1. 希尔排序原理介绍

2020-03-01 10:32:30 167 9

原创 图文并茂!一文教你掌握十大排序算法之直接插入排序算法

1. 直接插入排序算法介绍直接插入排序是一种非常好理解的排序算法,它的原理是将数组分为两个部分,一部分是已排序的,另外一部分是未排序的,每次排序都会从未排序的那一部分取出一个数,从有序序列的最后一个元素开始往前扫描,直至找到插入的位置。以升序为例,目前有一个数组:[3, 2, 1, 5, 4, 6]进行直接插入排序,第一个元素无需与其它元素比较,是有序序列的第一个元素所以我们从第一个元...

2020-02-29 20:49:51 114

原创 图文并茂!一文教你掌握十大排序算法之直接选择排序

目录1. 选择排序原理介绍2. 流程图2. 代码实现(Java)1. 选择排序原理介绍以升序为例,选择排序每一轮都会从未排序的数组元素中选出一个最小值放到已排序数组的末尾处,直到整个数组有序,选择排序是一种非常简单明了的排序算法,无论在任何情况下其时间复杂度都为O(n^2),所以用到这个排序算法时,数据规模应尽量小。2. 流程图2. 代码实现(Java)/**...

2020-02-29 09:02:28 182

原创 图文并茂!一文教你掌握十大排序算法之冒泡排序及其优化思路

目录1.冒泡排序介绍2. O(n^2)的实现方法3. 优化思路1:提前到达有序4. 优化思路2:获取交换的最后一个元素下标5. 总结1.冒泡排序介绍冒泡排序是一种比较简单的排序方法,以数组升序的情况为例,它的原理是从第一个元素开始,每个元素都与其相邻的元素做比较,如果前一个元素比后一个元素大,则交换两个元素的位置,每一轮排序都确定一个最大值。它是一种稳定的排序方法,因为...

2020-02-28 21:56:45 318

原创 实现动态权限控制及用户身份认证的SpringBoot+SpringSecurity+Jwt整合项目

目录1. 前提概要2. 数据库表结构3. 项目结构4. 编写实体类4. 核心配置类SecurityConfig5. 登录认证6. 验证token过滤器7. 获取请求路径所需角色过滤器8. 用户权限验证9. UserService10. HelloController9. 流程解析10. 接口测试10.1 登录测试10.2 访问有权限的接口...

2020-02-27 09:06:12 833 1

原创 SpringBoot使用万能的统一异常处理方法返回异常信息

前后端分离开发中,后端服务器有很多异常,而在业务层如果直接抛出异常信息对前端的信息展示非常不友好,所以此文介绍一种目前前后端分离开发中常用的统一异常处理方法。1. 自定义错误状态码接口(CustomizeErrorCode)/** * @author Jack * @date 2019-07-27-18:08 */public interface CustomizeErrorCo...

2020-02-26 11:25:10 776

原创 完美解决:Docker部署SpringBoot项目后图片无法访问和上传解决办法!

以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件。但是最近入坑Docker,将SpringBoot项目加载成镜像后部署在Docker中运行,但是出现了一个问题,就是Docker无法识别宿主机的文件路径,所以部署在Docker容器里的web项目也就无法访问原来已经上传好的图片和新上传...

2020-02-26 00:33:16 1580

转载 Docker暴露2375端口导致服务器被攻击解决方法!

相信了解过docker remote API的同学对2375端口都不陌生了,2375是docker远程操控的默认端口,通过这个端口可以直接对远程的docker daemon进行操作。当$HOST主机以docker daemon -H=0.0.0.0:2375方式启动daemon时,可以在外部机器对$HOST的docker daemon进行直接操作:docker -H tcp://$HOS...

2020-02-25 20:34:47 1944

原创 阿里云CentOS安装Docker并使用IDEA远程操作Docker部署SpringBoot项目完美运行

有一次阿里云被蠕虫病毒入侵后一直清不掉,心一横把镜像释放了,之后哭着又把MySQL、JDK等等环境重装,花了整整半天,又会遇到恶心的依赖问题;再加上最近做项目遇到频繁部署的情况,每次用XSHELL+FTP就觉得速度太慢了,所以开始入坑docker。1. CentOS7安装docker菜鸟教程傻瓜式操作:https://www.runoob.com/docker/centos-docker-...

2020-02-24 00:40:52 342

原创 完美解决:Docker拉取镜像过慢可设置国内安装源

Docker下载镜像慢得让人发飙,执行下面的代码就可以切换成国内的安装源,然后docker pull 的速度就会起飞了。sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://jxus37ad.mirror.aliyuncs.com"]...

2020-02-24 00:03:59 882

原创 优雅地回答数据库面试题:谈谈你对数据库事务的四大特性及事务的隔离级别的理解

本文将从张三购物的角度回答面试官提问的谈谈对数据库事务的四大特性及隔离级别的理解一、数据库事务的四大特性(ACID)1. 原子性(Atomicity)2. 一致性(Consistency)3. 隔离性(Isolation)4. 持久性(Durability)二、数据库的四个隔离级别1. 未提交读[脏读](READ UNCOMMITED)2. 提交读[不可重复读](READ COMMITED)3. 可重复读(REPEATABLE READ)4. 串行化(SERIALIZABLE)

2020-02-21 20:10:53 227

原创 前后端分离:最基础的SpringBoot+JWT实现登陆认证(附完整项目GitHub地址)

JWT官网地址:https://jwt.io/1. SpringBoot-JWT Demo结构2. 数据库准备只需要一张user表,用于保存用户的用户名和密码。SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for user...

2020-02-18 10:47:43 403 1

原创 完美解决:IDEA连接MySQL8 Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone'

完美在IDEA连接MySQL8出现时区错误的两种解决方案1. 在MySQL安装目录下打开cmd连接mySQL,按下图操作输入下面这条语句set global time_zone='+8:00'; 然后再次Test Connection就不会报错了 ...

2020-02-17 10:07:11 607 2

原创 《操作系统设计与实现》(第三版)第五章 文件系统 重要概念汇总

第五章 文件系统1. 文件 一组具有文件名的一组相关信息的集合2. 文件系统 对文件进行操纵和管理的软件集合3. 目录文件管理主要是通过文件目录实现的。文件目录也是一种数据结构,用于标识系统中的文件及其物理地址,供检索时使用。目录实现的基本方法有线性表和Hash表功能:①实现“按名存取”②提高对目录的检索速度③文件共享④允许文件重名...

2020-02-14 11:03:55 77

原创 《操作系统设计与实现》(第三版)第四章 存储管理 重要概念汇总

1. 存储器层次结构最顶层:CPU内部的一些寄存器第二层:高速缓存(cache)第三层:主存储器(内存)第四层:磁盘(非易失的 nonvolatile)操作系统作为一个系统软件,其任务就是协调好这些不同类型的存储器的使用2. 存储管理器(memory manager)一、在操作系统中,负责管理这个存储器层次结构的那一部分程序,称为存储器管理器。在大多数操作系统中...

2020-02-14 10:44:58 248

原创 《操作系统设计与实现》(第三版)第三章 输入/输出系统 重要概念汇总

1. I/O设备1.1分类块设备(block device)和字符设备(character device)①块设备:用于存储信息,信息存取的基本单位是数据块,如磁盘和磁带等。这类设备可寻址②字符设备发送/接收的是字符流,而不考虑任何块结构。字符设备无法编址,也不存在任何寻址操作,打印机、网络接口、鼠标以及大多数与磁盘不同的设备均可被视为字符设备——这种分类不完美,有些设...

2020-02-13 23:54:47 103

原创 《操作系统设计与实现》(第三版)第二章 进程 重要概念汇总

1. 进程1.1概念进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程间可以并发执行和交换信息。一个进程在运行时需要一定的资源(如CPU、存储空间及I/O设备等)1.2进程的创建进程的创建有四个主要原因:①系统初始化②正在运行的一个进程执行了创建进程的系统调用(在MINIX3系统中,只有一个...

2020-02-13 21:28:04 183

原创 《操作系统设计与实现》(第三版)第一章 引言 重要概念汇总

1.计算机软件大致分为两类:系统软件和应用软件。系统软件负责管理计算机本身的运作,而应用软件则负责完成用户所需要的各种功能。最基本的系统软件是操作系统(Operating System OS) 2.什么是操作系统?理解并举例说明操作系统是功能扩展机、是资源管理器(考点...

2020-02-13 19:52:10 143

原创 小白学习动态规划:完全背包(经典例题)

小白学习动态规划:完全背包参考博客:https://blog.csdn.net/qq_38984851/article/details/81133840https://blog.csdn.net/na_beginning/article/details/62884939完全背包与零一背包类似,不同的是每种物品有无限件,意味着选完一件物品放进背包后,有可能会继续选择同一件物品放入背包。...

2020-02-13 13:01:08 174

原创 小白学习动态规划:0-1背包(经典例题)

前言背包问题只是动态规划问题下的一个分类,求解0-1背包问题的思路本质上与求解动态规划的一般思路是一致的,我们经常遇到新的题目做不出来,并不是因为没有掌握动态规划的思想,而有可能是因为没有遇到这类具有显著特征的题目,无法将一般动态规划的解题思路应用在实战中。动态规划的原理:① 最优子结构性质:问题的最优解可以转化为求子问题的最优解,也就是说问题的最优解可以从子问题的最优解中得出。② 子问题...

2020-02-10 22:37:36 218

原创 小白学习动态规划:优化篇

目录优化类型一:一维降变量优化类型二:二维降一维总结上一篇讲述了动态规划入门级题目,代码都是没有优化的,如果没有看过的读者也没关系,在下面会贴出这两道题目的所有代码,包括没有优化的和优化之后的。感兴趣的读者可以先去看一下上一篇的题目,都是EASY级别的题目。 小白学习动态规划:入门篇今天主要是对上一篇博客的两道题目进行优化,对于绝大多数利用动态规划的算法题作优化时,个人认为最重要的优化方法就...

2020-02-06 09:54:33 148

原创 小白学习动态规划:入门篇

入门动态规划个人总结一、动态规划概念1. 什么是动态规划​ 动态规划应用于拥有以下特点的问题:一般需要使用动态规划时,该问题的解可以由更小的解得出,例如:当求单位为n的最优解时,可以转换为求第n-1个单位的最优解······也就是说问题的解可以根据子问题的解求出。2. 动态规划问题的特点① 问题具有最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,那么该问题具有最优子结...

2020-02-02 22:25:24 157

原创 玩转谷歌浏览器:修改Chrome浏览器的默认引擎

谷歌浏览器:修改Chrome浏览器的默认引擎Google Chrome是一个非常不错的浏览器,但是由于它的默认搜索引擎是Google,导致我们需要手动输入类似于百度、360等其它搜索引擎才可以进行正常地搜索,所以修改掉Chrome的默认引擎可以解决这个烦恼。按下图操作如下4步,即可在导航栏里直接输入搜索内容,使用设定好的搜索引擎搜索你想要看到的 (邪魅一笑)搜索引擎的标志会出现在头部E...

2020-02-01 21:08:35 574

原创 JavaScript:根据动态key获取value值解决方案

使用场景前提:现在需要获取一个教学目标下的所有考核类型及其成绩,但是考核类型是动态变化的,有可能是考试、作业、论文等等,那么要怎么获取考核方式和对应的成绩?假设下图中的type中的"考试"、"实验"和"作业"是动态变化的Key,那么如何去获取它们的值呢?//type是一个是一个键值对对象var type = overallAchievement.type;//获取这个对象所有的k...

2019-12-26 20:10:19 838

原创 Ubuntu16.04解决WPS出现缺失字体(含缺失字体包)

1. 去官网下载wps安装包https://www.wps.cn/product/wpslinux2. 安装WPS,使用命令行或者双击进行安装都可以3. 打开WPS后会弹出缺失字体警告框解决办法:1. 将缺失字体压缩包下载到本地并解压,最好一直保存着这些字体文件,谁知道哪天我们又会重装系统呢哈哈哈哈哈~链接如下:链接:https://pan.baidu.com/s/1...

2019-12-18 09:09:20 455

原创 《计算机英语》第四版 Unit1-Unit8名词翻译答案

《计算机英语》第四版Unit1-Unit8名词翻译Unit1 Computer and Computer Science英文中文artificial intelligence人工智能paper-tape reader纸质磁带阅读器optical computer光学计算机neural network神经网络instruction set指令...

2019-12-17 11:05:34 808

原创 LeetCode71: 简化路径

71. 简化路径1. 问题重述将Unix风格的文件路径简化及合法化 , 防止用户恶意输入路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。示例 1:输入:"/home/"输出:"/home"解释:注意,最后一个目录名后面没有斜杠。示例 2:...

2019-07-18 20:08:06 82

小型Web项目《家乐福网上超市》源码

后端使用JSP+Servlet+Tomcat,前端使用HTML+CSS+JS+JQuery实现的一个小型Web家乐福网上超市,可用于二次开发或课程作业答辩,易扩展和修改,包含图片验证码验证、注册登陆、加入购物车、校验登陆过滤器防止未登陆的用户访问购物车页面等等,使用IDEA直接打开该项目,配置Tomcat即可使用,环境为JDK1.8+Tomcat8

2019-12-22

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除