自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中的抽象类与接口类:自上而下的设计思想

在抽象类中,一些方法可能已经有了默认的实现,而其他方法可能需要子类提供具体的实现。抽象类的设计思想是自下而上的,即从具体的实现逐步向上抽象出通用的行为。接口类的设计思想是自上而下的,即从更抽象的层次定义了一组方法,然后由具体的类去实现这些方法。抽象类更关注于从具体的实现向上抽象出通用的行为,而接口类更关注于从更抽象的层次定义一组行为。综上所述,抽象类和接口类是Java面向对象编程中的重要概念,深入理解它们的特点和区别,并根据设计需求灵活运用,能够更好地设计出灵活、可扩展的软件系统。是一个接口类,它定义了。

2024-04-08 19:00:00 297

原创 深入理解单点登录(SSO):简化用户认证体验

SSO定义和概念​单点登录(Single Sign-On,简称SSO)是一种身份验证和授权机制,旨在让用户只需一次登录,就能够访问多个相关但独立的系统或应用。在传统的身份验证模型中,用户需要为每个系统提供独立的凭证(通常是用户名和密码),这不仅繁琐而且容易导致安全隐患。​ SSO解决了这一问题,通过一次登录,用户获取了对多个系统的访问权限,而无需在每个系统中重新输入凭证。这样的集中式身份验证模型极大地提升了用户体验,减轻了用户的记忆负担,同时也有助于提高整体系统的安全性。

2024-04-07 17:24:12 936

原创 AI技术创业有哪些机会?

作为创业者,你可以开发集成了AI技术的智能家居设备,让我们的生活更加便捷和智能;此外,提供基于AI的软件服务也是一个不错的选择,比如开发虚拟助手,让人们的生活更加便利;随着AI技术的蓬勃发展,市场对AI人才的需求呈现爆发式增长。作为创业者,你可以提供AI相关的教育和培训服务,帮助企业和个人快速掌握AI知识和技能。通过这种方式,创业者不仅能够满足市场的需求,还能够培养更多的AI人才,助力AI行业的快速发展。在当今科技创新的浪潮中,人工智能(AI)技术犹如一颗闪耀的明星,为创业者带来了广阔的天地。

2024-04-03 16:45:17 170

原创 0基础如何进入IT行业?

从免费的教程、学习平台(如Coursera、edX、Udemy)、技术博客到在线论坛和社群,你可以在这些地方找到大量的学习资料和交流机会。记住,不要害怕面对挑战,要放心大胆地探索和学习新的知识,相信自己的潜力,并不断提升自己的技能。通过贡献开源项目,你可以锻炼自己的技术能力,同时也展示了你的积极参与和合作精神。数据是IT行业的宝贵资源,了解数据库和数据分析的基本概念和工具,如SQL和数据可视化工具,会让你在数据驱动的企业中更加有竞争力。在你学习的过程中,建议你积累一些实践经验,提升自己在IT行业的竞争力。

2024-04-03 16:43:20 286

原创 未来已来!人工智能悄然走进我们的生活

别担心,AI助手会是你的得力帮手。现在有一些智能厨房设备,配备了AI控制系统,只需告诉它你拥有的食材,它就会给你提供一系列的食谱和详细步骤。现在,AI可以根据你的口味,为你推荐符合你兴趣的影视作品。无论你是想要欢快的节奏还是放松的音乐,AI都会紧密追随你的步伐,为你打造一个完美的娱乐体验。它可以为你推荐适合你水平和兴趣的学习资料,提供个性化的学习计划,并根据你的学习进度不断优化推荐内容。你也许会觉得科幻电影中的机器人只存在于银幕上,但事实上,AI已经悄然走进了我们的生活,让我们一起探索一下吧!

2024-04-02 18:37:38 316

原创 git的简单介绍

其实,Git在英语俚语中意味着"白痴"或者"愚蠢",而它的作者Linus Torvalds选择了这个名字,可能是因为当时他对其他版本控制系统感到非常烦恼,觉得它们都有点"愚蠢"。首先,我们需要创建一个Git仓库,这个仓库就像是我们存放代码的一个文件夹。别担心,Git只是把文件添加到了一个"暂存区",相当于是一个待提交的清单。现在,你可能觉得Git只是一个高级的"复制粘贴"工具,但它还有更多强大的功能。这样,你的代码就正式添加到了Git仓库,并且附上了一条非常重要的备注,让你知道你当时添加了什么。

2024-04-02 18:35:41 236

原创 常用的前端开发语言有哪些(适合入门)

这些是前端开发中最常见的语言和框架,当然还有其他的工具和技术,如 Angular、jQuery 等。(JS):JavaScript 是一种强大的脚本语言,用于实现网页的交互功能。通过 JavaScript,您可以使网页对用户的操作做出响应,并且能够动态地更新和修改网页内容。:TypeScript 是 JavaScript 的超集,添加了静态类型检查和面向对象编程的特性。它采用组件化的思想,使开发人员能够将界面拆分成独立的、可复用的部分,提高了开发效率。前端开发语言是构建网页和应用程序用户界面的重要工具。

