迭代器删除 容器相关 源码
while(true)
死循环里面捕捉异常,然后break;
前端
elementUI
表单回车提交。vue中是@keyup.enter
监听回车事件 但是elementUI封装了input标签 需要用@keyup.enter.native
数据库相关
MySQL
- 建表的时候默认值不能用函数,比如
default uuid()
它不认识 - char是固定长度的,varchar会根据具体的长度来适用存储空间,因此它需要额外的1-2个字节来存储字符串的长度,长度小于255用一个字节,大于255用2个字节。
- varchar存非Unicode,nvarchar存Unicode
- nvarchar适用于存中文
- 设置主键自增的话类型应该是int
算法
二进制
这些坑踩一遍以后就这一遍了。
- 人为什么用十进制,不知道,可能跟手指头有关
- 10进制和2进制表数的共通点 基数 (radix)基数排序?
- 8进制通常前面有个0
047
16进制开头有个0x
- 十进制转二进制看图
- 210=1024全记住!
- 一般写8位 就是一个字节
原码反码补码
- 十进制直接转换成的二进制 就是原码
- 反码是原码1变成0 0变成1
- 补码是反码+1
- 二进制负数是正数的补码
- 二进制负数转十进制符号位不变其余位取反+1
- 8位数第一位是代表正负
java中
- 8位数由于有符号位 那么表示范围就是-27~27 这就是为什么java里 int代表的是-128~127
- 为什么计算机负数用补码表示
- 0的表述实现统一。
- 能够把减法当成加法来运算 例如
5+(-3)
。CPU里没有减法器这个概念
二进制的逻辑运算重灾区
- 与& 遇0则0
- 或| 遇1则1
- 反~ 1-0 0-1
- 异或^ 相同为1 不相同为0(不进位加法)
>>
右移位 (补符号位)<<
左移位 (补0)>>>
无符号右移 (补0)- 怎么算23 2
<<
2效率最高 - 互换两个正整数的值 a = 3 b = 4
int a = a ^ b
int b = a ^ b
int a = a ^ b
复制代码
长整数和短整数转换
- 这里短整数有8位 长整数有16位
// 短整数变长整数是不会发生变化的
0000 0101 -> 0000 0000 0000 0101 补0
1000 0101 -> 1111 1111 1000 0101 补1
复制代码
- 长整数->短整数 直接砍位数 会发生精度的丢失
bit Byte
计算机中最小存一个东西 都按字节 byte来 不足一个字节 补0 补成一个字节
16进制实际上是2进制短的表示方式 一个数表示4位2进制
要事为先,二进制小数就先不思考了
VMware装Linux 虚拟环境
虚拟环境说白了就是假的,不是真实存在的,通过一系列技术手段模拟出来的。
- what 什么是虚拟环境
- why 为什么要装虚拟环境 因为学习大数据要弄多个节点,所以整。主要还是为了学习用
- how
-
- 整一个虚拟机出来 -> 攒了一台机器
-
-
- 不要选典型,很多配置会走默认。
-
-
-
- 稍后安装操作系统
-
-
-
- 选择centos
-
-
-
- 网络使用NAT 网络这挺重要的
-
-
-
- 虚拟机的内存如果设置小于768MB那么安装过程没有图形界面。我也没有试过。
-
-
-
- sda是一块磁盘,
/dev/sda
。用不同的字母来区分磁盘。被孙玄问过
- sda是一块磁盘,
-
-
-
- 分三个区 第一个
boot
开机引导系统用的,第二个swap
内存不够用的时候,缓存到这个区里(一般是使用内存的两倍)。第三个区用户区
所安装的软件都放里面。
- 分三个区 第一个
-
配置虚拟机的网络 【重要】
- 找到网卡
/etc/sysconfig/network-scripts/ifcfg-eth0
- if->interface cfg->config eth->Ethernet 头一回知道是这么回事
- 用vi编辑 等号前后没有空格
HDADDR
把这个干掉,网卡硬件的地址uuid
也干掉。因为要克隆虚拟机onboot=yes
启用网卡- 配置协议
- 虚拟机的网关地址也能当做是dns地址?看下图 是可以的
快照
- 打快照能回到过去
- 克隆之后 由于网卡地址是克隆来的 这里留个坑 去百度一下。
/etc/udev/rules.d/70-persistent-net.rules
windows命令的本质
命令都是可执行文件
D:\Program Files>where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
复制代码
cd
是自带的命令
D:\Program Files>where cd
信息: 用提供的模式无法找到文件。
复制代码
- 找一个命令默认先从当前目录里找,没有就去环境变量里找。
echo %path%
能够显示环境变量,使用;
隔开的
环境变量:用户变量和系统变量
- 系统环境变量是所有用户都能用的
cmd不区分大小写
使用序列化技术实现深拷贝
public static void main(String[] args) throws IOException, ClassNotFoundException {
List<Map<String, String>> list1 = new ArrayList<>();
List<Map<String, String>> list2 = new ArrayList<>();
Map<String, String> map = new HashMap<>(16);
map.put("k1", "v1");
list1.add(map);
// 将对象写进输出到流中
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(map);
// 从流中拿出来
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
map = (Map<String, String>) objectInputStream.readObject();
list2.add(map);
// list2.add(list1.get(0));
System.out.println(list1);
System.out.println(list2);
System.out.println("==============");
list2.get(0).put("k2", "v2");
System.out.println(list1);
System.out.println(list2);
}
复制代码
两个list中的map指向的市堆里的同一个map对象,用流做深拷贝
springboot 配置文件问题
这里扯到配置文件读取的优先级问题,我们在jar包同级目录里放了config/application.yml
在crontab中执行任务 配置文件没有读到同级目录中的config/application.yml,需要指定绝对路径java -jar -Dspring.config.location=/path/to/application.yml myjar.jar
Redis哨兵模式
- 哨兵负责切换Redis的主从,springboot应用应该连接哨兵,不用连接具体是哪个Redis,程序还有bug,需要抽空研究。
redis-cli
经验证可以单独放在其他机器上执行,kafka的console-consumer
有可能同理。