• fork创建进程的步骤___SpringbootStarter启动器和其加载的过程___redis怎么监视正在执行的命令


    fork创建进程的步骤

    我们都知道,在Linux中调用fork()函数,会创建一个子进程,那么在创建这个子进程的过程中,发生了些什么事情?

    首先,我们要知道,fork()函数其实是调用发起_fork()系统调用,控制权由用户态转为内核态,

    内核会分配新的内存块和内核数据结构给子进程(也就是PCB task_struct结构体),

    然后内核会将父进程的部分数据内容以二进制形式拷贝到子进程,

    下来再将所谓的子进程PCB加入到管理链表中(操作系统管理进程就是将程序用PCB描述,用链式结构进行管理),

    然后从内核态返回用户态(父进程fork返回进程pid,子进程返回0),

    后开始调度器调度。

    但是我们要注意一点,fork之前父进程独立执行,fork之后父子进程分别执行自己的执行流,但是谁先执行由调度器调度。

    这里还有一点需要注意,当子进程刚被创建出来,父子进程不再写入的时候,父子进程是数据共享一份,代码独有,但是当有任意一方试图写入数据的时候,便已写时拷贝的方式各自拥有一份数据

    这就是所谓的写时拷贝。

    当然当然,fork()也有可能调用失败,fork()调用失败的理由也就这两种?

    系统中有太多的进程,资源不够

    实际用户的进程超过了限制

    Spring-boot-Starter

    Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以一站式集成 Spring
    和其他技术,而不需要到处找示例代码和依赖包。Spring Boot Starter的工作原理是:Spring Boot
    在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR包,根据spring.factories配置加载AutoConfigure类,根据
    @Conditional注解的条件,进行自动配置并将Bean注入Spring Context

    redis怎么监视正在执行的命令

    redis-cli -h 服务器地址 -a 服务器密码 monitor

    在windows下我们可以编写一个批处理脚本,方便日后用到

    使用任意编辑器编辑以下代码,并另存为redis-monitor.bat

    @echo off

    title redis-monitor

    cd redis-cli命令所在目录

    redis-cli -h 你的服务器地址 -a 你的服务器密码 monitor

    双击redis-monitor.bat,就会看到监控窗口跑起来了

    连接查询和子查询那个效率更高

    连接查询和子查询哪个效率高呢?
    ​ 首先两者不存在谁优于谁的说法,只是那种更适应某种环境。一般要看你是什么用途,如果数据量少的话可以子查询,或者经常用的数据就使用子查询,不经常用的就连接查询,适习惯而定,当然是指数据量少的情况下。

    一般来讲连接查询效率更高,因为子查询会多次遍历数据,而连接查询只遍历一次,但是如果数据量较少的话子查询更加容易控制。但如果数据量大的话两者的区别就会很明显,对于数据量多的肯定是用连接查询快些,原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),如果你的子查询是在无限套娃,且每张表数据量不大,使用子查询效率高。

    ​ 连接查询只会遍历一次,但是数据量少的话也就无所谓是连接查询还是子查询,多表数据量大建议采用连接查询。

    注:连接查询是SQL查询的核心,连接查询的连接类型选择依据实际需求。如果选择不当,非但不能提高查询效率,反而会带来一些逻辑错误或者性能低下。下面总结一下两表连接查询选择方式的依据:

    1、 查两表关联列相等的数据用内连接。

    2、 左表是右表的子集时用右外连接。

    3、 右表是左表的子集时用左外连接。

    4、 左表和右表彼此有交集但彼此互不为子集时候用全外连接(全连接)。

    5、 求差操作的时候用联合查询。

  • 相关阅读:
    MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)
    MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)
    MySql cmd下的学习笔记 —— 有关视图的操作(建立表)
    MySql cmd下的学习笔记 —— 有关常用函数的介绍(数学函数,聚合函数等等)
    MySql cmd下的学习笔记 —— 有关多表查询的操作(多表查询练习题及union操作)
    MySql 在cmd下的学习笔记 —— 有关多表查询的操作(内连接,外连接,交叉连接)
    MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)
    MySql cmd下的学习笔记 —— 有关select的操作(order by,limit)
    剑指Offer--第21题 调整数组顺序使奇数位于偶数前面;
    剑指Offer--和为s的连续正数序列
  • 原文地址:https://www.cnblogs.com/henuliulei/p/16543956.html
Copyright © 2020-2023  润新知