自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 如何做一个springboot的starter类型的SDK

首先我们是一个starter类型的SDK,为了给调用者使用,其中有一些Bean我们会放到SDK中,并且这些Bean能够注入到调用者的Spring容器中。

2024-04-15 17:37:26 645 2

原创 Springboot的文件上传和下载

【代码】Springboot的文件上传和下载。

2024-01-29 23:05:36 123

原创 springboot线程池+等待结束+ThreadPoolTaskExecutor

ThreadPoolTaskExecutor

2022-07-22 14:31:30 1688 1

原创 用redis做用户访问数据统计HyperLogLog及Bitmap高级数据类型

本文使用RedisTemplate来做用户访问数据的统计,其中使用的数据类型为HyperLogLog及Bitmap。

2022-06-26 15:29:16 1062

原创 Linux下kafka单机配置

适合有一定Linux基础的同学,JDK+zookeeper+kakfa单机配置

2022-06-07 21:55:47 326

原创 SpringBoot配置文件(Profile)环境切换

SpringBoot的配置文件切换Why?在家和学校的服务器不一样,有时候需要来回切换配置数据库ip、端口程序运行端口redis ip 和端口很麻烦如下 我们不同的环境下的配置文件中 person.name不同 ,需要更改内部配置文件两个原始配置文件: 任何时候都会加载application.propertiesapplication.yaml指定环境配置文件我们可以按照需要指定很多个环境如:生产环境product、测试环境test、公司环境、家庭环境命名规则:app

2022-03-25 17:34:03 2339 1

原创 springboot整合redis

POM:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>底层使用的是:lettuceYAML: spring: redis: port: 6379 host: 127.0.0.1

2022-03-25 12:48:04 1067

原创 springboot整合mybatisplus

POM:<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version></dependency><dependency> <groupId>mysql</groupId> &l

2022-03-25 10:42:24 2440

原创 springboot整合mybatis

POM:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-.

2022-03-24 23:37:02 388

原创 Mybatis的学习

