- 博客(31)
- 收藏
- 关注
原创 React-杂记
React 学习高阶组件函数组件中绑定this指向(隐式)的方式React 生命周期受控组件与非受控组件受控组件非受控组件组件优化只渲染产生变化的部分前端路由browser路由hash路由Portals高阶组件作用:类似一个装饰器,为原有的组件提供额外的功能。抽象出原始组件的共有方法,并将原始组件作为子组件传入高阶组件。函数组件中绑定this指向(隐式)的方式通过箭头函数// 方式一function App() { let [count, setCount] = useState
2021-09-07 20:31:34
380
原创 JS-es6新特性
JS学习4let/const解构赋值扩展运算符restSymbolMap 和SetMaplet/constlet 用于声明块级作用域的变量,具有暂时性死区(声明前使用会报错)的约束。const只包含声明和初始化两个操作。对于for循环,js每执行一次循环都会创建一个块作用域。解构赋值// 常见操作let a = 1, b=2;// 使用解构赋值来交换变量值[a, b] = [b, a] 扩展运算符...符号常用于拷贝原始对象,注意,该运算符只进行一层拷贝(浅拷贝)。let obj
2021-08-30 11:30:00
252
原创 JS-事件处理机制
JS学习3发布订阅设计模式Event Loop发布订阅设计模式Event Loopjs是一门单线程语言,其异步与多线程的实现是通过 Event Loop 来实现的。调用栈消息队列(setTimeout、setInterval等的事件回调函数,会在调用栈清空后执行)。微任务队列(Promise,async await等创建的异步操作,会在调用栈清空后立即执行,优先于消息队列)。var p = new Promise(resolve =>{ console.log(4);
2021-08-29 21:22:11
314
原创 JS-面向对象和this处理
JS 学习3原型和原型链this 指向箭头函数和普通函数指向形式new 关键字call、apply和bindcall、applybind实现继承的几种方式使用原型链借用构造函数寄生式继承类继承原型和原型链prototype 表示的是该对象的原型对象_proto_ 指向的是产生该实例的对象中的原型对象(本质就是访问公共属性的指针)。constructor 则指向的是创造该对象的父类对象原型对象:用于实现继承,包含实例对象都能访问的公共属性和方法。注意点:constructor 的最终指向
2021-08-26 11:29:43
239
原创 JS-高阶函数
JS 学习2函数柯里化函数防抖和函数节流函数防抖函数节流惰性函数函数柯里化定义:先接受一些参数并形成闭包,并返回另一个函数,用于接受剩余的参数。调用另一个函数,会将所有的参数加入计算得到结果。本质:固定部分参数,创建偏函数,使得函数的通用性降低,适用性提升。一种柯里化的方法:var curry = function (fn) { var args = [].slice.call(arguments, 1); return function() { var newAr
2021-08-24 18:16:31
89
原创 JS - 堆栈内存及闭包作用域
JS 学习1数据类型变量提升执行上下文闭包闭包的应用编译机制(VO,AO和GO)VO(变量对象)VO(G)AOGO作用域数据类型undefined 和 null 区别与联系undefined 表示某个表达式的原始状态。null 表示一个对象被认为重置,切断栈中对象指针与堆中对象的关系,因此,用于释放对象。js中的 string 也属于基本类型,因此数据也是直接存储在栈中。js中也存在包装类,与基本类型最主要的区别就是对象的生存周期。// 引用类型自定义属性在定义后失效let s =
2021-08-24 16:39:12
281
原创 Spring-AOP
Spring5视频学习笔记相关定义实现(注解方式)AspectJ注解切入点表达式对同一个方法上的多个增强类设置优先级被增强类代码增强类代码相关定义连接点(joint point):类中哪些方法可以被增强,这些方法被称为连接点(理论可以增强的方法)切入点(pointcut):真正被增强的方法,这些方法被称为连接点(实际增强方法)通知(增强)(advice):实际增强的逻辑部分前置增强(@Before):方法前后置增强(@AfterReturning):方法后环绕增强(@Around):前后都
2021-04-27 16:43:34
88
原创 Spring5-IOC
Spring5视频学习笔记概念底层原理IOC容器的实现方式Bean管理基于xml配置的补充说明注入的属性含有特殊符号时:注入外部bean注入内部bean注入对象设置单实例与多实例后置处理器引入外部属性文件基于注解方式的补充说明格式作用域创建对象的注解创建流程扫描过滤器注入属性的注解配置类注解概念把对象创建和对象之间的调用过程,交给spring来管理。主要为了降低类之间的耦合度。底层原理xml解析工厂模式(用于解耦)反射IOC容器的实现方式BeanFactory(Spring内部接口)
2021-04-27 15:00:26
93
转载 重拾Java之路-类加载
类加载类加载机制定义类加载过程引申加载验证准备解析初始化类加载器分类启动类加载器扩展类加载器应用程序(系统)类加载器自定义加载器双亲委派模型优势JVM两个class对象是否为同一个类对象的必要条件自定义类加载器应用参考类加载机制定义Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。类加载过程类加载过程主要分为三个部分:加载;链接;初始化;其中链接可以细分为 验证、准备和解析 三
2021-04-15 17:01:44
155
原创 Java学习笔记-JVM垃圾回收
java基础7二、垃圾回收机制(GC)判断对象是否可被回收1. 引用计数算法2. 可达性分析算法Java的引用类型1. 强引用2. 软引用3. 弱引用4. 虚引用5. 终结器引用(不推荐)垃圾回收算法标记清除标记整理复制分代的垃圾回收机制(实际方式)垃圾回收器二、垃圾回收机制(GC)垃圾回收主要针对堆与方法区(比较少)来进行。判断对象是否可被回收1. 引用计数算法为对象添加一个引用计数器,引用计数为0的对象可被回收。存在的问题:如果两个对象出现循环引用时,无法被回收(a引用b对象,b对象引用a对
2021-04-13 17:18:17
402
原创 Java视频学习笔记-String
Java视频学习笔记字符串的不可变性String、StringBuffer、StringBuilderStringStringBufferStringBuilder字符串的不可变性使用“ ” 进行初始化,如果创建的对象所指向的字符串相同,则两个对象也相同(类似于指针)。使用 new 关键字则会创建两个不同的对象,即使指向的字符串相同,两者也不一样(位于堆中)1.6版本的JDK 常量池位于方法区中;1.7版本的JDK常量池位于堆中;1.8版本的JDK常量池位于方法区中(使用元空间实现)Strin
2021-04-12 15:56:33
70
原创 Java学习笔记-JVM参数
java基础8三、JVM参数类型XX参数(example)Boolean类型KV设置类型参数查询方法一方法二内容源自阳哥的视频教学三、JVM参数类型标配参数:基本不变X参数:变化比较小XX参数(重点):相对不稳定,用于JVM调优和DebugXX参数(example)Boolean类型-XX:+/- [name]PrintGCDetailsUseSerialGCKV设置类型-XX:[name]=valueMetaspaceSize(≈21m,理论上可以设置得更大,防止出现
2021-04-05 18:00:24
187
1
原创 Java多线程学习
Java多线程线程方法比较run与startwait,sleep与yield线程关键字Synchronized底层实现线程方法比较run与startstart方法用于线程的启动;只能调用一次,底层由C实现。run方法用于执行线程的运行时代码(线程干的活);可重复调用。wait,sleep与yieldwait定义在Object中,用于线程间通信(使线程进入无限期等待),只能用于同步块/方法中;在让出CPU的同时,释放所占用的同步资源锁。sleep是Thread的静态方法, 可用于任何地方;
2021-04-05 10:42:57
649
1
原创 操作系统笔记
操作系统死锁产生死锁的四个必要条件1. 互斥条件2. 请求和保持条件3. 不剥夺条件4. 环路等待条件死锁与数据库常见情况与解决方案事务之间对资源访问顺序的交替并发修改同一记录索引不当导致全表扫描分布式锁进程间通信方式Linux操作常用命令什么是安装Linux所需的最小分区数量,如何查看系统启动信息?Linux机器上跟踪系统事件的守护进程名?死锁定义: 是进程死锁的简称,指多个进程循环等待它方占有的资源而无限期僵持下去的局面。产生死锁的四个必要条件1. 互斥条件进程对所分配到的资源进行排它性使用。
2021-03-26 19:04:17
88
原创 计算机网络笔记
计算机网络模型架构OSI 7层模型TCP/IP 4层模型TCPTCPTCP三次握手TCP的四次挥手TCP的可靠传输TCP滑动窗口TCP拥塞控制应用层Web页面的请求过程HTTP模型架构OSI 7层模型物理层:传输比特流;数据链路层:封装数据帧(MAC帧)网络层:封装IP数据包(只包含IP地址与数据内容)传输层:封装TCP/UDP首部,管理端到端的连接。会话层:管理会话连接(内部应用)。表示层:对数据格式化以及加解密。应用层:为应用程序提供网络服务。TCP/IP 4层模型数据链路层
2021-03-26 13:42:30
186
原创 数据库
数据库1一、隔离级别未提交读提交读可重复读可串行化二、范式第一范式第二范式第三范式BCNF三、索引B Tree特性查询规则插入规则删除规则B+ Tree与B树的不同点查找规则插入规则删除规则B+ Tree 的优势红黑树简介性质简介与红黑树的比较MySQL索引官方建议使用自增长主键作为索引索引的分类索引的优点聚簇索引与非聚簇索引聚簇索引的优劣优势劣势一、隔离级别未提交读事务中的修改,即使没有提交,对其它事务也是可见的。出现的问题:脏读,不可重复读,幻影读;提交读一个事务只能读取已经提交的事务所作的
2021-03-11 21:26:28
523
转载 重拾Java之路-I/O
Java基础篇7一、概览二、磁盘操作三、字节操作四、字符操作编码与解码五、对象操作六、网络操作七、新的输入/输出两者的区别通道与缓冲区通道类型同步与异步(本人询问,老板回复的方式)阻塞与非阻塞(本人后续的操作)5种I/O模型阻塞IO模型非阻塞IO模型多路复用IO模型信号驱动IO模型异步IO模型一、概览java的I/O大概分成以下几类:磁盘操作:File;字节操作:InputStream 和 OutputStream;字符操作:Reader 和 Writer;对象操作:Serializable;
2021-03-10 17:03:05
426
1
原创 Java视频学习笔记-多线程
Java视频学习笔记程序、进程和线程线程的分类线程的生命周期创建线程的方式程序、进程和线程程序:完成某个任务的指令集合,是一段静态代码;进程:是程序的一次执行过程,表示一个正在运行的程序。(资源分配的最小单位)线程:是一个程序内部的一条执行路径,拥有独立的程序计数器,虚拟机栈和本地方法栈。(CPU调度的最小单位)一个Java应用程序,最少包含三个线程:main()主线程,gc()垃圾回收线程以及异常处理线程。线程的分类守护线程,用户线程。两者的唯一区别是判断JVM何时离开。调用 thr
2021-03-08 20:54:57
94
原创 Java视频学习笔记-面向对象-抽象与接口
Java视频学习笔记abstract抽象类:抽象方法:注意点Interface注意点抽象类与接口abstract可以修饰 类 与 方法。抽象类:不能被实例化一定包含构造器,以便子类实例化时的调用抽象方法:抽象方法只有方法的声明,没有方法体。抽象类不一定包含抽象方法,但是抽象方法只会存在于抽象类中。若子类没有重写父类的抽象方法,则子类也是抽象类。注意点abstract 不能用于修饰 属性,构造器等结构。abstract不能用于修饰私有方法、静态方法(不能重写)、final方法以
2021-03-03 21:26:56
246
1
转载 重拾java之路-集合
Java基础篇4HashMapHashMap遍历Map中的元素时,使用 entrySet() 方法得到的是Map.Entry<type, type> 对象,使用getKey(),getValue() 方法来获取键值对。关于Java8中的流特性:将 entrySet() 方法获得的流对象使用链式操作后,得到的是 Optional 对象,其中封装了Map.Entry对象。...
2021-03-01 20:14:47
209
转载 重拾Java之路-异常与多线程简述
Java基础篇4异常处理日志多线程编程简述异常处理Java 异常包含两种类型:一种为 Error,描述Java程序运行时系统的内部错误,通常为虚拟机异常: StackOverflowError,OutOfMemoryError,NoClassDefFoundError等。一种为 exception,包含了 RuntimeException 和其他异常(受查异常:IOException)。受查异常在编译阶段就会进行检测,使用 throws关键字或 try-catch-finally 语句块来进行处理
2021-02-27 22:48:53
133
原创 重拾Java之路-排序算法
排序算法归并排序快速排序堆排序归并排序时间复杂度O(nlogn),空间复杂度O(nlogn)算法描述:对单个数组进行拆分得到两个子数组,并新建一个相同大小数组,然后从两个子数组中选择相对较小的元素插入新数组,直到两个子数组都被选完。递归使用该方法,直到序列有序。算法实现细节:需要对所有元素进行拆分,由于子数组有长有短,多余的部分全部复制到新数组中。/* * * 归并排序 * 时间复杂度为 O(nlogn),空间复杂度为O(nlogn) * * *
2021-02-10 20:58:55
114
转载 重拾Java之路-面向对象特性
Java基础篇3五、Object通用的方法equals等价于相等的区别hashcodetoStringclone六、继承访问权限抽象类与接口关于两者的比较五、Object通用的方法equals功能描述:判断两个对象是否等价。对于等价的定义:自反性(自身等价)对称性(相互等价)传递性(传递等价)一致性(多次调用结果不变)任何非null对象与null比较的结果都是false等价于相等的区别对于基本类型, 直接使用 == 来判断是否相等,无equals方法。对于引用类型, == 用于判
2021-02-03 22:01:46
108
原创 Java & Leetcode
二分查找一、常规二分查找1. 查找法2. 排除法3. 递归版本的查找法二、寻找旋转排序数组的最小值1、无重复元素2、 可能包含重复元素三、搜索旋转排序数组1、无重复元素2、可能包含重复元素四、山脉数组1、山脉数组的峰顶索引2、山脉数组中查找目标值记录leetcode关于二分查找的题目二分法的基本思想都是 减而治之一、常规二分查找1. 查找法public int IterativeBS(int[] nums, int target){ // 应用的是查找的思想 int
2020-12-21 15:45:23
90
原创 Java & leetcode
Java常用集合ArrayListLinkedListHashSetHashMap记录leetcode编程时常用的集合类ArrayList描述:可以动态增长与缩减的索引序列。适用场合:由于依据动态数组的实现,该类适用于尾部插入删除与索引查找,同时在数据量比较大的时候,空间开销相对于LinkedList会小很多。LinkedList描述:可以在任何位置进行高效插入与删除操作的有序序列。适用场合:依据双向链表实现,该类适用于插入与删除操作,以及首尾的查找。HashSet描述:没有重复元素的无序
2020-12-15 15:42:22
160
转载 重拾java之路-关键字
Java基础篇2三、运算参数传递隐私类型转换四、关键字final1.数据2.方法3.类static1.静态变量2.静态方法3.静态语句块4.静态内部类5.静态导包6.初始化顺序三、运算参数传递Java 参数是以值传递的形式传入方法,而非引用传递。(对于对象,传递的则是引用的地址值)在方法中改变对象的字段值会改变原始对象的字段值,因为引用的是同一个对象。而如果在方法中将指针引用了其它对象,则该指针作用域仅限于该方法。(这也是Java值传递带来的结果)public class PassByValueE
2020-11-22 17:37:42
125
转载 重拾Java之路
Java学习记录一一、 数据类型基本类型与包装类型缓存池二、StringString,StringBuffer与StringBuilderString Pool一、 数据类型基本类型与包装类型对于基本类型,需要注意的是boolean类型只有两个值,使用1bit来存储。JVM会在编译的时候将其转化为int。 JVM支持boolean数组,但是是以读写byte数组来实现的。关于包装类型:由于Java是面向对象的,包装类型可以看成是对基本类型的对象的引用,直观一点的看法就是,对于容器来说,包装类型是可以直
2020-11-20 20:58:54
103
转载 pycharm 使用git push 出现 invalid authentication data connection refused错误
首先,前提是打开了某代理软件。然后在pycharm中的代理(搜索proxy)进行如下设置即可。感谢https://blog.youkuaiyun.com/OOFFrankDura/article/details/104881859博主的指导,自己也进行记录一哈,加深印象。...
2020-06-22 11:04:23
1307
1
原创 Python3 cookbook 学习记录 1
Python3 cookbook 学习记录 1第一章:数据结构与算法解压可迭代对象给多个变量解决方案使用星号表达式 *一个很像C中的功能,符号也和指针符号一样,都是使用 * 来表示,例如: record = ("name", "mail", "123-456", "123-789") # 将电话都解压到 phone 列表中 name, email, *phone ...
2020-01-17 23:20:56
161
原创 关于在pycharm中git的版本回退
(1)首先回退本地版本:选择版本控制里的回退功能,并在github中找到你想回退版本的校验码,我的为:cea32e8...。选择以hard形式回退,本地回滚完成。(2)回退远程仓库版本同样继续使用Reset Head功能,此时选择的类型则为 Mixed ,并且校验码为最新的校验码(之前提交有错的校验码),我的为:f257b54...。然后再提交push就阔以啦...
2019-11-01 16:34:48
5079
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人