自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (5)
  • 收藏
  • 关注

原创 【Git通关之旅】从山脚到山顶(傲视群雄版)

版本控制器的方式集中式分布式。

2023-06-12 10:51:52 1509 1

原创 【MySQL通关之旅】从山脚到山顶(傲视群雄版)

select * from 表名 where name like ‘%张’MarkdownText-to-HTMLAuthorsJohnLuke。

2023-05-21 19:46:54 2079 2

原创 [vue3] Fragment 和 Teleport 和 Suspense

Fragment在Vue2中: 组件必须有一个根标签在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中好处: 减少标签层级, 减小内存占用vue框架已经做好的处理,作为程序员不需要写代码Teleport什么是Teleport?—— Teleport 是一种能够将我们的组件html结构移动到指定位置的技术。<teleport to="移动位置"> <div v-if="isShow" class="mask"> &lt

2023-03-05 12:15:29 167

原创 [PHP]TP6 CLI模式下创建tp6和多应用配置以及常见问题

命令行安装稳定版ThinkPHPcomposer create-project topthink/think `tp`tp => 项目的名称.可自定义创建完成后,配置项目包括但不限于(访问入口,伪静态,端口,域名),保证能正常访问到安装多应用模式扩展composer require topthink/think-multi-app删除 app 目录下的 controller 目录多应用模式部署后,记得删除app目录下的controller目录(系统根据该目录作为判断是否单应用的

2022-05-26 16:02:57 584 1

原创 【TP6】使用workerman websocket

前置安装和使用 workerman安装composer require topthink/think-worker使用php think worker启动php think worker:serverwebsocket客户端示例代码<!DOCTYPE html> <html> <head> <title>HTML5</title> <meta charset="utf-8" /> <sc

2022-05-25 10:56:37 2010

原创 [PHP] composer 安装

Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。Composer 默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl。Composer 可运行在 Windows 、 Linux 以及 OSX 平台上。安装.

2022-05-25 10:19:37 708

原创 [PHP] CURL 的各种骚使用(GET,POST,上传下载图片,带认证,带COOKIE)

curl是个什么curl是一个库,能让你通过URL和许多不同种的服务器进行勾搭和深入交流,并且还支持许多协议。并且人家还说了curl可以支持https认证、http post、ftp上传、代理、cookies、简单口令认证等等功能啦前提PHP环境中安装和启用curl模块说明$ch = curl_init() 创建了一个curl会话资源,成功返回一个句柄;curl_setopt($ch, CURLOPT_URL, "baidu.com"),设置URL;curl_setopt($ch,

2022-05-23 10:42:58 859

原创 [JS] 对于原型和原型链的相关方法(instanceOf|setPrototypeOf|getPrototypeOf|isProrotypeOf|in|hasOwnProperty...)

instanceOf语法:object instanceof constructorobject:某个实例对象constructor:某个构造函数解释: 用来检测 constructor.prototype 是否存在于参数 object 的原型链上。Object.setPrototypeOf语法:Object.setPrototypeOf(‘现有对象’,‘原型对象’)解释: 为现有对象设置原型,返回一个新对象。Object.getPrototypeOf语法:Obj

2022-05-12 17:18:48 319

原创 [js]深浅拷贝的理解和多种实现方式(最终完整版)

深浅拷贝的区别浅拷贝将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用。深拷贝创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”。为什么要用深拷贝?我们希望在改变新的数组(对象)的时候,不改变原数组(对象)深浅拷贝的实现浅拷贝因为是引用数据类型,修改赋值后的变量等于修改引用的地址数据,会修改原数据 let obj = {name:'张三'} let object = obj console.

2022-05-10 16:15:04 316 1

原创 [JS]深入理解原型和原型链以及区别(包含面试题详解)

原型一个可以被复制(或者叫克隆)的一个类,通过复制原型可以创建一个一模一样的新对象,也可以说原型就是一个模板,在设计语言中更准确的说是一个对象模板原型是定义了一些公用的属性和方法,利用原型创建出来的新对象实例会共享原型的所有属性和方法所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象所有函数都有一个prototype(原型)属性,属性值是一个普通的对象所有引用类型的__proto__属性指向它构造函数的prototype说说对原型的理解(面试题)在 Jav

2022-05-09 16:35:22 1493

原创 【GIT】stash暂存但不提交commit,可自由切换分支

描述官方解释:当您想记录工作目录和索引的当前状态,但又想返回一个干净的工作目录时,请使用git stash。该命令将保存本地修改,并恢复工作目录以匹配头部提交。stash 命令能够将还未 commit 的代码存起来,让你的工作目录变得干净。应用场景某一天你正在 feat 分支开发新需求,突然产品经理跑过来说线上有bug,必须马上修复。而此时你的功能开发到一半,于是你急忙想切到 master 分支,然后你就会看到以下报错:因为当前有文件更改了,需要提交commit保持工作区干净才能切分支

2022-05-06 17:09:49 2274 2

原创 [JS]事件冒泡和事件委派

事件冒泡上图说明两个概念捕获事件解释 从document到触发事件的那个节点,即自上而下的去触发事件,直到点击的那个节点结束栗子 设置从捕获事件let domDiv = document.getElementById('id')domDiv.addEventListener('click',()=>{},true)/**true:给该节点添加一个click事件,并且触发在捕获事件阶段 false:常用的冒泡阶段*/冒泡事件解释 从点击的节点开始自下而上的去触发

2022-04-29 10:47:09 283

原创 [JS]梳理原生对DOM的增删改查

在项目上一直都是用数据驱动试图(MVVM)的模式进行开发对于JS原生的操作很少了,陌生了许多,回顾下增删改查查元素代码说明备注document.getElementById(“id属性值”);根据元素绑定的id属性查询一个元素节点对象常用 且id必须唯一document.getElementsByName(“name属性值”);根据元素的name属性值查询一组元素节点对象 [返回数组]常用 多用于表单项[多选,下拉]document.getElements.

2022-04-21 17:27:33 358

原创 [JS]原生使用Object.defineProperty劫持数据,实现响应式数据驱动DOM(借助VUE2.X的核心思想)

举个栗子点击按钮只修改响应式数据,达到DOM更新和数据更新的功能核心思想定义需要被劫持的响应式对象数据对于定义的数据进行针对劫持,使用getter和setter进行对DOM的处理当点击功能按钮时,只需要修改定义的响应式数据就可以完整代码供体验 希望大佬指点不足之处供参考 下方注释掉的是JS原生操作DOM实现的<html> <head> <title>操作DOM</title> </

2022-04-21 15:27:37 1279

原创 [vscode]代码规范ESLint + Prettier 在vue项目中的使用和冲突解决[完美解决]

前言在创建项目的时候记得勾选使用代码规范ESLint把规矩都列出来写在文件里,规范大家的代码统一化如果代码不符合规则,ESLint就会报警高或者报红Prettier把规矩都列出来写在文件里,规范大家的代码统一化一键保存自动帮助大家通过统一的规则格式化代码使用在vscode中开发vue项目需要安装这三个插件在.eslintrc.js文件中配置rules属性[详细的规则见文档]举个栗子 规定字符串使用单引号和末尾不加分号 rules: { '

2022-04-18 16:36:49 1616

原创 彻底卸载VSCode软件包括插件和缓存

1.从控制面板找到 vscode 将其卸载此时仅仅是删除了应用软件,如果重新下载安装之前得插件和个人配置还会重新加载,所有需要完全删除插件和个人配置2.删除安装插件win+R 输入 %userprofile%3.删除用户信息和缓存信息在图示路径下,删除 Code 和 Visual Studio Code 文件夹,即可彻底删除用户信息和缓存信息如果找不到AppData文件夹,应该是隐藏了,可以在文件夹中点击 查看 勾选 显示隐藏文件和文件夹 即可找到或者 wi

2022-04-18 11:40:18 11885

原创 【JS】高级函数相同点和差异性[map|foreach|for|find|findIndex|filter|reduce](包括但不限于)

map用于改变数组中元素的值数据处理返回新数组,不改变原数组let arr = [1,2,3,5,4,6]let result = arr.map((item,index,arr)=>{ return item * 2})console.log(result) // 结果: [2, 4, 6, 10, 8, 12]foreachforEach 是 ES5 中操作数组的一种方法,主要功能是遍历数组,就是 for 循环的加强版,该语句需要一个回调函数,作为参数。回调函数的形参,

2022-04-18 10:51:48 217

原创 [正则表达式] 含义说明

表达式含义备注new RegExp(‘正则表达式’,‘匹配模式’)通过构造方法创建正则表达式字面量创建: / //[a-z]/从a到z的 “或”/[^a-c]/从a到c的 “除了”/a{3}/连续出现 a 3次/a{1,3}/连续出现 a 1到3次/a{3,}/连续出现 a 3次以上+至少一次相当于{1,}-0个相当于{0,}?0个或1个相当于{0,1}/^1/开头第以1开始/1$/结...

2022-04-15 16:25:57 283

原创 [JS基础] arguments 解释和实际使用场景

arguments 解释和实际使用场景在定义函数的时候,浏览器会给函数传入两个隐匿的参数函数的上下文对象 this 和 封装实参的对象 argumentsarguments是一个类数组对象,可以通过索引类操作实参,也可以获取实参长度会把我们传递的实参,同时会在arguments中保存arguments.length 可以获取实参的长度我们即使不定义形参,也可以传递实参,可以通过arguments使用(就是麻烦)arguments的属性callee => 就是指向当前函数的对象

2022-04-14 17:25:32 348

原创 [JS]this的多种嘴脸以及call和apply的相同点差异点

this的多种嘴脸第一定律:(1) 以方法方式调用时,this是绑定宿主对象 var obj = { method:() =>{ console.log(this) } } obj.method(); // obj(2) 以函数方式调用时,this是window对象 (调用全局函数)function fun(){ console.log(this) }fun() // window全局变量或函数都相当于window..

2022-04-14 16:22:15 280

原创 [JS]原型链的解释和梳理

链关系:自身 => 原型 => Object当我们使用一个属性或方法时,会先在自身查找自身如果有,则直接使用自身没有则去原型查找,原型上有则使用原型上没有,则去原型(Object)查找,有则使用,无则返回undefined举个栗子...

2022-04-13 16:17:32 84

原创 [vue3 + TS]祖组件和孙组件通讯provide+inject和注意点

祖组件和孙组件通讯 (依赖注入)祖组件//需求:需要孙组件及递组件调用方法`更新`祖组件的数据const updateTodoItem = ({ index, isCompleted }: { index: number, isCompleted: boolean }) => { todosData.todos[index].isCompleted = isCompleted}/**提供 or 依赖*/provide('update',updateTodoItem) /** (名

2022-04-06 17:06:45 1841

原创 [vue3 + TS] 父组件调用子组件的多种方法

主要用 ref<InstanceType<typeof 组件>>() 来获取各个子组件实例父组件<Footer ref="footerRef" />setup() { const footerRef = ref<InstanceType<typeof Footer>>() const parentClick = () => { footerRef.value?.handleFn('111') }

2022-04-02 17:46:41 5228 2

原创 [vue3] 子组件调用父组件的多种方法

子组件调用父组件的方法方法1 - 异步方式父组件定义供子组件调用的xx方法 @updata:xx=xx子组件中在setup的emit方法调用 context.emit(‘update:xx’)注意: .sync 在这里不好用父组件组件<my-childe ref="RefChilde" @update:xx="xx[被子组件调用的自身方法]"></my-childe>子组件组件setup(props, context) { function fn

2022-04-02 14:19:16 30609 3

原创 [TypeScript]接口interface详解

接口初探TypeScript 的核心原则之一是对值所具有的结构进行类型检查。我们使用接口(Interfaces)来定义对象的类型。接口是对象的状态(属性)和行为(方法)的抽象(描述)// readonly 修饰属性为只读// ? 这个属性(可选)可有可无interface IPerson { readonly id: number name: string age: number sex?: string}readonly 修饰属性为只读,一旦赋值后再也不能被改变了? 这个

2022-02-22 17:00:23 495

原创 [TypeScript] 最全数据类型解析

布尔值 let isDone: boolean = false; isDone = true;基本的数据类型就是简单的 true/false 值,在JavaScript 和 TypeScript 里叫做 boolean数字 let a1: number = 10 // 十进制和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript 还支持 ECMAS..

2022-02-22 15:20:24 345

原创 【vue3】使用Hook函数来实现功能代码整合 从而模块化

Options API 存在的问题使用传统OptionsAPI中,新增或者修改一个需求,就需要分别在data,methods,computed里修改 。 sition API 的优势我们可以更加优雅的组织我们的代码,函数。让相关功能的代码更加有序的组织在一起。 ...

2022-02-21 14:55:00 339

原创 [vue3] 响应式数据的判断

响应式数据的判断isRef: 检查一个值是否为一个 ref 对象isReactive: 检查一个对象是否是由 reactive 创建的响应式代理isReadonly: 检查一个对象是否是由 readonly 创建的只读代理isProxy: 检查一个对象是否是由 reactive 或者 readonly 方法创建的代理...

2022-02-21 14:48:13 230

原创 [vue3] provide 与 inject

作用:实现祖与后代组件间通信套路:父组件有一个 provide 选项来提供数据,后代组件有一个 inject 选项来开始使用这些数据具体写法://祖组件setup(){ ...... let car = reactive({name:'奔驰',price:'40万'}) provide('car',car) ...... }//后代组件setup(props,context){ ...... const car = inject('car'..

2022-02-21 14:46:42 226

原创 [vue3]创建一个自定义的 ref

作用:创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。实现防抖效果:<template> <input type="text" v-model="keyword"> <h3>{{keyword}}</h3></template><script> import {ref,customRef} from 'vue' export default { name:'Demo', setup..

2022-02-21 14:40:37 226

原创 vue3 定义响应式数据的多种方式及分析

ref定义基本类型的响应式数据,原理通过Object.defineProperty()的get与set完成的。(对象类型不要用它,要用reactive函数)reactive定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)shallowReactive只处理对象最外层属性的响应式(浅响应式)shallowRef只处理基本数据类型的响应式, 不进行对象的响应式处理readonly让一个响应式数据变为只读的(深只读)应用场景: 不希望数据被..

2022-02-21 14:38:27 1006

原创 vue2 和 vue3 生命周期对比详解

vue2.x的生命周期vue3.0的生命周期Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但有有两个被更名:beforeDestroy改名为 beforeUnmountdestroyed改名为 unmountedVue3.0也提供了 Composition API 形式的生命周期钩子,与Vue2.x中钩子对应关系如下:beforeCreate===>setup()created=======>setup()beforeMount ===>onBeforeM

2022-02-21 14:24:01 349

原创 [vue3] ref函数和reactive函数的响应式原理

ref函数作用: 定义一个响应式的数据语法: const xxx = ref(initValue)创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。JS中操作数据: xxx.value模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>备注:接收的数据可以是:基本类型、也可以是对象类型。基本类型的数据:响应式依然是靠Object.defineProperty()的get与set完成的。对象类型的数据:内

2022-02-21 14:18:25 865

原创 【vue3】拉开序幕的 Composition API(组合API)之 setup

理解:Vue3.0中一个新的配置项,值为一个函数。setup是所有Composition API(组合API)“ 表演的舞台 ”。组件中所用到的:数据、方法等等,均要配置在setup中。有两个参数 props, context = {emit,slots,attrs,expose}setup函数的两种返回值:若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)若返回一个渲染函数:则可以自定义渲染内容。(了解)注意点:尽量不要与Vue2.x配置混用Vue.

2022-02-21 14:08:13 126

原创 vue3 watch 监控对象的坑 和 watchEffect 对比

watch 监听函数注意: 1.监听指定的属性{对象),被监听属性(对象)有变化后,会给出新旧两个参数 2.监听函数注重过程,不能return结果 3.可以同时监听多个属性(对象) 栗子: watch([firstname,lastname],([currvalue,currold],[perval,perold])=>{ console.log(`1`,currvalue,currold); console.log(`2`,perval,perold)

2022-02-21 11:36:37 1084

原创 [人工智能][视觉识别]pytorch环境配置

1、安装Anaconda下载链接https://www.anaconda.com/or直接安装 (默认安装即可)2、创建虚拟环境(安装中会有提示 输入y即可)2.1 开始菜单打开Anaconda Prompt2.2 创建pytorch1.6名称的环境conda create -n pytorch1.6 python=3.6(pytorch1.6为环境名,非必要不替换,python版本为3.6)输入 activate pytorch1.6 可进入虚拟环境输入 conda deac

2021-12-08 10:59:05 737

原创 [pi-raspberry] 安装opencv 3.4.0 踩坑安装成功教程

前提准备1.更改清华源sudo nano /etc/apt/sources.list # 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contribdeb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bu

2021-11-20 20:53:17 3531

原创 [pi-raspberry]启用root系统并开启ssh登录

1.设置root用户密码sudo passwd root2.启用root用户sudo passwd --unlock root3.设置ssh允许登录sudo sed -i "s/^#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config4.重启ssh服务sudo systemctl restart ssh5.为root用户应用于当前用户相同的bash配置sudo cp ~/.bashrc /root/.bashrc

2021-11-17 12:16:51 1182

原创 [pi-raspberry]4B安装OPENCV4.2.0 实操100%成功

准备:1.官方32位桌面系统2.大于16G储存卡1.调整环境sudo raspi-config选择第一个回车,会让你重启树莓派,选择立即重启2.增加交换空间增加交换空间以避免因内存问题导致的编译挂起sudo nano /etc/dphys-swapfile将 CONF_SWAPSIZE 值从默认值更改 100 为 1024保存运行以下重启命令以使更改生效sudo /etc/init.d/dphys-swapfile restart3、下载opencv-4.2.0和open

2021-11-13 23:09:10 3579 3

原创 [CSS]text-shadow,box-shadow

text-shadow格式 text-shadow:阴影1,阴影2…;阴影的格式:第一个:(X轴)横向偏移位置第二个:(Y轴)竖向偏移位置第三个:模糊度第四个:阴影的颜色box-shadow格式box-shadow:阴影1,阴影2…;阴影的格式第一个:(X轴)横向偏移位置第二个:(Y轴)竖向偏移位置第三个:模糊度第四个:外颜色值第五个:颜色第六个:(内置阴影)...

2021-11-10 16:54:19 318

树莓派官方系统安装opencv-4.2.0人工智能(100%安装成功)

学习opencv 树莓派 人工智能

2021-11-19

CSS3八种loading动画

CSS3八种loading动画

2021-09-08

自定义小程序头部navbar

自定义小程序头部navbar

2021-09-06

滑动图形验证组件.rar

滑动图形验证组件.rar

2021-09-06

(VUE+Element快捷编辑)tableFastEdit.vue

VUE使用Element UI 表格时,对单个表格进行快速编辑时,需要的便捷组件,而且可以自定义显示的样式

2020-08-31

空空如也

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

TA关注的人

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