Debian 爱好者社区 为您找到相关结果 428

Linux下多线程程序为什么消耗大量虚拟内存

) 查看内存情况,如下: 请注意65404这一行,种种迹象表明,这个再加上它上面那一行(在这里是132)就是增加的那个64M)。后来增加thread的数量,就会有新增thread数量相应的65404的内存块。 刨根问底 经过一番google和代码查看。于知道了原来是glibc的malloc在这里捣鬼。glibc 版本大于2.11的都会有这个问题:在Redhat 的官方文档上: Red Hat Enterprise Linux 6 features version 2.11 of glibc, providing many features and enhancements, including… An enhanced dynamic memory allocation (malloc...阅读全文

博文 2015-01-28 10:35:39 debian.cn

成功运作一个开源项目的15个要点

所需工具的期望,与项目团队联系的渠道以及针对潜在贡献者的其他重要信息。抓取所有这些信息,使其尽可能容易被发现。在项目源代码存储库的根目录中包含一个贡献指南是一个很好的做法(通过DVCS,潜在的贡献者将找到存储库副本的副本;存储库中的贡献指南可以让潜在的贡献者轻松找对致力于项目的途径)。 7、确保项目代码始可构建 项目代码包含构建脚本和说明。使其尽可能容易地构建成功和测试项目代码。 8、与用户社区联系 用户社区是使用开源项目产品的一群人。用户社区很少直接向项目代码贡献任何东西,但却往往会提出很多问题。确保这些问题得到回答。健康的用户社区可以为采用者社区提供信息。 9、与采用者社区联系 开源项目取得成功的一个明显迹象是,其他组织开始在他们自己的产品中使用或构建扩展你的开源项目。此社区更有意愿反...阅读全文

博文 2017-11-08 09:58:28 debian.cn

谷歌元老施密特隐退:传奇落幕 新篇开启

前谷歌 CEO ,现谷歌母公司 Alphabet 董事会执行主席埃里克·施密特(Eric Schmidt)将卸任,这位一手将谷歌从一个两百名员工的小公司拉扯成世界科技巨头的功臣于“退休”了。可能有些朋友就问了,他是谷歌创始人吗?真有这么高的地位?可能真正了解施密特和谷歌的人并不多,或许今天我们应该来聊聊这家和我们熟悉又陌生的公司。 施密特并非谷歌创始人 首先,施密特是谷歌创始人吗?他并不是,谷歌的创始人只有两个:谢尔盖·布林(Sergey Brin)和拉里·佩奇(Larry Page),但是当我们提起施密特时,总会说“没有他就没有谷歌”。如此高的评价也能够体现他对谷歌的重要性了,你看即使库克非常给力,也不会有人说没有库克就没有苹果,大家都知道苹果的灵魂人物只有乔布斯。 言归正传,施密特作...阅读全文

博文 2017-12-24 09:18:44 debian.cn

分布式任务调度平台 XXL

版本,如:CodeMirror、Echarts、Jquery 等; 13、项目依赖升级 groovy 至较新稳定版本; pom 清理; 14、子任务失败重试重试逻辑优化,子任务失败时将会按照其预设的失败重试次数主动进行重试 XXL-JOB 特性 1、简单:支持通过 Web 页面对任务进行 CRUD 操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、启动 /停止任务,以及止运行中任务,即时生效; 3、调度中心 HA(中心式):调度采用中心式设计,“ 调度中心” 基于集群 Quartz 实现并支持集群部署,可保证调度中心 HA ; 4、执行器 HA(分布式):任务分布式执行,任务” 执行器” 支持集群部署,可保证任务执行 HA ; 5、注册中心: 执行器会周...阅读全文

博文 2018-11-05 21:47:15 JOB 2.0.0 发布

什么是线程安全,以及并发需要知道的几个概念

= new Thread(); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(i); } } 两个线程 t1 和 t2 同时开启,执行run方法,在我们的预想中,如果是线程安全的话,那么main的执行结果应该是20,但是因为 i 是共享数据,而程序没有对 i 的操作做同步的处理,最运行的结果并不是20,所以这种情况就不是线程安全的情况。 解决的办法也比较简单,可以利用synchronized关键字来修饰方法或代码块,这部分的知识也是并发编程中非常重要的一块,当然,本文就不探究了,之后单独写篇文章出来细说。...阅读全文

