阿里云出现大规模故障;2023 最佳发明榜单;愤怒的南瓜|思否技术圈周刊

2023-11-17
阅读 3 分钟
616
双十一刚结束,阿里云就大面积故障,持续长达 3 个半小时。据阿里云公告,故障源于某个底层服务组件,影响地域涵盖了国内以及海外多个国家。“淘宝崩了”、“外卖崩了”、“闲鱼崩了”等迅速冲上热搜。大批依赖阿里云的设施随之崩溃:外卖派送停止、超市无法结账、停车场不抬杆。甚至洗衣机、直饮水机和充电桩等服务也停止运转。
封面图

在运行期通过反射了解JVM内部机制

2014-02-12
阅读 3 分钟
4.8k
在日常工作中,我们都习惯直接使用或者通过框架使用反射。在没有反射相关硬编码知识的情况下,这是Java和Scala编程中使用的类库与我们的代码之间进行交互的一种主要手段。但是,使用反射仅限于JVM内部运行的Java和Scala代码。假使在运行期通过反射既能查看自己的代码又能看到JVM的代码,会有怎样的效果呢 ?

从JVM并发看CPU内存指令重排序

2014-01-23
阅读 3 分钟
4.6k
对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行。

可见性问题实例

2014-01-10
阅读 4 分钟
4.9k
说到并发安全时,我们常提及可见性的问题,通俗点讲就是线程1看不到线程2写入变量v的值(更专业的解释以及是什么导致可见性问题,又该如何解决,见扩展阅读),但一直偏于理论,实际中有没有因可见性而导致问题的例子呢?回答是肯定的,接下来我们一起来看几个例子。

AtomicLong.lazySet 是如何工作的?

2013-12-30
阅读 2 分钟
3.4k
为一个AtomicLong对象设置一个值,jvm会确保其他线程读取到最新值,原子类和voliatile变量也是一样的,这是由依赖于硬件的系统指令(如x86的xchg)实现的。lazySet却是无法保证这一点的方法,所以其他线程在之后的一小段时间里还是可以读到旧的值。这有什么好处呢?性能:在多核处理器下,内存以及cpu缓存的读和写常常是顺...

Doppio: JVM的TypeScript实现 Node和浏览器下直接运行Java

2013-12-20
阅读 2 分钟
7k
上次我们介绍了node-jvm,一个很酷的Node.js上的JVM实现。它的代码比较直白,很容易理解。可惜的是它用CPS变换来实现每个opcode的handler。这种实现方式是编译器的常见做法。然而由于JavaScript没有尾递归优化,因此爆栈很容易发生。然后实现的细节上也有一点瑕疵,例如long类型、checkcast指令等。

node-jvm —— 纯node.js 的 JVM 实现

2013-12-18
阅读 2 分钟
7.2k
node-jvm,使用纯node.js实现了JVM,太酷了! 例如,下面是一段生成斐波纳契数列并计算生成时间的Java代码: {代码...} 将它保存为Main.jar,然后加载到node-jvm中: {代码...} 构建: {代码...} 运行: {代码...} 输出: {代码...} node-jvm在MIT许可下发布,项目主页在此。 编撰 SegmentFault

从表到里学习JVM实现

2013-12-17
阅读 3 分钟
5.1k
在社会化分工、软件行业细分专业化的趋势下,会真的参与到底层系统实现的人肯定是越来越少(比例上说)。真的会参与到JVM实现的人肯定是少数。 但如果您对JVM是如何实现的有兴趣、充满好奇,却苦于没有足够系统的知识去深入,那么可以参考RednaxelaFX整理的这个书单。 本豆列的脉络是:    1. JVM与Java语言规范    ...

Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发

2013-12-06
阅读 6 分钟
11.6k
Grails 是一个基于 Groovy 和 Java 的开源 Web 框架。它是 Java 虚拟机(JVM)上顺应 Rails、Django 等流行 Web 框架而生的,伴随着标准的 Jetty/Tomcat 服务器,Grails 能帮助开发者进行快速的应用开发。在这篇文章中,我们会描述如何用 Grails 的 Eclipse 插件开发一个简单的 Web 应用。

可在JVM、nodejs和浏览器运行的静态编译语言 Ceylon 发布 1.0 版

2013-11-22
阅读 3 分钟
4.1k
Ceylon是一个可运行于JVM、nodejs和浏览器的静态OO语言。 近日Ceylon发布了1.0正式版本。 语言特性 高可读性,避免和消除潜在的有害架构 一个结合了子类型、参数化多态性和声明位置变量的类型系统,支持集和交集类型,局部类型推断等特性。 高阶函数和元组类型,可以实现强大的抽象 针对模块定义和模块间依赖定义的先进...