1. 概述

容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。

Collection

1. Set(无序的、不可重复的)

Read more »

http与https

http的缺点:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

用 SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了。
HTTP+ 加密 + 认证 + 完整性保护=HTTPS,简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。

加密方式:

Read more »

JUC概述

创建线程的四种方式

  1. 实现 Runnable 接口;
  2. 实现 Callable 接口;
  3. 继承 Thread 类(很少使用,单继承原因)。
  4. 线程池
    实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用

Runnable

使用 Runnable 实例再创建一个 Thread 实例,然后调用 Thread 实例的 start() 方法来启动线程。

Read more »

JVM概述

JVM:全称 Java Virtual Machine,即 Java 虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作

Java 代码执行流程:java程序 –(编译)–> 字节码文件 –(解释执行)–> 操作系统(Win,Linux)

架构模型

Read more »

01数据结构

简单来说,底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。它们和数据类型的对应关系如下图所示:

可以看到,string类型的底层实现只有一种数据结构。而List、Hash、Set 和 Sorted Set 这四种数据类型,都有两种底层实现结构。通常情况下把这四种类型称为集合类型,它们的特点是一个键对应了一个集合的数据。

不同value的底层实现

Read more »

参考mysql实战45讲

数据库

MySQL中的数据类型

类型 类型举例
整数类型 TINYINT(1Byte)、SMALLINT(2Byte)、MEDIUMINT(3Byte)、INT(4Byte)、BIGINT(8Byte)
浮点数类型 FLOAT(4Byte)、DOUBLE(8Byte)
定点数类型 DECIMAL(9Byte)
位类型 BIT
日期时间类型 YEAR、TIME、DATE、DATETIMETIMESTAMP
文本字符串类型 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型 ENUM
集合类型 SET
二进制字符串类型 BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
json类型 JSON对象、JSON数组
空间数据类型 单值类型:GEOMETRY、POINT、LINESTRING、POLYGON; 集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、 GEOMETRYCOLLECTION
  1. float、double都是近似值,存储的时候都存在精度丢失的问题,一般使用decimal类型。如果数据范围超过decimal,建议把数据拆分为整数部分和小数部分,分别存储。
  2. Int(1)和int(11)不同于varchar,在计算和存储空间上无区别,其中1和11代表的是展示的长度,当打开zerofill配置时,不足的位置会补0,如010。
  3. varchar是不定长,需要额外空间记录长度,容易产生碎片,不预先分配存储空间,存储长度不要超过5000,否则建议用text类型并新建表,避免影响其他索引 。对于短得列,char效率更高
Read more »

基本语法

++ii++

无论是i++++i,对于 i 变量本身来说没有任何区别,执行的结果都是i变量的值加1,关键在于和=的结合

1
2
3
4
5
6
7
8
9
10
int i = 1;
i++;
++i;
System.out.println("i=" + i);//i=3
int j = i++;
System.out.println("j=" + j);//先将i赋值给j,再将i自增.i=4,j=3
int m = ++i;
System.out.println("m=" + m);//先将i自增,再将自增后的值赋给m,m=5,i=5
System.out.println(m++);//先打印m后将m自增,打印结果是5,m=6
System.out.println(++m);//m先自增后打印,打印结果是7

==和 equals 的区别

Read more »

安装docker

以 CentOS7 为例

1. 简化安装方法

Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,执行这个脚本后就会自动地将一切准备工作做好,并且把 Docker 的稳定版本安装在系统中。

1
curl -fsSL get.docker.com -o get-docker.sh
Read more »

十大经典排序算法

1. 冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function bubbleSort(arr) {
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
// 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
boolean flag = true;
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) { // 相邻元素两两对比
int temp = arr[j+1]; // 元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
if (flag) {
break;
}
}
return arr;
}
Read more »

SQL 语法

一、基础

主键的值不允许修改,也不允许复用(不能将已经删除的主键值赋给新数据行的主键)。

SQL注释:

1
2
3
4
5
## 注释1
SELECT *
FROM mytable; -- 注释2
/* 注释3
注释3 */
Read more »
0%