Da'sBlog


  • 首页

  • 分类

  • 归档

  • compass中文手册

  • 搜索
close
Da'sBlog

数据结构-集合论,集合,数组 大O 第一篇

发表于 2017-03-02 | 分类于 数据结构

集合论: 集合论或集论是研究集合(由一堆抽象物件构成的整体)的数学理论,包含了集合、元素和成员关系等最基本的数学概念。

集合(简称集)是数学中一个基本概念,它是集合论的研究对象.集合就是“一堆东西”。集合里的“东西”,叫作元素。

集合A和B的并集,符号为A ∪ B
集合A和B的交集,符号为A ∩ B
集合U和A的相对差集,符号为U \ A
集合A和B的对称差,符号为A △ B或A⊕B

编程中的数组 是集合中的一种表现形式。

数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
其中具有相同类型的若干变量按有序的形式组织起来的一种形式 就是我们说的成员关系。

①[x,y] :中括号表示包括边界数字,即表示大于等于x小于等于y
②(x,y):小括号是不包括边界,即表示大于x小于y
所以我们的数组 用[]来声明。而()已经被函数占用,所以不考虑。

阅读全文 »
Da'sBlog

python-列表list,元组tuple,字典dict,集合set

发表于 2017-03-02 | 分类于 python

数序: 全称是数字序列,就是指数字按照一定规律所排出来的顺序。
序数: 表顺序的数,像第1、第2、第3。

序列的两个特点:
1.索引操作符,从序列中抓取一个特定项目
2.和切片操作符,获取序列的一个切片,即一部分序列

Python一些内置函数
1、cmp(A, B):比较可为list、tuple等的A、B,A>B为1,A=B为0,小于为-1
2、len(obj): 计算元素个数。
3、max(obj):返回元素最大值。
4、min(obj):返回元素最小值。
5、reversed(obj): 对元素进行翻转
6、enumerate(obj): 遍历list的元素,返回序号及其对应的元素 for x,y in list:
7、zip():打包成tuple(元组),然后返回由这些tuples组成的list(列表)

列表、元组和字符串都是序列,字符串是字符的序列,列表和元祖是任意类型的序列

列表list,用中括号“[ ]”表示

1.任意对象的有序集合
列表是一组任意类型的值,按照一定顺序组合而成的
2.通过偏移读取
组成列表的值叫做元素(Elements)。每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现
3.可变长度,异构以及任意嵌套
列表中的元素可以是任意类型,甚至是列表类型,也就是说列表可以嵌套
4.可变的序列
支持索引、切片、合并、删除等等操作,它们都是在原处进行修改列表
5.对象引用数组
列表可以当成普通的数组,每当用到引用时,Python总是会将这个引用指向一个对象,所以程序只需处理对象的操作。当把一个对象赋给一个数据结构元素或变量名时,Python总是会存储对象的引用,而不是对象的一个拷贝

#!/usr/bin/env python

#coding:utf-8

‘’’
FuncName: study_list.py
Desc: list 内建函数
Date: 2016-03-17 14:00
Author: johnny
‘’’

L.append(var) # 追加元素,加在最后
L.insert(index,var) # 在index的位置追加元素,位置就是索引
L.pop(var) # 从list中删除最后一个元素,并返回该元素
L.remove(var) # 删除第一次出现的该元素
L.count(var) # 该元素在列表中出现的个数
L.index(var) # 该元素的位置(索引号),无则抛异常
L.extend(list) # 追加list,即合并list到L上,两个列表合并
L.sort() # 排序
L.reverse() # 原地翻转列表,从前到后变成从后向前
l = [1,2,3,4,[‘hello’,’johnny’],’blog.csdn.net/z_johnny’] # 创建list
l[1:5:2] # list的切片,切一部分,范围为索引[1,5),即1、2、3、4不包括5,隔2取1个值 l[1:5:2] == [2, 4]
l[1] # list的索引,左1索引为0,右1索引为-1,l[1] == 2
l[4][1] # 列表支持嵌套,l[4][1] == ‘johnny’

