- 博客(50)
- 收藏
- 关注
转载 SQL语句(六)分页查询和联合查询
文章目录一、分页查询语法格式应用二、联合查询语法和作用特点应用UNION和UNION ALL的区别一、分页查询语法格式SELECT 查询列表FROM 表WHERE ...GROUP BY HAVING ...ORDER BYLIMIT 偏移, 记录数; <--特点:limit语句放在查询语句的最后公式select 查询列表from 表limit (page-1)*size, size;应用取前面5条记录:SELECT * FROM employees
2021-08-03 15:19:15 625
原创 SQL语句(五)子查询
文章目录一、子查询含义二、子查询分类按子查询的位置分按结果集的行列数不同分三、WHERE后面的子查询1. 标量子查询2. 列子查询(多行子查询)3. 行子查询(结果为一行多列或多行多列)四 、SELECT后面的子查询五、FROM后面的子查询六、EXISTS后面的子查询EXISTS语句的作用简单应用一、子查询含义出现在其他语句中的select语句,称为子查询或内查询。二、子查询分类按子查询的位置分位置支持的查询SELECT后面支持标量子查询FROM后面支持表子查询
2021-08-03 14:32:29 15390 1
原创 SQL语句(四)联表查询
文章目录一、关联查询的分类按年代分按功能分二、sql92语法的链接语法1. 简单应用2. 为表起别名3. 加入筛选4. 加入分组5. 三表连接6. 非等值连接7. 自连接一、关联查询的分类按年代分sql92:仅仅支持内连接sql99【推荐】:支持内连接+外连接(左外,右外)+交叉连接按功能分内连接等值连接非等值连接自连接外连接左外连接右外连接全外连接交叉连接二、sql92语法的链接语法SELECT 查询列表FROM 待链接的多个表WHERE 连接条件
2021-08-03 10:03:34 18518 1
原创 SQL语句(三)分组函数和分组查询
文章目录分组函数特点1. 各函数的简单使用2. 搭配distinct的使用3. COUNT 统计行数4. 和分组函数一同查询的字段要求是group by后的字段二、分组查询1. 简单应用2. 添加筛选条件① 分组前的筛选② 分组后的筛选3. 按表达式或函数分组4. 按多个字段分组分组函数功能:统计信息分类:sum求和avg平均值max最大值min最小值count计算个数特点参数支持类型函数参数支持类型sum avg具有可加性的数据max min具有
2021-08-02 16:49:33 1821
原创 SQL语句(二)数据排序和单行函数
文章目录一、排序查询1. 基本排序2. 多条件排序二、单行函数调用方法字符函数①LENGTH函数②CONCAT函数③upper 和 lower④substr⑤instr⑥trim⑦lpad 和 rpad⑧replace替换数学函数①round,ceil 和 floor②truncate截断③mod取模流程控制函数①IF函数②CASE函数一、排序查询SELECT 查询列表FROM 表WHERE 条件ORDER BY 排序列表 [ASC|DESC]注意:① ASC升序|DESC降序 默认升序
2021-08-02 14:56:33 629
原创 SQL语句(一)基础查询与过滤数据
文章目录一、数据库测试表二、基础查询1. 获得需要的记录的特定字段2. 查询常量值3. 查询表达式4. 查询函数5. 起别名6. 去重7. CONCAT函数的简单使用三、过滤数据大纲1. 按条件表达式筛选2. 使用逻辑表达式3. 模糊查询LIKEBETWEEN ANDINIS NULL安全等于 <=>一、数据库测试表首先这里给出需要使用到的数据库表:链接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg 提取码:gbb4里面是一个.sql
2021-08-02 11:54:14 3865
原创 Java 反射(二)运行时获取类的信息
文章目录一、获得类的运行时结构1. 获得类的名字2. 获得类的属性获取属性列表一、获得类的运行时结构1. 获得类的名字getName():包名+类名getSimpleName():类名Class c1 = Class.forName("reflection.User");// 获得类的名字System.out.println(c1.getName()); //包名+类名System.out.println(c1.getSimpleName()); //获得类名=========
2021-07-30 15:21:36 1113
原创 Java 反射(一)反射简介、原理和应用场景
文章目录一、动态语言和动态语言的比较动态语言静态语言二、反射简介反射的常见使用1. 代码编辑器2. Spring等框架的IoC容器3. 和注解的配合使用原理反射优缺点调试查看Class类获取Class实例的方式1. 通过对象获得2. 通过Class.forname获得3. 通过类名.class获得4.基本内置类型的包装类用Type属性获得5. 一个Class实例通过.getSuperclass()获得父类的Class实例哪些类型可以有Class对象java内存分析一、动态语言和动态语言的比较动态语言➢
2021-07-30 11:48:05 1154
原创 Java 注解
文章目录注解简介JDK内置注解元注解1. @Target2.@Retention注解简介◆ Annotation是从JDK5.0开始引入的新技术.◆ Annotation的作用: ➢不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别) ➢可以被其他程序(比如:编译器等)读取.◆Annotation的格式: ➢注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如: &nb
2021-07-30 09:45:20 201
原创 Java8 Stream API的使用
文章目录Stream的特点Stream的三个操作步骤1. 创建 Stream2. Stream的中间操作筛选与切片映射排序3.终止操作查找与匹配归约收集统计最大(小)、平均值分组多级分组分区字符串连接Stream的特点①Stream自己不会存储元素。②Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。Stream的三个操作步骤创建Stream中间步骤终止操作(终端操作)1. 创建 Strea
2021-07-27 23:42:23 396 1
原创 Java8 Lambda表达式(二)
文章目录一、Java8 内置的四大核心函数式接口1. 消费型接口 Consumer2. 供给型接口 Supplier3. 函数型接口 Function4.断言型接口 Predicate二、方法引用语法格式对象::实例方法名类::静态方法名类::实例方法名三、构造器引用一、Java8 内置的四大核心函数式接口之前我们使用Lambda表达式之前都需要手动地去创建函数式的接口,但其实我们不必这样做,因为JDK8已经为我们提供好了四大核心函数式接口,即:Consumer<T>: 消费型接口voi
2021-07-27 23:04:49 273 1
原创 Java8 Lambda表达式(一)
文章目录一、应用场景引入优化一:使用策略模式优化二:使用匿名内部类优化三:使用Lambda表达式优化四:使用Stream API二、Lambda运算符和对应语法一、应用场景引入首先编写对应的实体类模拟实际业务:@Data@NoArgsConstructor@AllArgsConstructor@ToStringpublic class Employee { private String name; private Integer age; private double
2021-07-27 10:32:04 218
原创 Mybatis-Plus的配置和基本使用
文章目录基本配置简单使用代码生成器基本配置首先新建一个springboot项目,然后导入数据库驱动,lombok和mybatis-plus依赖:<!-- 数据库驱动 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><!-- lombok --&
2021-07-20 16:20:27 938
原创 单片机学习(五)LCD1602和矩阵键盘的使用
文章目录LCD1602的使用矩阵键盘的使用矩阵键盘相关电路图按键检测扫描制作密码输入器LCD1602的使用首先LCD1602是外接在开发板上的液晶屏外设,如图所示:我们主要使用它来代替动态数码管进行显示,因此使用的原理我们可以先略过,而控制它可以使用b站up主提供的驱动程序,即我们只需调用第三方库即可实现对LCD1602的控制了。(b站对应视频链接:https://www.bilibili.com/video/BV1Mb411e7re,可以在视频下方找到对应的驱动程序资源)up主提供的驱动程序包
2021-07-13 14:12:23 5290 4
原创 单片机学习(四)蜂鸣器和独立按键的使用
蜂鸣器两种蜂鸣器的介绍有源蜂鸣器一般是输入一个电流或电压即可直接驱动工作,而无源蜂鸣器则需要输入脉冲信号才可以进行工作。在51单片机开发板上的即为无源蜂鸣器。蜂鸣器相关电路图可以看出,信号是通过P15传递到ULN2003D芯片后进而传递到芯片的OUT5(即BEEP端口)再传递到蜂鸣器中的,其中ULN2003D芯片起着电流放大的作用。控制代码首先我们先获得控制蜂鸣器的引脚,从电路图可以看出是P15,所以:sbit BEEP= P1^5;因为这是无源蜂鸣器,所以我们需要给它提供脉冲信号输入
2021-07-11 22:42:02 5135
原创 单片机学习(三)开发板动态数码管的控制
文章目录分析动态数码管控制的原理编码实现效果数码管计数器数码管流水灯显示0~65535的数字计数器升级版模拟时钟分析动态数码管控制的原理可以看出来,P0寄存器的每一个bit分别与输入a~dp联系起来,当对应的引脚为高电平时,对应的LED则点亮。但是我们也可以发现每个8位数码管都是由输入a~dp进行控制的,那岂不是我们输入一个值,每个LED都呈现相同的内容了?但其实除了P0寄存器之外,P2的第2-4位作为了动态数码管的使能位,例如当这三位为1,1,1时,此时编号为0的寄存器处于使能状态,它可以输出发光
2021-07-11 15:41:16 3331
原创 单片机学习(二)开发板LED灯的控制
文章目录开发板上LED灯相关的电路图点灯LED闪烁LED流水灯其他效果灯光二进制计数器进阶版流水灯开发板上LED灯相关的电路图这是P2相关7个引脚的电路图,在默认情况下它是直接接着VCC的,即默认为高电平。可以看到,8个LED灯分别是和单片机上P20~P27这8个引脚联系起来的,即一端是VCC,另一端是单片机上的端口,这样我们只需要将引脚端电平置为低电平即可将对应的LED点亮。点灯这里我们尝试先点亮从左到右数第一个LED灯,从电路图上看我们只需要将P20引脚的输出置为0(即设为低电平)即可,代
2021-07-11 00:35:44 9952
原创 单片机学习(一)项目的建立和vscode代码编辑环境的设置
文章目录Keil项目的建立使用vscode进行开发工欲善其事必先利其器,因此我们先搭建一个比较舒服的开发环境。Keil项目的建立打开Keil软件点击Project/New uVision Project设置项目名选择芯片类型这样新建项目完成使用vscode进行开发使用vscode来替代Keil自然是因为Keil中没有代码补全和错误提示,开发太难受了。一下是设置开发环境和使用的过程下载几个插件需要的插件有:C/C++,EmbededIDE,Keil Assistant,如下
2021-07-10 19:07:07 373
原创 OpenGL学习笔记(五)变换
文章目录变换向量向量的运算向量与标量运算向量取反向量加减求向量长度向量的单位化向量相乘点乘(Dot Product)叉乘参考资料:OpenGL中文翻译变换尽管我们现在已经知道了如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用 (多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体。为了深入
2021-07-09 21:38:46 746
原创 OpenGL学习笔记(四)纹理
文章目录要完成的纹理效果纹理环绕方式纹理过滤多级渐远纹理加载与创建纹理stb_image库的使用方法生成纹理对象应用纹理纹理单元参考资料:OpenGL中文翻译要完成的纹理效果纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了。因为我们可以在一张图片上插入非常多的细节,这样就可以让物体非常精细而不用指定额外的顶点。为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个
2021-07-08 00:42:39 493
原创 OpenGL学习笔记(三)着色器
文章目录Shader是什么GLSL数据类型输入与输出顶点着色器向片段着色器发送数据UniformShader是什么着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。GLSL着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。结构:声明版本
2021-07-07 14:07:25 506
原创 OpenGL学习笔记(二)画三角形
文章目录渲染管线(Graphics Pipeline)编码实现顶点数据顶点缓冲对象(VBO)顶点着色器编译着色器片段着色器着色器程序链接顶点属性参考资料:LearnOpenGL中文翻译渲染管线(Graphics Pipeline)在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆
2021-07-06 12:45:37 522
原创 OpenGL学习笔记(一)
文章目录一、OpenGL是什么二、OpenGL自身是一个状态机三、对象(Object)四、开始创建窗口使用到的库开始代码准备GLFW创建窗口对象初始化GLAD渲染循环循环后结束程序增加输入响应添加渲染事件运行结果参考资料:LearnOpenGL中文翻译一、OpenGL是什么OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者
2021-07-05 20:31:42 344
原创 Chapter 2 信息的表示和处理
文章目录整数表示整数编码无符号数有符号数有符号数和无符号数的转换整数表示整数编码无符号数相当于只有正数,用U来表达二进制位模式转换为无符号数:B2U(X)=∑i=0w−1xi⋅2iB 2 U(X)=\sum_{i=0}^{w-1} x_{i} \cdot 2^{i}B2U(X)=∑i=0w−1xi⋅2i即按照权值将二进制数转换为十进制数无符号数转换为二进制位模式:U2Bw(x) = Bw(x),即将x由当前进制转换为二进制位模式,如U2B4(12)=1100。有符号数若符号位为0则
2021-06-27 23:11:49 191 1
原创 计系二实验四,缓冲区溢出攻击实验
文章目录一、实验内容二、实验过程步骤1 返回到smoke()步骤2 返回到fizz()并准备相应参数步骤3 返回到bang()且修改global_value一、实验内容本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过关卡!要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析汇编代码和相应的栈帧结构
2021-06-04 12:38:05 4490
原创 使用gdb对可执行文件进行汇编指令级单步调试
先在gdb中使用下面的语句使其能打印出下一条要执行的汇编代码:(gdb) set disassemble-next-line on然后先是程序停在一个断点上,之后可以使用si和ni进行单步调试,其中si相当于step into,而ni相当于step over。下面是一个具体的例子:可以看出,使用ni指令可以按照每条汇编指令进行单步调试,而使用si也是同理。参考博客:https://blog.csdn.net/pjy19960808/article/details/51500830?locat
2021-06-03 18:24:05 5868
原创 创建型模式之单例模式
文章目录1.模式的定义2.简单工厂模式的模式结构3.模式特点4.模式实例1.模式的定义2.简单工厂模式的模式结构3.模式特点4.模式实例
2021-05-25 17:47:35 96
原创 修改编写c++程序可使用的栈空间大小(避免递归爆栈,CMake项目)
修改CMake项目的CMakeLists.txt添加下面的部分:cmake_minimum_required(VERSION 3.15)project(algorithm)set(CMAKE_CXX_STANDARD 20)# 修改clion 内存,添加下面的部分MATH(EXPR stack_size "500*1024*1024")set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,${stack_size}")...
2021-05-20 18:32:07 2609 1
原创 将已有项目推送到git
这里留两个博客:https://blog.csdn.net/weixin_42752402/article/details/108727850若发现权限问题,查看这个博客:https://blog.csdn.net/cheneykl/article/details/80769747虽然这个教程是GitHub的,但Gitee也是同理,修改:...
2021-05-18 19:35:59 110
原创 创建型模式之工厂方法模式和抽象方法模式
文章目录一、工厂方法模式模式动机与定义模式结构模式特点模式实例作业例子及编程实现模式优缺点二、抽象工厂模式模式动机与定义模式结构模式实例模式优缺点模式适用情况一、工厂方法模式模式动机与定义工厂方法模式(Factory Method Pattern)简称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样
2021-05-16 11:54:46 2247 1
原创 创建型模式之简单工厂模式
文章目录1.模式的定义2.简单工厂模式的模式结构3.模式特点4.模式实例5.作业例子及编程实现6.优缺点7.使用简单工厂模式的场合1.模式的定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式在简单工厂模式中,可以根据参数的不同返回不同类的实例简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类2.简单工厂模式的模式结构3.模式特点将对象的创建和对象本
2021-05-15 12:38:44 2802 2
原创 《图论》第三章:平面图
文章目录一、课本概念及公式3.1 平面图及其平面嵌入平面图的定义3.2 平面图欧拉公式公式3.3 极大平面图面的次数和桥的概念平面图的边数满足的公式一、课本概念及公式3.1 平面图及其平面嵌入平面图的定义3.2 平面图欧拉公式公式3.3 极大平面图面的次数和桥的概念平面图的边数满足的公式即:∑i=1ϕd(fi)=2ε\sum_{i=1}^{\phi} d\left(f_{i}\right)=2 \varepsilon∑i=1ϕd(fi)=2ε...
2021-05-11 20:55:06 7255
原创 手写Pascal解释器(三)
文章目录一、part7抽象语法树和具体语法树(解析树)代码实现一、part7资料来源:https://ruslanspivak.com/lsbasi-part7/看作者博客的标题就知道,这一节我们需要完成抽象语法树的功能。抽象语法树和具体语法树(解析树)例如这个表达式的例子(2 * 7 + 3)就形成了这样的一棵抽象语法树。而该表达式的解析树(具体语法树)如下图所示:解析树记录了解析器应用于识别输入的一系列规则。语法分析树的根标有语法开始符号。每个内部节点代表一个非终结符,也就是说
2021-05-10 20:49:04 312
原创 Windows自启动服务(MOOC自启动)
文章目录一、使用自启动服务的缘由二、解决方案最终效果实现1.编写python脚本2.编写.bat文件3.在Windows计算机管理进行配置一、使用自启动服务的缘由由于自己太懒,而且往往在弄其他的事情,往往忘记去刷mooc,但刷mooc这种东西可以花个一两天一下刷完,不用特别担心, 但我们的慕课平台还有个签到的机制,每天只能签到一次,而这种签到居然有40次,而现在我只剩下最后5周的时间了????,如果有几天忘记登陆那签到分就gg了,故只能搞点小手段保证后续的签到了。二、解决方案最终效果每天的特定
2021-05-08 17:37:23 422
原创 c++使函数返回多个值(c++17特性)
之前希望使用函数返回多个值的时候,基本都是使用引用来搞定,或者是新写一个结构体,但是现在看来这些方案都显得非常呆板,取用返回值都非常不方便,用过python都知道在python中返回多个值只需要:def func() { ... return x,y,z}res1, res2 = func()这样的使用方法比c++原来的方法要高明得多,因此我去寻找是否有更加modern的解决方案,结果还真有,c++用起来瞬间就舒服多了:class Person { int age; str
2021-05-08 12:36:29 3373
原创 手写Pascal解释器(二)
文章目录一、part4补充理论知识二、part5设计生成式三、part6一、part4承接上次的内容,我们继续编写part4,这个部分我们的任务是完成输入一个仅带乘除运算符的表达式,然后返回表达式的结果。主要修改或添加的内容:原来我们的分析工作全部都是放在Interpreter类中完成,但到了现在的阶段,我们将解析的工作放到两个类中进行完成,即原Interpreter类被分解为Lexer和Interpreter类(即Lexer为词法分析器,Interpreter现在为语法分析器):Lexer类的
2021-05-04 23:04:34 348
原创 手写Pascal解释器(一)
文章目录一、编写解释器的动机二、part1三、part2四、part3一、编写解释器的动机学习了Vue之后,我发现对字符串的处理对于编写一个程序框架来说是非常重要的,就拿Vue来说,我们使用该框架时可以通过如v-on:, v-model等html的属性时,我们能够在里面嵌入js代码,其实这块就已经使用了编译原理的知识来对输入的字符串进行解析,然后将它们嵌入到js代码中去,这也是我们在Vue中可以如此轻松地进行双向绑定,使用v-for进行列表渲染等等的技术基础。此外在做ccf csp的题目时,我也往往被一
2021-05-04 16:47:55 337
原创 Vue+DRF搭建博客之前端篇(五)
文章目录一、任务二、将新建文章和编辑文章区分开1. 修改路由配置2.在router-view前包一层keep-alive3.在BlogEditorPage activated时初始化各个显示的参数4.设置保存和上传文章三、为v-md-editor添加图片上传的功能四、添加编辑博客大页面路由设置为SideBar添加tab一、任务1.将新建文章和编辑文章区分开2.为v-md-editor添加图片上传的功能3.添加编辑博客大页面
2021-04-26 19:11:06 319
原创 Vue+DRF搭建博客之前端篇(四)
文章目录一、任务二、博客编辑页的搭建三、解决跨域问题四、引入第三方ajax库axios并对其进行封装下载并引入axios五、调用接口与后端进行交互一、任务完成博客编辑页的搭建解决跨域问题(后端Django解决)网络请求库的封装以及文章业务的封装与后端完成交互,将文章保存保存到数据库中二、博客编辑页的搭建主要使用ElementUI中的模板表单中的代码,修修改改即可完成:<template> <h2>文章编辑</h2> <el-form re
2021-04-25 23:17:59 568
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人