base

CAP和BASE理论

匿名 (未验证) 提交于 2019-12-03 00:43:02
1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。 CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。 1.1 一致性(Consistency) 一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。 1.2 可用性(Availability) 可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。 1.3 分区容错性(Partition tolerance) 分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。 2. CAP权衡

centos7安装Apache tomcat7方法

匿名 (未验证) 提交于 2019-12-03 00:37:01
centos7安装Apache tomcat7方法 yum list|grep tomcat tomcat . noarch 7.0 .76 - 6. el7 @base tomcat -admin -webapps . noarch 7.0 .76 - 6. el7 @base tomcat -el - 2.2 -api . noarch 7.0 .76 - 6. el7 @base tomcat -jsp - 2.2 -api . noarch 7.0 .76 - 6. el7 @base tomcat -lib . noarch 7.0 .76 - 6. el7 @base tomcat -servlet - 3.0 -api . noarch 7.0 .76 - 6. el7 @base tomcat -webapps . noarch 7.0 .76 - 6. el7 @base tomcat -docs -webapp . noarch 7.0 .76 - 6. el7 base tomcat -javadoc . noarch 7.0 .76 - 6. el7 base tomcat -jsvc . noarch 7.0 .76 - 6. el7 base tomcatjss . noarch 7.2 .1 - 6. el7 base 安装tomcat服务 yum

freemaker学习笔记

匿名 (未验证) 提交于 2019-12-03 00:25:02
一、 freemarker 是一个基于 java 的模板引擎。是 mvc 中 View 视图层的促进。 1. 分离表现层和业务逻辑。 2. 可以提高开发效率 3. 使得开发过程中的人员分工更加明确 二、 view 解析 model 数据 1. 基本数据取值 String / int / long / double / boolean username --> $ { username ! } ! 代表 username 为 null ,不显示 boolean username = true --> $ { username ? String ( 'yes' , 'no' )} 转义为 yes , no 不能显示 true 、 false null 值 $ { null ! '我是空变量' } missing 变量不存在 $ { missing ! '我是不存在' } List < User > userList --> < # list userList as item > $ { item . name } -- $ { item . birthday ? String ( 'yyyy-MM-dd HH:mm:ss' )} < / list > 转义日期, freemaker 识别 sql 包下的 Date ,不识别 util 包下的 Date ,需要转义。 2. 变量赋值、运算

Sass-开发规范:结构

匿名 (未验证) 提交于 2019-12-03 00:22:01
参考:https://www.sasscss.com/sass-guidelines/architecture/ 背景说明: @import 指令引入和css的引入不同(引入非css原文件),Sass的引入最终编译成css文件时,是把引入的文件归纳到一个文件中,即合并成一个文件,而不是css那样,产生额外的网络请求去获取内容。 @import 指令工作原理,Sass实际编程中可以将结构划分的特别细,多个文件多个目录,即可以拆分代码库到几个文件中,而又不会影响性能,且方便维护与重用。 7-1ģʽ 7-1 ģʽ main . scss )中――这个文件编译时会引用所有文件夹而形成一个 CSS 样式表。 abstracts / base / components / layout / pages / themes / vendors / 当然还有它: main . scss 理想情况下,目录层次如下所示: 文件命名要遵循如上统一的命名规则:使用连字符界定。 Base文件夹 base / 文件夹存放项目中的模板文件。在这里,可以找到重置文件、排版规范文件或者一个样式表――定义一些 HTML 元素公认的标准样式(我喜欢命名为 _base . scss )。 _base . scss _reset . scss _typography . scss 如果你的项目中使用了 大量的

区分好继承类和封闭类,两者有很大的区别

匿名 (未验证) 提交于 2019-12-03 00:21:02
一、继承类 在继承中,子类负责其直接基类的构造,至于如何构造需要看下面; 如何在子类中调用拷贝构造函数,看下面; #include <iostream> #include <bits/stdc++.h> using namespace std ; class Base { private : int _a; public : Base( int a= 0 ):_a(a){ cout << "Base = " <<_a<< " is created." <<endl;} Base( const Base& p):_a(p._a){ cout << "Base = " <<_a<< " is copied." <<endl;} ~Base(){ cout << "Base = " <<_a<< " is erased." <<endl;} }; class Derived: public Base { private : int _b; public : Derived( int a= 0 , int b= 0 ):Base(a),_b(b){ cout << "Derived = " <<_b<< " is created." <<endl;} Derived( const Derived& p):Base(p),_b(p._b){ cout << "Derived = " <<_b

c语言描述-栈的基本操作

