`
stephen830
  • 浏览: 2964525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
  查看mac终端端口命令 netstat -AaLlnW

Java的内存机制

    博客分类:
  • java
  1.Java的内存机制  Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收),Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。   堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在 堆 ...

LoggingHandler

LoggingHandler   netty自带一个日志记录的Handler,叫LoggingHandler,这个Handler使用netty的日志框架打印日志,而netty默认 的日志是java的日志框架java logger,而java的日志框架默认级别是INFO级别,所以需要我们在pipeline中加入此Handler,则可以打印netty的运行日志。  
StringEncoder和StringDecoder   通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。 反之,解码(Decode)/反序列化(deserialization)把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。   从网络读取的inbound消息,需要经过解码,将二进制的数据报转换成应用层协议消息或者业务消息,才能够被上层的应用逻辑识别和处理;同理,用 户发送到网络的outbound业务消息,需要经过编码转换成二进制字节数组 ...

exceptionCaught

  exceptionCaught 事件处理方法由一个ExceptionEvent异常事件调用,这个异常事件起因于Netty的I/O异常或一个处理器实现的内部异常。多数情况下,捕捉 到的异常应当被记录下来,并在这个方法中关闭这个channel通道。当然处理这种异常情况的方法实现可能因你的实际需求而有所不同,例如,在关闭这个连 接之前你可能会发送一个包含了错误码的响应消息。  

ReferenceCountUtil.release()

 
ReferenceCountUtil.release()
  一个Inbound事件通常由Inbound handler来处理。一个Inbound handler通常处理在IO线程产生的Inbound数据。Inbound数据通过真实的输入操作如 SocketChannel#read(ByteBuffer)来获取。如果一个inbound事件越过了最上面的inbound handler,该事件将会被抛弃到而不会通知你或者如果你需要关注,打印出日志。   一个outbound事件由outbound handler来处理。一个outbound handler通常由outbound流量如写请求产生或者转变的。如果一个outbound事件越过了底部的out ...
Unpooled.unreleasableBuffer和Unpooled.copiedBuffer
netty的IdleStateHandler   网络连接中,处理Idle事件是很常见的,一般情况下,客户端与服务端在指定时间内没有任何读写请求,就会认为连接 是idle的。此时,客户端需要向服务端发送ping消息,来维持服务端与客户端的链接。那么怎么判断客户端在指定时间里没有任何读写请求呢?netty 中为我们提供一个特别好用的IdleStateHandler来干这个苦差事!请看下面代码: ch.pipeline().addLast("idleStateHandler", new IdleStateHandler(readerIdleTimeSeconds, wr ...
  Netty工具类HashedWheelTimer   http://my.oschina.net/haogrgr/blog/489320   netty中的Timer管理,使用了的Hashed time Wheel的模式,Time Wheel翻译为时间轮,是用于实现定时器timer的经典算法。 我们看看netty的HashedWheelTimer的一个测试的例子,先new一个HashedWheelTimer,然后调用它的newTimeout方法,这个方法的声明是这样的:     /**     * Schedules the specified {@link TimerTa ...
  几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l cat /proc/cpuinfo | grep processor 1. 查看物理CPU的个数 #cat /proc/cpuinfo |grep "physi ...
  RabbitMQ (三)发布/订阅 转发请标明出处:http://blog.csdn.net/lmj623565791/article/details/37657225 本系列教程主要来自于官网入门教程的翻译,然后自己进行了部分的修改与实验,内容仅供参考。 上一篇博客中,我们实现了工作队 ...
  ####################### #用户角色 ####################### RabbitMQ的用户角色分类:none、management、policymaker、monitoring、administratorRabbitMQ各类角色描述:none 不能访问 management plugin management 用户可以通过AMQP做的任何事外加: 列出自己可以通过AMQP登入的virtual hosts   查看自己的virtual hosts中的queues, exchanges 和 bindings 查看和关闭自己的channels 和 con ...
  4369 (epmd), 25672 (Erlang distribution) 5672, 5671 (AMQP 0-9-1 without and with TLS) 15672 (if management plugin is enabled) 61613, 61614 (if STOMP is enabled) 1883, 8883 (if MQTT is enabled)    
RabbitMQ (二)工作队列 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37620057   本系列教程主要来自于官网入门教程的翻译,然后自己进行了部分的修改与实验,内容仅供参考。   上一篇博客中我们写了通过一个命名的队列发送和接收消息,如果你还不了解请点击:RabbitMQ 入门 Helloworld。这篇中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务。 工作队列的主要任务是:避免立刻执行资源密集型任务,然后必须等待其完成。相反地,我们进行任务调度:我们把任务封装为消息发 ...
Global site tag (gtag.js) - Google Analytics