分类 未分类 下的文章

https://www.runoob.com/design-pattern/design-pattern-intro.html

委托模式


class I /*interface*/ {
public:
    virtual void f() = 0;
    virtual void g() = 0;
};

class A : public I {
public:
    void f(){std::cout << "A::f()" << std::endl;}
    void g(){std::cout << "A::g()" << std::endl;}
};

class B : public I {
public:
    void f(){std::cout << "B::f()" << std::endl;}
    void g(){std::cout << "B::g()" << std::endl;}
};


class C : public I {
public:
    C() { m_i = new A();/*delegation*/ }

    void f(){ m_i->f(); }
    void g(){ m_i->g(); }

    // normal attributes
    void toA(){ m_i = new A(); }
    void toB(){ m_i = new B(); }

private:
    I* m_i;
}

工厂模式

public class ShapeFactory {

   //使用 getShape 方法获取形状类型的对象
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}

CRTP

静态多态



template 
struct base
{
    void interface()
    {
         // ...
         static_cast(this)->implementation();
         // ...
    }
};
 
struct derived : base
{
     void implementation()
     {
         // ...
     }
};

visitor模式

将数据与对数据的操作分离


//前向声明,访问者
class Visitor;

//被访问的抽象类,只有一个接口,用来接受访问者
class Object
{
public:
    virtual void accept(Visitor&v) = 0;
};

//具体的被访问的对象,学生。
class StudentA :public Object
{
    std::string name;
    int score;
public:
    StudentA(std::string name_);
    int getScore();
    std::string getName()
    {
        return name;
    }
    void setScore(int num);
    virtual void StudentA::accept(Visitor & v)
    {
        v.visit(this);
    }
};

//抽象访问者,只有一个接口,访问.
class Visitor
{
public:
    virtual void visit(Object* obj)=0;

};

//具体的访问者一,班主任,实现访问(学生并给学分)
class ClassLeader :public Visitor
{
public:
    virtual void visit(Object* obj);
};
//具体的访问者二,校长,实现访问(学生并批评不及格的学生)
class HeadMaster :public Visitor
{
public:
    virtual void visit(Object* obj);
};

observer模式

一些观察者观察一个数据,当数据被改动时通知所有观察者


public class Subject {
   
   private List observers 
      = new ArrayList();
   private int state;
 
   public int getState() {
      return state;
   }
 
   public void setState(int state) {
      this.state = state;
      notifyAllObservers();
   }
 
   public void attach(Observer observer){
      observers.add(observer);      
   }
 
   public void notifyAllObservers(){
      for (Observer observer : observers) {
         observer.update();
      }
   }  
}
public abstract class Observer {
   protected Subject subject;
   public abstract void update();
}
public class BinaryObserver extends Observer{
 
   public BinaryObserver(Subject subject){
      this.subject = subject;
      this.subject.attach(this);
   }
 
   @Override
   public void update() {
      System.out.println( "Binary String: " 
      + Integer.toBinaryString( subject.getState() ) ); 
   }
}

MIPS指令集

PC寄存器(program counter): 保存当前运行指令地址
SP寄存器(stack pointer):当前栈指针,栈增长按地址从高到低
$a0 ~ $a3:传递函数参数
$v0 ~ $v1:函数返回值
$t0 ~ $t9:临时寄存器,过程调用中不需要被保存
$s0 ~ $s7:保留寄存器,过程调用中必须被保存
$zero:存储0
$gp:全局指针(指向静态数据)
$at: 由汇编器所使用

jr $ra: 无条件跳转至地址ra
lui $t0,255(load upper immediate):设置$t0中高16位为255

PC相对寻址:相对PC寄存器寻址

堆:从下向上增长(低地址向高地址),存储动态的内存

C后缀名

unix: .c : c源文件
.s : 汇编文件
.o : 目标文件
.a : 静态链接库
.so : 动态链接库
.out : 可执行文件

MS-DOS: .C, .ASM, .OBJ, .LIB, .DLL, .EXE

浮点数标准

单精浮点数:1位符号位,8位指数位,23位尾数
双精浮点数:1位符号位,11位指数位,52位尾数

| 指数 | 尾数 | 表示 |
| 0 | 0 | 0 |
| 0 | 非0 | 非规格化数 |
| 1 ~ max - 1 | 任意值 | 浮点数 |
| max | 0 | 无穷 |
| max | 非0 | NaN |

负指数使用偏阶
如-1 -> -1 + 127 = 126

发现会日常忘记git的基本操作,开个坑记一下

git add -u 加入所有对已经track的文件的修改
git add -A 加入所有文件,包括新增和删除
git reset --hard HEAD^ 回退到head的前一次commit
git reset --soft HEAD^ 只撤销commit操作,将add的文件还原到工作区

又到了一年NOI的时间
到了现在,即使是OI相关的回忆,也变得温暖起来了呢

今天用一个下午补完了clannad,感触颇多

这可能是我第一次补番的时候哭吧
或许是很久以来第一次落泪吧

补clannad的过程让我明白了,之所以没有了解到一件事物的美,只是因为事物的美被隐藏起来了,没有深入的理解就无法体会美的所在,所以请给美的事物留些时间。

clannad让我意识到了,我可能认为自己长大了,但仍然是一个努力长大的孩子
一些事情可能只有亲身经历过才会感受到其中的意义
也许人生中不管是怎样的困难都可以坚持过去吧

亲情,爱情,友情,clannad 给人的感觉是那不是一个只存在在故事中的世界, 而就是真实的世界,真实的人生呢