1. 设计模式学习笔记

    按照最近学习的顺序记录设计模式的一些知识

    我觉得设计模式要注意的主要方面有几个
    a)面向接口编程!!!
    b)开闭原则!!!(对修改封闭,对扩展开放)
    c)设计模式很相通,有些设计模式非常相似,不需要太纠结细节,只要能设计出合适的类就OK,不用在乎具体是哪个模式

    写在前面

    所有的设计模式的最终目的都是:让代码结构更加清晰(方便看你代码的人一眼就懂),当发生变动的时候,改动代码的代价最小。站在开发者的角度想,比如你用了个别人开发的库,你想在他开发的这个库基础上进行开发,那么你就得使用这个库,怎么用就是个大问题。
    a)如果你用他的库,却要做一大堆的初始化,还有先后顺序要考虑,那你就很头疼;如果很简单就能用多好
    b)如果你用他的库,却需要修改他的源代码,那就是个痛苦的决定:如果能直接继承或者包含个他的类多好
    c)如果你用他的库,但是他的库中各个模块的耦合度太高,牵一发而动全身,那就是个不良的设计:如果代码清晰耦合度低多棒

    先做个哈希表

    单例模式 1
    简单工厂模式 9
    工厂方法模式 10
    抽象工厂模式 ...

    Tagged as : learning design
  2. socket基本用法

    写个文章记录一下基本的socket的使用

    一、面向连接的编程TCP

    1、服务器端:

    首先建立socket

    sockfd = socket(AF_INET, SOCK_STREAM, 0)
    

    第二个参数说明是面向连接的编程,如果返回-1代表出错,否则返回socket描述符的值;
    然后本机配置一个sockaddr_in类型的地址

    myaddr.sin_family = AF_INET;  
    myaddr.sin_port = htons(SERVER_PORT);  
    myaddr.sin_addr.s_addr = INADDR_ANY;//这个值代表自动为这个字段填入本机的IP地址  
    memset(&myaddr.sin_zero, 0, sizeof(myaddr.sin_zero));
    

    接下来要将socket和配置的地址绑定

    bind(sockfd, (struct sockaddr *)&myaddr, sizeof(struct sockaddr))
    

    如果返回值为-1代表出错;
    接下来设置同时接收请求的最大数量

    listen(sockfd, NUM)
    

    NUM代表最大的同时请求的数量,这个函数在tcp连接中才有用 ...

    Tagged as : learning socket

Pages

Categories

Tags

Page 1 / 1