Debian.cn 为您找到相关结果 40

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 表示当前缓冲区中有效数据的总量...阅读全文

Ubuntu 20.04 LTS 正式版发布

Ubuntu 20.04 LTS (Focal Fossa)于 4 月 23 日正式发布。主要新特性包括:Linux 内核 5.4,支持新的硬件如英特尔 Comet Lake CPU 和 AMD Navi 12 和 14 GPU;支持 exFAT 文件系统,支持 Wireguard VPN,完整性模式启用定;为 RISC-V 硬件提供了 riscv64 内核。 其它包括:GNOME 3.36,Mesa 20.0 OpenGL stack,BlueZ 5.53,PulseAudio 14.0,Firefox 75.0 和 Thunderbird 68.7.0,LibreOffice 6.4 等。 与 Ubuntu 20.04 同时发布的还有多个衍生版本如 Kubuntu 和 Lubuntu...阅读全文

博文 2020-04-24 01:58:26 debian.cn

21款必不可少的Ubuntu桌面应用程序

什么,因为与火狐、LibreOffice和GIMP一样,它大概是世界上最著名的开源软件之一! 这是一款用途广泛的桌面媒体播放器,可以处理你扔给它的几乎任何媒体格式,播放DVD,甚至还能将视频由一种格式转码成另一种格式。 替代方案:SMPlayer(Qt)。 5. Unity Tweak Tool实用工具 Unity Tweak Tool可谓是Ubuntu Unity桌面界的瑞士军刀,它让你可以微调和定制桌面来适合自己的口味。无论你想试用一种新潮的GTK主题、更换图标集、调整应用程序菜单的大小或行为、设置触发角,还是缩小Unity启动器的尺寸,它都能满足要求。 从高级配置选项到普通选项:如果某个项可以调整,那么Unity Tweak Tool很可能有相应的切换开关! 6. Caffeine屏...阅读全文

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

Golang后端面试题目

技术一面 基础面试 一面是通过电话直接沟通。 go的调度go struct能不能比较go defer(for defer)select可以用于什么context包的用途client如何实现长连接主协程如何等其余协程完再操作slice,len,cap,共享,扩容map如何顺序读取实现set实现消息队列(多生产者,多消费者)大文件排序基本排序,哪些是稳定的http get跟headhttp 401,403http keep-alivehttp能不能一次连接多次请求,不等后端返回tcp与udp区别,udp优点,适用场景time-wait的作用数据库如何建索引孤儿进程,僵尸进程死条件,如何避免linux命令,查看端口占用,cpu负载,内存占用,如何发送信号给一个进程git文件版本,使用顺序...阅读全文

博文 2020-04-13 13:13:00 2020腾讯社招

如何在 Debian 上添加和删除用户

省编辑器,并在每个用户的基础上明确指定的特权。 编辑/etc/sudoers/文件提供了更多的灵活性,但只能当你需要这种灵活性,因为它管理用户帐户时,需要更多的维护使用。 使用visudo是做出改变的唯一推荐的方式/etc/sudoers ,因为它定对多个同时编辑该文件,并覆盖文件之前执行其内容的完整性检查。 这有助于防止在那里你错误地配置的情况sudo和,因为你已经失去了解决问题的防止sudo权限。 如果您当前登录的用户名为root用户键入: visudo 如果您在使用一个非root用户签署sudo权限,请键入: sudo visudo 传统上, visudo打开/etc/sudoers中的vi编辑器,这对于没有经验的用户混淆。 默认情况下,新的Debian安装,就应该改用nano ,它...阅读全文

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

Golang channel 通道常见使用场景

