自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到「小菠萝」的博客

世界上只有一种真正的英雄主义。

  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Go开发系列】简洁明了的Go开发环境搭建

一文教你轻松的在不同平台搭建Go开发环境并顺利安装第三方库

2023-06-24 17:43:28 693

原创 面试碰壁后,我一口气总结了所有常见的排序算法!

排序算法在面试中是面试官考察候选人的基础知识点,重要性不言而喻,所以,今天就把常见的排序算法都好好温习一遍吧!排序算法的过程会以动图形式展现出来,并且给出伪代码和两种语言(Java、Python)的实现代码,重点在:快速排序、堆排序、归并排序排序算法总览图排序算法分类排序算法可以分为两大类:比较类排序,非比较类排序比较类排序:比较元素之间的相对次序进行排序,算法的时间复杂度最优是O(NlogN),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素的相对次序,最优时间复杂度是.

2021-04-16 08:44:01 703 1

原创 HelloWorld是如何在计算机里跑起来的?

Hello World 是如何跑起来的下面的 hello world 是我们学习各个语言时都会首先尝试运行的第一个程序,因为它打开了新世界的大门,但是,计算机是如何将我们编写的程序在系统上运行,并在屏幕上输出信息的呢?所以我们需要了解一个程序的整个生命周期。#include <stdio.h>int main(){ printf("hello, world\n"); return 0;}Hello World 源文件创建源文件是我们编写程序第一步需要执行的操作

2021-04-08 14:43:35 588

原创 入门Shading,详解Blinn-Phong光照模型

ShadingShading 的定义Shading 中文译为着色,可以为某个物体的,某一个区域进行上色以及对其明暗程度的操控。我们看到不同的物体可以呈现出不同的材质以及明暗程度,正是因为 Shading,使物体表面每一个像素点都能够呈现出不同的颜色。Shading 理解成为一个物体应用上某种材质。Blinn-Phong 反射光模型该模型能够简单地描述物体表面对光的吸收和反射,使物体表面呈现出不同的明暗程度,但其不是最真实的一种反射光模型。引入该模型的原因:它能够用尽量简单的数学原理尽可能解释

2021-02-23 09:12:49 1662

原创 Unity初体验(一)窗口介绍及地形基础使用技巧

Unity初体验(一)入门基础篇最近由于作业需要用到Unity相关知识,所以开始写下博客记录自己学习的内容和解决的问题,希望能够帮助有需要的人。本文主要介绍以下几个内容:Unity 游戏编辑器(如何导入 Assets 资源,窗口作用等)地形系统(如何创建地形)脚本系统(如何让你的场景动起来)Unity 窗口详解首先打开 Unity 项目后会显示一个窗口,如下图所示:这个空窗口需要了解五个类型的子窗口:Scene 窗口:它是我们在开发游戏时可以编辑物体的游戏场景窗口Project

2021-01-28 23:52:46 2431

原创 填坑之路 DirectX11(二)使用 DirectXTex 读取 DDS 文件时报错解决方案

近日学习 Direct3D 需要加载一幅纹理贴图到内存中,但由于新的 Windows SDK 不包含 d3dx11.lib,所以只能依赖第三方库进行开发。了解到 DirectXTex 可以处理该需求后,二话不说往项目中引入依赖,然而在代码正常运行的前提下,纹理贴图无法加载到内存中,于是就产生了这篇文章。本文目的:(1)学会往自己的 Direct3D 项目中添加额外的引用;(2)分析读取 DDS 文件时报错的原因并解决引用 DirectXTex 库按照下图的步骤一步一步来,不会出现任何问题:

2021-01-18 17:21:34 1742

原创 填坑之路 DirectX11(一)error LNK2019:无法解析的外部符号D3D11CreateDeviceAndSwapChain

在使用 DX11 进行练习的时候遇到了这样一个错误:在网上搜了很久都没有找到解决方案,然而在 C++ 中必须要了解的两个概念:链接库和头文件。以前我是学 Java 的,在 Java 中只有 “包” 的概念,来到了 C++ 真的感觉自己基础很不扎实,用很不准确的语言概括就是:C++ 的链接库相当于 Java 中的依赖,C++的头文件进似乎 Java 中的导包(相对于第三方包而言)。所以,想使用 DX11 的函数,除了需要:#include <d3d11.h>还需要在链接器中动态配置链

2021-01-10 11:09:45 2302 3

原创 毕设之路(三)前后端分离下 LayUI 产生的跨域问题导致无法携带 Header 请求后台解决方案