博文 2018-12-31 20:44:06 debian.cn

Golang 中的 channel 通道详解

channel通道golang的并发模型是序列通信处理CSP(communicating sequential process)——使用通信来共享内存 ,避免goroutine因竞争共享内存频繁加锁产生的性能问题。基本数据结构golang中提供了一个特殊的类型channel实现goroutine之间的通信。channel类似于队列,先进先出。channel数据结构源码在src/runtime/chan.go下。chan 使用 hchan 表示,它的传参与赋值始都是指针形式,每个 hchan 对象代表着一个 chan。hchan 中包含一个缓冲区 buf,它表示已经发送但是还未被接收的数据缓存。buf 的大小由创建 chan 时的参数来决定。qcount 表示当前缓冲区中有效数据的总量...阅读全文

开源社区的运作模式:Debian Vs. Ubuntu

择更多,因此被官方定义了的参与者也更多,但Debian具有明显更多的开发者人数。虽然所有工作都是贡献者来完成,但最关键的权利还是只有少数人才能获得。Ubuntu贡献者中,Canonical员工居多,63名核心开发人员中有36人使用 @canonical.com邮件后缀注册launchpad帐号,他们放在Ubuntu发行版上的时间比Debian成员更多,如果能比较一下他们的工时数将非常有意思。 Debian已经意识到成员结构的缺点,就是否增设专门的打包人员也讨论过多次了,但遗憾的是每次都只是讨论讨论就结束了,始没有拿出一个解决方案。 可能的演变 Ubuntu方面,底层结构变化最近已经结束,他们近期不再打算做出进一步变化,但他们计划让每个团队可以更好地控制与自身相关的包上传权限,这样可以让每个...阅读全文

博文 2021-01-28 17:50:09 debian.cn

技术部门的 SEO 规范

遵守的SEO规范,开发网站或修改网站时,即使不与SEO部门协同,也至少不能违反SEO规范,以防产生灾难性的后果。以前为客户写过一些技术部门SEO规范,现在简单整理更新一下,分享给大家,希望对其它公司也有帮助。 技术部门SEO规范 本SEO规范适用于公司所有新建网站及对现有网站的更新、改版。本SEO规范不是建议,是强制性规定。编程、前、运维等技术相关部门务必遵守。 对本SEO规范中的内容有疑义时,请与SEO部门沟通,不可自行解释有疑义部分。 域名及服务器相关 只解析公司因业务需要决定开通的子域名。未开通子域名一律不解析。不要使用泛解析(以通配符*代替子域名)。不能有两个或两个以上域名显示同样网站内容(无论以哪种方式实现,如解析至相同根目录、上传同样文件和数据库)。用于测试的子域名使用...阅读全文

博文 2019-03-28 13:58:51 debian.cn

五款流行开源的 HIDS 系统简单介绍

文件大小限制。4. SamhainSamhain是具有中央管理功能的开源HIDS,可帮助您检查文件完整性,监视日志文件并检测隐藏的进程。这种多平台解决方案可在POSIX系统(Unix,Linux,Cygwin / Windows )上运行。Samhain的安装非常简单,您只需要从官方网页下载tar.gz文件并将其安装在系统上即可。在此之前,您需要确保MySQL和Apache在您的服务器上运行。Samhain项目带有大量详细的文档。该HIDS还通过TCP / IP通信提供集中和加密的监视功能。它与其他先前讨论过的开源HIDS的不同之处在于其隐身功能- 使其免受入侵者的侵害- 这要归功于其开发人员编写的偏执代码。而Samhain 社区 很好,比其他HIDS难安装。Windows的客户要求安装...阅读全文

