计算机基础知识复习7.12

java基本数据类型

byte 1字节

short 2字节

int 4字节

long 8字节

char 2字节

float 4字节

double 8字节

boolean 1字节

Java的自动拆箱与装箱

装箱就是自动将基本数据类型转换为包装类型

拆箱就是自动将包装类型转换为基本数据类型

索引失效的场景

对索引使用左右模糊,或者左模糊匹配

对索引使用函数

对索引进行表达式计算

where中含有or

联合索引非最左匹配

对索引隐式类型转换

操作系统进程和线程区别

进程是资源分配的单位,线程是CPU调度的单位

进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈

线程同样具有就绪,阻塞,执行三种基本状态,同样具有状态之间的转换关系

线程能减少并发执行的时间和空间开销(线程的创建时间比进程快,因为进程在创建的过程中,还需要资源管理信息,比如内存管理信息,文件管理信息,而线程在创建的过程中,不会涉及这些资源管理信息,而是共享他们。同一个进程内的线程切换比进程切换快,因为线程具有相同的地址空间,这意味着同一个进程的线程都具有同一个页表,那么在切换的时候不需要切换页表。而对于进程之间的切换,切换的时候要把页表切换掉,而页表的切换过程开销比较大)

进程间通信方式

管道

消息队列

共享内存

信号量

socket

线程间通信方式

共享变量

锁机制

条件变量

信号量

管道

TCP和UDP区别

TCP是面向连接的传输层协议,传输数据前先要建立连接

UDP是不需要连接,即刻传输数据

TCP一对一的两点服务,即一条连接只有两个端点

UDP支持一对一,一对多,多对多的交互通信

TCP是可靠交付数据的,数据可以无差错,不丢失,不重复,按序到达

UDP是尽最大努力交付,不保证可靠交付数据

TCP有拥塞控制和流量控制机制,保证数据传输的安全性

UDP则没有,即使网络非常拥堵,也不会影响UDP的发送效率

TCP首部长度较长,会有一定的开销,首部在没有使用选项字段时是20个字节,如果使用了选项字段则会变长的

UDP首部只有8个字节,并且是固定不变的,开销小

TCP是流式传输,没有边界,但保证顺序和可靠

UDP是一个包一个包的发送,是有边界的,但可能会丢包和乱序

TCP和UDP应用场景

TCP是面向连接的,能保证数据的可靠性交付,使用场景:

FTP文件传输

Http/Https

UDP面向无连接的,随时可以发送数据,使用场景:

视频

广播通信

TCP重传机制有哪些

超时重传:在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的ACK确认应答报文,就会重发该数据

快速重传:当收到三个相同的ACK报文时,会在定时器过期之前,重传丢失的报文段

是否可以将线程池的核心参数设置为0

可以设置为0,当核心线程数为0时,当有任务被提交时,会先将任务添加到任务队列,同时会判断当前工作的线程数是否为0,如果为0,则会创建线程来执行线程池的任务。

关键源码

if (isRunning(c) && workQueue.offer(command)) {
            int recheck = ctl.get();
            if (! isRunning(recheck) && remove(command))
                reject(command);
            else if (workerCountOf(recheck) == 0)
                addWorker(null, false);
        }

测试代码

 public static void main(String[] args) {
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                0,
                3,
                2,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(5));
        threadPoolExecutor.execute(() -> {
            System.out.println("任务中...");
        });

    }
重载和重写

重载发生在同一个类中,方法名相同,参数类型,参数个数,参数顺序可以不同

重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写

zset的数据结构

跳表:高效的范围查询 

跳表是在链表基础上改进过来的,实现的一种多层有序链表,能够快速定位数据,查询的时间复杂度为O(logn)

哈希表:高效单点查询。根据元素获取权重

参考资料:

GitHub - xiaolincoder/CS-Base: 图解计算机网络、操作系统、计算机组成、数据库,共 1000 张图 + 50 万字,破除晦涩难懂的计算机基础知识,让天下没有难懂的八股文!🚀 在线阅读:https://xiaolincoding.com

GitHub - Snailclimb/JavaGuide: 「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值