匿名 (未验证) 提交于 2019-12-03 00:14:01
一朵花儿开,就有一朵花儿败,满山的鲜花,只有代码最可爱 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 //定义最大存储空间 #define STACKINCREMENT 10 //增加的存储空间,increment意为:加薪、增值 typedef struct { int * base ; int * top ; int sum ; //记录元素个数 int stacksize ; } Stack ; //初始化栈 void Init ( Stack * s ){ s -> base =( int *) malloc ( MAXSIZE * sizeof ( Stack )); if ( s -> base == NULL ){ printf ( "内存分配失败!" ); } s -> top = s -> base ; s -> stacksize = MAXSIZE ; s -> sum = 0 ; } //在栈顶插入一个元素 void Push ( Stack * s ){ int e ; printf ( "请输入要插入的元素:" ); scanf ( "%d" ,& e ); if ( s -> top - s -> base >= s -> stacksize ){ s -> base =( int

7、《Libevent中文帮助文档》学习笔记7:事件循环

匿名 (未验证) 提交于 2019-12-03 00:09:02
1 运行循环 有了event_base,并且有一些 event注册到其中 (关于怎样创建和注册event请参考下一章节),就需要 等待这些event ֪ͨ 你他们发生了什么 。 接口 #define EVLOOP_ONCE 0x01 #define EVLOOP_NONBLOCK 0x02 #define EVLOOP_NO_EXIT_ON_EMPTY 0x04 int event_base_loop ( struct event_base * base , int flags ); 通常event_base_loop()函数 运行一个event_base直到其中再无event注册进来 。循环运行,然后不断重复判断是否有已经注册的event触发(例如如果读event的文件描述符准备读或者event的超时即将到来)。一旦这些情况发生,就会标记所有的触发event为 激活状态 ,然后开始 运行这些事件 (比喻读IO)。 设置flags参数一个或多个标记可改变event_base_loop()的行为。设置EVLOOP_ONCE循环将会由event激活,然后运行这些event,直到再无event后返回。设置EVLOOP_ONCE循环不会再等待有event触发,只会检查是否有event做好准备立刻触发,有则运行其回调函数。 通常没有等待的或者已经激活的event循环将退出

Perl爬虫代码

匿名 (未验证) 提交于 2019-12-02 23:59:01
目前在做Perl页面爬虫的模块,发现一些代码,做个详细的分析,把好的引用一下给自己用用。 1 # !/usr/bin/perl -w 2 3 use strict ; 4 5 use HTTP :: Request ; 6 use HTTP :: Status ; 7 use HTML :: LinkExtor ; 8 use URI :: URL ; 9 use LWP :: UserAgent ; 10 # use Digest::MD5 qw(md5_hex); 11 12 13 use Compress :: Zlib ; 14 15 # ################################################################### 16 # Parameters Setting 17 our $StartUrl = " http://xxx " ; 18 our $bRestrict = 1 ; 19 our @restrictSite = ( ' cxxx ' , ' context: ' ); 20 our $bContinueBefore = 1 ; 21 22 23 # ################################################################### 24 25 26

c++构造函数的调用方法

匿名 (未验证) 提交于 2019-12-02 23:57:01
#include <iostream> using namespace std ; class Base { public : Base (){ cout << "hello" << endl ; } Base ( int _a ): base ( _a ){ // 将_a赋值给base base ++; cout << base << endl ; } Base ( int _a , float _b ): base ( _a ), th ( _b ){ cout << base + th << endl ; } Base ( int _a , float _b , int _c ): base ( _a ), th ( _b ), xh ( _c ){ cout << base + th + xh << endl ; } void fun0 (){ cout << base << endl ;} int base ; float th ; int xh ; }; int main (){ // Base b; 只有一个构造函数时才能这样调用否则报错 Base c (); // 调用默认构造函数 Base t ( 10 ); // 调用带参的构造函数的简写形式 t . fun0 (); t . base = 100 ; t . fun0 (); Base t1 = Base (

shared_ptr 用法

匿名 (未验证) 提交于 2019-12-02 23:57:01
引入 shared_ptr 是c++为了提高安全性而添加的智能指针,方便了内存管理。 特点 shared_ptr shared_ptr shared_ptr 可以支持普通指针的所有操作,完全可以像操作普通指针一样操作智能指针。 shared_ptr 可以通过三种方式得到(拷贝初始化,定义delete操作的方式不在罗列,只讨论初始化指针所指对象来源): 1.通过一个指向堆上申请的空间的指针初始化(切记不要用栈上的指针,否则,当智能指针全部释放控制权(栈中的对象离开作用域本身就会析构一次),将会析构对象,导致出错) 2.通过make_shared函数得到 3.通过另外一个智能指针初始化 int *a = new int(8); std::shared_ptr<int> p1(a); auto b = std::make_shared<int>(2); auto c(b); 注意事项 1. 使用原生指针多次初始化 class Base { public: Base() { printf("con\n"); } ~Base() { printf("decon\n"); } }; int main() { Base *a = new Base(); std::shared_ptr<Base> p1(a); std::shared_ptr<Base> p2(a); return 0; }