博文 2023-01-26 11:07:43 joseph

Golang Context 探究

server 来解释, Go 服务每次都是启动一个新的 goroutine 来处理每一个请求,在这个请求的操作往往会启动新 goroutine 访问数据库或其他服务,如果此时客户断开了连接,后续的消耗资源的操作就完全没必要了。所以我们需要一个在 goroutine 之间同步取消信号,截止时间的机制或者特定请求数据。而 Context 被设计出来就是帮我们实现这个目标。 1 2 3 |-----------| |-----------| |-----------| | goroutine |-------> | goroutine |-------> | goroutine | |-----------| |-----------| |-----------| 默认 Context context 包...阅读全文

博文 2021-02-25 09:27:27 lxkaka

Kubernetes 使用 PodPreset 注入信息到 Pods_哎_小羊的博客

,例如 Pod Yaml 容器挂载配置跟 PodPreset 容器挂载配置为同一路径时,会报错提示冲突。 最后要提一下注意的问题: 目前 PodPreset 的预设功能这块还在演进中,不过已经能大大简化了相关的管理工作,将这些公用配置从开发者手中分离出来,变成系统管理配置。PodPreset 是 Namespace 级别的对象,其作用范围只能是同一个命名空间下容器。目前为 v1alpha1 版本,还不成熟,例如当我们对已创建的 PodPreset 执行非常少量的修改时,重新 apply 或者 replace 时,服务并没有更新过来(亲测会有问题,只能删除重建),大家可以自己尝试下。 参考资料 PodPreset DocEnable PodPreset...阅读全文

博文 2021-01-27 18:47:00 CSDN博客

深入理解Golang之context

++ { messages <- i } time.Sleep(5 * time.Second) close(done) time.Sleep(1 * time.Second) fmt.Println("main process exit!") } 上述例子中定义了一个buffer为0的channel done, 子协程运行着定时任务。如果主协程需要在某个时刻发送消息通知子协程中断任务退出,那么就可以让子协程监听这个done channel,一旦主协程关闭done channel,那么子协程就可以推出了,这样就实现了主协程通知子协程的需求。这很好,但是这也是有限的。如果我们可以在简单的通知上附加传递额外的信息来控制取消:为什么取消,或者有一个它必须要完成的最期限,更或者有多个取消选项,我们需要根据额外的信息来判断...阅读全文

博文 2021-01-27 09:05:27 知乎

中国开源人访谈系列之:清风博主

关的行业,不是没想过,但已经熬不了夜了,还是多给年轻人一些机会嘛(好吧,其实是水平实在有限,啥也干不了)。 5.您使用开源软件对您的学生有没有产生影响呢? 答:对于中学生,基本没影响。一,我不是信息技术老师,只是个教地理的;二,即便是现在的中学信息技术教学,在现行的IT教育模式下,也没办法施加影响。 6.电脑高手在学校,大家日常工作是怎么看您的呢?会叫您“修电脑”吗? 答:硬件维修不至于找我,还有信息技术老师呢!不过,装个系统是常有的事,或者经常被问一些软件方面的问题,你懂的,交流始不在一个频道,不胜其烦。再者,有一次犯了强迫症,把老婆电脑的重要数据给清理掉,被下了不许碰她电脑的禁令,就更没有耐心管别人的事了。所以,强烈建议:喜欢清理电脑且有强迫症的同学(这样的人会很多吧),千万不要乱动老...阅读全文

博文 2021-01-28 17:50:13 debian.cn

一位五年工作经验架构师的感悟

