当前位置: 首页 > news >正文

源码编译jdk7 超详细教程 openjdk7

关于源代码

当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。

OpenJDK7u源码托管地址:https://github.com/openjdk/jdk7u

带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而他们对应的各自的正式发行版可以在其对应代码托管地址的tag中找到。

这里我们使用jdk7当前的最新更新的正式发行版作为源代码来编译,下载地址如下

https://github.com/openjdk/jdk7u/archive/refs/tags/jdk7u351-ga.tar.gz


关于BootstrapJDK

但凡是遇到了bootstrap这样的字眼,它所要解决的问题只有一个,那就是,当你掉进一个井里,你需要通过拉自己的靴子,把自己拉出井以实现自救。这是个哲学问题。言归正传,之所以需要bootstrapJDK,是因为jdk的编译过程需要执行java代码,也就是说 需要一个能正常运行的jdk存在。编译自己需要自己的存在!一般而言,这个bootstrapJDK由你当前编译jdk版本的上一个版本担当。

编译环境

本次编译使用的系统:GNU/Linux 发行版debian11

编译器:gcc-9.2.0

BootstrapJDK:jdk6

ant:apache-ant-1.7.1

开始编译jdk7u351-ga

首先我们建立一个干净的目录buildjdk,然后进入到这个目录中。

从上面的链接下载jdk7u351-ga的源代码包,然后解压会得到一个目录jdk7u-jdk7u351-ga。

jdk7u源代码目录介绍

目录名称介绍
hotspotOpenJDK Hotspot Virtual Machine,这里包含着虚拟机的源代码和构建文件。
langtoolsjava语言的工具源码,例如javac、javap、javah等
corbajava中间件corba的源码目录和构建文件。
jaxwsjava webservice相关的源代码目录。
jaxpjava解析xml相关的源代码目录。
jdkOpenJDK的运行时库的源文件目录。

编译依赖工具

名称说明
Bootstrap JDK编译JDK需要使用的一个预先存在的jdk,这里我们使用JDK6。
下载地址:https://www.oracle.com/au/java/technologies/javase-java-archive-javase6-downloads.html
antant构建工具,编译JDK7时也需要用到。
下载地址:http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip
gccgcc工具,这里特别注意,在编译jdk7时gcc版本>=10的话出现各种编译问题。官网要求的gcc最低版本为4.3,本教程使用gcc-9.2成功编译。
zip和unzipzip工具版本>=2.2,unzip工具>=5.12。如果你的linux发行版的源上没有符合条件的版本可从这里下载自行安装。
下载地址:http://www.info-zip.org
Common UNIX Printing System (CUPS) Headerscpus的头文件,这个头文件一般可以通过在你的linux发行版上安装其对应的开发包获得。
XRender Extension HeadersXRender头文件,通向安装其对应的开发包即可。
FreeType 2FreeType的版本>=2.3,较新版本的linux发行版从源中安装的这个软件的默认目录可能与jdk7的默认搜寻路径不符,本教程中直接从源码边一个,后面会讲解。
下载地址:http://www.freetype.org
Advanced Linux Sound Architecture (ALSA)ALSA版本>=0.9.1。这个建议使用你自己的linux发行版的源进行安装。通常你可以使用关键字libasound在你的源中搜索,找到合适的版本进行安装。

编译选项

make选项说明
all构建一个完整的jdk,这也是默认选项。如果你直接执行make命令将执行这个选项规则。
help输出编译选项帮助信息。例如:make help
sanity检测编译环境的设置以及需要的依赖是否正确。例如:make sanity
clean清除编译时产生的临时文件。

环境变量设置

jdk7的编译行为很多都是由环境变量控制的,所以我们需要设置必要的环境变量。

环境变量名说明
ALT_BOOTDIR这个环境变量需要指定到Bootstrap JDK的安装目录,就是我们下载的那个jdk6安装包执行后得到的目录。
ALT_FREETYPE_LIB_PATH指向freetype2的安装目录下的lib目录
ALT_FREETYPE_HEADERS_PATH指向freetype2的安装目录下的include目录

gcc-9.2.0编译:

如果你使用的就是这个版本或者你想通过你的源来安装这个版本可跳过此步。

我们按照一下给出的版本进行下载对应的源码包。

注意,你需要找一个比较大的分区来编译gcc,因为gcc在编译过程中需要消耗大量的磁盘空间。你的剩余空间应该>=4.2GB

gcc-9.2.0:https://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz

gmp-6.2.0:https://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.bz2

mpc-1.1.0:https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz

mpfr-4.0.2:https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.bz2

编译gcc需要切换到root权限下。

su root

解压缩gcc-9.2.0.tar.gz并进入到gcc的根目录:

tar -xvf gcc-9.2.0.tar.gz 
cd gcc-9.2.0

然后解压缩mpfr-4.0.2.tar.bz2、mpc-1.1.0.tar.gz、gmp-6.2.0.tar.bz2,这三个包需要在gcc的源代码目录下解压,并且将其重名并把对应的版本号去掉。

tar -xvf gmp-6.2.0.tar.bz2
mv gmp-6.2.0 gmp
tar -xvf mpc-1.1.0.tar.gz
mv mpc-1.1.0 mpc
tar -xvf mpfr-4.0.2.tar.bz2
mv mpfr-4.0.2 mpfr

至此我们都需要在gcc-9.2.0的源代码根目录下

如果你的系统是64位的请在此目录下执行以下命令

sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64

然后执行命令

sed -e '1161 s|^|//|' \
-i libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 

然后我们在此目录下新建一个build目录并进入到build目录下

mkdir -v build
cd build 

然后执行编译前的检测命令

SED=sed \
../configure --prefix=/usr \
--enable-languages=c,c++ \
--disable-multilib \
--disable-bootstrap \
--with-system-zlib 

然后开始执行make命令,下面的-j12是平行编译,可以根据你自己的cpu核心数指定,我的是12核的。

make -j12

编译完成后执行安装命令

make install

编译freetype2

先下载freetype2:https://download.savannah.gnu.org/releases/freetype/freetype-2.12.1.tar.gz

解压freetype-2.12.1.tar.gz,并进入freetype源代码目录

tar -xvf freetype-2.12.1.tar.gz
cd freetype-2.12.1

执行编译前检查命令:

./configure --prefix=自定义一个路径。   注意这里我们不要使用默认的路径,会污染你的当前系统。

然后编译安装,注意要记住安装路径,一会我们要用到。

make
make install

安装ant构建工具

下载ant:http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip

我们直接将其解压到buildsdk目录下即可

unzip apache-ant-1.7.1-bin.zip

设置环境变量

export PATH=ant安装目录/bin:$PATH
export ALT_BOOTDIR=jdk6的安装目录
export ALT_FREETYPE_LIB_PATH=刚才安装的freetype2安装目录/lib
export ALT_FREETYPE_HEADERS_PATH=刚才安装的freetype2安装目录/include

注意你不能设置JAVA_HOME环境变量。

如果你的环境中存在JAVA_HOME环境变量,你需要删除这个环境变量

unset JAVA_HOME

好了准备工作已经完成了我们可以开始真正的编译jdk7u了

首先我们需要先修复一个jdk7中存在的一个bug
修复文件为:jdk7u-jdk7u351-ga/hotspot/src/share/vm/runtime/os.cpp:1197行
将代码:strncpy(inpath, path, strlen(path));修改为 strcpy(inpath,path);

jdk7的编译环境检测,此命令最后输出:Sanity check passed.就可进行下一步了

make sanity

执行编译命令:

make all

经过漫长的等待你将会看到如下输出

89ed7c425abed6cc2b93cc5f806f1101.jpeg

至此我们jdk7u的编译就成功了,编译好的内容都放在路径:jdk7u-jdk7u351-ga/build/linux-amd64中

目录介绍

目录名称说明
j2re-image这个目录就是我们平时用到的jre,可以将其重命名为jre7u351,然后放到一个合适的地方我们就可以直接使用啦!
j2sdk-image这就是我们平时用的jdk,我们可以将其命名为jdk7u351。然后我们就能正常使用啦!

接下来让我们测试一下吧

进入目录jdk7u-jdk7u351-ga/build/linux-amd64/j2sdk-image/bin

执行命令:./java -version

91e31c9fcb27aec870dd918e6a1cdd27.png

我们看到了正常的版本输出。成功!!

相关文章:

源码编译jdk7 超详细教程 openjdk7

关于源代码 当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。 OpenJDK7u源码托管地址:https://github.com/openjdk/jdk7u 带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而他…...

如何实现日期选择窗口

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…...

Spring Security 6 系列之一 - 开篇入门

之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...

Spring Cloud概述