list的官方内置函数可用dir(list)与help(list) 命令进行查看

元祖tuple,用小括号“( )”表示

1.任意对象的有序集合
与列表相同
2.通过偏移存取
与列表相同
3.属于不可变序列类型
类似于字符串,但元组是不可变的,不支持在列表中任何原处修改操作,不支持任何方法调用
4.固定长度、异构、任意嵌套
固定长度即元组不可变,在不被拷贝的情况下长度固定,其他同列表
5.对象引用的数组
与列表相似,元祖是对象引用的数组

和list相比
1.比列表操作速度快
2.对数据“写保护“
3.可用于字符串格式化中
4.可作为字典的key

#!/usr/bin/env python

#coding:utf-8

‘’’
FuncName: study_tuple.py
Desc: tuple 内建函数
Date: 2016-03-17 14:00
Author: johnny
‘’’

t.count(var) # 该元素在元组中出现的个数
t.index(var) # 该元素的位置(索引号),无则抛异常
t = (1,2,3,4,[‘hello’,’johnny’],’blog.csdn.net/z_johnny’) # 创建tuple
tu = (5,) # 只含有一个元素的元祖,必须加逗号“,”
t[1:5:2] # tuple的切片,切一部分,范围为索引[1,5),即1、2、3、4不包括5,隔2取1个值 t[1:5:2]== (2, 4)
t[1] # tuple的索引,左1索引为0,右1索引为-1,t[1] == 2
t[4][1] # 同列表一样支持嵌套,t[4][1] == ‘johnny’

tuple的官方内置函数可用dir(tuple)与help(tuple) 命令进行查看

字典dict,用大括号“{key,value}”表示

1.通过键而不是偏移量来读取
字典就是一个关联数组,是一个通过关键字索引的对象的集合,使用键-值(key-value)进行存储,查找速度快
2.任意对象的无序集合
字典中的项没有特定顺序,以“键”为象征
3.可变长、异构、任意嵌套
同列表,嵌套可以包含列表和其他的字典等
4.属于可变映射类型
因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值。字典是唯一内置的映射类型(键映射到值的对象)
5.对象引用表
字典存储的是对象引用,不是拷贝,和列表一样。字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以

和list比较,dict有以下几个特点:
1.查找和插入的速度极快,不会随着key的增加而增加
2.需要占用大量的内存,内存浪费多
而list相反:
1.查找和插入的时间随着元素的增加而增加
2.占用空间小,浪费内存很少
所以,dict是用空间来换取时间的一种方法

#!usr/bin/env python

#coding:utf-8

‘’’
FuncName: study_dict.py
Desc: dict 内建函数
Date: 2016-03-17 14:00
Author: johnny
‘’’

d = {‘Name’: ‘Johnny’, ‘Address’:’blog.csdn.net/z_johnny’} # 创建dict
d[‘Name’] # 找出key为Name的值 d[‘Name’] == ‘Johnny’
d[‘Name’] = hello # 更新key为Name的值 Name对应的值从Johnny改为hello
del d[‘Address’] # 删除key为Name的值和该key d = {‘Name’: ‘Johnny’}
d.clear() # 删除字典d中的所有元素 d = {}
d.pop(‘Name’) # 删除字典d中key为’Name’的值和该键
d.copy() # 返回字典d的浅复制副本
d.fromkeys(S[,v]) # 创建一个新的字典,设置键为seq 和值为value
d.get(key, default=None) # 返回该键key的值,若没有该键,则返回None
d.has_key(key) # 如果在字典d中存在键key,则返回true,否则返回 false
d.items() # 返回字典的(键,值)元组对的列表
d.keys() # 返回字典的键的列表
d.values() # 返回字典d的值列表
d.setdefault(key, default=None)# 类似get()

# 但会设定d[key]=default 如果key不在字典d中

d.update(d2) # 将字典d2的键值对增加到字典d中
d.iteritems() # (键,值)项的一个迭代器
d.iterkeys() # 字典d中键的一个迭代器
d.itervalues() # 字典d中值的一个迭代器
d.popitem() # 删除元组返回键、值,若字典d为空会报key错
d.viewitems() # 像对象一样提供字典d中项的一个视图
d.viewkeys() # 像对象一样提供字典d中key的一个视图
d.viewvalues() # 像对象一样提供字典d中value的一个视图

