首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

伺服项目加入Linux基金会

Linux Foundation今天在KubeKon宣布将托管Servo Web引擎,这是一个开源的高性能浏览器引擎。 KubeKon是Cloud Native Computing Foundation的旗舰会议,面向领先的开源和云原生社区的采用者和技术人员。会议实际上在本周举行。 伺服设计用于应用程序和嵌入式应用。它是用Rust编程语言编写的。 Rust使浏览器内部具有闪电般的性能和内存安全性。对此行业的支持来自Futurewei,Let's Encrypt,Mozilla,Samsung和Three.js等。 Linux基金会高级副总裁兼项目总经理Mike Dolan表示:“ Servo是最有前途,最现代,最开放的Web引擎,用于使用Web技术构建应用程序和沉浸式体验。” 他在书面声明中对LinuxInsider表示:“这与Rust编程语言有很大关系。” “我们很高兴在未来几十年内支持并维持这项重要工作。”

00

kafka插入失败

org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for zhaochaotest-0: 30031 ms has passed since batch creation plus linger time     at org.springframework.kafka.core.KafkaTemplate$1.onCompletion(KafkaTemplate.java:365)     at org.apache.kafka.clients.producer.internals.ProducerBatch.completeFutureAndFireCallbacks(ProducerBatch.java:204)     at org.apache.kafka.clients.producer.internals.ProducerBatch.done(ProducerBatch.java:187)     at org.apache.kafka.clients.producer.internals.Sender.failBatch(Sender.java:627)     at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:287)     at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:238)     at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:163)     at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for zhaochaotest-0: 30031 ms has passed since batch creation plus linger time

02

改变世界的一次代码提交

Linux 作为最大也是最成功的开源项目,吸引了全球程序员的贡献,到目前为止,共有两万多名开发者给 Linux Kernel 提交过代码。令人惊讶的是,在项目的前十年(1991 ~ 2002)中,Linus 作为项目管理员并没有借助任何配置管理工具,而是以手工方式通过 patch 来合并大家提交的代码。倒不是说 Linus 喜欢手工处理,而是因为他对于软件配置管理工具(SCM)非常挑剔,无论是商用的 clearcase 还是开源的 cvs、svn 等都不能入他的法眼。在他看来,一个能够满足 Linux 内核项目开发使用的版本控制系统需要满足几个条件:1) 快 2)支持多分支场景(几千个分支并行开发场景) 3) 分布式 4) 能够支持大型项目。直到2002年,Linus 终于找到了一款基本满足他要求的工具——BitKeeper, 而 BitKeeper 是商业工具,他们愿意给 Linux 社区免费使用,但是需要保证遵守不得进行反编译等条款。BitKeeper 提供的默认接口显然不能满足社区用户的全部需要,一位社区开发者反编译 BitKeeper 并利用了未公开接口,这让 BitKeeper 公司撤回了免费使用的 License。不得已,Linus 利用假期十天时间,实现一款 DVCS —— Git,并推送给社区开发者们使用。

06

每日一面 - java中,描述一下什么情况下,对象会从年轻代进入老年代?

我们一般认为 Java 中 new 的对象都是在堆上分配,这个说法不够准确,应该是大部分对象在堆上的 TLAB分配,还有一部分在 栈上分配 或者是 堆上直接分配,可能 Eden 区也可能年老代。同时,对于一些的 GC 算法,还可能直接在老年代上面分配,例如 G1 GC 中的 humongous allocations(大对象分配),就是对象在超过 Region 一半大小的时候,直接在老年代的连续空间分配。 这里,我们先只关心 TLAB 分配。 对于单线程应用,每次分配内存,会记录上次分配对象内存地址末尾的指针,之后分配对象会从这个指针开始检索分配。这个机制叫做 bump-the-pointer (撞针)。 对于多线程应用来说,内存分配需要考虑线程安全。最直接的想法就是通过全局锁,但是这个性能会很差。为了优化这个性能,我们考虑可以每个线程分配一个线程本地私有的内存池,然后采用 bump-the-pointer 机制进行内存分配。这个线程本地私有的内存池,就是 TLAB。只有 TLAB 满了,再去申请内存的时候,需要扩充 TLAB 或者使用新的 TLAB,这时候才需要锁。这样大大减少了锁使用。

04

垃圾收集分析(1)-Java对象结构(上)

GC(Garbage Collection)是目前很多编程语言自带的特性,例如Java,Python;GC是一个很好的特性,能让使用这个语言编程的程序员不去关心内存回收,并且降低内存泄漏和内存溢出发生的概率。 我们以Java语言JVM为例,从其对象结构和JVM运行时内存结构出发,针对其GC算法思路和实现进行分析,同时类比其他GC算法。 首先,在Java 8中,Java对象在内存中结构包括: 1. 类型指针:一个指向类信息的指针,描述了对象的类型。 2. 标记字(Mark Word):一组标记,描述了对象的状态,包括对象散列码(如果有)、对象的形状(是否是数组)、锁状态、数组长度(如果标记显示这个对象是数组,描述了数组的长度) 3. 对齐性填充:所有对象都是8字节对齐的 -> 也就是说,所有对象的起始位置都是满足A(A%8==0),所以对于有的对象需要这个对齐性填充来满足这个规则。 4. 域变量区域:这个对象的域变量所占用的内存。Java域变量存在两类:原始类型(primitive type)和普通对象指针(ordinary object pointer)。

01
领券