梧桐和风的博客

岁月如旅行,好坏是风景

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等的实现机制,实现...

Wait/Notify通知机制解析

Wait/Notify通知机制解析 前言 我们知道,java的wait/notify的通知机制可以用来实现线程间通信。wait表示线程的等待,调用该方法会导致线程阻塞,直至另一线程调用notify或notifyAll方法才可另其继续执行。经典的生产者、消费者模式即是使用wait/notify机制得以完成。在这篇文章中,我们将深入解析这一机制,了解其背后的原理。 线程的状态 在了解wa...

ElasticSearch笔记二:5.x版本变化

ElasticSearch笔记系列

写在前面:去年写的有关Elastic的一些知识是基于2.x版本的,目前最新的版本是5.6(2017-10),一些重要的API与用法已经发生改变。这篇文章在之前系列的基础上,重点从API角度讲讲变化的部分。 一、映射的变化 string类型变为为text/keyword 变化最大的是ES的基本类型string。目前string类型已标为废弃的,取而代之的变成了 text/keyw...

快速排序(QuickSort)实践

算法简介 快速排序(Quicksort)是对冒泡排序的一种改进算法。由C. A. R. Hoare在1960年提出。该算法使用广泛、效率很高,是最重要的排序算法之一。 该算法的实现基本可分为以下几步: 在数组中选一个基准数(通常为数组第一个)。 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边 对于基准数左、右两边的数组,不断重复以上两个过程...

HttpUrlConnection类体系解析

背景介绍 关于HTTP协议 HTTP 协议是目前 Internet 上使用得最多、最重要的协议。该协议为典型的请求-响应模型。客户端建立连接并发送请求,服务端接受并处理请求,再发送应答,再由客户端接受并处理应答。浏览器是最常见的一种客户端,它将用户的交互行为作为http请求发送,并接受服务端的应答,再将应答内容展示,一般应答都是html类型的超文本。 在某些情况下,我们会使用java程...