08 2021 档案
摘要:参考资料:https://www.bilibili.com/video/BV1Mb411e7re?p=21 一、点阵LED的理论知识 1. 点阵屏的打开方式 默认情况下我的点阵屏是无法直接使用的,即使用了正确的代码也无法点亮点阵屏,此时我们需要先将点阵附近的跳线帽拔掉或移动到左边才能打开点阵屏: 2
阅读全文
摘要:参考资料:https://www.bilibili.com/video/BV1Mb411e7re?p=19 一、串口相关信息 1. 串口简介 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式
阅读全文
摘要:参考资料:https://www.bilibili.com/video/BV1Mb411e7re?p=17 一、定时器简介 定时器介绍: 51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成 定时器作用: (1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项
阅读全文
摘要:参考资料:OpenGL中文翻译 概述 前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。 本节我们将会讨论
阅读全文
摘要:参考资料:OpenGL中文翻译 一、衔接 在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换。OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应
阅读全文
摘要:一、装饰器的作用 我个人的理解是:ts中的装饰器类似于 Java 语言中的注解,对于用户来说都是为类和属性等代码元素添加额外的功能,而不改变代码元素原有的结构。例如在 Java 中我们用的比较多的 Spring 框架中的注解 @Component 可以将一个类放置到 IoC 容器中进行托管,使用 @
阅读全文
摘要:一、泛型 1. 泛型函数 function getMin<T>(arr: T[]):T { if(arr.length 0) { throw new Error("输入的数组没有元素"); } let res: T = arr[0]; for (let i = 1; i < arr.length;
阅读全文
摘要:一、函数的语法 1. 函数声明 在 ES5 中函数的写法: function run() { console.log("run"); } var run2= function() { console.log("run2"); } 而TypeScript中主要的不同点是函数需要标明参数的类型和返回值类
阅读全文
摘要:一、学习TypeScript的缘由 当前编写前端的逻辑的主流语言仍是JavaScript,但这个语言由于其弱类型的特性使得它在很多的方面给程序员带来了许多的困扰,例如在使用IDE时,IDE往往难以推断出变量的类型,无法提供代码补全和错误提示,此外JavaScript对面向对象的支持也比较弱,算是一种
阅读全文
摘要:一、JavaScript补充知识点 1. ES6补充知识 块级作用域 ES6之前都是使用var关键字来声明变量的,这样的变量没有块级作用域,也就是作用范围不被 大括号 所约束,例如: // var没有块级作用域,let有 { var name="123"; console.log(name); }
阅读全文
摘要:一、条件渲染 条件判断渲染相关的指令: v-if v-else v-elif v-show 1. v-if v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染。 例如: <h2 v-if="isShow"> <div>abc</div> <div>abc
阅读全文
摘要:一、为属性绑定变量 在前面第一部分中,我们已经可以使用Vue来动态绑定元素中的值了,但是我们该怎样绑定为元素的属性绑定一个变量呢? 1. v-bind的基本使用 我们可以使用v-bind来为一个元素的属性绑定一个在Vue实例中定义好的变量,语法为: v-bind:属性名="表达式" 如下例所示: v
阅读全文
摘要:一、Vue是什么 参考链接: 根据官网的说法,Vue是一套用于构建用户界面的渐进式框架,即前端框架,它也是当前的三大前端框架之一。(其他两个框架分别是React 和 Angular) 二、Vue简单体验 1. 声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM
阅读全文
摘要:参考资料:OpenGL中文翻译 变换 尽管我们现在已经知道了如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用
阅读全文
摘要:参考资料:OpenGL中文翻译 要完成的纹理效果 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了。因为我们可以在一张图片上插入非常多的细节,这样就可以让物体非常精细而不用指
阅读全文
摘要:参考资料:OpenGL中文翻译 Shader是什么 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。 G
阅读全文
摘要:参考资料:LearnOpenGL中文翻译 渲染管线(Graphics Pipeline) 在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(
阅读全文
摘要:参考资料:LearnOpenGL中文翻译 一、OpenGL是什么 OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范。 OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自
阅读全文
摘要:一、part7 资料来源:https://ruslanspivak.com/lsbasi-part7/ 看作者博客的标题就知道,这一节我们需要完成抽象语法树的功能。 抽象语法树和具体语法树(解析树) 例如这个表达式的例子(2 * 7 + 3)就形成了这样的一棵抽象语法树。 而该表达式的解析树(具体语
阅读全文
摘要:一、part4 承接上次的内容,我们继续编写part4,这个部分我们的任务是完成输入一个仅带乘除运算符的表达式,然后返回表达式的结果。 主要修改或添加的内容: 原来我们的分析工作全部都是放在Interpreter类中完成,但到了现在的阶段,我们将解析的工作放到两个类中进行完成,即原Interpret
阅读全文
摘要:一、编写解释器的动机 学习了Vue之后,我发现对字符串的处理对于编写一个程序框架来说是非常重要的,就拿Vue来说,我们使用该框架时可以通过如v-on:, v-model等html的属性时,我们能够在里面嵌入js代码,其实这块就已经使用了编译原理的知识来对输入的字符串进行解析,然后将它们嵌入到js代码
阅读全文
摘要:LCD1602的使用 首先LCD1602是外接在开发板上的液晶屏外设,如图所示: 我们主要使用它来代替动态数码管进行显示,因此使用的原理我们可以先略过,而控制它可以使用b站up主提供的驱动程序,即我们只需调用第三方库即可实现对LCD1602的控制了。 (b站对应视频链接:https://www.bi
阅读全文
摘要:蜂鸣器 两种蜂鸣器的介绍 有源蜂鸣器一般是输入一个电流或电压即可直接驱动工作,而无源蜂鸣器则需要输入脉冲信号才可以进行工作。在51单片机开发板上的即为无源蜂鸣器。 蜂鸣器相关电路图 可以看出,信号是通过P15传递到ULN2003D芯片后进而传递到芯片的OUT5(即BEEP端口)再传递到蜂鸣器中的,其
阅读全文
摘要:分析动态数码管控制的原理 可以看出来,P0寄存器的每一个bit分别与输入a~dp联系起来,当对应的引脚为高电平时,对应的LED则点亮。 但是我们也可以发现每个8位数码管都是由输入a~dp进行控制的,那岂不是我们输入一个值,每个LED都呈现相同的内容了?但其实除了P0寄存器之外,P2的第2-4位作为了
阅读全文
摘要:开发板上LED灯相关的电路图 这是P2相关7个引脚的电路图,在默认情况下它是直接接着VCC的,即默认为高电平。 可以看到,8个LED灯分别是和单片机上P20~P27这8个引脚联系起来的,即一端是VCC,另一端是单片机上的端口,这样我们只需要将引脚端电平置为低电平即可将对应的LED点亮。 点灯 这里我
阅读全文
摘要:工欲善其事必先利其器,因此我们先搭建一个比较舒服的开发环境。 Keil项目的建立 打开Keil软件点击Project/New uVision Project 设置项目名 选择芯片类型 这样新建项目完成 使用vscode进行开发 使用vscode来替代Keil自然是因为Keil中没有代码补全和错误提示
阅读全文
摘要:基本配置 首先新建一个springboot项目,然后导入数据库驱动,lombok和mybatis-plus依赖: <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifa
阅读全文
摘要:一、分页查询 语法格式 SELECT 查询列表 FROM 表 WHERE ... GROUP BY HAVING ... ORDER BY LIMIT 偏移, 记录数; <-- 特点: limit语句放在查询语句的最后 公式 select 查询列表 from 表 limit (page-1)*siz
阅读全文
摘要:一、子查询含义 出现在其他语句中的select语句,称为子查询或内查询。 二、子查询分类 按子查询的位置分 位置 支持的查询 SELECT后面 支持标量子查询 FROM后面 支持表子查询 WHERE或HAVING后面 支持标量子查询、列子查询和行子查询 EXISTS后面 支持表子查询 按结果集的行列
阅读全文
摘要:一、关联查询的分类 按年代分 sql92:仅仅支持内连接 sql99【推荐】:支持内连接+外连接(左外,右外)+交叉连接 按功能分 内连接 等值连接 非等值连接 自连接 外连接 左外连接 右外连接 全外连接 交叉连接 二、sql92语法的连接 语法 SELECT 查询列表 FROM 待链接的多个表
阅读全文
摘要:一、分组函数 功能:统计信息 分类: sum求和 avg平均值 max最大值 min最小值 count计算个数 特点 参数支持类型 函数 参数支持类型 sum avg 具有可加性的数据 max min 具有可比较性的数据 count 计数`非空的数据个数,都支持 都忽略null值 可以搭配disti
阅读全文
摘要:一、排序查询 SELECT 查询列表 FROM 表 WHERE 条件 ORDER BY 排序列表 [ASC|DESC] 注意: ① ASC升序|DESC降序 默认升序 ② ORDER BY子句可以支持单个字段,多个字段,表达式,函数,别名 ③ ORDER BY子句一般是放在查询语句最后,LIMIT子
阅读全文
摘要:一、数据库测试表 首先这里给出需要使用到的数据库表: 链接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg 提取码:gbb4 里面是一个.sql文件,直接运行即可得到如下几个测试表: 二、基础查询 1. 获得需要的记录的特定字段 语法:SELECT后加
阅读全文
摘要:一、获得类的运行时结构 1. 获得类的名字 getName():包名+类名 getSimpleName():类名 Class c1 = Class.forName("reflection.User"); // 获得类的名字 System.out.println(c1.getName()); //包名
阅读全文
摘要:一、动态语言和动态语言的比较 动态语言 ➢ 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。 ➢ 主要动态语言: Object-C、C#、 JavaScript、 PHP、Py
阅读全文
摘要:Stream的特点 ①Stream自己不会存储元素。 ②Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。 ③Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。 Stream的三个操作步骤 创建Stream 中间步骤 终止操作(终端操作) 1. 创建 St
阅读全文
摘要:一、Java8 内置的四大核心函数式接口 之前我们使用Lambda表达式之前都需要手动地去创建函数式的接口,但其实我们不必这样做,因为JDK8已经为我们提供好了四大核心函数式接口,即: Consumer<T>: 消费型接口 void accept(T t); Supplier<T>: 供给型接口 T
阅读全文
摘要:一、应用场景引入 首先编写对应的实体类模拟实际业务: @Data @NoArgsConstructor @AllArgsConstructor @ToString public class Employee { private String name; private Integer age; pr
阅读全文
摘要:注解简介 ◆ Annotation是从JDK5.0开始引入的新技术. ◆ Annotation的作用: ➢不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别) ➢可以被其他程序(比如:编译器等)读取. ◆Annotation的格式: ➢注解是以"@注释名"在代码中存在的,还
阅读全文