自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

PigeonEssence的博客

萌新成长之路

  • 博客(101)
  • 资源 (8)
  • 收藏
  • 关注

原创 《设计模式入门》 4.单例模式

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。单例模式主要有两种类型: 懒汉式:在真正需要使用对象时才去创建该单例类对象 饿汉式:在类加载时已经创建好该单例对象,等待被程序使用 除此之外还有登记式等形式针对特定的业务场景,但没有前两种常用。====================================

2022-02-24 16:12:58 463

原创 记录一个JAVA8,Stream的应用

今天看到一道题:已知一个List<User>集合,User有name(String)和 age(int)属性,请按照年龄从小到大顺序输出每一个年龄的用户(名)列表。 例如:List为[{张三,23},{李四,21},{王五,23}] 输出:21:[李四] , 23:[张三,王五]首先我想到的就是封装成MAP,把年龄作为key,姓名作为一个List存为value: public static void getOrderedMap1(Lis...

2022-02-22 17:09:54 220

原创 《设计模式入门》 3.抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。抽象工厂模式和工厂方法模式类似都是由四部分组成: 抽象工厂(AbstractFactory)角色:担任这个角色的是抽象工厂模式的核心,是与应用系统的商业逻辑无关的。通常使用Java接口或者抽象Java类实现。所有的具体工厂必须实现这个Java接口或继承这个抽象的Java类。 具体工厂(F...

2022-02-18 16:26:30 139

原创 《设计模式入门》 2.工厂方法模式

工厂方法模式(Factory Method Pattern)又称为工厂模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。简单来说就是我们不去直接生成对应的具体产品,而是把生产产品的功能交给工厂,我们只需要给工厂下订单就好了。工厂方法模式一般分为四个部分:抽象工厂(AbstractCreator)角色:担任这个角色的是工厂方法模式的核心,

2022-02-14 15:42:26 118

原创 《设计模式入门》 1.简单工厂模式

简单工厂模式(Simple Factory Pattern)不属于GoF 23种设计模式,我们通常将它作为学习其他工厂模式的入门。是由一个工厂对象决定创建出哪一种产品类的实例。简单来说就是我们抽取一个产品的大类,用具体的产品继承大类并且实现具体的方法。简单工厂模式一般抽象为三个板块: 1.工厂类工厂类是简单工厂模式的核心,一般由一个具体的Java类进行实现,工厂类会在客户端的调用下创建具体的产品对象。2.抽象类抽象类一般都是产品类的父类,或者是共同拥有的接口,可以使用一个...

2022-02-14 10:26:02 425

原创 LeetCode简单题分享(20)

整数的各位积和之差题目:这道题的主要思路就是怎么把int的每一位取出来,最直观的解法就是模于10,他的余数就是值。个,十,百上面的数字,我们通过int的除法特性,int/10产生的值会忽略小数位,还是一个int,这样就可以保证每一次的个位都是对应的数字了。代码: public static int subtractProductAndSum(int n) { //乘积初始化为1,如果是0的话就全为0了 int pro =1;

2022-02-08 16:42:44 161 1

原创 LeetCode简单题分享(19)

位1的个数题目:这道题是一个很经典的位运算问题,我们首先考虑传入的是一个二进制 int,在解题的时候发现这个题存在奇怪的坑:0开头int会被JVM识别成八进制:public class binary { public static void main(String[] args) { int n = 00000000000000000000000000001011; System.out.println(n); }}...

2022-02-08 13:32:26 259

原创 LeetCode中等题题分享(4)

跳跃游戏题目:这道题其实更倾向于贪心的思路:我们考虑他能否到达最后一个下标,就是考虑我们根据题目规则走过的值加起来,是否有可能大于这个数组的长度。我们就回到了经典DP解法: public boolean canJump(int[] nums) { // 第一步就可以直接到达最后一步,直接满足条件返回 if(nums[0]>nums.length){ return true; }

2022-02-07 16:50:05 265

原创 LeetCode简单题分享(18)

去掉最低工资和最高工资后的工资平均值题目:解法1:这道题使用了一个常规的解法,遍历一次,通过MATH函数筛选最大最小值: public static double average3(int[] salary) { int max = salary[0]; int min = salary[0]; int sum = 0 ; for (int num:salary) { sum += num;

2022-02-07 16:49:38 692

原创 LeetCode中等题题分享(3)

删除并获得点数 题目:这道题我愿称之为打家劫舍加强进化版,开始我拿到这题的时候是懵逼的,但是这道题其实就是打家劫舍的一个转换数组是整数,当我们删除nums[i]的点数之后,就必须删除所有等于nums[i]-1和nums[i]+1的元素.。这句话转换一下就变成了打家劫舍:我们偷了第nums[i]间房子,那么我们就不能偷第nums[i]-1和第nums[i]+1间房,即不能偷取相邻的房间。这样,取值的问题就可以用打家劫舍的DP算...

2022-01-28 13:41:05 376

原创 LeetCode中等题题分享(2)

LeetCode中等题题分享(1)_PigeonEssence的博客-CSDN博客打家劫舍题目:这道题也是一个经典的DP问题,我们一般都是用倒退的思路:假设第i间是最后一间,第i-1间就是偷不到的,只能偷第i-2间,那么对于第i间就有两种情况,偷或者不偷:所以我们设置一个DP数组maxArr[],DP方程就是:maxArr[i]=Math.max(maxArr[i-2]+nums[i],maxArr[i-1]);所以代码就很明显了;class Solution { public int rob(int[]

2022-01-27 13:25:24 348

原创 LeetCode中等题题分享(1)

打家劫舍题目:这道题也是一个经典的DP问题,我们一般都是用倒退的思路:假设第i间是最后一间,第i-1间就是偷不到的,只能偷第i-2间,那么对于第i间就有两种情况,偷或者不偷:所以我们设置一个DP数组maxArr[],DP方程就是:maxArr[i]=Math.max(maxArr[i-2]+nums[i],maxArr[i-1]);所以代码就很明显了;class Solution { public int rob(int[] nums) {

2022-01-27 13:15:24 5234

原创 LeetCode简单题分享(17)

使用最小花费爬楼梯题目:这道题是一个经典的DP了,我们首先考虑他的数组与basecase假设我们用一个数组去存储他的最小开销,如果遭到DP数组的长度和cos他对应,那么DP数组应该是: int size = cost.length; //最小总花费数组 int []minCost = new int[size+1];题目中已知他的第一步从0或者1开始爬楼梯,那么我们的低0补和第一步一定是不花费价格的: //第0步和第1步不花钱 minCost

2022-01-26 16:55:26 5891

原创 GoLand没有go mod模式选项的问题

1.Go mod在学习够视频的时候,使用开发工具创建项目没有找到go mod和设置代理的地方在GoLand 2021.2 稳定版的更新文档里有一些对go modules的更新欢迎界面的默认 Go 选项欢迎界面的 Go 选项现在是 Go modules 项目的默认选项,官方还将基于 GOPATH 的项目重命名为 Go (GOPATH)。也就是说 以前第二排的Go modules 变成现在默认的go选项了,直接创建项目就可以了2.代理代理需要命令行进行全局设置...

2022-01-26 08:55:34 11540

原创 简单的爬虫(豆瓣250)

通过上面的了解,我们简单的对一个豆瓣的TOP250榜单进行爬取:import reimport requestsimport csv# 豆瓣top250地址:https://movie.douban.com/top250# 1.确定我们需要的数据保存在什么地方# 我们可以通过查看页面源代码搜索我们所需要的数据:# 2.创建url:url = "https://movie.douban.com/top250"# 3.封装参数param = { "type": "24",

2022-01-21 15:48:21 903

原创 LeetCode困难题(伪)分享(1)

接雨水题目:这看起来是一个困难题,实际上可以拆成简单题来做:官方回答的图非常的精妙:我们可以很清晰的理解到,这个题可以被拆成很简单的基础动态规划+求面积。首先,我们使用经典的动态规划求出图1和图2的内容://动态规划算出左边到最高点的面积leftMax[0] = height[0];for(int i = 1; i < n; i++){ leftMax[i] = Math.max(leftMax[i-1],height[i]); sumLef.

2022-01-14 17:27:58 4005

原创 Python:requests模块

1.安装requests(第三方库)#终端中执行 #清华的源加速pip install requests2.导入包import requests3.执行代码# -*- coding: utf-8 -*-import requestsurl = "https://www.sogou.com/web?query=周杰伦"resp = requests.get(url)print (resp)# 拿到页面源代码print (resp.text)我们可以看到,状态

2022-01-07 17:32:57 679

原创 通过爬虫对Web请求过程剖析

一、服务器渲染数据 客户端输入网址,发送查询请求到服务器 服务器进行查询处理渲染成HTML 服务器返回带有查询信息的HTML内容到客户端渲染 也就是说我们客户端收到的是带有检索信息的内容,已经在服务器端渲染好了。二、客户端渲染数据 客户端输入网址,发送请求数据到服务器 服务器返回一个 HTML 骨架到客户端 客户端执行脚本发送请求要数据 服务器进行查询处理,返回结果数据 客户端进行数据和HTML骨架的拼接,展示渲染 也就是分

2022-01-07 17:30:10 518

原创 一个简单的Python爬虫

最近研究了一下Python,学以致用,写一个小爬虫:基础的爬虫就是通过编写程序查看页面获取资源,简单来说也就是模拟浏览器发请求。那么我们需要做的也就是用程序模拟浏览器,输入一个网址,获取资源内容 。和java相比,Python搞定需求很简单,所以选择了用Python做:简单的爬虫分为三部:1.导入Python包from urllib import urlopen2.输入需要爬取的URLurl = "http://w...

2022-01-07 17:25:45 1016

原创 Linux查看内存占用

这两天使用腾讯云部署自己的网站,发现部署微服务的时候nacos经常自动退出,开始怀疑是运存不够了。看了一下发现自己的服务器只有2G运存,之前没注意过服务器的内存,所以记录一下Linux查看内存占用的方法。1.top命令:top命令用于实时显示 process 的动态。"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列) 对应的表示:PID 进程的ID USER 进程所有者 PR 进程的优先级别,越小越优先被执行 ...

2022-01-07 11:33:46 12019 1

原创 新版RuoYi-Cloud服务启动归纳

这两天尝试使用ruoyi开发个人网站后台,看了官方文档感觉有一些地方收不清楚,于是自我总价一下ruoyi-cloud的官方链接:介绍 | RuoYi在线体验 若依官网:http://ruoyi.vip (opens new window) 演示地址:http://cloud.ruoyi.vip (opens new window) 代码下载:https://gitee.com/y_project/RuoYi-Cloud (opens new windo...

2022-01-04 14:39:28 2097 5

原创 Maven无法解析插件<Unknown>解决

今天启动ruoyi的时候出现了这个问题,很简单的问题,记录一下。显示无法解析插件,我们看到插件报错是<unknown> 可以判断是版本号没有找到出的问题找到具体没有解析出来的插件,添加版本号版本号与SpringBoot一致所以添加版本号为:刷新问题解决。...

2022-01-04 11:30:00 3514

原创 Spring Cloud集成新版MyBaties-Plus(二)

本篇文章基于狂神的教程,地址如下:【狂神说Java】MyBatisPlus最新完整教程通俗易懂_哔哩哔哩_bilibili笔记资料交流都在我们的平台:www.kuangstudy.com秦疆老师Java进阶系列课程之MyBatisPlus带你走进偷懒的大门;深入浅出的讲解了MyBatisPlus使用的全流程以及实战教学!狂神说Java系列,努力打造通俗易懂的教程QQ交流群 : 664386224https://www.bilibili.com/video/BV17E411N7KN?p=1...

2021-12-20 13:33:56 744 1

原创 Spring Cloud集成新版MyBaties-Plus

目录一.快速开始1.创建数据库2.插入数据3.编写项目,导入依赖4.配置数据库5.pojo层:6.mapper层:7.编写启动类8.编写测试类(和application相同路径创建):8.测试结果:二.配置日志三.基础CRUD1.插入测试算法选用:3.更新测试4.自动填充1.数据库级别(一般生产上不使用):2.代码级别:四.乐观锁插件1.增加version字段2.实体类添加字段3.注册组件4.测试五.查询测试:.

2021-12-17 17:37:00 2164

原创 腾讯云jar包依赖版本更新

今天登录腾讯云的时候发现有漏洞提示 :看了一下需要修复漏洞,记录一下修复方法:1.找到部署的项目,在MAVEN中定位依赖。因为我就部署了一个服务,还比较好找。可以看到是spring-boot-stater-web目录下的2.按住control在Pom文件中点进去,找到依赖把版本改成最新的,然后部署即可。...

2021-12-17 09:14:02 751

原创 Spring Cloud集成MyBaties-Plus

最近的个人官网开始了后台的开发,为了偷懒选择了更简单的MyBaties Plus开进行数据库操作,在nacos和Spaing Cloud的基础上进行开发,做一下记录。所有的新技术我们都是从快速开始入手的,首先我们通过官方文档,可以看到这个快速开始:快速开始 | MyBatis-Plus简单梳理一下这个快速开始:1.创建数据库首先在数据库中创建一个mybaties_plus数据库 :在查询中输入准备好的sql语句:DROP TABLE IF ...

2021-12-14 13:33:29 2162

原创 Junit测试MybatisPlus报错空指针

问题:因为项目使用了微服务,所以为了图省事在微服务中创建了一个服务写Mybatis Plus,但是根据官网文档写完再Junit测试的时候出现了空指针错误。 官网文档的测试类:出现错误:发现userMapper的值为空通过查资料发现这是因为普通类不能使用SpringBean,所以普通的测试类是无法获取bean的,所以才会报空指针。因此我们需要让这个测试类能获取到bean。解决方法:添加测试依赖: ...

2021-12-14 10:59:01 3767 1

原创 LeetCode简单题分享(16)

设计停车系统题目:首先来分析题目,判断是否有车位返回true和false,很直接的想法就是我们去生成三个计数器,去判断计数器对应的值是否为0,是就说明车位已经空了,不是就说明车位还可以停,然后把计数器-1就可以了。代码如下:class ParkingSystem { int big,medium,small; public ParkingSystem(int big, int medium, int small) { this.big = b.

2021-12-03 13:37:10 6326

原创 LeetCode简单题分享(15)

拥有最多糖果的孩子题目:这道题的大概思路其实很简单,要判断是否能称为糖果最多的孩子,那么就要分两步进行:1.遍历数组找到拥有糖果最多的孩子2.循环遍历判断加上多余的糖果能否成为最多的孩子也就是说现在的糖果+多余的糖果>=糖果最多的孩子,就可以了。代码如下:import java.util.ArrayList;import java.util.List;class Solution { public static void main(...

2021-11-19 09:52:03 14404

原创 LeetCode简单题分享(14)

开幕式烟火题目:这道题一看就是关于树的遍历,对应树和图我们首先的想法就是DFS和BFS的选择不清楚DFS和BFS的可以看看这个:BFS,DFS,以及图(Graph),树(Tree)的思考(6)_PigeonEssence的博客-CSDN博客通过提示我们可以看到,节点个数是小于1000个的,数字也小于1000那么我们就不用考虑到dfs的栈溢出问题,就用最简单的递归来求解了。这道题返回的是颜色种类,那么很容易就可以想到...

2021-11-17 15:45:41 14208

原创 一个简单的C语言程序是怎么来的呢?

编写代码编辑是通过编辑器,实现C语言代码的编写,即编辑器提供了编写C语言代码的平台;在编辑好代码之后,我们run程序进入C程序的编程通道。一个典型的C程序编译管道,包含预处理、编译、汇编、链接四个环节。预处理预处理一般有三个作用:宏定义,文件包含,条件编译。注:I.宏定义简单的来说就是”#define …”,就是将程序中的某个常量全部替换成某个数据;II.文件包含简单的来说就是”#include …”,就是在文件目录中找到include后的头文件;III.条件编译指...

2021-11-17 11:22:12 15349 1

原创 NIO的简单理解

在之前的IO内存模型梳理的时候,也提到过NIO:I/O(input/output)内存模型(2)_PigeonEssence的博客-CSDN博客我们了解了I/O的基本概念,之后需要讨论的就是比如Java支持三大I/O模型,BIO,NIO和AIO1.BIOBIO就是Blocking I/O, 同步阻塞型IO,数据的读取写入必须阻塞在一个线程内等待其完成。我们很熟悉的java输入和输出流都是基于BIO去实现的,如InputStream,OutputStream等。 (这种Block是不会影响同时运行的其他程

2021-11-12 17:14:17 14970

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(6)

BFS和DFS 之前的章节,我们讨论完了图和树的一些基本结构与概念,我们就可以开始讨论一下经常看到的两个遍历方式:BFS和DFS这两种。BFS:BFS就是我们所说的广度优先搜索,它的思路就是:1.假设从图中的顶点V。 2.在访问了v之后,依次访问v的各个未被访问的邻接点。在分别从这些邻接点出发,依次访问他们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的邻接点”先被访问。3. 重复2中的操作直至图中所有的顶点都被...

2021-11-11 16:18:03 14536

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(5)

计算机中的树(3)红黑树(R-B Tree)一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black. 通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍.它是一种弱平衡二叉树(由于是若平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数变少,所以对于搜索,插入,删除操作多的情况下,我们就用红黑树.性质1:每个节点要么是红色,要么是黑色。性质2:根节...

2021-11-09 17:31:13 14965 3

原创 获取数据库里面某条数据的前后两条数据

今天遇到一个有意思的问题记录一下,在数据库id乱序的情况下,时间排序获取某条数据的前后两条数据。我们可以看到,在id乱序的情况下,我们再sql中根据时间排序,可以使用:select * from basic_market_min_stock where date = '2021-10-27 07:33:56'获取到我们已知的数据, 用:select * from basic_market_min_stock where date < ...

2021-11-08 17:10:50 16990

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(4)

计算机中的树(2)从二叉查找树到二叉平衡树二叉查找树(Binary Search Tree):二叉搜索树就是在二叉树的基础上,固定了数据存入的顺序,我们固定左边子树小于根节点,右边子树大于根节点,存入的时候排好顺序,那么我们搜索的速度就会加快很多了。而且不仅搜索,还支持快速插入和删除数据二叉搜索树有以下特点: 若任意节点的左⼦树不空,则左⼦树上所有结点的值均⼩于它的根结点的值; 
 若任意节点的右⼦树不空,则右⼦树上所有结点的值均⼤于它的根结点的值; 
 ...

2021-11-05 09:00:59 14594

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(3)

计算机树(1)从链表到二叉树了解了数学图论中的图和树,接下来思考一下计算机中的树。链表:我们再算法最开始接触到的也是最常用的数据结构,就是链表,为什么说树要从链表开始?这就是一个数据结构的问题:一般我们的链表形态是这样的:class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}我们是在当前节点上,保存下一个节点,形成一个链式结构...

2021-11-05 08:50:58 14385

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(2)

树(Tree)由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其余的节点为m(m>=0)个互不相交的有限集合T1,T2,...,Tm。每个集合本身又是棵树,称其为根的子树。注意:空树也是树,树具有递归性(树中有树)。在图论中,树的形态和计算机中树的形态是不同的,是通过根节点向上分支,更像是一个“树”而不是“树根”,从根(root)开始开枝(branch)散叶(leaf):之前...

2021-11-02 17:34:58 14997

原创 BFS,DFS,以及图(Graph),树(Tree)的思考(1)

我们在算法题以及很多算法理论中,经常会讨论到DFS和BFS算法,也就是深度优先搜索算法(Depth-First-Search),和广度优先搜索算法(Breadth-First-Search)。算法一般都是基于某种具体的使用环境,或者说是某种数据结构之上的,那么DFS和BFS主要我们会使用在图和树这两种数据结构之上。 要讨论DFS和BFS,首先就要讨论图和树,这两个数据结构从大学的数据结构与算法到图论到后面的CG的学习都在使用。图(Graph)图的定义:七桥问题:...

2021-11-02 16:11:13 15166

原创 Go语言初见println和fmt.Println区别

目录println()函数:fmt.println()函数:总结区别:1.包不同:2.输出方式不同:3.方法返回值不同:4.内置print/println函数的调用不能接受数组和结构体参数。5.对于组合类型的参数,内置的print/println函数将输出参数的底层值部的地址,而fmt和log标准库包中的打印函数将输出接口参数的动态值的字面形式。6.如果一个实参有String() string或Error() string方法,那么fmt和log标准库包里的...

2021-11-01 15:51:36 20403 1

7.4 redis config文件

7.4 redis config文件

2024-08-15

Spring Cloud集成MyBaties-Plus.pdf

Spring Cloud集成最新版MyBaties-Plus文档

2021-12-22

typora未收费版本

typora未收费版本

2021-12-01

Go语言入门英语讲解PDF(生肉).zip

Go语言入门包,简单介绍了Go语言基础

2021-11-17

Oracle数据库.pdf

Oracle学习资料

2021-11-17

NIO的简单理解SelectorTest.java

https://blog.csdn.net/m0_56289903/article/details/121286804?spm=1001.2014.3001.5501 的测试文件

2021-11-12

IO测试代码_IOTest.java

https://blog.csdn.net/m0_56289903/article/details/121286804?spm=1001.2014.3001.5501 的IO测试代码

2021-11-12

BFS,DFS,以及图(Graph),树(Tree)的思考.pdf

便于学习图论基础和数据结构初学者理解树和图的结构与遍历

2021-11-11

Xftp 6.zip pjb

Xftp 6 pjb

2021-10-19

空空如也

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

TA关注的人

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