ok:=range exitChan{ fmt.Println(ok) } } 管道实现定时通知 func Notice(d time.Duration) chan bool { c := make(chan bool, 1) go func() { time.Sleep(d) //定时 c <- true }() close(c) return c } func main() { log.Println("one") <-Notice(time.Second) //管道没有写则阻塞 log.Println("tow") <-Notice(time.Second) log.Println("three") } 管道实现互斥 package main import ( "log" "time...阅读全文

博文 2021-01-24 21:22:22 debian.cn

AD:为什么说 CoinEx 是一家很有潜力的数字货币交易所?

,例如支付等。 ** 史上最硬核“销毁”,CET进入全流通状态 ** 2021年3月CoinEx团队决定一次性销毁剩下10.8亿尚未解的CET后,CET 已正式进入全流通状态。根据《关于CET流通及未来应用的信息披露》公告的约定,[CoinEx](http://cet.im) 每天将平台手续费收入的50%用于回购CET,并在每个自然季度结束时将当季回购的CET全部销毁。当 CET 的总量减至30亿后,[CoinEx](http://cet.im) 继续将平台手续费收入的20%用于回购并销毁CET,直至CET全部销毁。 无论是号称要与以太坊竞争的波场链,还是最近一度火热的币安BSC智能链,抑或是 [CoinEx](http://cet.im) 即将推出的 CSC 智能链,无不意味着交易所公链的...阅读全文

处理器架构消亡史

(ARM和RISC—V)提供了一种突破X86封的途径。于是,我们也看到了,较早踏入服务器市场的ARM阵营的代表Marvell也改变了其发展策略,即决定将定制解决方案的ARM服务器市场作为未来投资的目标。如果问那种处理器架构能活着,那么没有什么比时间更具说服力,因为时间无需通知我们就可以改变一切。...阅读全文

如何在 Debian 中锁定软件包版本

在 Debian 或基于 Debian/Ubuntu 的 Linux 发行版系统中,有多种方法可以将软件包定在一个特定的版本。也就是说,可以将某个软件固定维护在指定版本,不让其随系统更新而更新。 为什么要定软件包,防止软件包更新呢? 通常是用户对某个软件版本有特定的需求,或更新期间、更新后可能会导致问题,所以需要维持特定的版本不进行升级。在常见的数据类服务中,这样的需求很有代表性,比如缓存Redis、数据队列RabbitMQ等。还有部分服务依赖于系统中特定的软件,比如指定的 Linux 内核版本,这时就需要定内核版本防止因内核升级导致服务异常。 我们这里介绍两种方式,防止软件包被更新。需要注意的是,如果软件包被其他软件所依赖,阻止其更新,可能会导致关联问题。建议将尽量少的的软件包定...阅读全文

博文 2019-01-09 13:19:52 debian.cn

HAProxy用法详解 最详细中文文档

一、HAProxy简介 (1)HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 (2)HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User...阅读全文

博文 2014-05-10 17:14:46 debian.cn

Facebook 正式发布 JavaScript 包管理器 Yarn 1.0

Workspaces) 越来越多的科技公司开始采用单体仓库模式(mono-repository — 方便跨项目共享代码,同时避免依赖同步问题)来进行代码控制,这种模式也正逐渐被开源社区和一些小型公司所采纳。 因此,Yarn 增加了一个新特性 ——工作区。工作区可以自动从多个 package.json 中收集所有的依赖项,并一次性将它们安装完毕。项目根目录下会生成一个独立的 yarn.lock 来定这些文件。此外,如果多个工作区之间存在依赖,Yarn 会为它们创建链接,这样所有的项目就可以始终共享最新的代码。 自动合并 yarn.lock 文件 (Auto-merging of lockfiles) 多个开发者在开发同一个项目时,可能会需要更新包依赖,从而导致 yarn.lock 文件出现冲突。如果只有一两个...阅读全文

博文 2017-09-19 14:43:15 debian.cn

成为Debian社区维护人需要做好的准备

荐后,会有一位专门的负责人来对他进行考核,这个人就是他的 AM。 10. WNPP: Work-Needing and Prospective Packages 的缩写,指需要有人接手或帮助的软件包。这个概念不是模糊的,而是有明确的定义的。 11. MIA: Missing In Action 的缩写,指某位 Maintainer 长时间不参与维护自己的软件包,同时别人也没能成功地与之取得联系。这样的 Maintainer 被称为 Zombie Maintainer 。如果他是 DD,那么他的 Debian 项目帐号会被定,一年内无回应则会删除。 12. Debian Project: Debian 项目是构建自由的通用操作系统(The Universal Operating System...阅读全文

树莓派64位系统Debian 9先行测评:性能最高提升30倍

: sysbench —test=cpu —num-threads=8 —max-requests=100000 run #测试内存性能 #内存随机测试: sysbench —test=memory --memory-block-size=1K –memory-total-size=1G --memory-access-mode=rnd run #内存连续测试: sysbench —test=memory --memory-block-size=1K –memory-total-size=1G --memory-access-mode=seq run #测试网络性能: iperf3 -c 192.168.1.2 #八线程测试共享线程: sysbench --test=threads --num...阅读全文

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

十个增加 Linux Shell 脚本趣味的小工具

盘灯: setleds -D +num 关闭数字键盘灯: setleds -D -num -caps: 清除大写灯 +caps:打开大写灯 -scroll:清除滚动 +scroll:打开滚动 4. zenity 命令 这个命令可以显示GTK+的对话框,然后返回用户的输入。你可以用这个命令在脚本中显示信息,并要求用户输入信息。下面这段代码就是域名的whois查询: #!/bin/bash # Get domain name _zenity="/usr/bin/zenity" _out="/tmp/whois.output.$$" domain=$(${_zenity} --title "Enter domain" \ --entry --text "Enter the domain you...阅读全文

博文 2018-04-09 09:38:50 debian.cn

Go 1.16 即将发布,这些变更你需要知道

泛型又近了一步。 另外在本次新版本中,像是 template 支持跨行: {{"hello" | printf}} 又或是 Linux 的默认内存管理策略下又从 MADV_FREE 改回了 MADV_DONTNEED 策略,大家在新版本中不再需要设置: GODEBUG=madvdontneed=1 大家若有需求都可以进一步去了解,现在新版本的功能特性已经定,基本尘埃落定。 传送门:https://tip.golang.org/doc/go1.16。 分享 Go 语言、微服务和奇怪的系统设计 ???? 长按关注煎鱼,在知识的海洋里遨游 学习资料分享,关注公众号回复指令: 回复【000】,下载 LeetCode 题解大全。回复【001】,下载 Go 进阶图书 Mastering Go。...阅读全文

博文 2021-02-17 08:52:12 CSDN博客

第8个LTS版本 Ubuntu 20.04 将带来哪些新特性?

Amazon 应用。Ubuntu 上的 Amazon 图标一直就挂在桌面,这早已被人吐槽,因为它比较鸡肋,相关调查数据也反映了这一点。此次变化,特别是对于普遍不习惯首选 Amazon 购物的中国人来说,是一大好事。 Ubuntu 20.04 将使用 Linux 5.4 内核,该版本具有内核定模式和 exFAT 支持等新特性。 内核定功能主要是为了防止 root 帐户篡改内核代码,从而在用户态进程和代码之间划清界限。启用该功能后,即便是 root 帐户也无法访问某些内核功能,从而保护操作系统免受受损的 root 帐户影响。 exFAT 文件系统则是 FAT32 的替代者,它由微软开发,但是不仅用于 Windows 系统,目前 exFAT 在整个电子行业中都得到了广泛应用,特别是 SD 卡、USB 闪...阅读全文

博文 2020-01-27 09:36:30 debian.cn

为保护隐私而生 反取证操作系统:Kodachi

使用以下命令: disper -s #仅用于单屏 disper -S #仅用于外屏 #如果工具栏被弄乱,按 ALT F2 键,然后敲回车 如果想要定你的 PC,可以同时按下 CTRL+ ALT+ L 键,或通过以下命令: xtrlock Kodachi 附带了许多预安装的应用和工具,你可以通过单击来更改 Tor 的出口节点国家,以及重置你的 DNS 服务器。同时,你也不必担心你的无线或显示驱动程序不匹配,Kodachi 已经为我们集成了大多数,常用的驱动程序。 我们可以在哪使用 Kodachi: 个人计算机桌面或直接从(U盘 和 DVD 启动)使用。 公司的计算机上(从 U盘 和 DVD 启动)使用。 网吧(从 U盘 和 DVD 启动)使用。 酒店或旅行期间(从 U盘 和 DVD 启动)使...阅读全文

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

Ruby 2.5.0 稳定版发布

#14045] 互斥的复写变得更轻量和快速。[功能 #13517] ERB 现在模板生成代码的速度相较于 Ruby 2.4 提升 2 倍。 提升了多个内置方法例如 Array#concat, Enumerable#sort_by, String#concat, String#index, Time#+ 等。 IO.copy_stream 使用 copy_file_range(2) 来拷贝负载。[功能 #13867] 与 2.4 相比的重要变化 SecureRandom 倾向使用操作系统方法而非 OpenSSL。[漏洞 #9569] 将 cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm...阅读全文

博文 2017-12-25 21:59:41 debian.cn

Linux:为什么那么多人讨厌 Systemd

systemd的各种不方便,比如命令太长,不熟悉daemon报错等。systemd几乎没有所需的外部依赖,它们主要由glibc(或兼容的libc),setcap和libmount组成。 由于systemd项目合并了udev, logind等基础设施,以及Gnome/KDE积极与systemd集成,这给其它开源内核的桌面用户(以及Debian这样的多内核发行版)造成了困扰。 想想systemd最开始出现时,还是以一个纯粹的init软件的身份,之后短短的时间内大肆攻城略地,合并了很多进程,与Gnome暧昧不清,还设置了API定。虽然我可以理解很多linux用户为什么不喜欢复杂的桌面环境,但还是有很多人希望选择一个完整的桌面环境。 init系统中,虽然你可以轻松地选择桌面环境和窗口管理器,但在大多数发行版中...阅读全文

HTTP状态码详解

求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect 的内容无法被满足。 421 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。 422 请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)423 Locked 当前资源被定。(RFC 4918 WebDAV) 424 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV) 425 在WebDav...阅读全文

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

2021勒索软件报告:平均支付赎金增长171% 黑客最高要价3000万美元

知道他们可以通过勒索软件赚钱,并且在索要赎金方面变得越发大胆。常见的勒索软件攻击包括勒索软件运营商对数据进行加密,并强迫受害者支付赎金以解数据。在双重勒索中,勒索软件运营商会加密并窃取数据,进一步胁迫受害者支付赎金。如果不支付,勒索软件运营商就会将数据公布到泄漏网站或暗网,大部分数据泄漏网站都托管在暗网,而这些托管站点由勒索软件运营商创建和管理。在新冠疫情下,医疗行业成今年勒索软件最大目标。不法之徒得知医疗机构需要继续营运以治疗新冠患者,无法承担系统被定的后果,继而通过勒索软件进行攻击。勒索软件Ryuk在众多勒索软件中尤其猖獗。利用这种手段最多的勒索软件是NetWalker。从2020年1月到2021年1月,NetWalker泄漏了全球113家受害企业的数据(见下图),远远超过了其他勒索...阅读全文

Go 1.9 的新特性介绍

可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个,封装成一个新的struct或者单独使用都可以。 群众的呼声是响亮的,并发map在项目中大量使用,所以Go 1.9中在包sync加入了新的map, 查询、存储和删除都是平均常数时间,可以并发访问。 Monotonic Time 先前的time包的实现都是基于wall time的,但是当机器的时钟调整后会有问题。 比如在计算duration的时候,如果时钟往回拨,可能导致end时间比start时间还早。 所以Go 1.9使用monotonic Time来实现大部分的time中的函数,在计算duration的时候不会出现因为时钟调整出现的误差了。 设计文...阅读全文

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

Golang 面试题搜集

/blob/master/question/q007.md) - [语法题目二](https://github.com/lifei6671/interview-go/blob/master/question/q008.md) - [goroutine和channel使用一](https://github.com/lifei6671/interview-go/blob/master/question/q009.md) - [实现阻塞读的并发安全Map](https://github.com/lifei6671/interview-go/blob/master/question/q010.md) - [高并发下的与map读写问题](https://github.com/lifei6671...阅读全文

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

的资源一直不释放的话,那么其他阻塞的线程就都不能工作了。 非阻塞则相反,强调的是线程之间并不互相妨碍,所有的线程都会不断尝试向前执行。 死、饥饿和活这三种情况表示的是多线程间的活跃状态,对于线程来说,以上的情况都是 “非友好” 的状态。 1、死一般是指两个或者两个以上的线程互相持有对方所需的资源,并且永远在等待对方释放的一种阻塞状态。例如有两个线程A和B同时共享临界区的资源C,当A占用C时,B处于阻塞状态,然而A的释放需要用到B的资源,这样一来,就变成了A一直在等待B,B也一直在等待A,互相之间永远在等待对方释放的状态。 一般来说,死的发生是由于程序的设计不合理导致,而且死很难解决,最好的方式就是预防。 2、饥饿是指某一个或者多个线程因为种种原因无法获得所需的资源,导致一直无法执行...阅读全文

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

三大浏览器敦促网站管理员更换 SHA–1 认证

的影响,Mozilla在2016年11月初着手在部分beta用户中开展移除SHA-1的beta测试。Firefox默认使用手动安装的认证。 Edge Mircosoft Edge和Internet Explorer 11浏览器将于2017年2月14日停止加载使用SHA-1认证的网站,同时让用户决定是否忽视无效认证的警告并依然继续访问该网站。同样,手动安装的或自签名的SHA-1认证将不会受到影响。 Safari Safari的提供商Apple也开始逐步停止使用SHA-1和3DES这类被认为是不安全的算法。在最新版本的macOS中已经可以看到,对于SHA-1签名认证的网站,Safari浏览器将不再显示那个原有的绿色挂标志。在Sierra的发行说明中也建议应尽快停止使用SHA-1,但是并未给出更...阅读全文

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

案例:Redis命令不当 引起数据库雪崩 造成数百万损失

库提供商,将那台Redis最近一周的命令全部调用出来,最后发现,在那个时间点运行了一条keys *...*命令。公司的一个工程师执行keys模糊的匹配命令是为了清理没用的键,但是没有考虑到keys *进行模糊匹配引发Redis,造成Redis住,CPU飙升,引起了所有调用链路的超时并且卡住,等Redis的那几秒结束,所有的请求流量全部请求到RDS数据库中,使数据库产生了雪崩,使数据库宕机。 改进方案 所有线上操作,全部要经过运维通过后方可执行,运维部门逐步快速收回各项权限 新增Redis实例,进行分离 如果有使用类似keys正则命令需求,使用scan命令代替 总结 该事件中出现的两次事故,完全是由于人为操作引起的,如果那位工程师,看过Redis的开发规范,会发现是建议禁用keys命令的...阅读全文

博文 2018-10-27 10:18:18 debian.cn

运维的未来:云服务兴起,运维人员会“下岗”吗?

衡是非常必要的。 开发团队通常认为运维团队阻碍了创新或者交付。双方都应该相互理解。贬低运维团队很容易,但是更多情况下,他们只是想跟上步伐。不用非得采用每个登上 Hacker News 头条的最前沿的科技,也能创新。另一方面,现代运维组织需要意识到他们几乎永远不可能满足人们的要求了。可持续的发展道路——也是传播同理心的道路——是打破孤岛,共担责任。这就是运维的未来。随着运维工作转移到云,它需要给予开发团队更多的权利和信任以重塑自身,而不是“闭关国”。 运维长存! 【本文转自 36氪 】...阅读全文

Raspberry Pi 推出 Zero W

Raspberry Pi 基金会 推出了 Pi Zero W。作为 Pi Zero 的一个新型号,Pi Zero W 在主板上新集成了 WiFi 和蓝牙,其 10 美元的售价要比 Pi Zero 贵上一倍,但是与五年前发布的 Raspberry Pi Model B 的 35 美元售价相比依然便宜不少。具备主板联网功能的 Pi Zero W 将开启物联网项目的更好前景。 一年前主板上具有 WiFi 和蓝牙的 Pi 3 Model B 推出 之后,下一步明显就是具备无线功能的 Pi Zero。要在最初的 Pi Zero 中添加联网功能,或是需要增加一个昂贵(与主板价格相比)且布局复杂的 USB OTG 适配器以及 USB WiFi 加密,或是要 绕过 USB WiFi 加密的内部机制...阅读全文

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

Go 1.10 发布说明草案:预计于 2018 年 2 月发布

) 也已进行更新,它将会放松语法 (syntax) 的规则来允许任何类型表达式作为接收方,这与编译器已经实现的特性相匹配。例如 struct{io.Reader}.Read,如果编译器已经接受并且现在被语言语法所允许,它是一个有效的表达式。 运行时 TODO:不从 Go 没有创建的定线程或线程中启动新线程。LockOSThread/UnlockOSThread 现在是嵌套的。LockOSThread + return 可杀掉线程。 堆栈跟踪不再包含隐式封装函数(以前被标记为 ),除非封装本身出现错误。 GOMAXPROCS 设置不再有限制(在 Go 1.9 中,限制是 1024) 性能 性能方面的改变较多。由于垃圾收集器的加速,将会生成更好的代码以及核心库中的优化...阅读全文