title 就很牛 B 的,人外有人,天外有天,做好自己。五年陈留给自己的话:不忘初心,方得始,未来已来,星辰大海。路就在前方,继续前行。 每个人的成长之路也不一样,我来回想下自己的。 不为过去蹉跎,珍惜当下 很多在菜鸟的时候,肯定或多或少,有过对身边的牛人,报以羡慕的眼光。 当看着别人职位比你高, 当看着别人比你工资领的高, 当看到别人年纪轻轻,就已经是牛逼哄哄。 你会不会有羡慕嫉妒恨的想法: 要是我当年读书的时候,不打游戏,少吃点红瓶、蓝瓶,少放几个水元素,少放几个暴风之锤(寒冰王座)。那么我肯定可以学到更多。 要是我当年不睡懒觉,起早贪黑,去学**,那么我肯定是也会学到很多。 要是。。。 理由从来不嫌多,我自己肯定也有这些想法,平心而论,我现在也有这些想法。但是负能量不能盖过正能量。 不要为...阅读全文

博文 2021-01-28 17:50:31 debian.cn

三个技巧 大幅减少 Docker 镜像体积

个。 镜像的层就像 Git 的提交(commit)一样。Docker 的层用于保存镜像的上一版本和当前版本之间的差异。就像 Git 的提交一样,如果你与其他存储库或镜像共享它们,就会很方便。 实际上,当你向注册表请求镜像时,只是下载你尚未拥有的层。这是一种非常高效地共享镜像的方式。但额外的层并不是没有代价的。层仍然会占用空间,你拥有的层越多,最的镜像就越大。Git 存储库在这方面也是类似的,存储库的大小随着层数的增加而增加,因为 Git 必须保存提交之间的所有变更。 过去,将多个 RUN 语句组合在一行命令中或许是一种很好的做法,就像上面的第一个例子那样,但在现在看来,这样做并不妥。 1. 通过 Docker 多阶段构建将多个层压缩为一个 当 Git 存储库变大时,你可以选择将历史提交记录...阅读全文

博文 2018-09-06 10:50:29 debian.cn

Gitlab CI 配置文件 .gitlab

/$CI_COMMIT_REF_NAME url: https://$CI_ENVIRONMENT_SLUG.example.com/ 当$CI_COMMIT_REF_NAME 被Runner设置为environment variable时,deply as review appjob将会被指定部署到动态创建revuew/$CI_COMMIT_REF_NAME的环境中。$CI_ENVIRONMENT_SLUG变量是基于环境名称的,最组合成完整的URLs。在这种情况下,如果deploy as review appjob是运行在名称为pow的分支下,那么可以通过URLhttps"//review-pw.example.com/来访问这个环境。 这当然意味着托管应用程序的底层服务器已经正确配置。 常见的做法是为分支创建动态环境,并讲...阅读全文

博文 2018-12-12 21:01:19 ci.yaml 详解(上)

Kubernetes源码探疑:Pod IP泄露排查及解决方法

建一个Pod。这个Pod的生命周期中,理想情况下,需要经历以下重要事件: 1. Pod被成功调度到某个工作节点,节点上的Kubelet通过Watch APIServer感知到创建Pod事件,开始创建Pod流程; 2. kubelet为Pod创建Sandbox容器,用于创建Pod网络名称空间和调用CNI插件初始化Pod网络,Sandbox容器启动后,会触发第一次kubelet PLEG(Pod Life Event Generator)事件。 3. 主容器创建并启动,触发第二次PLEG事件。 4. 主容器date命令运行结束,容器止,触发第三次PLEG事件。 5. kubelet杀死Pod中残余的Sandbox容器。 6. Sandbox容器被杀死,触发第四次PLEG事件。 其中3和4由于时...阅读全文

kubelet 中垃圾回收机制的设计与实现

{ runtime: runtime, policy: policy, sourcesReadyProvider: sourcesReadyProvider, }, nil } func (cgc *realContainerGC) GarbageCollect() error { return cgc.runtime.GarbageCollect(cgc.policy, cgc.sourcesReadyProvider.AllReady(), false) }可以看到,ContainerGC 中的 GarbageCollect 最是调用 runtime 中的 GarbageCollect 方法,runtime 即 kubeGenericRuntimeManager...阅读全文

