背景

最近在工作工程中遇到一个关于MySQL分区表索引的问题

研究过程

代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `test_a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_time` datetime NOT NULL,
`col` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`,`create_time`),
KEY `index_create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE COLUMNS(create_time)
(PARTITION p1 VALUES LESS THAN ('20210223') ENGINE = InnoDB,
PARTITION p2 VALUES LESS THAN ('20210224') ENGINE = InnoDB,
PARTITION p3 VALUES LESS THAN ('20210225') ENGINE = InnoDB,
PARTITION p4 VALUES LESS THAN ('20210226') ENGINE = InnoDB,
PARTITION p5 VALUES LESS THAN ('20210227') ENGINE = InnoDB,
PARTITION p6 VALUES LESS THAN ('20210228') ENGINE = InnoDB,
PARTITION p7 VALUES LESS THAN ('20210301') ENGINE = InnoDB,
PARTITION p8 VALUES LESS THAN ('20210302') ENGINE = InnoDB,
PARTITION p9 VALUES LESS THAN ('20210303') ENGINE = InnoDB,
PARTITION p10 VALUES LESS THAN ('20210304') ENGINE = InnoDB,
PARTITION p11 VALUES LESS THAN ('20210305') ENGINE = InnoDB) */;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `test_b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_time` datetime NOT NULL,
`col` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`,`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE COLUMNS(create_time)
(PARTITION p1 VALUES LESS THAN ('20210223') ENGINE = InnoDB,
PARTITION p2 VALUES LESS THAN ('20210224') ENGINE = InnoDB,
PARTITION p3 VALUES LESS THAN ('20210225') ENGINE = InnoDB,
PARTITION p4 VALUES LESS THAN ('20210226') ENGINE = InnoDB,
PARTITION p5 VALUES LESS THAN ('20210227') ENGINE = InnoDB,
PARTITION p6 VALUES LESS THAN ('20210228') ENGINE = InnoDB,
PARTITION p7 VALUES LESS THAN ('20210301') ENGINE = InnoDB,
PARTITION p8 VALUES LESS THAN ('20210302') ENGINE = InnoDB,
PARTITION p9 VALUES LESS THAN ('20210303') ENGINE = InnoDB,
PARTITION p10 VALUES LESS THAN ('20210304') ENGINE = InnoDB,
PARTITION p11 VALUES LESS THAN ('20210305') ENGINE = InnoDB) */;

总结

后记

更新

由于TravisCI不论公有开始私有仓库开启收费模式了,故而我选择放弃。
本博客相关全部交付GitHub Actions自行托管编译了,相关教程请站内搜索GitHub Actions即可

阅读全文 »

前篇

记录日常生活中,观看过的电影,做一些影评或简或杂,留存一点记忆。观看列表,多半都可以在豆瓣中搜到,其中多数不低于7分。

前言

本篇用于记录日常学习自B站UP主英语兔专题合集,记录视频中提到的知识点,一方面用于个人学习回顾,另一方面用于学习整理分享。
英语兔B站主页:https://space.bilibili.com/483162496
文章附录会备注整个学习大纲的xmind导图文件,有需要可以直接下载。
声明:本篇仅作为学习笔记分享,请勿挪作它用,如有商业意图,请联系英语兔本人。

摘录原因

先写一部分原因(第一印象),等完整学习完成之后,再重新回过头来填写这部分内容。

  • 发音确实纯正,很到位
  • 演示文稿写的纯粹到位
  • 内容程度:不是在教创新,而是将复杂内容简单化,以一种通俗易懂的方式讲授(暂时无法准确写出具体体会)

语法合集

学习语法的目的:造句
英语语法的核心就是动词!

阅读全文 »

背景

本篇所有涉及英文听力文稿均来自B站UP主:Coach-Shane专题视频
https://www.bilibili.com/video/BV1U7411a7xG?p=1
所有文稿,经视频学习后,手工摘录备注于此,便于自己复习同时方便他人查阅。

正文

Dictation 1

正文

Mother Teresa, who received a Nobel Peace Prize for her work on behalf of the poor, dies in Calcutta, India – she was 87 years old.

Dictation 2

阅读全文 »

背景

最近几天升级置换了自己的群辉NAS硬盘,也藉由此开始混起了PT。
2020年在硬件上升级最大的就是:置换了4K显示器(也是我换的最满意的一个硬设之一),其实早就该这么搞了。

阅读全文 »

背景

本篇搭建设计到的相关资源如下:

  • 操作系统:CentOS 7.9
  • JDK: 1.8.0_211
  • Nexus私服版本:nexus-3.29.2-02

Nexus介绍

