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

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

,因为一个CPU一次只能执行一条指令,这种情况就是并发,系统看似能处理多任务是因为不停的切换任务,但因为时间非常短,所以在我们的感官来说就是同时进行的。而计算机系统真实的并行是随着多核CPU的出现才有的。 临界区临界区表示公共资源或是共享数据,可以被多个线使用。但是每次只能有一个线使用它,一旦临界区的资源被占用,其他线就必须等到资源释放后才能继续使用该资源。在Java程序开发中,对于这样的资源一般都需要做同步的操作,例如下面的这段代码,用的就是synchronized关键字来对临界区资源进行同步。 public class SyncTest implements Runnable { //临界区资源 public static SyncTest instance = new...阅读全文

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

AMD 2020处理器产品线曝光: Zen2 APU与Zen 3锐龙4000

Ryzen嵌入式G系列芯片,代号River Hawk,Zen 2架构,最高4核8线。 第三季度的产品最富竞争力,毕竟Zen 3架构将新鲜登场,首秀是代号Milan的第三代EPYC,最高64核128线。8月份将是锐龙4000桌面处理器和锐龙APU产品,前者当然升级到Zen 3,代号Vermeer(维米尔),最高16核,延续AM4接口;后者则升级为Zen 2架构,采用Ryzen 4000G/GE的命名,Zen 2架构+Navi。 同年第四季度是线撕裂者4000产品,最高64核128线。这一路线图也呼应了本周一则消息,AMD最快10月份推出第三代线撕裂者,最高48核?...阅读全文

AMD Zen架构双路处理器曝光 很强大

2017年AMD要杀回高性能处理器市场了,明年Q1季度首发8核16线的桌面版Zen处理器,接着还有32核64线的Naples(那不勒斯)服务器版处理器,CPU核心数比Intel目前下一代Xeon E的28核56线还要多。 此前我们对桌面版Zen处理器有所了解,但服务器版Naples处理器还很神秘,上周末有网友曝光了AMD Naples处理器真身,不过这个是16核心的,双路处理器用的,CPU插槽也不是AM4,而是Intel一样的LGA。 爆料的图片来自Reddit用户GumGum9000,图片相当清晰,不过他没有具体说明该处理器的资料,只说是16核Naples处理器。这有点让人迷惑,因为AMD官方早前曝光的Naples处理器都是32核64线的,尚未听说过有16核的,但考虑到服务器市场...阅读全文

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

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

64bit的性能) sysbench 压力测试软件 首先开机后联网,两台设备全部进入字符界面(console)模式,外部不连接任何外设,通过ssh远程登录到两台主机上,然后安装sysbench软件进行压力测试,并通过htop简单的进行观察。 执行命令为: sudo apt-get update && sudo apt-get –y install sysbench htop iperf3 性能测试命令如下: #测试CPU性能: sysbench —test=cpu —num-threads=1 —max-requests=10000 run #4线测试: sysbench —test=cpu —num-threads=4 —max-requests=100000 run #8线测试...阅读全文

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

AMD Ryzen 7 2700X/5 2600跑分曝光 性能提升明显

AMD即将推出第二代Ryzen 2000系列处理器,各方面全面提升,从最近泄露的规格和性能看十分值得期待。Ryzen二代基于12nm新工艺和Zen+新架构,频率平均提升400MHz,并支持更高级的动态加速技术,超频空间也更大,同时改进了缓存、内存性能。 权威评测软件SiSoftware不小心泄露了一份Ryzen 7 2700X、Ryzen 5 2600的评测报告,虽然很快被撤下还是有网友保留了下来。这份评测都是考察SiSoftware的理论性能项目,没有实际应用和游戏测试,但是Ryzen二代的架构提升已经十分明显。 首先来看一下这两款新品的主要规格和 SiSoftware 的评价: 内存频率: 2400MHz提高到2933MHz,可以大大改进内存性能,就是现在高频内存太贵了。 核心线...阅读全文

博文 2018-03-21 08:47:43 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

一位资深Java架构师的晋级心得

师之前,应当先成为Java工程师。熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线池……Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题 成为Java架构师,需要掌握哪些技能呢? 1.框架源码分析 设计模式:Singleton单例模式,Factory工厂模式,Proxy代理模式,Template模板模式,Prototype原型模式等Spring5:Spring提醒结构,IOC注入原理,AOP设...阅读全文

博文 2019-01-13 22:49:22 debian.cn

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