博文 2021-02-05 17:48:22 知乎

“Debian 章程有毒” - OSCHINA

些代表有权力在考虑技术标准和共识的情况下做出他们认为最佳的决定。 至于 Debian 社区的项目层面,DPL 更是无权过问,每个项目的开发者都对项目有百分百的决定权。比如,个别开发者几乎可以完全控制他们维护的软件包;开发人员之间的技术分歧很大的时候,将由项目技术委员会处理;发布管理者与 FTP 主人有权最决定项目实际发布的内容,以及何时发布;项目秘书负责确保遵循必要的程序;政策团队处理项目的大部分总体设计。 其次,DPL 是可以随时进行更换的,因为有一般决议(General Resolution)这样的通道,开发者们可以重新选举另外的 DPL、撤销 DPL 或代表的决定、修改基本文件并做出其他有约束力的决定。(如下图所示) 那么,DPL 到底是干什么的呢?主要分为两个方面: 在对外职能中...阅读全文

博文 2021-12-06 13:55:33 中文开源技术交流社区

Debian 相比 Ubuntu 有哪些不同之处

Stable和Update。然而,用户需要把注意力主要放在三大类软件库上。 Debian系统具有的优点之一是,你可以在下面这两个极之间作一选择:极其稳定,但缺点是版本较老;或者非常先进,但缺点是软件不大稳定,技术出现的重大变化可能让不知情用户的系统崩溃。这里的选择取决于你是升级核心组件(比如Linux内核),还是升级灾难发生时不影响其他东西的自带代码库的独立式实用工具。 恰恰相反,Ubuntu的程序包来自Debian测试版或不稳定版。Ubuntu的软件库按照其他标准来加以组织,而不是由测试状态来加以组织。Main含有Canonical支持的软件,以及Ubuntu社区支持的Universe软件。Restricted含有专有驱动程序,其中Multiverse存放有版权或其他法律限制的软件。 另一个主要的...阅读全文

博文 2017-12-22 23:41:07 debian.cn

Git 介绍与使用详解

将develop中的代码合并到maser,保证master稳定 5.打标签(tag) 通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照 git tag v1.0.0 //创建轻量标签v1.0.0 git tag -a v1.0.0 -m ’my version 1.0.0‘ //创建附注标签 git tag //列出标签 git push --tags //推到远 git tag -d 1.0.0 //删除本地tag 注意:tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支: git...阅读全文

博文 2017-02-25 09:00:27 程序员

如何写好技术文档 — 来自十多年的文档经验总结

预设了很多背景知识。 一般使用文档都是有开发者写的,他们都非常了解这个工具的相关的知识,所以习惯性的会认为,啊 这个知识点很简单 用户也肯定会吧,实际上用户不一定会。这本质上就是一种认知偏差,这种现象在跨团队协作 尤其是多协作的时候也非常明显。 这类型的文档写作中,要求写作者尽可能站在用户的视角上思考,极力避免出现和用户的认知偏差,力争每个步骤做到明确无歧义,每两个步骤之间做到紧密衔接。 ## 概念性文档 ## 当参考文档无法解释清楚某些东西的时候,就需要概念性文档了,比如某个API的具体实现原理。其主要是为了扩充参考文档,而不是替代参考文档。有时候这和参考文档会有些内容重复,但主要还是为了更深层次的说明某些问题、解释清楚某个概念。 概念性文档也是所有文档中写作最难的,也是被阅读最少的,所...阅读全文

博文 2021-07-30 16:15:13 joseph

如何读懂火焰图?+ 实例讲解程序性能优化 - xuxh120

