自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue数组操作之sort详解

要根据其他标准进行排序,可以传递一个比较函数。如果返回值小于 0,表示第一个参数应排在第二个参数前面。如果返回值等于 0,表示两个参数相等。如果返回值大于 0,表示第一个参数应排在第二个参数后面。

2024-07-22 16:43:31 134

原创 Vue数组操作之slice

在 Vue.js 中,slice() 方法用于提取数组的一部分,并返回一个新的数组。这个方法不会修改原数组,而是返回一个浅拷贝。slice() 的语法如下:array.slice(start, end)start:开始提取的位置(从 0 开始)。如果省略,默认为 0。end:结束提取的位置(不包括此位置的元素)。如果省略,默认为数组的长度。基本用法提取部分数组let fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'];

2024-07-22 16:42:27 71

原创 Vue中filter的使用

在 Vue.js 中,filter()方法用于创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。filter()不会改变原数组,而是返回一个新的数组。

2024-07-22 16:40:45 208

原创 Vue修饰符的使用

在自定义指令中,可以通过访问修饰符。// 具有 .lazy 修饰符的特定行为} else {el.focus();});

2024-07-22 16:38:07 184

原创 辨析数据库中平凡的函数依赖与非平凡的函数依赖

在这种情况下,班级对年龄的依赖就是非平凡的函数依赖,因为这种关系并不是直接显而易见的,而是通过多个属性的组合得到的。如果每个学生ID都唯一地对应一个姓名,那么这是平凡的函数依赖,因为这是显而易见的关系。这种情况下,有一些属性的组合会影响另一属性的值,而且这个关系不是平凡的,因为不是所有属性的组合都会导致相同的结果。例如,如果有属性A和属性B,而A总是等于B,那么A对B的函数依赖就是平凡的。非平凡的函数依赖则表示一个属性(或属性集合)的值取决于另一组属性,但这种依赖关。

2024-03-07 20:31:10 1176

原创 形参对象与复制构造以及析构函数的关系

2. 传递对象的引用: 如果函数接受的是对象的引用,即通过引用传递,那么在函数结束时,被引用的原始对象的析构函数不会被调用。1. 传递对象的副本: 如果函数接受的是对象的副本(通过值传递),在函数结束时,传递的副本的析构函数会被调用。总体而言,如果通过值传递对象,会调用对象的复制构造函数和析构函数,而通过引用传递对象,仅调用复制构造函数。在后者的情况下,被引用的原始对象在函数结束时并不会被销毁。// 函数接受对象的引用,函数结束时原始对象的析构函数不会被调用。

2024-03-06 21:18:50 342 1

原创 c++对象中静态成员函数与非静态成员变量的关系

在C++中,一个类的静态成员函数不能直接访问非静态成员变量,因为静态成员函数没有关联到具体的类实例,而非静态成员变量是与类的实例相关联的。静态成员函数是与类本身关联的,而非静态成员变量则是每个类的实例独有的。上述代码中,staticFunction 静态成员函数通过传递类的实例 obj 来访问 nonStaticVar 非静态成员变量。如果静态成员函数需要访问非静态成员变量,通常需要通过传递类的实例作为参数来实现,或者将非静态成员变量声明为静态成员变量。// 通过传递类的实例来访问非静态成员变量。

2024-03-05 22:15:30 149

原创 解析register,为什么类的数据成员不能为该类型

3. 不适用于类的成员: register 关键字通常用于函数的局部变量,而不是类的数据成员。对于类的成员,编译器有更好的优化策略,不需要额外的提示。在C++中,register 用于给编译器提示,表明一个变量将被频繁地使用,从而可能让编译器优化该变量的存储方式。2. 编译器自动优化: 现代编译器已经足够智能,能够根据代码的实际使用情况自动进行优化,不需要程序员手动指定 register。因此,尽管 register 关键字仍然存在于C++标准中,但在现代C++编程中,它很少被使用。

2024-03-05 20:29:37 333

原创 为什么说要用const替代#define以消除#define的不安全性

这可能导致宏的名称冲突,而且在不同的上下文中可能产生不同的结果。使用 const 替代 #define 的主要原因之一是为了消除 #define 的不安全性和潜在问题。• 使用 #define 定义的宏通常在每个使用它的地方都会被复制一份,可能导致冗余和更多的内存占用。• const 定义的常量有限的作用域,通常在特定的命名空间、类或函数中,有助于减少命名冲突。• const 常量有类型信息,它们可以放置在内存中的只读段,而不会占用额外的内存空间。

2024-03-05 17:12:57 250

原创 解析C++的作用域解析运算符::

• :: 用于访问全局作用域或命名空间作用域,以及类的静态成员。在类的非静态成员函数中,可以使用 this-> 来访问成员变量,而不必使用 ::。// 输出 Example 命名空间中的 value。

2024-03-05 17:03:36 201

原创 双引用与右值

