UML图 面向对象的优点 四大原则 单一职责原则 开放封闭原则 依赖转倒原则 里氏代换原则 设计模式 简单工厂模式 策略模式 装饰模式 代理模式 UML图 继承关系:子类指向基类,实线,空三角形 依赖关系:A依赖B,那么A指向B,虚线,箭头 组合关系:B是A的一部分,实线,A那边一个实心的菱形,B那边箭头 聚合关系:很多B组成了A,实线,A那边一个空心的菱形,B那边箭头 关联关系:B是A的一个因素,实线,A指向B箭头 实现接口:B实现了A的接口,虚线,B指向A,空心三角形 斜体字表示抽象类。 面向对象的优点 可维护,可扩展,可复用,灵活性好 四大原则 单一职责原则 把可以分开的东西尽量分开,比如界面和算法。 这样可以降低耦合。 开放封闭原则 对更改是封闭的,对扩展是开放的。 尽量不要修改以前的代码,而是预留接口,方便接入新的内容。 依赖转倒原则 高层不应依赖低层模块,两者都应该依赖抽象。 抽象不应该依赖细节,但细节应该依赖抽象。 里氏代换原则 子类型必须能替换掉他们的父类型。 设计模式 简单工厂模式 大概有3种类型的类,假如分别是A,B,C A通常
发表于 2017-03-18 16:44:58 | 条评论 | 阅读次数:98
通常都是利用.htaccess文件来完成的。 首先我们要确定apache是否开启了使用.htaccess 我们打开apache的http.conf配置文件,找到下面这一段 <Directory /> Options FollowSymLinks AllowOverride All Order deny,allow Deny from all</Directory> 有一些会默认是AllowOverride None,需要改成All,然后重启一下服务,就启动了。 然后我们在ip直接访问对应根目录中,创建一个1.txt文件,把下面这个复制进去。 要稍微修改一下二级域名和顶级域名,按自己的需求修改。 第三行就是跳转到具体的文件夹。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^blog\.csustacm\.com$ [NC]RewriteCond %{REQUEST_URI} !^/blog/RewriteRule
发表于 2017-03-17 17:45:35 | 条评论 | 阅读次数:89
C++ 如何禁止一个类赋值和拷贝 重载,隐藏,覆盖 什么是多态性 为什么如果基类中有虚函数,析构函数需要加virtual 构造函数和析构函数的调用次序 隐藏的写法的坏处 虚函数的原理 函数指针 常量指针和指针常量 防止一个.h文件被重复定义 4种构造函数 如何实现一个vector的类 如何实现一个智能指针(shared_ptr) 谈谈C++11有哪些新特性 结构体的sizeof 3种智能指针如何区分和使用 4种cast的区别 继承和protected 引用与指针的本质区别 程序的分区 你对C++有什么认识 笔试中常出现的奇怪内容 计算机网络 tcp和udp的区别 tcp是如何保证有序和一定发送过去的 如何用udp实现稳定的传输 udp的原理是怎样的 软件工程 什么是开放封闭原则 谈谈软件设计需要注意的地方 8大设计模式 单例模式 操作系统 系统调用 select,poll和epoll 算法 排序 出现一半的数 top k问题 C++ 如何禁止一个类赋值和拷贝 直接把拷贝构造函数和赋值函数放进private。 class
发表于 2017-03-07 17:01:11 | 条评论 | 阅读次数:430
windows下的tcp服务端和客户端 windows下的tcp服务端和客户端 C++的实现,用VS2015写的,现在只实现了简单套字,下一步得支持传送文件 由于Winsock2.h是比较过时的函数,还有如果想要用scanf什么的,都必须关闭SDL检查,如下图: #include <cstdio>#include <string>#include <Winsock2.h>#pragma comment(lib,"ws2_32.lib")using namespace std;void TcpServer(int port) { const int BUF_MAX = 1024; WSADATA wsaData; SOCKET sockServer, sockClient; SOCKADDR_IN addrServer, addrClient; WSAStartup(MAKEWORD(2, 2), &wsaData); addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY)
发表于 2017-03-02 20:43:40 | 条评论 | 阅读次数:110
5555,太堕落了,好久没有写博客了。 早就听说pb_ds这玩意了,有时候可以省很多东西。 好像最主要是为了替代set不能求第k大的问题。 感觉真的很方便啊~ //可并堆测试#include <ext/pb_ds/priority_queue.hpp>void ceshi_1() { //binary_heap_tag一般比std::priority_queue快 //pairing_heap_tag和std::priority_queue启发式合并时,速度差不多 __gnu_pbds::priority_queue<int, less<int>, __gnu_pbds::pairing_heap_tag> Q1, Q2; Q1.push(1); Q1.push(2); Q1.push(3); Q2.push(1); Q2.push(2); Q2.push(3); Q1.join(Q2);//pairing_heap_tag配对堆,zici O(1)合并 while(!Q1.empty()) { std::pr
发表于 2017-02-28 23:29:53 | 条评论 | 阅读次数:141
质数线性筛 O(1) gcd 可撤销的并查集 权值并查集 O(1)查询的lca 质数线性筛 复杂度:O(n)O(n)O(n) 以前没有深刻的理解这个,今天在看O(1)的gcd才发现这东西原来这么厉害。 每个数字只会被访问一次 每个合数可以拆分为 最小质数p*x 所以,我们要做到,筛数字的时候,只用那个最小的质数去筛,下面是代码: bool not_prime[MX];int prime[MX], prear;void prime_init() { prear = 0; not_prime[1] = 1; for(int i = 2; i < MX; i++) { if(!not_prime[i]) prime[++prear] = i; for(int j = 1; j <= prear && prime[j]*i < MX; j++) { not_prime[i * prime[j]] = 1; if(i % prime[j] == 0) break;
发表于 2017-02-13 18:22:41 | 条评论 | 阅读次数:367
Team Building Archery Training Shoot and kill Mr. Ant & His Problem The Chosen One How Many Answers Are Wrong Hill Climbing Drawing Circles is Fun Legen… Correct Bracket Sequence Editor Family Photos Racing Gems Factorial vs Power Menagerie Team Building 可以发现,可以考虑把两种年级合并成一种年级,那么问题就从3个年级变成了2个年级,然后考虑每次选人从一个年级选1人,另一个年级选2人。 之后很容易就能发现两个年级的做法。 #include <map>#include <set>#include <cmath>#include <ctime>#include <stack>#include <queue>#include <cstdio>
发表于 2017-02-13 14:14:40 | 条评论 | 阅读次数:111
Copyright © 2017 - 2018 qwb's blog
blog.csustacm.com All Rights Reserved
Powered by qwb Contact me