IOC

IoC(Inverse of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。

  • 控制 :指的是对象创建(实例化、管理)的权力
  • 反转 :控制权交给外部环境(Spring 框架、IoC 容器)

IOC 解决了以下问题:

  1. 创建了许多重复对象,造成大量资源浪费;
  2. 更换实现类需要改动多个地方;
  3. 创建和配置组件工作繁杂,给组件调用方带来极大不便。
Read more »

RocketMQ概述

MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件。消息即数据,一般消息的体量不会很大。简单来说,消息队列就是一种实现“先进先出”的一种数据结构。

用途

  1. 应用解藕:上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。 而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两 层间添加一个MQ层。
  2. 流量消峰:MQ可以将系统的 超量 请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。
  3. 消息分发:数据的生产方只需要把各自的数据写入一个消息队列即可,数据使用方根据各自需求订阅感兴趣的数据,不同团队所订阅的数据互不干扰,也不必和数据产生方关联。

RocketMQ的架构

Read more »

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 »
0%