博文 2017-11-18 13:59:12 debian.cn

分布式任务调度平台 XXL

将会主动触发一次子任务的执行, 多个子任务用逗号分隔; 22、一致性:“ 调度中心” 通过 DB 保证集群分布式调度的一致性, 一次任务调度只会触发一次执行; 23、自定义任务参数:支持在线配置调度任务入参,即时生效; 24、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞; 25、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性; 26、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; 27、推送 maven 中央仓库: 将会把最新稳定版推送到 maven 中央仓库, 方便用户接入和使用; 28、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图...阅读全文

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

Golang 之禅: 如何写优质代码

。 明确处理错误 健壮的程序其实是由处理故障案例的片段组成的,并且需要在故障出现之前处理好。冗余的if err != nil { return err }比出了故障再一个个去处理更有价值。panic 和 recover 也一样。 尽早 return,不要深陷 每次缩进时都会在程序员的堆栈中添加另一个先决条件,这会占用他们短期内存中的 7±2 个片段。避免需要深层缩进的控制流。与其深入嵌套,不如使用守卫子句将成功路径保持在左侧。 并发权留给调用者 让调用者选择是否要异步运行你的库或函数,不要强制他们使用异步。 在启动 goroutine 之前,要知道它什么时候会停止 goroutines 拥有资源、、变量与内存等,释放这些资源的可靠方法是停止 goroutine。 避免包级别的状态 要完成明确和...阅读全文

