- 博客(159)
- 收藏
- 关注
原创 操作系统串讲
前言文章内容来源:东北大学的操作系统MOOC视频在操作系统的不同阶段,计算机的工作形式也不同,不要在一开始就将操作系统在心里预设成现代的 windows 或 linux 操作系统,以及将计算机预设成个人电脑等,防止代错对象、误导理解在操作系统的学习过程中,会出现:作业、任务、程序之类的词,它们是类似的概念,只是在不同的操作系统阶段对计算机需要处理的问题的代称。以及计算机、处理机、主机之类的词,都是指的具有计算能力的硬件。希望大家不要被术语所误导在学习操作系统的过程中,本文会从简单的算法/解决方案逐
2022-04-20 05:28:49 3917
原创 HarmonyOS 应用开发记录
前言采用 JS + Java 混合开发模式通过 JS、CSS、HML 描述页面Java 提供系统能力接口供 JS 调用类似于客户端开发时,JS 通过 JSB 调用 Java 接口遇到的坑1. 页面顶部的 TitleBar 去不掉如图:官方文档也没提咋去,论坛里得知:// 在 config.json 中的 module 里如下配置 "metaData": { "customizeData": [ { "name":
2022-04-01 19:58:07 3010
原创 RN:Android 开发记录
环境搭建Java SE安装: Java SE Development Kit 8判断:在命令行输入 java 回车,如下图即安装成功Android SDK Tools安装:Android SDK Tools问题使用 yarn android 时,出现:Could not find Tools.jar解决方式:在 gradle.properties 中添加# 等号右边是 JAVA_HOME 的位置org.gradle.java.home=/Library/Java/Jav
2021-11-13 18:15:59 2227
原创 趣谈Linux操作系统:Linux 启动过程
Linux 启动过程实模式时内存分配从实模式切换到保护模式启用分段,就是在内存里面建立段描述符表,将寄存器里面的段寄存器变成段选择子,指向某个段描述符,这样就能实现不同进程的切换了。启动分页。能够管理的内存变大了,就需要将内存分成相等大小的块。lzma_decompress.img 负责切换模式的原因解压 kernel.img 太大了,1m 的内存空间不够用,需要先切换到 保护模式,能使用 4GB的内存空间后再进行解压...
2021-11-01 17:50:13 264
原创 每天一个小知识:HOTP
HOTP概述HOTP: 基于HMAC的一次性密码算法【An HMAC-Based One-Time Password Algorithm】一次性密码意味着通过该算法生成的密码只能使用一次,使用一次后就会失效,下一次又会是另一个密码。步骤通过 HMAC 的 SHA-1 算法,生成一个 20 字节的字符串,称为 HS ,即 HS = HMAC-SHA-1(K, C)通过动态截断 DT 将 20 字节的 HS 转换为 4 字节的字符串,称为 Sbits,即 Sbits = DT(HS)将 Sb
2021-08-29 09:35:27 3393
原创 每天一个小知识:Monorepo
Monorepo解释:mono指单一的,repo是仓库的简写。“mono” meaning ‘single’ and “repo” being short for ‘repository’所以Monorepo指单一的仓库,是将多个项目在同一个仓库中开发的策略。优点:可以轻易的实现代码复用:可以把共用的代码放在共享的文件夹下,每个项目直接导入就可以使用简化了第三方库的管理:可以将多个项目共同依赖的库放在共用的位置原子提交:当多个项目在多个仓库中分别开发的时候,一个项目的
2021-08-28 10:01:37 817
原创 React 学习笔记 —— mounted 回调不只执行一次
前言在开发的时候往往 mounted 回调都只执行一次,因此下意识的觉得这是常识了但其实 mounted 执行次数可以不是一次,取决于 React 在做 Diff 的时候是否卸载原结点代码该代码对 Inner 组件的相关生命周期进行研究通过 toggle 按钮触发App重绘import { useEffect, useState } from "react";const Inner = () => { useEffect(() => { console.log
2021-06-29 11:58:54 1337
原创 React 学习笔记 —— Portal
作用portal 即传送门,他可以将组件渲染到指定元素下,而不限于当前书写的 JSX 层级结构用途:当需要将某个元素始终保持在顶层时,可以使用 protal 将其传入到 body 下代码// App.jsximport { createPortal } from "react-dom";const Inner = () => { // 此处返回的 JSX 是经过 createPortal 包装处理过的 return createPortal(<div id="Inner
2021-06-29 11:15:41 559
原创 曼彻斯特编码与差分曼彻斯特编码
前言曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE);常用于局域网传输。曼彻斯特编码在一些《计算机网络》书籍中:位中间电平从高到低跳变表示"1";位中间电平从低到高跳变表示"0"。差分曼彻斯特编码在一些《计算机网络》书籍中:在信号位开始时不改变信号极性,表示逻辑"1";在信号位开始时改变信号极性,表示逻辑"0" 。【注意】:如果在最初信号的时候,即第一个信号时:如果中间位电平从高到低,则表示1;如果中间位电平从低到高,则表示0。...
2021-06-19 12:34:17 14329 4
原创 计算机网络 —— 点对点协议 PPP
点对点协议 PPP应用最广的数据链路层协议用于将数据封装成帧PPP 协议由以下三部分构成对各种协议数据报的封装方法 (封装成帧)链路控制协议 LCP (用于建立、配置以及测试数据链路的连接)一套网络控制协议 NCPs (其中的每一个协议劫持不同的网络层协议)帧格式如下:透明传输在传输的数据中,可能会出现特殊含义的字符,比如 7E,那么为了区分,这个7E是定界符还是正常的帧数据,就需要对传送的数据进行转义,从而实现透明传输面向字节的异步链路采用插入转义字符的字节填充法:面
2021-05-22 11:38:15 460
原创 super super mini-vue
Evan You 【中英字幕】- Vue3 Mastery<div id="app"></div><script> function h(tag, props, children) { return { tag, props, children }; } function mount(vnode, container) { const { tag, props, children } = vn.
2021-05-16 17:13:38 265
原创 Vue3 学习笔记 —— 异步组件
App.vue<template> <!-- 当异步组件还未展示时用于显示备选组件 --> <Suspense> <!-- 默认显示 --> <template #default> <AsyncComponent/> </template> <!-- 加载时显示 v-slot: 可以简写为 # --> <template v-slot:.
2021-05-11 19:54:14 380
原创 大型数据库技术复习 —— 自定义函数
### 简介- T-SQL的函数由一个或多个T-SQL语句组成,也是一个子程序。- SQL Server支持三种用户定义函数:标量型函数、内嵌表值型函数、多语句表值型函数。(1)标量型函数(Scalar function)。标量型函数返回单个数据值。(2)内联表值型函数(Inline TABLE-valued function)。内联表值型函数以表的形式返回一个返回值,即它返回的是一个表。(3)多语句表值型函数(Multi-statement TABLE-valued function)。多语句表
2021-05-08 19:24:23 477 1
原创 大型数据库技术复习 —— 游标
### 简介 - 游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制 。- 游标使用步骤:(1)DECLARE声明游标(2)OPEN打开游标(填充游标数据)(3)从一个游标中FETCH(取)信息,对信息进行处理(4)CLOSE关闭游标(5)DEALLOCATE释放游标
2021-05-08 19:22:49 337
原创 大型数据库技术复习 —— 触发器
### 简介- 触发器是在对表进行**插入**、**更新**或**删除**操作时自动执行的存储过程- 触发器通常用于强制业务规则- 触发器是一种高级约束,可以定义比`CHECK` 约束更为复杂的约束 - 触发器定义在特定的表上,与表相关- 自动触发执行,不能直接调用- 是一个事务(可回滚)
2021-05-08 19:22:14 450
原创 大型数据库技术复习 —— 存储过程
简介存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。Transact SQL存储过程可以接受输入参数,以参数形式返回输出值,或者返回成功、失败的状态信息。
2021-05-08 19:21:18 397
原创 大型数据库技术复习 —— 索引
### 简介- 数据库中的索引是某个表中一列或者若干列**值的集合** 和 指向表中物理标识这些值的**数据页的逻辑指针**清单。
2021-05-08 19:20:44 453
原创 大型数据库技术复习 —— 数据库和表存储结构
## 数据库结构<hr>### 数据库文件和文件组- 主数据库文件(`Primary Database File`):是数据库的起点,可以指向数据库中文件的其它部分。每个数据库都有一个主数据库文件。文件扩展名一般是 `.mdf`。- 次数据库文件(`Secondary Database File`):有些数据库可能没有次数据文件,扩展名是 `.ndf`。 - 事务日志文件:日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。推荐的文件扩展名是 `.ld
2021-05-08 19:20:05 603
原创 大型数据库技术复习 —— 事务控制
### 简介- 事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据库中数据的一致性和可恢复性。
2021-05-08 19:19:31 497
原创 大型数据库技术复习 —— T-SQL编程
简介T-SQL 即 Transact-SQLTransact-SQL是SQL-Server特有的在SQL基础上扩展后的超集。标识符常规标识符跟其他语言的变量命名完全一致特殊标签符:@:表示局部变量@@:表示全局变量#:表示局部临时对象##:表示全局临时对象对象简写例: server.database.owner.object简写格式– server.database…object– server…owner.object– server…object– data
2021-05-08 13:12:24 462
原创 Vue3 学习笔记 —— 响应式数据的判断
isRef判断一个值是否为一个 ref 对象isReactive判断一个对象是否是由 reactive创建的响应式代理isReadonly判断一个对象是否是由 readonly 创建的只读代理isProxy判断一个对象是否是由 reactive 或 readonly 创建的代理测试代码:<template> <div></div></template><script lang="ts">impo
2021-05-06 19:51:10 586
原创 Vue3 学习笔记 —— customRef
customRef自定义ref,可以控制数据的追踪跟触发更新测试代码:<template> <input type="text" v-model="state"> state: {{state}}</template><script lang="ts">import { defineComponent, customRef} from 'vue';function useDebounceRef (value:string, de
2021-05-06 18:21:03 332
原创 Vue3 学习笔记 —— toRef 跟 ref 的区别
toRef返回一个对象属性的Ref对象,该Ref对象的value 跟原对象属性的值相耦合ref将一个数据包装成Ref对象,该Ref对象的value与原数据没有关联示例:<template> <button @click="change">改变</button></template><script lang="ts">import { defineComponent, ref, reactive, toRef} fro
2021-05-06 17:36:16 399
原创 Vue3 学习笔记 —— toRaw 和 markRaw
toRaw返回响应式对象的普通对象,可以通过这个对象达到修改属性,而不更新页面的效果markRaw标记一个普通对象,使得它不可以被转换成响应式对象
2021-05-05 22:50:19 737
原创 Vue3 学习笔记 —— readonly 和 shallowReadonly
readonly使用 readonly 函数包装过的对象,内部是深层次只读的shallowReadonly使用 shallowReadonly 函数包装过的对象,只有最外层属性是只读的,内层仍然可以改写示例:<template> <button @click="change">改变</button></template><script lang="ts">import { defineComponent, reado
2021-05-05 22:10:33 548
原创 Vue3 学习笔记 —— shallowReactive 和 shallowRef
shallowReactive只处理了对象内最外层属性的响应式,适用于对象结构较深,但只有外层属性变化shallowRef只处理了value的响应式,不进行对象的 reactive 处理,适用于会被替换的数据示例:<template> m1: {{m1}} <br> m2: {{m2}} <br> m3: {{m3}} <br> m4: {{m4}} <br> <button @click="change
2021-05-05 21:36:19 600 6
原创 Vue3 学习笔记 —— toRefs
toRefs作用:将一个响应式对象,转换为普通对象,并且将其中的属性转换为 Ref 对象 setup() { let state = reactive({ name: 'zly', age: 47 }) let state2 = toRefs(state) console.log(state) // 响应式对象 console.log(state2) // 普通对象,其中的属性被转换为 Ref 属性 return
2021-05-05 17:49:15 10823
原创 计算机网络 ——可靠传输的实现机制
停止等待协议 (SW)正常情况SW 即 Stop and Wait发送方发送分组给接收方后,必须收到接收方的ACK,才能发送下一个分组如果接收方检测出分组有误,则发送NAK给发送方,要求发送方重传如图:超时重传发送方的分组在传输中意外丢失,那么如下确认丢失如果接收方的 ACK 丢失,发送方触发超时重传:接收方如何区别重复分组确认迟到如果接收方对 DATA0 的确认迟到,那么会导致DATA0的重传然后姗姗来迟的ACK0被当成了重传的DATA0的确认分组,并开始
2021-05-03 17:23:17 629 2
原创 Vue3 学习笔记 —— 自定义 hook
目录结构Child.vue<template>x: {{x}}y: {{y}}</template><script lang="ts">import { defineComponent} from 'vue';import useMousePosition from '../hooks/useMousePosition'export default defineComponent({ name: 'Child', setup() {.
2021-05-02 21:18:28 522
原创 Vue3 学习笔记 —— 生命周期
目录结构如下:App.vue<template> <Child :count="count" v-if="isShow" @addCount="addCount"/> <button @click="isShow=!isShow">切换显示</button></template><script lang="ts">import { defineComponent, ref} from 'vue';impor.
2021-05-02 20:42:37 725
原创 Vue3 学习笔记 —— computed 和 watch
<template> <div> firstName: <input type="text" v-model="user.firstName"> lastName: <input type="text" v-model="user.lastName"> </div> <div> fullName1: <input type="text" v-model="fullName1"> f
2021-05-02 12:24:35 341
原创 Vue3 学习笔记 —— ref 和 reactive
ref一般用来定义基础类型的响应式数据返回一个对象,通过.value访问定义的基础类型值在template中,不需要使用 .value<template> {{count}} // 在template中使用时,不需要 .value <button @click="addCount">加1</button></template><script lang="ts">import { defineComponent, ref
2021-05-02 11:06:15 513 2
原创 Vue3 学习笔记 —— setup
setup新的 option,只在初始化时执行一次如果该函数返回对象,对象中的属性或方法,在模板中可以直接使用<template> {{msg}} // 此处使用</template><script lang="ts">import { defineComponent } from 'vue';export default defineComponent({ name: 'App', setup () { return {msg:
2021-05-02 11:05:28 603 2
原创 解决 npm 安装包时,出现 Refusing to delete xxx,Move it away, and try again.
我想重新安装一下 @vue/cli然后就出错了按照提示,找到它不能删除的文件,手动删除,然后重新运行结果还是出错,同样的错误提示,又让删除另一个文件不知道还要梅开几度,所以我直接把文件夹删除了,然后再重新执行 npm install @vue/cli -g 进行安装我这里是提示这个文件夹下有文件不能删除,我就直接把它整个给删了,具体看自己0.0...
2021-04-29 18:09:21 5798 1
原创 TypeScript 学习总结 —— 参数属性
问题描述在类中,可以对属性或方法进行权限约束,例如 public(默认)、protected、private、readonly(ts)我们可能会写这样的代码class Person { public name protected jobs private age readonly sex constructor (name, jobs, age, sex) { this.name = name this.jobs =
2021-04-29 15:37:53 610
原创 webpack 学习 —— 深入 loader
环境搭建初始化项目npm init -y安装依赖npm i webpack@5 webpack-cli@4 -D目录结构自定义 loader暴露 loader// loaders/loader1.js// loader 是一个函数,接收要处理的内容,返回处理后的内容module.exports = function (content) { console.log(123) return content}配置使用loader// /web
2021-04-26 17:26:51 343
原创 Vue 源码学习 —— AST 抽象语法树形成
AST 理解AST 跟 虚拟DOM 的关系手写简单源码目录结构:parse.js:// 处理原始串,去除换行跟空格function trimAll (str) { let strList = str.split('\n') strList = strList.map(s=>s.trim()) return strList.join('')}// 解析属性字符串function parseAttrs (attrsStr) { attrsStr
2021-04-26 11:41:40 378
原创 Vue 源码学习 —— 数据响应式原理 (Vue 2.x)
对象的响应式目录结构:执行关系:observe.jsimport Observer from './Observer'export default function observe (value) { // 如果 value 不是对象,则不处理 if (typeof value != 'object' || !value) return var ob if (value.__ob__) { ob = value.__ob__
2021-04-24 12:20:59 319 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人