Java
SpringBoot 使用 Sa-Token 完成路由拦截鉴权
一、需求分析 在前文,我们详细的讲述了在 Sa-Token 如何使用注解进行权限认证,注解鉴权虽然方便,却并不适合所有鉴权场景。 假设有如下需求:项目中所有接口均需要登录认证校验,只有 “登录接口” 本身对外开放。 如果我们对项目所有接口都加上 @SaCheckLogin 注解,会显得非常冗余且没有必要,在这个需求中我们真正需要的是一种基于路由拦截的鉴权模式,那么在 Sa-Token 怎么实现路由
《数据结构与算法》之数据的顺存储
导言: 数据结构中,对一些数据序列我们使用的是顺序的方式存储,比较常见的有数组,链表,这些都是最基本的顺序存储的结构,我们会用几个简单的例子来描述顺序存储的方式和演变 我们知道顺序存储中有链表,有链表我们就必须知道指针,所以我们先复习一下指针,再来看顺序存储 一.指针 在C语言中,我们第一次了解函数的时候,大多数人认识的应该都是 scanf()函数,它是stdio.h 库下的一个标准函
如何使用JavaFX写一个HelloWorld窗口
准备工作 首先我们需要安装好 JDK ,我使用 JDK1.8 来做开发,而 JDK1.8 内置了 JavaFX ,所以不需要从外部引入依赖。 在这里下载 JDK1.8: 打开命令提示行验证一下自己的 JDK 版本: 接下来我们需要一个 IDE 开发环境,可以使用 IDEA 社区版本。 在这里下载 IDEA 社区版本: 或者去官网下载最新的版本。 编写 HelloWorld 程序 新建一个
SpringIOC个人笔记
上一章讲解了SpringBoot中的 AutoConfiguration自动装配,而这一章就来讲讲自动装配时会用到的Spring三大特性之一的IOC控制反转。 使用过Spring的人都熟知,SpringIOC容器可以在对象生成或初始化时就直接将数据注入到对象中,如果对象A的属性是另一个对象B,还可以将这个对象B的引用注入到注入到A的数据域中. 如果在初始化对象A的时候,对象B还没有进行初
Android中返回数据给上一个Activity
第一种方式:startActivityForResult 创建两个Activity:MainActivity、SecondActivity MainActivity.kt startActivityForResult方法接收两个参数,第一个参数是Intent;第二个参数是请求码,用于在之后的回调函数onActivityResult中判断数据来源。这里我们使用了startActivityFor
两个变量交换的四种方法(Java)
对于两种变量的交换,我发现四种方法,下面我用Java来演示一下。 1.利用第三个变量交换数值,简单的方法。 (代码演示一下) 1 class TestEV 2 //创建一个类 3 { 4 public static void main(String[]args) 5 { 6 int x =5,y=10; //定义两个变量 7
怎么玩转ChatGPT?
ChatGPT 自去年 12 月发布以来,便开始在技术圈引起热议。 今年 2 月份,ChatGPT 用户数突破一亿,成为有史以来,最快突破一亿用户的产品。 由于近期关于 ChatGPT 相关的讨论比较多,因此,我们整理了一份《玩转 ChatGPT》手册,希望能帮助大家更好的了解以及使用这款产品。 这里面包含了 ChatGPT 快速上手方式、千奇百怪的玩法与应用技巧、Prompt 调教指南、赚钱指南
【算法题】骆驼命名法
题目链接:https://www.nowcoder.com/questionTerminal/aed1c7bbc2604e7c9661a2348b0541b8?answerType=1&f=discussion 从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:
如何在UBUNTU中卸载 OpenJDK,安装 Oracle JDK 17
可以按照以下步骤在 Ubuntu 中卸载 OpenJDK: 1. 打开终端并输入以下命令,列出您系统上已安装的 Java 软件包: ``` dpkg --list | grep -Ei "jdk|jre" ``` 该命令会显示您系统上已安装的 Java 软件包的清单。 2. 选择您想要卸载的 Java 软件包并输入以下命令进行卸载。例如,如果您想要卸载 OpenJDK 11:
Java 世界的法外狂徒:反射
概述 反射(Reflection)机制是指在运行时动态地获取类的信息以及操作类的成员(字段、方法、构造函数等)的能力。通过反射,我们可以在编译时期未知具体类型的情况下,通过运行时的动态查找和调用。 虽然 Java 是静态的编译型语言,但是反射特性的加入,提供一种直接操作对象外的另一种方式,让 Java 具备的一些灵活性和动态性,我们可以通过本篇文章来详细了解它 为什么需要反射 ? Java 需
nacos 安装和使用
Nacos 是阿里巴巴开源项目,用于构建微服务应用的服务发现、配置管理和服务管理。 在微服务项目中不同模块之间服务调用时,实现服务注册与发现。 Nacos 使用: Nacos 是java开发的,依赖 Java 环境来运行 Nacos的下载https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.
踩坑:nacos启动报错提示需要设置JDK环境 ,报错:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!
换了个Windows11的新电脑,因为个人工作、学习需要,就重新下载了Nacos并解压使用,结果就踩了个坑,使用下面命令启动Nacos服务端时: startup.cmd -m standalone 直接在黑窗口提示:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or lat
JAVA中的接口详解
JAVA中的接口详解 接口中成员的特点 成员变量:只能是常量 默认修饰符:public,static,final 构造方法:没有 成员方法:只能是抽象方法 默认修饰符:public,abstract 接口和类的关系 类和类的关系:继承关系,只能是单继承,不能多继承,但可以多层继承 类和接口的关系:实现关系,可单实现,也可多实现,还可以在继承一个类的同时实现多个接口 接口和
国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?
H265/H264有何不同,h265有什么优势? 文心一言: H.264和H.265是两种不同的视频编码标准,它们在压缩质量和带宽需求方面有所不同。 H.264是一种高效的视频压缩标准,它的编码单位是宏块(macroblock),每个宏块的大小是固定的16x16像素。H.264的优点是压缩比高,可以减少视频文件的大小,同时保持较高的图像质量。但是,H.264也有一些缺点,例如在处理复杂场景时可能会
2023-05-21:给定一个字符串 s 和一个整数 k 。你可以从 s 的前 k 个字母中选择一个, 并把它加到字符串的末尾。 返回 在应用上述步骤的任意数量的移动后,字典上最小的字符串。 输入:s
2023-05-21:给定一个字符串 s 和一个整数 k 。你可以从 s 的前 k 个字母中选择一个, 并把它加到字符串的末尾。 返回 在应用上述步骤的任意数量的移动后,字典上最小的字符串。 输入:s = "baaca", k = 3。 输出:"aaabc"。 答案2023-05-21: 大体过程如下: 1.当 k 大于 1 时,直接将字符串 s 中的字符按照字典序排序,得到排序后的字符串 s',
String类,String、StringBuffer、StringBuilder、StringTokenizer
String类 String 字符串:一串连续的字符,也是一串连续的char,Java中将char数组进行封装来表达字符串。 String是不可变性,即对象本身的属性或对象本身的数据不变,重新赋值是变量(存放在堆中)指向堆中新创建的对象;可变的:可以修改对象的属性 查看String源码可以观察到,final修饰的char数组且为私有成员变量(private); final修饰表示其不能指向新的
Javascript 代码分割
代码分割是指构建工具将构建后的 JavaScript 包拆分为多个较小的,可以按需或并行加载的文件。通过适当的代码分割,页面加载时需要的功能可以立即下载,而额外的块只在需要时才加载,从而提高性能。 像 Rollup (Vite 就是基于它之上开发的) 或者 webpack 这样的打包工具可以通过分析 ESM 动态导入的语法来自动进行代码分割: // lazy.js 及其依赖会被拆分到
babylon.js 学习笔记(5)
前面我们画的小房子,基本上都是用内置的标准形状组合而成,但并非所有对象都这么简单,今天我们来画一个小汽车,汽车由多个零件组成,控制这些零件的缩放、位置、旋转,如果每个都单独用代码来修改position/roration/scaling,未免太复杂,幸好babylon.js中,对象有所谓的child/parent 关系。简单来说,如果A是B的parent,则对A的任何位置/缩放/旋转,其child也
由start函数浅析Java Thread
由start函数浅析Java Thread Java的Thread由创建到实际运行在底层都分别对应着不同主机平台上的线程,如Linux使用pthread_create()函数来创建线程、windows平台使用_beginthreadex()函数来创建线程。下面基于java.lang.Thread.java中的start函数的源码对线程创建及启动进行分析(以hotspot虚拟机为例)。 Java 层
Tomcat闪退的解决办法
1 首先考虑的是端口占用 2 现在讲的是这一种方法 (1)找到解压缩的文件的bin目录 找到startup.bat 记事本打开 开头加上两句话 SET JAVA_HOME= 这里是jdk的安装目录 SET TOMCAT_HOME= 这里是tomcat解压缩后的目录 (2)同上面一样的打开shutdow.bat 开头加上两句话
自定义一个springboot starter
1.自定义starter的作用 在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,比如阿里云oss存储的时候,我们需要一个工具类进行文件上传。我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,这样会非常麻烦。如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要在 maven pom
如何正确的处理spring的声明式事务
1. 前言 Spring 针对 Java Transaction API (JTA)、JDBC、Hibernate 和 Java Persistence API (JPA) 等事务 API,实现了一致的编程模型,我们大多数做业务开发的时候,通常就在业务方法上使用声明式注解 @Transactional 来开启事务,大多数我们就没有去关注事务是否会生效,出错后事务是否能正确回滚,所以这里是有“坑”
springboot里自定义一个filter
在日常项目开发的时候,通常我们需要拦截非法请求,比如如果未登录就会拦截请求,返回给前端一个去登录的信息,然后前端跳转登录页面, 那么这个要怎么实现呢,其实我们可以使用过滤器和拦截器,我们暂时先介绍过滤器的基本实现。 1.filter的三个重要方法 init() : 初始化参数,在Filter创建时调用,并且只调用一次 doFilter(): 拦截时调用,客户端发送和响应时调用 destroy()
java基于的springboot+vue4S店车辆管理系统,车辆销售管理系统,附源码+数据库+lw文档+PPT
1、项目介绍 首先介绍了4S店车辆管理的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是功能测试、单元测试和性能测试。测试结果表明,该系统能够实现所需
springboot自定义拦截器
之前使用过滤器实现了拦截没有登录的请求,现在使用springboot的拦截器实现 1.LoginCheckInterceptor.java 2.WebConfig.java