dict的官方内置函数可用dir(dict)与help(dict) 命令进行查看

集合set,用小括号“( )”表示

1.是一组key的集合,但不存储value,并且key不能重复
创建一个set,需要提供一个list作为输入集合,s = set([1,2,3]),注意,传入的参数 [1, 2, 3] 是一个list,而显示的 set([1, 2, 3]) 只是告诉你这个set内部有1,2,3这3个元素,显示的[ ]不表示这是一个list
2.重复元素在set中自动被过滤
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

还有一种集合是forzenset( ),是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法

和dict对比
1.set和dict的唯一区别仅在于没有存储对应的value
2.set的原理和dict一样,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”

#!usr/bin/env python

#coding:utf-8

‘’’
FuncName: study_set.py
Desc: set 内建函数
Date: 2016-03-17 14:00
Author: johnny
‘’’

s = set([1,2,3]) # 创建一个数值set,有1,2,3三个元素s == set([1, 2, 3])
se = set(‘Hello’) # 创建一个唯一字符的集合s == set([‘H’, ‘e’, ‘l’, ‘o’])
a = s | se # s 和 se 的并集 set([1, 2, 3, ‘e’, ‘H’, ‘l’, ‘o’])
b = s & se # s 和 se 的交集 set([]) 没有相同项为空
c = s – se # 求差集(项在s中,但不在se中) set([1, 2, 3])
d = s ^ se # 对称差集(项在s或se中,但不会同时出现在二者中)

# set([1, 2, 3, 'e', 'H', 'l', 'o'])

s.issubset(t) # 如果s是t的子集,则返回True,否则返回False
s.issuperset(t) # 如果t是s的超集,则返回True,否则返回False
s.union(t) # 返回一个新集合,该集合是s和t的并集
s.intersection(t) # 返回一个新集合,该集合是s和t的交集
s.difference(t) # 返回一个新集合,该集合是 s 的成员,但不是 t 的成员
s.symmetric_difference(t) # 返回一个新集合,该集合是s或t的成员,但不是s和t共有的成员
s.copy() # 返回一个新集合,它是集合s的浅复制
s.update(t) # 用t中的元素修改s,即s现在包含s或t的成员
s.intersection_update(t) # s中的成员是共同属于s和t中的元素
s.difference_update(t) # s中的成员是属于s但不包含在t中的元素
s.symmetric_difference_update(t) # s中的成员更新为那些包含在s或t中,

# 但不是s和t共有的元素

s.add(obj) # 在集合s中添加对象obj
s.remove(obj) # 从集合s中删除对象obj,如果obj不是集合s中的元素

# (obj not in s),将引发KeyError

s.discard(obj) # 如果obj是集合s中的元素,从集合s中删除对象obj
s.pop() # 删除集合是中的任意一个对象,并返回它
s.clear() # 删除集合s中的所有元素

set的官方内置函数可用dir(set)与help(set) 命令进行查看

阅读全文 »
Da'sBlog

名词 吞吐量 带宽 QPS TPS DDOS流量 并发用户数

发表于 2017-03-01 | 分类于 网络安全

Throughput:吞吐量。防火墙吞吐量是指在没有帧丢失的情况下,设备能够接收并转发的最大数据速率。[1]

Max net bitrate: 带宽。指链路上每秒所能传送的比特数,它取决于链路时钟速率和信道编码在计算机网络中又称为线速。可以说以太网的带宽是10Mbps。

两者需要区分链路上的可用带宽(带宽)与实际链路中每秒所能传送的比特数(吞吐量)。通常更倾向于用“吞吐量”一词来表示一个系统的测试性能。这样,因为实现受各种低效率因素的影响,所以由一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。

QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。

阅读全文 »
Da'sBlog

position:absolute-top,right,bottom,left为0使用

