自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个搬砖工人

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

  • 博客(447)
  • 资源 (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 305

原创 2023/1/20 ES6基本语法学习

const 除了 let 的三个特性,还有下面的特性:数组也可以修改元素的值:建议:在默认的情况下用 const,而只有在你知道变量值需要被修改的情况下使用 let。使用 tab 键上面的反引号,插入变量时使用 ${变量名}。由三个点 … 和一个紧跟着的具名参数指定,比如:…keys,这个解决了 arguments 的问题。剩余运算符:把多个独立的参数合并到一个数组中扩展运算符:将一个数组分割,并将各个项作为分离的参数传递给函数ES6 允许使用“箭头”(=>)定义函数如果

2023-01-20 15:56:01 929

原创 终于有人将Session和cookie讲明白了!一节课彻底搞懂

虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。

2023-01-16 21:19:35 496

原创 2023/1/15 JS-闭包问题研究

如果是这种多次柯里化的,如何理解?理解 : 前n - 1 次调用,其实是提前将参数传递进去,并没有调用最内层函数体,最后一次调用才会调用最内层函数体,并返回最内层函数体的返回值结合上文可知,这里的多个连续箭头(无论俩个箭头函数三个及以上)函数连在一起 就是在柯里化。所以连续箭头函数就是多次柯里化函数的 es6 写法。比如对于上面的 test 函数,它有 3 个箭头, 这个函数要被调用 3 次 test(a)(b)(c) ,前两次调用只是在传递参数,只有最后依次调用才会返回 {

2023-01-15 21:21:51 201

原创 2023/1/15 JS-函数中的this指向问题

【代码】2023/1/15 JS-函数中的this指向问题。

2023-01-15 18:07:07 19

原创 2023/1/15 JS-作用域与作用域链

在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则 在上一级作用域的执行上下文中查找对应的属性, 如果有直接返回, 否则。理解 - 就是一块"地盘", 一个代码段所在的区域,它是静态的(相对于上下文对象), 在编写代码时就确定了。直到全局作用域, 如果还找不到就抛出找不到的异常。作用: 隔离变量,不同作用域下同名变量不会有冲突。

2023-01-15 17:46:33 371

原创 2023/1/15 JS-变量提升与函数提升 && 执行上下文

通过 function 声明的函数, 在声明语句之前就可以直接调用 - 值: 函数定义(对象)function声明的函数 -->赋值(函数名如,fun__),添加为执行上下文的方法。function声明的全局函数–>赋值(fun__),添加为window的方法。var定义的局部变量–>undefined,添加为执行上下文的属性。arguments–>赋值(实参列表), 添加为执行上下文的属性。形参变量–>赋值(实参)–>添加为执行上下文的属性。this–>赋值(调用函数的对象)3. 开始执行全局代码。

2023-01-15 17:08:05 270

原创 2023/1/15 JS-原型与原型链

原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。每一个JS对象都可以获得自己的原型,通过原型可以共享函数对象和实例对象之间的属性和方法。原型的出现,就是为了解决 构造函数 的缺点:每一次new一个对象时,都会创建一份render()代码浪费资源。通过原型,我们提供了一个给对象添加函数的方法,不然构造函数只能给对象添加属性,不能合理的添加函数就太 LOW 了。

2023-01-15 13:14:55 337

原创 2023/1/14 js基础学习

数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。对象是JS中的引用数据类型,对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性。引用数据类型的数据,变量是保存的对象的引用(内存地址),如果多个变量指向的是同一个对象,此时修改一个变量的属性,会影响其他的变量。基本数据类型的数据,变量是直接保存的它的值,变量与变量之间是互相独立的,修改一个变量不会影响其他的变量。比较两个变量时,对于基本数据类型,比较的就是值,对于引用数据类型比较的是地址,地址相同才相同。

2023-01-15 10:52:47 810

原创 2023/1/13 Vue学习笔记9 - $nextTick 学习 配置代理

2)public文件夹就相当于8080服务器的根路径。public文件夹里有的东西都算是8080中有的。1)Vue CLI官网——配置参考——devServer.proxy:配置参考 |1.优点:可以配置多个代理,且可以灵活的控制请求是否走代理。因为Vue需要等整个函数走完,才去重新渲染DOM。但是,以上方式不够灵活,且不能够配置多个代理。2.缺点:配置略微繁琐,请求资源时必须加前缀。解决跨域问题: 配置代理服务器。