最近游戏已上线运营,进行服务器内存优化,发现一个非常奇妙的问题,我们的认证服务器(AuthServer)负责跟第三方渠道SDK打交道(登陆和充值),由于采用了curl阻塞的方式,所以这里开了128个线,奇怪的是每次刚启动的时候占用的虚拟内存在2.3G,然后每次处理消息就增加64M,增加到4.4G就不再增加了,由于我们采用预分配的方式,在线内部根本没有大块分内存,那么这些内存到底是从哪来的呢?让人百思不得其解。 探索 一开始首先排除掉内存泄露,不可能每次都泄露64M内存这么巧合,为了证明我的观点,首先,我使用了valgrind。 valgrind --leak-check=full --track-fds=yes --log-file=./AuthServer.vlog & 然后启动测试...阅读全文

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

Java 10 正式发布:包含 109 项新特性

个干净的垃圾收集器(GC)接口,改善不同垃圾收集器的源码隔离性。 JEP 307: 向 G1 引入并行 Full GC JEP 310: 应用类数据共享。为改善启动和占用空间,在现有的类数据共享(“CDS”)功能上再次拓展,以允许应用类放置在共享存档中 JEP 312: 线局部管控。允许停止单个线,而不是只能启用或停止所有线 JEP 313: 移除 Native-Header Generation Tool (javah) JEP 314: 额外的 Unicode 语言标签扩展。包括:cu (货币类型)、fw (每周第一天为星期几)、rg (区域覆盖)、tz (时区) 等 JEP 316: 在备用内存设备上分配堆内存。允许 HotSpot 虚拟机在备用内存设备上分配 Java 对象堆...阅读全文

博文 2018-03-21 08:35:10 debian.cn

即将发布的 JDK 10 有 109 项新特性,你喜欢哪些

展,以允许应用类放置在共享存档中。 JEP 312: 线局部管控。允许停止单个线,而不是只能启用或停止所有线。 JEP 313: 移除 Native-Header Generation Tool (javah) JEP 314: 额外的 Unicode 语言标签扩展。包括:cu (货币类型)、fw (每周第一天为星期几)、rg (区域覆盖)、tz (时区) 等。 JEP 316: 在备用内存设备上分配堆内存。允许 HotSpot 虚拟机在备用内存设备上分配 Java 对象堆。 JEP 317: 基于 Java 的 JIT 编译器(试验版本)。 JEP 319: 根证书。开源 Java SE Root CA 程序中的根证书。 JEP 322: 基于时间的版本发布模式。“Feature...阅读全文

博文 2018-03-08 12:56:20 debian.cn

Golang channel 通道常见使用场景

(intChan) //写完后关闭管道 } func ReadData(intChan chan int,exitChan chan bool) { for{ v,ok:=<-intChan if !ok{ fmt.Println("读取完毕") break } fmt.Println("读:",v) } //设置全局标志 告诉main 读取完毕了 main主线可以关闭了 exitChan<-true close(exitChan) } func main() { intChan :=make(chan int,50) exitChan:=make(chan bool,1) go WriteData(intChan) go ReadData(intChan,exitChan) //阻塞主线 for...阅读全文

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

RTX 2080 Super移动版显卡现身:150W塞入笔记本中

版RTX 2080显卡是一样的,但是频率最高1230MHz,这个就要比桌面版的1.8GHz+低很多了,毕竟TDP功耗少了170W之多。 值得一提的是,这次GK4曝光的CPU也非常有看点,是酷睿i9-10980HK处理器,8核16线,基础频率3.1GHz,加速频率4.92GHz,符合Intel之前所说的8核5GHz笔记本处理器,也就是十代酷睿高性能标压版,代号Comet Lake-H系列。 十代酷睿高性能标压版是在3月份上市,那么RTX 20 Super系列移动版显卡也会是在这个时间点上市了。 今年的CES展会上,AMD也发布了7nm工艺的锐龙4000系列处理器,有15W低压版的锐龙4000 U系列及45W高性能版的锐龙4000 H系列,其中旗舰锐龙7 4800H也是8核16线,到时候就有...阅读全文

博文 2020-01-21 07:16:15 debian.cn

FFmpeg 3.4 发布,多媒体处理工具合集

,lumakey 等。 新的音频滤波器包括 afir,crossfeed,surround,headphone,superequalizer 和 haas FITS 复用器和编码器也可以在 FFmpeg 3.4 中使用,它支持 SVG 光栅化的 librsvg,支持符合 spec 的 VP9 muxing 支持 MP4,支持 Interplay MVE 电影的额外帧格式以及支持 VP9 tile 线。 SUP / PGS 字幕复用器,KMS 屏幕抓取器,CUDA 缩略图过滤器,Rockchip MPP 硬件解码器等 下载地址:http://ffmpeg.org/download.html...阅读全文

博文 2018-01-03 08:52:45 debian.cn

