Java 注解(Annotation)详解
本篇文章讲述Java中注解的相关知识。从Java中内置的注解,到自定义注解,最后再介绍如何使用注解。...阅读全文
本篇文章讲述Java中注解的相关知识。从Java中内置的注解,到自定义注解,最后再介绍如何使用注解。...阅读全文
PHP7 的发布废弃了部分特性,一些程序或者插件当前不能很好的运行在 PHP7 上,因此如果服务器上能同时运行多个 PHP 的版本,就可以很好的解决过渡期的兼容性问题。在前面两篇文章中,我们介绍了如何在 Debian Stretch 中安装使用 PHP5,以及如何在Debian环境安装配置PHP 7.2。看完这两篇文章,细心的同学就会发现,两个版本的PHP共存,是很好实现的。 这里我们以同时安装 PHP-7.2 和 PHP-5.6 两个版本为例,说明Debian环境中如何配置实现Nginx中的PHP多版本共存。 一、根据安装配置PHP7.2教程安装 PHP-7.2 和 PHP-5.6: #先安装 PHP7.2 apt install -y php7.2-fpm php7.2-mysql...阅读全文
去年 5 月曾经写了一篇文章介绍了下 [Lex Fridman 大佬的日常生活安排](https://zhuanlan.zhihu.com/p/371254789) ,后续我也根据他的方法对自己的日常生活做了一系列规范和改进。这一年整体实行下来,效果还是非常显著的,本文的最后会对我的一些实践以及借助的工具做一些分享。...阅读全文
早在 Ubuntu 诞生之前,作为完全由自有软件组成的类 UNIX 操作系统 Debian 凭借着惊人的软件数量、高度集成的软件包、良好的安全等特性成为 Linux 领域的佼佼者。不过如今看来,Debian 的流行度开始大大减弱。 日前,维护 Debian 包近 10 年的开发者 Michael Stapelberg 发文表示,要在维护的 Debian 包中删除自己的姓名,并让这些包自生自灭,彻底放手 Debian,而这究竟是何原因使得 Debian 惨遭嫌弃? 作者 | Michael Stapelberg 译者 | 弯月 责编 | 屠敏 出品 | CSDN(ID:CSDNNews) 以下为译文: 这篇文章我写得十分艰难,一来是感情上的纠结,二来是我没有时间。因此,在阅读本文时请注意,我...阅读全文
Debian是使用非常广泛的系统,本篇文章第一部分讲述如何在Debian 8 (Jessie) 下面安装 Docker 环境,第二部分介绍了如何彻底的清理 Debian 8 上的 Docker 环境。 Debian 8 使用了3.16的内核,已经满足了docker运行的要求。但是因为安全方面的原因,docker.io 包并没有放在debian的stable源里面,而是放在了backports 源里面。为什么从jessie源里面移除docker.io包,简而言之,是因为go语言包版本的问题。 Debian backports的介绍和使用可以参考本篇文章,或者官方站点的介绍。 安装Docker包之前,先设置安装源。 这里我们使用了Docker官方提供的Debian安装源。配置方法如下。新建一个...阅读全文
PureFTPd 是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License)。其可以在多种类Unix操作系统中编译运行,包括Linux、OpenBSD、FreeBSD、Solaris、Darwin等。PureFTPd 还有Android移植版本。 本篇文章,我们介绍如何在 Debian 系统中,安装配置 pure-ftpd。 首选在系统中安装 pure-ftpd:sudo apt-get install pure-ftpd 1. 在系统里增加一个不能登录的用户及用户组,用于映射ftp虚拟用户 sudo groupadd ftpgroup sudo useradd -g ftpgroup -d /usr/sbin/nologin ftpuser 说明: ftpuser...阅读全文
deb解包封包工具 08-21 此软件用于解包封包deb包 win下解压deb文件的插件 03-03 How to install DEB plugin: 1. Unzip the deb.wcx to the Total Commander directory 2. In Total Command ubuntu下deb的解压方法 feigeswjtu的专栏 12-25 1万+ 承接上一篇文章中的第二步,解压ubuntu下的deb文件,还是网上搜索吧,http://blog.csdn.net/monkey_d_meng/article/details/6034268这篇文章将的很详细,但是对菜鸟来说还是有点高深,只是说解压deb的方法,没办法了,自己man dpkg查看吧,结果找到了,没...阅读全文
Vultr是一家性价比非常高的VPS提供商,多达15个数据库中心可以选择,并且全部使用SSD硬盘、KVM架构。网上有很多与DigitalOcean、Linode对比的文章,这篇文章主要是分享一下Vultr日本节点的使用感受。 之前看到很多文章对洛杉矶和日本节点进行了测试,不过最近从个人测试来看,电信到Vultr洛杉矶节点目前已经绕路一大圈,丢包也是惨不忍睹,估计是电信又在调整的原因,不知后期是否能恢复正常。 Vultr日本节点以前是限制200G流量,不过现在流量已经增加至400G/月,如果只是安心放网站是完全足够的,最便宜的配置只需要5$/月,1CPU、768MB内存、15GB存储、1000M共享带宽,性价比是非常不错的。 性价比虽不错,那对国内环境来说网络情况又如何,下面是不同运营商的...阅读全文
机系统。 但与此同时,Stapelberg 也逐渐发现并认识到了 Debian 在许多方面的不足,他发现 Debian 整个开发评估流程都非常迟钝。举例来说,补丁的评估没有截止日期,有时候他会收到通知说几年前递交的补丁现在合并了。Debian 的一些维护者出于个人喜好拒绝合作,维护者给予的个人自由度太高对 Debian 构成了严重影响。Debian bug 跟踪器 debbugs 源自 1994 年,只有 Debian 和 GNU 项目使用。 Stapelberg 抱怨了 Debian 糟糕的开发流程,对此感到十分不满,还表示对 Debian 开发流程的沮丧程度最终超过了其忍受的阈值。为此,他撰写了这篇文章,并希望自己的文章能激励 Debian 做出改变,继而改进开发者参与维护的体验。...阅读全文
在本篇文章中,我们将介绍如何在 Debian 和其衍生版上,配置系统自动安装更新,并通过邮件通知系统管理员,每次升级的变更内容。本文中提到的多数命令,由于是系统层面的配置,需要用 root 来执行。 在配置系统更新前,我们需要安装这两个安装包,安装命令如下: # apt update && aptitude install unattended-upgrades apt-listchanges -y unattended-upgrades 是一个可以让系统保持自动更新的包。这些更新包含了安全更新和 Bugfix 等。启用 unattended-upgrades 后,我们还需要知道每次改动的内容,apt-listchanges 解决了这个问题,它将会邮件通知我们升级过程中发生的改变。 依赖包...阅读全文
统升级的过程。接下来,可以检查一下系统的版本信息了; [root@debian /usr]# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster Debian 10 Buster 的主要变化,可以参考发布的这篇文章。...阅读全文
sql查询出来的结果 {component="node",device=":/var/lib/docker/nfs",fstype="nfs",hostname="xxx",instance="xxx",instance_ip="xxx",job="job:monitor",mountpoint="/var/lib/docker/volumes/volume-nfs/_data",node_type="controller",system="QHC-CORE"} 9.978290691634598 确实有点差异,同事说df计算的使用率更严谨,但具体怎么算的也不清楚,同时看到df -h的结果size并不等于used+avail之和,于是就在网上查询相关的文章,看到了这篇文章谁吃了你的硬盘空间?(1...阅读全文
本站放出了Linode各个机房的测试结果,但是可能很多国内用户对Linode还是不是很熟悉,这里打算写一篇文章给想要入手Linode VPS的朋友提供一个参考,其实过程很简单,唯一麻烦的是,需要有一张VISA或者MASTERCARD的信用卡,因为Linode默认不支持PayPal付款,只支持信用卡付款。 Linode官网:www.linode.com 首先,我们通过上面哪个链接打开Linode官网,打开后页面如下: 页面上有三个输入框,分别是输入邮箱,用户名和密码,我们按照要求输入之后,来到一个提示页面: 这里提示我们已经往我们邮箱发送了一封邮件,我们打开邮箱,能看到有一封邮件,如图: 用填写注册信息的浏览器打开邮件里面的验证链接,来到这个界面: 这是说欢迎我们,内容可以不用管,点击其中的...阅读全文
] ... Environment=CADDYPATH=/etc/ssl/caddy + Environment=CLOUDFLARE_EMAIL=xxx + Environment=CLOUDFLARE_API_KEY=xxx ... 写完配置后输入 sudo systemctl start caddy.service 启动 Caddy。输入 journalctl --boot -u caddy.service 可以查看日志。 启用 QUIC 关于 QUIC 的介绍,可以看一下这篇文章,一句话概况呢就是减少 TLS 握手次数,加快网站速度。 修改 /etc/systemd/system/caddy.service ,在 ExecStart=/usr/local/bin/caddy -log stdout -agree...阅读全文
': [], 'user': '1', 'base': '1', 'dicexport': '0'})" | python3 manage.py shell 初始化权限 2.6 复制网页的静态文件 cp -rf Yearning/webpage/dist/* $NGINX_HOME/html/ 2.7 修改并启动nginx 2.8 启动django(注意在src目录) python3 manage.py runserver 0.0.0.0:8000 2.9 修改阿里云的安全组策略(解决不能用公网IP访问的问题,请一定注意增加80和8000两个端口,否则还是登录不了),参考CSDN这篇文章,至此用公网ip访问可出现如下界面,说明安装成功: 初始用户见#2.5,登录后如下图所示(如果登录不了,注意看#2.9是否增加了...阅读全文
在这篇文章里,我将在 VMWare 里面虚拟四台 Debian 虚拟机,一个做master,三个slave。这四台主机的 hostname 分别是 master、slave1、slave2、slave3。下面的 JDK 和 Hadoop 安装配置操作都是使用普通用户 hadoop 来执行,并非 root。 集群环境准备 1. 静态网络的配置 编辑/etc/network/interfaces文件,注释自动获取IP,并添加下面内容 # static IP address auto ens33 iface ens33 inet static address 192.168.20.101 netmask 255.255.255.0 gateway 192.168.20.2 dns...阅读全文
遇到问题,当然应该大胆提问!但绝对不是随便截个图丢给其他人,等待解决方案。原文请见 提问的智慧 (How To Ask Questions The Smart Way) 。这篇文章对于社区提问给出了很多建议,现作要点精简如下。请你做到完成了 RTFM (Read The Fucking Manual) 和 STFW (Search The Fucking Web) 两个步骤。通常,用这两句之一回答你的人会给你一份包含你需要内容的手册或者一个网址,而且他们打这些字的时候也正在读着。这些答复意味着回答者认为你需要的信息非常容易获得;你自己去搜索这些信息比灌给你,能让你学到更多。按发生时间先后列出问题症状问题发生前的一系列操作,往往就是对找出问题最有帮助的线索。因此,你的说明里应该包含你的操作步...阅读全文
本文翻译自 Wasm Labs @ VMware OCTO 的 blog: WebAssembly: Docker without container,已获得授权这是 Wasm Labs 在 2022 年 12 月 15 日在冬季 Docker Community All Hands 7 的关于 Docker+WebAssembly 的演讲的文字版。作者:Asen Alexandrov,Wasm Labs 工程师文中的我们均指作者或 Wasm Labs。由于文章内容翔实、篇幅较长我们将分成上下两篇分享,上篇将注重在概念阐释,如 Wasm 是什么,Wasm 与 Docker 的关系是什么。下篇文章将更具实践性,将以 PHP 为例带领大家实践 Docker + Wasm。最近,Docker 宣...阅读全文
本文翻译自 Wasm Labs @ VMware OCTO 的 blog: WebAssembly: Docker without container。这是 Wasm Labs 在 2022 年 12 月 15 日在冬季 Docker Community All Hands 7 的关于 Docker+WebAssembly 的演讲的文字版。作者:Asen Alexandrov,Wasm Labs 工程师。文中的我们均指作者或 Wasm Labs。本篇文章将更具实践性,将以 PHP 为例带领大家实践 Docker + Wasm。上篇文章我们了解了服务端 Wasm 为什么有着重要的作用、什么是 WasmEdge 以及如何让解释型语言编写的程序在 Wasm 里运行,这篇文章,我们将通过动手示例了...阅读全文
Facebook 高速发展的 2007 年到 2016 年,他们一天部署 3 次代码,cherry-pick 集齐成千上万个 commit;现在使用类似持续交付的方法,每个 commit 能自动部署到 production。公司里有很多员工、很多用户的好处:新代码让公司所有员工先用上,因为员工数足够多,能很快发现问题;然后让 2% 的访问量用上新代码,最后慢慢增加到 100% 的访问量。 不久前有篇关于缩短 Facebook 发布流程的文章,阐述了将代码投入生产的灵活方法。这篇文章着重讲述了他们在一年之内如何从“ cherry-picking ”升级到“ push-from-master ”策略。早些时候, Facebook 也分享了他们部署过程的细节。作者 Chuck Rossi 是...阅读全文
现在,Web开发公司和开发人员可以选择多种技术栈来构建Web应用程序。早期网络发展,不同的技术被用于前端和后端开发。但是,随着Node.js的发布,布局发生了变化,因为它允许开发人员使用 JavaScript 编写后端代码。这最终催生了MEAN(MongoDB + Express +AngularJS + NodeJS )堆栈 web 开发框架,从前端到后端甚至是数据库(MongoDB -JSON)都使用 JavaScript。在 Node.js 之前,Web 开发通常是在 PHP 的帮助下完成的,因为它很容易与 HTML 集成,帮助开发人员立即构建动态网站。在这篇文章中,我们将比较 Node.js 和 PHP,看哪一个最适合当前的行业需求。 PHP 和 Node.js 的基本区别在于...阅读全文
在以前,很多从其他语言转过来 Go 语言的同学会问到,或是踩到一个坑。就是以为 Go 语言所打包的二进制文件中会包含配置文件的联同编译和打包。 结果往往一把二进制文件挪来挪去,就无法把应用程序运行起来了。因为无法读取到静态文件的资源。 无法将静态资源编译打包进二进制文件的话,通常会有两种解决方法: 第一种是识别这类静态资源,是否需要跟着程序走。第二种就是考虑将其打包进二进制文件中。 第二种情况的话,Go 以前是不支持的,大家就会去借助各种花式的开源库,例如:go-bindata/go-bindata 来实现。 但从在 Go1.16 起,Go 语言自身正式支持了该项特性,今天我们将通过这篇文章快速了解和学习这项特性。 基本使用 演示代码: import _ "embed...阅读全文
在前几天,Go1.16rc1 抢先发布了。结合常规的 28 发布规律,其将会在 2021.02 月份左右发布正式版本。 这次 Go1.16 也带来了一些新特性或变更。那么作为一个 Gopher,想必不能错过这次的更新。 今天这篇文章将会带大家了解一下 Go1.16 的几个需要关注的特性。 废弃 io/ioutil Go 官方认为 io/ioutil 这个包的定义不明确且难以理解。所以 Russ Cox 在 2020.10.17 提出了废弃 io/ioutil 的提案。 大致变更如下: Discard => io.DiscardNopCloser => io.NopCloserReadAll => io.ReadAllReadDir => os.ReadDirReadFile...阅读全文
这篇文章我会尽可能详细地说明如何快速安装纯净的Debian新系统,需要懂一点vi编辑器的使用方法。 如果是新手,没用过 vim 编辑器也不用担心,我会尽量详细地说明使用方法。 首先在Debian官网上下载网络安装CD或者完整DVD镜像,DVD镜像只需DVD-1即可。如果你的网络环境不错,推荐下载 netinst 包,通过网络安装 Debian 系统。 下载好镜像后做成U盘启动盘,从U盘启动开机。在引导界面选择Graphical install(图形化安装),进入安装过程,如图: 选择语言界面,选择中文吧, 提示虽然是好心,但是安装过程中我就见到一处乱码还就是下面这个图上,直接选是,下一步。 区域选择,选择中国。 主机名,自己随便填吧。 域名可不填,直接下一步。 设置root密码,自己设定好...阅读全文
对象,并且包含新的证书。 总结 本文主要讲解了如何利用 Cert Manager 在 Apache APISIX Ingress Controller 中进行证书的创建和管理。想了解更多关于 Apache APISIX Ingress 的介绍与内容,可参考本篇文章 或者参与 Apache APISIX Ingress 项目每两周举行的线上讨论,分享当下项目进度、最佳实践及设计思路等多个话题,可查看具体 issue 了解更多。...阅读全文
很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习。由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 可是逐渐的,我发现原来不只是小白们有这个问题,就连美国大公司的很多资深工程师,其实也没搞明白。 今天我有动力了,想来统一回答一下这个搁置已久的“初级问题”。类似的话题貌似曾经写过,然而现在我想把它重新写一遍。因为在跟很多人交流之后,我对自己头脑中的(未转化为语言的)想法,有了更精准的表达。 如果你存在以下的种种困惑,那么这篇文章也许会对你有所帮助: 你是编程初学者,不知道该选择什么程序语言来入门。 你是资深的程序员或者团队领导,对新出现的种种语言感到困惑,不知道该“投资”哪种语言。 你的团队为使用哪种程序语言争...阅读全文
今天我们发布了Docker CE 17.06,它包含了诸多新特性、优化和bug修复。我们在四月份的DockeCon上公布了Moby项目,Docker CE 17.06是第一个完全构建在它基础上的Docker版本。变更日志中能看到完整的更新列表,我们来看看它的一些新特性。 我们也为这篇文章制作了一个视频版本。 多阶段构建 17.06 CE最大的特性是它的多阶段构建(multi-stage builds),它最初在四月的DockerCon被公布,现在已经达到了稳定版本。多阶段构建能从一个Dockerfile中构建出更加简洁、体积更小的Docker镜像。 多阶段构建通过构建过渡镜像并产生输出。这样就能在一个过渡镜像中编译代码,在最终的镜像中只使用它的输出。例如,Java开发者通常使用Apache...阅读全文
1确保提案所做的任何变更都可以帮助到尽可能多的 Go 开发者(使他们编写的代码更健壮、正确性更高等),条件2则保证了变更将给使用者带来的影响降到最低。 至于条件3,如果提案不能满足该条件,它将不会被实现。即便这项提案能够解决一个很重要的问题,思路也很好,但在没有实现方案的情况下,它将会被拒绝,并需要重新起草。 下一步 在这篇文章发布时,Go 开发团队表示已经执行提案评估流程的第一步,并开始了流程的第二步,关于具体的提案可点此进行查看。 对于 Go 开发团队已经明确并通过的提案,将会继续实现(即评估流程的第3步)。开发团队表示希望在下一个发布周期的第一天(暂定于2019年2月1日)完成这些提案变更的实现,所以这次可能会在较早的时间开始进行,以留出两个月的反馈时间(2018年12月至2019年1...阅读全文
= new Thread(); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(i); } } 两个线程 t1 和 t2 同时开启,执行run方法,在我们的预想中,如果是线程安全的话,那么main的执行结果应该是20,但是因为 i 是共享数据,而程序没有对 i 的操作做同步的处理,最终运行的结果并不是20,所以这种情况就不是线程安全的情况。 解决的办法也比较简单,可以利用synchronized关键字来修饰方法或代码块,这部分的知识也是并发编程中非常重要的一块,当然,本文就不探究了,之后单独写篇文章出来细说。...阅读全文
态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。 二、提前部署 Mysql Nacos 需要提前部署 Mysql,目前支持 5.7 及 8.0 版本。关于如何部署 Mysql 可以参考之前本人写的一篇文章 Kubernetes 部署 Mysql 数据库。 三、导入 SQL 相关数据 等数据库创建完成后,还需要导入 SQL 文件来创建它的表结构和一些基础数据。操作如下,我们进入 Mysql 客户端,执行 source 命令导入 SQL 文件。 $ mysql -uroot -p123456 mysql> source /data/nacos.sql SQL 地址:Nacos 数据 Sql 文件地址 你也可以通过 Navicat...阅读全文
,主进程和工作进程需要进程交互。交互依赖于 Socket 实现的管道来实现。 Master-Worker 交互 这条管道与普通的管道不同,它是由主进程指向工作进程的单向管道,包含主进程向工作进程发出的指令,工作进程 ID 等;同时主进程与外界通过信号通信;每个子进程具备接收信号,并处理相应的事件的能力。 worker-worker 交互 这种交互是和 Master-Worker 交互是基本一致的,但是会通过主进程。工作进程之间是相互隔离的,所以当工作进程 W1 需要向工作进程 W2 发指令时,首先找到 W2 的进程 ID,然后将正确的指令写入指向 W2 的通道。W2 收到信号采取相应的措施。 五. 总结 通过这篇文章,我们对 Nginx 服务器的整体架构有了一个整体的认识。包括其模块化的设计...阅读全文
-E以及近期火出科技圈的ChatGPT。 无论是个人才智和财富,还是远见和野心,Sam Altman显然是标杆性的“成功人士”。 在离任YC总裁的那一年,曾与无数创业者和技术人才交流过的Sam Altman发表了一篇博客,总结了他眼中获得成功所要具备的13个特质,如果你渴求成功,或者至少希望自己变得优秀,这篇博客对你的个人成长将有所启发。如果你恰好在职业生涯早期就看过,无疑是一种幸运。 不同于热衷分享虚头巴脑的鸡汤式成功学的成功人士,Sam Altman给出的这篇“成功学”建议具有可执行性,最显著且可贵的一个特点是——不装。 注意,Sam Altman这篇文章的原标题是“how to be successful(如何取得成功)”,但这13条特质并不是一个人必然取得成功的充分或必要条件。 要知道...阅读全文
提问在学习中占据着重要的位置,很多人对知识好奇,却收效甚少,原因他们是尚未掌握正确提问的方法,因此,我尝试修改《提问的智慧》,发布出来。原作者是Eric S. Raymond,这篇文章在黑客界拥有很高的地位,指引无数黑客前进,希望对你有用。 为何要做一个修改注释版? 试图做出一个容易阅读,方便理解,与时俱进,可以执行的提问执行方案。 原翻译为2010年,新版2013年,时隔2年有余,原作有变; 尊重原作的复制及引用协议[1]; 原翻译很好,检查中发现有些语句不顺,语意不准,或者已不符合现在语言规范,参照王刚老师的版本进行修改; 附上自己的看法和注解,更加适合现在阅读使用。 每当有人来向我提问,我可以将他指引到这篇文章,可以减少很多的不必要的麻烦。 【本章注释】 [1]复制协议中注明了应用该...阅读全文
MirroredStrategy、TPUStrategy 和 MultiworkerMirroredStrategy。它还实现了一个异步的 ParameterServerStrategy。你可以在这篇文章《[使用 TensorFlow 进行分布式训练](https://www.tensorflow.org/guide/distributed_training)》(*Distributed training with TensorFlow***)中阅读更多关于可用的 TensorFlow 分布策略以及如何在你的 TensorFlow 代码中实现这些策略。 Kubeflow 随附了[TF Operator](https://github.com/kubeflow/tf-operator)和一个自定义的[TFJob...阅读全文
API:POST/PUT http://localhost:
在前一篇文章中,我们介绍了 Debian Stretch 环境下,Kubernetes 集群安装的准备工作。本文我们将继续介绍 k8s集群 的安装配置工作。 第4步 - 设置主节点 在本节中,您将设置主节点。 但是,在创建任何Playbooks之前,值得介绍一些概念,例如Pod和Pod网络插件 ,因为您的群集将同时包含这两个概念。 pod是运行一个或多个容器的原子单元。 这些容器共享资源,例如文件卷和网络接口。 Pod是Kubernetes中的基本调度单元:pod中的所有容器都保证在调度pod的同一节点上运行。 每个pod都有自己的IP地址,一个节点上的pod应该能够使用pod的IP访问另一个节点上的pod。 单个节点上的容器可以通过本地接口轻松进行通信。 然而,pod之间的通信更复杂,并...阅读全文
the light of Joey's resignation, as I'm sure many of us have been. Joey 的离职让我不住去想 Debian 的管理出了什么问题,我相信我们其中许多人也一样。 当时,Russ 已经在 Debian 技术委员会里待了6个年头,但他没能熬过2014年那场论战。他表示,委员会几乎每一个决策都受到巨大的压力,他感到没有精力来处理这些事情,他也觉得自己在技术委员会的工作对整个项目没什么帮助。 2019年,Debian 开发者 Michael Stapelberg 在离职 Debian 时留下一篇长文,里面细数了 Debian 内部的各种问题,引起各方热议。 在写下这篇文章的几个星期前,Michael 在苏黎世 Debian 聚会上遇见了一...阅读全文
。 $ perf record -F 99 -p `pgrep -n node` -g -- sleep 30 详细的操作可以看这篇文章。 七、浏览器的火焰图 Chrome 浏览器可以生成页面脚本的火焰图,用来进行 CPU 分析。 打开开发者工具,切换到 Performance 面板。然后,点击"录制"按钮,开始记录数据。这时,可以在页面进行各种操作,然后停止"录制"。 这时,开发者工具会显示一个时间轴。它的下方就是火焰图。 浏览器的火焰图与标准火焰图有两点差异:它是倒置的(即调用栈最顶端的函数在最下方);x 轴是时间轴,而不是抽样次数。 八、Async-profiler介绍 Async-profiler是一个对系统性能影响很少的Java采样分析器,它的实现是基于HotSpot特有的API,通过这些特有的...阅读全文
本文翻译自 Jack Roper 的文章 Kubernetes Best Practice。译者:文章中作者从应用程序开发、治理和集群配置三个方面给出了一些 Kubernetes 的最佳实践,同时翻译过程中也加入了我过往的一些使用经验。有误的地方,也欢迎大家指正。在这篇文章中,我将介绍一些使用 Kubernetes (K8s) 时的最佳实践。作为最流行的容器编排系统,K8s 是现代云工程师掌握的事实标准。众所周知,不管使用还是维护 K8s 复杂的系统,因此很好地掌握它应该做什么和不应该做什么,并知道什么是可能的,将是一个好的开局。这些建议包含 3 大类中的常见问题,即应用程序开发、治理和集群配置。最佳实践目录使用命名空间使用就绪和存活探针(译者注:还有启动探针)使用自动缩放使用资源请求和约...阅读全文
context是Go并发编程中常用到一种编程模式。本文将从为什么需要context,深入了解context的实现原理,以了解如何使用context。 作者:Turling_hu 来源: 掘金 原文链接: https://juejin.im/post/5e52688c51882549417fc671前言这篇文章将介绍Golang并发编程中常用到一种编程模式:context。本文将从为什么需要context出发,深入了解context的实现原理,以及了解如何使用context。为什么需要context在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作。熟悉channel的朋友应该都见过使用done channel来处理此类问题。比如以下这个例子:func...阅读全文
口,这样你的容器将拥有它自己的桥接ip地址,通常是docker0。接下来,我们不再继续讲述如何在namespace安装接口。相关内容将在另一篇文章中讲述。 MNT Namespace mount namespace可以让看到系统中所有挂载点在某个范围下的目录视图。人们经常把它和在chroot中禁锢进程混淆在一起,或者是认为他们是相似的,还有人说容器使用mount namespac来把进程禁锢在它的根文件系统中,这都是不对的! 让我们再来拷贝一份skeleton.c用来做挂载相关的修改。可以快速的构建和运行, 从而看下执行mount命令后我们当前的挂载点的样子。 > cp skeleton.c mount.c > gcc -o mount mount.c > ./mount mount...阅读全文
细信息,请参阅这两篇文章:Nonblocking IO & The method to epoll’s madness. 简化流程如下: 数据存储这块解决了,那么针对连接上来的客户端socket,该用什么数据结构保存进来呢?这里用到了红黑树,由于客户端socket会有频繁的新增和删除操作,而红黑树这块时间复杂度仅仅为O(logN),还是挺高效的。有人会问为啥不用哈希表呢?当大量的连接频繁的进行接入或者断开的时候,扩容或者其他行为将会产生不少的rehash操作,而且还要考虑哈希冲突的情况。虽然查询速度的确可以达到o(1),但是rehash或者哈希冲突是不可控的,所以基于这些考量,我认为红黑树占优一些。 客户端socket怎么管理这块解决了,接下来,当有socket有数据需要进行读写事件处理的时...阅读全文
>> jdk8u141.tar.gz cat blk_1073742700 >> jdk8u141.tar.gz 移动我们的jdk到/export路径,然后进行解压 mv jdk8u141.tar.gz /export/ cd /export/ tar -zxf jdk8u141.tar.gz 正常解压,没有问题,说明我们的程序按照block块存储没有问题 作者简介: 园陌,目前就职于一家大而温馨的互联网公司,数据开发工程师 公众号【五分钟学大数据】的原创作者 本篇文章首发于公众号,版权归OSCHINA与公众号【五分钟学大数据】共同所有,转载请注明本声明!...阅读全文
工作。通过使用 Informer,不同的 Controller 之间以线程安全(Thread safety)的方式进行交互,而不必担心多个线程访问相同的资源时会产生冲突。 有关 Informer 的更多详细解析,请参考这篇文章:Kubernetes: Controllers, Informers, Reflectors and Stores Scheduler 当所有的 Controller 正常运行后,etcd 中就会保存一个 Deployment、一个 ReplicaSet 和 三个 Pod 资源记录,并且可以通过 kube-apiserver 查看。然而,这些 Pod 资源现在还处于 Pending 状态,因为它们还没有被调度到集群中合适的 Node 上运行。这个问题最终要靠调度器...阅读全文
本文最初发布于 Better Programming 博客,经原作者授权由 InfoQ 中文站翻译并分享。 随着 DevOps 的出现频率越来越高,很多企业都在蠢蠢欲动,想要设计和开发 DevOps 平台。工欲善其事必先利其器,本文为大家总结了 DevOps 各个阶段可以选择的工具,也许 DevOps 平台的技术选型在这一篇文章中就可以完成。 DevOps 的目标是持续改进,因此技术选型也是分阶段的。 DevOps 技术类别 规划工具 在规划阶段最重要的是要制定共同的目标、保证透明度和赋权。目前业内比较常用的规划工具主要包括 GitLab、TaskTop、CollabNet VersionOne、Pivotal Tracker、Trello 和 Azure Boards。 GitLab...阅读全文