프로그램 언어에 적용된 데이터 구조들
C언어 : Array
C언어에서 Array는 기본 상수 시간 내에 Read, Write를 다 수행할 수 있다
Array 선언
int A[4] = {2,4,0,5};
Array A : (2) (4) (0) (5)
배열의 각 원소는 4개의 byte로 구성됨
변수 A : 배열 A가 시작하는 첫 번째 원소 A[0]의 주소가 저장되어있음
Data Read/Write :
A[2...
Recursions, Dynamic programming, Sorting, Graph
Recursions
재귀 호출
Examples
GCD
Euclid’s Algorithm
GCD(A, B) = GCD(B, A mod B) GCD(A, 0) = A
Stack Frame : Function call의 진행된 역사를 기록하고 stack
함수가 호출되면 Push
함수가 retur...
Union-Find
Union-Find (Disjoint Set)
공통 원소가 없는, 즉 “상호 배타적” 인 부분 집합 들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조
tree형 으로 Union-Find 를 구현하면 배열보다 빠르게 Union 연산을 수행할 수 있슴
루트 노드 가 존재 하므로, 각 원소가 속하는 집합 번호를 바로 이 루트 노드의 원소로 정함
class Node:
def __init__(self, data):
self.data = data
self.parent = self
sel...
Background, Squential Data structure, Hash Table
Data structure
Data를 저장하는 공간 + 연산들도 제공 (저장된 Data를 CRUD)
자료구조의 예
Variable
Array (List)
…
Algorithm
입력 데이터를 가지고 유한한 횟수의 연산들을 반복해서 정답을 출력
Data structure 와 Algorithm의 성능
Space complexity
프로그램을 완료하기 위해 실행해야 하는 메모리 양
프로그램이 실행될 때 보통 세가지 이유로...
05. Defensive Programming
我们在编写程序的时候,经常会做出各种各样的假设来简化我们的问题。
这段代码肯定会一直正常运行,传递给我的参数总是有效的 等
防御式编程(Defensive Programming)
什么是防御式编程?
通过预见到问题所在,做出相应的防范措施来防止类似意外的发生
主要思想 : 要承认程序都会有问题,都会被修改
防御式编程 🆚 检查错误
防御性编程并不能排除所有的程序错误
防御式编程 🆚 调试
防御式编程是一种防卫方式,而不是补救(고치고 보완하는)方式
防御式编程 🆚 测试
测试可以验证代码现在是正确的,但不保证在经历修改之后不会出错
处理非法输入数据
Garbage in(外部来的值), Garbage out ...
04. Structural Patterns
适配器模式(Adapter Pattern)
原来不能直接进行调用的或者模块组合的模块能够联合起来适用
我们希望能够保留客户类的代码,同时目标类(比如第三包)也改不了,所以能够加上新的类使得目标类的接口转换成为客户类希望的接口类型。保证现有类进行重用
适配器 - Adapter : 包装的类,也就是额外加进去的类
适配者 - Adaptee:包装的对象,被适配的类,第三包,目标类
这样客户类不需要直接访问Adaptee类
定义
将一个接口转换成 客户希望的另一个接口,适配器模式使接口不兼容的 那些类可以一起工作
a.k.a Wrapper
有两种实现
...
03. Behavioural Patterns
复习
可复用部分 == 不变的部分
从设计模式而言,更清晰的区分了变化的部分和不变的部分
디자인 원칙을 떠올려보자. 변하는 것은 잘 변하지 않는 것과 분리해라. 즉, 변하는 녀석들을 캡슐화해라!
工厂方法 :
不变的 - 抽象的Product类型(Product的基类)
变化的 - 具体的Product类型
抽象工厂:
不变的 - 抽象的Product类型,抽象的Product类型之间的挂链关系
变化的 - 产品族
建造者 :
不变的 - 构建过程,抽象的Builder,Director
变化的 - Product的表示,具体的Builder
策略模式 (Strategy Pattern)
策略模...
02. Creational Patterns
复习
设计模式的前提 :
反复出现的问题
必然是一定的约束条件下
模式的使用上分为创建型模式,结构型模式,行为型模式
模式的实现上分为类模式和对象模式
类模式:继承为主要方式实现的模式
对象模式:合成为主要关系的模式
简单工厂模式 (Simple Factory Pattern)
定义
a.k.a : Static Factory Method
属于类创建型模式
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
简单工厂模式开闭原则不太好 –...
34 post articles, 5 pages.