动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活
它允许你在不改变对象自身的基础上,动态地给对象添加新的功能
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566// 抽象组件类class Component {public: virtual void operation() = 0;};// 具体组件类class ConcreteComponent : public Component {public: void operation() override { // ... }};// 抽象装饰器类class Decorator : public Component {public: Decorator(Component* componen ...
组合模式又称:对象树(Object Tree)是一种结构型设计模式,可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。
组件(Component):定义组合模式中所有对象共有的方法和属性。
叶子节点(Leaf):叶子节点对象,也是组合中没有子节点的对象。
组合节点(Composite):表示组合中的容器对象,该对象包含其他子节点。
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <iostream>#include <list>#include <memory>#include <utility>#include <cstddef> using na ...
各种函数根据用途,大致分为算数函数、字符串函数、日期函数、转换函数和聚合函数
算数函数
ABS
ROUND
MOD
字符串函数
拼接函数||
字符串长度 LENGTH
LOWER&UPPER
REPLACE
SUBSTRING
日期函数
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
EXTRACT 截取日期函数,配合TIMESTAMP使用
转换函数
CAST 类型转换
COALESCE 将NULL转换为其他值
谓词LIKE字符串的部分一致查询
先创建如图所示的列表:
前方一致查询:
123SELECT * FROM SampleLike WHERE strcol LIKE 'ddd%';
中间一致
123SELECT * FROM SampleLike WHERE strcol LIKE '%ddd%';
后方一致
123SELECT * FROM SampleLike WHERE strcol LIKE '%ddd';
下划线的前方一致:
_为任 ...
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。
在C++中,可以使用类继承和接口实现来实现桥接模式。以下是一个简单的示例:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455// 实现部分接口class Implementor {public: virtual void operationImpl() = 0;};// 具体实现类Aclass ConcreteImplementorA : public Implementor {public: void operationImpl() override { // ... }};// 具体实现类Bclass ConcreteImplementorB : public Implementor {public: void operationImpl() ...
准备入坑6.824,因此先学习一下golang
不分多篇文章了,就在这一章节去讲
环境搭建简要讲一下,是在linux上搭建的,下载go的压缩包,解压后设置环境变量,然后就可以go version了
第一个问题:我在vscode上跑的,很多组件安装不起来,需要在go env命令中看一下gopath,然后创建三个路径:src pkg bin
第二个问题: 需要创建一个go.mod,具体方法百度一下,如果会报错可以看下面这个网址:
https://blog.csdn.net/u011285281/article/details/131261615
Go语言结构Go 语言的基础组成有以下几个部分:
包声明
引入包
函数
变量
语句 & 表达式
注释
12345678package mainimport "fmt"func main() { /* 这是我的第一个简单的程序 */ fmt.Println("Hello, World!")}
第一行代码 定义了包名,package main表示一个可以独立执行的程序,每 ...
视图视图和表从SQL角度来看视图就是一张表,区别就是是否保存了真正的数据
优点
节省存储设备容量
可以将频繁使用的select语句保存为视图,不用每次都重复书写
创建视图12345CREATE VIEW ProductSum(product_type,cnt_product)ASSELECT product_type,COUNT(*)FROM ProductGroup BY product_type;
使用视图12SELECT product_type,cnt_productFROM Productsum;
尽量避免多重视图
不能使用order by
删除视图DROP VIEW
子查询子查询其实就是一次性视图
1234SELECT product_type, cnt_product FROM (SELECT product_type, COUNT(*) AS cnt_product FROM Product GROUP BY product_type) AS ProductSum;
这个是一次性的,别名在查询结束后就消失了
关联子查 ...
在C++中,可以使用类继承和接口实现来实现适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
实现12345678910111213141516171819202122232425262728// 目标接口class Target {public: virtual void request() = 0;};// 适配者类class Adaptee {public: void specificRequest() { // ... }};// 类适配器class Adapter : public Target, private Adaptee {public: void request() override { specificRequest(); }};int main() { Target* target = new Adapter( ...
单例模式是一种创建型设计模式,它确保类只有一个实例,并提供全局访问点。
实现123456789101112131415161718192021222324252627282930313233class Singleton {public: static Singleton& getInstance() { static Singleton instance; return instance; } void doSomething() { cout<<"singleton"<<endl; }private: Singleton() {} // 私有构造函数 Singleton(const Singleton&) = delete; // 禁止拷贝构造函数 Singleton& operator=(const Singleton&) = delete; // ...
作用:用原型实例指定创建对象的种类,通过拷贝这些原型创建新的对象而无需通过实例化类。这种模式适用于创建成本较高的对象,或者需要大量相似对象的情况。
实现123456789101112131415161718192021222324252627282930313233343536373839404142#include <iostream>#include <string>// 原型基类class Prototype {public: virtual Prototype* clone() = 0; virtual void printInfo() = 0;};// 具体原型类class ConcretePrototype : public Prototype {private: std::string info;public: ConcretePrototype(std::string info) : info(info) {} Prototype* clone() { ...
数据的插入基本语法INSERT INTO <TABLE NAME>(C1,C2,C3...)VALUES(V1,V2,V3);
123INSERT INTO ProductIns ( product_id, product_name, product_type, sale_price, purchase_price, regist_date )VALUES ( '0001', 'T恤', '衣服', 1000, 500, '2009-09-20' );
对表进行全列INSERT时,可以省略表名后的清单
插入默认值在创建表的时候设置DEFAULT约束:DEFAULT 0
显式
直接插入DEFAULT
隐式
插入时省略该列
数据的删除DELETEDELETE FROM Product
清空表
也可以删除指定行:
12DELETE FROM ProductWHERE sale_price>=4000;
数据的更新数据登错了,不用删除再写,可以更新
123UPDATE Product ...