自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

钟健的博客

钟健的博客,卑微小钟的博客,小小钟的博客,记录BUG生活。

  • 博客(123)
  • 收藏
  • 关注

原创 springboot统一异常处理(返回json)并支持所有异常格式化返回

当用spring boot开发后端时,我们常采用前后端分离的开发策略,这时候要求前端与后端需要进行数据交互,传统的一般采用json数据交互。这时候我们要对spring boot的默认异常处理方式进行修改了,要统一返回数据格式,优雅的数据交互,优雅的开发应用。首先我们要了解一般springboot的错误发生在什么地方。一般发生在、、、、还有就是了。下面我分享一下我的处理方式:++的处理方式。...

2022-08-13 18:24:10 17921 3

原创 springboot 跨域配置(处理filter,spring security等过滤器跨域问题)

基于filter实现可以处理filter中的跨域问题,这里原理很简单,需要注意是要设置CorsFilter的优先级:Ordered.HIGHEST_PRECEDENCE(加载到过滤器链最前面!但如果遇到spring boot集成spring security的时候,登录时处理是在filter中的,传统的跨域没有办法处理,这时候我们要采用一种新的实现方案:基于filter的跨域实现。经过测试,这种处理方法可以轻松应对springboot的跨域问题。...

2022-08-13 18:00:59 16914

原创 中国地图china.js

中国地图china.js一、简介中国地图china是基于echarts.js和china.js绘制图像。官方已不支持china.js下载china.js:https://static.delebug.com/echarts/china.js二、配置项// china.js的配置项与echarts基本图形配置项相通// 关于echarts基本图形配置参考:https://echarts.apache.org/v4/zh/option.html// 其中china地图主要配置不同处在seri

2021-06-02 10:28:08 88845 25

原创 python mongodb数据查询

使用兼容的PyMongo版本:如果无法升级MongoDB服务器或降级PyMongo,可以尝试找到一个与MongoDB服务器版本兼容的PyMongo版本。这个错误表明使用的PyMongo版本与MongoDB服务器的Wire版本不兼容。降级PyMongo版本:如果不能升级MongoDB服务器,可以尝试降级PyMongo版本,以匹配MongoDB服务器版本。升级MongoDB服务器:将MongoDB服务器升级到PyMongo所需的版本,即MongoDB 3.6或更高版本。需要对账号和密码进行编码。

2023-09-28 09:11:35 3352

原创 常用排序算法时间与空间复杂度

不同排序算法具有不同的时间和空间复杂度特征,因此在选择排序算法时需要考虑数据规模和性质。在平均情况下,快速排序、归并排序和堆排序通常是性能最好的排序算法,其时间复杂度为O(n log n)。冒泡排序、选择排序和插入排序适用于小规模数据或在某些情况下。计数排序适用于元素范围有限的情况,它的性能可以达到线性时间。

2023-09-28 09:00:00 2264

原创 常用的查找算法时间和空间复杂的对比

线性查找的空间复杂度是O(1),而二分查找的空间复杂度也是O(1),它们都使用常量额外空间。二分查找的时间复杂度为O(log n),要求数据必须有序。线性查找的时间复杂度为O(n),适用于未排序的数据。

2023-09-28 08:53:15 2396

原创 Nacos服务注册和配置中心

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2023-09-27 08:54:53 2254

原创 Java实现word excel ppt模板渲染与导出及预览 LibreOffice jodconverter

文档格式转换是office操作中经常需要进行一个操作,例如将docx文档转换成pdf格式。java在这方面有许多的操作方式,大致可以分为内部调用(无需要安装额外软件),外部调用(需要安装额外软件)。其中,内部调用的方式虽然简单,但是会遇到一些头痛的问题,例如:文档格式错误,字体错误,内容缺少。外部调用虽然麻烦,但可以在一定程度上解决这些问题。jodconverter是支持和两种开源的Office软件的,但是从稳定性、转换效果、简单性,更推荐LibreOffice。

2023-09-27 08:50:09 4555

原创 Mybatis获取参数的值

Mybatis获取参数的值的方式一共两种**${}#{}**${}使用字符串拼接的方式拼接sql,若字符串类型或时间类型的字段进行赋值时,;但是#{}使用占位符的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。同时获取参数的值有多种情况。

2023-05-22 15:35:50 5969

原创 SpringBoot整合RabbitMQ(最新笔记)

我们使用的springboot版本为2.5.6,其他都是根据自动选择版本引入以下工程即可junit

2023-05-18 15:08:00 6869

原创 RabbitMQ高级特性 JAVA (最新笔记记录)

在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或投递失败场景。RabbitMQ为我们提供了两种方式来控制消息的投递可靠性模式。producerexchangequeueconsumer利用这两个callback来控制消息的可靠性传递。

2023-05-18 15:06:47 6235

原创 新版SpringSecurity配置(SpringBoot>2.7&SpringSecurity>5.7)

在使用或者以上版本时,会提示:在 Spring Security 5.7.0-M2 中,我们弃用了,因为我们鼓励用户转向基于组件的安全配置。所以之前那种通过继承的方式的配置组件是不行的。同时也会遇到很多问题,例如:在向SpringSecurity过滤器链中添加过滤器时(例如:JWT支持,第三方验证),我们需要注入对象等问题。

2023-05-17 11:03:13 10510 5

原创 Java WebSocket客户端

logger . info("客户端连接成功:{}" , session . getId());logger . info("客户端接受到消息:{}" , message . getPayload());logger . info("客户端发送错误:{}" , exception . getMessage());logger . info("客户端关闭连接:{}" , closeStatus . getCode());} }

