梧桐和风的博客

岁月如旅行,好坏是风景

java I/O体系总结(五)netty架构浅析

简介 netty是使用java编写的高性能IO框架,旨在为高并发场景提供支持。netty可提供多种IO模型的支持,如OIO,NIO等。一般来说,非阻塞IO更适合于大规模高并发场景,我们使用netty主要也因为其封装了原生NIO,规避了其中复杂易出错的细节,更加易用、通用。 从示例讲起 netty既然是以java NIO为基础构建的(当然添加了大量特性),那就不能不了解java NIO的...

java I/O体系总结(三) java NIO

概览   IO NIO 特点 面向流 面向缓冲 是否阻塞 阻塞IO 非阻塞IO   无 选择器 java 新IO主要部分:Buffer(缓...

java I/O体系总结

java I/O体系总结 I/O流的理解 先看看流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 通俗的说,有两个文件A和B,想要把A的内容拷贝到B中,可以假设两文件间有一个通道,把A的数据按字节或是字符的形式传送给B。这个通道就是jav...

使用注解方式构建dubbo服务

使用注解方式构建dubbo服务 前言 Dubbo是阿里巴巴开源的一个高性能优秀的服务框架,通过使用RPC实现服务调用。在业界尤其国内使用广泛。下面就从头开始构建dubbo的简单demo,配置使用注释方式完成,以zookeeper为注册中心。 构建项目 以 IntelliJ IDEA 为例,创建一个多模块的项目,项目结构如下图所示。 其中,dubbo-demo是父项目,其下有3个...

java8日期时间API讲解

java日期时间API总结 Date java中常见的表示时间的类。内部使用long类型的值表示自1970-01-01起的毫秒数。本质上是一个表示瞬时时间的类,表示级别为毫秒。且其为可变对象,即线程不安全的。目前大多数方法已废弃。可用且常见的方法如下: 方法 含义 new Date() 创...

3月java面试总结

3月java面试总结 前言 这段时间的面试总算是告一段落了。回想起近半个月的面试体验,感觉有必要总结总结经验得失,也为以后留个备忘。这段时间共经历7次面试+2次电面。公司有大有小,有产品也有外包,面试形式也多种多样,真可是体验了一番。最大的感慨还是感觉自己技术体系有欠缺,不完整。书到用时方恨少真是面试时的最佳描述了,今后还是要多学多实战。 再者推荐两本书吧,一是《深入理解java虚拟机...

再谈生产者消费者模式与阻塞队列

再谈生产者消费者模式与阻塞队列 前言 在Wait/Notify通知机制解析文章中,介绍了生产者消费者模式及其应用,而阻塞队列的自身特点也适合生产者消费者。本文即探讨如何一步步用阻塞队列构建生产者、消费者模式。 使用普通队列 使用普通队列构建生产者消费者最需要考虑的问题是,如何保证队列在添加、移除操作时的线程安全。我们本例使用Lock/Condition机制确保。 从实现来说,...

百万英雄类答题游戏的程序员打开方式

百万英雄类答题游戏的程序员打开方式 看了《程序员如何玩转《冲顶大会》?》大受启发,刚好前几天研究了下微信跳一跳的辅助,正好可以用上。 思路很明确,把答案截图pull过来,通过OCR识别成文字后再放到百度搜索。记过几番尝试后,一些容易搜索的问题还是是可以搜索答案的。 目前它是手动的,也就是说每次答案出现,手动执行脚本返回答案。同样由于个别题目原因(如某个词有多少笔画),不是每次都能搜出来...

微信跳一跳辅助原理浅析

教你自己实现跳一跳辅助

微信跳一跳辅助原理浅析 前言 本文从原理和算法的角度(参考https://github.com/wangshub/wechat_jump_game的实现)探讨怎样实现跳一跳的辅助,做到知其然还要只其所以然。尽量使一个没任何外挂经验的任何语言的普通人也能做出辅助来。当然如果你只打算刷分的话,那本文可能没什么帮助了。(另外,本教程只针对android) 原理介绍 原理其实很简单,棋子跳跃...

AbstractQueuedSynchronizer整体解析

AbstractQueuedSynchronizer整体解析 前言 在此之前,我们深入源码分析过ReentrantLock系列,在那里就探讨过AbstractQueuedSynchronizer(下称AQS)类,称其是同步组件乃至整个并发包的基础类。这篇文章就深入AQS,从AQS的角度了解同步器以及ReentrantLock、ReentrantReadWriteLock等的实现机制,实现...