发表于 2017-02-26 | 分类于 css

绝对定位一直用起来非常方便,直接脱离文本流。偶然发现它还有个超强的功能。竟然可以撑开盒子宽高。

对外

默认情况下,看代码;盒子如果设置 宽高后 设置绝对定位,bottom为0会自动抵底部。

mark

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.wai{
position:relative;
top: 300px;
left: 300px;
width: 233px;
height: 370px;
background-color: yellow;
}
.nei{
position: absolute;
/*top: 0px;*/
/*left: 0px;
right: 0px;*/
bottom: 0px;
width: 100px;
height: 100px;
background-color: rgba(200,200,200,0.7);
}
</style>
</head>
<body>
<div class="wai">
<div class="nei">
<!-- <div class="nei-item1">1</div>
<div class="nei-item2">2</div> -->
</div>
</div>
</body>
</html>

阅读全文 »
Da'sBlog

使用iptables应对SYN攻击,CC攻击,ACK攻击[转]

发表于 2017-02-24 | 分类于 网络安全

三次握手的过程及相关概念
TCP/IP协议使用三次握手来建立连接,过程如下:
1、第一次握手,客户端发送数据包syn到服务器,并进入SYN_SEND状态,等待回复
2、第二次握手,服务器发送数据报syn/ack,给客户机,并进入SYN_RECV状态,等待回复
3、第三次握手,客户端发送数据包ACK给客户机,发送完成后,客户端和服务器进入ESTABLISHED状态,链接建立完成

三次握手协议中,服务器维护一个等待队列,收到一个syn包就在队列中建立一个条目,并分配一定的资源。对应的每一个条目表示已经收到一个syn请 求,并已经回复syn/ack,服务器上对应的连接已经进入SYN_RECV状态,等待客户端响应,收到客户端的响应包以后,该连接进入 ESTABLISHED状态,队列中对应的条目被删除。
backlog参数:设定等待队列的最大数目。对应内核参数:net.ipv4.tcp_max_syn_backlog = 1024
syn-ack重传次数:服务器发送syn/ack包,如果没有收到客户端的相应,就会重传syn/ack,超过一定时间之后会进行第二次重传,超过设定 次数以后将该条目从队列中删除。每次重传的间隔时间并不确定。对应的内核参数:net.ipv4.tcp_synack_retries = 5
syn重传次数:概念和syn/ack重传次数类似,对应的内核参数:net.ipv4.tcp_syn_retries = 5
等待存活时间:指等待队列的条目存活时间,即从服务器收到syn包到确认这个包无效的最长时间,该时间是所有重传包请求的最长等待时间

阅读全文 »
Da'sBlog

服务器网站被CC攻击的解决方法

发表于 2017-02-24 | 分类于 网络安全

作为站长或者公司的网站的网管,什么最可怕?显然是网站受到的DDoS攻击。大家都有这样的经历,就是在访问某一公司网站或者论坛时,如果这个网站或者论坛流量比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,网站或论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观。

首先,什么事CC攻击?

攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS,和伪装就叫:CC(ChallengeCollapsar)。
CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观。

阅读全文 »
Da'sBlog

study clojure

发表于 2017-02-21
Da'sBlog

Compass中文开发规范手册

发表于 2017-01-11

开始

compass目前已经不再维护,但我仔细看了下,规范和开发方式,仍值得学习,目前只翻译规范,具体的api占时不计划翻译。

Version: 1.0.1

开始使用Compass

Compass 是一款使用Sass语言 编写的开源的css设计框架,使用
起来强大和简单. 如果你对Sass不熟悉, 可以去sass-lang.com学习如何使用.

安装Compass

请按照Compass 安装指南按步骤安装Compass和Sass。

如果需要验证版本,可以运行以下命令:

1
$ compass version
阅读全文 »
1…67
Sun Hao

Sun Hao

Whoever wants to be first must be slave of all.

68 日志
26 分类
100 标签
RSS
Creative Commons
© 2018 Sun Hao
Powered by Hexo
Theme - NexT.Mist
本站访客数人次 本站总访问量次