2023-01-13 15:25:29 18

原创 Web前端axios从入门

git:全局安装json-server:npm install -g json-server在该文件目录下运行:json-server --watch db.json查看id为1的页面在http://localhost:3000.posts/1其中, /1就是id。

2023-01-13 14:03:39 428

原创 2023/1/11 Web前端Promise从入门到精通

状态:实例对象中的一个属性 【PromiseState】,三个值pending 待定resolved / fullfilled 成功rejected 失败状态改变:只能由pending改成resolved 或 pending改成rejected状态只能改变一次实例对象中的另一个属性 【PromiseResult】- 对象的值保存着异步任务『成功/失败』的结果resolvereject只有resolve、reject可以修改其值。

2023-01-12 00:22:50 211

原创 2023/1/10 Vue学习笔记8 - 消息订阅与发布_pubsub【用的并不多-建议使用全局事件总线】

1.一种组件通信的方式,适用于任意组件间通信。消息订阅与发布(pubsub)

2023-01-10 21:07:48 20

原创 2023/1/10 Vue学习笔记7 - 全局事件总线

第四行 已知这个时候vm原型还未生成,所以不能直接等于vm,但是Vue中有个this本身就是vue实例。但是bus不是这样的,就算Student组件被销毁了,bus也会一直在,所以bus用完了最好要销毁。举个例子,比如说Student组件被销毁了,那么整个vc都没有了,所以自定义事件就直接没有了。因为需要写了标签才能使用组件,然而不能在main.js中引用标签,所以这一行亲自new一个。第三行 此时beforeCreate时无法访问到data中的数据的,只是初始化。第二行 获取组件的实例对象。

2023-01-10 20:23:36 244

原创 2023/1/10 Vue学习笔记6 - 路由基本使用

1、路由就是一组key-value的对应关系。2、多个路由,需要经过路由器的管理。SPA (single page web application)应用 - 单页面web应用"key" : "/class" , "value" : "班级组件" }vue的一个插件库,专门用来实现 SPA 应用。1 )单页Web应用(single page web application , SPA )。2 )整个应用只有一个完整的页面。3 )点击页面中的导航链接不会刷新页面,只会做页面的局部更新。

2023-01-10 16:12:34 324

原创 2023/1/9 Vue学习笔记-5-TodoList案例

1 )拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。2 )实现动态组件:考虑好数据的存放位置,数据是一个组件在用,还是一些组件在用:一个组件在用:放在组件自身即可。一些组件在用:放在他们共同的父组件上(状态提升) 3 )实现交互:从绑定事件开始。1 )父组件 == > 子组件 通信 2 )子组件 == > 父组件 通信 (要求父先给子一个函数)3.使用v-model时要切记:v-model绑定的值不能是props传过来的值,因为props是不可以修改的!

2023-01-08 23:52:47 342

原创 2023/1/8 Vue学习笔记-4-脚手架及相关属性配置

备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。2、继续找到App.vue页面,看到这个页面中引入了school和student,于是就到components文件夹中找到这两个并执行,执行最终汇总到了App.vue页面。1、执行npm run serve,随后来到src中,找到main.js,这个页面中引入了Vue、App.vue、关闭了提示等。

2023-01-08 15:40:01 281

原创 2023/1/7 Vue学习笔记-4-组件的理解

比如说在创建组件实例对象、传入配置项的时候,是不可以写el的,但是在创建vm的时候,配置对象中就可以写el。学校地址:{{ schoolAddress }}学校地址:{{ schoolAddress }}学校地址:{{ schoolAddress }}学校地址:{{ schoolAddress }}学校地址:{{ schoolAddress }}学生名称:{{ studentName }}

2023-01-07 17:31:58 845

原创 2023/1/6 Vue学习笔记-3-生命周期

