- 博客(140)
- 收藏
- 关注
原创 【软考中级软件设计师】数据表示:原码、反码、补码、移码、浮点数
定义:移码(Excess-K,又称偏移二进制码)是一种用于浮点数指数部分的编码方式,其核心思想是通过固定偏移量。所有的数据,无论是数字、文字还是图片、声音,最终都要转换成二进制形式存储和处理。上点难度,附加题:什么情况下移码等于补码的符号位取反?1、循环进位问题:最高位进位需循环加到最低位(如 -0 的计算)。4、符号位参与运算:符号位与数值位统一处理,无需特殊判断。设计目的:便于浮点数比较,避免符号位干扰指数大小判断。1、运算复杂:加减法需判断符号位,硬件电路设计复杂。负数符号位不变,其余位。
2025-04-04 18:38:07
420
原创 【闭包】前端的“保护神”——闭包详解+底层原理
它们能够保持对外部数据(如事件触发时的状态、函数参数等)的访问,即使在异步操作完成后,闭包仍然能够访问这些数据。你可以将某些功能封装在闭包内部,外部只能通过公开的方法调用它们,从而达到隐藏细节、减少外部依赖的目的。闭包提供了数据封装的能力,可以将状态和行为封装在一个函数内部,并通过暴露的接口与外部进行交互。闭包可以用于权限管理和角色管理的场景中,通过闭包来封装不同角色的权限信息,从而提供灵活的权限控制。是私有的,外部无法直接访问。,即使这个函数在外部被调用时,依然能访问到其定义时的父函数的局部变量。
2024-12-21 09:30:00
693
1
原创 【易混概念】执行上下文和内存空间的联系区别
执行上下文描述的是代码执行的环境(如当前函数的作用域、this 绑定、代码的执行顺序等),它是抽象的。内存空间是存储数据的实际物理内存区域,存储了函数的局部变量、对象、数组等数据,且通常分为栈内存和堆内存。联系:每个执行上下文的创建都会伴随着内存空间的分配。执行上下文销毁时,它所对应的内存空间也会被回收,除非该内存空间被闭包引用,才能保持在内存中。
2024-12-21 09:30:00
76
原创 序列化和反序列化,objectMapper 详解
常用方法: 将 Java 对象序列化为 JSON 字符串。: 将 JSON 字符串反序列化为 Java 对象。: 将 Java 对象序列化为 JSON 并写入文件。: 将 JSON 字符串解析为 JsonNode 树,可以方便地进行树形结构操作。: 配置反序列化特性,如是否允许未知属性等。常见的配置//创建ObjectMapper对象//configure方法 配置一些需要的参数// 转换为格式化的json 显示出来的格式美化//序列化的时候序列对象的那些属性。
2024-08-29 19:35:40
1064
原创 【注解】反序列化时匹配多个 JSON 属性名 @JsonAlias 详解
JsonAlias注解是 Jackson 提供的一个功能强大的注解,。它适用于在处理多种输入数据格式时,或当 JSON 数据的键名可能变化时。
2024-08-23 17:11:53
1681
原创 【注解】@JsonProperty 详解
如果 Java 类中的字段名与 JSON 属性名不同,你可以通过进行映射。@JsonProperty("名称") private String name;@JsonProperty("年龄") private int age;@JsonProperty("性别") private String gender;return age;} }@JsonProperty("名称") private String name;
2024-08-23 16:57:38
10288
原创 【开发情景】数据库存的JSON数据转为Map,key值是中文,转成英文,转为json数据传给前端
先定义一个来存储中文键和英文键的映射关系。static {keyMap.put("名称", "name");keyMap.put("年龄", "age");keyMap.put("性别", "gender");// 可以继续添加更多的键值对映射// 如果找不到映射,保持原样在 User 类中,使用注解来指定 JSON 键与类字段之间的映射关系。@JsonProperty("名称") private String name;
2024-08-23 16:41:28
2170
原创 【异常】JAVA常见异常
受检异常需要在编译时处理,而非受检异常通常是在运行时抛出,并且不强制要求在编译时处理。这些异常在编译时必须要处理,通常需要使用 try-catch 块或在方法签名中声明。当应用程序试图通过字符串名称加载类时,如果在类路径中找不到对应的类,则抛出此异常。当方法在不适当的时刻被调用时抛出。当试图将字符串转换为数值类型时,如果字符串的格式不正确,则抛出此异常。通常在输入输出操作失败或中断时抛出,比如文件操作、网络通信等。这些异常在编译时不强制要求处理,通常在运行时抛出。当试图将对象强制转换为不兼容的类型时抛出。
2024-06-06 15:36:06
986
原创 【Spring】DynamicDataSourceHolder 动态数据源切换
*** 设置数据源* @param dataSourceKey 数据源标识*//*** 获取数据源* @return 数据源标识*//*** 清除数据源*/在Spring配置中定义数据源,并将动态数据源配置为主数据源。import org。
2024-05-27 15:44:12
1241
原创 【JAVA】JSONObject.fromObject(message)引发的JSONObject 详解
JSONObject是处理 JSON 数据的一个核心类,它提供了一种轻量级的数据结构,可以方便地解析和生成 JSON 格式的数据。以下是对JSONObject的一个简要介绍,包括其用途、基本操作和常用方法。JSONObject 的用途解析 JSON 字符串:将 JSON 格式的字符串解析成 Java 对象,以便于访问和操作其中的数据。生成 JSON 字符串:将 Java 对象转换成 JSON 格式的字符串,以便于数据交换和存储。
2024-05-27 10:52:28
1938
原创 【网络】gateway 可以提供的一些功能之三 “ 支持Eureka服务发现 ”
因为在微服务架构中,服务数量庞大且动态变化,需要一种机制来管理和发现这些服务,而 Eureka 作为一种服务注册中心,提供了服务注册和发现的功能,可以让服务之间相互发现和通信。而网关则负责对外提供服务的入口,并进行流量控制、安全检查、请求转发等功能,通过与 Eureka 集成,网关可以动态地从 Eureka 中获取服务信息,实现请求的转发和路由,从而简化了服务间通信的管理和维护。这样做的好处是,网关和微服务之间的通信变得更加灵活和动态,可以随时根据服务的变化来调整路由规则,同时也方便了服务的管理和监控。
2024-05-10 17:21:18
717
原创 【JAVA】JAVA的垃圾回收机制详解
对于Java的垃圾回收机制,它是Java虚拟机(JVM)提供的一种自动内存管理机制,主要负责回收不再使用的对象以释放内存空间。需要注意的是,全局变量的生命周期与整个应用程序的生命周期相同,因此如果全局变量引用的对象一直存在于内存中而不被释放,可能会造成内存泄漏。因此,在使用全局变量时要合理管理其生命周期,确保不再需要时及时释放,以减少内存占用和提高系统性能。
2024-05-10 15:02:26
1589
1
原创 【JAVA】JAVA中的静态变量、全局变量
因此,静态变量的作用范围是可以限定的,取决于其访问修饰符和所在的包结构。在实际开发中,要根据需求合理定义静态变量的访问修饰符,以确保数据的安全性和封装性。虽然静态变量可以被整个类的实例对象共享,但并不意味着它一定是全局的,它的作用范围是有限的,主要取决于其定义的位置和可访问性。通常情况下,单例模式中的静态变量是私有的,并且通过静态方法来获取该实例。被用来统计创建的对象个数,在每次创建对象时增加计数器的值。全局变量在Java中指的是整个应用程序范围内可访问的变量,通常是通过静态变量或者单例模式来实现的。
2024-05-09 17:45:56
3892
原创 【JAVA】类加载过程,以及类加载器
启动类加载器(Bootstrap Class Loader):负责加载Java的核心类库,例如java.lang.Object等。扩展类加载器(Extension Class Loader):负责加载Java的扩展类库,例如java.lang.String等。应用程序类加载器(Application Class Loader):也称为系统类加载器,负责加载应用程序的类,例如项目中自定义的类。自定义类加载器:开发者可以根据需要编写自定义的类加载器,用于加载特定的类或者资源。
2024-05-09 17:34:44
1379
原创 【网络】gateway 可以提供的一些功能之二 “ 提供Restful服务器路由转发 ”
你可以根据实际需求和项目结构,配置更多的路由规则和参数,以实现更复杂的RESTful服务路由转发。同时,还可以结合其他功能,如断路器、限流、日志记录等,来完善网关的功能。对于需要动态配置的路由转发,你可以使用一些灵活的配置方式,例如基于配置文件、数据库、注册中心等。当请求到来时,网关会根据请求体中的内容动态更新路由规则,实现动态路由转发。在这个示例中,假设有两个RESTful服务,分别是用户服务和产品服务,它们分别运行在。网关将会根据请求的路径,将匹配到的请求转发到相应的后端服务上。
2024-04-28 16:44:12
1785
原创 【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”
创建静态资源文件夹:首先,在你的项目中创建一个文件夹,用来存放静态资源文件,比如HTML、CSS、JavaScript文件等。这个配置将会把/static/**路径映射到classpath:/static/下的静态资源文件,例如index.html可以通过http://localhost:8080/static/index.html来访问。访问静态资源:当网关项目启动后,你可以通过浏览器或其他HTTP客户端访问配置的静态资源路径,查看静态页面或资源文件。要在网关实现中提供Web静态资源服务,你可以使用。
2024-04-28 15:16:55
2358
原创 【注解】 @SneakyThrows 自动捕获并处理异常
SneakyThrows 是 Lombok 库中的一个注解,用于简化 Java 异常处理的代码。这个注解可以自动抛出检查型异常(checked exceptions),而无需在方法签名中显式声明 throws 子句。这样做可以减少代码的冗余,特别是在你不想处理异常或只是想向上传递异常的情况下。
2024-04-28 11:09:05
4105
1
原创 【idea】idea 中 git 分支多个提交合并一个提交到新的分支
- `commit`:命令用于将你的代码变更保存到**本地代码仓库**中,它创建了一个新的提交(commit)记录,记录了代码的变更内容以及相关的提交信息(如作者、时间、提交说明等)。- `push`:命令用于将本地仓库中的代码推送(上传)到**远程代码仓库**,将你的代码变更分享给其他开发者或者备份到远程服务器。- `cherry pick`:命令用于从一个分支中**选择性地合并某个提交(commit)到当前分支**,它允许你只合并需要的提交而不是整个分支的变更。- `squash`: 用于将**多
2024-04-25 16:21:24
10317
3
原创 【JAVA】java 中的Stream 常用函数
Java中的Stream是一种用于处理集合元素的工具,它提供了一种流式操作的方式,可以轻松地对集合进行过滤、映射、聚合等操作,以及进行并行处理。Stream是Java 8引入的一种新的抽象概念,它代表了一种数据元素的序列。Stream不是数据结构,而是数据元素的流水线,可以进行一系列的操作来处理这些元素。
2024-04-25 11:33:00
1999
原创 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
如果contentKeyword参数为NULL,那么就返回空字符串,然后检查bp.title或bp.content是否包含该关键词的子串。可以有多个参数,如果第一个参数不为空,则返回第一个参数的值;如果第一个参数为空,则继续检查第二个参数,以此类推。这一点在构建包含潜在NULL值的数据库查询时特别重要,因为它可能影响到你的查询结果。函数是一个非常实用的字符串函数,用于将两个或多个字符串参数连接成一个单一的字符串。函数总是返回第一个非空参数的值。,也不会影响其他条件的判断,从而实现了动态条件的查询。
2024-04-24 17:11:51
11531
原创 【注解】Mapper的注解 @Mapper、@Repository、@MapperScan
Mapper是 Mybatis 的注解,和 Spring 没有关系,是 Spring 的注解,用于声明一个 Bean。是Spring Boot 提供的注解,用于指定要扫描的Mapper接口包路径,并将这些接口自动注册为Spring Bean。
2024-04-24 09:28:18
8877
原创 【JAVA】final
在Java中,final是一个关键字,它可以用于声明类、方法和变量。final当final关键字用于变量时,这意味着该变量一旦被初始化之后,其值就不能再被改变。对于基本数据类型,这意味着你不能改变基本值;对于引用类型的变量,这意味着你不能再让它引用另一个对象,但是所指向的对象的内部状态是可以改变的(除非对象本身也全部由final字段组成)。当一个方法被声明为final时,这意味着这个方法不能在子类中被覆盖(重写)。这常用于防止继承层次中的行为被修改,或者确保方法的行为在整个继承结构中保持一致性。
2024-04-22 17:11:21
283
原创 【idea】一个新的项目代码,从零上传到Gitee仓库
首先我们在 file -》setting -》Version Control -》Gitee 里增加 Gitee 用户,这个地方要输入gitee的账号和密码,用的是邮箱。配置完成之后,就是要把我们的代码分享到 Gitee 云端了。在 VSC 菜单中找到 Share Project on Gitee ,分享。再去远端 https://gitee.com/ 检查一下。仓库创建完成就会让我们 add 代码到仓库里。会出现让我们填写远端仓库的名称,以及描述。
2024-04-18 19:14:25
278
原创 【JAVA】Assert.isTrue()来做判断,并抛出异常
是一种断言(Assertion)方法,通常用于测试或验证代码中的逻辑条件是否为真。在许多编程语言和测试框架中都有类似的断言方法,用于编写单元测试或确保代码中的条件符合预期。必须为真,否则会抛出一个断言错误,并显示指定的错误消息。这种断言方法对于确保代码中的逻辑正确性非常有用,尤其在编写单元测试时能够帮助捕捉潜在的问题。方法通常是测试框架中的一部分,如果你想使用它,需要确保你的项目中已经包含了对应的测试库,并按照该测试框架的规范来编写和运行测试代码。它用于在测试中验证某个条件是否为真。
2024-04-11 19:49:30
3972
原创 【数据库】GROUP BY 详解、示例、注意事项
GROUP BY语句在 SQL 中用于将来自数据库表的记录分组,以便可以对每个组执行聚合函数(如COUNT()MAX()MIN()SUM()AVG()等)。使用GROUP BY时,数据库会根据一个或多个列的值将结果集分为多个分组,在每个分组内可以独立地使用聚合函数。GROUP BY通常与SELECT语句一起使用,以汇总每个分组的数据。
2024-04-11 16:28:11
44142
原创 【JAVA】StringBuffer详解,和StringBuilder区别
StringBuffer 是 Java 中用于表示可变字符序列的一个类。它和是线程安全的,这意味着它的方法是同步的,可以在多线程环境中安全地使用。相比之下,不是线程安全的,但它在单线程环境下运行得更快。由于中的大多数方法都通过使用内部锁同步,这就使得它在多线程操作中可以避免数据不一致的问题。然而,这种线程安全特性也意味着如果你的应用不需要在多线程环境中操作字符串,使用可能会导致不必要的性能开销。
2024-04-08 15:14:36
1479
原创 【JAVA】StringBuilder 详解,append 源码分析,及其底层思想剖析应用
StringBuilder 是一个在 Java 编程语言中非常有用的类,用于创建和操作动态字符串。与字符串(String)类不同,StringBuilder 允许进行可变字符串操作,这意味着你可以在不生成新对象的情况下修改字符串的内容,从而提高了处理字符串时的效率和性能。StringBuilder 类是在 Java 5 中引入的,作为一个对 StringBuffer 类的轻量级和不同步的替代品。由于StringBuilder 不是线程安全的。
2024-04-08 14:38:32
1612
原创 【软考】23种设计模式详解,记忆方式,并举例说明
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是工厂方法模式的一种扩展,它用于处理多维度的大规模产品族,而不是单一产品的创建问题。抽象工厂模式可以想象成一个大型工厂,这个大工厂里有好几个小工厂,每个小工厂负责生产一系列相关的产品。这种设计模式的核心就是帮助我们在不直接指定具体类的情况下创建一系列相关或依赖对象。
2024-04-07 16:31:31
4651
1
原创 【Spring】Spring框架中的一个核心接口ApplicationContext 简介,以及入口 Run() 的源码分析
ApplicationContext 是Spring框架中的一个核心接口,它是Spring IoC容器的实现之一,用于管理和组织应用程序中的各种Bean,同时提供了一系列功能来支持依赖注入、AOP等特性。简单来说,ApplicationContext 是一个大型的、高级的Spring IoC容器,它扩展了BeanFactory接口,提供了更多的功能和特性,比如事件传播、国际化支持、资源加载、生命周期回调等。
2024-03-26 17:13:25
1668
1
原创 【事务】开发用到的事务,TransactionDefinition实例详解,事务的传播机制
是Spring框架中定义事务属性的接口。它提供了定义事务的各种属性和行为的方法,包括事务的隔离级别、传播行为、超时设置等。在Spring中,通过TransactionDefinition可以灵活地配置事务的行为,以满足不同业务场景的需求。
2024-03-22 18:09:58
2249
原创 【软考】数据库范式详解 (1NF、2NF、3NF、BCNF;包括候选键、非平凡函数)
1NF、2NF、3NF和BCNF是关系数据库中常用的范式(Normalization)概念,用于设计规范化的数据库模式,确保数据库的数据结构良好、无冗余、便于管理和维护。
2024-03-21 14:27:04
2173
原创 【软考】关系代数篇(基础操作、关系公式、各种连接)
关系代数是数据库管理系统中的一种数学工具,用于描述和操作关系数据库中的数据。基本运算:关系代数定义了一些基本的运算,如选择、投影、连接、并、差等,用于从一个或多个关系中获取所需的数据。关系操作:这些基本运算可以组合使用,形成更复杂的关系操作,如自然连接、交集、并集、除法等,用于实现更复杂的数据查询和操作。完备性:关系代数是完备的,即可以通过组合基本运算来实现所有可能的数据库操作。形式化:关系代数提供了一种形式化的方式来描述数据库操作,使得数据库系统的设计和实现更加规范和易于理解。理论基础。
2024-03-21 10:59:08
3771
2
原创 【JAVA】实体类继承关系,强制转换的例子
在方法m1中传递的参数是类型为B的对象(b),而b实际上是类A的对象,因为类A继承了公共类B。由于私有属性tt只能在类A内部访问,您需要通过类A提供的公共方法来间接获取私有属性tt的值。在Java中,如果尝试将一个对象强制转换为其不是实际类型的父类或子类,或者尝试将一个对象转换为与其不兼容的接口类型,就会抛出。如果类A和类B之间存在继承或实现关系,但强制转换的方向不正确(例如,将类B转换为类A而不是将类A转换为类B),也会导致ClassCastException异常。接收的参数类型为B的对象。
2024-03-20 15:02:47
622
原创 【JAVA】多种情况下的判空操作
这种判断适用于需要处理具有实际内容的字符串,即字符串中包含有意义的字符或数据。例如,输入框中的用户输入、文件中的文本内容等,这些内容可能对程序逻辑有影响,因此需要确保字符串不为空,才能继续进行后续的处理或操作。需要注意的是,这些方法适用于不同类型的数据,包括字符串、字符数组、集合、Map、数组以及普通对象。在判空时,**通常会先判断对象或字符串不为 null,然后再进一步判断对象或字符串是否为空或空白字符。例如,输入框中的用户输入如果只包含空格或空白字符,可能需要视作空值处理,而不是有效的数据。
2024-03-20 14:35:53
1555
原创 【JAVA】ifPresent 的使用
在上面的示例中,我们首先创建了一个包含值的 Optional 对象和一个空的 Optional 对象。而对于空的 Optional 对象,则不会执行任何操作。在 Java 中,ifPresent 是一个用于 Optional 类型的方法,用于检查 Optional 对象中是否存在值并执行相应的操作。ifPresent 方法接受一个 Consumer 函数式接口作为参数,如果 Optional 对象中包含值,则将该值传递给 Consumer 接口的实现方法。
2024-03-15 13:52:09
8245
1
原创 【JAVA】Date、LocalDate、LocalDateTime 详解,实践应用
在 Java 中,处理日期和时间的方式经历了演变。在Java 8 之前,主要使用 java.util.Date 类来表示日期和时间,但它存在一些问题,如不可变性、线程安全性等。Java 8 引入了新的日期时间 API,位于 java.time 包中,提供了更加强大、易用和安全的日期时间处理方式。
2024-03-13 15:07:05
5101
1
原创 【JAVA】Collections.sort()方法详解
是 Java 集合框架(Java Collections Framework)中的一个静态方法,用于对列表(List)中的元素进行排序。此方法利用了 Java 的泛型机制,可以很方便地对各种类型的列表进行排序。源码方法体:参数list:需要排序的列表。列表中的元素必须实现了 Comparable 接口,以便能够比较它们的大小。
2024-03-11 15:25:52
11412
2
原创 【网络】主机连接 TCP 三次握手
所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点时间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。TCP进行可靠传输的关键就在于维护一个序列号,三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值。主要原因是当服务端收到客户端的 FIN 数据包后,服务端可能还有数据没发完,不会立即close。如果只是两次握手, 至多只有客户端的起始序列号能被确认, 服务器端的序列号则得不到确认。
2024-03-07 11:22:56
898
原创 【MybatisPlus】QueryWrapper、UpdateWrappe、LambdaQueryWrapper、LambdaUpdateWrapper
和都是 MyBatis-Plus 框架中用于构建条件的工具类,它们之间的关系是继承关系。其中和是基于普通的对象属性名来构建条件的,而和则是基于 Lambda 表达式来构建条件的。下面是AbstractWrapper中的方法。
2024-03-06 16:57:24
3993
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人