梧桐和风的博客

岁月如旅行,好坏是风景

ReentrantLock原理探究(二)

前言 上篇ReentrantLock原理探究(一)介绍了ReentrantLock类的使用说明,详细解析了关于非公平锁的lock()过程。这篇我们继续分析。 三、源码解析 2.unlock()方法 公平锁与非公平锁的unlock()方法相同,就不用区别了。unlock()方法调用了release()方法。 public final boolean release(int arg...

ReentrantLock原理探究(一)

前言 ReentrantLock类是synchronized语义的替代品,可以实现与其相同的功能,了解其实现原理对并发编程无疑是很有帮助的。其次,ReentrantLock 的实现基础AQS(AbstractQueuedSynchronizer)也是Java并发编程中相当重要的一个类,所以无论如何,我们都要了解一番。 一. 用法及概念 1. 用法 ReentrantLock(可重入锁...

java获取方法参数名的若干实践

文章首发于我的个人博客网站梧桐和风的博客,欢迎关注。 前言 我们知道java可以通过反射得到方法名、参数类型等信息。但我们似乎不能直接得到方法的参数名。而在一些场景中,比如构建自己的MVC框架时,我们也想像Spring MVC一样,根据参数名获取用户传来的数据。下面就来总结一下,都有哪些方法可以获得方法的参数名。 1. 使用java8 自java8开始,可以直接通过反射得到方法...

java多线程之线程通信

在多线程机制中,线程之间需要传输信息。一般有以下几种通信机制: 共享对象:通过在共享对象中设置信号量,多个线程通过读取、修改该信号量来通信。 wait/notify()方法:线程之间通过调用wait()、notify()方法实现线程等待、唤醒状态,从而达到线程通信的目的。 接下来我们分别看看这两种方法: 通过共享对象通信 在共享对象中设置信号量是最简单也是最常用的线程通信...

Kibana 5.4简明教程

Kibana 5.4 官方文档中文版

本文翻译自Kibana5.4版本官方教程。文章首发于我的个人博客网站梧桐和风的博客,欢迎关注。 开始 想要得到一些关于Kibana的实际经验吗,下面教程会叫你怎样做。 向Elasticsearch导入一些样本数据 定义一个索引模式 用Discover搜索样本数据 为样本数据建立visualizations【可视化图表组件】 将可视化数据汇集到Dashboa...

latke源码解析(二)Ioc部分

上篇 Latke源码解析(一)Servlet部分讲解了latke有关web 请求的servlet部分,这次深入了解一下它的Ioc部分内容。 备注: 本人水平有限,若发现文章有误,请积极留言。 一、从监听器开始 同Spring一样,latke通过配置监听器初始化bean。在latke-demo的web.xml监听器部分如下 <listener> <li...

Servlet工作机制解析

Servlet工作机制解析 Servlet是java Web技术的基础,也是学习Web 框架原理绕不过去的部分。本章我们来学习学习。 1. Servlet和Servlet容器 什么时servlet?从概念上来说是这样的: Servlet是用java编写,遵守java servlet API的一些类,原则上这些类可以响应任何类型的请求,我们一般用它来响应web方面的请求。 说...

latke源码解析(一)Servlet部分

最近研究java Web的MVC,发现一款轻量级的框架,官网描述为类似 Spring 但以 JSON 为主的 Java Web 框架。具体详情见latke github。由于此框架的mvc部分基于Servlet且是对servlet的轻量封装,相对Spring MVC较为简单,就以此框架来学习MVC。 官网提供了一个demo,在latke-demo github 基于Servlet 同Sp...

java注解解析

java注解解析 什么是注解 什么是注解,注解就是一种描述源码的元数据。我们可以通过注解给类、方法或字段提供额外的信息以便了解更多信息。 举个例子,java中常见的@Override就是一个注解。它的作用是提示由它修饰的方法是一个重写方法,如果父类没有这个方法编译器会报错。这样这个注解就给我们传达了重写方法这个信息,在使用时就会多加注意。 @Override public...

node学习笔记

node笔记 每个文件就是一个模块,文件路径就是模块名,每个模块都有require、exports、module三个预先定义好的变量。 require函数用于在当期模块加载使用其他模块,js后缀可省略。 模块路径解析规则 内置模块,直接在require中写模块名,如require('fs'). node_modules目录,node项目有一个专门储存模块的目录,为n...