IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    minikube,kind 和 k3d 大比拼

    作为云原生生态的一个开发者,开发中经常碰到的一个需求是要频繁测试应用在 Kubernetes 环境下的运行状态,在 CI 中可能还要快速测试多个不同 Kubernetes 集群的配置,例如单点,高可用,双栈,多集群等等。因此能够低成本的在本地单机环境快速创建管理 Kubernetes 集群就成了一个刚需。本文将介绍几个常见的单机 Kubernetes 管理工具 minikube, kind 和 k3d 各自的特点、使用场景以及可能的坑。TL;DR如果你只关心快不快,那么 k3d 是最好的选择。如果你关心的是兼容性以及测试尽可能模拟真实场景,那么 minikube 是最稳妥的选择。kind 算是在这两个之间的一个平衡。技术路线比较minikubekindk3d启动性能比较测试方法测试结果总结技术路线比较这三者大体功能是类似的,都能够完成单机管理 Kubernetes 的任务,但是由于一些历史原因和技术选项导致了一些细节和使用场景的差异。minikubeminikube是 Kubernetes 社区最早的一款快速在本地创建 Kubernetes 的软件,也是很多老人第一次上手 Kubernetes 的工具。早期版本是通过在本机创建 VM 来模拟多节点集群,这个方案的好处是能够最大程度还原真实场景,一些操作系统级别的变化,例如不同 OS,不同内核模块都可以覆盖到。缺点就是资源消耗太大,而 ...继续阅读 (121)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    Golang 中预分配 slice 内存对性能的影响(续)

    基础性能测试整个 Slice Append复用 Slicesync.Poolbytebufferpool总结之前写了一篇Golang 中预分配 slice 内存对性能的影响,探讨了一下在 Slice 中预分配内存对性能的影响,之前考虑的场景比较简单,最近又做了一些其他测试,补充一下进一步的信息。包括整个 Slice append,sync.Pool 对性能的影响。基础性能测试最初的 BenchMark 代码,只考虑了 Slice 是否初始化分配空间的情况,具体的代码如下:12345678910111213141516171819202122232425262728293031packageprealloc_testimport("sync""testing")varlength =1024vartesttext =make([]byte, length, length)funcBenchmarkNoPreallocateByElement(b *testing.B){b.ResetTimer()fori :=0; i < b.N; i++ {// Don't preallocate our initial slicevarinit []byteforj :=0; j < length; j++ {init =append(init, test ...继续阅读 (127)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    不需要封装的 Overlay 容器网络

    为什么要用 Overlay 网络容器 Overlay 网络的开销来源如何解决 Overlay 封装的开销我的想法上周在看Antrea的会议纪要时,发现了一篇上海交大和 VMware 合作的论文 ——XMasq: Low-Overhead Container Overlay Network Based on eBPF。论文里介绍不少通过 eBPF 做容器网络性能优化的方法,不过最令人印象深刻的是他们最终无需给容器数据包封装额外的隧道头就可以实现 Overlay 网络,这里就简单介绍下作者们是如何做到这一点的。为什么要用 Overlay 网络Overlay 网络相比 Underlay 网络可以完全解耦应用层和底层物理网络,确保两者的灵活性。应用层不需要关心底层物理网络的路由规则等细节,物理网络也不需要针对容器 IP 进行专门路由配置。因此 Overlay 网络作为一种不调底层网络实现的容器组网技术,快速的在容器领域铺开了,主流的开源网络插件处于安装兼容的考虑,基本上都会将 Overlay 作为默认的安装选项。容器 Overlay 网络的开销来源但是在灵活性的便利下,带来的是性能方面的开销。根据论文里的测量,主流的 Overlay 网络插件,相比于 HOST 网络,吞吐量会下降 25%,CPU 消耗会增加 34%~44%,延迟会上升 45%~58%。当然,这里面的性能开销并不完全是 Ov ...继续阅读 (116)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    如何在本地用 CPU 跑大模型

    之前觉得大模型在本地运行是个不可能的事情,我甚至没有一块 GPU。但是尝试了一下 llama.cpp 发现几分钟就把 Meta 最新开源的 Llama 2 在 CPU 上运行起来了,速度和质量都还可以接受,很多想法突然就变得可行了。记录一下搭建的过程,希望对感兴趣的人有帮助。需要的配置尽管不需要 GPU 和加速卡,但是大模型对磁盘和内存还是有需求的,我运行的是 Llama 2 7B 的模型,经过了 GGML 处理,选择了 int8 的精度。这个模型跑起推理来大概需要 7G 的磁盘空间,运行起来也需要 7G 左右的内存,长期运行的话内存有 10G 会比较保险。CPU 的话 1 核也能跑,但给到 6 核会比较流畅。搭建步骤下载模型:1wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q8_0.bin这是一个处理过的模型,减小了体积和精度,专门为端侧运行做了优化,也不需要申请 Meta 的授权直接就能下载。下载并安装llama.cpp:123gitclonehttps://github.com/ggerganov/llama.cpp.gitcdllama.cppmake这是一个高性能的 Llama 推理工具集,可以方便的做 chat,api 等等服务。 ...继续阅读 (115)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    新的网络性能优化技术 —— BIG TCP

    在翻 Cilium Release Blog 时发现了一个叫 Big TCP 的内核技术,这个技术今年 2 月左右刚被合并到内核。看介绍是专门为 100Gbit 以上的高速网络设计的,在将吞吐量提升 50% 的时候还能大幅降低延迟,于是就去了解了一下这个技术。高速网络的性能的瓶颈和误区提到网络性能,很多人会很自然的联想到网卡的性能,但是做过网络性能优化的人会知道瓶颈更多其实是在 CPU 上。一般使用 iperf3、qperf 这类压测软件进行测试,尤其在小包情况下基本是无法打满网卡带宽的,这时候 CPU 会先于网卡到达瓶颈。因此做网络性能的优化通常做的都是 CPUU 相关的优化,不管是 DPDK,Offload,XDP 加速的原理要么是绕过内核栈,要么是卸载部分工作给网卡,本质上都是为了节省 CPU 资源,来处理更多的数据包。以 100G 的网卡为例,以太网的 MTU 是 1500 字节,那么在不做任何优化的情况下 CPU 想要跑满网卡,每秒要处理将近 800 万个数据包,如果每个数据包都要走完整的网络栈,现代 CPU 单核还远远处理不了这个量级的数据包。为了能让单核跑出尽可能好的网络性能,就需要内核和网卡驱动共同协作,将一部分工作 Offload 给网卡,这也就是 GRO(Generic Receive Offload) 和 TSO(TCP Segment Offload) 相关 ...继续阅读 (121)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    Golang 中预分配 slice 内存对性能的影响

    Slice 内存分配理论基础定量测量Lint 工具 prealloc总结在我代码 review 的过程中经常会关注代码里 slice 的初始化是否分配了预期的内存空间,也就是凡是var init []int64的我都会要求尽可能改成init := make([]int64, 0, length)格式。但是这个改进对性能究竟有多少影响并没有什么定量的概念,只是教条的去要求。这篇博客会介绍一下预分配内存提升性能的理论基础,定量测量,和自动化检测发现的工具。Slice 内存分配理论基础Golang Slice 扩容的代码在slice.go 下的 growslice。大体思路是在 Slice 容量小于 256 时每次扩容会创建一个容量翻倍的新 slice;当容量大于 256 后,每次扩容会创建一个容量为原先的 1.25 倍的新 slice。之后会将旧 slice 的数据复制到新的 slice,最终返回新的 slice。扩容的代码如下:123456789101112131415161718192021222324newcap := oldCapdoublecap := newcap + newcapifnewLen > doublecap {newcap = newLen}else{constthreshold =256ifoldCap < threshold ...继续阅读 (106)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    无需改动代码的性能优化方法 —— PGO

    PGO in GeneralPGO in Golang收集 Profile 信息编译优化PGO for Kernel总结Golang 在 1.20 引入了PGO(Profile-guided optimization)的优化,根据官方博客的介绍可以在不更改代码的情况下达到 2%-7% 的性能提升。在 1.21 的Release Note中,Golang 将该功能升级到 GA 并在自己的构建中开启了 PGO,将 Golang 自身编译器的性能提升了 2%-4%。PGO 本身是个编译器的优化方法,并不和特定语言相关,Golang 目前也只是很初步的应用了 PGO,这篇文章将会以 Golang 为例介绍 PGO 的工作原理,可能的优化方向和一个应用 PGO 优化 Linux Kernel 的例子。PGO in General通常我们认为静态编译型语言的运行性能要好于动态解释型的语言,但是随着JIT(Just In Time)技术的引入,动态语言性能有了大幅提升,因为 JIT 可以根据运行时的情况进行针对的强化。例如:热点代码编译成机器码函数内联分支预测循环展开类型推断内存分配优化寄存器优化JIT 通过一系列运行时的优化可以达到和编译型语言接近的性能,在部分情况下由于可以动态根据情况做一些编译期间无法确认的优化,甚至会有比编译型语言更好的性能。例如 Golang 中的函数内联是写死的规则稍 ...继续阅读 (110)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    我和耗子叔的回忆

    我和耗子叔的回忆初始酷壳和很多人一样,第一次接触耗子叔是通过 coolshell.cn 博客。当时印象最深,对我之后影响最大的应该是分享:我的READER订阅。当年尽管我已经是大三的计算机专业的学生,但是课本外的专业知识还是相当差劲,也不知道哪里才能获得一手的信息和资料。让我一个象牙塔里的学生,接触到工业界最先进的技术就是从这个列表开始的。这个 RSS 的列表陪伴我度过了很多年,很长时间我的计算机技术相关的信息都是依赖这个列表。亚马逊的擦肩而过几年后在我实习的时候,碰巧去了亚马逊中国耗子叔在的那个部门,不过当时耗子叔已经去阿里了,没能在亚马逊碰到。实习结束后我专门写了篇博客记录当时在亚马逊实习的经历,抱着蹭流量的心态我在微博发博客的时候 @ 了一下耗子叔。本来是抱着蹭到就算赚的心态,没想到耗子叔很快就转发了,当时博客流量就上来了,我还拿出去和同学们炫耀了一段。开始写博客的初衷也是受耗子叔博客的影响,这个博客几乎是我早些年工作没啥成就时,唯一能拿得出手的东西了。从阿里到 Docker第一份工作去了阿里,总算是和耗子叔到了一个公司,但是部门差的太远,没有什么业务的交叉,起初也就没什么交流。当时 Docker 开始崭露头角了,阿里内部各个部门都有一拨人都看到了这个技术的突破性,想在阿里内部推广这个技术,几个不同部门的人组了个群聊这些事,我和耗子叔凑巧也在这个群里。当时我还是个应届生,肯定 ...继续阅读 (114)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    2023 周报 #2:Github Action 优化和 ChatGPT

    Github Action 优化Kube-OVN 前段时间做了 E2E 测试的重构,增加了大量的测试,导致 Github Action 经常被占满,PR 经常好久才能合并,这周花时间和小伙伴优化了 Action 的执行时间,如果你也在 Github 上运行 Kubernetes 相关的 workflow 下面的优化方法可能会对你有帮助。根据代码变动选择运行的测试和构建。比如在Kube-OVN中NetworkPolicy兼容性测试花费时间较长,那就可以根据代码目录判断,如果变动代码和 NetworkPolicy 无关,这部分测试就不运行了。Github public repo 最大并发数是 20,如果 workflow 拆分的太细,超过 20 个并发,那么准备阶段的开销可能会大于并发节省的时间,需要在并发数量和每次任务的准备时间之间做权衡。Cache 的 restore 和 save 都需要花时间,1G 内容 restore 大概 45s,save 要 3min,要考虑流水线的情况选择使哪些使用 cache,哪些就不用了。kind起一个Kubernetes集群大概要 1m,k3d差不多 10s,我们的环境有些兼容性问题,如果没有兼容性问题 CI 测试可以优先使用k3d。Ginkgo有并发测试的选项,很多Kubernetes的测试需要等待状态就绪,CPU 消耗并不大,可以适度增加并发度 ...继续阅读 (131)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    烧钱工作法 —— 远程开发是怎样提升我的效率?

    这段时间为了解决本地开发环境资源和网络的问题尝试了下远程开发(IDE 前端在本地,代码后端再远端服务器的模式),实践了一段时间发现远程开发带来的意外好处是可以通过实时烧钱大幅提升任务的紧迫度和开发效率,这个带来的效率提升甚至比之前预想的能从计算资源和网络里抠出来的还多。分享一下这段时间的经验,希望对考虑远程开发的人有帮助。为什么要远程开发最开始考虑远程开发的动机主要有下面几个:我这边的本地开发和测试可能需要启动多个 Kubernetes 集群,对 CPU 和内存消耗都比较大,17 年的 MacBook Pro 启动和运行速度都比较慢。生活工作 App 在一个机器磁盘很容易莫秒奇妙的不够,尝试新项目下镜像经常磁盘不足,需要来回扣空间。网络问题,需要各种切代理,叠加 Docker 环境会变得更复杂。Mac 下的 Linux 开发还是存在工具和用法的不兼容,并不是那么平滑,很多时候还要起 Linux VM。换新 Mac 貌似只能解决部分 CPU 性能问题(存疑,因为 Docker 需要虚拟化,ARM 在没有特定加速指令下可能性能会更差),其他问题依然存在,而且新 Mac 实在是在抢钱。看了下 GCP 的 Spot 实例,可以按秒计费,算下来买电脑的钱购买好几年的实例了,而且理论上可以解决上面所有的问题。选择过程最早开始调研的是 Github 的 CodeSpaces,因为和 Github ...继续阅读 (109)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    2022 年终总结

    作为六年没有更新博客的僵尸博主,在看了Ce Gao连续九年的年终总结后 DNA 动了。收拾收拾博客,就有了这篇六年更的年度总结。在这里先祝不离不弃的各位过年好!晋升今年做了工作八年来第一次晋升答辩,甚至之前都没做过转正答辩,然后一下就干到在这个公司的天花板了,拿下了名义上的技术合伙人。加上来的比较早还可以自称是初创工程师(Founding Engineer),基本上把纯技术线能拿到的 Title 都收了。回想一下这个过程,其实运气占了很大的成分,并不是个常规的流程。由于来的比较早,当时也算国内第一批参与容器的人,吃了不少技术的红利,现在再看看当初一块讨论技术的小伙伴,只要还在坚持做这块的,基本都飞黄腾达了。所谓一个人的命运,当然要靠自我奋斗,但是也要考虑到历史的进程。尽管是走的技术线,但是这些年来纯技术的时间可能都不到一半。 反而是借着初创公司机制不完善和各个职位都缺人的机会,从市场、商务、售前、实施、售后的所有工作都接触了。甚至一直不善言谈的我,曾经是这个公司第二个售前,第一波去驻场的研发,以至于我有很长时间都是售前和驻场的面试官。我自己来看,单论技术能力和产品能力,拿这个 Title 其实还是有段距离,但是这种非常规的一条龙经历,可以让我跳出常规技术维度的考察。工作落到具体的工作层面,今年明显碰到了墙。一方面今年正式有了团队要管理,技术相关的工作需要分配到团队其他人,同时其他岗 ...继续阅读 (118)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    《西部世界》与弗洛伊德的精神分析

    这部神剧有太多可说的了,恰巧追剧的这段时间在看心理学导论的东西,就当回票友从心理学的角度分析一下。第一季中两个创始者为了让 host 获得自己的意识绞尽了脑汁,而在真实世界心理学家对人类意识的探索也存在很久了,最为大众知道名字的心理学家大概就是弗洛伊德了,他开创的精神分析理论也在这部剧中有着种种的体现。精神分析理论将人格分为三个层次:本我(id),自我(ego)和超我(supereog)。本我就是原生状态不受任何约束,只想吃喝玩乐贪污腐败,发生不正当关系,自我开心至上的状态,就是本本来来的自己。而超我是有着社会主义核心价值观,全心全意为人民服务,操守道德水准高到天际线的理想状态的自己。然而这两种状态是冲突的,所以真实情况下的自我,是不断在两者的矛盾冲突中调和的状态,今天贪污一下,明天为人民服务一下这个样子。而当本我和超我的矛盾冲突无法在自我这里得到调解的话,心理问题就出现了。对于 host 来说,本我是那个按着故事线固定行进的状态,超我就是那个觉醒后能够支配自己的状态,而本我就是处在这两者之间,一会儿觉得我好像想起来了什么,一会儿又回到 loop 中去了。而当他们实在想不透的时候就会出各种各样的故障,如剧中所说几年来越来越多的 host 觉醒了,但大部分都精神分裂被退休了。当本我和超我出现冲突时最常用的方法就是压抑一方,对人类来说一般是压抑本我的欲望,而对 host 来说则变成了认 ...继续阅读 (85)


    love 0
    Oilbeater
    发表于
    2024-05-24 09:13:20

    破译上帝的密码

    上一篇《上帝是个程序员》介绍了上帝为了防止人肉智能破解对基因的种种加密,然而这并不能阻止人肉智能破解的步伐,我们居然也取得了一些进展。我们先定一个小目标,比如实现星际旅行,最大的问题可能还不在于航天飞机,而是在于人的寿命。离我们最近的半人马座有 4 光年的距离,就算飞船达到了十分之一光速一个来回也是 80 年,而这个速度也已经是现阶段最快飞行器速度的将近两千倍了。所以星际旅行不能只靠航天飞船了,还要靠生物学家。看过《三体》的同学都知道,星际旅行冬眠下就可以了嘛,而这居然是有科学依据的。一些虫子正常的寿命只有 20 多天,但是当气候条件发生恶劣变化时它们会自动进入一种假死状态,停止一切的进食活动和新陈代谢,这种状态可以维持四五个月,等气候适宜的时候再恢复过来。这样从时间跨度上讲虫子的生命被延长廊五至六倍,对于人来说这就是四五百年的时间,五百年前那还是明王朝呢。虫子的基因量相对于人来说要少很多,培养起来也比较简单,我们用暴力破解的手段一段一段的敲除掉基因,看看什么时候虫子丧失冬眠的能力,也有机会找到控制冬眠的基因。当然从虫子到人还有很漫长的道路,不过科学家已经在做很多类似的实验,包括灵长类和小鼠身上都已经可以诱发冬眠来延长寿命的现象。当然冬眠的时候人也失去了行动能力,这样延长寿命好像也挺无聊的,除了星际旅行冬眠还有另一个用途。就像《三体》里罗辑大魔王被破壁者用定向基因病毒攻击,当时的医 ...继续阅读 (96)


    love 0
    admin
    发表于
    2024-05-24 08:03:04

    聊下缓存

    在当今的互联网应用中,缓存作为一种提高系统性能的关键技术,扮演着至关重要的角色。无论是日常浏览网页、使用 APP,还是企业级应用的后台处理,缓存的存在无处不在。那么,什么是缓存?我们应该如何有效地利用缓存来优化系统性能呢?什么是缓存?从本质上来看,缓存是将数据暂时存储在比原始数据源更快的存储介质中,以便快速访问。其主要目的是减少数据访问的延迟,提高系统的性能,从而提升用户体验。从一个 Web 请求的链路来看,主要有以下几种类型的缓存:浏览器缓存:浏览器本地的缓存,包括内存缓存和磁盘缓存。可以通过 HTTP 响应头控制缓存策略,如 Cache-Control、Expires 等。DNS 缓存:本地机器或 DNS 服务器上对域名解析结果的缓存,可以加快后续对同一域名的访问速度。CDN 缓存:CDN 的边缘节点上的缓存,可以让用户从距离最近的节点获取资源,减轻服务器压力,提高响应速度。Web 服务器缓存:如 Nginx、Apache 等 Web 服务器自带的缓存功能,或者专门的缓存服务器如Varnish等。对请求进行缓存,可减轻后端服务器的负载。应用层缓存:在应用程序中自己实现的缓存,如使用 Redis、Memcached 等内存型数据库对数据进行缓存,或者在代码中实现对特定数据的缓存。数据库缓存:数据库本身的查询缓存,如 MySQL 的Query Cache。会对 SELECT 语句及 ...继续阅读 (174)


    love 0
    admin
    发表于
    2024-05-24 08:03:04

    聊下缓存

    在当今的互联网应用中,缓存作为一种提高系统性能的关键技术,扮演着至关重要的角色。无论是日常浏览网页、使用 APP,还是企业级应用的后台处理,缓存的存在无处不在。那么,什么是缓存?我们应该如何有效地利用缓存来优化系统性能呢?什么是缓存?从本质上来看,缓存是将数据暂时存储在比原始数据源更快的存储介质中,以便快速访问。其主要目的是减少数据访问的延迟,提高系统的性能,从而提升用户体验。从一个 Web 请求的链路来看,主要有以下几种类型的缓存:浏览器缓存:浏览器本地的缓存,包括内存缓存和磁盘缓存。可以通过 HTTP 响应头控制缓存策略,如 Cache-Control、Expires 等。DNS 缓存:本地机器或 DNS 服务器上对域名解析结果的缓存,可以加快后续对同一域名的访问速度。CDN 缓存:CDN 的边缘节点上的缓存,可以让用户从距离最近的节点获取资源,减轻服务器压力,提高响应速度。Web 服务器缓存:如 Nginx、Apache 等 Web 服务器自带的缓存功能,或者专门的缓存服务器如Varnish等。对请求进行缓存,可减轻后端服务器的负载。应用层缓存:在应用程序中自己实现的缓存,如使用 Redis、Memcached 等内存型数据库对数据进行缓存,或者在代码中实现对特定数据的缓存。数据库缓存:数据库本身的查询缓存,如 MySQL 的Query Cache。会对 SELECT 语句及 ...继续阅读 (145)


    love 0
    xiaoz
    发表于
    2024-05-24 02:56:11

    天钡推出新款四盘位NAS主机WTR Pro:英特尔 N100,准系统 1399 元

    xiaoz之前购买了 2 台天钡迷你主机,所以一直有关注他们家的产品,最近发现天钡上架了 NAS 型迷你电脑主机 WTR Pro,其提供了 4 个便插式硬盘位,整机采用金属机身,配备双 2.5G 网口,无内存硬盘的准系统机型售价 1399 元。购买地址京东:https://u.jd.com/Uimb ...继续阅读 (177)


    love 0
    countmeon
    发表于
    2024-05-24 02:27:29

    office365和office2021有何区别

    Office 365和Office 2021的主要区别包括购买方式、使用方式、更新方式、支持多设备共同使用、免费移动应用、提供额外的存储网盘空间等方面。购买方式:Office 2021是一次性购买的,用户支付一次费用后即可永久使用。而Office 365是订阅服务,用户需要按月或年支付费用以继续使用。使用方式:Office 2021是桌面应用软件,需要安装到本地计算机上使用。Office 365则提供了离线使用和在线使用的选项,支持本地安装。更新方式:Office 2021在推出新版本后将停止更新,而Office 365支持新版本的持续更新,包括功能和修复bug。支持多设备共同使用:Office 365家庭版最多可以支持6台不同的设备使用,而Office 2021只能支持1个用户使用。免费移动应用:Office 365可以免费安装使用移动应用,而Office 2021在小于10.1英寸的平板电脑和手机上面能够获得基本编辑功能。提供额外的存储网盘空间:Office 365每人享有1TB的OneDrive云存储空间,而Office 2021的存储空间较小。综上所述,选择哪个版本主要取决于用户的需求,如是否需要持续更新、是否需要多设备共同使用、是否需要云存储等。如果用户对云端存储和使用人数没有特别要求,使用Office 2021可能更合算。 ...继续阅读 (178)


    love 0
    阮一峰
    发表于
    2024-05-24 01:33:46

    科技爱好者周刊(第 301 期):OpenAI 的图书馆工位

    这里记录每周值得分享的科技内容,周五发布。本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系(yifeng.ruan@gmail.com)。封面图新疆喀什的阿图什天门景区,爬山路线都是在悬崖上架设的栈道,非常壮观。(via)OpenAI 的图书馆工位OpenAI 是眼下最炙手可热、排名第一的 AI 公司。大家大概没见过,这家公司的总部。它的总部是旧金山市区的一栋三层小楼,原来是一家食品厂,后来改建为办公楼。这栋小楼很不起眼,外面也没有大幅的标识,你根本想不到,里面正在开发人类最先进的人工智能模型。那么,楼里什么样?《纽约时报》最近公开了一组照片,披露楼里有一个很漂亮的图书馆。藏书都是 OpenAI 员工推荐的,还装饰了科学家的照片。这个图书馆可不是只有一间屋子,而是有两层,面积相当大。最特别的是,图书馆里面有很多自习桌,就像大学的自习室一样。员工可以在里面读书、休息,也可以一整天在这里办公,相当于工位。图书馆工位有很多好处。首先,就是安静,可以集中注意力,全力投入工作,思考一些困难的问题。这对 OpenAI 那样开创性的公司非常重要。其次,图书馆的气氛比较放松,不压抑,工作时精神不容易疲倦,甚至还有一些漫游知识海洋的趣味,可能激发意想不到的灵感。我不由联想到了,国内互联网公司的工位。通常是一整层写字楼,改造成开放式空间,大家挤在一起办公,整层往往有几百个 ...继续阅读 (176)


    love 0
    JiaoYuan\'s blog
    发表于
    2024-05-24 00:00:00

    把私生活放进 Telegram 里

    其实很早就听说过 Telegram,但是一直没去用,一来是这玩意儿登录方面的问题稍多,二来是没有那个需求。最近试用了一下,实在是带给我很大的惊喜,于是将自己的一些活动都放在这里了。 ...继续阅读 (83)


    love 0
    Lenciel
    发表于
    2024-05-23 22:56:27

    夜归

    我每天打伞,因为自己很漂亮也很白净。我还经常搬家,这会儿正在欧洲的一个小镇,之前在北美,再之前在日本或者云南之类的吧。每个地方待的不久,但都收获过一点浪漫。又不太多,没有多到让我可以安定下来。最终,我会在一个可以看到海的地方,因为一个人再也不走了。最终,我开了一家书店,或者一个客栈,也可以是在海里把自己淹死了。 ...继续阅读 (187)


    love 0
    自行 (zzxworld@163.com)
    发表于
    2024-05-23 21:56:10

    OpenCart 的伪静态 SEO URL 配置指南

    OpenCart 是一个基于 PHP 开发的开源商城软件,可以用来快速搭建一个满足需要的购物网站。在之前我浅尝辄止的安装体验过 OpenCart。这次因为业务需要,准备深入了解一下这个软件。本文要介绍的是今天在 OpenCart 里面尝试配置 SEO URL 伪静态的一些经验心得。 ...继续阅读 (173)


    love 0
    王叨叨
    发表于
    2024-05-23 20:31:00

    夏天到了

    时间过的太快,距离上次更新已经过去了半年。草稿箱里面的文章也有几篇写了没有发,最早的竟然能够追到2019年,谁知道之后就有了疫情呢……有时候在想,人这一生追求什么?什么才是有意义的?时代变化太快,一夜之间各种事物都在发生改变,可能之前追求的突然变的没有了意义。最近身边的两个同事,生活也是不太如意,暂且称A和C吧(猜猜谁是B),A同事呢,为人老实,没自己的底线和原则,结果就是媳妇让怎么做就怎么做,有时候连最基本的孝道都没有。C同事呢,有自己的做事底线,结果呢因为谁来管钱也是和媳妇经常干架……两个同事,两个极端。对于A同事,我经常说,一定要要自己的底线,守住自己的底线,但是收效甚微。对于同事C呢,我经常说一定要好好沟通,过日子分不了那么清,各自退让一点就能避免。你们觉得这两个同事该怎么处理家务呢?其实生活中,有一部分就和我身边这两个同事一样,两个极端。为什么离婚率这么高,其实大家心里都比较清楚。到底两个人过日子追求的是什么?最近听到的一句话比较有道理,命运:命 + 运。命是定数,命中有时终须有,命中无时莫强求,人从一出生,其实就命中注定了一些东西。举个简单例子,路边的小草,长在麦田里面就必须被拔掉,长在足球场中的草坪就有人特别打理,小草能决定长在哪里吗?就和人投胎一样,有人出生就在别人的终点,有的人一辈子可能都没办法达到……运是变数,时来运转就是这个道理,举个例子有人买虚拟币实现了财富 ...继续阅读 (154)


    love 0
    wireless_com
    发表于
    2024-05-23 20:24:24

    云计算行业进阶指南

    【引】 多年前,我跟亚孟相识于百度,当时他在百度云,我在那时的智能硬件事业部。在一个微信群里各自张狂,就约在百度大厦的咖啡馆当面互吐,于是成了朋友。亚孟是个难得的具有产品思维和商业意识的技术人,对云计算有着独到而深刻的见解和实践能力。而且,他是一个趣人,说话犀利又透着幽默,在他的公众号 “云算计”系列文章中可以看到他的很多本色表演。最近, 他将多年云计算相关的经验笔耕成册,即《云计算行业进阶指南》... ...继续阅读 (142)


    love 0
    Jayden\'s site
    发表于
    2024-05-23 15:54:03

    PAC(Proxy Auto-Config)

    该渲染由 marked 生成,可能存在排版问题,最佳体验请前往:https://xxu.do/posts/geek/PAC有一个事情困扰了我很久:我是一个深度的 macOS 用户,得易于 macOS 上优良的软件,例如 surge for mac,我能够很轻易的解决几乎所有网络问题。但这个事情在 Windows 和 Linux 上就显得比较复杂,但使用 Windows 或 Linux 依然是必要的。我不希望给每个系统都部署上一个软件,都写上一份配置文件。因此,最好的做法就是将 surge for mac 作为代理服务器,对其他设备的网络进行接管。我身处学校大内网,无法将 mac 的 ip 设置为静态,因此我需要不断更新 mac 的 ip 地址以维系这个方案。在 ChatGPT 的帮助下,写了一段脚本,自动将获取 mac 的 ip 地址并生成 PAC(Proxy Auto-Config) 配置文件,上传到我的网盘中,其他设备只需填写好配置文件的地址即可。将下面这段代码保存为generate_pac.sh,这个脚本会在同一目录下生成proxy.pac文件,并利用 alist 的 webdav 特性上传至云盘当中。#!/bin/zsh cd /Users/jayden/proxy_pac # 保证环境变量的一致以成功获取到 ip 地址。 PATH=/usr/local/bin:/usr ...继续阅读 (155)


    love 0
    est
    发表于
    2024-05-23 15:16:00

    正在加速崩塌的是「中文」,不是互联网

    看到一个说法《何加盐|中文互联网正在加速崩塌》,文章说几乎所有在那个年代曾经红火过的中文网站,如网易、搜狐、校园BBS、西祠胡同、凯迪猫眼、天涯论坛、校内网(人人网)、新浪博客、百度贴吧、以及大量的个人网站等,在一定年份之前的信息都已经完全消失不见了,甚至大部分网站是所有年份的信息都消失了。唯一例外的是新浪网,还能找到一些十几年前的信息,但也是极少数的寥寥几条,其他99.9999%以上的内容,全都消失了。为什么会出现这种情况呢?我猜想,主要原因可能是两个:一是经济原因。网站的存在,需要服务器、需要带宽、需要机房、需要人员运维……二是监管原因。无独有偶,刷到一个帖子:2023-8-14 11:00梁博:Common Crawl中文数据提取出来了,做了去黄等处理,发现简体中文压缩数据只有6TB,解压后30TB左右,繁体压缩数据6TB。中文数据到2019年冲到一个最大值,之后就回落了,不知道2020年具体发生了什么事情。。中文网页数据还是有点凋零。是不是有些网站不维护了?图更大的问题是所谓科技巨头们自建高墙,把用户和内容视为自家资源,不支持互联网链接,公然且无耻地未被互联网开放互联的精神。你在 twitter 里面可以引用,加任意链接,信息自由流动。在微信、抖音、小红书里面试试?twitter,或者说 𝕏,也开始建墙了。比如 nitter.net 就不允许使用了。walled garde ...继续阅读 (185)


    love 0
    zhuxy
    发表于
    2024-05-23 14:57:54

    TypeScript – as const

    在 TypeScript 中,as const是一种类型断言的用法,它用于告诉编译器将某个位置的类型视为一个常量(const)类型。这在 TypeScript 的类型守卫和类型细化中非常有用,尤其是在处理字面量类型或确保某个位置的值不会被修改时。基本用法当你使用as const时,你告诉 TypeScript 编译器,某个位置的值是常量,不应该被重新赋值。const config = { apiEndpoint: "https://api.example.com", timeout: 5000, } as const; // 下面的代码将导致 TypeScript 编译错误,因为根据 as const,config 被视为只读的 // config.apiEndpoint = "https://new-api.example.com";在这个例子中,config对象被断言为as const,这意味着它的属性apiEndpoint和timeout被推断为只读属性。在类型守卫中使用as const在类型守卫中特别有用,因为它可以帮助确保某个位置的值是字面量类型。function isStringLiteral(value: any): value is string { return typeof value === "string" && value !== __VUE ...继续阅读 (144)


    love 0
    admin
    发表于
    2024-05-23 11:11:17

    Sysbench使用不同的数据分布(–rand-type)模型压测MySQL

    概述不同的sysbench参数可能对测试结果有一定的影响,如果不注意的话,可能会影响我们对于测试结果的分析,甚至可能会得出错误的测试结论。本文较为详细的介绍sysbench中的--rand-type参数。–rand-type 的含义--rand-type是sysbench中控制随机数据分布的参数,主要的选项包括了uniform,gaussian,special,pareto,在最新的版本,新增了zipfian。具体的各个随机分布类似介绍如下:uniform是均匀分布gaussian是正态分布,也叫高斯分布(常见的标准正态分布是其特殊形式)pareto是帕累托分布,“二八分布”是其特殊形态。该分布在经济学中使用较多,最为常见的例子是认为20%的人拥有80%的财富,即财富在人群中的分布情况。zipfian分布与该分布有一些类似。special这个是一个奇怪的分布,并不是某个标准分布。应该是Sysbench作者自己定义的某个分布,该分布下取值几乎完全落在中间值附近。关于这些分布的讨论可以参考Sysbench在GitHub Issue上的讨论(Use the uniform distribution by default @GitHub Issue),也可以参考Percona相关的讨论文章(Sysbench and the Random Distribution Effect@ ...继续阅读 (232)


    love 0
    程序猿DD
    发表于
    2024-05-23 10:16:40

    Spring Boot中的 6 种API请求参数读取方式

    使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉大家,一起互相学习一下吧~@RequestParam这是最最最最最最常用的一个了吧,用来加载URL中?之后的参数。比如:这个请求/user?name=didispace就可以如下面这样,使用@RequestParam来加载URL中的name参数@GetMapping("/user") @ResponseBody() public User findUserByName(@RequestParam("name") String name){ return userRepo.findByName(name); }@PathVariable这是RESTful风格API中常用的注解,用来加载URL路径中的参数比如:这个请求/user/1就可以如下面这样,使用@PathVariable来加载URL中的id参数@GetMapping("/user/{id}") @ResponseBody() public User findUserById(@PathVariable("id") Strin ...继续阅读 (138)


    love 0
    C1G
    发表于
    2024-05-23 09:22:13

    k8s_安装rocky9_二进制安装1.29.2

    查看环境查看系统版本cat /etc/redhat-releaseRocky Linux release 9.3 (Blue Onyx)查看内核版本uname -aLinux localhost.localdomain 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 8 17:36:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux查看ssh及openssl 版本ssh -VOpenSSH_8.7p1, OpenSSL 3.0.7 1 Nov 2022不升级python版本python -VPython 3.9.18glibc版本ldd –versionldd (GNU libc) 2.34主机名设定,各个主机上设定使用hostnamectl设定hostnamectl set-hostname dev-k8s-master01.localhostnamectl set-hostname dev-k8s-node01.localhostnamectl set-hostname dev-k8s-node02.local使用nmcli设定nmcli general hostname dev-k8s-master01.local查看环境信息hostnamectl status ...继续阅读 (164)


    love 0
    德育处主任
    发表于
    2024-05-23 08:45:35

    『SD』局部重绘

    点赞 + 关注 + 收藏 = 学会了本文简介SD 的局部重绘是图生图里很常用的功能。它能够局部修改图片或者删除图片里多余的功能。比如你想给自己的照片换个衣服(额,你懂的),比如你想把照片里的路人P走。这个功能可以送走一批初级美工。本文介绍SD的局部重绘功能到底怎么用。界面讲解要使用局部重绘,首先要找到它在哪。它是在图生图(img2img) - 生成(Generation) - 局部重绘(Inpaint)里。要使用它,首先你得上传一张图片,它才能在你的图片基础上进行局部重绘。这里我上传了一张美女图片。在这个区域中,右上角有4个按钮,第一行的按钮从左到右分别是:重做(返回上一步)、清除(删掉所有涂抹的区域)、移除图片。第二行的画笔按钮是用来绘制蒙版的。继续往下滚动页面,这里介绍几个局部重绘中常用的配置项。重绘蒙版内容(Inpaint masked):修改画笔涂抹区域内的内容。重绘非蒙版内容(Inpaint not masked):修改涂抹区域以外的内容。例如,如果只涂抹了人脸区域,选择此选项后重新生成图片,这也是一种保持人物一致性的方法。蒙版边缘模糊度(Mask blur):作用于我们所绘制蒙版的边缘羽化值。如果设为0,则蒙版边缘将直接硬接,可能导致效果不佳。但这个数值也不能设定过高,因为过高的羽化值会侵蚀蒙版区域内的内容,使得蒙版区域的内容无法完全保留其原有的特征。填充(fill): ...继续阅读 (156)

上一页 331/4404 下一页
沪ICP备19023445号-2号
友情链接