简单了解一些计算机基础知识
为解决各种问题,人们发明了不计其数的机器。计算机种类繁多,从嵌入火星漫游机器人的计算机到为操纵核潜艇导航系统的计算机,不一而足。 冯• 诺伊曼在1945 年提出第一种计算模型,无论笔记本电脑还是电话,几乎所有计算机都遵循与这种模型相同的工作原理。那么你们了解计算机是如何工作的吗?本文将讨论这些内容: 理解计算机体系结构的基础知识 选择编译器将代码转换为计算机可以执行的指令 ...
为解决各种问题,人们发明了不计其数的机器。计算机种类繁多,从嵌入火星漫游机器人的计算机到为操纵核潜艇导航系统的计算机,不一而足。 冯• 诺伊曼在1945 年提出第一种计算模型,无论笔记本电脑还是电话,几乎所有计算机都遵循与这种模型相同的工作原理。那么你们了解计算机是如何工作的吗?本文将讨论这些内容: 理解计算机体系结构的基础知识 选择编译器将代码转换为计算机可以执行的指令 ...
1、Shell脚本编程概述 问题:5000台机器,有一个课件,想向每台机器上都上传一份该课件,如何做? shell就是一个bash程序 解释器,启动器 解释器: 用户交互输入 文本文件输入 脚本本质: #!/bin/sh #!/bin/bash #!/usr/bin/python #!/bin/awk 读取方式...
11.1 RPC 基本介绍 RPC(Remote Procedure Call)—远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样(如图) 常见的 RPC 框架有:比较知名的如阿里的 Dubbo、Googl...
10.1 基本说明 只有看过 Netty 源码,才能说是真的掌握了 Netty 框架。 在 io.netty.example 包下,有很多 Netty 源码案例,可以用来分析。 源码分析章节是针对有 Java 项目经验,并且玩过框架源码的人员讲的,否则你听起来会有相当的难度。 10.2 Netty 启动过程源码剖析 10.2.1 源码剖析目的 用源码分析的方式走一下 ...
9.1 TCP 粘包和拆包基本介绍 TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle 算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无...
8.1 基本说明 Netty 的组件设计:Netty 的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe 等 ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现 ChannelInboundHandler 接口(或 ChannelInboundHandlerAdap...
7.1 编码和解码的基本介绍 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[示意图] codec(编解码器)的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据 7.2 Netty 本身的编码解码...
6.1 Bootstrap、ServerBootstrap Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。 常见的方法有 public Serve...
5.1 线程模型基本介绍 不同的线程模式,对程序的性能有很大影响,为了搞清 Netty 线程模式,我们来系统的讲解下各个线程模式,最后看看 Netty 线程模型有什么优越性。 目前存在的线程模型有:传统阻塞 I/O 服务模型 Reactor 模式 根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor多线程;...
4.1 原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发...