0%

这篇笔记摘选自张满胜老师的《英语语法新思维初级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

名词

名词短语

名词短语是由名词与它的修饰语一起构成的。名词的修饰语与名词的位置关系不外乎两种:一是放在被修饰名词的前面,我们称之为前置定语或定语;二是放在被修饰名词的后面,我们称之为后置定语。
一般来讲,名词前面有两种修饰语。其一是限定词,用来限定名词所指的范围,对名词起泛指或特指、定量或不定量等限定修饰作用。
其二是形容词,是用来表示名词的性质和特征的。

左二右六公式

汉语和英语很大的基本差别

汉语的定语一律是在名词的前面,而英语的定语有在名词前面的,也有在名词后面的,更多的定语是置于被修饰名词的后面,构成后置定语。

名词的分类

Read more »

这篇笔记总结、摘选自周志明老师的《深入理解Java虚拟机第3版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。
思维导图版本点击这里

虚拟机概述

中间语言翻译(从Java翻译到机器码)

从中间语言翻译到机器码

通过C语言翻译(初JVM)

通过将字节码class翻译成C语言,比如定义iadd这个字节码是相加的助记符,然后通过c语言来解析字节码中的iadd就是相加,并指向对应的c语言相加的c程序来做实际运算,这样子的话,这个解析字节码的C程序就是所谓的JVM,最简陋效率最低的初代JVM

直接翻译为机器码

CS:IP

CS与IPO这是物理CPU内部的两个寄存器。对于一台物理机器而言,这两个寄存器是最重要的寄存器,因为CPU在取指令时便完全依靠这两个寄存器。CS寄存器保存段地址,IP保存偏移地址。CS和IP这两个寄存器的值能够唯一确定内存中的一个地址,CPU在执行机器指令之前,便通过这两个寄存器定位到目标内存位置,并将该位置处的机器指令取出来进行运算。函数跳转的本质其实便是修改CS和IP这两个寄存器的内容,使其指向到目标函数所在内存的首地址,这样CPU便能执行目标函数了。Java虚拟机要想让物理CPU直接执行Java程序所对应的目标机器码,也得修改这两个寄存器才能实现。

在C语言中,能够使用语法糖来修改CS:IP段寄存器,这样C程序就能直接动态执行机器码。
既然都能在C语言中直接动态执行机器码了(可以简单理解为:C语言的变量里面可以复制解析出来的机器码,然后直接执行),我们只要将中间语言指令直接翻译为机器码,然后让CS:IP直接指向这段机器码执行,这也是现代JVM最重要的的基本原理之一。

Read more »

基础

基本类型的零值

自动类型转换顺序

char>int>long>float>double

关键字

所有成员变量的调用附带上this,防止代码产生歧义或冲突。

synchronized

以某个代码片段为例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
public void fizz(Runnable printFizz) throws InterruptedException {
while (i <= n) {
synchronized (this) {
if (i % 3 == 0 && i % 5 != 0) {
printFizz.run();
i++;
this.notifyAll();
} else {
this.wait();
}
}
}
}
Read more »

TodoItem

那些数据适合存储进去? todo

维护的增删改查应不应该放弃使用缓存(只是为了不出现一种情况,就是修改了数据库,缓存依然还是老的数据)
另外还要考虑到维护的时候增删改其实使用的频率是不多的,所有没必要使用缓存,当然,高频率增删改的除外。
使用到缓存的一般是可以是高频率的查询

Basic Knowledge

redis数据持久化,一般重启不丢失

https://redis.io/topics/persistence
会默认开启RDB 持久化

Redis的数据类型

  1. 字符串(String)
  2. 字符串列表(list)
  3. 有序字符串集合(sorted set)
  4. 哈希(hash)
  5. 字符串集合(set)

常用命令

https://www.runoob.com/redis/redis-commands.html

Read more »