AMD锐龙迷你机登场:性能持平8代i5 双千兆网口

迷你机渐渐成为一些PC用户的心头好,尤其是对那些只考虑软路由、HTPC、办公、影音、轻度游戏等需求的消费者。日前我们发现一款来自国内厂商、正在阿里速卖通上销售的锐龙迷你机。这款产品来自大唐(Maxtang),尺寸仅为18x18.2x3.7cm,也就是1.2L,重量1kg,手掌就能托起。 配置方面,搭载的是AMD锐龙V1605B嵌入式处理器,4核8线,加速3.6GHz,15瓦 TDP,CPU性能看齐i5-8205U,GPU性能更是远超UHD620。 其它方面,双通道DDR4内存,两个M.2扩展位,两个千兆网口,八个USB接口、4个DP接口(国内版是1DP+1HDMI、六USB)。 速卖通上,无内存/硬盘版本414美元,8+256GB版本495美元,国行4+128GB起步价2699元,不知道...阅读全文

博文 2020-05-01 19:50:40 debian.cn

AMD 7nm/12nm线程撕裂者CPU曝光:取代Intel?

Zen 3将覆盖四大平台,最高端的HEDT也就是ThreadRipper(线撕裂者),AM4接口的CPU代号“Vermeer(弗美尔)”、APU代号“Renoir(雷诺阿)”。同时还有一个更入门、主打性价的移动APU平台,代号“Dali(达利)”,它是首次出现,依然采用了西方艺术家的命名。 定位方面,HEDT号称要夺回x86市场皇冠上的明珠,取得领导权。 不过,随后一张跟进的ThreadRipper路线图并没有确认2020年的Zen 3会延续这样的家族命名(接口依旧是TR4),仅仅覆盖到2019年。 其中2018年的TR升级为12nm工艺、主频和加速性能更好,2019年代号“Catle Peak”,号称会比Core i9还收市场欢迎(稳上4GHz+、堆32核?)。...阅读全文

博文 2018-03-09 11:42:30 debian.cn

深入学习golang — channel