透明度变化的案例:采用如下代码即可:生命周期:2 生命周期_挂载流程在代码中,outerHTML就是指包含 root 的一整个div,innerHTML就是指 root中的所有元素。也就是说,整个div都是模板。如果在template中写东西,那么原先的div就会一整个被替换掉。template不能作为根元素去使用。常见面试题:在哪个生命周期钩子中,页面和数据尚未保持同步?答:beforeUpdate。为什么vm销毁了,页面上还有内容?vm确实销毁了,但是vm销毁之前的工作成果还在

2023-01-07 12:46:01 686

原创 2023/1/6 Vue学习笔记-2

"+document.cookie>兄弟我找到你想要的资源了,快来!2.使用过滤器:{{ xxx | 过滤器名 }} 或 v-bind:属性 = " xxx | 过滤器名"不要把v-once和之前提到的once搞混了,前者是指令,后者是事件修饰符。定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)。2.并没有改变原本的数据,是产生新的对应的数据。

2023-01-06 21:40:12 264

原创 2023/1/6 Vue学习笔记-1

尝试 Vue.js 最简单的方法是使用 Hello World 例子。你可以在浏览器新标签页中打开它,跟着例子学习一些基础用法。或者你也可以创建一个 .html 文件,然后通过如下方式引入 Vue:1 声明式渲染-引入Hello案例Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。下面一个demo讲解:我们已经成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都

2023-01-06 15:35:36 448

原创 2022/12/26 请你谈谈数据库事务机制?

操作的时候生产的读视图,Read View的最大作用是用来做可见性判断的,也就是说当某个事务在执行快照读的时候,对该记录创建一个Read View的视图,把它当作条件去判断当前事务能够看到哪个版本的数据,有可能读取到的是最新的数据,也有可能读取的是当前行记录的undo log中某个版本的数据。for update;那么此时undo log会生成一条与之相反的insert 语句【反向操作的语句】,在需要进行事务回滚的时候,直接执行该条sql,可以将数据完整还原到修改前的数据,从而达到事务回滚的目的。

2022-12-26 18:17:54 153

转载 SQL中的not in 与 not exists

如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;如果子查询中返回的任意一条记录含有空值,使用 not in 则查询将不返回任何记录,如果子查询字段有非空限制,则可以使用not in;in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。备注: 如果子查询结果有任意一套记录含有null,使用 not in 查询不出来结果。not in(会调用子查询), not exists(会调用关联子查询)

2022-12-26 11:55:13 17

原创 2022/12/17 MySQL索引失效的底层原理

前提是 where 条件后为索引字段——如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、

2022-12-26 11:42:09 648

原创 2022/12/17 mysql 索引基本原理解读

索引是帮助MySQL 高效获取数据的数据结构,通过使用索引可以在查询的过程中,使用优化隐藏器,提高系统的性能。优势类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。劣势1)实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。

2022-12-17 16:27:10 362

原创 实验探究-ExecutorServiceAPI----未完待续!!!!具体细节问题之后补充

**try {}

2022-11-26 21:25:48 405

原创 Executors-四种创建线程的手段

从构造方法可以看出,它创建了一个固定大小的线程池,每次提交一个任务就创建一个线程,直到线程数达到线程池的最大值nThreads。在提交第4个任务时,因为线程池的大小已经达到了3并且前3个任务在运行中,所以第4个任务被放入了队列,等待有空闲的线程时再被运行。这里的单线程执行指的是线程池内部,从线程池外的角度看,主线程在提交任务到线程池时并没有阻塞,仍然是异步的。因为这种线程有新的任务提交,就会创建新的线程(线程池中没有空闲线程时),不需要等待,所以提交的5个任务的运行时间是一样的。

2022-11-26 15:38:00 329

原创 实验讲解-线程池停止执行任务 Executor.execute & shutdown & awaitTermination & shutdownNow()

方法来实现的,这种方法的作用有限,如果线程中没有sleep 、wait、Condition、定时锁等应用, interrupt() 方法是无法中断当前的线程的。所以,shutdownNow() 并不代表线程池就一定立即就能退出,它也可能必须要等待所有正在执行的任务都执行完成了才能退出。shutdown只是将线程池的状态设置为SHUTWDOWN状态,正在执行的任务会继续执行下去,没有被执行的则中断。而shutdownNow则是将线程池的状态设置为STOP,正在执行的任务则被停止,没被执行任务的则返回。