文章目录一、环境搭建 + 基本运行1.1 创建工程1.2 导入依赖1.3 创建MyBatis的核心配置文件1.4 创建数据库表1.5 创建实体接收类1.6 创建Mapper接口及映射文件1.7 测试完成1.10 删改查的测试1.8 设置sqlSession自动提交事务1.9 配置日志二、核心配置文件详解2.1 environment:设置数据库环境2.2 transactionManager:设置事务管理方式2.3 (重要知识)${} + [properties](https://so.csdn.net/s

2022-03-17 09:05:31 1758

原创 SpringMVC的学习

文章目录第一章 SpringMVC引言1.1 原有控制器控制器的作用控制器的核心代码现有控制器的问题1.2 SpringMVC的三种开发方式第二章 第一个SpringMVC程序的开发2.1 搭建父子工程2.2 工程环境搭建2.2.1 新建文件夹2.2.2 更改web.xml文件2.2.3 修改pom文件2.2.4 搭建tomcat2.2.5 引入接下来需要用到的jar包2.2.6 引入配置文件2.2.7 初始化配置2.3 初始化配置需要注意的细节2.4 编码分析2.5 Controller使用2.6 注意2

2022-03-14 10:19:59 2037

原创 将时间戳转为日期

Python的日期格式转换Python中,常用的三种表达方式时间:时间戳(timestamp) float类型 1019948462.2750368格式化的时间字符串(format_string)str类型 2002-04-28 07:01:02结构化时间(struct_time)一般来说 他是中间件,我们转换时间基本都经过他time.struct_time(tm_year=2002, tm_mon=4, tm_mday=28, tm_hour=7, tm_min=1, tm_sec=

2022-03-13 19:53:47 269

原创 【LeetCode笔记】树的专项练习

文章目录树的遍历先序遍历(单栈)例题:中序遍历(单栈)例题:后续遍历(双栈)例题:层次遍历(队列)例题:二叉树的最大深度例题:判断树的类型是否搜索二叉树例题:是否完全二叉树例图:是否满二叉树是否平衡二叉树例题:[110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)](https://leetcode-cn.com/problems/balanced-binary-tree/)节点的公共祖先例题:推荐视频:一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算

2022-03-07 14:52:08 623

原创 Python将Long类型时间戳转为日期

Python的日期格式转换Python中,常用的三种表达方式时间:时间戳(timestamp) float类型 1019948462.2750368格式化的时间字符串(format_string)str类型 2002-04-28 07:01:02结构化时间(struct_time)一般来说 他是中间件,我们转换时间基本都经过他time.struct_time(tm_year=2002, tm_mon=4, tm_mday=28, tm_hour=7, tm_min=1, tm_sec=

2022-03-06 11:35:24 1816

原创 OpenLayers画点、画圆、画线方法

文章目录准备工作项目搭建画地图画圆更改Style画点画线准备工作项目搭建创建Vue项目vue create OpenLayers 安装openlayers包,在package,.json中添加"dependencies": { "core-js": "^3.8.3", "vue": "^3.2.13", "vue-router": "^4.0.3", "ol": "^6.4.3" 👈添加这个 },命令行安装npm i 画地图导入要用的包impo

2022-03-03 10:49:59 17911 4

原创 【LeetCode笔记】No1356根据数字二进制下1的数目排序

文章目录本题要点共两个:要点实现:比较器复习:比较器的返回值两个比较器 Comparator 和 Comparable解题代码:1356. 根据数字二进制下 1 的数目排序 - 力扣(LeetCode) (leetcode-cn.com)本题要点共两个:二进制下1的数目。设置比较器,当1的个数相等时按照原数值进行排序。要点实现:bit[i] = bit[i >> 1] + (i & 1); 表示 i 的二进制中 1 的数量 ,通过 容器new int[10001] 将

2022-02-28 14:47:27 210

原创 【LeetCode笔记】二分查找专项

文章目录最标准的查找二分查找的两大基本原则变形一:(已知存在目标值)最左边的目标值变形二:(已知存在目标值)最右边的目标值变形四:大于目标值的第一个数变形五:大于等于目标值的第一个数变形七:小于目标值的最后一个数变形三:小于等于目标值的最后一个数二分查找 = 折半查找时间复杂度O(logN)最标准的查找初始化 左边界int len = arr.length - 1;int l = 0; int r = len-1;while循环判断条件这个是 左闭右闭区间 (我常用的) whil

2022-02-22 19:16:11 362

原创 【LeetCode笔记】No566重塑矩阵

class Solution { public int[][] matrixReshape(int[][] mat, int r, int c) { int[][] ret = new int[r][c]; List<Integer> l = new ArrayList<>(); int row =0; int col=0; if (mat.length * mat[0].length != r.

2022-02-20 21:49:25 64

原创 【LeetCode笔记】No118杨辉三角

这种需要用到双层for循环的题 要注意:打破固有思维,不要想着i=0的时候是1 而要以计算机思维 第0位开始而不是第1位class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> ret = new ArrayList<>(); for(int i =0;i<numRows;i++){

2022-02-20 21:14:17 6789

原创 【leetcode笔记】No121买卖股票的最好时机

121. 买卖股票的最佳时机 - 力扣(LeetCode) (leetcode-cn.com)从左到右进行遍历,更新最低价格和最大收益。最大收益 与 最低价格 和最高价格有关,但是其差由于位列顺序所以无法确定,需要用到动态规划思想,也就是 需要不停更新 最大收益,那么更新最大收益 就需要了解 最大收益的影响int sum=0; //实时记录当前收益,并在后续进行更新int min=prices[0];//设定最低价格,并在后续进行更新当前的最大收益 = Math.max(之前最大收益,当前股价

2022-02-19 18:05:06 4747

原创 【LeetCode笔记】No191位1的个数

191. 位1的个数 - 力扣(LeetCode) (leetcode-cn.com)解题方法有两种:纯用位运算用暴力遍历位运算基础:位运算是直接对整数的二进制进行的运算<< : 在一定范围内,每向左移一位,相当于 * 2>> : 在一定范围内,每向右移一位,相当于 / 2位运算解法:public int hammingWeight(int n) { int ret =0; while(n!=0){

2022-02-19 13:55:48 3042

转载 【LeetCode笔记】剑指offer35复杂链表的复制

剑指 Offer 35. 复杂链表的复制 - 力扣(LeetCode) (leetcode-cn.com)题解参考:剑指 Offer 35. 复杂链表的复制(哈希表 / 拼接与拆分,清晰图解) - 复杂链表的复制 - 力扣(LeetCode) (leetcode-cn.com)class Solution { public Node copyRandomList(Node head) { Node cur = head; Map<Node,Node>

2022-02-18 18:05:38 53

原创 【LeetCode笔记】剑指offer24反转链表

反转链表需要三个节点哦反转链表需要三个节点哦反转链表需要三个节点哦已反转的链表头节点 ret 1 ???? 2 ???? 3 ???? ④未反转的链表头节点 head ⑤ ???? 6 ???? 7 ???? 8 ???? 9**第一步:**首先需要一个临时节点 tmp 指向 ⑤ 然后 head节点后移 ⑥???? 7 ???? 8 ???? 9**第二步:**这时 tmp 节点指向 ret tmp.next = ret; 链表变为 1 ???? 2 ???? 3 ???? ④ ????

2022-02-18 17:30:20 112

转载 【LeetCode笔记】No155最小栈

参考答案:????☞Offer30.包含min函数的栈 - 包含min函数的栈 - 力扣(LeetCode) (leetcode-cn.com)栈的常用操作:stack = new Stack<>(); //新建一个栈stack.peek(); //获取栈顶元素 stack.firstElement(); //获取栈最底元素stack.pop(); //弹栈stack.push(); //压栈class MinStack { private Stack<Integ

2022-02-17 17:16:06 59

转载 【LeetCode笔记】剑指offer09用两个栈实现队列

题解参考:文字 + 视频的方式详细讲解两个栈实现队列 - 用两个栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)第一次解题:失败失败原因 看源码????class CQueue { private Stack<Integer> stack1; private Stack<Integer> stack2; public CQueue() { this.stack1 = new Stack<>();

2022-02-17 16:07:53 63

转载 【Leetcode笔记】No53最大子数组和

我们先从遍历方式说起以某个节点为开头的所有子序列: 如 [a],[a, b],[ a, b, c] … 再从以 b 为开头的子序列开始遍历 [b] [b, c]。根据子序列的长度为基准,如先遍历出子序列长度为 1 的子序列,在遍历出长度为 2 的 等等。以子序列的结束节点为基准,先遍历出以某个节点为结束的所有子序列,因为每个节点都可能会是子序列的结束节点,因此要遍历下整个序列,如: 以 b 为结束点的所有子序列: [a , b] [b] 以 c 为结束点的所有子序列: [a, b, c] [b, c

2022-02-17 11:32:47 51

原创 IOC控制反转

文章目录前言JavaWeb中的Servlet发展Servlet开发 1.0Servlet开发 2.0Servlet开发 2.5Servlet开发 3.0IOC实现耦合/依赖MVC模式IOC - 控制反转DI - 依赖注入代码实现配置文件Controller层Service层DAO层BeanFactoryBeanFactory的实现类 DOM操作Step1 获取Document对象Step2 将配置文件中的对象 存入容器Step3 组装对象间的依赖关系(依赖注入)总结:前言在了解IOC之前 我们需要先知道

2022-02-07 18:12:25 1101 1

原创 反射获取方法的形参名称为arg,并不是真实名称,jdk8、IDEA2021

问题描述:通过反射获取 类的方法 形参的真实名称。但 输出结果为 arg0、arg1、arg2。并不是 真实名称。问题代码:public class reflect { public static void main(String[] args) throws Exception { String a = "say"; Class clazz = Class.forName("com.atguigu.servlet.Person");// 获取运行时类

2022-02-07 14:32:45 1101

原创 JavaWeb的学习之servlet

文章目录Servlet的生命周期演示:第一次访问:第二、三、四次访问:销毁对象:结论:修改Servlet创建对象的时机Servlet容器典型Servlet容器产品举例Http协议请求报文请求行请求消息头请求体[1]form data[2]Request Payload响应报文①响应状态行②响应消息头③响应体④响应状态码请求方式①HTTP协议已定义的请求方式②GET请求③POST请求Session会话跟踪演示:会话跟踪技术ThymeLeaf快速入门Servlet保存作用域application(Servlet

2022-02-07 11:47:30 209

原创 java错误无效的源发行版:16

java: 错误: 无效的源发行版:16打开项目结构配置SDK–两个路径保持一致。]

2022-02-06 17:25:08 432

原创 servlet表单数据乱码问题

问题描述:后台收到表单数据时,出现乱码问题。tomcat8之前,设置编码: 1)get请求方式: //get方式目前不需要设置编码(基于tomcat8) //如果是get请求发送的中文数据,转码稍微有点麻烦(tomcat8之前) String fname = request.getParameter("fname"); //1.将字符串打散成字节数组 byte[] bytes = fname.getBytes

2022-02-03 23:05:06 1114

原创 JavaWeb初体验

javaWeb的第一课主要说明 项目的建立 + tomcat的配置 + 项目运行Step1 新建项目Step2 添加项目框架Step3 添加Tomcat配置Step4 配置依赖Step5 测试输入网址:http://localhost:9090/hello01.html43819069821)]...

2022-02-03 00:26:52 355

原创 JDBC的学习

文章目录环境配置JDBC初体验Step1 加载JDBC的mysql Jar包Step2 写代码连接数据库的5种方式方式一 正常创建方式二 利用发射创建Driver方式三 使用DriverManager方式四 源码静态代码块自动加载 (使用最多)方式五 配置文件ResultSetStatementPreparedStatement(执行SQL)C3P0数据库连接池Druid(德鲁伊)数据库连接池Step1 导入Druid.jarStep2 加入配置文件Step3 代码基于Druid数据库连接池的工具类Step

2022-01-27 14:07:17 1688

原创 Vue+ElementUI快速入门

此文章主要演示 在Vue框架中如何使用ElementUI其主要包含步骤如下Step1 创建Vue项目(脚手架)vue init webpack openlayerstestStep2 安装ElementUI框架ElementUI官网 组件 | Elementnpm安装:npm i element-ui -S在 main.js 中写入以下内容:import Vue from 'vue';import ElementUI from 'element-ui';import 'elemen

2022-01-23 20:15:44 900

原创 Vue+OpenLayers的第一个项目

Vue+OpenLayers的第一个项目本章节主要演示如何用Vue来运行OpenLayers,主要包括以下几步。Step1 配置Node.js Npm Vue配置node.js去官网下载https://nodejs.org/en/download/,在CMD中输入node -v 查看版本配置npm配置npm镜像,因为国内比较慢,所以需要配置好镜像。npm install -g cnpm --registry=https://registry.npmmirror.com创建两个文件夹

2022-01-23 15:01:32 655

原创 spring解决跨域问题

Springboot的跨域问题创建一个配置类(@configuration)@Configurationpublic class CorsConfig implements WebMvcConfigurer { /** * 开启跨域 */ @Override public void addCorsMappings(CorsRegistry registry) { // 设置允许跨域的路由 registry.addMappin

2022-01-21 22:08:55 135

原创 Json的处理 之 JSONArray 转为 List

Json的处理 之 JSONArray 转为 ListStep One 导入依赖<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version></dependency>Step Two 创建类对象注:@Data 提供set ge

2021-10-17 18:17:14 456

原创 SpringBoot打开resources目录下的文件操作

SpringBoot打开resources目录下的文件操作背景我想在SpringBoot项目中放入一个静态文件.json文件。然后在SpringBoot项目内可以打开并读取此json文件。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fPPv8GCL-1634463168455)(C:\Users\dancerHoan\AppData\Roaming\Typora\typora-user-images\image-20211017172913980.png)]Step

2021-10-17 17:33:10 536

原创 Spring代理(Proxy)设计模式

Spring代理设计模式1.为什么需要代理设计模式1.1问题我们在写一个程序时,会创建Service层,在这里主要实现关键代码:业务运算+DAO调用但有时候我们也想在Service层中加入一些简单的额外方法,可这些额外方法日后会随着需求一点点改变的,这样大部分Service中的代码有额外功能这种多余的代码,就会影响维护性。所以需要引入------代理模式2.代理设计模式好处:利于目标类和原始类的维护。步骤:先定义个接口,让原始类 和 代理类共同实现它原理类实现接口,在Override中

2021-09-24 20:51:24 168

原创 Spring-后置处理Bean(工厂创建对象过程中的对象再加工)

后置处理BeanBeanPostProcessor作用:对从Spring工厂中创建的对象,进行再加工。(AOP的底层实现)实现方法实现Spring中BeanPostProcessor接口中规定的两个方法:postProcessorBeforeInitialization(Object bean,String beanName)postProcessorAfterInitialization(Object bean,String beanName)Step 1:实现接口类public cla

2021-09-24 20:50:30 161

空空如也

空空如也

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

TA关注的人

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