网址收藏记录

转载比较好的篇幅

  • 问题点:

      1. 2台计算机发送超大文件的实现
      1. 路由和转发的区别
      1. 自定义通信协议注意点有哪些
  • 计算机网络基础知识

    • tcp/ip协议群简介

      1
      对我们开发一个高可用的网络是一个基础
    • java内存介绍篇

      1
      文章补充:虽然后面说明了android的。但同属一个概念。
    • tcp发送和接收数据的原理概念(多篇文章组合观看): 1 2 3

      1
      2
      3
      4
      5
      6
      7
         文章补充说明:
      带着问题点去看:当2台计算机发送一个超大文件,那么发送中的数据存储在哪里,发送方存储在路由器中还是内存中,接收端收到部分数据是在内存
      中还是硬盘中?接收至一半的数据突然中断,何时会被删除?计算机写入一个可以非常快,发送端是一次发送还是如何发送?发送慢是发送端网络慢,还是
      路由慢 还是接收端慢
      重点词:1.窗口 2.收到确认
      重点信息:tcp发送信息有一个窗口维持。同时发送的数据需要确认后才会发送下一个序号数据。
      部分理解回答: 发送和接收端都有一个缓冲区。发送端每次发送发送的数据需要接收端回复确认才继续发送下一个序号数据
    • 自定义通信协议基础: 1 2

  1. elasticsearch中文记录
  2. 华为云学院

vm下ubuntu server共享主机文件夹

事实上,虚拟机上自带的VMware-tools就可以实现,但是VMware tools需要自己安装,下面介绍一下安装方法:

  1. 安装VMware-tools

  2. 点击VMware工具栏’’VM”——“install VMware tools…”,这时桌面会出现光盘形状的VMware Tools,而且会自动跳出目录,里面包含两个文件,”manifest.txt”与”VMwareTools-8.4.5-324285.tar.gz”。(server版本的用命令进入(下文))

  3. cd /media/VMware Tools 进入安装文件目录

  4. cp VMwareTools-8.4.5-324285.tar.gz /tmp 将VMware Tools压缩包拷贝到临时文件夹/tmp下(当前目录是没有权限的)

  5. cd /tmp 进入临时文件夹

  6. tar -zxvf VMwareTools-8.4.5-324285.tar.gz 解压该压缩文件

  7. cd vmware-tools-distrib 进入该文件夹

  8. ./vmware-install.pl 安装vmware-tools

  9. 一路Enter,VMware-tools就安装成功了。

在vm的设置里面共享

  1. 点击 VM——setting——options——shared Folders,选择Always enabled,点击下面Add添加windows中的共享文件夹,我选择的是F盘,然后保存修改。

  2. 重新启动ubuntu,你就可以在目录/mnt/hgfsz下发现名为”F”的文件夹了,双击就会发现时windows下的F盘的内容,你可以在ununtu下在里面进行读写操作了。

vim一些配置

安装

CentOS 的最小化安装默认只安装了最小版的VI,可以通过以下命令安装全部功能的Vim:

1
2
yum install vim-common vim-enhanced vim-minimal
sudo apt-get install vim

修改环境变量

1
2
[root@h01 ~]# vi /etc/profile.d/custom.sh
alias vi=vim

或者

1
2
[root@h01 ~]# vi ~/.bashrc
alias vi=vim

修改vim配置文件

修改用户级别的 需要修改 ~/.vimrc。修改全局的,需要修改 /etc/vimrc (可以通过 :version 看到)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
set nocompatible
set number
colors desert
syntax on
set ruler
set showcmd
set cursorline
set fileencodings=utf-8,gbk
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set fileformats=unix
set hlsearch
set formatoptions-=cro
set paste
" set list
" comment here

filetype

vi ~/.vim/filetype.vim, 在 vim 中可以通过 :set syntax? 查看当前 syntax 的值

1
2
autocmd BufRead,BufNewFile my.cnf set syntax=dosini
autocmd BufRead,BufNewFile build.gradle set syntax=groovy

colorschema

1
2
3
ll /usr/share/vim/vim74/colors
# 或者在vim中
:colo <tab>

安装vba插件

largeFile,
Manual
wget http://www.drchip.org/astronaut/vim/vbafiles/LargeFile.vba.gz
gunzip LargeFile.vba.gz
vi LargeFile.vba
:source %

1
2
3
4


:source %

将换行符从dos格式变为unix格式

参考:1

1
2
3
4
:update                     Save any changes.
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).
:setlocal ff=unix This buffer will use LF-only line endings when written.
:w Write buffer using unix (LF-only) line endings.
  • 删除BOM头
1
2
:set nobomb
:wq

全局替换

1
:%s/\t/    /g

tab

1
2
3
4
5
6
7
8
# 显示空白字符
:set list

# 替换为空格
:%s/\t/ /g

# 不显示空白字符
:set nolist

命令模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 文件
:open pathToFile # 打开指定的文件
:bn # 查看下一个文件
:bp # 查看上一个文件
:args # 查看当前打开的文件列表
:split pathToFile # 在分割窗口中打开指定的文件
Ctrl+ww # 在分割窗口中循环切换文件
:e ftp://192.168.1.101/xxx.txt # 打开远程文件(FTP)
:e \\sambahost\share\xxx.txt # 打开远程文件(Samba)


# 光标移动
h # 左移1个字符(可前接数字)
l # 右移1个字符(可前接数字)
k # 上移1个字符(可前接数字)
j # 下移1个字符(可前接数字)

^ # 移至行首第一个非空白字符
0 # 移至行首
<Home> # 移至行首
$ # 移至行尾(可前接数字)
<End> # 移至行尾

w # 向后移动1个单词,光标停在单词首部(可前接数字)
b # 向后移动1个单词,光标停在单词首部(可前接数字)
e # 向后移动1个单词,光标停在单词尾部(可前接数字)
ge # 向后移动1个单词,光标停在单词尾部(可前接数字)

# 缩进
<< # 当前行向左缩进
>> # 当前行向右缩进

查看当前set的值
:set expandtab? # 打印该选项的使用方法和值
:set autoindent! # 该选项值取反(针对bool型)
:set option& # 重置该选项值为默认值
:verbose set textwidth? # 查看值


# 进入插入模式
i # 在当前光标位置前插入
I # 在当前行的行首插入
a # 在当前光标位置后插入
A # 在当前行的行尾插入
o # 在当前行之后插入一行
O # 在当前行之前插入一行

# 进入 visual 模式
v

插入模式

1
2
3
# 缩进
C-d # 当前行向左缩进
C-t # 当前行向右缩进

visual 模式

1
2
<                               # 当前选区向左缩进
> # 当前选区向右缩进

红黑树

红黑树

  1. 友情博客链接
  • 重点解读
    1. 红黑树是近视平衡。插入 删除比平衡二叉树要快,相对查找要略低。但是相对于其他树来说稳定。在极端情况下也不会蜕变为单边树
    2. 红黑树中包含最多黑色节点的路径不会超过 log2n,所以加入红色节点之后,最长路径不会超过 2log2n,也就是说,红黑树的高度近似 2log2n
    3. 高度和查找性能成反比。高度高查找慢
      节点说明

redis的zset为何用跳表,不用红黑树

  1. Redis 中的有序集合支持的核心操作主要有以下几个:
    1
    2
    3
    4
    5
    6
    7
    8
    9
        1.插入一个数据
    1.删除一个数据
    1.查找一个数据
    1.按照区间查找数据
    1.迭代输出有序序列
    其中,插入、删除、查找以及迭代输出有序序列这几个操作,红黑树也可以完成,时间复杂度和跳表是一样的。
    但是,按照区间查找数据这个操作,红黑树的效率没有跳表高。跳表可以在 O(logn)
    时间复杂度定位区间的起点,然后在原始链表中顺序向后查询就可以了,这样非常高效。
    此外,相比于红黑树,跳表还具有代码更容易实现、可读性好、不容易出错、更加灵活等优点,因此 Redis 用跳表来实现有序集合

二叉树遍历

理解二叉树中4种遍历方法

中型系统的技术知识

需要掌握的系统知识

中级需要具备

技能图

进阶(高级系统,未学习)等待补充

  1. 中间件的大规模使用
  2. 双A
  3. 高可用

数据结构与算法在线演示网站

演示网站

DataStructureVisualizations

一个数据可视化和算法可视化的网站,用它可以生成各种各样的数据结构,模拟它们添加和删除的过程,而且还可以用它来演示算法的执行过程。

  1. 地址

VisuAlgo

此网站包含了更多的算法,这个从首页就可以看出来,不仅如此,它还支持关键字检索

  1. 地址

algorithm-visualizer

此网站也支持很多算法,并且此网站提供算法的具体代码实现,它支持的语言有:Java,C++,JS 等,还有控制台也会输出整个执行的过程,能帮你更好的理解算法

  1. 地址

mysql-extra字段说明

EXPLAIN字段说明

执行explain中字段extra的含义。执行效率从上到下依次递减

  1. using index :使用覆盖索引的时候就会出现
  2. using where:在查找使用索引的情况下,需要回表去查询所需的数据
  3. using index condition:查找使用了索引,但是需要回表查询数据
  4. using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据
  5. using filesort 是通过相应的排序算法,将取得的数据在内存中进行排序:。
    1
    2
    3
    4
    5
    MySQL需要将数据在内存中进行排序,所使用的内存区域也就是我们通过sort_buffer_size 系统变量所设置的排序区。
    这个排序区是每个Thread 独享的,所以说可能在同一时刻在MySQL 中可能存在多个 sort buffer 内存区域。
    在MySQL中filesort 的实现算法实际上是有两种:
    双路排序:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序。
    单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序。

执行explain中字段type的含义。执行效率从上到下依次递减

  1. system:系统表,少量数据,往往不需要进行磁盘IO
  2. const:常量连接
  3. eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描
  4. ref:非主键非唯一索引等值扫描
  5. range:范围扫描
  6. index:索引树扫描
  7. ALL:全表扫描(full table scan)