1. 认识微服务 1.1 单体架构 很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬, 这就是单体架构. 业务的所有功能实现都打包在⼀个war包或者Jar包中, 这种⽅式就称为单体架构. 举个例子: 电商系统包括: ⽤⼾管理, 商品管理, 订单管理, ⽀付管理, 库存…...

mvc如何给action传递参数

步骤(常规方法) 新建一个控制器--LarsController.cs using Microsoft.AspNetCore.Mvc; namespace Blog.Controller; public class LarsController:Controller -----继承 {public IActionResult Index(){return View();} }获取id // program.cs中默认值是idpublic IAction…...

【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…...

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变,安全隐患层出不穷。其中,矿工未佩戴安全帽这一行为,看似微不足道,实则潜藏着巨大的安全风险。一旦发生事故,未佩戴安全帽的矿工将极易受到重创,甚至危及生命。因此,确保每…...

整数的四舍五入----->记录每一点进步

我们知道整数类型的变量对小数部分都不感冒,只要是小数都会舍去,都让他舍去了我们还讲个P,所以接下来就是告诉你怎么不让他全都舍去。 先来试想一下如果这个数字是3.4,存到整数型变量里面是不是直接变成了3,那么我要是…...

Linux栈帧

相关寄存器&指令 寄存器 rax(accumulator):return value rbx(base) rcx(count):4st argument rdx(data):3st argument rsi(sour…...

【代码随想录day59】【C++复健】 47. 参加科学大会(dijkstra(堆优化版)精讲 );94. 城市间货物运输 I

前几天有些事情耽搁了,不过好在图论我完全不会,所以偷看代码思路也没有任何的心理负担,做起来反而相对独立思考更快一点点。 47. 参加科学大会(dijkstra(堆优化版)精讲 ) 本来一开始以为这个堆…...

【网络安全】WIFI WPA/WPA2协议:深入解析与实践

WIFI WPA/WPA2协议:深入解析与实践 1. WPA/WPA2 协议 1.1 监听 Wi-Fi 流量 解析 WPA/WPA2 的第一步是监听 Wi-Fi 流量,捕获设备与接入点之间的 4 次握手数据。然而,设备通常不会频繁连接或重新连接,为了加速过程,攻…...

穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集

题目&#xff1a; 两个方法本质就是决策树的画法不同 方法一解析&#xff1a; 代码&#xff1a; class Solution {private List<List<Integer>> ret;//返回结果private List<Integer> path;//记录路径&#xff0c;注意返回现场public List<List<Int…...

试题转excel;word转excel;大风车excel

一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几乎需要一个下午的时间 关键这些事&#xff0c;枯燥无聊费眼睛&#xff0c;实在是看起来就很蠢的工作 就想着做一个工具&#xff0c;可以自动处理…...

Unity NTPComponent应用, 实现一个无后端高效获取网络时间的组件

无后端高效获取网络时间的组件 废话不多说&#xff0c;直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移&#xff0c; 比如北京时区就是 8, 巴西就是-3&#xff0c;美国就是-5using Newtonsoft.Json; 如果这里报错&#xff0c; 就说明项目没有 NewtonsoftJson插件…...

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…...

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java package com.controller;import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;import javax.s…...

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…...

类和对象(2)

大家好&#xff0c;今天我们继续来学习类和对象的知识&#xff0c;那么今天我们来看看类的概念和类的定义相关的知识&#xff0c;那么话不多说&#xff0c;我们直接开始。 2.类定义和使用 面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机&#xff0c;但是…...

240004基于ssm+maven+mysql+Java的房屋租赁系统的设计与实现

基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化&#xff0c;包括新增了注册功能&#xff0c;房屋模糊查询功能&#xff0c;管理员和用户信息管理等功能&#xff0c;以及对网站界面进行了优…...

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…...

FlowNex 中的两相建模基础知识

通过 FlowNex 中的两相建模解开高效流体动力学的秘密&#xff0c;彻底改变制造业。 挑战 两相流是指两个不同相&#xff08;通常是液体和气体&#xff09;同时流动&#xff0c;它们具有不同的特性和行为。在制造业中&#xff0c;了解两相流对于优化热交换器、化学反应器和流体…...

Mysql笔记

windows安装记录Windows中Mysql安装-CSDN博客 用到的库 通过网盘分享的文件&#xff1a;atguigudb.sql 链接: https://pan.baidu.com/s/1YfC20c2vK9odn-XRJJwUJw 提取码: utk7 --来自百度网盘超级会员v5的分享 Mysql4中表关联关系 1.1对1,比较少用,因为完全可以一张表,当有…...

docker拉取rabbitmq镜像安装延迟队列插件

我这里使用的是rabbitmq:3.12.0-management版本作为示例 1.拉取rabbitmq镜像 docker pull rabbitmq:3.12.0-management 2.启动rabbitmq docker run -d --namerabbitmq --restartalways -p 5672:5672 -p 15672:15672 rabbitmq:3.12.0-management 在咱们拉取时如果出现连接超时可…...

创建一个谷歌插件项目dome上线流程+源码

创建一个简单的 Chrome 扩展程序&#xff0c;其主要功能是 JSON 格式化。用户可以通过点击扩展图标打开一个弹出窗口&#xff0c;在弹出窗口中输入或粘贴 JSON 数据&#xff0c;然后点击格式化按钮来格式化 JSON 数据 谷歌插件&#xff08;即 Chrome 扩展程序&#xff09;主要设…...

举例说明如何在linux下检测摄像头设备具备的功能

假设摄像头设备文件为/dev/video1 &#xff0c;下面是一个专门用于检测 /dev/video1 设备能力的简化程序。这个程序将打印出设备的所有能力、格式和其他相关信息&#xff0c;以帮助你了解设备支持的功能。 检测 /dev/video1 设备能力的程序 #include <fcntl.h> #includ…...

win10配置子系统Ubuntu子系统(无需通过Windows应用市场)实际操作记录

win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09;实际操作记录 参考教程 : win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09; - 一佳一 - 博客园 开启虚拟机服务的 以管理员方式运行PowerShell运行命令。 &#xf…...

东北大学《2024年839自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《东北大学839自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…...

nginx负载均衡配置

目录 一、简介 二、nginx下载 二、nginx配置 四、注意点 (1)/api与/api/的区别 (2)http://gatewayserver与http://gatewayserver/的区别 一、简介 Nginx&#xff08;发音为 "engine-x"&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMA…...

【教学类-83-02】20241214立体书三角嘴2.0——青蛙(扁菱形嘴)

背景需求&#xff1a; 制作小鸡立体贺卡三角嘴&#xff0c;它的嘴是正菱形&#xff08;四条边长度相等&#xff0c;类似正方形&#xff09; 【教学类-83-01】20241215立体书三角嘴1.0——小鸡&#xff08;正菱形嘴&#xff09;-CSDN博客文章浏览阅读744次&#xff0c;点赞22次…...

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…...

【C++】函数计算题解论

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;思路解析3.1 函数的递归定义3.2 边界条件控制3.3 记忆化搜索 &#x1f4af;C实现代码&#x1f4af;添加解释&#x1f4af;小结 &#x1f4af;前言 在…...

Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)