。 $ perf record -F 99 -p `pgrep -n node` -g -- sleep 30 详细的操作可以看这篇文章。 七、浏览器的火焰图 Chrome 浏览器可以生成页面脚本的火焰图,用来进行 CPU 分析。 打开开发者工具,切换到 Performance 面板。然后,点击"录制"按钮,开始记录数据。这时,可以在页面进行各种操作,然后停止"录制"。 这时,开发者工具会显示一个时间轴。它的下方就是火焰图。 浏览器的火焰图与标准火焰图有两点差异:它是倒置的(即调用栈最顶的函数在最下方);x 轴是时间轴,而不是抽样次数。 八、Async-profiler介绍 Async-profiler是一个对系统性能影响很少的Java采样分析器,它的实现是基于HotSpot特有的API,通过这些特有的...阅读全文

博文 2022-03-11 10:05:09 博客园

DPDK Graph Pipeline 框架简介与实现原理

DPDK 全称为 Data Plane Development Kit ,是近年来在高速网络通信行业中炙手可热的一种网络报文处理加速框架。DPDK 从十年前诞生直至发展到今天已经可以支持业界主流的高网卡以及各类加速硬件设备,同时也支持主流的各个CPU 体系结构(可以运行于 X86, Arm, Power 等平台)。同时也可以运行于 Linux/FreeBsd/Windows 等主流操作系统之上。DPDK因为其优异的性能指标被广泛的应用于网关/负载均衡/SDN/虚拟交换的各个场景。 本文主要介绍 DPDK 中的 libgraph 设计思想以及实现,libgraph 的设计思想源自于开源项目 Vector Packet Processor(VPP)。VPP 中的向量包处理优化方案是...阅读全文

博文 2023-02-09 07:13:55 掘金

Debian 向左:或将迎来根本性改革 - OSCHINA

有两个: 1、技术委员会。技术委员会有权对技术相关的政策做出决定,在最极的情况下,如果开发者的行为被判定为对发行版具有很大的破坏性,那么委员会可以推翻 Debian 开发者的决定。 但是,技术委员会的决策能力权威在过去的一些争论中受到了损害,比如委员会被个人开发者控诉不公平。 可能,委员会在操作中的确存在不透明的地方,然而 Debian 社区中过于鲜明的个体性,或许也难逃其究。正如 Stapelberg 所言,Debian 的一些维护者出于个人喜好拒绝合作,维护者给予的个人自由度太高对 Debian 构成了严重影响。 2、一般决议流程(general-resolution process)。也就是投票,项目成员可以通过投票来改变或推翻技术委员会(或其他人)的决定、制定新的政策、或者修改章程...阅读全文

博文 2021-12-06 13:55:01 中文开源技术交流社区

深入了解Docker背后的namespace技术

时候,我们往往不能预想到最结果全貌。不论怎样,我们就把 CLONE_NEWNS添加到clone_flags变量中,结果就是, int clone_flags = CLONE_NEWNS | SIGCHLD;,再来编译mount.c并运行同样的命令。 > cp skeleton.c mount.c > gcc -o mount mount.c > ./mount mount 这次没有任何变化,为何?因为运行在新的mount namespace中的进程,在底层系统下仍然拥有一个/proc视图。结果就是新的进程继承了底层挂载点的视图。我们有一些方法来阻止出现这样的结果,比如说,使用 pivot_root,将在后续的博客中详细介绍。 然而,有一种方法,我们可以尝试在新的mount...阅读全文

博文 2015-05-17 10:03:00 debian.cn

六大算法之三:动态规划【转载】

)确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。所以如果确定了决策,状态转移方程也就可写出。但事实上常常是反过来做,根据相邻两个阶段的状态之间的关系来确定决策方法和状态转移方程。 (4)寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的止条件或边界条件。 一般,只要解决问题的阶段、状态和状态转移决策确定了,就可以写出状态转移方程(包括边界条件)。 实际应用中可以按以下几个简化的步骤进行设计: (1)分析最优解的性质,并刻画其结构特征。 (2)递归的定义最优解。 (3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值 (4)根据计算最优值时得到的信息,构造问题的最优解 算法实现的说明 动态规划的主要难点在...阅读全文

博文 2021-07-31 07:18:53 CSDN博客