首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:go-cache

    map[string]Item mu sync.RWMutex onEvicted func(string, interface{}) janitor *janitor } cache对象就是传说中的map+锁+过期清理函数。 其中janitor,定义了清理函数定期执行的时间和接受停止信号的chan type janitor struct { Interval time.Duration stop chan bool <- true } func runJanitor(c *cache, ci time.Duration) { j := &janitor{ Interval: ci, stop: make( chan bool), } c.janitor = j go j.Run(c) } func newCache(de time.Duration, m map[string]Item) *cache {

    77710编辑于 2023-09-06
  • 来自专栏后端云

    Golang缓存库 go-cache

    When it is // garbage collected, the finalizer stops the janitor goroutine, after // which c can be *janitor } go-cache对每一个key/value item对设置了过期时间,并加入了定期清理过期的item。 struct { Interval time.Duration stop chan bool } func (j *janitor) Run(c *cache) { ticker := <- true } func runJanitor(c *cache, ci time.Duration) { j := &janitor{ Interval: ci, stop: make(chan bool), } c.janitor = j go j.Run(c) } 定时清理包括:创建看门狗结构体janitor,并赋值给cache结构体的成员变量,执行结构体的Run(

    1.9K20编辑于 2022-11-25
  • 来自专栏人人都是架构师

    Go每日一库之81:go-cache(单机缓存库)

    sync.RWMutex // 读写锁,在操作(增加,删除)缓存时使用 onEvicted func(string, interface{}) // 删除KEY时的CallBack函数 janitor *janitor // 定时清空缓存的结构 } // janitor 定时清空缓存的结构 type janitor struct { Interval time.Duration // 当C被GC回收时,会停止runJanitor 中的协程 } return C } func runJanitor(c *cache, ci time.Duration) { j := &janitor { Interval: ci, stop: make(chan bool), } c.janitor = j go j.Run(c) // 新的协程做过期删除逻辑 } func (j *janitor) Run(c *cache) { ticker := time.NewTicker(j.Interval) for { select { case <-ticker.C

    5.4K40编辑于 2023-09-30
  • 来自专栏Go 技术

    Go 简单设计和实现可扩展、高性能的泛型本地缓存

    3、janitor *janitor:一个用于处理后台任务的结构体,例如定时清理过期数据,单独提出一个结构体是为了解耦。 使用 newJanitor(ctx, interval) 创建一个清理过期项的 janitor,并将其赋值给 Cache 实例的 janitor 字段。 通过 cache.janitor.run(cache.DeleteExpired) 启动 janitor,以定期运行 DeleteExpired 方法清理过期项。返回创建的 Cache 实例。 janitor 的设计// https://github.com/chenmingyong0423/go-generics-cache/blob/master/cache.gotype janitor 当 j.ctx.Done() 通道接收到信号时(即上下文被取消或超时),调用 j.stop() 方法来停止 janitor

    1.1K156编辑于 2024-01-16
  • 来自专栏云云众生s

    五个高效的 kubectl 插件

    例如: KREW_ARCH=amd64 kubectl krew install janitor Tail 通过 kubectl logs -f 记录 pod 的日志始终是了解正在运行的 pod 在做什么的好方法 Janitor 是一个 kubectl 插件,允许您列出处于问题状态的资源。 ❯ k janitor pods status STATUS COUNT Running 4 Error 6 ImagePullBackOff 1 ❯ k janitor pods unhealthy NAME STATUS AGE failing-job-ln7rf Error 4m23s failing-job2-s842x Error 4m17s my-container ImagePullBackOff 17m ❯ k janitor

    44110编辑于 2024-03-27
  • 来自专栏社区动态

    做梦都想拥有的陪伴对象,AI居然免费帮我实现了...文中附送体验地址!

    并采取了最先进的数据安全措施以确保个人信息受到保护,各位小伙伴可以毫无顾虑地自由发言~Healing Journey支持中文沟通~体验地址:https://healingjourney.ai/ai-therapists2.可以量身定制陪伴伙伴的Janitor AIJanitor AI允许用户创建具有多种个性,不同外观的虚拟聊天机器人,除此之外还可以定制对话偏好,例如让AI为我说故事~如果不想自己制作,平台里还有很多其他小伙伴制作的AI聊天伙伴,可以根据自己的爱好自由选择~Janitor ~用户可以在麦岛广场中探索不同的虚拟角色,体验丰富多彩的对话和互动,广场上聚集了各种背景和性格的角色~感兴趣的小伙伴可以在手机应用商店搜索“麦芽岛”进行下载体验~小结:四款工具应用体验下来,小编最喜欢Janitor Janitor AI可以让我自己制定陪伴的对象个性、外貌、聊天内容! 最终还是回到了Janitor AI。但是小编在这里要重点敲黑板!AI陪伴是虚拟的,是抓不住的,各位小伙伴不要将自己的全部情感投入在这里,一定要做到“防沉迷”!

    58210编辑于 2024-10-28
  • 来自专栏Go技术干货

    Go 实现一个支持多种过期、淘汰机制的本地缓存的核心原理

    cache.gotype Cache[K comparable, V any] struct {cache ICache[K, *Item[V]]mutex sync.RWMutexjanitor *janitor 3、janitor *janitor:一个用于处理后台任务的结构体,例如定时清理过期数据,单独提出一个结构体是为了解耦。 : newJanitor(ctx, interval),}cache.janitor.run(cache.DeleteExpired)return cache}func NewLruCache[K comparable interval time.Duration) *Cache[K, V] {cache := &Cache[K, V]{cache: lru.NewCache[K, *Item[V]](cap),janitor : newJanitor(ctx, interval),}cache.janitor.run(cache.DeleteExpired)return cache}在这两个构造函数中,Cache 结构体的

    79332编辑于 2024-01-11
  • 来自专栏简言之

    Vulnhub靶机:DC-9

    -12-29 16:58:26 | scoots | Scooter | | 16 | Trump | Ilovepeepee | 2019-12-29 16:58:26 | janitor | Donald | | 17 | Morrison | Hawaii-Five-0 | 2019-12-29 16:58:28 | janitor2 | Scott | +- 、joeyt\Passw0rd、janitor\Ilovepeepee 依次登录3个用户,最终在用户janitor的目录下找到了隐藏文件 ssh chandlerb@192.168.0.105 UrAG0D ssh joeyt@192.168.0.105 Passw0rd ssh janitor@192.168.0.105 Ilovepeepee .secrets-for-putin隐藏文件中有一个可读文件

    76220编辑于 2022-12-29
  • 来自专栏数据大宇宙

    嫌 pandas 的方法不够简洁方便,那你一定是没有使用它的增强库

    pyjanitor 的 case_when 代码来自于官网 结果是对了,但是感觉 case when 方法里面的东西很乱呀 我来标注一下: 红色框是条件,绿色框是返回值 但是,我们不是一定要使用 janitor pandas 专栏,那么就一定会 numpy 的两个条件函数,这里我们只需要用 select 就可以轻易做到多条件分支 关于 np.select 详细讲解,可以查看专栏文章 那么,我们该如何自己写一个类似 janitor 利用切片的最后一个参数 step ,让其每隔2个位置取出元素,配合开始位置,就可以取出所有的奇数位置或偶数位置的元素 最后,我们不希望修改了源数据,可以使用 pandas 提供的方法做到: 有没有觉得 janitor

    75320编辑于 2022-04-19
  • 来自专栏萝卜要加油

    Go: runtime.SetFinalizer 详解

    runtime.SetFinalizer(C, stopJanitor) } return C } func runJanitor(c *cache, ci time.Duration) { j := &janitor { Interval: ci, stop: make(chanbool), } c.janitor = j go j.Run(c) } func stopJanitor(c *Cache) { c.janitor.stop <- true } func (j *janitor) Run(c *cache) { ticker :

    25300编辑于 2025-03-07
  • 来自专栏OneMoreThink的专栏

    攻防靶场(56):我敲门你要开哦 DC-9

    2.3 有效账户:本地账户 使用SQLi漏洞发现的17个帐号密码,尝试登录22/SSH服务,获得chandlerb、joeyt、janitor的用户权限。 3. 凭据访问 3.1 不安全的凭据:文件中的凭据 使用janitor的用户权限,在家目录中发现一个密码本。 使用密码本爆破/etc/passwd中,具有登录权限的用户,获得fredf用户权限。 4. 使用任意用户的权限(chandlerb、joeyt、janitor、fredf),执行linpeas程序,发现Sudo程序存在CVE-2021-3156提权漏洞。

    20100编辑于 2025-02-04
  • 来自专栏golang

    每日一库之 go-cache 单机缓存

    map[string]Item mu sync.RWMutex onEvicted func(string, interface{}) janitor *janitor } type Item struct { Object interface{} Expiration int64 } defaultExpiration 则表示永不过期 items是缓存项的 map, 键是 string, 值是 Item mu是互斥锁, 用于保护items的并发访问 onEvicted是删除缓存项时的回调函数, 当缓存项过期时, 会调用该函数 janitor

    39111编辑于 2025-07-04
  • 来自专栏优雅R

    生信爱好者周刊(第 33 期):科研与生活

    3、charpente - 无缝设计健壮的Shiny扩展[6] 4、plottify - 一个简单的matplotlib包装器,自动缩放字体大小、散点大小和行宽度,使其与图形大小成比例[7] 5、janitor - R中简单的数据清理工具[8] Janitor具有简单的检查和清理脏数据的功能。 高级R用户已经可以完成这里所涉及的一切,但是使用janitor他们可以更快地完成,并把他们的想法留给有趣的东西。 一个简单的matplotlib包装器,自动缩放字体大小、散点大小和行宽度,使其与图形大小成比例: https://github.com/andrewcharlesjones/plottify [8] janitor - R中简单的数据清理工具: https://github.com/sfirke/janitor [9] A profile of differential DNA methylation in sporadic

    68311编辑于 2022-06-27
  • 来自专栏网络安全自修室

    每周打靶 | Vulnhub-DC9靶机渗透实战

    chandlerb Bing joeyt Tribbiani rachelg Green rossg Geller monicag Geller phoebeb Buffay scoots McScoots janitor Trump janitor2 Morrison 但是,信息搜集未曾发现ssh服务端口打开,考虑可能是因为安装了端口敲门服务,端口敲门服务默认的配置文件路径为:/etc/knockd.conf 文件包含 Ilovepeepee Hawaii-Five-0 使用hydra工具对ssh服务进行爆破 hydra -L username.txt -P passwd.txt ssh://192.168.88.13 登录janitor /Ilovepeepee账户,发现一个隐藏文件 ssh janitor@192.168.88.132 将隐藏文件的密码放入passwd中,再次解密发现一个新账号fredf/B4-Tru3-001 提权

    68120编辑于 2023-09-02
  • 来自专栏R语言数据分析指南

    [GBD数据库挖掘] 15.地图展示不同年份间人均预期寿命差异

    MetBrewer) # install.packages("giscoR") library(giscoR) R包版本 导入数据 life_df <- read_csv('data.csv') %>% janitor change") %>% mutate(age = fct_inorder(age)) 获取地图数据 world <- giscoR::gisco_get_countries() %>% janitor

    62710编辑于 2023-12-14
  • 来自专栏程序猿的学习笔记

    <源码阅读>Go Cache

    sync.RWMutex //用来实现并发安全的锁 onEvicted func(string, interface{}) //可以自行设置的删除后置函数 janitor *janitor //定时器 } 这一块有一些比较好的经验可以学习: 结构简单,职责明确。 实际上runtime.SetFinalizer在一定程度上就扮演着“退出”的角色 淘汰过期缓存 func runJanitor(c *cache, ci time.Duration) { j := &janitor { Interval: ci, stop: make(chan bool),//停止信号 } c.janitor = j //设置cache 的定时器 go j.Run(c) } //定时器运行方法 func (j *janitor) Run(c *cache) { ticker := time.NewTicker(j.Interval) for { //此时goruntine

    2.3K80发布于 2021-04-27
  • 淡水鱼检测数据集VOC+YOLO格式2967张31类别

    ,"Gourami","Grass Carp","Green Spotted Puffer","Indian Carp","Indo-Pacific Tarpon","Jaguar Gapote","Janitor Green Spotted Puffer 框数 = 60 Indian Carp 框数 = 75 Indo-Pacific Tarpon 框数 = 86 Jaguar Gapote 框数 = 75 Janitor

    21600编辑于 2025-07-17
  • 各种鱼类检测数据集VOC+YOLO格式2967张31类别

    ,"Gourami","Grass Carp","Green Spotted Puffer","Indian Carp","Indo-Pacific Tarpon","Jaguar Gapote","Janitor Green Spotted Puffer 框数 = 60 Indian Carp 框数 = 75 Indo-Pacific Tarpon 框数 = 86 Jaguar Gapote 框数 = 75 Janitor

    30500编辑于 2025-07-16
  • 来自专栏vulnhub DC 1-9

    VulnHub DC-9 靶机渗透测试笔记

    login: joeyt password: Passw0rdlogin: janitor password: Ilovepeepee5.3 翻用户目录发现新密码都翻一下,在 janitor etc/knockd.conf → 获取敲门序列 7469→8475→9842 ↓knock 敲门 → SSH 22 端口开放 ↓hydra 第一轮爆破 → chandlerb/joeyt/janitorjanitor 目录发现新密码 → hydra 第二轮爆破 → fredf/B4-Tru3-001 ↓fredf sudo 分析 test.py → 可以 root 身份写入任意文件

    23010编辑于 2026-03-08
  • 来自专栏陈冠男的游戏人生

    【Vulnhub】DC-9

    janitor:Ilovepeepee joeyt:Passw0rd 登上 janitor 以后发现存在隐藏文件 把这些密码保存出来再来一遍 hydra 爆破 ?

    85951发布于 2020-06-09
领券