1、概述 Redis集群&#xff08;Cluster&#xff09;通过分片&#xff08;sharding&#xff09;实现了水平扩展&#xff0c;允许数据分布在多个节点上&#xff0c;从而提升性能和存储容量。 在Redis集群中&#xff0c;数据被分割成16384个哈希槽&#xff08;hash slots&#x…...

Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材

注明&#xff1a;网络素材&#xff0c;仅供学习使用&#xff01; https://download.csdn.net/download/elineSea/90017291...

深入理解addEventListener中的第二个参数:listener

起因 首先&#xff0c;之前留给我们的一点东西&#xff0c;js的深入内容关键在addEventListener&#xff0c;这个函数中的参数&#xff0c;它们三个参数&#xff0c;分别为type、listener、options&#xff0c;当然在这里还有一些小的问题&#xff0c;比如mdn文档中它介绍到了另…...

数据库镜像(Database Mirroring):高可用性与灾难恢复技术

一、引言 在现代信息系统中&#xff0c;数据的可用性和完整性至关重要&#xff0c;尤其是对金融、电商、医疗等高并发和高可靠性要求的行业。数据库镜像&#xff08;Database Mirroring&#xff09; 作为一种高可用性与灾难恢复技术&#xff0c;通过将主数据库的数据实时复制到…...

【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton

目录 QPushButton 例子&#xff1a; QRadioButton 例子&#xff1a; 按钮的常见信号函数 单选按钮分组 例子&#xff1a; QCheckButton 例子&#xff1a; QToolButton QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件)&#xff0c;包括…...

day-21 内核链表以及栈

