mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-08-01 16:28:03 +08:00
Compare commits
8 Commits
164f98c74f
...
cef4d6a67b
Author | SHA1 | Date | |
---|---|---|---|
|
cef4d6a67b | ||
|
f0181eb020 | ||
|
9c23829570 | ||
|
63230a4a1b | ||
|
ef899bf447 | ||
|
2927fa2587 | ||
|
c4f3bb98ac | ||
|
6dfc8b1f9f |
@ -10,6 +10,7 @@ export const highQualityTechnicalArticles = arraySidebar([
|
||||
"programmer-quickly-learn-new-technology",
|
||||
"the-growth-strategy-of-the-technological-giant",
|
||||
"ten-years-of-dachang-growth-road",
|
||||
"meituan-three-year-summary-lesson-10",
|
||||
"seven-tips-for-becoming-an-advanced-programmer",
|
||||
"20-bad-habits-of-bad-programmers",
|
||||
"thinking-about-technology-and-business-after-five-years-of-work",
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { getDirname, path } from "@vuepress/utils";
|
||||
import { hopeTheme } from "vuepress-theme-hope";
|
||||
import { componentsPlugin } from "vuepress-plugin-components";
|
||||
|
||||
import navbar from "./navbar.js";
|
||||
import sidebar from "./sidebar/index.js";
|
||||
@ -50,8 +51,26 @@ export default hopeTheme({
|
||||
},
|
||||
|
||||
plugins: {
|
||||
components: {
|
||||
rootComponents: {
|
||||
notice: [
|
||||
{
|
||||
path: "/",
|
||||
title: "Java学习路线最新版",
|
||||
content:
|
||||
"花了一个月零碎的时间,我根据当下 Java 后端求职和招聘的最新要求,对之前写的 Java 后端学习路线进行了全面的优化和改进。这可能是你所见过的最用心、最全面的 Java 后端学习路线,共 4w+ 字。",
|
||||
actions: [
|
||||
{
|
||||
text: "免费获取",
|
||||
link: "https://mp.weixin.qq.com/s/6nWgi22UT5Y7nJiPfQ_XIw",
|
||||
type: "primary",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
blog: true,
|
||||
|
||||
copyright: {
|
||||
author: "JavaGuide(javaguide.cn)",
|
||||
license: "MIT",
|
||||
|
@ -11,7 +11,7 @@ MySQL 字符编码集中有两套 UTF-8 编码实现:**`utf8`** 和 **`utf8mb4
|
||||
|
||||
为什么会这样呢?这篇文章可以从源头给你解答。
|
||||
|
||||
## 何为字符集?
|
||||
## 字符集是什么?
|
||||
|
||||
字符是各种文字和符号的统称,包括各个国家文字、标点符号、表情、数字等等。 **字符集** 就是一系列字符的集合。字符集的种类较多,每个字符集可以表示的字符范围通常不同,就比如说有些字符集是无法表示汉字的。
|
||||
|
||||
@ -19,9 +19,15 @@ MySQL 字符编码集中有两套 UTF-8 编码实现:**`utf8`** 和 **`utf8mb4
|
||||
|
||||
我们要将这些字符和二进制的数据一一对应起来,比如说字符“a”对应“01100001”,反之,“01100001”对应 “a”。我们将字符对应二进制数据的过程称为"**字符编码**",反之,二进制数据解析成字符的过程称为“**字符解码**”。
|
||||
|
||||
## 字符编码是什么?
|
||||
|
||||
字符编码是一种将字符集中的字符与计算机中的二进制数据相互转换的方法,可以看作是一种映射规则。也就是说,字符编码的目的是为了让计算机能够存储和传输各种文字信息。
|
||||
|
||||
每种字符集都有自己的字符编码规则,常用的字符集编码规则有 ASCII 编码、 GB2312 编码、GBK 编码、GB18030 编码、Big5 编码、UTF-8 编码、UTF-16 编码等。
|
||||
|
||||
## 有哪些常见的字符集?
|
||||
|
||||
常见的字符集有 ASCII、GB2312、GBK、UTF-8……。
|
||||
常见的字符集有:ASCII、GB2312、GB18030、GBK、Unicode……。
|
||||
|
||||
不同的字符集的主要区别在于:
|
||||
|
||||
@ -64,7 +70,7 @@ GB18030 完全兼容 GB2312 和 GBK 字符集,纳入中国国内少数民族
|
||||
|
||||
BIG5 主要针对的是繁体中文,收录了 13000 多个汉字。
|
||||
|
||||
### Unicode & UTF-8 编码
|
||||
### Unicode & UTF-8
|
||||
|
||||
为了更加适合本国语言,诞生了很多种字符集。
|
||||
|
||||
@ -100,7 +106,7 @@ UTF-32 的规则最简单,不过缺陷也比较明显,对于英文字母这
|
||||
|
||||
## MySQL 字符集
|
||||
|
||||
MySQL 支持很多种字符编码的方式,比如 UTF-8、GB2312、GBK、BIG5。
|
||||
MySQL 支持很多种字符集的方式,比如 GB2312、GBK、BIG5、多种 Unicode 字符集(UTF-8 编码、UTF-16 编码、UCS-2 编码、UTF-32 编码等等)。
|
||||
|
||||
### 查看支持的字符集
|
||||
|
||||
@ -252,13 +258,13 @@ set names utf8mb4
|
||||
# SET collation_connection = utf8mb4;
|
||||
```
|
||||
|
||||
### jdbc 对连接字符集的影响
|
||||
### JDBC 对连接字符集的影响
|
||||
|
||||
不知道你们有没有碰到过存储 emoji 表情正常,但是使用类似 Navicat 之类的软件的进行查询的时候,发现 emoji 表情变成了问号的情况。这个问题很有可能就是 jdbc 驱动引起的。
|
||||
不知道你们有没有碰到过存储 emoji 表情正常,但是使用类似 Navicat 之类的软件的进行查询的时候,发现 emoji 表情变成了问号的情况。这个问题很有可能就是 JDBC 驱动引起的。
|
||||
|
||||
根据前面的内容,我们知道连接字符集也是会影响我们存储的数据的,而 jdbc 驱动会影响连接字符集。
|
||||
根据前面的内容,我们知道连接字符集也是会影响我们存储的数据的,而 JDBC 驱动会影响连接字符集。
|
||||
|
||||
`mysql-connector-java` (jdbc 驱动)主要通过这几个属性影响连接字符集:
|
||||
`mysql-connector-java` (JDBC 驱动)主要通过这几个属性影响连接字符集:
|
||||
|
||||
- `characterEncoding`
|
||||
- `characterSetResults`
|
||||
|
@ -77,7 +77,7 @@ _破音:拿出小本本,下面的内容非常重要哦!_
|
||||
|
||||
### Data model(数据模型)
|
||||
|
||||
ZooKeeper 数据模型采用层次化的多叉树形结构,每个节点上都可以存储数据,这些数据可以是数字、字符串或者是二级制序列。并且。每个节点还可以拥有 N 个子节点,最上层是根节点以“/”来代表。每个数据节点在 ZooKeeper 中被称为 **znode**,它是 ZooKeeper 中数据的最小单元。并且,每个 znode 都有一个唯一的路径标识。
|
||||
ZooKeeper 数据模型采用层次化的多叉树形结构,每个节点上都可以存储数据,这些数据可以是数字、字符串或者是二进制序列。并且。每个节点还可以拥有 N 个子节点,最上层是根节点以“/”来代表。每个数据节点在 ZooKeeper 中被称为 **znode**,它是 ZooKeeper 中数据的最小单元。并且,每个 znode 都有一个唯一的路径标识。
|
||||
|
||||
强调一句:**ZooKeeper 主要是用来协调服务的,而不是用来存储业务数据的,所以不要放比较大的数据在 znode 上,ZooKeeper 给出的每个节点的数据大小上限是 1M 。**
|
||||
|
||||
|
@ -17,7 +17,7 @@ tag:
|
||||
|
||||
比如说我们在学习 Spring 的时候,通过 Spring 官方文档你就可以知道 Spring 最新的技术动态,Spring 包含哪些模块 以及 Spring 可以帮你解决什么问题。
|
||||
|
||||

|
||||

|
||||
|
||||
再比如说我在学习消息队列的时候,我会先去了解这个消息队列一般在系统中有什么作用,帮助我们解决了什么问题。消息队列的种类很多,具体学习研究某个消息队列的时候,我会将其和自己已经学习过的消息队列作比较。像我自己在学习 RocketMQ 的时候,就会先将其和自己曾经学习过的第 1 个消息队列 ActiveMQ 进行比较,思考 RocketMQ 相对于 ActiveMQ 有了哪些提升,解决了 ActiveMQ 的哪些痛点,两者有哪些相似的地方,又有哪些不同的地方。
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
- [程序员如何快速学习新技术](./advanced-programmer/programmer-quickly-learn-new-technology.md)
|
||||
- [程序员的技术成长战略](./advanced-programmer/the-growth-strategy-of-the-technological-giant.md)
|
||||
- [十年大厂成长之路](./advanced-programmer/ten-years-of-dachang-growth-road.md)
|
||||
- [美团三年,总结的 10 条血泪教训](./advanced-programmer/meituan-three-year-summary-lesson-10.md)
|
||||
- [给想成长为高级别开发同学的七条建议](./advanced-programmer/seven-tips-for-becoming-an-advanced-programmer.md)
|
||||
- [糟糕程序员的 20 个坏习惯](./advanced-programmer/20-bad-habits-of-bad-programmers.md)
|
||||
- [工作五年之后,对技术和业务的思考](./advanced-programmer/thinking-about-technology-and-business-after-five-years-of-work.md)
|
||||
|
@ -758,7 +758,8 @@ class GT<T>{
|
||||
|
||||
以上代码输出结果为:2!
|
||||
|
||||
由于经过类型擦除,所有的泛型类实例都关联到同一份字节码上,泛型类的所有静态变量是共享的。
|
||||
有些同学可能会误认为泛型类是不同的类,对应不同的字节码,其实
|
||||
由于经过类型擦除,所有的泛型类实例都关联到同一份字节码上,泛型类的静态变量是共享的。上面例子里的`GT<Integer>.var`和`GT<String>.var`其实是一个变量。
|
||||
|
||||
### 自动装箱与拆箱
|
||||
|
||||
|
@ -25,7 +25,13 @@ head:
|
||||
|
||||
答:
|
||||
|
||||
- `${}`是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如\${driver}会被静态替换为`com.mysql.jdbc. Driver`。
|
||||
- `${}`是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如\${driver}会被原样替换为`com.mysql.jdbc. Driver`。
|
||||
一个实例:根据参数按任意字段排序:
|
||||
```sql
|
||||
select * from users order by ${orderCols}
|
||||
```
|
||||
`orderCols`可以是 `name`、`name desc`、`name,sex asc`等,实现灵活的排序。
|
||||
|
||||
- `#{}`是 sql 的参数占位符,MyBatis 会将 sql 中的`#{}`替换为? 号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的? 号占位符设置参数值,比如 ps.setInt(0, parameterValue),`#{item.name}` 的取值方式为使用反射从参数对象中获取 item 对象的 name 属性值,相当于 `param.getItem().getName()`。
|
||||
|
||||
### xml 映射文件中,除了常见的 select、insert、update、delete 标签之外,还有哪些标签?
|
||||
|
@ -35,5 +35,8 @@
|
||||
"vuepress-plugin-copyright2": "2.0.0-rc.10",
|
||||
"vuepress-plugin-feed2": "2.0.0-rc.10",
|
||||
"vuepress-theme-hope": "2.0.0-rc.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vuepress-plugin-components": "2.0.0-rc.11"
|
||||
}
|
||||
}
|
||||
|
614
pnpm-lock.yaml
generated
614
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user