2023-05-04 13:48:39 9231 6

原创 CentOS7安装MongoDB

【代码】CentOS7安装MongoDB。

2023-05-04 10:38:19 6514

原创 Spring Doc OpenAPI3.0 抛弃SpringFox拥抱SpringDoc

SpringDoc是SpringBoot 的API文档工具。在使用SpringBoot 2.6以前去创建API文档工具一般会采用SpringFox提供的Swagger库,但是由于SpringBoot版本的不断升级和SpringFox摆烂不更新,导致了SpringBoot2.6之后的项目无法使用SpringFox去生成API文档,或者可以使用但是有很多的bug。SpringDoc是一款可以结合SpringBoot使用API文档生成工具,基于OpenAPI 3,而且项目维护和社区都在不断更新,不仅支持。

2023-04-25 12:29:09 11452

原创 Springboot WebSocket鉴权,前处理(添加过滤器)

Springboot WebSocket鉴权,前处理(添加过滤器)

2023-04-13 15:00:37 8500

原创 Java反射(详细学习笔记)

Reflection(反射)是java被视为java动态语言的关键,反射机制允许程序在执行期间借助于Reflection API获取任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就会产生一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。引入包类=>new实例化=>获取实例对象实例化对象=>=>获取完整包类名称。

2023-03-19 16:13:37 7776

原创 Java 注解(详细学习笔记)