1.昨日作业 1.删除指定节点 找到删除就完事了&#xff0c;双向可以停在删除处。 /***************************** 功能&#xff1a;删除指定结点&#xff08;通过姓名&#xff09;* 参数&#xff1a;phead&#xff1b;oldname; * 返回&#xff1a;成功0&#xff0c;失-1&…...

深度与视差的关系及其转换

深度与视差的关系及其转换 在计算机视觉和立体视觉中&#xff0c;深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中&#xff0c;我们将深入探讨深度和视差的概念&#xff0c;并介绍它们之间的转换关系。 …...

Unity全局光照详解

之前就学过但是太久没用又忘了&#xff0c;因此用最简洁易懂的语言做个记录。 全局光照分为两个系统&#xff0c;分别是实时光照和混合光照。&#xff08;点击window/Rendering/Lighing打开此面板&#xff09; 其中全局光照对于我来说都是新技术了&#xff0c;上一次学…...

外观模式的理解和实践

外观模式&#xff08;Facade Pattern&#xff09;是一种常用的软件设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。该模式定义了一个高层的接口&#xff0c;使得子系统更容易使用。简单来说&#xff0c;外观模式就是通过引入一个外观角色…...

【前端知识】Javascript进阶-类和继承

文章目录 概述一、类&#xff08;Class&#xff09;二、继承&#xff08;Inheritance&#xff09; 三、继承的实现方式作用一、类和作用二、继承和作用 概述 当然可以&#xff0c;以下是对JavaScript中类和继承的详细介绍&#xff1a; 一、类&#xff08;Class&#xff09; 定…...

Kylin麒麟操作系统 | Nginx服务部署

目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器&#xff…...

51单片机--- 串口控制仿真

51单片机--- 串口控制仿真 实验目标:51单片机接收串口数据,根据数据点亮LED。 实验步骤: 在Proteus里画出原理图 在Keil里用C语言编写程序 在Proteus中导入HEX文件,启动仿真 实验协议: 波特率115200 数据位:8位,停止位:1位,校验位:无。 命令格式: 一条命令为…...

<数据集>输电线塔杂物识别数据集<目标检测>

数据集下载链接 &#xff1c;数据集&#xff1e;输电线塔杂物识别数据集&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90141102数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1099张 标注数量(xml文件个数)&#xff1a;1099 …...

HarmonyOS学习 --- Mac电脑获取手机UDID

一&#xff0c;手机打开开发者选项 1&#xff0c;打开“设置 > 关于本机”&#xff0c;连续点击7次版本号&#xff0c;打开开发者选项。 2&#xff0c;打开“USB调试”。 二&#xff0c;配置环境变量 获取OpenHarmony SDK 安装路径 /Users/admin/Library/OpenHarmony/Sdk/10…...

OpenIPC开源FPV之Adaptive-Link地面站代码解析

OpenIPC开源FPV之Adaptive-Link地面站代码解析 1. 源由2. 框架代码3. 软件配置3.1 默认配置3.2 加载配置3.3 更新配置 4. 通信例程4.1 TCP报文解析4.2 UDP报文发送 5. 特殊指令5.1 request_keyframe5.2 drop_gop5.3 resume_adaptive5.4 pause_adaptive 6. 总结7. 参考资料 1. 源…...

Linux Docker环境中解决中文字体乱码问题完整指南

问题背景 在Linux Docker环境中运行涉及中文显示的应用时&#xff08;如Selenium网页截图、PDF生成等&#xff09;&#xff0c;经常会遇到中文显示为方块或乱码的问题。这是因为Linux系统默认没有安装中文字体所导致的。 解决方案 我们可以从Windows系统复制常用中文字体到D…...

[数据结构#1] 并查集 | FindRoot | Union | 优化 | 应用

目录 1. 并查集原理 问题背景 名称与编号映射 数据结构设计 2. 并查集基本操作 (1) 初始化 (2) 查询根节点 (FindRoot) (3) 合并集合 (Union) (4) 集合操作总结 并查集优化 (1) 路径压缩 (2) 按秩合并 3. 并查集的应用 (1) 统计省份数量 (2) 判断等式方程是否成…...

用于卫星影像间接RPC模型精化的通用光束法平差方法

引言 介绍了通用RPC模型的表达式&#xff0c;which has been down to death 描述了RPC模型产生误差的原因——主要与定义传感器方位的姿态角有关。 每个影像都会对应一个三维点云&#xff0c;但是对同一地物拍摄的不同影像对应出来的三维点云是不一样的&#xff0c;所以才需…...