博文 2020-02-25 20:48:33 debian.cn

Redis 命令、特性介绍与性能调优

。 但如果一个事务中的命令有非语法类的错误(比如对String执行HSET操作),无论客户端驱动还是Redis都无法在真正执行这条命令之前发现,所以事务中的所有命令仍然会被依次执行。在这种情况下,会出现一个事务中部分命令成功部分命令失败的情况,然而与RDBMS不同,Redis不提供事务回滚的功能,所以只能通过其他方法进行数据的回滚。 通过事务实现CAS Redis提供了WATCH命令与事务搭配使用,实现CAS乐观的机制。 假设要实现将某个商品的状态改为已售: if(exec(HGET stock:1001 state) == "in stock") exec(HSET stock:1001 state "sold"); 这一伪代码执行时,无法确保并发安全性,有可能多个客户端都获取到了”in...阅读全文

博文 2018-10-27 10:37:55 debian.cn

使用 MongoDB 之前应该知道的 14 件事

望的唯一方式是把它直接和另一种类型的数据库如 RDBMS 比较,或者对它有特别的期待。这就像把桔子和叉子比较。数据库系统有它们的用途。最好是理解并领会这些差别。强迫 MongoDB 开发人员按照 RDBMS 的方式做事就太遗憾了,我希望继续看到解决旧问题的有趣的新方法,如确保数据完整性、使数据系统具有从故障和恶意破坏中恢复的能力。 在 4.0 版本中,MongoDB 引入了 ACID 事务处理,这是以创新方式引入重大改善的一个很好的例子。多文档、多语句事务现在是原子的了,它允许开发人员调整用于获取的时间,过期挂起事务以及修改隔离级别。 关于作者 Phil Factor(为保护作者隐去真名),又称数据库摩尔,他有将近四十年的数据库密集型应用程序经验。在 20 世纪 80 年代初的一次展览会上...阅读全文

