- Nginx在网络性能上处于领先地位,这一切都得益于软件的设计。尽管其他web服务器和应用服务器都采用基于线程或者进程的体系结构,Nginx具有复杂的事件驱动架构,使得nginx在现代硬件上可以扩展到数十万个并发连接。下面的图展示了Nginx如何用一个进程来处理许多连接。博客的后面会讨论细节为了更好地理解这个设计,你需要知道NGINX如何运行,NGINX拥有一个master线程,用来执行高特权... Nginx在网络性能上处于领先地位,这一切都得益于软件的设计。尽管其他web服务器和应用服务器都采用基于线程或者进程的体系结构,Nginx具有复杂的事件驱动架构,使得nginx在现代硬件上可以扩展到数十万个并发连接。下面的图展示了Nginx如何用一个进程来处理许多连接。博客的后面会讨论细节为了更好地理解这个设计,你需要知道NGINX如何运行,NGINX拥有一个master线程,用来执行高特权...
- 我们从一个简单的例子开始,假设你想要为类中所有的测试方法设置时延。简单的方法就是这样:public class BlahTest { @Test(timeout = 1000) public void testA() throws Exception { //... } @Test(timeout = 1000) public void testB() throws ... 我们从一个简单的例子开始,假设你想要为类中所有的测试方法设置时延。简单的方法就是这样:public class BlahTest { @Test(timeout = 1000) public void testA() throws Exception { //... } @Test(timeout = 1000) public void testB() throws ...
- 两阶段提交协议提供了一个自动恢复机制以防系统或者媒体在事务的时候失败。两阶段提交协议确保所有参与的数据库接受然后执行相同的行为,无视本地或者网络的失败如果任何一个数据库服务器无法提交相关事务,则必须阻止参与事务的所有数据库服务器执行其工作。数据库服务器在涉及到多台数据库服务的数据更改自动使用两阶段提交协议。举个例子,假如你有三个数据库服务器,叫australia,italy和france连接... 两阶段提交协议提供了一个自动恢复机制以防系统或者媒体在事务的时候失败。两阶段提交协议确保所有参与的数据库接受然后执行相同的行为,无视本地或者网络的失败如果任何一个数据库服务器无法提交相关事务,则必须阻止参与事务的所有数据库服务器执行其工作。数据库服务器在涉及到多台数据库服务的数据更改自动使用两阶段提交协议。举个例子,假如你有三个数据库服务器,叫australia,italy和france连接...
- 性能测试ThreadLocal一般在多线程环境用来保存当前线程的数据。用户可以很方便地使用,并且不关心、不感知多线程的问题。下面我会用两个场景来展示多线程的问题:多个线程同时操作一个ThreadLocal一个线程操作多个ThreadLocal 1. 多个线程同时操作一个ThreadLocal测试代码分别用于ThreadLocal和FastThreadLocal。 代码如下:package ... 性能测试ThreadLocal一般在多线程环境用来保存当前线程的数据。用户可以很方便地使用,并且不关心、不感知多线程的问题。下面我会用两个场景来展示多线程的问题:多个线程同时操作一个ThreadLocal一个线程操作多个ThreadLocal 1. 多个线程同时操作一个ThreadLocal测试代码分别用于ThreadLocal和FastThreadLocal。 代码如下:package ...
- 在最基本的模型中,服务器一次只处理一个客户端,如果你想要实现一个可以扩展的服务器的话,那么该如何去做呢最简单的扩展方式是为每个客户端产生一个新的线程,但不推荐这种方式,因为:1.线程比较难以编码,调试,而且有些时候,它们会产生不可预测的结果2.切换上下文的消耗3.对于大量的客户端,不可扩展4.可能会引起死锁Select()使用Linux中的select命令1.select命令允许监控多个fi... 在最基本的模型中,服务器一次只处理一个客户端,如果你想要实现一个可以扩展的服务器的话,那么该如何去做呢最简单的扩展方式是为每个客户端产生一个新的线程,但不推荐这种方式,因为:1.线程比较难以编码,调试,而且有些时候,它们会产生不可预测的结果2.切换上下文的消耗3.对于大量的客户端,不可扩展4.可能会引起死锁Select()使用Linux中的select命令1.select命令允许监控多个fi...
- Nginx(发音自 “Engine X”)是一个高性能的web服务器。Nginx可以用来当作一个web服务器,也可以作为反向代理服务其他web服务器。用作反向代理时,Nginx可以处理像SSL,HTTPS,Gzip,缓存头,负载均衡等事务。后台web服务器并不需要知道如何处理这些事。在OSX上,运行下面的命令来安装nginx brew install nginx在Ubuntu上,使用apt... Nginx(发音自 “Engine X”)是一个高性能的web服务器。Nginx可以用来当作一个web服务器,也可以作为反向代理服务其他web服务器。用作反向代理时,Nginx可以处理像SSL,HTTPS,Gzip,缓存头,负载均衡等事务。后台web服务器并不需要知道如何处理这些事。在OSX上,运行下面的命令来安装nginx brew install nginx在Ubuntu上,使用apt...
- 文件锁可以是shared(共享锁)或者exclusive(排他锁)。不是所有的平台都以同一种方式实现文件锁,不同的操作系统可能不同,同一操作系统上的不同文件系统也可能不同。有些操作系统只提供协同锁,有些只提供强制锁,有些则都提供。文件锁是以文件为单位的,不是以通道,也不是线程。所以文件锁不适合同一个多个线程访问的情形。如果一个线程获得了给定文件的排他锁,第二个线程请求打开了一个新的chann... 文件锁可以是shared(共享锁)或者exclusive(排他锁)。不是所有的平台都以同一种方式实现文件锁,不同的操作系统可能不同,同一操作系统上的不同文件系统也可能不同。有些操作系统只提供协同锁,有些只提供强制锁,有些则都提供。文件锁是以文件为单位的,不是以通道,也不是线程。所以文件锁不适合同一个多个线程访问的情形。如果一个线程获得了给定文件的排他锁,第二个线程请求打开了一个新的chann...
- FileChannel继承了ScatteringByteChannel,ByteChannel和GatheringByteChannel。在类中还引入了文件锁。下面是部分的APIpublic class FileLock implements AutoClosable{ public FileChannel channel() public long position() public... FileChannel继承了ScatteringByteChannel,ByteChannel和GatheringByteChannel。在类中还引入了文件锁。下面是部分的APIpublic class FileLock implements AutoClosable{ public FileChannel channel() public long position() public...
- Java NIO Channels(三)通道提供了分散聚合的能力。就是说一次IO操作可以对应多个buffer。对于写操作(向通道中写入数据),数据从数个buffer中汇合然后沿通道发送对于读操作(从通道中读出数据),从通道中出来的数据分散到许多不同的buffer,尽可能地读取,直到数据或者buffer的可用空间被耗尽。许多现代操作系统支持native vectored(矢量) IO;当你在... Java NIO Channels(三)通道提供了分散聚合的能力。就是说一次IO操作可以对应多个buffer。对于写操作(向通道中写入数据),数据从数个buffer中汇合然后沿通道发送对于读操作(从通道中读出数据),从通道中出来的数据分散到许多不同的buffer,尽可能地读取,直到数据或者buffer的可用空间被耗尽。许多现代操作系统支持native vectored(矢量) IO;当你在...
- 先看如下的APIpublic interface ReadableByteChannel extends Channel { public int read (ByteBuffer dst) throws IOException;}public interface WritableByteChannel extends Channel { public int write(ByteBuf... 先看如下的APIpublic interface ReadableByteChannel extends Channel { public int read (ByteBuffer dst) throws IOException;}public interface WritableByteChannel extends Channel { public int write(ByteBuf...
- Channels是java.nio的第二个主要创新,提供了跟IO服务的直接连接。Channel是bytebuffer,文件,或者socket之间传输数据的导管。Channel提供了平台无关的抽象,但仍然可以比拟现代操作系统上native代码的IO能力。public interface Channel { public boolean isOpen(); public void close... Channels是java.nio的第二个主要创新,提供了跟IO服务的直接连接。Channel是bytebuffer,文件,或者socket之间传输数据的导管。Channel提供了平台无关的抽象,但仍然可以比拟现代操作系统上native代码的IO能力。public interface Channel { public boolean isOpen(); public void close...
- ByteBuffer和其他Buffer不同的是,它们可以作为Channel(通道)操作的起点或者终点。通道只接受ByteBuffer作为参数。操作系统在内存区中进行IO操作,这些内存区域就是连续的byte。操作系统会直接进入进程的地址空间来转移数据。也就是说内存区的数据最好是连续的字节数。但是在JVM中,字节数组并不一定存储在连续的内存区域,GC可能会移动它们。如何存储数组,根据JVM的实现... ByteBuffer和其他Buffer不同的是,它们可以作为Channel(通道)操作的起点或者终点。通道只接受ByteBuffer作为参数。操作系统在内存区中进行IO操作,这些内存区域就是连续的byte。操作系统会直接进入进程的地址空间来转移数据。也就是说内存区的数据最好是连续的字节数。但是在JVM中,字节数组并不一定存储在连续的内存区域,GC可能会移动它们。如何存储数组,根据JVM的实现...
- 除了布尔类型,其他基本类型都有自身的Buffer类,但是byteBuffer还有不少其他特性。操作系统和他的IO设备来看,byte是最基本的数据单元。需要把其他类型的数据转化为bytes来操作。为了方便参阅,这里列出来了ByteBuffer的完整API。public abstract class ByteBuffer extends Buffer implements Comparable ... 除了布尔类型,其他基本类型都有自身的Buffer类,但是byteBuffer还有不少其他特性。操作系统和他的IO设备来看,byte是最基本的数据单元。需要把其他类型的数据转化为bytes来操作。为了方便参阅,这里列出来了ByteBuffer的完整API。public abstract class ByteBuffer extends Buffer implements Comparable ...
- 通过数组的形式存储数据,可以实现Buffer的功能,进而创建Buffer对象,但是Buffer可不仅仅只能通过数组才能实现。Buffer还可以管理其它buffer的数组。一旦这么做,就是一个view buffer对象。大多数view buffers是bytebuffers的视图。View Buffers通常通过调用已经存在buffer的方法生成。创建的view buffer不仅可以通过get... 通过数组的形式存储数据,可以实现Buffer的功能,进而创建Buffer对象,但是Buffer可不仅仅只能通过数组才能实现。Buffer还可以管理其它buffer的数组。一旦这么做,就是一个view buffer对象。大多数view buffers是bytebuffers的视图。View Buffers通常通过调用已经存在buffer的方法生成。创建的view buffer不仅可以通过get...
- 在JAVA NIO BUFFER(一)看到了七个基本的buffer类,我们以CharBuffer为例。来看看如何创建一个CharBuffer对象:public abstract class CharBuffer extends Buffer implements CharSequence, Comparable { public static CharBuffer allocate (in... 在JAVA NIO BUFFER(一)看到了七个基本的buffer类,我们以CharBuffer为例。来看看如何创建一个CharBuffer对象:public abstract class CharBuffer extends Buffer implements CharSequence, Comparable { public static CharBuffer allocate (in...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签