自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个搬砖工人

这个楼什么什么时候可以建成呢

  • 博客(583)
  • 资源 (1)
  • 收藏
  • 关注

原创 SQL每日一题挑战计划

2021/4/1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 -- 确定学生的信息在Student表中,课程的分数在Course表中select a.* ,b.s_score as 01_score,c.s_score as 02_score from student a join score b on a.s_id=b.s_id and b.c_id='01'join score c on a.s_id=c.

2021-04-01 10:16:10 651

原创 请你谈谈:针对Mybatis引出的Spring事务的探究2:spring事务的失效

异常处理不当导致Spring事务失效的情况,通常发生在事务方法内部捕获了异常,但没有正确地将异常抛出给Spring的事务管理器,从而导致Spring无法识别到需要回滚事务的异常。在Spring中,默认情况下,只有运行时异常(如果方法抛出了检查型异常(即非运行时异常,需要显式地声明抛出或捕获的异常),并且没有特别的配置来指示 Spring 需要对这些异常进行事务回滚,那么事务将不会回滚。如果方法捕获了这些异常并进行了处理(比如吞掉了异常),而没有重新抛出,那么Spring就不会知道发生了需要回滚事务的情况。

2024-07-24 21:22:34 96

原创 请你谈谈:针对Mybatis引出的Spring事务的探究1: Spring的七种事务传播机制

在Spring框架中,事务管理是一个核心功能,它允许你声明性地管理事务边界和事务属性,包括传播行为、隔离级别、回滚规则等。事务的传播机制(Propagation Behavior)定义了事务方法被另一个事务方法调用时,事务应该如何进行。Spring 提供了七种标准的事务传播行为,这些行为控制了一个事务方法如何与另一个事务方法相互作用。

2024-07-22 21:42:57 107

原创 请你谈谈:Spring IOC(控制反转)和DI(依赖注入)在Spring框架中的核心作用

在上面的示例中,UserService类有一个UserDao类型的字段userDao,该字段上使用了@Autowired注解。此外,字段注入可能会使测试更加困难,因为依赖项是直接在字段上注入的,而不是通过构造函数或setter方法,这使得在测试中提供模拟依赖项变得更加复杂。对于userService bean,Spring会首先创建一个UserService的实例,然后调用其setUserDao方法,并将userDao bean的实例作为参数传递。对于UserService bean,我们使用。

2024-07-22 21:37:31 642

原创 请你谈谈:根据某些条件动态地设置 @Bean 方法的参数,以获取不同的Bean实例

在Spring框架中,通常类中的@Bean方法用于声明Spring容器中的Bean,并且这些Bean的创建和配置是在应用启动时完成的,而不是在每次HTTP请求时。然而,如果你想要根据前端传入的参数来动态地选择或配置Bean,你通常需要采用一些不同的策略,因为@Bean方法本身并不直接接收HTTP请求参数。

2024-07-22 21:24:36 187

原创 请你谈谈:spring bean的生命周期 - 阶段6:自定义销毁逻辑

在Spring框架中,当管理的bean不再需要时(比如Spring容器关闭时),有时需要执行一些清理或销毁逻辑,以确保资源被正确释放,避免内存泄漏等问题。类似于自定义初始化逻辑,Spring也提供了两种方式来自定义销毁逻辑:实现接口和配置参数。

2024-07-22 20:12:38 151

原创 请你谈谈:spring bean的生命周期 - 阶段5:BeanPostProcessor前置处理-自定义初始化逻辑-BeanPostProcess后置处理

的方法是在bean的依赖注入(即属性填充)完成后,但在bean的初始化回调(如注解的方法或接口的方法)之前被调用的。具体来说,当Spring容器创建了一个bean实例并且通过反射或其他方式填充了它的依赖之后,它会检查是否存在的实现,并调用这些实现的方法。这个方法允许我们在bean的初始化方法之前对bean实例进行修改或替换。但是,请注意,此时bean实例已经被创建并放入了容器中,只是还没有执行其初始化回调。的。

2024-07-22 20:10:10 463

原创 请你谈谈:spring bean的生命周期 - 阶段4:检查Aware相关接口

MyBean通过实现接口,你的bean能够感知到Spring的,从而可以访问容器中的其他bean或资源。这是一种灵活的方式来解耦你的应用组件,并允许它们在运行时根据需要动态地查找和使用其他组件。然而,需要注意的是,过度使用这种方式可能会增加组件之间的耦合度,因此在设计应用时应谨慎使用。

2024-07-22 19:48:15 447

原创 请你谈谈:spring bean的生命周期 - 阶段3:属性赋值(设置属性)

2024/07/17 22:17 : 两天内完成,敬请期待!

2024-07-17 22:18:31 166

原创 请你谈谈:spring bean的生命周期 - 阶段2:Bean实例化阶段

在Spring框架中,Bean的实例化是Bean生命周期中的一个重要阶段。这个过程包括两个关键的子阶段:Bean实例化前阶段和Bean实例化阶段本身。BeanFactoryPostProcessor:BeanFactoryPostProcessor是容器启动阶段Spring提供的一个扩展点,主要负责对注册到BeanDefinationRegistry中的一个个的BeanDefination进行一定程度上的修改与替换。

2024-07-17 22:15:55 732

原创 请你谈谈:spring bean的生命周期 - 阶段1:实例化之前的步骤(定义、解析、注册、合并、Class加载)

在上面的示例中,我们使用了AnnotationConfigApplicationContext作为ApplicationContext的实现,并通过强制类型转换将其转换为ConfigurableListableBeanFactory,从而可以访问registerBeanDefinition方法。注册BeanDefinition:BeanDefinitionRegistry的registerBeanDefinition方法将BeanDefinition注册到容器中。

2024-07-17 08:18:16 731

原创 请你谈谈:AnnotatedBeanDefinitionReader 显式地注册一个Bean到Spring容器,以及注册并解析配置类

对于Appconfig类而言,由于其包含多个带有@Bean注解的方法,这些方法的执行依赖于Appconfig实例本身,因此Appconfig的BeanDefinition必须存在于Map中,以确保它能够被实例化为一个Bean。通常,程序员在初始化Spring容器时,会采用多种不同的代码实现方式,但核心原理是相似的。为了验证这一功能,我们可以编写一个简单的示例,通过AnnotatedBeanDefinitionReader手动注册一个带有@Component注解的类,并观察其在Spring容器中的行为。

2024-07-15 20:02:39 786

原创 请你谈谈:BeanDefinition类作为Spring Bean的建模对象,与BeanFactoryPostProcessor之间的羁绊

当JVM的字节码执行器在执行过程中遇到new关键字时,它会根据该关键字所指向的类的模板信息,在JVM的堆内存中为该类实例化一个对象,并为其分配相应的内存空间。需要特别强调的是,这里的核心焦点在于“初始化过程”,而非“实例化过程”。②在扫描过程中,每当Spring遇到一个符合规则的类,它都会实例化一个新的BeanDefinition对象,并根据类的名称自动生成一个Bean的名称(例如,对于名为IndexService的类,Spring会按照其命名规则生成一个名为indexService的Bean名称)。

2024-07-14 19:47:48 610

原创 请你谈谈:Spring的自动注入(也称为自动装配)的理解

在Spring框架中,当我们说“基于setter的注入”时,我们通常意味着依赖是通过一个特定的setter方法来注入的,这个setter方法通常会与类的某个私有属性相对应。从spring官网上面可以看到spring只提出了4中自动装配模型(严格意义上是三种、因为第一种是no,表示不使用自动装配、使用),这四个模型分别用一个整形来表示,存在spring的beanDefinition当中,任何一个类默认是no这个装配模型,也就是一个被注解的类默认的装配模型是no也就是手动装配;bytype用2来表示;

2024-06-19 09:18:38 742

原创 请你谈谈:Spring延迟Bean的初始化(懒加载)

在Spring中,ApplicationContext默认会在容器初始化时创建并配置所有定义为单例(Singleton)的Bean。当Bean被标记为延迟初始化时,Spring IoC容器不会在容器启动时立即创建该Bean的实例。相反,它会在首次请求该Bean时(例如,通过getBean()方法或自动装配)才创建和配置Bean的实例。在Java配置中,没有直接的全局设置方式,但你可以通过为所有Bean添加@Lazy注解或使用其他编程方式来实现类似的效果。

2024-06-19 08:10:55 407

原创 Spring容器中的Bean作用域

Spring容器负责根据配置文件或注解来创建Bean实例,并通过依赖注入(DI)来管理Bean之间的依赖关系,这体现了控制反转(IoC)的核心思想。当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。无状态的Bean通常使用singleton作用域,而有状态的Bean则可能使用prototype、request、session或websocket作用域。对于有状态的Bean,则需要根据具体的使用场景选择合适的作用域,并确保其线程安全性。

2024-06-18 19:57:53 960

原创 Spring IOC(控制反转)和DI(依赖注入)在Spring框架中的核心作用

在上面的示例中,UserService类有一个UserDao类型的字段userDao,该字段上使用了@Autowired注解。此外,字段注入可能会使测试更加困难,因为依赖项是直接在字段上注入的,而不是通过构造函数或setter方法,这使得在测试中提供模拟依赖项变得更加复杂。对于userService bean,Spring会首先创建一个UserService的实例,然后调用其setUserDao方法,并将userDao bean的实例作为参数传递。对于UserService bean,我们使用。

2024-06-18 19:13:18 842

原创 请你谈谈:spring是如何设计IOC容器的,以及BeanFactoryPostProcessor、BeanPostProcessor的简单理解

3、BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:在BeanFactory中,需要手动注册BeanPostProcessor和BeanFactoryPostProcessor。Spring里面最底层的接口:读取bean配置文档,包含了各种Bean的定义,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。当应用程序配置Bean较多时,程序启动较慢。

2024-06-18 17:07:40 928

原创 3 python基本语法 - Dict 字典

Python 中字典(dict)是一种,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

2023-12-20 16:07:09 319

原创 2 python基本语法 - Tuple不可变序列

元组和列表(list)的不同之处在于:列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;,其中 element1~elementn 表示元组中的各个元素,可以是整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。元组是 Python 序列的一种,我们可以使用索引访问元组中的某个元素(得到的是一个元素的值),也可以使用截取返回元组中的一组元素(得到的是一个新的子元组)。也可以反向索引,最后一个元素的索引为 -1,往前一位为 -2,以此类推。

2023-12-20 11:35:18 258

原创 1 python基本语法 - List

列表(list)是一个有序且可更改的序列,允许重复。列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,同一个列表中元素的类型也可以不同,格式为,其中,listname 表示变量名,element1 ~ elementn 表示列表元素。使用 [] 创建列表后,一般使用 = 将它赋值给某个变量,语法格式为:,其中,listname 表示变量名,element1 ~ elementn 表示列表元素。2 用 list 函数创建列表除了使用 [] 创建列表外,Python 还提供了内置的 list 函数

2023-12-20 11:15:30 402

原创 Ionic组件 ion-avatar ion-icon ion-img ion-thumbnail

Avatars 是通常包裹 image or icon的圆形组件。它们可以用来表示一个person or an object。Avatars 可以自己使用,也可以在任何元素内部使用。如果放置在ion-chip or ion-item内部,avatar 将调整大小以适应父组件。要将avatar 定位在item的左侧或右侧,请分别将the slot to start or end。

2023-11-10 10:45:52 211

原创 Ionic组件 ion-list ion-list-header

列表由多行项目组成,这些项目可以包含 text, buttons, toggles, icons, thumbnails等。列表通常包含具有类似数据内容的项目,如 images and text。列表支持多种交互,包括滑动项目以显示选项、拖动以重新排列列表中的项目以及删除项目。

2023-11-10 10:29:59 937

原创 Ionic 组件 ion-item-divider ion-item-group ion-item-sliding ion-label ion-note

Item dividers是块元素,可用于分隔列表中的items。它们类似于列表标题,但它们不应该只放在列表的顶部,而应该放在items之间。

2023-11-10 10:14:07 176

原创 Ionic list - ion-item的相关用法

虽然列表中的 items有多种形式,但它们通常支持5种不同的内容类型:supporting visuals, text, metadata, actions, and controls。例如,一个可点击的项目在md模式下激活时会收到涟漪效果,在ios模式下激活后会有一个高亮显示,并且在ios模式中默认情况下有一个详细箭头。若要在不自然显示的项目上显示右箭头图标,请将detail属性设置为true。默认情况下,Items 显示插入的底部边框。边框在左侧有填充,不会出现在“start”插槽中的任何内容下。

2023-11-08 17:01:56 587

原创 Ionic header content footer toolbar UI实例

2 ionic的icon图标3 ion-header 头部ion-header 是页面的根组件,它将自己与页面顶部对齐。建议将它用作一个或多个工具栏的包装器,但它可以用于包装任何元素。当在标题中使用工具栏时,将调整内容,使其大小正确,并且标题将考虑到任何设备安全区域。3.1 半透明Header通过设置半透明属性,标头可以与本机iOS应用程序中的透明度相匹配。为了查看标题后面滚动的内容,需要在内容上设置全屏属性**。只有当模式为“ios”并且设备支持背景滤镜时,此效果才会适用**。Ionic提供

2023-11-08 14:32:30 353

原创 Ionic 模块组件的理解

创建公共模块以及组件公共模块slide.module.ts 中暴露对应的组件// 1 导入组件// 2 声明组件imports: [],// 3 暴露组件})用到的地方引入自定义模块,并依赖注入自定义模块// 1 引入自定义模块imports: [// 2 依赖注入自定义模块],})使用自定义模块-- 使用模块-->// 1 导入ionic核心模块imports: [// 2 依赖注入ionic核心模块],})

2023-11-06 15:52:53 1075

原创 Angular 中的app.module.ts

【代码】Angular 中的app.module.ts。

2023-11-03 15:40:55 489

原创 Angular 中的路由

routerLinkActive: 设置 routerLink 默认选中路由。

2023-11-03 15:31:15 1210

原创 Angular 中的数据交互GET POST

Angular5.x 以后 get、post 和和服务器交互使用的是 HttpClientModule 模块。Angular5.x 以后 get、post 和和服务器交互使用的是 HttpClientModule 模块。在用到的地方引入 HttpClient、HttpHeaders 并在构造函数声明 HttpClient。在 app.module.ts 中引入 HttpClientModule 并注入。在 app.module.ts 中引入 HttpClientModule 并注入。

2023-11-03 11:40:55 479

原创 Angular异步数据流编程

如果我们想让异步里面的方法多次执行,这一点 Promise 是做不到的。而 Observable 不一样,它可以不断地触发下一个值,就像 next() 这个方法的 名字所暗示的那样。Promise 里面用的是 then() 和 resolve(),而 RxJS 里面用的是 next() 和 subscribe()。Promise 的创建之后,动作是无法撤回的。Observable 不一样,动作可以通过 unsbscribe() 方法中途撤回,而且 Observable 在内部做了智能的处理。

2023-11-03 11:19:27 753

原创 Angular组件通信

通过在子组件中定义一个Output属性,子组件可以通过EventEmitter触发这个属性,父组件可以通过@Output的形式监听子组件的属性,并在属性被触发时调用相应的方法。在上面的例子中,我们定义了一个名为outter 的Output属性,并在按钮的点击事件中通过EventEmitter触发了这个属性,并向父组件传递了一个字符串 i am sonValue。在父组件中引入子组件,并在模板中使用@Output装饰器监听子组件的Output属性。在子组件中定义Output属性和触发事件的方法。

2023-11-03 09:29:02 355

原创 Angular模板语法

这将在你的项目目录中创建一个名为your-service-name.service.ts的文件,并自动生成基本的Angular服务代码。Angular的ViewChild用法是用来获取模板视图中的元素或组件的引用。

2023-11-02 20:41:54 133

原创 Angular组件生命周期详解

当 Angular 实例化组件类 并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期一直伴随着变更检测,Angular 会检查数据绑定属性何时发生变化,并按需更新视图和组件实例。当 Angular 销毁组件实例并从 DOM 中移除它渲染的模板时,生命周期就结束了。当 Angular 在执行过程中创建、更新和销毁实例时,指令就有了类似的生命周期。

2023-11-02 15:56:36 1228

原创 FE_Vue学习笔记 - 组件的理解vue vc

当我们写构造函数的时候,属性我们直接写在构造函数体内,方法我们写在原型上。

2023-09-15 17:11:37 623

原创 FE_Vue学习笔记 - 数据代理

Vue中的数据代理是一种机制,通过它,Vue实例(vm)可以代理其数据对象(data)中的属性操作。在Vue实例化时,会将data对象中的所有属性收集到vm._data中,属性值不再直接给出,而是通过响应式getter获取,当data中数据改变时,就会调用响应式setter,导致重新解析模板,然后生成新的虚拟DOM进行新旧DOM对比,最后更新页面。通过这种方式,Vue实例可以方便地代理其数据对象中的属性操作,使得我们不需要直接操作data对象,简化了代码并提高了可维护性。

2023-09-15 16:04:18 211

原创 redis深度历险 千帆竞发 —— 分布式锁

分布式应用进行逻辑处理时经常会遇到并发问题。比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的。(Wiki 解释:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch 线程切换。这个时候就要使用到分布式锁来限制程序的并发执行。

2023-09-14 18:58:25 289

原创 redis深度历险 2 - Redis的基本数据类型以及使用场景

Redis的基本数据类型包括五种:String(字符串)、Hash(哈希)、List(列表)、Set(集合)及ZSet(有序集合)。

2023-09-14 16:14:00 319

原创 redis深度历险 1 - Redis基础数据结构-001

Redis有5种基础数据结构,分别为: string (字符串)、list(列表)、set (集合)、hash (哈希)和zset (有序集合)。熟练掌握这5种基本数据结构的使用是Redis 知识最基础也最重要的部分,它也是在 Redis面试题中问到最多的内容。

2023-09-14 11:47:31 183

原创 探究Nginx应用场景

在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,proxy_pass指令指定了反向代理的目标服务器地址。假设你有一个静态资源目录/var/www/html,该目录下存放着一些HTML、CSS、JavaScript等静态文件,并且你希望使用Nginx来处理这些静态文件的请求,同时将动态请求转发给后端的应用程序服务器。Nginx是一个流行的Web服务器和反向代理服务器,它可以用于实现动静分离,提高Web应用程序的性能。

2023-09-13 16:09:04 371

springboot——员工管理系统源码

springboot——员工管理系统源码

2021-01-15

空空如也

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

TA关注的人

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