Kubernetes 1.7 版 6月底推出 有超过50项更新

按Kubernetes每季推出新版本的周期,暨今年3月底发布1.6版后,应该即将有一波大公布。果不其然,作为Kubernetes 1.7开发团队成员之一的Mirantis,在近日宣布,Kubernetes 1.7版会如期在6月底发布。 在1.6版中,Kubernetes不仅新增了角色权限控管,还将集群规模扩大至5,000个节点,但对Kubernetes社区而言,1.6版只不过是求稳定,并无太多新功能。Mirantis表示:1.7版本则是全力定推新功能,预计会有超过50个新功能,例如丛集联邦、安全性以及容器网络。 而根据Kubernetes现今对外的文件,还可发现许多有趣的新功能,像是支持容器基础组件Containerd、加强容器Runtime接口等。在容器储存功能方面,则预计开始支持本地...阅读全文

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

RabbitMQ 高可用实现镜像队列

列中某个节点宕掉的后果: 当slave宕掉了,除了与slave相连的客户端连接全部断开之外,没有其他影响。 当master宕掉时,会有以下连反应: 与master相连的客户端连接全部断开;选举最老的slave节点为master。若此时所有slave处于未同步状态,则未同步部分消息丢失;新的master节点requeue所有unack消息,在此我向大家推荐一个架构学习交流圈:830478757 帮助突破瓶颈 提升思维能力,因为这个新节点无法区分这些unack消息是否已经到达客户端,亦或是ack消息丢失在老的master的链路上,亦或者是丢在master组播ack消息到所有slave的链路上。所以处于消息可靠性的考虑,requeue所有unack的消息。此时客户端可能有重复消息;如果客户端连着...阅读全文