Nexus 是Maven仓库管理器,如果我们使用Maven,我们可以从Maven中央仓库下载所需要的构件(artifact),但这通常没有公司这么干,一般都是在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,它还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。
Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。

Nexus私服特点

搭建私服后:本地仓库没有,再去私服下载,私服没有,再去中央仓库下载

  • 减少网络带宽流量
  • 加速Maven构建
  • 部署第三方构件
  • 提高稳定性、增强控制
  • 降低中央仓库的负载
阅读全文 »

调色相关

注:调色场景并不是绝对一定,掌握住要点,针对不同照片的具体展现形式,不同的调整才是关键所在。

青橙色调

  • 适合场景:
    • 白天和夜景的大部分场景
    • 画面中具备天空、大海等青蓝色元素,和肤色,灯光等橙色元素即可
  • 一种调整细节思路
    • HSL界面(主要关注色相饱和度):
      • 红色和黄色色相往橙色偏
      • 橙色色相(稍微)偏一点红色,饱和度提升。有人的话,橙色调整需要额外注意,因为橙色会改人物的肤色。
      • (如果有)树叶草坪等元素:色相往黄色偏,饱和度降低。
      • 青色和蓝色:色相往 中间偏 ,饱和度酌情提升
    • 校准页面(Camera RAW 和 Lightroom修改)
      • 红颜色右移,红颜色饱和度左移
      • 蓝颜色左移,蓝颜色饱和度右移
  • 二种调整细节思路
阅读全文 »

背景

JVM作为Java底层的核心,一直以来是我的短板,其底层等相关不甚了解。借此机会,通过这种方式学习,记录,分析&分享。
书中涉及代码调试案例,收录在learningjvm项目中,各看官有需要可以自行查阅。

书籍实录

第一章:走进JAVA

Java发展史

宏观上了解Java整个发展体系:

  • 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java1.0版本,并且提出“Write Once, Run Anyware”的口号。
  • 1996年1月23日,JDK1.0发布,代表技术包括:Java虚拟机、Applet、AWT等。
    阅读全文 »

课程实录

(01)Java代码是怎么运行的?

  • 从虚拟机视角来看,执行 Java 代码首先需要将它编译而成的 class 文件加载到 Java 虚拟机中。加载后的 Java 类会被存放于方法区(Method Area)中。实际运行时,虚拟机会执行方法区内的代码。
    Java 虚拟机会将栈细分为面向 Java 方法的 Java 方法栈,面向本地方法(用 C++ 写的 native 方法)的本地方法栈,以及存放各个线程执行位置的 PC 寄存器。
  • 在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。这个栈帧的大小是提前计算好的,而且 Java 虚拟机不要求栈帧在内存空间里连续分布。
  • 当退出当前执行的方法时,不管是正常返回还是异常返回,Java 虚拟机均会弹出当前线程的当前栈帧,并将之舍弃。
    在 HotSpot 里面,上述翻译过程有两种形式:
  • 第一种是解释执行,即逐条将字节码翻译成机器码并执行;
  • 第二种是即时编译(Just-In-Time compilation,JIT),即将一个方法中包含的所有字节码编译成机器码后再执行。
    !(HotSpot字节码解释执行与即时编译)[52d27346/AutoCapture_2020-07-12_195739.jpg]
    两者之间,前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。

Java虚拟机的运行效率

HotSpot 采用了多种技术来提升启动性能以及峰值性能,刚刚提到的即时编译便是其中最重要的技术之一。即时编译建立在程序符合二八定律的假设上,也就是百分之二十的代码占据了百分之八十的计算资源。
对于占据大部分的 不常用的代码,我们无需耗费时间将其编译成机器码,而是采取解释执行的方式运行;另一方面,对于仅占据小部分的热点代码,我们则可以将其编译成机器码,以达到理想的运行速度。
注:综合编译,以优化达到理想的运行性能

为了满足不同用户场景的需要,HotSpot 内置了多个即时编译器:C1、C2 和 Graal。Graal 是 Java 10 正式引入的实验性即时编译器。

  • C1 又叫做 Client 编译器,面向的是对启动性能有要求的客户端 GUI 程序,采用的优化手段相对简单,因此编译时间较短。
  • C2 又叫做 Server 编译器,面向的是对峰值性能有要求的服务器端程序,采用的优化手段相对复杂,因此编译时间较长,但同时生成代码的执行效率较高。
    从 Java 7 开始,HotSpot 默认采用分层编译的方式:热点方法首先会被 C1 编译,而后热点方法中的热点会进一步被 C2 编译。

(03)Java虚拟机是如何加载Java类

(10)Java对象的内存布局

(11&12)垃圾回收

延伸阅读

额外实践

0%