朝花夕拾

迭代器删除 容器相关 源码

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。用不同的字母来区分磁盘。被孙玄问过
      • 分三个区 第一个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> list1 = new ArrayList<>();
        List> list2 = new ArrayList<>();

        Map 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) 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有可能同理。

你可能感兴趣的:(java,运维,前端,ViewUI)