c# 设计模式 之:简单工厂、工厂方法、抽象工厂之小结、区别
很多时候,我发现这三种设计模式难以区分,常常会张冠李戴闹了笑话。很有必要深入总结一下三种设计模式的特点、相同之处和不同之处。 1 本质 三个设计模式名字中都含有“工厂”二字,其含义是使用工厂(一个或一系列方法)去生产产品(一个或一系列类的实例)。 另外,有时候,我们常常会将生产产品的一个或一系列方法封装到一个类中,我习惯把这个类叫做“工厂类”;而被实例化的类称作“产品类”。 2 简单工厂 工厂类(SimpleFactory)拥有一个工厂方法(create),接受了一个参数,通过不同
利用overflow失效巧妙实现类似position:fix的效果
<style>
*{margin:0;padding:0;}
html{overflow:hidden;}
.page{height:100vh;width:100%;overflow-y:scroll;background:#999;}
.content{height:3000px;width:80%;margin:0 auto;background:#0FF;}
.fix{height:0;overflow:hidden;text-align:right;}/* 此处利用子元素绝对定位ab
Windows下Dubbo+Zookeeper搭建
环境: windows10 jdk1.8 tomcat8 maven3.3.3 spring4.3.5 dubbo2.5.6 dubbo-admin2.5.6 zookeeper3.4.10 安装zookeeper 下载地址http://www.apache.org/dyn/closer.cgi/zookeeper/ 解压到D盘后进入Conf目录 D:\zookeeper-3.4.10\conf 复制一份zoo_sample.cfg 并改名为 zoo.cfg,因为 Zookeeper在启动时会
python添加getter和setter方法
要为一个类的成员属性增加getter和setter方法时,可以调用property方法 1 class Person:
2 def __init__(self):
3 self.Name = "default"
4
5 def get_name(self):
6 return self.Name
7
8 def set_name(self,name):
9 self.Name = name
10
1
Mysql之Centos6.5+Mysql5.6搭建配置
下载mysql-xxx.tar.gz文件 将下载的文件通过ftp软件传到linux下/usr/local 解压并重命名 cd /usr/local tar -zxvf mysql-xxx.tar.gz mv mysql-xxx mysql 检测是否安装过mysql rpm -qa |grep mysql 删除旧版本mysql rpm -e mysql-server rpm -e mysql -nodeps 强制性 添加组和用户 groupadd mysql useradd -g mysql m
POJ1475【推箱子】(双bfs)
先对箱子bfs,箱子想要推到那个位置,我们人就必须移动到箱子的后面去推它,因此每次推箱子,需要再对人bfs来判断人能不能走到推箱子需要的地方以及最少的步数, struct rec {
int bx, by, px, py;//箱子的坐标 人的坐标
string path;//保存路径
rec(int _bx = 0, int _by = 0, int _px = 0, int _py = 0, string _path = "") :bx(_bx), by(_by),
Mysql之access denied for user root
access denied for user root@localhost (using password: YES) 解决方法如下: 停止mysql服务: service mysqld stop 后台安全模式登陆mysql: mysqld_safe --user=mysql --skip-grant-tables --skip-networking 新开一个窗口,直接在命令行输入mysql 修改mysql密码: update mysql.user set password=PASSWORD(
Java之Linux下环境搭建
下载linux版Jdk,比如jdk-xxx.tar.gz 用shell客户端,比如xshell登录到linux终端,用户名用root 将jdk文件通过ftp软件传到linux下/usr/local,比如xftp 解压jdk文件包,并重命名为jdk cd /usr/local tar -zxvf jdk-xxx.tar.gz mv jdk-xxx jdk 编辑配置文件,配置环境变量 vim /etc/profile 末尾添加如下内容: export JAVA_HOME=/usr/local/jd
Perl处理和收走子进程(退出状态码和wait)
本文关于处理子进程退出状态码的内容主体来自于《Pro Perl》的第21章。 子进程退出状态码 每个子进程在退出时,操作系统都会保留它们的退出状态码,并在内核维护的进程表中保留子进程项。对于进程的退出状态码,只有在父进程读走之后或者收走(reap)之后才会被清除。注意这里的一个词语“收走(reap)”,这是一个Unix操作系统的进程术语,可以理解为对死了的进程进行收尸,收走之后称为reaped。如果父进程没有去读走或者收走子进程的退出状态码,这个子进程就会成为一个僵尸进程(zombie pro
Tomcat之Linux下环境搭建
下载linux版Tomcat,比如apache-tomcat-xxx.tar.gz 将下载的文件通过ftp软件传到linux下/usr/local 解压并重命名 cd /usr/local tar -zxvf apache-tomcat-xxx.tar.gz mv apache-tomcat-xxx tomcat 启动tomcat cd /usr/local/tomcat/bin ./startup.sh 在linux机器上打开http://localhost:8080/ 测试是否部署成功 外
Codeforces Beta Round #32 (Div. 2, Codeforces format)
Codeforces Beta Round #32 (Div. 2, Codeforces format) http://codeforces.com/contest/32 A 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define lson l,mid,rt<<1
4 #define rson mid+1,r,rt<<1|1
5 #define sqr(x) ((x)*(x))
6 #define pb push_ba
hdoj1074--Doing Homework (DP 状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 思路: 看着数据很小,15,但是完成的顺序有15!情况,这么大的数据是无法实现的。上网查才知道要用状态压缩,用二进制表示状态,比如n=3时:111表示3門全部完成,011表示完成第1,2門的状态,000表示一門都没完成的情况。这样压缩之后最多就只有1<<15种状态了,然后直接dp就可以了。大体思路是从1状态到(1<<n-)1依次遍历,寻找上一个状态,使得到达此状态时总扣分最小,寻找上一个状态
系统架构师教程 下载
[本书为参加软件水平考试——系统架构设计师考生的必备考试用书。凡通过本考试的考生,便具备了全国认可的,本行业的架构师资格。](https://u18103887.ctfile.com/fs/18103887-336813903) 下载地址:https://u18103887.ctfile.com/fs/18103887-336813903 图书目录编辑 第1章 绪论 1.1 系统架构的概念及其发展历史 1.1.1 系统架构的概念 1.1.2 简要的发展历史 1.2 系统架构师的定义与职业素质
AtCoder Beginner Contest 118 解题报告
A - B +/- A #include <bits/stdc++.h>
int main() {
int a, b; std::cin >> a >> b;
b % a ? std::cout << b - a : std::cout << a + b;
} B - Foods Loved by Everyone #include <bits/stdc++.h>
int cnt[31], ans;
int main() {
int n, m; std::cin >>
Shiro之与SpringMVC集成
SpringMVC 环境省略 http://shiro.apache.org/download.html pom.xml增加maven依赖 <dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<g
周排行