- 博客(26)
- 收藏
- 关注
原创 vue响应式原理学习
vue2和vue3的响应式有一点不同的。vue 2:当new一个vue实例时,vue会为每一个data使用Object.defineProperty定义getter和setter,每一个组件都会有一个watcher实例,watcher会收集getter为依赖,然后渲染每个组件形成虚拟DOM,当data数据修改后会触发setter,setter会通知Watcher,然后重新渲染与之有关的组件。缺点:不能检测数组和对象的变化对于对象:无法根据对象属性的变化重新渲染界面,此时需要使用this.$set(
2022-04-20 15:58:57
740
原创 egg+redis订单倒计时采坑
在开始之前要执行这句话,确保key监听是开启的 config set notify-keyspace-events Exegg的实现:由于redis订阅之后不能进行其他操作,使用需要使用多个数据库,在config.default.js里配置如下,其中default是存储订单id的,subscribe是订阅信息的 config.redis = { clients: { default: { port: 6379, host: '127.0.0.1'
2022-04-04 00:16:57
1081
原创 redis订阅过期key发通知
在实现订单取消的时候需要考虑到订单倒计时,此时就得使用redis监听订单取消,设置如下:config set notify-keyspace-events Ex这一步确保redis能够监听到过期的key,Ex也就是过期的意思。127.0.0.1:6379> subscribe __keyevent@0__:expired//订阅该频道Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "__keyevent@0__:ex
2022-03-28 01:30:15
1812
原创 js面试必备:浅拷贝和深拷贝
浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。浅拷贝包括直接拷贝内存地址(比如:= 赋值),或者拷贝一层,深层的引用类型只是拷贝内存地址。浅拷贝实现:1、for循环遍历(拷贝一层)function copy(obj){ le
2022-03-08 21:44:40
671
原创 egg-sequelize的子查询
场景:有两个表商品表goods和分类表category如下:我如果要查询电子产品下的商品,此时就要先查询电子产品下的category_id,然后再查询商品,此时需要用到子查询。代码如下: const result = await ctx.model.Goods.findAll({ where:{ category_id: [Sequelize.literal( `SELECT categ
2022-01-05 16:34:27
709
原创 宝塔部署egg+ts项目
1、打包项目2、上传到服务器3、npm install 安装相关依赖在这一步除了npm install之外还要安装egg-scriptsnpm i egg-scripts --save并且在package.json加入以下两句:{ "scripts": { "start": "egg-scripts start --daemon", "stop": "egg-scripts stop" }}4、database和config.prdo.js的数据库 "prod
2021-11-08 15:13:47
558
原创 js面试必备:call、apply、bind的区别和实现
call、apply、bind都是改变this指向的方法call和apply的区别:用法:let fn = function(a,b){ console.log(this.name,a,b);//此时this指向fn1}let fn1={ name:"zs"}fn.call(fn1,3,2)//zs 3 2fn.apply(fn1,[3,2])//zs 3 2由此可见,call和apply的作用差不多,区别在于call的和apply一个参数是分开传,一个是传数组bind和其他
2021-10-28 16:34:41
82
原创 js面试必备:函数防抖和函数节流
什么是防抖和节流防抖(debounce):当持续触发高频事件时,n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。(也就是说多次触发该事件,该事件只会被触发一次,且是最后一次)节流(throttle):当持续触发高频事件时,n秒内只会执行一次(也就是说该事件只会被触发一次,且是第一次触发后面的就不会触发)防抖和节流都是限制函数的执行频率,函数执行频率过高导致性能问题1、防抖实现:在执行函数时加一个定时器,每次执行都要清除定时器 function debounce(fn,tim
2021-10-28 15:26:54
75
原创 v-bind绑定,数据是伪数组时
这里绑定三个图片数据是key为数字的对象:由于样式不同,不能用v-for循环,在此时可以像数组一样进行bind绑定
2021-10-12 19:11:55
66
原创 js面试必备:Eventloop
同步任务和异步任务由于javascript是一门单线程导致后面的任务需要等到前面的任务完成才能执行,如果前面的任务很耗时就会造成后面的任务一直等待。为了解决这个问题,JavaScript 将主线程中的任务分为同步任务和异步任务。同步任务:是在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。异步任务:不进入主线程、通过事件循环机制处理,在任务队列中注册回调函数最终拿到结果。异步任务又分为宏任务和微任务常见的宏任务有:setTimeout,setInterval,DOM事件,aj
2021-09-10 21:55:08
77
原创 js面试必备:变量
作用域: JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6中新增了块级作用域,var: ECMAScript 5中声明变量的,由于没有块级作用域导致for和if等语句声明变量之后在作用域外还能访问for(var i=0;i<=10;i++){ var sum=0; sum+=i; } console.log(sum);//10let: 只在let命令所在的代码块内有效。{ let a = 10; var b = 1;}a /
2021-09-10 12:58:01
71
原创 js面试必备:原形链
什么是原形?每个对象又都有一个对象原型属性 proto 指向构造函数的原型对象。对象原型属性 __proto__为对象属性方法的查找机制提供了方向或者线路。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型。依次层层向上搜索,直到找到一个名字匹配的属性或者达到 Object 原型的原型 nullclass实现原形链继承: class Person{ constructor(name) { this.name = name; } d
2021-09-10 10:48:00
98
原创 js面试必备:闭包和垃圾回收机制
js的垃圾回收机制?标记清除:首先,当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。其次,去掉“进入环境”的变量标记以及被该变量所引用的变量标记(比如闭包),还存在标记的变量即是需要被清理的变量。计数引用:1申明了一个变量,并且将一个引用类型的值赋值给这个变量,那么这变量的引用就加1;2如果这个变量的值又指向另外一个值,或者说这个变量被重新赋值了,那么以上的引用类型的值的引用次数就减1;3垃圾回收器会在运行的时
2021-09-09 16:37:13
220
原创 MongoDB知识整理
什么是mongodb?MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。下载地址mongodb的特点:它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:*面向集合存储,易存储对象类型的数据。*模式自由。*支持动态
2021-08-12 23:30:29
592
原创 css雪碧图位置测量
首先在ps打开图片,找到需要的部分比如这里:点开信息:然后用矩形框框住我要的区域:最后把鼠标移到左上角位置,得到x和y:然后把坐标写入(取负数):
2021-06-29 22:04:18
282
原创 git版本控制工具
1、gitgit是一个分布式版本控制工具2、工作原理工作区:拥有.git目录的那个文件夹(除.git以外)版本库:.git,用于储存记录版本信息。默认头指针指向master分支3、git使用git init 初始化gitgit config -l 查看git配置项配置作者和联系方式:git config user.name "作者的名字"git status查看文件状态以上有几个红色的文件名称和文件夹说明这些文件并没有被git管理git add 文件名称 或 git add .
2021-06-17 00:05:30
100
原创 axios插件使用
什么是axios?axios使用一个基于promise的http库网络插件,可以在浏览器和node.js中使用。支持promise API,自动装换JSON数据安装: npm install axios导入:<script src="https://unpkg.com/axios/dist/axios.min.js"></script>使用://发送get请求axios.get('地址?id=user')//括号内为地址和参数 .then(function
2021-06-15 23:57:52
384
原创 jqueryform插件ajaxsubmit()的使用问题
jquery form是一个表单异步提交的插件,可以很容易提交表单,设置表单提交的参数html部分<body> <form id="sub-form" method="post"> <h1>超市网店</h1> <span class="log"></span> <div class="login"> 账号:<input type="te
2021-06-02 23:06:59
222
2
原创 自己写的小网页遇到的问题
1首先是旋转轮播图(有缺陷)原理:一个数组中放入5个class,每一张图片一个class,每次转动的时候,复制最后一个class,然后插到最前面。弹出最后一个classhtml代码:<div class="swiper-container"> <div class="swiper-slide swiper-slide-next1" id="five"><img src="img/ia_100000031.jpg" alt=""></d
2021-04-25 00:20:07
102
原创 css bfc学习笔记
什么是bfc?bfc即Block Formatting Contexts,直译过来就是块级格式化上下文。BFC就是一个独立的容器,容器内的子元素不会影响到外面的元素。如何创建bfc?只要满足以下任意条件之一就可以了float不为noneposition不为relative或static``overflow不为visibledisplay为flex,inline-flex,inline-block,table-cell,table-captionbfc有什么用?1解决margin塌陷&
2021-02-25 23:52:42
83
原创 jQuery学习笔记(2)
7操作类,HTML代码,文本addClass() 添加类名removeClass() 删除类名toggleClass() 切换类名(有则删除没有则添加)html()与"innerHTML()"一样text()与"innerText()"一样Val() 设置value属性8css样式css(name,value) 设置css样式 1. 逐个设置 2. 链式设置: $().css().css() 3. 批量设置: $().css({name1:value1, name2:value
2021-02-23 17:26:01
51
原创 jQuery学习笔记(1)
1入口函数 1. $(document).read(function(){});jQuery(document).read(function(){}); 2. $(function(){});(推荐)jQuery(function(){});jQuery本质是一个匿名函数。js和jquery的区别:js加载所有内容再执行,jquery在加载完所有html标签后会执行,js入口函数会覆盖,而jquery则不会。遇到多个框架﹩符号冲突问题:1.释放﹩使用权:jQuery.noConflic
2021-02-22 23:31:29
53
原创 PHP注册登录修改用户模块
首先是公共模块连接数据库 config.phpmysqli_select_db和mysqli_query是两个参数登陆模块function login($con,$sql,$username,$password){ $sel=mysqli_query($con,$sql); $result=mysqli_fetch_array($sel); session_start(); $_SESSION['uid']=$username; $_SESSION['password']
2021-01-09 17:12:42
199
原创 css浮动
css浮动布局css用于布局有三种方式:浮动、定位、弹性布局。浮动:在没有使用布局时,元素是以标准流布局的,比如块状元素、行内元素,块状元素是单独一行主要是div,p,ul,li…,行内元素是在同一行出现直到没空间有span,a,…,css是层叠样式,可以通过浮动来提高层数。这里是两个盒子,当两个都浮动,可以取消标准流把两个块状元素放于同一行当他们都不浮动时就各占一行。可以理解为左边的盒子往上提一层,而右边的盒子还在原来那一层,它并不知道在同一个位置已经有盒子了,造成上一层挡住下一层的情况
2020-12-21 23:54:09
69
空空如也
spring security校验密码问题
2023-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人