nullwy's blog

  • 首页

  • 归档

  • 标签

  • 分类

  • 关于

  • 搜索

MySQL 5.7 的 JSON 类型

发表于 2019-06-25 | 分类于 MySQL | | 阅读次数
本文字数: 88k | 阅读时长 ≈ 1:20

2015 年 8 月,MySQL 5.7.8 开始提供对 JSON 的原生支持 [ doc1, doc2 ]。MySQL 对 JSON 的支持可以说是千呼万唤始出来。2009 年开始 NoSQL 逐渐流行起来,相继出现了键值对数据库、文档数据库、列族数据库、图数据库等各类 NoSQL,解决经典关系型数据库无法解决的痛点。其中,对灵活存储半结构化数据的需求,使得类似 MongoDB 这类文档数据库涌现出来。各大主流关系型数据库也在响应趋势,开始支持半结构化数据。早在 2012 年,PostgreSQL 9.2 就已经添加了 JSON 数据类型 [ ref ]。Oracle 也在 2014 年 7 月发布 12c Release 1 后开始支持 JSON [ ref1, ref2 ]。Facebook 在 MySQL 5.7 没发布之前,对 5.6 版本的 MySQL 添加了存储 JSON 功能,这个特性被 Facebook 命名为 DocStore (Document Database for MySQL at Facebook) [ doc, slides ]。另外,SQL 标准组织行动也很快,在 2014 年 3 月已经完成了 SQL/JSON 标准草案(DM32.2 SQL/JSON Proposals, part1, part2)[ slides ]。完整的草案在 2016 年 12 月正式被采纳为标准,即 SQL:2016。

阅读全文 »

Elastic Stack 日志分析平台搭建笔记

发表于 2019-01-14 | 更新于 2019-02-09 | 分类于 架构 | | 阅读次数
本文字数: 65k | 阅读时长 ≈ 59 分钟

Elastic Stack(旧称 ELK Stack))是最受欢迎的开源日志平台 [ ref ]。Elastic Stack 由 Elasticsearch、Logstash、Kibana 和 Beats 四个组件组成:

  • Beats,是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
  • Logstash,集中、转换和存储数据,是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。
  • Elasticsearch,搜索、分析和存储您的数据,是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可靠性和管理便捷性而设计。
  • Kibana,实现数据可视化,导览 Elastic Stack。能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。
阅读全文 »

Java Agent 学习笔记

发表于 2018-10-04 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 49k | 阅读时长 ≈ 45 分钟

Java 从 1.5 开始提供了 java.lang.instrument(doc)包,该包为检测(instrument) Java 程序提供 API,比如用于监控、收集性能信息、诊断问题。通过 java.lang.instrument 实现工具被称为 Java Agent。Java Agent 可以修改类文件的字节码,通常是,在字节码方法插入额外的字节码来完成检测。关于如何使用 java.lang.instrument 包,可以参考 javadoc 的包描述(en, zh)。

开发 Java Agent 的涉及的要点如下图所示 [ ref ]
Java Agent

Java Agent 支持两种方式加载,启动时加载,即在 JVM 程序启动时在命令行指定一个选项来启动代理;启动后加载,这种方式使用从 JDK 1.6 开始提供的 Attach API 来动态加载代理。

阅读全文 »

MySQL binlog:格式、增量恢复、闪回、Java 解析

发表于 2018-06-18 | 更新于 2018-10-21 | 分类于 MySQL | | 阅读次数
本文字数: 42k | 阅读时长 ≈ 38 分钟

MySQL 的 binlog 日志文件,记录了数据库表的全部修改操作。本文简单整理 MySQL binlog 相关知识,以及如何使用 binlog 恢复或闪回数据库数据。

STATEMENT 格式的 binlog

要想开启 binlog,需要在启动 MySQL 时传入 --log-bin 参数。或者也可以在 MySQL 配置文件 /etc/my.cnf,设置 log_bin 开启 binlog。MySQL 5.7 开始,开启 binlog 后,--server-id 参数也必须指定,否则 MySQL 服务器会启动失败。

阅读全文 »

编译与调试 OpenJDK

发表于 2018-02-05 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 19k | 阅读时长 ≈ 17 分钟

编译 OpenJDK

关于编译 OpenJDK 官方文档有很好的介绍,http://openjdk.java.net/groups/build/,汇总了 JDK 6, JDK 7, JDK 8, JDK 9 的 build OpenJDK 的 README 文件。编译 JDK 8 需要 Xcode 4,现在 Xcode 版本已远高于 4 了,前人尝试编译发现有很多坑 [ doc, blog ],所以本文直接开始尝试编译 OpenJDK 9。OpenJDK 9 源码根目录下的 README 文件有如下提示信息(github, hg):

阅读全文 »

栈帧与调用惯例

发表于 2018-01-29 | 更新于 2018-10-24 | 分类于 计算机系统 | | 阅读次数
本文字数: 33k | 阅读时长 ≈ 30 分钟

栈与栈帧

要想知道函数是怎么被调用的,需要了解栈帧和调用惯例相关知识。俞甲子2009 的“第10章 内存: 栈与堆”对相关概念有很好的介绍。本文是对相关知识的学习笔记。

阅读全文 »

Java 外部函数接口:JNI, JNA, JNR

发表于 2018-01-24 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 40k | 阅读时长 ≈ 37 分钟

遇到的问题

前段时间开发的时候,遇到一个问题,就是如何用 Java 实现 chdir?网上搜索一番,发现了 JNR-POSIX 项目 [ stackoverflow ]。俗话说,好记性不如烂笔头。现在将涉及到的相关知识点总结成笔记。

阅读全文 »

ZooKeeper 学习笔记