2024-04-02 18:32:10 170 1

原创 golang和Java对比

作为一门受欢迎的编程语言,Java拥有庞大的开发者社区和丰富的资源,这意味着您可以轻松地找到有关Java的学习资料、解决方案和帮助。Golang的社区相对较小,但也在不断扩大,随着Golang的普及和应用范围的扩展,其就业前景也在逐渐增加。Java也拥有成熟的并发库,但相对于Golang来说,处理并发可能需要更多的工作。Java有着庞大而强大的生态系统,拥有大量的开源库和框架,可以满足各种各样的开发需求。Golang在简洁性和高并发方面的优势很明显,但Java在大型项目、可靠性和生态系统方面表现出色。

2024-04-02 18:30:15 371 1

原创 在spring boot中利用自定义注解+hutool工具+自定义序列化器来实现注解脱敏(动态控制数据脱敏处理的实现)

在 Spring 中,我们可以通过自定义注解在Controller层标记需要脱敏的方法。这里,我们将定义一个名为的注解,用于标记需要进行数据脱敏的 Controller 方法。下面是这个注解的定义中,@Target 指定了这个注解可以应用到的 Java 元素类型,这里我们允许它应用到方法(@Retention则指定了这个注解的生命周期,意味着这个注解在运行时仍然有效,这样我们就可以在运行时通过反射来检查这个注解。// ...在这个例子中,getUser()

2024-04-02 18:24:16 1422 1

原创 spring和spring boot的区别

Spring Boot是基于Spring框架的快速开发框架。它旨在简化Spring应用程序的配置和部署。Spring Boot采用了约定优于配置的原则,通过自动配置和起步依赖,大大减少了开发人员的繁琐配置工作。总结一下,Spring是一个强大的应用程序框架,提供了广泛的功能和模块,而Spring Boot是基于Spring框架的快速开发框架,旨在简化配置和部署工作。Spring是一个完整的框架,而Spring Boot是Spring框架的一个扩展,旨在让开发者更加轻松快速地构建Spring应用程序。

2024-04-02 18:22:24 101 1

原创 Java入门程序员必备开发工具(IDE)推荐

VS Code是一款轻量级、免费且功能强大的文本编辑器,通过安装Java相关的插件,你可以将其转变为一个功能强大的Java IDE。NetBeans: NetBeans是另一款流行的跨平台Java IDE,也是一款免费、开源的软件。它是一款由JetBrains开发的商业IDE,提供强大的代码编辑、智能代码补全、调试和版本控制等功能。它具备强大的代码编写和调试功能,支持各种插件扩展,使你可以根据自己的需求进行定制。无论你选择哪个,重要的是找到一个符合你需求、使用舒适的工具。祝你编写Java程序愉快!

2024-04-02 18:22:09 177 3

转载 Linux内存不够如何添加SWAP 交换虚拟内存

原文链接:https://blog.csdn.net/qq_35456400/article/details/120061398。使用root用户登陆linux。初始化硬盘为swap格式。先分出一个1G的硬盘。

2023-09-01 11:26:18 149 1

原创 构建jar包时报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (defau

2、在菜单栏中的file -> Project Structure,修改其中的JDK版本。出现以上错误是因为环境JDK的版本与maven中定义的版本不一致。在pom.xml文件中查看jdk的版本。在环境中安装对应的版本。1、修改pom.xml中的版本,比如将17版本改为8。修改项目JD看版本。这里需要修改的有两处。

2023-08-16 16:55:00 1673 1

原创 @RequestParam和@RequestBody

用来绑定查询参数(也就是在URL上的参数)和from data(也就是请求体,对应postman中的 from-data)的。只要我发起请求时删除放在URL上和使用from data传参都可以使用来接收。

2022-11-10 13:51:34 5583 1

原创 mybatis-plus中使用MySQL函数

该方法可用于数据库函数 动态入参的params对应前面applySql内部的{index}部分.这样是不会有sql注入风险的,反之会有!只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用,也就是说会把之前的覆盖掉。来拼接在最后,无视优化规则直接拼接到 sql 的最后,然后再拼上排序就可以。一开始我想到的是,使用Mybatis-plus(后面简称MP) 中的。加上引号的原因,MP识别不到占位符。错误解释,只有一个占位,却来两个参数,导致不能运行。函数(其实我也没想到,度娘告诉我的)。

2022-11-03 15:14:43 4604

原创 springboot数据校验——Hibernate Validator

Get、Delete请求一般会使用RequestParam/PathVariable形式参数参数,这种形式的参数校验一般需要以下两个步骤,如果校验失败,会抛出ConstraintViolationException异常。背景:在执行保存和更新操作的时候,校验的参数可能存在差异,比如保存的时候不需要校验Id,而更新的时候就需要校验id(主键),写两个实体类复用率会很低。POST、PUT请求一般会使用requestBody传递参数,这种情况下,在入参对象上添加@Validated注解就能实现自动参数校验。

2022-10-28 17:05:18 1176

原创 自定义全局异常处理

在做前后端分离项目中,前端请求的时候服务器发生错误,服务器会返回一堆错误信息,不规范也不好处理。再比如非前后端分离项目是,系统发生错误,也会直接返回一大堆错误信息给用户,导致页面非常的混乱不美观,我们也不需要用户知道发生了什么错误。只返回服务器错误即可。

2022-10-28 11:07:12 650

原创 自定义系统操作日志

使用切面编程原理来实现

2022-10-28 10:45:26 141

原创 docker 镜像生成<none>的原因

dockerfile 去构建新的镜像,其构建的镜像同名,之前的镜像就会变成none,被新的镜像所替代,如果构建的文件没有发送改变,则会使用与之相同的镜像,不会生成新的镜像。如果构建的文件有变化的话,就会生成新的镜像,如果镜像库里有重名的镜像,就会将重名的镜像设置为none。并不是所none的镜像就是无用的,如果还有容器引用的话,那还是有用的。总结:要构建新的镜像,要看有没有和要构建的镜像名字和tag都相同的镜像,如果有,要先删除。如果要删除已有的镜像,要先查看是否有容器使用,要先删除容器在删除镜像。

2022-10-21 15:51:15 6617 1

原创 java——“&“ “&&“ “|“ “||“ “>>“ “>>>“ 的区别

最低位的 1:A & (-A),最低位的 1 一般记为 lowbit(A)~ 符号,~x ,按位取反操作,将 x 在二进制下的每一位取反。判断是否是 2 的幂 :A & (A - 1) == 0。

2022-04-19 14:58:01 5

原创 算法——冒泡排序

冒泡排序概念冒泡排序是一种最简单的交换排序方法,它通过两两相比交换相邻记录的关键字,如果发送逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”,或者使关键字大的记录如石块一样逐渐向下“坠落”。算法步骤设待排序的记录存放在数组r[1···n]中。首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即r[1]>r[2]),则交换两个记录。然后比较第二个记录和第三个记录的关键字。以此类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。上诉过程称作第一趟排序,其

2022-04-17 19:02:01 346

原创 力扣——707. 设计链表

class MyLinkedList { int size; ListNode head, tail; public MyLinkedList() { size = 0; head=tail=new ListNode(0); head.next=null; tail.prev=null; } public int get(int index) { if(index<0||index

2022-04-16 23:32:27 59

原创 算法——二分查找

二分查找的概念二分查找也称为折半查找。查找要求要求为线性表且采用顺序存储结构,而且表中的元素按关键字有序排序。查找过程从表的中间记录开始,如果给定的值和中间的记录的关键字相等,则查找成功;如果给定的值大于或小于中间记录的关键字,则在表中大于或小于中间记录的那一半查找,这样重复的操作,直到查找成功,或者在某一步中查找区间为空,则代表查找失败。为了标记查找过程中每一位的查找区间,下面分别用low和high来表示当前查找的下届和上界,mid为区间的中间位置。查找步骤置查找区间初值,low=1

2022-04-16 16:38:52 520

原创 数据结构与算法学习笔记(java版)——第三章 链表

第三章 链表

2022-04-12 22:41:14 880

原创 数据结构与算法学习笔记(java版)——第二章 队列

第二章 队列1.1.1 队列的介绍队列是一个有效列表,可以用数组或是链表来实现队列遵循先进先出的原则,与栈的后进先出相对应。示意图1.1.2 队列的实现方式数组的方式:队列本身是有序列表,诺使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中MaxSize是该队列的最大容量。因为队列的输出、输入时分别从前后端来处理,因此需要两个变量front(队头)和rear(队尾)分别记录队列前后端的下标,front会随数据输出而改变,而rear则时随数据输入二改变。 代码实现介

2022-02-06 23:18:38 431

原创 数据结构与算法学习笔记(java版)——第一章 稀疏数组

第一章 稀疏数组1.1.1 稀疏数组介绍当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模1.1.2 实例介绍左侧的是原始的二维数组,右侧的是稀疏数组。稀疏数组的第一行是记录原始二维数组的行和列以及二维数组的有效值的总和。从第一列开始将记录原始二维数组的位置以及值(行、列、值的形式记录)。(以上都是从零开始记录,例如第一行的行值是

2022-02-03 22:55:54 785

数据库管理工具Chat2DB

聊天式查询数据库

2023-10-20

空空如也

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

TA关注的人

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