Consumer( queue <-chan int){ for i :=0; i < 10; i++{ v := <- queue fmt.Println("receive:", v) } } func main(){ queue := make(chan int, 1) go Producer(queue) go Consumer(queue) time.Sleep(1e9) //让Producer与Consumer完成 } 上面的示例在Producer中生成数据,在Consumer中处理数据。 4. Server编程模型 在server编程,一种常用的模型:主线接收请求,然后将请求分发给工作线,工作线完成请求处理。用go来实现,如下: func handle(r *Request...阅读全文

博文 2021-01-25 12:39:17 博客园

Git 2.26 发布:传输协议 V2 成默认协议

Git 2.26 现已发布,项目贡献者 Taylor Blau 介绍了此版本带来的一些特性上的亮点,包括将传输协议 V2(第二版) 作为默认协议 、一些新的配置技巧以及更新到 git sparse-checkout。 该版本具体更新内容如下: Changes 传输协议V2(第二版)已成为默认协议。继续准备最终对象名称将使用 SHA-256 哈希的工作。继续致力于改进不同子命令的 Bash / CLI 自动完成功能。改进的 fsmonitor-watchman hook 可避免以前版本中的 race 情况。对于 CLI 着色,七种颜色现在具有更亮的颜色选项。解除了 Git 先前使用线 grep 的限制。Git rebase 现在默认使用合并后端。较低的内存占用量和更好的性能 git...阅读全文

博文 2020-03-24 10:35:05 debian.cn

7nm锐龙桌面APU曝光 CPU性能小惊喜

随着锐龙4000系列笔记本处理器的上市,AMD现在的CPU产品线中还少最后一环——7nm Zen2的锐龙APU桌面版,取代目前的锐龙3000G系列。好消息是,现在有点眉头了。 经常爆料AMD最新消息的网友rogame今晚曝光了一款未知的AMD APU处理器,其中CPU基础频率大于3GHz,iGPU核显频率大于1200MHz,支持DDR4-3200内存,没说核心数,看爆料猜测是6核12线版的。访问AMD旗舰店。 性能方面,CPU性能比目前的锐龙7 4700U/4600U要高,但GPU要比6核锐龙4000U系列要低,毕竟核显频率也低了很多,笔记本中的锐龙4000U/H的GPU频率在1500-1750MHz之间。 综合来看,这次泄露的锐龙4000 APU定位不算高,有可能传闻中的锐龙3...阅读全文

Ryzen发布两周:AMD 称表现达到预期 四月发布更新

在被英特尔碾压多年之后,AMD 终于“平地一声惊雷”般地推出了可之平起平坐的首批 Ryzen 系列高端处理器。尽管不少人对 Ryzen 的超线(SMT)、互联、Windows 调度、以及较小的动态频率等方面的表现存有疑虑,但 AMD 证实 Ryzen 已经达到了预期。在发布两周之后,AMD 表示 Ryzen 在大多数情况下的表现良好,且无需 Windows 等方面进行太大的调整以充分发挥其性能。 显然,AMD 留意到了有些人在对比测试 Ryzen 在 Windows 7 / 10 系统中的表现。该公司表示其已意识到这件事,所以会与开发者携手给软件带来“针对性的优化”,以更好地发挥新处理器的潜力。 此外,在许多情况下,可以通过微小改动来提升 Ryzen 在特定应用程序中的性能。调查发现,只...阅读全文

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

Python Web 框架 Flask 1.0 正式发布

线处理开发过程中的并发请求。 之前不推荐使用的 flask.ext 已被完全删除。 在调试模式下访问 request.form 的缺失密钥时会显示更有用的错误提醒,以避免开发者混淆常见的错误来源。 app.logger 的行为已大大简化,更容易定制。 test_client 新增用于发布 JSON 数据的 json 参数,Response 对象新增 get_json 方法来在测试中将数据解码为 JSON 。 新增 test_cli_runner ,用于测试应用程序的 CLI 命令。 大量文档已被重写,更清晰明了。这是一项长期持续的工作。 教程和相应的示例已被重写。新的示例使用结构化布局并详细介绍每个方面,以帮助新用户更好地规避常见问题并适应 Flask 。 细节请查阅发行说明...阅读全文

博文 2018-04-27 23:21:17 debian.cn

使用 Go 语言的三个原因

,Go 超越了那些暴露操作系统的多进程或多线并行模型的语言。goroutines 允许程序员避开复杂的回调,而语言运行时确保有足够的线来保持你的内核的活跃。 总结 我给朋友推荐 Go 有三个原因:安全性、生产力和并发性。有些语言可以涵盖一个也有可能是两个方面,但是这三个方面的结合使得 Go 成为主流程序员的绝佳选择。 原文: https://dave.cheney.net/2017/03/20/why-go 作者:Dave Cheney 译者:geekpi 校对:jasminepeng...阅读全文

nsenter 及 Linux命名空间 简介

, argv[1]); setns clone用于创建新的命令空间,而setns则用来让当前线(单线即进程)加入一个命名空间。语法: #define _GNU_SOURCE /* See feature_test_macros(7) */ #include int setns(int fd, int nstype); fd参数是一个指向一个命名空间的文件描述符,位于/proc/PID/ns/目录。nstype指定了允许进入的命名空间,一般可设置为0,表示允许进入所有命名空间。 因此,往往该函数的用法为: 调用setns函数:指定该线的命名空间。调用execvp函数:执行指定路径的程序,创建子进程并替换父进程。 这样,就可以指定命名空间运行新的程序了。代码示例: #define...阅读全文

博文 2020-12-15 11:22:44 debian.cn

gRPC 1.23.0 发布,Google高性能 RPC 框架