博文 2018-12-30 19:21:59 debian.cn

架构师详解 Nginx 架构

主进程(master process)生成一个子进程(worker process)出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。使用进程的好处是各个进程之间相互独立,不需要加,减少了使用对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响,如果一个进程发生异常退出时,其它进程正常工作,master 进程则很快启动新的 worker 进程,确保服务部中断,将风险降到最低。缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会导致系统性能下降。 异步非阻塞 每个工作进程使用异步非阻塞方式,可以处理多个客户端请求。当某个工作进程接收到客户端的请求以后,调用 IO 进行处理,如果不能...阅读全文

博文 2018-05-01 23:10:47 debian.cn

中国投资130亿元量产相变内存 比闪存快1000倍

全球的内存市场主要被三星、SK Hynix和美光三家公司垄断,他们三家加起来的份额高达95%,中国要想在内存市场突破封并不容易,尽管有紫光、长鑫、兆易创新等公司投身存储芯片市场,但在现有的DDR内存技术上,中国公司技术、产能还差得远呢。 此外,内存也不止传统的DDR技术,还有很多新兴领域正在发展,比如PCM相变存储,相比传统内存它的优势很多,比如速度快了1000倍,耐用性也是传统内存的1000倍,江苏淮安市时代芯存公司投资130亿元建设了国内最大的相变存储基地,上周已经开始正式运营,预计年产值45亿元。 来自中国江苏网的消息称,淮安市集成电路产业现场推进暨江苏时代芯存半导体有限公司相变存储器工厂竣工运营启动仪式在淮安高新技术产业开发区顺利举行,此举标志着130亿元投资的相变存储项目开始进...阅读全文