在使用 LayUI 的时候,由于采用前后端分离的模式进行开发,会遇到跨域问题。跨域问题表现在:无法将用户信息从前端传递到后端去,导致服务器无法标识客户端的身份,为采用 JWT 的方式校验用户身份,跨域问题成了必须解决的一个难题。首先,服务端必须进行跨域配置,此处必须配置两个地方:@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMapp

2021-01-03 11:41:59 2237

原创 毕设之路(二)数据表格实现搜索功能

一开始不知道如何去实现数据表格的搜索,导致后台写了很多很多条件查询的接口,后来发现并不需要那么麻烦,只需要确定好表格中可以查询的条件有哪些,把它们写在一个接口中就可以了,这样还可以实现数据表格的动态搜索,十分方便。我们在数据表格上方通常会有多个查询条件,如下图前端的代码就是下面这样:<fieldset class="table-search-fieldset"> <legend>搜索信息</legend> <div style="margin:

2021-01-02 00:27:53 399 1

原创 毕设之路(一)完美解决 LayUI 弹窗关闭后刷新数据表格

最近遇到了一个问题:LayUI弹出子窗口后,提交更新表单后后台数据已经发生改变,但是回到父页面后,数据表格却一直不更新,只有重新进入该页面才会重新发请求拿到新的数据,这个Bug花了我一整天时间来解决。网上很多的方案都是:(1)在子窗口关闭的代码中写 parent.location.reload()(2)在子窗口关闭的代码中写 window.parent.location.reload()但对于来说都没有用,我是在父页面(即数据表格所在页面)中解决的,做法很简单:(1)找到打开弹窗的代码:lay.

2021-01-01 22:44:37 1693 2

原创 一文读懂操作系统之同步问题

多道程序设计(Multi-programming)是现代操作系统的重要特点,多个进程/线程的并发和并行执行成为了当今主流的操作系统架构。在调度不同的进程/线程执行时涉及到调度算法,而多个进程/线程之间的并发和并行执行涉及到资源访问策略,如果不对资源访问加以一定程度的限制,那么资源将会出现各种意料之外的结果甚至是错误(饥饿,死锁······)。这种约束资源访问的策略称为「同步」餐前案例假设操作系统记录着当前系统中进程 PID 的最大值全局变量 nextPid。操作系统中有多个进程共享这一个变量,现在

2020-11-16 10:04:55 551

原创 「点点互动」服务器开发工程师后台面经

点点互动面经一面(1)传统自我介绍(2)我看你大学里做了项目是吧,我们来聊聊吧(撕数据库、计算机网络)数据库(3)欸,你用的是 MySQL 吧,我想知道如果我要生成用户的唯一id,有什么方法啊?(4)那我如果有一个主键值是 10,然后删除了这一行,插入下一行数据的时候,主键值是多少呀?(5)你知道 MySQL 的索引的索引数据结构吗?(6)那你知道聚簇索引和非聚簇索引吗?计算机网络(7)你项目中前后端用什么协议通信的?「 HTTP 」为什么 说 HTTP 是无状态的呢?(8)那如何防止

2020-10-28 09:04:04 642

原创 推荐你收藏的 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 306

原创 填坑之路 - 完美解决 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 2245 1

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

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

2020-08-09 10:46:06 353

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

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

2020-08-03 23:00:01 469

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

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

2020-07-16 08:27:02 1506

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

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

2020-07-12 11:02:07 61394 59

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

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

2020-06-14 09:23:14 679

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

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

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

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

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

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

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

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

2020-04-06 18:27:48 392

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

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

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

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

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

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

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

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

2020-03-01 23:36:13 353 5

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

1. 希尔排序原理介绍

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

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

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

2020-02-29 20:49:51 414

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

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

2020-02-29 09:02:28 1159

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

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

2020-02-28 21:56:45 475

原创 实现动态权限控制及用户身份认证的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 2188 1

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

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

2020-02-26 11:25:10 2555 1

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

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

2020-02-26 00:33:16 5075 4

转载 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 7606 3

原创 阿里云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 947

原创 完美解决: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 1344

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

本文将从张三购物的角度回答面试官提问的谈谈对数据库事务的四大特性及隔离级别的理解一、数据库事务的四大特性(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 378

原创 前后端分离:最基础的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 1491 2

原创 完美解决: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 849 2

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

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

2020-02-14 11:03:55 388

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

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

2020-02-14 10:44:58 1331

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

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

2019-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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