自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CrazyTiger的博客

不积小流何以成江河

  • 博客(132)
  • 资源 (2)
  • 收藏
  • 关注

转载 大数据已死

但是,十年过去了,大数据并没有成为发展的瓶颈,我们依然足以处理产生的所有数据,在可预见的将来也是如此。预言中的大数据时代,看上去不仅没有来临,反而变得遥遥无期了。 “大数据“这个词的热度,也在不断降温,被提及次数变少了,招聘岗位也慢慢不见了。与之相应的是,”大数据“这个技术领域,也进展甚微,没有诞生新的概念和理论,技术没有突破,很多方向都停滞不前。比如,专为处理大数据而设计的 NoSQL 数据库,声势越来越小,陷入停滞,反而是传统的关系型数据库(SQLite、Postgres、MySQL)强劲增

2023-03-04 11:16:10 304

原创 计算机原理动态展示网站收集(不定期记得更新)

记录一些帮助学习数据结构的网站,可以动态展示。

2023-02-20 18:56:32 180

原创 研发人员为什么需要安全感?

摘抄于《郭东白的架构课》一直觉得我们的开发就是对业务和机器编程,今天听到这个观点,觉得很有意思。

2022-10-22 18:27:22 212

翻译 软件架构模式:5 分钟阅读

原文:https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2软件架构模式:5 分钟阅读当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易于理解。在我找到Mark Richards 的一本书Software Architecture Patterns 之前.

2022-01-14 13:59:31 193

原创 JDK8中关于最小堆的实现(PriorityBlockingQueue)

java.util.concurrent.PriorityBlockingQueue#siftUpComparable代码很简单,记录一下。 /** * Inserts item x at position k, maintaining heap invariant by * promoting x up the tree until it is greater than or equal to * its parent, or is the root. .

2021-12-26 09:50:41 232

原创 使用Unsafe做一个简单的CAS自旋锁