2022-11-26 10:40:12 488

原创 线程池七大参数-实验解析

【代码】线程池七大参数-实验解析。

2022-11-23 08:22:15 25

原创 Future.get()会阻塞当前主线程的运行,但不影响已经执行的其他线程

主线程与子线程的执行顺序问题。

2022-11-22 13:20:09 80

原创 CompletableFuture实现了对任务编排的能力,可以轻松地组织不同任务的运行顺序、规则以及方式

CompletableFuture是对Future的扩展和增强。CompletableFuture实现了Future接口,并在此基础上进行了丰富的扩展,完美弥补了Future的局限性,同时CompletableFuture实现了对任务编排的能力。借助这项能力,可以轻松地组织不同任务的运行顺序、规则以及方式。从某种程度上说,这项能力是它的核心能力。而在以往,虽然通过CountDownLatch等工具类也可以实现任务的编排,但需要复杂的逻辑处理,不仅耗费精力且难以维护。

2022-11-20 22:09:36 93

原创 API:Guava-collections:Lists & Sets & Maps & Range & Table & ImmutableCollections & Ordering

【代码】API:Guava-collections:Lists & Sets & Maps & Range & Table & ImmutableCollections & Ordering。

2022-11-19 20:05:12 25

原创 Guava之CacheLoader CacheBuilder LoadingCacbe以及两种驱逐策略

缓存,在咱们平常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提高系统性能而开辟的一块内存空间。缓存的作用就是将数据保存在内存中,当有其余线程或者客户端须要查询相同的数据资源时,直接从缓存的内存块中返回数据,这样不但能够提高系统的响应时间,同时也能够节省对这些数据的处理流程的资源消耗,总体上来讲,系统性能会有大大的提高。Guava Cache是一个全内存的本地缓存实现,它提供了线程安全的实现机制。总体上来讲Guava cache 是本地缓存的不二之选,简单易用,性能好。

2022-11-19 12:03:16 148

原创 函数式编程-常用的函数式接口

【代码】函数式编程-常用的函数式接口。

2022-11-12 17:15:30 51

原创 IntStream用来提供对int类型数据进行相关的stream操作 && Map && mapToObj

【代码】IntStream用来提供对int类型数据进行相关的stream操作 && Map && mapToObj。

2022-11-11 15:08:07 39

原创 BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符

【代码】BiConsumer是一个函数式接口,代表一个接受两个输入参数且不返回任何内容的操作符。

2022-11-11 10:13:45 67

原创 left join on 和where条件的放置以及多个left join连接的执行顺序

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。1 中间表 on条件: t1.size=t2.size and t2.name=‘AAA’ (条件不为真也会返回左表中的记录)2 再对中间表过滤 where 条件:where t2.name=‘AAA’1 中间表 on条件: t1.size=t2.size。顺序是先a,b组合成一个虚拟表,然后虚拟表再和C表关联。

2022-10-24 19:31:47 176

原创 策略设计+工厂设计模式解决if-else过多案例

【代码】策略设计+工厂设计模式解决if-else过多案例。

2022-10-10 17:08:34 349

原创 数据库日志 redo log && bin log的解读

在InnoDB引擎中,redo log的大小是固定的,例如,它可以配置为一组四个文件,每个文件大小为1GB,因此总共可以记录4GB的操作。Statement模式记录的是所有数据库操作对应的SQL语句,如INSERT、UPDATE 、DELETE 等DML语句,CREATE 、DROP 、ALTER 等DDL,所以,从理论上讲,只要按顺序执行这些SQL 语句,就可以实现不同数据库间的数据复制。如果内存中没有查询到id=2的数据,那么它将以页的形式加载磁盘中的数据到内存,然后更新并保存到内存中。

2022-10-10 15:48:28 717

原创 mysql_间隙锁_实验——for update

select * from tb_lock where id 5 for update;

2022-10-09 19:36:49 231

springboot——员工管理系统源码

springboot——员工管理系统源码

2021-01-15

空空如也

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

TA关注的人

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