
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
带你写操作系统-Loader0. 当前代码结构1. Loader程序需要做什么Loader需要打开保护模式准备GDT打开保护模式Loader需要加载Kernel程序2. 什么是保护模式此前操作的内存仅仅在1M以内,我们当前的操作系统一般都是4G或更大内存,所以我们需要操作更多的内存此前的程序可以修改任意处的内容, 这样没有安全限制的操作如果运行用户程序是不安全的总结开启1M以上的内存空间对内存区域
1. 数据结构ListRedis List的主要操作为lpush/lpop/rpush/rpop四种,分别代表从头部和尾部的push/pop,除此之外List还提供了两种pop操作的阻塞版本blpop/brpop,用于阻塞获取一个对象2. 实现思路利用list数据结构的阻塞操作实现take方法, 当队列元素为空是则线程阻塞此处假设redis队列不会被存满,所以push操作不会阻塞...
1. spark简介Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。2. Spark安装2.1 安装jdk2.2 配置spark官网下载spark安装包官网地址下载地址上传至虚拟机,修改配置文件spark-env.shexport JAVA_HOME=/root/app/langEnv/jdk8export SPARK_MASTE...
JVM-字符串底层实现原理前置内容java虚拟机栈1.那些字符串会进入字符串常量池直接写的字面量字面量的拼接结果(注意:如果字符串拼接中有变量则结果不会进入字符串常量池)调用String的intern方法可以将String存入字符串常量池2. 字面量的拼接原理java源码package com.hgy;import java.util.Arrays;import java.util.List;pu
JVM-类加载器1. 类加载系统作用:类加载系统的主要作用就是将编译生成的字节码文件加载到内存,当然此处的字节码文件可以存在磁盘或网络等其它地方。主要过程:加载链接初始化1.1 加载过程加载过程主要把磁盘或网络中其他形式的字节码加载到内存中, 并且在内存中生成Class对象1.2链接过程验证主要用于验证当前字节码文件是否满足虚拟机的格式, 比如class文件在文件开头都有CA FE BA BE这几
JVM-为什么字符串拼接效率低前置内容java虚拟机栈字符串拼接原理1. 源码准备首先编写两个方法一个使用字符串拼接,一个使用StringBuilder进行拼接;public class hello {public void concatStrByDefault() {String basic = "name ";for (int i = 0; i < 100; i++) {basic +=
JVM-虚拟机栈1. 作用虚拟机栈实际上是程序在运行时来记录方法调用的一个栈, 我们的每一个线程都有一个虚拟机栈,在这个线程里面没调用一个方法就有一个栈帧入栈,当一个方法调用完成这个栈帧就出栈;直到最后一个栈帧出栈整个线程的生命周期也就结束了2. 栈中存储的基本单位栈帧栈帧的基本组成局部变量表(也就是当前方法里面能使用那些变量)操作数栈(他是一个类似于解析表达式的栈,主要用于暂存中间结果)动态链接
JVM-方法区1. 方法区的作用当类加载器加载完成类之后,会将类信息、运行时常量池、静态变量(此处指的是指针,如果是一个对象对象的分配还是在堆中)等存储在方法区;但在JDK不同版本对字符串常量和静态变量的存储有所不同,这部分内容后续列出2. 不同版本的方法区JDK6:在JDK6以前方法区也就是HotSpot虚拟机中的永久代,此时类信息、运行时常量池、静态变量等存储在方法区JDK7:在JDK7中法区
盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能...
部署Nginx搜索nginx镜像docker search nginx拉取nginx镜像docker pull nginx创建容器,设置端口映射、目录映射# 在/root目录下创建nginx目录用于存储nginx数据信息mkdir ~/nginxcd ~/nginxmkdir confcd conf# 在~/nginx/conf/下创建nginx.conf文件...