AQS底层使用的Unsafe类的compareAndSwapInt的方式加上volatile变量来做的多线程的无锁更新。所以想着是不是可以直接使用这种方式做一个简单的自旋锁。AbstractQueuedSynchronizer(AQS)的代码如下: /** * Setup to support compareAndSet. We need to natively implement * this here: For the sake of permitting futur.

2021-07-13 16:31:14 236

转载 从ReentrantLock的实现看AQS的原理及应用(转自美团技术团队)

前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到原理层,并通过ReentrantLock的基本特性和ReentrantLock与AQS的关联,来深入解读AQS相关独占锁的知识点,同时采取问答的模式来帮助大家理解AQS。由于篇幅原因,本篇文章主要阐述AQS中独占锁的逻辑和Sync

2021-05-24 09:36:39 314 2

原创 Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在Java EE的应⽤开发中,⽀持POJO和使⽤JavaBean的开发⽅式,使应⽤⾯向接⼜开发,充分⽀持OO(⾯向对.

2021-05-04 13:51:14 203 1

转载 TEA加密算法java版

/** * <p> * * Tea算法 * 每次操作可以处理8个字节数据 * KEY为16字节,应为包含4个int型数的int[],一个int为4个字节 * 加密解密轮数应为8的倍数,推荐加密轮数为64轮 * @author hyl * @version v1.0: Tea.java, v 0.1 2021/3/12 13:48 $ * */public class Tea { //加密 public byte[] encrypt(byte[] content

2021-03-12 14:00:14 941 2

原创 具有重置功能的 CountDownLatch(来自RocketMQ源码)

从 RocketMQ 中摘抄工具类,具有重置功能的 CountDownLatch/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownersh.

2021-01-13 18:07:17 600 2

原创 Java 创建钩子 Hook

创建钩子JVM 在正常退出时,会启动钩子做一些善后事情。import java.util.concurrent.TimeUnit;/** * 钩子测试 * <p> * * @author hyl * @version v1.0: HookTest.java, v 0.1 2021/1/8 15:22 $ */public class HookTest { public static void main(String[] args) { Runt.

2021-01-08 15:44:12 372

原创 Java 之 IO 和 NIO

Java I/O 系统《Java 编程思想》第四版,第18章笔记。对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务。现有的大量不同方案已经说明了这一点。挑战似乎来自于要涵盖所有的可能性。不仅存在各种 I/O 源端的想要与之通信的接收端(文件、控制台、网络链接等),而且还需要以多种不同的方式与它们进行通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字等)。Java 类库的设计者通过创建大量的类来解决这个难题。一开始,可能会对 Java I/O 系统提供了如此多的类而

2021-01-01 13:54:40 226

原创 MySQL 字符集和校对——《高性能MySQL》

读《高性能MySQL》第三版,笔记。目录1、字符集和校对1.1、MySQL 如何使用字符集1.2、选择字符集和校对规则1.3、字符集和校对规则如何影响查询1、字符集和校对字符集:是指一种从二进制编码到某类字符符号的映射,可以参考如何使用一个字节来表示英文字母。校对:是指一组用于某个字符集的排序规则。MySQL 4.1 和之后的版本中,每一类编码字符都有对应的字符集和校对规则。1.1、MySQL 如何使用字符集每种字符集都可能有多种校对规则,并且都有一个默认的校对规则。每个校对规则都是针对.

2020-12-14 13:16:46 158

原创 MySQL 绑定变量——《高性能MySQL》

读《高性能MySQL》第三版,笔记。1、绑定变量官方文档:https://dev.mysql.com/doc/refman/5.7/en/sql-prepared-statements.html从 MySQL 4.1 版本开始,就支持服务器端的绑定变量(prepared statement),这大大提供了客户端和服务器端数据传输的效率。当创建一个绑定变量 SQL 时,客户端向服务器发送了一个 SQL 语句的原型。服务器端收到这个 SQL 语句框架后,解析并存储这个 SQL 语句的执行计划,.

2020-12-11 17:26:17 1207

原创 MySQL 分区表——《高性能MySQL》

读《高性能MySQL》第三版,笔记。目录1、分区表1.1、分区表的原理1.2、分区表的类型1.3、如何使用分区表1.4、什么情况下会出问题1.5、查询优化1.6、合并表1.7 分表分库的区别1、分区表官方手册:https://dev.mysql.com/doc/refman/5.7/en/partitioning.html对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象(Handler Object)的封装。对分区表的请求,都会.

2020-12-11 12:47:56 8979

原创 MySQL 常用命令行指令(个人记录)

MySQL 常用命令行指令(个人记录)

2020-12-10 23:52:01 289

原创 MySQL 查询性能优化——《高性能MySQL》

读《高性能MySQL》第三版,笔记。目录1、查询的生命周期2、慢查询基础:优化数据访问2.1、是否向数据库请求了不需要的数据2.2、MySQL 是否扫描额外的记录3、重构查询的方式3.1、一个复杂查询还是多个简单查询3.2、切分查询3.2、分解关联查询4、查询执行的基础4.1、MySQL 客户端/服务器通信协议4.2、查询缓存4.3、查询优化处理4.4、查询执行引擎4.5、返回结果给客户端5、MySQL 查询优化器的局限性5.1、关联子查询5.2、UNION 的限制5.3、索引合并优化5.4、等值传递.

2020-12-08 15:52:45 322

原创 HashMap里的一个小例子(Set作为key)

最近和朋友讨论时,突然朋友抛出一段代码。如下: Map<Set,Integer> map = new HashMap<>(); Set s1 = new HashSet(); s1.add(1); s1.add(2); Set s2 = new HashSet(); s2.add(1); s2.add(2); map.put(s1,1); map.put(s2,2); System.out.println(map.size(

2020-12-03 09:53:58 706

原创 MySQL 查询的成本的查看

读《高性能MySQL》第三版,笔记。MySQL 使用基于成本的优化器,它将尝试预测一个查询使用某种执行计划时的成本,选择其中成本最小的一个。最初,成本的最小单位是随机读取一个 4K 数据页的成本,后来(成本计算公式)变得更加复杂,并且引入了一些 “ 因子 ” 来估算某些操作的代价,如当执行一次 WHERE 条件比较的成本。可以通过查询当前会话的 last_query_cost 的值来得知 MySQL 计算的当前查询的成本。mysql> show status like 'last_que.

2020-12-01 06:06:19 785

原创 MySQL高性能的索引策略——《高性能MySQL》

读《高性能MySQL》第三版,笔记。正确地创建和使用索引是实现高性能查询的基础。高效地选择和使用索引有很多种方式,其中有些是针对特殊案例的优化方法,有些则是针对特定的行为的优化。使用哪个索引,以及如何评估选择不同索引的性能影响的技巧,则需要持续不断地学习。接下来几个小节帮助理解如何高效地使用索引。1. 独立的列我们通常会看到一些查询不当地使用索引,或者使用 MySQL 无法使用已有的索引。如果查询中的列不是独立的,则 MySQL 就不会使用索引。“ 独立的列 ” 是指索引列不能是表达式的一部.

2020-11-25 05:05:40 177

转载 MySQL EXPLAIN命令的格式说明(官方英文)

8.8.2 EXPLAIN Output FormatThe EXPLAIN statement provides information about how MySQL executes statements. EXPLAIN works with SELECT, DELETE, INSERT, REPLACE, and UPDATE statements.EXPLAIN returns a row of information for each table used in the SELECT st

2020-11-25 03:55:08 580

原创 MySQL 解析单条查询

读《高性能MySQL》第三版,笔记。官方文档:https://dev.mysql.com/doc/refman/5.7/en/show-profile.html使用 SHOW PROFILE set profiling = 1; show profiles; show profile for query 1;使用 help 命令查看说明:mysql> help show profileName: 'SHOW PROFILE'Description:Syntax:SH.

2020-11-23 19:38:42 211

原创 MySQL 索引的类型——《高性能MySQL》

读《高性能MySQL》第三版,笔记。官方文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html索引有很多种类型,可以为不同的场景提供更好的性能。在 MySQL 中,索引是在存储引擎层而不是服务器层实现的。所以,并没有统一的索引标准:不同存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。下面我们看看 MySQL 支持的索引类型,以及他们的优.

2020-11-23 18:46:16 142

原创 MySQL 查看数据库文件所在

MySQL 查看数据库文件所在show variables like '%dir%';

2020-11-23 04:15:53 717

原创 VARCHAR 和 CHAR 类型(MySQL)

读《高性能MySQL》第三版 笔记。官方文档 https://dev.mysql.com/doc/refman/5.7/en/char.htmlVARCHAR 和 CHAR 是两种最主要得字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是 InnoDB 和 / 或者 MyISAM。如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档。先看看 VARCHAR 和 CHAR 值通常在磁盘上怎么存储。请注意,存储引.

2020-11-22 00:20:08 345

原创 MySQL在事务中混合使用存储引擎

读《高性能MySQL》笔记。MySQL 服务器层不管理事务,事务是由下层的存储引擎实现的。所以在同一个事务中使用多种存储引擎是不可靠的。如果在事务中混合使用了事务型和非事务型的表(例如 InnoDB 和 MyISAM 表),在正常情况下不会由什么问题。但如果该事务需要回滚,非事务型的表上的变更就无法撤销,这会导致数据库处于不一致的状态,这种情况很难修复,事务的最终结果将无法确定。所以,为每张表选择何时的存储引擎非常重要。在非事务型的表上执行事务相关操作的时候,MySQL 通常不会发出提醒,也不会.

2020-11-15 20:57:04 227

原创 关于Spring事务的面试题(重排版)

对我之前一遍的重新排版 关于Spring事务的面试题数据库事务和 Spring 事务是一般面试都会被提到,很多朋友写惯了代码,很少花时间去整理归纳这些东西,结果本来会的东西,居然吞吞吐吐答不上来。下面是我收集到一些关于Spring事务的问题,希望能帮助大家过关。事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。事务最重要的两个特性:事务的传播级别:定义了事务在 传播 方面的控制范围。数据的隔离级别:定义了事务在 数据库读写 方面的控制范.

2020-11-15 20:25:31 2348

原创 四种数据库的隔离级别

读《高性能MySQL》笔记。四种数据库隔离级别:READ UNCOMMITED(未提交读):​ 在 READ UNCOMMITED 级别,事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。这个级别会导致很多问题,从性能上来说,READ UNCOMMITED 不会比其他的级别好太多,但却缺少其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。READ COMMITED(提交读):​ 大多数数据库系统的默认隔离级.

2020-11-15 18:43:59 221

原创 第四部分 独立功能的实现——《Redis设计与实现》

读《Redis设计与实现》黄键宏著,笔记,第四部分。第四部分 独立功能的实现4.1 发布与订阅Redis 的发布与订阅功能由 PUBLISH、SUBSCRIBE、PSUBSCRIBE 等命令组成。通过执行 SUBSCRIBE 命令,客户端可以订阅一个或者多个频道,从而成为这些频道的订阅者(subscriber):每当由其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。除了订阅频道之外,客户端还可以通过执行 PSUBSCRIBE 命令订阅一个或者多个模式,.

2020-11-09 15:21:52 158

原创 第三部分 多机数据库的实现——《Redis设计与实现》

读《Redis设计与实现》黄键宏著,笔记,第一部分。第三部分 多机数据库的实现3.1 复制在 Redis 中,用户可以通过执行 SLAVEOF 命令或者配置 slaveof 选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被成为从服务器(slave)。进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称为 “ 数据库状态一致 ”,或者简称 “ 一致 ”。旧版复制功能的实现(2.8以前).

2020-11-05 12:35:36 202 1

转载 Redis 集群规范(官方)

Redis 集群规范Redis 集群的目标Redis 集群是 Redis 的一个分布式实现,主要是为了实现以下这些目标(按在设计中的重要性排序):在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。没有合并操作,这样在 Redis 的数据模型中最典型的大数据值中也能有很好的表现。写入安全(Write safety):那些与大多数节点相连的客户端所做的写入操作,系统尝试全部都保存下来。不过公认的,还是会有小部分(small windows?)写入会丢失。可用性(A

2020-11-03 12:51:51 265

转载 Redis 集群教程(官方)

Redis 集群教程本文档是Redis集群的一般介绍,没有涉及复杂难懂的分布式概念的赘述,只是提供了从用户角度来如何搭建测试以及使用的方法,如果你打算使用并深入了解Redis集群,推荐阅读完本章节后,仔细阅读 Redis 集群规范 一章。本教程试图提供最终用户一个简单的关于集群和一致性特征的描述请注意,本教程使用于Redis3.0(包括3.0)以上版本如果你计划部署集群,那么我们建议你从阅读这个文档开始。Redis集群介绍Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Re

2020-11-03 12:48:36 1024 1

转载 Redis 复制(官方)

复制在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。这个系统的运行依靠三个主要的机制:当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连

2020-10-31 06:45:10 148 1

原创 第二部分 单机数据库的实现——《Redis设计与实现》

读《Redis设计与实现》笔记,第二部分。

2020-10-31 04:59:37 151 2

转载 MongoDB、Hbase、Redis等NoSQL优劣势、应用场景

MongoDB、Hbase、Redis等NoSQL优劣势、应用场景NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务。NoSQL的四大种类NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借易扩展、大数据量

2020-10-29 05:54:24 272

转载 Redis 持久化(官方)

Redis 持久化,中文文档转载

2020-10-28 07:36:55 164

转载 Redis RDB 文件格式(官方)

Redis RDB 文件格式官方定义https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format

2020-10-28 00:51:16 598

原创 第一部分 数据结构与对象——《Redis设计与实现》

读《Redis设计与实现》笔记,第一部分。第一部分 数据结构与对象1.1 简单动态字符串Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串表示。在 Redis 里面,C 字符串只会作为字符串字面量(string literal)用在一些无须对字符串进行修改的地方,比如日志打印。SDS 的定义stru.

2020-10-26 05:07:50 191

原创 读《Java并发编程实战》全书笔记

读《Java并发编程实战》全书笔记。完全是按照个人阅读记录的。如果需要了解更多,请购买正版书。

2020-10-23 00:36:16 218

原创 Michael-Scott(Michael and Scott,1996)非阻塞算法中的插入算法

Michael-Scott(Michael and Scott,1996)非阻塞算法中的插入算法

2020-10-22 19:37:23 358

wilson94-gc.pdf

Paul R. Wilson 1994关于垃圾收集器的论文。全文60页,介绍垃圾回收器的很多理论,全英文。

2020-07-22

CatchMe小游戏

闲着无聊 CatchMe小游戏

2016-05-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除