博文 2018-04-10 22:34:58 debian.cn

linux - Go语言中文网

get_user_pages() 调用失败,则返回错误代码;若调用成功,则返回实际被映射的页面数,该数目有可能比请求的数量少。调用成功后所映射的用户页面被在内存中,调用者可以通过 page 结构的指针去访问这些用户页面。 直接 I/O 的调用者必须进行善后工作,一旦直接 I/O 操作完成,用户内存页面必须从页缓存中释放。在用户内存页被释放之前,如果这些页面中的内容改变了,那么调用者必须要通知操作系统内核,否则虚拟存储子系统会认为这些页面是干净的,从而导致这些数据被修改了的页面在被释放之前无法被写回到永久存储中去。因此,如果改变了页中的数据,那么就必须使用 SetPageDirty() 函数标记出每个被改变的页。对于 Linux 2.6.18.1,该宏定义在 /include/linux/page_flags.h 中...阅读全文

博文 2021-01-26 18:17:30 Golang中文社区

Go开发工程师:迎接上升风口,踏入蓝海行业!

,注册页面表单及流程,行程中费用实时计算,初步搭建用户体验闭环。 课程布置: 1、框架的选择 2、首页地图页的完成 3、汽车位置的挪动 4、注册页面规划 5、注册表单的完成 6、注册页面的状态转换 7、开页面的完成 8、行程中页面的完成 9、行程费用的实时计算 第13周 租辆酷车小程序-前端设计进阶 本周我们将玩转小程序中较为复杂的swiper以及滚动视图组件,完成强类型维护下的页面跳转路由,完成自定义组件,并综合运用所学学问,分离数据构造设计,完成盛行的垂直同步导航功用,全面完成用户体验闭环。 课程布置: 1、swiper控件详解 2、强类型维护下的页面跳转路由 3、页面跳转参数的强类型化重构 4、滚动视图详解 5、垂直导航之数据构造设计 6、元素位置...阅读全文