(#19556)Mpmcqueue. (#19358)使用后台轮询器时禁用备份轮询器 (#19454)清楚地调出侦听端口的行为 (#19529)在 iOS 上默认启用 CFStream (#19439)修复 DNS 解析器冷却时间 (#19489)在 Windows 上简化并修复 c-ares TCP 路径 (#19397)修改 codegen 以使用 grpc_impl 命名空间和其他清理 (#19435) C++ 频道闲置 (#19634)线池 (#19544)升级 min CMake 至 3.5.1 以匹配 Google 基准测试 (#19467)从 dep.proto. 迁移到 dep[ProtoInfo] provider (#19420) C# 将 ChannelExtensions(拦截...阅读全文

博文 2019-08-18 18:31:20 debian.cn

Django 3.0 发布第一个版本 开始支持异步功能

Django 调用运行单个事件循环,以使异步处理层与同步服务器兼容。 在这个改造的过程中,每个特性都会经历以下三个实现阶段: Sync-only,只支持同步,也就是当前的情况Sync-native,原生同步,同时带有异步封装器Async-native,原生异步,同时带同步封装器 Django 3.0 开始提供运行 ASGI 应用支持,让 Django 逐渐具备异步功能。做了这一改动后,Django 现在会感知到异步事件循环,并将阻止从异步上下文调用标记为“异步不安全”的代码(例如 ORM 操作),如果开发者之前使用的是异步代码,则可能会触发。如果看到 SynchronousOnlyOperation 错误,可以仔细检查代码并将数据库操作移到同步子线中。 其它方面,Django 现在支持...阅读全文

博文 2019-09-13 07:21:28 debian.cn

AWS 宣布赞助 Rust 语言

他们赞助该项目的原因: 性能。Rust 非常快且内存效率高:没有运行时或垃圾收集器,它可以为关键性能服务提供支持,可以在嵌入式设备上运行,并且可以轻松地与其他语言集成。可靠性。Rust 的丰富类型系统和所有权模型保证了内存安全性和线安全性,并能使开发者在编译时消除许多类的错误。生产率。Rust 拥有出色的文档,友好的编译器以及有用的错误消息以及一流的工具——集成的软件包管理器和构建工具,具有自动完成和类型检查的智能多编辑器支持,自动格式化程序等。 接着,AWS 还列举了几个优秀的 Rust 库,并称赞了它的包容性社区,最后表示“Rust 连续四年被评为 Stack Overflow 的最受欢迎语言不足为奇”。 对于 Rust 来说,它可以使用 AWS 服务来执行以下操作: 在 S3 上存储...阅读全文

博文 2019-10-17 22:42:27 debian.cn

可用于企业的三个非主流 Web 服务器

,可支持服务器及其所有功能的直接配置。Cherokee 在 Linux,Mac OS X,BSD 和 Solaris 上本机运行,但不在 Windows 上运行。 Monkey HTTP 服务器 Monkey HTTP 是一个轻量级的服务器和开发堆栈,最初针对 Linux 进行了优化,但现在也与 Mac OS X 兼容。它专为嵌入式设备而设计,因此具有高度可扩展性,具有低内存和低 CPU 消耗。该项目于 2001 年开始,在 2008 年被改写为事件驱动系统时转向专业应用程序。 服务器通过混合机制运行,为每个线提供数千个客户端的访问能力。它提供高性能的重负载服务器,易于安装,是嵌入式设备的理想选择。 除了这三种Web服务器,你还有其他开源项目推荐吗?...阅读全文

博文 2018-05-02 09:27:32 debian.cn

Linux 进程 PID 编号最大为多少

range of PIDs as on earlier kernels. On 32-bit platforms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately 4 million). 为了方便理解,上述内容翻译成中文: /proc/sys/kernel/pid_max (从Linux 2.5.34版本开始) 这个文件明确指定了pid的取值范围(也就是说,文件中的值是允许的最大pid值+1)。比这个数字大的值将不会分配为pid。因此,此文件中的值还作为系统范围内进程和线总数的限制。此...阅读全文

博文 2021-01-12 11:47:15 debian.cn

Ruby 2.5.0 稳定版发布

, stringio, strscan, webrick, zlib 从标准库中提升到默认 gem。 升级 Onigmo 到 6.1.3。 添加 缺位运算符。 注意,Ruby 2.4.1 也包含这项改动。 把 bundler 纳入标准库。 更新到 Psych 3.0.2。 更新到 Rubygems 2.7.3。 更新到 RDoc 6.0.1。 词法分析程序由 IRB 更换为 Ripper,极大提升了生成文档的速度。 修正过去这些年存在的缺陷。 支持近些年 Ruby 的新句法。 更新到 Unicode 10.0.0。 Thread.report_on_exception 默认值现为 true,这对调试多线程序很有帮助。[功能 #14143] IO#write 现接受多个参数 [功能 #9323] 详见...阅读全文

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

为什么使用 JavaScript 开发物联网?

较于PHP、Python、Java来说,JavaScript是最有可能在物联网大行其道的解释性语言。 JavaScript在浏览器没有对手,nodejs在服务器端也在不停的攻城拔寨,积累了大量的资源,构建了一个完整的应用开发生态环境。 JavaScript语言本身特点适合互联网,事件驱动,异步使单线处理网络事件得心应手。 JavaScript已经跨界到物联网,受到了行业巨头的关注,各种项目发展的如火如荼。 未来的物联网开发 如果JavaScript在物联网获得成功,那么物联网的开发将会发生巨大的变化。 底层驱动由C实现,应用开发者不需要关注硬件,大量的互联网、移动互联网应用开发者加入物联网开发。 传统的交叉编译、烧写、调试的开发方式使用范围将急剧缩小 所见即所得,上位机和下位机的架构由C...阅读全文

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

深入理解Golang之context

: fmt.Printf("send message: %d\n", <-messages) } } }(ctx) defer close(messages) defer cancel() select { case <-ctx.Done(): time.Sleep(1 * time.Second) fmt.Println("main process exit!") } } 这个例子中,只要让子线监听主线传入的ctx,一旦ctx.Done()返回空channel,子线即可取消执行任务。但这个例子还无法展现context的传递取消信息的强大优势。阅读过net/http包源码的朋友可能注意到在实现http server时就用到了context, 下面简单分析一下。1、首先Server在开启服务时会创建一个...阅读全文

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

