- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 力扣算法学习记录
设计状态思路:把不确定的因素确定下来,进而把子问题定义清除,把子问题定义的简单。动态规划的思想通过解决一个一个简单的问题,进而把简单的问题的解组成了 复杂的问题的解。
2022-09-21 17:30:32
320
1
转载 TypeScript高级用法
首选看 extends 后面的内容,{t: infer Test}可以看成是一个包含t属性的类型定义,这个t属性的 value 类型通过infer进行推断后会赋值给Test类型,如果泛型实际参数符合{t: infer Test}的定义那么返回的就是Test类型,否则默认给缺省的string类型。infer 的中文是“推断”的意思,一般是搭配上面的泛型条件语句使用的,所谓推断,就是你不用预先指定在泛型列表中,在运行时会自动判断,不过你得先预定义好整体的结构。与||的功能是相似的,区别在于?
2022-09-15 17:34:03
1442
1
原创 Angular官网学习笔记
一个基于组件的框架,用于构建可伸缩的Web应用一组完美集成的库,涵盖各种功能,包括路由、表单管理、客户端-服务器通信等一套开发工具,帮助开发、构建、测试、更新代码**优势:**让更新更容易,可以用最小的成本升级到最新的Angular版本。
2022-09-13 17:37:17
1096
原创 HTTP协议
JSONP(JSON with Padding):带补丁的 json,本质是利用了 标签具有可跨域的特性,由服务端返回一个预先定义好的JS函数的调用,并且将服务器数据以该函数参数的形式传递过来。客户端发出的请求,主要由三个组成部分:请求行、请求头、请求主体。响应报文是服务器返回给客户端的。组成部分由响应响应头、响应主体。异步任务也分为,宏任务与微任务被称为task与jobs。Js实现异步通过事件循环(Event Loop)。同源策略时浏览器的一种安全策略。从我的网站访问别人的网站就是跨域。
2022-08-25 16:35:48
151
原创 ExpressionChangedAfterItHasBeenCheckedError 错误须知,以及变更检测
如上面所述的每次触发变化检测,都会从根组件,沿着整个组件树从上到下的执行每个组件的变更检测,默认状况下,知道最后一个叶子(Component)组件实现的变更检测达到稳定状态。在整个过程中,一旦父组件实现变更检测当前,在下一次事件触发变更检测之前,他的子孙组件都不容许去更改父组件的变化检测想干属性状态的,这就是单项数据流。一个运行的Angular程序就是一个组件树,在变更检测期间,Angular会按照以下顺序检查每一个组件,(以下看作列表1)没有报错,在列表1的操作执行顺序中,会发现。
2022-08-24 15:28:45
580
原创 数组、Set、Map的区别
*总结:**当需要频繁的遍历查找,操作元素时建议使用Map或Set解构,当需要下标时可使用数组。JS的对象(Object),本质是键值对的集合(Hash)结构,实际上只可以使用字符串当作键。**特点:**成员值唯一,成员有序,顺序存储。[Value,Value]结构。Set和Map都可以使用[…Map的遍历顺序就是插入顺序。Map可以使用任何类型作为键。Map的值通过地址进行对比。都可以用来生成新的Map。
2022-08-19 17:06:43
2289
原创 高性能SQL撰写
exists:运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回true,否则返回false区别:1.2 Not in and Not Exists区别:高效栗子:建议:**原因:**只用 和 !=操作符会造成全资料表扫描,永远不会用到索引。**建议:**使用其他相等功能的操作符代替**区别:**如果表中存在A:1,2,3各30万笔,如果采用A>2会先定位到A=2去查找,然后在比较A是否大于2.如果直接采用A>=3去查询就直接定位到A=3的资料,显然>=效率更高**建议:..
2022-07-29 15:37:56
159
原创 Angular问题总结-文件的下载
问题描述主要分为单个文件下载,以及文件压缩之后下载解决方案//后端代码//压缩后下载//首选需要去判断压缩文件存放的目录是否存在,必须存在if(!//文件夹创建}//文件存放的文件夹目录stringstartPath=Path.Combine(Environment.CurrentDirectory,文件夹目录);//压缩文件名//压缩文件存放的目录//创建压缩文件。...
2022-07-27 15:35:52
530
原创 Angular问题-上传文件之前后端开发
问题描述需要在前端上传文件之后在后端储存在当前系统运行环境中。前端将文件写入到FormData中,对象需要转换为JSON。当文件存在多级结构,需要将文件放入到对象中去一一对应时,此时可以后端通过FormForm来进行接受。...
2022-07-27 15:27:31
463
原创 TypeScript - 数据类型
*Object**表示非原始類型,也就是除了number、string、Boolean、symbol、null或undefined之外的類型。**元组Tuple**允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。**数字**所有数字都是number,支持二进制、十进制、八进制、十六进制字面量。**类型断言**类似于类型转换,但不进行特殊的数据检查和解构。**Void**表示沒有任何类型,当一个函数没有返回值时使用。**Never**表示永不存在的值的类型。时所有类型的子类型。...
2022-07-15 15:14:34
60
原创 TypeScript - 接口
可索引类型具有一个索引签名,他描述了对象索引的类型,还有相应的索引返回值类型。需要注意的是,我们传入的对象参数实际上会包含很多属性,但是编译器只会检查那些必需的属性是否存在,并且其类型是否匹配。当传递的参数中包含接口中没有的属性时,TypeScript的额外属性检测,会得到一个错误。可以同时使用两种类型的索引,数字索引的返回值必须是字符串索引返回值类型的子类型。类型检查器不会去检查属性的顺序,只要相应的属性存在并且类型也是对的就可以。接口的作用为这些类型的命名和为代码的第三方代码定义契约。......
2022-07-15 15:13:41
144
原创 TypeScript-类
抽象类中的抽象方法不包括具体实现并且必须在派生类中实现。TS支持通过getters/setters来截取对对象成员的访问,帮助有效的控制对对象成员的访问。**Private**当成员被标记成private时,他就不能在声明它的类的外部访问。**Readonly**将属性设置为只读。一般不会被实例化,不同于接口,抽象类可以包含成员的实现细节。成员,并且来自同一处的声明时,才认为两个类型是兼容的。可以保存函数创建时的this值,而不是调用时的值。JS中this的值在函数被调用的时候才指定。......
2022-07-15 15:12:58
135
原创 TypeScript-泛型
当我们想操作某类型的一组值,且已经知道这组值具有什么样的属性,例如想访问参数的length属性,但是编译器不能证明每种类型都有length属性,所以会报错。**泛型约束中使用类型参数**声明一个类型参数,且它被另一个类型参数所约束,例如想用属性名从对象里获取这个属性,且要保证整个属性存在于这个对象,在两个类型之间使用约束。泛型类型泛型函数的类型与非泛型函数的类型区别不大,只是有一个类型参数在前,类似函数声明。**在泛型里使用类类型**在TS使用泛型创建工厂函数时,需要引用构造函数的类类型。......
2022-07-15 15:11:03
204
原创 RXJS学习
纯函数:函数副作用:指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量),修改参数或改变外部存储。**响应式编程:**响应式编程或反应式编程是一种面向数据流和变化传播的声明式编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。**数据流:**数据在系统内传播的路径,表示在一定时间范围内发生的一系列事件。任何东西都可以是一个Stream:变量、用户输入、网络响应、定时器、数据结构等。**变化传播:*
2022-07-12 18:13:25
450
原创 ES6学习笔记-Promise
异步编程解决方案。,就是一个容器。里面保存着某个未来才会结束的事情。从语法上说。Promise是一个对象从它可以获取异步操作的信息。特点:对象的状态不受外界影响。对象代表一个异步操作。三种状态:只有异步操作的结果,可以决定当前是哪一种状态。任何其他操作都无法改变一旦状态改变,就不会再变,任何时候都可以得到这个结果。对象的状态改变,只有两种可能:从变为和从变为。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。缺点:构造函数接受一个函数作为参数,该函数
2022-07-11 17:33:39
294
原创 ES6学习笔记
Let声明变量Const声明常量解构赋值(适用于方法的调用)数组的解构对象的解构属性的重命名默认值函数声明type:类型别名。用来给类型起另外一个名字模板字符串简化对象写法允许在大括号内,直接写入变量和函数,作为对象的属性和方法语法:箭头函数没有自己的this,在箭头函数定义时就指定了this,就是它的父级this箭头函数声明的特性:this是静态的,this始终指向函数声明所在作用域的this的值不能作为构造函数实例化对象不能使用arguments变
2022-07-07 18:26:16
283
转载 JavaScriptt提取字符串中的數字 几种方法
1.前面带数字,后面非数字,可以直接用parseFloat()函数:2.像"生于1999年"这样字符串中只含有一个整型数值的字符串,直接使用正则表达式将数字的字符删除掉就行:3.对于字符串中含有多数值,使用字符串的match方法,通过正则表达式提取字符串的所有数字(包含整数和小数):...
2022-06-27 11:33:43
281
原创 JS 高级学习笔记
#### 类和对象类必须使用new来实例化对象类constructor()构造函数继承一些属性和方法。super关键字,用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数。super必须放在this之前,必须先调用父类的构造方法,在调用子类继承中的属性或方法查找原则,就近原则类的注意事项:.........
2022-06-20 22:31:01
65
原创 RxJS 学习笔记
RxJS是一个库,通过observable序列来编写异步和基于事件的程序。提供了一个核心类型Observable,附属类型(Observer、Schedulers、Subjects)和受[Array#extras]启发的操作符(map、filter、reduce、every等),这些数组操作符可以把异步事件作为集合来处理。observable序列:可以用于描述元素异步产生的序列。所有的事物都是序列例如:***Observable***温度入门ReactiveX 结合了 观察者模式、迭代器模式 和 使用集
2022-06-15 17:45:31
738
原创 Angular Form表单添加控件、监听
addControl():向组件中添加控件参数:**当需要添加子控件时:**通过类型断言将类型提前声明为Form Group(根据实际类型断言)FormArray 是 Angular 表单中定义的三个基本构造块之一。 聚合了数组中每个表单控件的值。 它还会根据其所有子控件的状态总结出自己的状态。比如,如果 中的任何一个控件是无效的,那么整个数组也会变成无效的。方法:新增FormArray:通过Push()直接在后面追加当需要有些Form表单的输入事件无法通过指令监听时,可以通过以下方式监听值的改
2022-06-15 09:44:21
1319
原创 Form表单 回车(Enter)提交表单问题
在Form表单中input会自动响应回车事件。这是表单的默认提交动作。表单的提交行为,可以用两种方式定义,一是form表单自身,二是form表单的button元素(包括type='submit’的input标签,以及type=‘submit’的button元素,button元素type为Submit)。而点击Enter键会触发form表单提交。这被称为隐式提交,如果要阻止回车键提交表单,可以在form标签内添加如下代码ng-keydown 指令不会覆盖元素的原生 onkeydown 事件, 事件触发时,n
2022-06-15 08:32:12
8016
原创 JSMap与Set
是一组键值对的结构,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用实现,需要两个:给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长。如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用JavaScript写一个Map如下:初始化需要一个二维数组,或者直接初始化一个空。具有以下方法:由于一个key只能对应一个value,所以,多次对一个k
2022-06-13 18:02:22
67
原创 TypeScript学习笔记7
可以定义一些带名字的常量。使用枚举可以清晰地表达TypeScript支持数字和基于字符串的枚举。上述数字枚举,Up使用初始化为1,其余成员会从1自增或不适用初始化器:默认从0开始。使用枚举:数字枚举可以被混入到计算过的和常量成员。意思说不带初始化器的枚举或者被放在第一的位置,或被放在使用了数字常量或其他常量化了的枚举后面。字符串枚举字符串枚举,每个枚举成员都必须使用字符串字面量,或另外一个字符串枚举成员进行初始化。以为内字符串枚举没有自增长的行为,字符串可以很好的序列化。异
2022-06-06 18:06:32
77
原创 TypeScript学习笔记6
当需要一种方法返回值的类型和传入参数的类型相同时。可以使用类型变量(是一种特殊的变量。只用于表示类型而不是值)使用:泛型类型泛型函数的类型与非泛型函数的类型区别:一个类型参数在最前面,像函数声明一样带有调用签名的对象字面量定义泛型函数...
2022-06-06 18:03:21
146
原创 TypeScript学习笔记4
继承使用继承来扩展现有的类。class Animal { move(distanceInMeters: number = 0) { console.log(`Animal moved ${distanceInMeters}m.`); }}class Dog extends Animal { bark() { console.log('Woof! Woof!'); }}const dog = new Dog();dog.b
2022-05-31 17:39:35
85
原创 TypeScript学习笔记3
三、接口TypeScript的核心原则之一是对值所具有的*结构*进行类型检查。接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。可选属性接口里的属性不全都是必需的。有些是只在某些条件下存在,或者根本不存在。可选属性接口,就是在可选属性名字后定义前加一个 ? 符号interface SquareConfig { color?: string; width?: number;}只读属性一些对象属性只能在对象刚刚创建的时候修改其值。在属性名前用 readon
2022-05-30 17:53:25
92
原创 TypeScript学习笔记2
二、解构let input = [1, 2];let [first, second] = input;console.log(first); // outputs 1console.log(second); // outputs 2//解构作用于已声明的变量会更好:// swap variables[first, second] = [second, first];作用域函数参数:function f([first, second]: [number, number]) {
2022-05-30 17:51:09
74
原创 TypeScript学习笔记1
一、基础类型类型 描述/声明 值 布尔值 :boolean true、False 数字 :number 所有数字都是浮点数,支持十进制、十六进制、二进制、八进制 字符串 :string 使用双引号("")或单引号(‘’)表示字符串,可定义多行文本和内嵌表达式(使用`反引号包围,以${expr}形式嵌入表达式,expr为变量名) 数组 1、 元素类型后面接上[],表示此类型元素组成的一个数组 2、使用数组泛型 Array<元素类型
2022-05-30 17:48:08
55
原创 Oracle涨姿势 - Raw,与判断为空
Oracle中如果字段的类型为 Raw,使用 PLSQL 和 SQLPLUS 都可以显示出来正常的数据:但是 我在使用dbeaver 时发现查出来的是乱码。要显示原来的值,可以使用utl_raw包的方法:select UTL_RAW.cast_to_varchar2(UTL_RAW.cast_to_raw(ID)) as recid from userMenu;判断为空值:使用is null...
2022-03-04 15:14:39
393
原创 Angular中ngfor与ngif的嵌套使用
ng2 结构指令不能直接嵌套使用,可以通过使用标签来包裹指令,两个结构指令分开放在两个标签中,解决冲突。<ul *ngFor="let value of item; let key = index"> <li *ngIf="value.isShow">{{value.name}}</li></ul>...
2022-03-03 20:09:56
1025
原创 Angula - 父子指令及组件之间共享数据
通过@Input()和@Output()来实现。层次结构<parent-component> <child-component></child-component></parent-component>@Input():允许父组件更新子组件的数据。@Output():允许子组件向父组件发送数据。使用之前,配置子组件或指令中的@Input()装饰器表示该属性可以从其父组件中获取值。要使用@Input(),就必须对父组件和子组件
2022-02-28 22:19:31
190
转载 Angular中的 问号 和 感叹号 作用
?用来检查问好前面的变量是否null或者undefined时,程序不会出错。stu3: Student;<h1>stu3 id{{stu3?.id}}</h1> // stu3 id<h1>stu3 name{{stu3?.name}}</h1> // stu3 name比如上面的例子中stu3没有初始化,在调用id或者name的时候,就不会抛出异常。!用来检查感叹号后面的变量为null或者undef
2022-02-28 21:44:58
1099
原创 Angular组件 - 组件交互
组件交互让两个或多个组件之间共享信息的方法父传子 - 通过输入型绑定把数据从父组件传到子组件 父组件传入: [hero]="hero" [] 中存放在子组件接收时的变量名 = 后存放父组件传入自组建的值。import { Component } from '@angular/core';import { HEROES } from './hero';@Component({ selector: 'app-hero-parent', template...
2022-02-27 19:04:31
473
原创 better-scroll在vue中使用出现的不滑动问题
今天在vue中使用better-scroll时,发现第一次加载后页面无法滚动。去查了相关问题后发现了 一大堆的解决方案,汇总后:首先检查代码,content高度是否大于warpper、样式是否写错, 确认代码没有问题的情况下,可以考虑是否是,Dom加载问题,因为如果BetterScroll无法计算出高度,会出现这个问题,可以通过nextTick()或者在scroll事件中添加refresh()方法来重新计算高度添加refresh附上代码: mounted() { // ref绑定在.
2021-12-09 13:11:02
1455
原创 Vue打包后出现.map文件
运行 npm run build命令打包之后发现多了很多.map文件,占体积最大搜索之后发现map文件的作用:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。解决办法:去config/index.js中改一个参数:productionSourceMap:false把这个改为false。不然在最终打包的文件中会出现一些map文件...
2021-11-25 20:56:52
744
转载 无法加载文件D:\Program Files (x86)\node-v16.4.0-win-x861,因为在此系统上禁止运行脚本。
1、问题描述因为你本机禁止运行脚本2、解决办法(1)以管理员身份运行命令窗口(2)输入命令:set-ExecutionPolicy RemoteSigned3、重启命令窗口即可解决问题4、再次创建就可以了【https://blog.csdn.net/u013513178/article/details/114823445】...
2021-06-29 17:44:27
617
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人