| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 44-查漏补缺3 -> 正文阅读 |
|
[Java知识库]44-查漏补缺3 |
操作系统中运行到就绪有几种转换方式?运行->就绪态:时间片使用完或者处理机被抢占但是进程还没有结束 就绪->运行态:进程被调度进入执行态 写代码的时候应该如何避免死锁?将系统中所有的资源设置标志位,排序,规定所有的进程申请资源以一定的顺序来操作,避免死锁 a给b端发fin包,b端在没有收到的时候,b给a也发了一个fin包会怎样当两端同时收到fin包的时候,会同时断开连接,进入closed状态 HTTP的请求头,请求行,请求体分别存放什么数据结构?请求行:方法字段,URL字段和HTTP协议版本字段构成,用空格分割 请求头:由关键字/值对组成,每行一对,关键字和值用冒号分割典型的请求头有:
报文体: GET请求没有正文信息,Post请求有多种数据格式可以是默认的键值对格式,可以是Json,可以是multipart/form-data,可以是text/xml 为什么复合索引要遵循最左前缀原则?多列索引是先按照第一列进行排序,然后在第一列排好序的基础上再对第二列进行排序,如果没有第一列,直接访问第一列,第二列肯定是无需的; 比方说(name,age,code),b+树会优先比较name来确定下一步搜索的方向,如果name相同再比较age和code,最后得到检索的数据 什么场景使用阻塞IO,什么场景使用非阻塞IO?IO:即数据的读取或者写入操作,通常用户进程中的一个完整IO分为两阶段:用户进程->内核空间,内核空间->设备空间(网络,磁盘等),IO有内存IO,网络IO和磁盘IO三种,通常我们说的是后两者;五种IO模型包括阻塞IO,非阻塞IO,信号驱动IO,IO多路复用,异步IO(效率由低到高)
阻塞IO:进程发起IO系统调用之后,进程被阻塞,转到内核空间处理,整个IO处理完毕之后,返回进程,操作成功则进程获取到数据(一个人去钓鱼,在鱼竿前一直等,不做其他事,直到鱼上钩,才结束等的动作)
非阻塞IO:进程发起IO系统调用后,如果内核缓存区没有数据,需要到IO设备中读取,返回一个错误进程不会被阻塞,进程发起IO系统调用之后,如果内核有数据,内核就会直接把数据返回进程(一个人在河边钓鱼,但是他一边看书,玩手机,每隔一个固定时间检查有没有鱼上钩,当检查到有鱼上钩的时候,停下手上的事情,把鱼钓上来)
IO复用模型:不再由应用程序自己监视连接,而是内核替应用程序监视文件描述符,好处在于单个进程就可以处理多个网络连接的IO;进程调用select,整个进程会被阻塞,同时内核会监视所有select负责的socket,当任何一个socket的数据准备好了,select就会返回,此时用户进程再调用read,将数据从内核拷贝到用户进程(钓鱼佬不讲武德,用很多根鱼竿来钓鱼)
信号驱动IO: 应用进程告诉内核,数据准备好的时候给我发信号,对该信号进行捕捉,并且调用我的信号处理函数来处理信号(钓鱼佬给鱼竿挂上一个铃铛,有鱼上钩的时候,铃铛就会响,此时把鱼钓上来) 异步IO:以上四种IO都是同步的,只有异步IO是异步的,用户进程进行aio_read系统调用之后,就可以去处理其他的逻辑了,无论数据是否准备好了,都会返回给用户进程,不会对进程造成阻塞,等数据都准备好了,内核直接复制数据到进程空间,然后从内核向进程发送通知,此时数据已经在用户空间了,可以对数据进行处理了(一个人喜欢吃鱼,于是它雇了一个厨师去帮他钓鱼,鱼钓上来了之后,厨师把鱼直接喂到他嘴里) 五种IO模型的比较什么是CA证书?客户端如何确定ca证书可信数字证书颁发机构(简称CA)是值得信赖的第三方实体颁发数字证书机构并管理为最终用户数据加密的公共密钥和证书。CA的责任是确保公司或用户收到有效的身份认证是唯一证书。 什么时候使用进程什么时候使用线程?当频繁销毁和创建的时候当然使用线程 线程切换速度快,在大量计算,频繁切换的时候用线程,耗时操作使用线程提高应用app的响应 并行操作的时候使用线程 需要稳定和安全的操作时使用进程,需要速度的时候,选择线程更好 Java怎么启用一个进程?一个JVM进程对应一个java程序,在jvm的内部程序的多任务是通过线程来实现的,当使用过java命令启动一个java应用程序就会启动一个JVM进程
mq的结构?消费组?
消费组组是kafka提供的可扩展具有容错性的消费者机制
什么时候需要自定义类加载器
现在有一个函数,有p的概率生成1,1-p的概率生成0,怎么使用这个函数,让他以相同的概率生成1和0?怎么推广到1-n?调用两次,有四个结果00,01,10,11其中01和10概率相等,可以用这两种结果代表0和1,设这个函数为random()表示说功能是平均输出0和1
SQL题查询姓孟老师的个数
查询课程编号为0002的总成绩
?查询选了课程的学生人数
?查询各科成绩的最高和最低分
?查询每门课程被多少人选修
查询男生女生的人数
?查询平均成绩大于60分学生的学号和平均成绩
?查询至少选修了两门课的学生姓名
topK问题:查询各科成绩前两名的记录
更新一张表的一些行,如果字段是c,将其改成d这个sql怎么写
?统计一个字段的具体值,并且增加过滤条件与排序条件
总成绩前十的sql怎么写?
联合查询,查询所有学生的学号、姓名、选课数、总成绩
?查询平均成绩大于85的所有学生的学号、姓名和平均成绩
场景题如果一个外卖配送单子要发布,现在有200个骑手都想要这一单,如何保证只有一个骑手接到单子?单机情况,采用volatile关键字修饰该订单,并且使用cas操作 多机情况采用redission分布式锁对整个过程进行加锁 如何把一个文件快速下发到100w个服务器?采用p2p网络形式,比如树状形式,网状形式,单个节点既可以从其他节点接收服务又可以向其他节点提供服务 可能存在的两个问题:
改进:100w台服务器相当于有100w个节点的连通图,我们可以在图中生成多颗不同的生成树,在进行数据下发的时候,同时按照多颗不同的树去传递数据,这样就可以避免中间某个节点宕机,影响到后续的节点 10亿个数,找最大的10个单机单核足够大的内存:维护一个小顶堆,每次都与顶堆最小的数进行比较,如果后续元素比容器内最小数字大,删掉容器内最小的元素,并且将该元素插入容器 单机多核足够大的内存:内存中使用hash将数据划分成多个part,每个part交给一个线程处理,逻辑与单机的时候类似,最后一个线程将结果归并,并且让每个线程自己去获取下一个part继续处理,这样可以避免效率高的线程没事做的情况 有几台机器存储着几亿淘宝搜索日志,你只有一台2G的电脑,怎么搜索出热度最高的10个可以拆分成n多个文件:以首字母分,不同的首字母放在不同文件,长度过长的继续按照次首字母进行拆分,这样一来,每个文件的每个数据长度相同,首位字母也相同,能保证数据被独立分成了n个文件,且各个文件中不存在关键词的交集 对于每个文件,使用hash或者Trie树(前缀树)进行词频统计,并且使用大根堆,获取词频最多的10个词,依次处理每个文件 10万个数从小到大输出?多路归并排序算法,在N个数中取M个数排序之后方法放到内存,然后多路归并算法进行合并 在2.5亿个整数中找出不重复的数,内存不足以容纳所有数字位操作,采用bitmap方法来对每一个数据进行标记,0代表存在,1代表不存在 两个线程交替打印不使用锁?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:37:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |