数据库JOIN语句使用经验

SQL LEFT JOIN 关键字

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法

SELECT column_name(s)
  FROM table_name1
LEFT JOIN table_name2 
  ON table_name1.column_name=table_name2.column_name
一张cheatsheet

ubuntu切换中科大软件源

更新:

现在可以使用repogen,或是直接下载配置文件的方式来更换源。生成链接

ubuntu 18.04 https://mirrors.ustc.edu.cn/repogen/conf/ubuntu-https-4-bionic

ubuntu 16.04 https://mirrors.ustc.edu.cn/repogen/conf/ubuntu-https-4-xenial

16.04 源
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

Ubuntu16.04更新内核并开启BBR

BBR对于带宽提升的效果

测试环境:Vultr Ubuntu16.04

选择默认镜像开启后,自动安装为 16.04.3 LTS

1) 更新软件源,更新到推荐版本系统内核

apt-get update
apt-get -y install aptitude
aptitude -y upgrade
apt-get -y autoremove

2) 更新linux系统内核版本后重启 确保大于4.9

mkdir kernel && cd kernel
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.98/linux-headers-4.9.98-040998_4.9.98-040998.201805021530_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.98/linux-headers-4.9.98-040998-generic_4.9.98-040998.201805021530_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.98/linux-image-4.9.98-040998-generic_4.9.98-040998.201805021530_amd64.deb
dpkg -i *.deb
reboot

3) 添加配置以使BBR生效

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p  

sysctl net.ipv4.tcp_available_congestion_control  # 查看内核是否已开启BBR
lsmod | grep bbr  # 查看BBR是否启动

相关资料链接:
BBR项目主页
Google发布的BBR文章
知乎答主对于BBR的介绍
BBR技术的问题
BBR技术的问题

ubuntu安装并开启samba

1) 安装 samba 相关程序包

sudo apt-get install samba 

2) 配置samba

打开Samba配置文件:

sudo gedit /etc/samba/smb.conf

在其最后添加:

[share]
path = /home/base
valid users = share,daijiyu
available = yes
browseable = yes
writable = yes
public = no 

3) 创建Samba用户

sudo useradd share
sudo smbpasswd -a share

4) 重启samba服务

sudo service smbd restart

5) 使用

在Windows电脑上,输入“\\192.168.1.88\samba”,然后输入用户名(share)和密码后,既可以访问了

Ubuntu Server 16.04开启KVM并使用桥接网络

本次使用家庭NAS服务器,IP与MAC绑定,分配其内网地址为192.168.1.88。

0x00 安装cpu-check来查看CPU是否支持虚拟化

sudo apt install cpu-checker

确认支持KVM技术

0x01 安装软件和依赖

sudo apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager

0x02 修改网络类型为桥接,请注意,这里要将原有的网卡连接删除或注释
修改/etc/network/interfaces

auto lo
iface lo inet loopback

# The primary network interface
# auto enp3s0
# iface enp3s0 inet manual

auto br0
iface br0 inet static
address 192.168.1.88
gateway 192.168.1.1
netmask 255.255.255.0
dns-nameservers 192.168.1.1

bridge_ports enp3s0 
bridge_stp off
bridge_fd 0
bridge_maxwait 0

sudo service networking restart

0x03 创建磁盘镜像

qemu-img create -f raw ubuntu.raw 80G
或者
qemu-img create -f qcow2 ubuntu.qcow2 80G

关于这两种虚拟磁盘镜像格式,有一些区别。

0x04 创建启动描述文件 ubuntukvm.xml

<domain type='kvm'>
  <name>ubuntukvm</name> //虚拟机名称
  <memory>1048576</memory> //最大内存,单位k
  <currentMemory>1048576</currentMemory> //可用内存,单位k
  <vcpu>1</vcpu> //虚拟cpu个数
<os>
  <type arch='x86_64' machine='pc'>hvm</type>
  <boot dev='cdrom'/> //光盘启动
</os>
<features>
  <acpi/>
  <apic/>
  <pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
  <emulator>/usr/bin/qemu-system-x86_64</emulator>
  <interface type='bridge'>
    <mac address='52:54:00:84:e9:e1'/>
    <source bridge='br0'/>
    <model type='rtl8139'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  </interface>
  <disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/home/disk/.kvm/image/ubuntu.raw'/>
    <target dev='hda' bus='ide'/>
  </disk>
  <disk type='file' device='cdrom'>
    <source file='/home/disk/iso/ubuntu-16.04.4-server-amd64.iso'/> //光盘镜像路径
    <target dev='hdb' bus='ide'/>
  </disk>
  <input type='mouse' bus='ps2'/>
  <graphics type='vnc' port='-1' listen = '0.0.0.0' keymap='en-us'/>
</devices>
</domain>

其中cdrom在安装完成镜像后需要删除。