Web前端知识体系精简

创建一个新对象时,JS底层将新对象的原型链指向了构造函数的原型对象,于是就在新对象和函数对象之间建立了一条原型链,通过新对象可以访问到函数对象原型prototype中的方法和属性。new的详细介绍请参考博客:理解JS中的new运算符 5、闭包 闭包其实是一个主动执行的代码块,这个代码块的特殊之处是可以永久保存局部变量,但又不污染全局变量,可以形成一个独立的执行过程,因此我们经常用闭包来定义组件。关于闭包的介绍请参考:干货分享:让你分分钟学会JS闭包 6、单线和异步队列 setTimeout和setInterval是JS内置的两个定时器,使用很简单,但这两个方法背后的原理却不简单。 我们知道,JS是单线语言,在浏览器中,当JS代码被加载时,浏览器会为其分配一个主线来执行任务(函数),主线...阅读全文

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

Ceph 12.2.0 正式版本发布, 代号 Luminous

) FreeBSD的Ceph的第一个版本可用。通过常规FreeBSD端口和软件包发布系统,最新可用版本:net/ceph-devel。 在 Jewel(v10.2.z)版本上进行的重要修改 RADOS 现在默认为AsyncMessenger (ms type = async)的传统SimpleMessenger。最明显的区别是 我们现在使用固定大小的线池进行网络连接(而不是使用SimpleMessenger,一个socket两个线)。 优化OSD故障检测时间,而以前的心跳超时(默认为20秒)。 优化OSDMaps的代码量。 集群在进行重平衡/数据恢复时,OSD会停止Scrub。 RGW RGW现在支持S3多对象复制API。 现在可以离线重塑现有的分支。离线目前,桶重塑要求所有IO(特别是写入)到特定的桶...阅读全文

博文 2017-08-31 13:36:49 debian.cn

架构师详解 Nginx 架构

HTTP 模块 可选 HTTP 模块主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,如:Flash 多媒体传输、解析 GeoIP 请求、SSL 支持等。 邮件服务模块 邮件服务模块主要用于支持 Nginx 的邮件服务,包括对 POP3 协议、IMAP 协议和 SMTP 协议的支持。 第三方模块 第三方模块是为了扩展 Nginx 服务器应用,完成开发者自定义功能,如:Json 支持、Lua 支持等。 二. Nginx 请求处理方式 Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。它结合多进程机制和异步机制,异步机制使用的是异步非阻塞方式,接下来就给大家介绍一下 Nginx 的多线机制和异步非阻塞机制。 多进程 服务器每当收到一个客户端时。就有服务器...阅读全文

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

分布式任务调度平台 XXL

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

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

Java 12 / JDK 12 正式发布

CDS Archives 默认类数据共享归档文件344Abortable Mixed Collections for G1 可中止的 G1 Mixed GC346Promptly Return Unused Committed Memory from G1 G1 及时返回未使用的已分配内存 下边分别来看看: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) Shenandoah:低暂停时间的 GC(实验性功能) 新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线同时进行 evacuation 工作来减少 GC 暂停时间。使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是...阅读全文

博文 2019-03-20 12:46:27 debian.cn

Node.js Vs. PHP:你应该选择哪一个

PHP 是一种编程语言,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js VS PHP,哪一方可以赢得这场战争取决于你构建的网站类型。比方说,如果你想构建一个实时的聊天应用程序,那么选择 Node.js 是明智的,因为它可以轻松处理大量的客户端请求。但是,这并不意味着PHP 不可以,请看完 Node.js VS PHP 后再决定用谁构建你的网站。 1.性能: 在性能方面,Node.js 显然赢了这一局。由于 Node.js 遵循事件驱动的非阻塞I/O模型,与传统的后端技术相比,Node.js 能够处理大量的服务器请求。PHP 遵循一个阻塞模型,其中在服务器端创建多个线来处理多个客户端请求,如果代码没有被优化,它会导致高服务器负载和响应时间...阅读全文

博文 2017-12-23 23:15:39 debian.cn

Linux 中使用 Fio 测评硬盘性能

Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线任务等等。它能够在块设备和文件上工作。 Fio 接受一种非常简单易于理解的文本格式的任务描述。软件默认包含了几个示例任务文件。 Fio 展示了所有类型的 I/O 性能信息,包括完整的 IO 延迟和百分比。 它被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持...阅读全文

博文 2018-08-15 19:18:24 debian.cn

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

