`
文章列表
1. NIO NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 NIO的特点:事件驱动模型、单线程处理多任务、非阻塞I/O,I/O读写不再阻塞、基于block的传输比基于流的传输更高效、更高级的IO函数zero-copy、IO多路复用大大提高了Java网络应用的可伸缩性和实用性。基于Reactor线程模型。 NIO是面向缓冲区的,而传统IO是面向流的。 2. NIO的三大核心部分 NIO主要包括:java.nio.channels包中的Selector和Channel抽象,java.nio包中的Buffer抽象。 ...
1. JVM的主要结构 JVM主要由类加载子系统、运行时数据区、执行引擎以及本地方法接口组成。 2. JVM的类加载机制 a) 加载 i. 通过一个类的全限定名来获取定义此类的二进制字节流 ii. 将这个字节流所代表的静态存储结构转化 ...
1. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型 而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强 ...
1. Linux 常用指令 a) Top——从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况 i. 进程数统计(总进程、运行进程、睡眠进程等) ii. CPU统计(用户CPU占用、内核CPU占用等) iii. 内存信息(总物理内存、已用物理内存、空闲物理内存、交换区总量、使用的交换区等) iv. 进程详细信息(id、使用的CPU占比、使用的内存占比、共享内存大小、使用CPU时间) v. top -H -p <pid> 输出某个特定进程内所有线程的运行情况 b) Pidstat——用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等 i. 命 ...
1. 进程与线程的区别 进程:执行中的程序,一个进程中至少包含一个线程 线程:进程中负责程序执行的执行单元 2. 进程间相互通信的常见方式 管道、信号、消息队列、套接字、共享内存 3. 线程间相互通信的常见方式 共享变量、synchronized、lock 4. 线程的实现 a) 继承Thread类,(必须重写run()方法) i. 创建线程后,需要使用start()启动线程,然后再执行run()方法 ii. 如果调用run()方法,相当于在主线程执行run()方法,并未创建新线程 b) 实现runnable接口(必须重写run()方法) c) Executor i. Executors,用于创 ...
移动互联网时代,手游和端游(页游)用户的明显区别是什么? 手游用户游戏的主要目的是以消磨碎片化时间为主,比如坐地铁、上厕所和睡前半小时,其性质偏向于轻度或中度;端游用户则相对更加核心,会在一款游戏上花 ...
接下来的几篇文章,我们将逐步学习使用各种方式对日志进行采集。 本文讲述的是如何使用log4j直接输出日志到flume。 先上干货,再讲理论! 1、flume配置文件 agent.sources = so1 agent.channels = c1 agent.sinks = s1 # For each one of the sources, the type is defined agent.sources.so1.type = avro agent.sources.so1.bind = 0.0.0.0 agent.sources.so1.port = 44444 tie ...
1、将编译后的 apache-flume-1.7.0-SNAPSHOT-bin.tar.gz 包上传至linux服务器 2、修改 flume-env.sh 配置文件,主要是添加java环境 # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with th ...
关于flume NG Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方( ...
之前写过一篇和本文类似的博客,不过原博客是基于netty3.x实现的,今天整理了一份基于4.0的完整系统分享给大家,希望能对大家有所帮助。 架构细节原博客都有,请参照 http://cpjsjxy.iteye.com/blog/1587601 propholder.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http ...
本节主要和大家聊聊消息处理的细节。 1、java的字节序 这是一个不经常遇到的问题,写在这里以备不时之需。 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。 Little endian:将低序字节存储在起始 ...
本节主要介绍游戏架构的核心,多线程——ThreadPoolExecutor! 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能, 并且还可以提供绑定和管理资源(包括执行任 ...
从本节开始,我将逐步对架构的各个环节进行展开讲解。这一节主要讲消息的接收与发送 。 在说具体的消息接收发送前,先说明一下netty的工作流程(请不熟悉netty的同学参考使用netty+spring搭建游戏框架)。 Netty是一个基于事 ...
从今天起,我会陆续在这里总结一下这几年来关于游戏服务器端框架的这点事儿。 首先,要说明的是,我不是什么大牛,也不是什么砖家,就是一个普普通通的IT民工,此文仅就游戏服务器框架进行了技术性总结,如有不同观点,欢迎拍砖。 +++++++++++++++++++++++++++++++华丽分割线++++++++++++++++++++++++++++++++++ 补一张netty框架图 总体框架 上图是我们一直在使用的游戏架构。此架构适用于http\socket\websocket等多种通信模式(只需要在netty层对消息接收和发送部分进行简单处理即可,在此不做详述。如有需要请 ...
WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这是“无法做到”的。 WebSocket提出之前,为了解决后台推送消息到前台的需求,提出了一些解决方案,这些方案使用已有的技术(如ajax,iframe,flashplayer,java applet ...),通过一些变通的处理来实现。 webSocket是html5新引入的技术,允许后台随时向前端发送文本或者二进制消息,WebSocket是一种全新的协议,不属于http无状态协议,协议名为& ...
Global site tag (gtag.js) - Google Analytics