public @interface 注解名{ 定义内容 }其中每一个方法实际上是声明了一个配置参数方法的名称就是参数的名称返回值类型就是参数的类型(返回值只能是基本类型、Class、String、enum可以通过default来声明参数的默认值如果只用一个参数成员,一般参数名称为value注解元素必须有值,我们定义注解元素时,经常使用空字符串,0作为默认值。@Target({

2023-03-19 16:12:38 7822

原创 RabbitMQ工作模式

模式介绍:与入门程序的简单模式相比,多了一个或一些消费端,多了消费端共同消费同一个队列中的消息。应用场景:对于任务过重或任务较多情况使用工作队列可以提高任务的处理速度。在一个队列中如果有多个消费者,那么消费者之间对于同一个消息的关系是竞争的关系。对于任务过重或任务较多情况使用队列模式可以提高任务处理的速度。例如:短信服务部署多个,只需要一个节点成功发送即可。在订阅模型中,多了一个Exchange角色,而且过程略有变化:P:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给交换机。

2023-03-14 22:06:02 7658

原创 Spring整合RabbitMQ

整合用到的maven坐标,主要有:、、和。1.2 创建RabbitMQ配置文件这里我们创建的是一个RabbitMQ配置文件,名称为。目的是方便将配置文件中的信息加载到Spring中,就无需在xml文件中修改了。1.3 创建整合配置文件RabbitMQ和Spring使用xml文件进行整合,意味着大部分的配置类或模板都在xml文件中,我们默认的文件名为:。xml文件用到的默认约束(1)加载配置文件,并创建连接工程connectionFactory在这里我们需要注意的是加载配置文件的路径,。(2)定义

2023-03-14 21:58:24 8069

原创 配置VM虚拟机Centos7网络

我们敲击键盘 【i 】进入编辑,更改成如图配置,然后按键盘【 esc 】然后【shift+: 】输入【wq】,保存退出。2 .我们找到【Internet 协议版本 4(TCP/IPv4)】点击设置如上图所示。我们发现我们查看ip【ifconfig】指令无效,因为纯净的CentOS 7没有该命令。我们ping www.baidu.com 发现无法连接,就说明我们的网络没有连接上。最后 ping www.baidu.com是可以的,这说明我们联通了网络。然后我们就连接到了虚拟机。然后我们更新一下网络。

2023-03-08 20:36:35 12993 1

原创 Spring MVC异常处理器

和。SpringMVC提供了自定义的异常处理器

2023-02-27 08:02:03 7829

原创 SpringMVC的视图

SpringMVC中的视图是View的接口,视图的作用是渲染数据,将模型Model中的数据展示给用户。SpringMVC视图的种类很多,默认有转发视图和重定向视图。若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,使用的是。

2023-02-27 08:00:23 7787

原创 java 域对象共享数据

使用ServletAPI向request域对象共享数据

2023-02-26 19:28:53 7909

原创 AbstractAnnotationConfigDispatcherServletInitializer 在Servlet3.0环境中

在Servlet3.0环境中,容器会在类路经中查找实现接口的类,如果找到的话就用它来配置Servlet容器。Spring提供了这个接口的实现,名为,这个类反过来又会查找实现的类并将配置的任务交给它们来完成。Spring3.2引入了一个便利的基础实现,名为,当我们的类扩展了并将其部署到Servlet3.0容器的时候,容器会自动发现它,并用它来配置Servlet上下文。

2023-02-26 19:20:01 8226

原创 python3 连接数据库 mysql PyMysql

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库 , 遵循 Python 数据库 API v2.0 规范。

2023-02-26 09:48:02 9929

原创 python画图库-matplotlib

当需要中文时需要引入字体。#当x或y含有字符串。

2023-02-26 09:47:00 8007

原创 python ffmpeg

python ffmpeg。

2023-02-26 09:44:37 8169

原创 python logging常见的日志使用功能

python logging常见的日志使用功能。

2023-02-26 09:44:31 7774

原创 mysql数据库表的创建与查看

查看所有数据库切换数据库use 数据库名查看该数据库下所有的表名查看表的结构desc 表名。

2023-02-26 09:40:00 11383

原创 mysql数据库表的多条件查询

mysql数据库表的多条件查询select语句基本查询mysqlSELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M* select可以返回多条数据也可以返回一条数据* 如果要查询所有的字段可以用 *****代替* where后面跟的是筛选条件(可选)* N 是返回的数据条数(可选)* M 是数据的偏移量(可选)

2023-02-26 09:36:54 14616

原创 mysql重要的函数

描述: 比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1

2023-02-26 00:27:28 7932

原创 Flask-Blueprint

Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求。其本质上来说就是让程序更加松耦合,更加灵活,增加复用性,提高查错效率,降低出错概率。在具体项目开发过程中,不同蓝本分别对应不同的功能模块。

2023-02-25 22:53:02 8285

原创 MapReduce编程规范

对多个Map任务的结果进行排序以及合并,编写Reduce函数实现自己的逻辑,对输入的Key-Value进行处理,转为新的Key-Value(K3和V3)输出。MapReduce的开发一共有八个步骤,其中Map阶段分为2个步骤,Shuffle阶段4个步骤,Reduce阶段分为2个步骤。设置InputFormat类,将数据切分为Key-Value(K1和V1)对,输入到第二步。自定义Map逻辑,将第一步的结果转换成另外的 Key-Value (K2,V2)对,输出结果。对输出的Key-Value对进行分区。

2023-02-25 22:52:52 7928

原创 计网笔记 网络层(端到端的服务)

转发”和“路由选择”是不同的概念。交换的信息是自己当前的路由表,即到达本自治系统中所有网络的(最短)距离,以及到每个网络应经过的下一跳路由器。IP网是虚拟的,因为从网络层上看,IP网络是一个统一的、抽象的网络(实际上是异构的)。IP层抽象的互联网屏蔽了下层网络复杂的细节,使我们能够使用统一的、抽象的IP地址处理主机之间的通信问题。MAC地址(即硬件地址或物理地址)是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(用软件实现的),在数据链路层看不见数据报的IP地址。

2023-02-25 22:51:24 8828

原创 动态规划-规划兼职工作

要点完成第i份兼职获得的最大报酬=MAX(考虑前一份(i-1)兼职的最大报酬,第i份兼职开始时间前能完成的兼职的最大报酬+第i份兼职的报酬)。在计算时考虑当前兼职时,要用到之前子问题的解时,我们直接查兼职与最大薪资表dp就可以简化运算。算法性能分析时间复杂度:O(nlogn),其中 n 是兼职工作的数量。排序需要 O(nlogn),遍历 + 二分查找需要 O(nlogn),因此总时间复杂度为 O(nlogn)。**空间复杂度:O(n)。**需要 O(n) 的空间来保存dp。现实意义。

2023-02-25 22:50:12 8556

原创 乘船问题(贪心算法)

乘船问题:有N个人,第I个人重量为wi,每艘船的载重上限为C,且最多乘2人。用最少的船装载所有人,求需最少的船数量。

2023-02-25 22:46:55 8863

原创 scrapy 登录

可以通过扩展为不同的操作设置自定义日志格式课程和制作指向你的新班级。classscrapy.logformatter.LogFormatter源代码用于为不同操作生成日志消息的类。所有方法都必须返回一个列出参数的字典levelmsg和args调用时将用于构造日志消息level是该操作的日志级别,可以使用和msg应该是可以包含不同格式占位符的字符串。此字符串,格式为args,将是该行动的长期信息。args应该是一个tuple或dict,其中的格式占位符为msg.最后的日志消息计算为msg % args。

2023-02-25 22:42:14 7976

原创 scrapy 使用浏览器的开发人员工具进行抓取

下面是关于如何使用浏览器的开发人员工具来简化抓取过程的一般指南。现在几乎所有浏览器都内置了尽管我们将在本指南中使用firefox,但这些概念适用于任何其他浏览器。在本指南中,我们将介绍通过抓取从浏览器的开发人员工具中使用的基本工具。

2023-02-25 22:36:50 7950

原创 部署Scrapy

部署蜘蛛以定期运行它们的不同选项。在您的本地机器中运行 Scrapy 蜘蛛对于(早期)开发阶段非常方便,但是当您需要执行长时间运行的蜘蛛或移动蜘蛛以在生产中连续运行时,就不那么方便了。这就是部署报废蜘蛛的解决方案。

2023-02-25 22:30:36 8416

空空如也

空空如也

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

TA关注的人

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