发表于 2017-11-23 | 更新于 2019-06-18 | 分类于 分布式 | | 阅读次数
本文字数: 43k | 阅读时长 ≈ 39 分钟

ZooKeeper 介绍

ZooKeeper(wiki,home,github) 是用于分布式应用的开源的分布式协调服务。通过暴露简单的原语,分布式应用能在之上构建更高层的服务,如同步、配置管理和组成员管理等。在设计上易于编程开发,并且数据模型使用了熟知的文件系统目录树结构 [ doc ]。

阅读全文 »

Java 运行时获取方法参数名

发表于 2017-05-02 | 更新于 2019-09-05 | 分类于 Java | | 阅读次数
本文字数: 43k | 阅读时长 ≈ 39 分钟

本文整理 Java 运行时获取方法参数名的两种方法,Java 8 的最新的方法和 Java 8 之前的方法。

Java 8 的新特性

翻阅 Java 8 的新特性,可以看到有这么一条“JEP 118: Access to Parameter Names at Runtime”。这个特性就是为了能运行时获取参数名新加的。这个 JEP 只是功能增强的提案,并没有最终实现的 JDK 相关的 API 的介绍。查看“Enhancements to the Reflection API” 会看到如下介绍:

阅读全文 »

Java 编译器 javac 笔记:javac API、注解处理 API 与 Lombok 原理

发表于 2017-04-20 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 35k | 阅读时长 ≈ 32 分钟

javac 是 Java 代码的编译器 [ openjdk, oracle ],初学 Java 的时候就应该接触过。本笔记整理一些 javac 相关的高级用法。

javac 命令行

javac 命令行工具,官方文档有完整的使用说明,doc。当然也可以,运行 javac -help 或 man javac 查看帮助信息。下面是经典的 hello world 代码:

阅读全文 »

Java Executor 框架笔记

发表于 2017-03-23 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 62k | 阅读时长 ≈ 56 分钟

本文整理 Java 并发框架 Executor 的用法,并对结合 JDK 相关的实现源码作简单分析。

任务与线程池

先来看下 Executor 框架的 javadoc 描述 [ ref1 ref2 ]

阅读全文 »

MySQL数据库字段类型杂记

发表于 2017-01-04 | 更新于 2018-09-02 | 分类于 MySQL | | 阅读次数
本文字数: 14k | 阅读时长 ≈ 12 分钟

文本整理MySQL字段类型的常见问题和用法。

数值类型

int和int(3)

新手在定义整数字段时,常常想当然通过,如int(3),来限制整数的有效长度,然而这样仅仅只是指定了显示宽度。选择有效长度不同的整数,需要使用tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)或bigint(8个字节)。MySQL的相关文档如下[doc]:

阅读全文 »

MyBatis 生成器的表注释

发表于 2016-12-25 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 22k | 阅读时长 ≈ 20 分钟

MyBatis是流行的持久化框架,通过抽象底层的JDBC代码,在类对象和数据库列之间自动映射SQL的参数和结果,以SQL为映射的间接层,实现SQL映射器。MyBatis Generator (MBG) 是一个Mybatis的代码生成器,内省数据库的表,然后自动生成映射表的实体类,并生成CRUD(插入,查询,更新,删除)操作的样板代码。MyBatis,之前所在的公司在用,生成器也在用。虽然生成器大大提供了开发效率,但生成的代码可读性比较低,尤其是自动生成的实体类,如下:

阅读全文 »

Java 8 的 Stream API 笔记

发表于 2016-12-25 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 23k | 阅读时长 ≈ 21 分钟

Java 8增加了函数式编程的能力,通过流(Stream)API来支持对集合的filter/map/reduce操作。流是Java 8中处理集合的关键抽象概念,实现声明式的集合处理方式。

阅读全文 »

iText处理pdf书签和标注代码乱记

发表于 2016-12-23 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 8.1k | 阅读时长 ≈ 7 分钟

将文档1中的书签转存到文档2​:

阅读全文 »

软件开发书籍资料整理

发表于 2016-12-05 | 更新于 2017-04-27 | 分类于 编程 | | 阅读次数
本文字数: 27k | 阅读时长 ≈ 25 分钟

本文整理软件开发、项目管理、软件工程相关的书籍。

阅读全文 »

Apache Commons代码片段

发表于 2016-11-27 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 32k | 阅读时长 ≈ 29 分钟

在Java领域,最流行的的工具库就是Apache Commons和Google Guava [ref]。

Apache Commons,wiki,commons.apache.org:Commons包含各种各样的子项目,其中比较流行的有IO, Lang, Logging, Codec, Collections, dbcp等[ref]

阅读全文 »

数据库书籍资料整理

发表于 2016-11-26 | 更新于 2018-09-02 | 分类于 计算机系统 | | 阅读次数
本文字数: 14k | 阅读时长 ≈ 13 分钟

本文整理一些经典的数据库教材以及MySQL相关书籍。

阅读全文 »

编程语言与编译器书籍资料整理

发表于 2016-11-26 | 更新于 2017-04-27 | 分类于 编程 | | 阅读次数
本文字数: 8.9k | 阅读时长 ≈ 8 分钟

本文整理编程语言与编译器相关的经典书籍。

阅读全文 »

Java 官方文档整理

发表于 2016-11-20 | 更新于 2019-05-25 | 分类于 Java | | 阅读次数
本文字数: 11k | 阅读时长 ≈ 10 分钟

本文整理一些学习Java需要翻阅或必须的官方文档资料。

阅读全文 »
12
nullwy

nullwy

21 日志
6 分类
39 标签
RSS
GitHub 豆瓣 E-Mail SegmentFault
© 2019 nullwy | 211k | 3:12
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v6.4.2
总访客量 总访问量