Documentation ¶
Index ¶
- Variables
- func FilterPorts(sourcePorts, excludePorts string) []int
- func NewDirCuckoo() *cuckoo.Filter
- func NewGenericCuckoo() *cuckoo.Filter
- func NewPathCuckoo() *cuckoo.Filter
- func NewWebsiteCuckoo() *cuckoo.Filter
- func RemoveDuplicatePorts(ports1, ports2 string) []int
- type Config
- type FilterManager
- type Filterable
- type MapFilter
- type StringFilter
Constants ¶
This section is empty.
Variables ¶
var BigFilterManager = NewFilterManager(18, 1<<18, 300)
var DefaultFilterManager = NewFilterManager(12, 1<<15, 80)
Functions ¶
func FilterPorts ¶ added in v1.2.9
FilterPorts 接受两个字符串形式的端口列表作为参数,返回一个新的端口列表, 其中包含了在 `ports1` 中但不在 `ports2` 中的所有端口。 这个函数首先将两个输入字符串解析为端口列表,然后创建一个映射(或集合)来存储 `ports2` 中的所有端口。 然后,它遍历 `ports1` 中的每个端口,如果这个端口不在 `ports2` 中,那么它就会被添加到结果列表中。 最后,函数返回结果列表,其中包含了所有只在 `ports1` 中出现的端口。 Example: ``` FilterPorts("1-10", "2-10") // [1] ```
func NewGenericCuckoo ¶
默认参数的过滤容器, 全局使用一个容易造成碰撞, 因此拆分成四个 NewGenericCuckoo 极限容量约 400 万
func RemoveDuplicatePorts ¶ added in v1.2.9
RemoveDuplicatePorts 解析两个字符串形式的端口列表,并使用布谷鸟过滤器进行去重。 这个函数首先创建一个布谷鸟过滤器,然后将两个输入字符串解析为端口列表。 接着,它遍历这两个列表,将每个端口添加到布谷鸟过滤器中,如果这个端口之前没有被添加过, 那么它也会被添加到结果列表中。最后,函数返回结果列表,其中包含两个输入字符串中的所有唯一端口。 Example: ``` RemoveDuplicatePorts("10086-10088,23333", "10086,10089,23333") // [10086, 10087, 10088, 23333, 10089] ```
Types ¶
type Config ¶
type Config struct { TTL int64 `json:"ttl" yaml:"ttl"` // 去重时间窗,秒为单位 CaseSensitive bool `json:"case_sensitive" yaml:"case_sensitive"` // 是否对 URL 中的大小写敏感 Hash bool `json:"hash" yaml:"hash"` // 是否将 URL hash 作为去重因素 Query bool `json:"query" yaml:"query"` // 是否将 query 作为去重因素, 若为 true, 那么 ?a=b 和 ?a=c 将被视为两个链接 Credential bool `json:"credential" yaml:"credential"` // 是否将认证信息作为去重因素,若为 true, 登录前后的同一页面可能会被扫描两次 Rewrite bool `json:"rewrite" yaml:"rewrite"` // 是否启用 rewrite 识别 }
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
type FilterManager ¶ added in v1.3.2
type FilterManager struct {
// contains filtered or unexported fields
}
func NewFilterManager ¶ added in v1.3.2
func NewFilterManager(filterEntries, filterTotal uint, capacity int) *FilterManager
func (*FilterManager) DequeueFilter ¶ added in v1.3.2
func (m *FilterManager) DequeueFilter() *StringFilter
func (*FilterManager) EnqueueFilter ¶ added in v1.3.2
func (m *FilterManager) EnqueueFilter(f *StringFilter)
type Filterable ¶
func NewBigFilter ¶ added in v1.3.2
func NewBigFilter() Filterable
func NewCuckooFilter ¶
func NewCuckooFilter() Filterable
func NewFilter ¶
func NewFilter() Filterable
func NewMapFilter ¶
func NewMapFilter() Filterable
type StringFilter ¶
func NewFilterWithSize ¶ added in v1.2.7
func NewFilterWithSize(entries, total uint) *StringFilter
func NewStringFilter ¶
func NewStringFilter(config *Config, container *cuckoo.Filter) *StringFilter
func NoCacheNewFilter ¶ added in v1.3.2
func NoCacheNewFilter() *StringFilter
NewFilter 创建一个默认的字符串布谷鸟过滤器,布谷鸟过滤器用于判断一个元素是否在一个集合中,它存在极低的假阳性(即说存在的元素实际上不存在),通常这个集合中的元素数量非常大才会使用布谷鸟过滤器。 Example: ``` f = str.NewFilter() f.Insert("hello") f.Exist("hello") // true ```
func (*StringFilter) Clear ¶ added in v1.3.1
func (s *StringFilter) Clear()
func (*StringFilter) Close ¶ added in v1.3.2
func (f *StringFilter) Close()
func (*StringFilter) Exist ¶
func (s *StringFilter) Exist(str string) bool
func (*StringFilter) Insert ¶
func (s *StringFilter) Insert(str string) bool
返回值是 true,插入成功,false 容器满了, 无法继续添加