Redis的一些开发规范和建议: 1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵。建议根据业务只将高频热数据存储到Redis中【QPS大于5000】,对于低频冷数据可以使用MySQL/ElasticSearch/MongoDB等基于磁盘的存储方式,不仅节省内存成本,而且数据量小在操作时速度更快、效率更高! 2.不同的业务数据要分开存储 不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。因为Redis为单线处理,独立存储会减少不同业务相互操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,在出现异常情况时可以更快恢复服务! 在实际的使用过程中,redis最大的瓶颈一般是...阅读全文

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

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

、Hyperloglogs等。 Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动分片能力。 Redis的主要功能都基于单线模型实现,也就是说Redis使用一个线来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线安全的(因为只有一个线),其所有操作都是原子的,不会因并发产生数据异常 Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1)) 使用高耗时的Redis命令是很危险的,会占用唯一的一个线的大量处理时间,导致所有的请求都被拖慢。(例如时间复杂度为O(N)的...阅读全文

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

协议介绍之深入了解 gRPC

大的提高一条连接上面的 stream 并发,可以考虑调大 SETTINGS_MAX_CONCURRENT_STREAMS,在 TiKV 里面,我们就遇到过这个值比较小,整体吞吐上不去的问题。 这里还需要注意,虽然一条连接上面能够处理更多的请求了,但一条连接远远是不够的。一条连接通常只有一个线来处理,所以并不能充分利用服务器多核的优势。同时,每个请求编解码还是有开销的,所以用一条连接还是会出现瓶颈。 在 TiKV 有一个版本中,我们就过分相信一条连接跑多 streams 这种方式没有问题,就让 client 只用一条连接跟 TiKV 交互,结果发现性能完全没法用,不光处理连接的线 CPU 跑满,整体的性能也上不去,后来我们换成了多条连接,情况才好转。 Priority 因为一条连接允许多个...阅读全文

博文 2017-06-22 11:08:48 debian.cn

分布式运行时 Dapr 知多少

微服务。 以上是Dapr官方GitHub仓库上对Dapr的简介。文字虽短,口气却很大,因为其除了涵盖了当前所有的技术热点:分布式、云、微服务,还自我标榜为:分布式应用运行时。分布式应用我们或多或少有些了解,运行时也听到不少,比如常见的语言运行时:Java 运行时,.NET 运行时,Go 运行时等等,那运行时又是什么东西?简要来说:运行时是程序运行依赖的执行环境。以.NET 程序运行时CLR为例,它为.NET应用程序提供了一个托管的代码执行环境负责应用程序在整个执行期间的内存管理、线管理、安全管理、远程管理、即使编译等。 那分布式应用运行时,就是提供分布式应用运行所依赖的的执行环境。那运行分布式应用需要哪些环境依赖呢?回答这个问题,我们要先思考开发分布式应用的挑战是什么?明确了挑战,那就找到...阅读全文

理解 Linux 的虚拟内存

。 在 Linux 中,内存设置被映射为 /dev/mem,root 用户通过对这个文件读写,可以直接操作内存。 JVM 进程占用虚拟内存过多 使用 TOP 查看系统性能时,我们会发现在 VIRT 这一列,Java 进程会占用大量的虚拟内存。 导致这种问题的原因是 Java 使用 Glibc 的 Arena 内存池分配了大量的虚拟内存并没有使用。此外,Java 读取的文件也会被映射为虚拟内存,在虚拟机默认配置下 Java 每个线栈会占用 1M 的虚拟内存。具体可以查看 为什么linux下多线程序如此消耗虚拟内存。 而真实占用的物理内存要看 RES (resident) 列,这一列的值才是真正被映射到物理内存的大小。 常用管理命令 我们也可以自己来管理 Linux 的虚拟内存。 查看系统内存状...阅读全文

博文 2018-11-25 11:03:49 debian.cn

阿里巴巴版 JDK 首发 GA 版 生产环境可用

版本中,当 JFR 功能被打开,JVM 能以非常小的性能开销记录 Java 运行过程中产生的各种运行时数据。产生的 JFR 数据包含 JVM 运行时的各种微观细节,可以被 JMC(Java Mission Control) 进行分析。JMC 是一个桌面应用程序,通过解析 JFR 数据,JMC 能够高效快速定位线上产品环境的各种故障,分析内存分配热点,方法调用热点,方法调用超时分析,内存泄漏,IO 活动,线活动等,帮助 Java 用户保证服务稳定。 据了解,阿里巴巴日常开发过程中遇到的很多问题都是通过 JFR 得到解决的,可以说是 Java 故障诊断利器。如上所言,JFR 功能在 OpenJDK 11 以及以上版本才有,但是在阿里巴巴的推动努力下,JFR 功能已经被 OpenJDK 8u 社...阅读全文

博文 2019-07-11 10:24:52 debian.cn

Intel 为啥要给 ARM 代工

ARM V8 指令集授权给 APM、Cavium、AMD、高通、华为、国防科大、华芯通等诸多 IC 设计公司开发 ARM 服务器 CPU,APM 开发出了 ARM 服务器 CPU,采用该芯片的服务器已经在数据中心、互联网服务器等领域有了批量的应用。华为也开发了一款 32 核 A57 的服务器芯片,该项目为核高基项目,而且根据公开资料,下一步将在特殊领域得以推广。国防科大也开发了 FT2000,就 SPEC2006 测试成绩来看,FT2000 的多线性能已经能与 Intel Xeon E5-2695v3 芯片相媲美。而面对咄咄逼人的 ARM 服务器 CPU,Intel 也专门开发了至强 D 系列低功耗服务器 CPU 来应对。 因此,在这种 ARM 与 X86 互相侵蚀对方传统优势领域的情况下,想...阅读全文

Linux系统诊断-内存基础

inactive list,内核线kswapd会定期将active list中的页面移至 inactive list中。如果系统的inactive的内存过大,可以通过如下操作对其做回收。sync; echo 3 > /proc/sys/vm/drop_caches虚拟内存========现代x86系统,计算机能够使用的内存会大于其物理内存的上限,依靠的就是虚拟内存机制。Linux支持虚拟内存机制和实模式机制。实模式下,计算机会直接申请物理内存, 虚拟内存机制下,系统会把磁盘当成内存的扩展,已增加可使用的内存大小。并通过映射map的机制,来保存和物理内存的真实对应关系。在磁盘和内存之间传送Page的活动叫做swapping或者页面调度(paging),被用作虚拟内存的磁盘分区称为swap。可以通过在线添加...阅读全文

博文 2021-02-11 14:22:42 SegmentFault 思否

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

了一个小时。但是我的水平有限,结果可想而知。我肯定也知道没过,然后我就请教面试官,需要提升的地方,学**哪方面的内容。 于是我去学习,一个月过去了。 第二次面试,也是阿里 B2B 的岗位,我不知道那个时候有没有招聘的公海,按照我的理解是没有的,然后我肯定不会有这么多次机会。这次的面试和上次很像,只不过内容换成了多线并发相关的知识。我又不知道,面试官还是很容忍我,最后没通过,我同样为了需要什么提高。 于是我去学习,一个月又过去了。 第三次面试,是淘宝,应该是广告部门。这次面试,我觉得除了不知道的内容,其他的内容都还回答的蛮正确的。但是面试官,拿着面试题就和我聊了,然后讲到一个数据库方面的知识时(内连接,外连接),我说不知道。面试官说:这么基础的问题你都不会,这是不能容忍的,其实当时很伤心。有...阅读全文

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

处理器架构消亡史

扩展到完整的64位体系架构。于是,Alpha架构应运而生。Alpha于1992年末推出,是专为高端台式机,工作站和服务器设计的微处理器架构,这也使得他们成为首批实现64位体系架构的企业之一。Alpha对于产业的贡献或许不是有多少产品采用了这种架构,而是他在理论上为产业的发展提供了一种新思路。有人认为,Alpha,MIPS两种RISC架构都比较早的考虑了64位、和引入了很多超前的微架构设计概念,以至于影响了以后英特尔在微架构(uops)、超线方面的发展,这些在英特尔处理器微架构设计隐约能看到Alpha架构的一些影子。除此之外,艾康电脑公司于1983年开始的开发项目——ARM也是值得一提的架构。1980年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。由于这项目非常重要,艾康电脑甚至于...阅读全文

我要彻底放弃 Debian 操作系统!-Michael Stapelberg

Debian中的使用尤为广泛,所以感觉这很讽刺啊。为了掩盖这个问题,我们使用了Gmane,但在过去几年中Gmane可谓是非常不稳定。 我设法提供了一个线列表的归档,但我们的列表管理员似乎并不关心,而且也不想支持这个项目。 Debian很难机器读取 虽然肯定有办法通过程序的方式处理Debian包,但这种体验一点也不愉快。一切似乎都十分缓慢而且很麻烦。我只选了三个简单的例子来说明我的观点。 Debiman需要piuparts的帮助,才能分析每个包显示联机帮助页等内容的替代机制。这是因为维护者的脚本通过调用shell脚本来修改备用数据库。如果没有实际安装包,你就无法得知它对备选的数据库做了哪些更改。 pk4需要维护自己的缓存,才能根据包的名称查找包的元数据。其他工具在每次调用时都需要从头开始解析apt数据...阅读全文

博文 2019-03-22 17:01:23 Michael Stapelberg

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

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

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