的声明是合法的,但它创建了一个未初始化的右值引用 a。编译器通常允许这样的声明,但在使用 a 之前,您必须将其绑定到一个右值。如果在使用 a 之前没有绑定到右值,可能会导致未定义的行为。当然,这种情况下编译器可能会产生警告,因为未初始化的引用是一个潜在的错误。C++中不存在”引用的引用”的概念,因此连续使用两个 & 会导致编译错误。正确的做法是在声明时就将右值引用绑定到一个右值,或者确保在使用之前对其进行初始化。如果您想要使用引用,可以使用一层引用,如 int& q;,这表示 q 是一个对整数的引用。

2024-03-05 16:51:07 355

原创 C++中关于设置函数默认参数值的问题

默认参数值通常在函数的声明中指定,而不是在定义中。如果在函数声明和定义中都设置了默认参数值,那么只能在声明中设置一次。如果你在函数的声明和定义两个地方都设置了默认参数值,那么只能在它们中的一个地方设置。换句话说,如果你在函数声明的地方设置了默认参数值,就不要在函数定义的地方再重复设置。在这个例子中,b 的默认参数值只在函数声明中设置了一次。如果在函数的声明之后再次声明或定义,不允许再设置默认参数。总体来说,在函数中使用默认参数时,确保遵循上述规则和注意事项,以避免潜在的错误。

2024-03-05 16:43:58 424

原创 常指针,常量指针, char * const,const char *,const char *const

这声明了一个常量指针,指向字符(char),表示 name 是一个常量指针,即指针本身的值(指向的内存地址)是不可变的,但可以通过该指针修改所指向的字符。这样的声明中,指针本身是不可修改的,但指针所指向的内容是可以修改的。这意味着指针本身的值(指向的内存地址)是不可修改的,同时指针指向的字符内容也是不可修改的。在这个例子中,name 是一个指向字符串 “Hello” 的常量指针,您不能通过 name 修改指针的值(即不能让它指向其他地址),也不能通过 name 修改所指向字符的内容。

2024-03-05 16:32:59 159

原创 C++的类型转换方式

在现代C++中,推荐使用更安全、可读性更好的static_cast、dynamic_cast、const_cast和reinterpret_cast。• 在编码时显式指定的类型转换,可以通过C++的四种方式实现:static_cast、dynamic_cast、const_cast 和 reinterpret_cast。• 使用C风格的类型转换,如(int)、(double)等,不推荐在C++中使用,因为它们的安全性较差。

2024-03-04 17:56:49 165 1

原创 static_cast、dynamic_cast、const_cast 和 reinterpret_cast。的区别与联系

通常来说,static_cast 是最常用的,而 dynamic_cast 主要用于处理类层次结构中的多态情况,const_cast 用于处理 const 修饰符的变换,reinterpret_cast 的使用较为特殊,需要谨慎考虑。总体来说,static_cast、dynamic_cast、const_cast 和 reinterpret_cast 用于不同的场景,具有不同的安全性和适用性。• 用于底层的、不安全的类型转换,通常用于指针和整数之间的转换,或者进行底层的内存重解释。

2024-03-04 17:54:24 504 1

原创 C++的左值与右值以及移动构造函数

/ 2 + 3 是右值,temp 是右值引用。- **示例:** 常量、表达式 `2 + 3` 的结果、函数返回的临时对象等。- **示例:** 变量、对象、表达式 `x = 5` 中的 `x` 等。- **语法:** 左值是具有标识符的表达式,表示一个具名的内存位置。- **特点:** 一般是临时值,不具有持久性,不能在程序中引用多次。- **特点:** 可以取地址,有持久性,可以在程序中引用多次。- **语法:** 右值是临时的、无法取地址的表达式。4. **移动语义的应用场景:**

2024-03-04 15:01:57 709 1

原创 解决Spring Security使用过程中出现的403问题

4.接口已经再Spring Security的配置中设置了authenticated(),即需要授权,但忘记把过滤器添加到Spring Security中,这种情况不好发现,无法debug。被设置为authenticated()时需要获取对应的token授权后才可访问相应的接口。这个问题需要debug逐行查找。

2024-01-19 00:25:49 2011 1

原创 解决If you want an embedded database (H2, HSQL or Derby)...application.yml加载失败问题

【代码】解决If you want an embedded database (H2, HSQL or Derby)...application.yml加载失败问题。

2024-01-15 00:05:01 707

原创 双指针实现原地删除指定元素

你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须仅使用。, 并且 nums 中的前五个元素为。的元素,并返回移除后数组的新长度。函数应该返回新的长度。函数应该返回新的长度。

2024-01-05 17:56:21 356 1

转载 归并实现合并两个有序数组

注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。最终,合并后数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。个元素表示应合并的元素,后。需要合并 [1] 和 []。中,使合并后的数组同样按。合并结果是 [1]。合并结果是 [1]。

2024-01-05 17:30:34 374 1

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决!!!!

后来发现idea创建文件夹有问题,我是这样创建的。但是一一试过后发现没用!居然是idea偷懒了!

2024-01-04 11:06:46 455 1

空空如也

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

TA关注的人

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