- 博客(113)
- 收藏
- 关注
原创 Spring中的声明式事务详解
当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。事务传播属性可以在@Transactional注解的propagation属性中定义。SUPPORTS: 如果在事务中运行,当前方法也会加入到这个事务内运行,否则就不会创建事务,直接执行NOT_SUPPORTED: 无论该方法是否在事务中运行,都不会创建事务。
2024-04-28 14:57:31
832
1
原创 JdbcTemplate详解
为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架。作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法,通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。可以将Spring的JdbcTemplate看作是一个小型的轻量级持久化层框架,和我们之前使用过的DBUtils风格非常接近。
2024-04-25 17:59:24
949
原创 Spring教程-Eclipse版
①Spring是一个开源框架②Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能。同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能够实现,而在Spring中却非常的优雅和简洁。③Spring是一个IOC(DI)和AOP容器框架。④Spring的优良特性[1]非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API[2]依赖注入:DI——Dependency Injection,反转控制(IOC)最经典的实现。
2024-04-24 17:51:27
704
原创 JDBC看这一篇就够了
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,()使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序。
2024-04-12 14:47:12
1325
原创 git教程
分布式顾名思义就是指服务分散部署在不同的机器上,与之对应的就是集中式。分布式的架构使得git代码安全性更高,因为每个人电脑中都有完整的版本库,都有最新的代码。版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。分支是用来将特性开发绝缘开来的。在版本控制过程中,使用多条线来同时推进多个任务,每一条线就是一条分支,例如在初始化后,git就会为我们默认创建一条master分支。
2024-03-28 17:18:17
1148
原创 jdk8新特性
只包含一个抽象方法的接口,称为函数式接口。你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式 抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽 象方法上进行声明)。我们可以在一个接口上使用注解,这样做可以检 查它是否是一个函数式接口。同时 javadoc 也会包含一条声明,说明这个 接口是一个函数式接口。在java.util.function包下定义了Java 8 的丰富的函数式接口// 函数式接口中使用泛型:Stream到底是什么呢?
2024-03-28 16:00:11
1077
原创 Java反射详解
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可 以通过这个对象看到类的结构。。
2024-03-07 10:15:07
1162
原创 java网络编程
通信双方地址IP端口号一定的规则(即:网络通信协议。有两套参考模型)OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。
2024-03-05 15:43:41
950
原创 Java中的IO流详解
Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 |-----FileChannel:处理本地文件。
2024-03-05 10:00:45
860
原创 10_Java泛型
泛型的声明interfaceList和 class其中,T,K,V不代表值,而是表示类型。这里使用任意字母都可以。常用T表示,是Type的缩写。泛型的实例化一定要在类名后面指定类型参数的值(类型)。如:();T只能是类,不能用基本数据类型填充。但可以使用包装类填充把一个集合中的内容限制为一个特定的数据类型,这就是generics背后的核心思想// jdk5之前// jdk5之后// 编译错误体会:使用泛型的主要优点是能够在编译时而不是在运行时检测错误。
2024-02-19 11:51:39
1016
原创 09_Java集合
鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组List 集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。ArrayListLinkedList和Vector。Set 接口是 Collection 的子接口,set 接口没有提供额外的方法Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set 集合中,则添加不成功。
2024-02-18 23:03:24
966
原创 事务隔离:为什么你改了我还看不见?
MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务。
2024-02-08 10:28:33
487
原创 一条 SQL 更新语句是如何执行的?
之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们先从一条更新语句讲起,首先创建一个表,这个表有一个主键ID,和一个整形的value更新ID=2的记录,将它的value+1更新语句和前面的查询语句一样,会经过连接器、分析器、优化器、执行器等一系列操作。但是更新语句和查询也有不同的地方,那就是redo log(重做日志)和binlog(归档日志)
2024-02-08 10:24:47
1410
原创 一条 SQL 查询语句是如何执行的
MySQL 的基本架构示意图大体来说,MySQL 可以分为 Server 层和存储引擎层两部分Server 层包括等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从版本开始成为了默认存储引擎。
2024-02-08 10:22:33
1722
原创 vue全家桶之状态管理Pinia
我们需要知道 Store 是使用定义的,并且它需要一个唯一名称,作为第一个参数传递;state() {return {counter: 0})这个 name,也称为 id,是必要的,Pinia 使用它来将 store 连接到 devtools。返回的函数统一使用useX作为命名方案,这是约定的规范;Store在它被使用之前是不会创建的,我们可以通过调用use函数来使用Store:
2024-02-04 16:02:41
1236
原创 vue全家桶之状态管理Vuex
在开发中,我们会的应用程序需要处理各种各样的数据,这些数据需要保存在我们应用程序中的某一个位置,对于这些数据的管理我们就称之为是。在前面我们是如何管理自己的状态呢?
2024-02-02 15:52:58
1008
原创 Vue3-Composition-API(一)
我们通过reactive或者ref可以获取到一个响应式的对象,但是某些情况下,我们传入给其他地方(组件)的这个响应式对象希望在另外一个地方(组件)被使用,但是不能被修改,这个时候如何防止这种情况的出现呢?如果我们使用ES6的解构语法,对reactive返回的对象进行解构获取值,那么之后无论是修改结构后的变量,还是修改reactive 返回的state对象,setup既然是一个函数,那么它也可以有返回值,它的返回值用来做什么呢?如果想为在setup中定义的数据提供响应式的特性,那么我们可以使用。
2024-01-31 14:20:09
876
原创 Vue组件化-插槽Slot和非父子通信
通过props传递具备更强的通用性举个栗子:假如我们定制一个通用的导航组件 - NavBar左边-中间-右边。
2024-01-26 17:10:35
361
原创 Vue组件化-组件间通信-props-emit
内部其实是监听两个按钮的点击,点击之后通过this.$emit的方式发出去事件;// 1.emits数组语法 emits : [ "add" ] , // 2.emmits对象语法 // emits: { // add: function(count) { // if (count
2024-01-25 14:33:07
922
原创 Vue组件化开发基础-脚手架
人面对复杂问题的处理方式:组件化也是类似的思想:现在可以说整个的大前端开发都是组件化的天下,所以,学习组件化最重要的是,每个框架或者平台可能实现方法不同,但是思想都是一样的。我们需要通过组件化的思想来思考整个应用程序:组件化是Vue、React、Angular的核心思想,也是我们后续课程的重点(包括以后实战项目):接下来,我们来学习一下在Vue中如何注册一个组件,以及之后如何使用这个注册后的组件。如果我们现在有一部分(模板、逻辑等),我们希望将这部分内容抽取到一个独立的组件中去维护,这个时候如何注册一个组件
2024-01-24 16:21:37
539
原创 Vue基础-v-model表单
表单提交是开发中非常常见的功能,也是和用户交互的重要手段:这些都要求我们可以在代码逻辑中获取到用户提交的数据,我们通常会使用v-model指令来完成:v-model指令可以在表单 input、textarea以及select元素上创建;它会根据控件类型自动选取正确的方法来更新元素;尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件来更新数据,并在某种极端场景下进行一些特殊处理;官方有说到,v-model的原理其实是背后有两个操作:v-model绑定textarea三、v-mo
2024-01-24 14:25:25
590
原创 Vue基础-Computed-Watch
我们知道,在模板中可以直接通过显示一些data中的数据。但是在某些情况,我们可能需要后再显示,或者需要将多个数据结合起来进行显示;我们有没有什么方法可以将逻辑抽离出去呢?什么是计算属性呢?计算属性的用法:那接下来我们通过案例来理解一下这个计算属性。我们来看三个案例:案例一:我们有两个变量:和,希望它们拼接之后在界面上显示;案例二:我们有一个分数:score案例三:我们有一个变量message,记录一段文字:比如Hello World我们可以有三种实现思路:思路一的实现:模板语法5.实现思路二:method
2024-01-24 14:01:23
928
原创 Vue基础–列表渲染-key的原理
在真实开发中,我们往往会从服务器拿到一组数据,并且需要对其进行渲染。这个时候我们可以使用v-for来完成;v-for类似于JavaScript的for循环,可以用于遍历一组数据;
2024-01-24 09:32:43
910
原创 vue的模板语法-指令-事件绑定-条件渲染
我们在前面练习Vue的过程中,有些代码片段是需要经常写的,我们再VSCode中我们可以生成一个代码片段,方便我们快速生成。VSCode中的代码片段有固定的格式,所以我们一般会借助于一个在线工具来完成。具体的步骤如下:React的开发模式:Vue也支持jsx的开发模式(后续有时间也会讲到):所以,对于学习Vue来说,学习模板语法是非常重要的。如果我们希望把数据显示到模板(template)中,使用最多的语法是 “Mustache”语法 (双大括号) 的文本插值。另外这种用法是错误的:二、常见的基本指令1
2024-01-23 17:06:07
1086
原创 初识Vue.js开发
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式 JavaScript框架。什么是渐进式框架呢?
2024-01-23 14:57:36
1018
原创 常用JavaScript库
jQuery是一个快速、小型且功能丰富的 JavaScript 库,它使HTML文档遍历和操作、事件处理、动画和 AJAX 之类的事情变得 更加简单。当时jQuery库不但简化了代码,而且提供出色的跨浏览器支持,其极大的提高了 Web 开发人员的工作效率。除了 jQuery之外,其实还有许多库和框架可供JavaScript开发人员使用。
2023-12-25 16:51:18
1054
原创 jQuery的事件-动画-AJAX和插件
Web页面经常需要和用户之间进行交互,而交互的过程中我们可能想要捕捉这个交互的过程:原生事件监听方法:jQuery事件监听方法:2.click和on的区别click和on的区别:3.click和on中this指向click和on的this指向:4.jQuery的事件冒泡我们会发现默认情况下事件是从最内层(如下图span)向外依次传递的顺序,这个顺序我们称之为事件冒泡(Event Bubble);事实上,还有另外一种监听事件流的方式就是从外层到内层(如:body -> span),这种称之为事件捕
2023-12-25 11:47:11
1433
1
原创 jQuery属性和DOM操作
获取匹配元素集中第一个元素的自定义属性的值为每个匹配元素设置一个或多个自定义属性会删除data()函数给匹配元素属性添加的数据 和 data()函数绑定的自定义属性。data函数添加的属性会被移除,但是如果属性同时在标签上定义了就不会被移除。
2023-12-21 14:51:39
966
原创 JavaScript中的await-async-事件循环-异常处理
Javascript中的await、async关键字,事件循环,宏任务、微任务队列,异常捕获机制
2023-12-19 21:28:33
968
原创 JavaScript中的生成器与迭代器详解
在面向对象开发中,我们可以通过class定义一个自己的类,这个类可以创建很多的对象:如果我们也希望自己的类创建出来的对象默认是可迭代的,那么在设计类的时候我们就可以添加上 @@iterator 方法;案例:创建一个classroom的类教室中有自己的位置、名称、当前教室的学生;这个教室可以进来新学生(push);创建的教室对象是可迭代对象;} else {const classroom = new Classroom("二楼", "高三二班", ["张三", "李四", "王五"])
2023-12-15 15:34:01
443
原创 JavaScript网络编程
什么是HTTP呢?超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议;HTTP是万维网的数据通信的基础,设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法;通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识;HTTP是一个客户端(用户)和服务端(网站)之间请求和响应的标准。
2023-12-13 10:50:20
1131
原创 防抖-节流-深拷贝-事件总线
lodashunderscore这里使用underscore我们可以理解成lodash是underscore的升级版,它更重量级,功能也更多;但是目前我看到underscore还在维护,lodash已经很久没有更新了;Underscore的官网: https://underscorejs.org/下载Underscore,本地引入;通过CDN直接引入;通过包管理工具(npm)管理安装;这里我们直接通过CDN:
2023-11-17 17:23:30
177
原创 storage和正则表达式
正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念;正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。简单概况:正则表达式是一种字符串匹配利器,可以帮助我们搜索、获取、替代字符串;在JavaScript中,正则表达式使用RegExp模式(patterns)和修饰符(flags)
2023-11-17 15:30:13
443
原创 Promise用法详解
第一,我们需要自己来设计回调函数、回调函数的名称、回调函数的使用等;第二,对于不同的人、不同的框架设计出来的方案是不同的,那么我们必须耐心去看别人的源码或者文档,以便可以理解它这个函数到底怎么用;Promise是一个类,可以翻译成 承诺、许诺 、期约;当我们需要的时候,给予调用者一个承诺:待会儿我会给你回调数据时,就可以创建一个Promise的对象;在通过new创建Promise对象时,我们需要传入一个回调函数,我们称之为executor这个回调函数会被立即执行,并且给传入另外两个回调函数。
2023-11-06 17:24:45
154
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人