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

如何定制RockyLinux ISO

目标

基于Rocky9官方ISO做定制,构建自己的ISO

  • 可以添加非官方预装的RPM包
  • 实现Kickstart自动化安装, 完成分区等操作
  • ISO安装后,可以执行自定义脚本,比如安装你手动添加的RPM包

Rocky9 官方ISO内容分析

挂载Rocky9 ISO,得到如下内容:

BaseOS/
EFI/
images/
isolinux/
LICENSE
media.repo
minimal/

ISO各个目录/文件的作用:

  • BaseOS/:这个目录包含了Rocky Linux的基础操作系统环境。它提供了操作系统的核心组件和必要的软件包,用于构建和运行基本的系统
  • EFI/:这个目录包含了用于UEFI(统一可扩展固件接口)启动的文件。这些文件使得系统能够在支持UEFI的硬件上启动
  • images/:这个目录包含了用于云环境的Rocky Linux镜像。这些镜像可以被用于各种云服务提供商,以便于在云中部署Rocky Linux
  • isolinux/:这个目录包含了启动Rocky Linux安装介质所需的引导装载器文件。这些文件负责在系统启动时加载Linux内核和初始化RAM磁盘
  • minimal/:这个目录包含了用于最小化安装的Rocky Linux环境。它通常用于安装一个最小化的Rocky Linux系统,不包括完整的DVD镜像或者通过网络安装
  • media.repo:这个文件是一个YUM仓库配置文件,它允许用户直接从安装介质(如DVD或USB驱动器)安装软件包。这个文件指定了安装介质中软件包的位置,使得系统能够从本地介质而不是网络仓库安装软件
  • LICENSE:这个文件包含了Rocky Linux发行版的许可证信息。它说明了用户可以如何使用和分发Rocky Linux

定制ISO的流程简述

  • 准备一台Rocky9.X编译机, 安装必要编译依赖, 下载Rocky官方的ISO, 挂载ISO。
  • 把自定义的RPM包复制到Packages/目录下, 调用createrepo更新RPM信息。
  • 编写ks.cfg,实现kickstart定制化的自动安装
  • 调用genisoimage生成VA的ISO, 调用implantisomd5校验ISO的md5

定制ISO的具体步骤

0.准备一台RockyLinux9.X编译机,安装必要的编译依赖

dnf install -y epel-release genisoimage isomd5sum anaconda \
createrepo mkisofs rsync yum-utils squashfs-tools rpm-build \
glibc-devel krb5-devel autoconf automake pykickstart

1.下载Rocky9.4 minimal官方ISO, 挂载ISO

wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-minimal.iso
mkdir tmp ISO
mount -o loop Rocky-9.4-x86_64-minimal.iso tmp/
cp -a tmp/* ISO/

2. 添加非预装的RPM包到ISO

添加RPM包的原理是:

  • 启动一台新安装的Rocky 9.4的虚拟机或容器, 执行rpm -qa > old_rpm_list记录当前系统的所有RPM包
  • 执行yum install安装RPM包, 安装成功后, 再次执行rpm -qa > new_rpm_list
  • 通过diff命令比较new_rpm_list和old_rpm_list的差异, 得到这个RPM包依赖的所有RPM包, 把所有RPM包下载到本地
  • 最后把RPM包都传到ISO的Packages目录, 调用createrepo更新RPM信息

以安装Squid这个非预装的RPM包为例, 给出具体操作步骤:

新安装一台Rocky9.4的VM,或者启动一个新的Rocky9.4容器,执行如下操作:

rpm -qa > old_rpm_list
yum install -y squid 
rpm -qa > new_rpm_list
diff old_rpm_list new_rpm_list
> perl-English-1.11-481.el9.noarch
> perl-Math-Complex-1.59-481.el9.noarch
> perl-Math-BigInt-1.9998.18-460.el9.noarch
> perl-DBI-1.643-9.el9.x86_64
> libecap-1.0.1-10.el9.x86_64
> perl-Digest-SHA-6.02-461.el9.x86_64
> httpd-filesystem-2.4.57-11.el9_4.1.noarch
> squid-5.5-13.el9_4.x86_64# 逐一下载上面的RPM包
yum reinstall -y [RPM包] --downloadonly --downloaddir=./# 把所有RPM包传到ISO/minimal/Packages目录下# 调用createrepo更新RPM信息, 删掉原来的xml
cd ISO/minimal/
createrepo -g repodata/*.xml ./执行成功后,查看repodata目录, 可以手动把旧的文件(*.xml.gz,*.bz2)删掉
# ll -rt
-rw-r--r-- 1 root root  223063 May  6  2024 b293fe7dc4f43936b010f1e39498d1c1914ec9b64b239ca295a99024469ad291-other.xml.gz
-rw-r--r-- 1 root root  639692 May  6  2024 910d1caf3c2f6f2be8ec8d1690ade00b3ca742ff265c58bfe8e09564907c7b1f-primary.xml.gz
-rw-r--r-- 1 root root  432959 May  6  2024 6727bfc392a5f0d542bfa33e2e7c66c0acfac68ca643a815ff142eceb83c14eb-filelists.xml.gz
-rw-r--r-- 1 root root  277890 May  6  2024 4844662615d6cdbd59e187e2ff1f4d3aa7fbc153dd28b6024c7eef14e9e14c94-other.sqlite.bz2
-rw-r--r-- 1 root root  546603 May  6  2024 33df6249457b6e40f26bcee5eee9fbecbdb8026b50c9ce3a354001ea04fcaa9d-filelists.sqlite.bz2
-rw-r--r-- 1 root root 1338121 May  6  2024 bd201f63f99e67d65f859f38ab472022f055238d74c78c6dd407ef57c4f0f90d-primary.sqlite.bz2-rw-r--r-- 1 root root  288689 Nov  5 22:04 7ec709b6d42da53e7fb35b426e69414a518151eb4814b1fe1703b7b18d519e33-x86_64.xml
-rw-r--r-- 1 root root  644366 Nov  5 22:04 aa896d64b33075d63a1a150b45f78069845b6ba23e1d9b6914028c89d3444343-primary.xml.gz
-rw-r--r-- 1 root root  446349 Nov  5 22:04 96bac81c16728c9c33f8a7da9388ceaeb8fa19a0d173fd3220ca34f5e91e5966-filelists.xml.gz
-rw-r--r-- 1 root root  225673 Nov  5 22:04 4b548eb44fe93e0561e5c451d5d26ae93033ba268276eb953c2a88f3d898d554-other.xml.gz
-rw-r--r-- 1 root root   71732 Nov  5 22:04 d250f7f881bb991be3648c021fb305dd6085b902321b26f52033500ebff7cae1-x86_64.xml.gz
-rw-r--r-- 1 root root  279932 Nov  5 22:04 35a6d5480475ae34480bd0b8eeeeb4954135b980d7585f645f92adc563af724b-other.sqlite.bz2
-rw-r--r-- 1 root root  554441 Nov  5 22:04 131a105582b0b396b43bfe2085074488ec256b9901e115f1699d9ef40f0cbfce-filelists.sqlite.bz2
-rw-r--r-- 1 root root 1352325 Nov  5 22:04 fb6353f4de5dacf439dd366b2caf0d7f8fff4da3dca132dbbd86b820bbed0e28-primary.sqlite.bz2

3. 添加ks.cfg,实现Kickstart自动化安装ISO

比如说我想在ks.cfg中做如下配置:

  • 自定义分区。使用LVM分区,添加逻辑卷组(命名为VA),再分三个区分别挂载到路径(/ /data /back)
  • 设置root密码为password@123
  • 设置hostname为localhost.localdomain
  • 把主网卡名称设置为eth0, static IP 192.168.192.3, 掩码255.255.255.252, 网关192.168.192.2, DNS 8.8.8.8
  • 禁用firewall, 关闭selinux
  • 安装自定义的RPM包(Squid)
  • 安装完成后执行一些自定义指令(比如启动Squid,设置Squid开机自启动)

注意,我们不需要从零编写ks.cfg,这样太麻烦了。更好的做法是用官方ISO装一台RockyLinux9.4 VM,在图形界面手动完成以上配置,等安装完成后把/root/anaconda-ks.cfg拷出来,重命名为ks.cfg,再做简单修改即可。
ks.cfg内容可以参考:

# Generated by Anaconda 34.25.4.9
# Generated by pykickstart v3.32
#version=RHEL9
# Use graphical install
graphical
repo --name="minimal" --baseurl=file:///run/install/sources/mount-0000-cdrom/minimal# Run the Setup Agent on first boot
firstboot --enable# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8# Network information
network  --bootproto=static --device=eth0 --gateway=192.168.192.2 --ip=192.168.192.3 --nameserver=8.8.8.8 --netmask=255.255.255.252 --ipv6=auto --activate
network  --hostname=localhost.localdomain# Use CDROM installation media
cdrom# System timezone
timezone Asia/Shanghai --utc# Root password
rootpw --iscrypted --allow-ssh $6$TUP1uudnSI9B7Z6W$LyM66VXooostM4L8gU1D8Vwh1Si7fnocLA7EdLbpYI8sWvDcf2qS5gu4drGfajfwYMLh6pvXOV/G5A4BFWaxe0# System bootloader configuration
bootloader --append=" crashkernel=auto rootdelay=300 systemd.unified_cgroup_hierarchy=1 biosdevname=0 net.ifnames=0" --location=mbr --boot-drive=sda# Generated using Blivet version 3.6.0
ignoredisk --only-use=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --ondisk=sda --size=1024
part pv.881 --fstype="lvmpv" --ondisk=sda --size=19450
part biosboot --fstype="biosboot" --ondisk=sda --size=2
volgroup VA --pesize=4096 pv.881
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=VA
logvol /back --fstype="ext4" --size=5120 --name=back --vgname=VA
logvol /data --fstype="ext4" --size=1024 --name=data --vgname=VA
logvol / --fstype="ext4" --percent=100 --name=root --vgname=VA# Disable SELinux
selinux --disabled# # Reboot after installation
reboot --eject%packages
@^minimal-environment
@standard# Add your RPM packages
squid%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%post --logfile=/root/ks-post.logecho "Post-Script for installation"systemctl enable squid
systemctl restart squid%end

使用ksvalidator检查ks.cfg语法, 再把ks.cfg拷贝到ISO目录

cp ks.cfg isobuild/isolinux/ks.cfg

修改isolinux.cfg, grub.cfg

修改ISO中的isolinux.cfg文件
需要删掉文件末尾的默认启动菜单, 再添加你的启动菜单,通过inst.ks指定ks.cfg路径,如下:

label kickstartmenu label ^Install My Custom ISO(Based on Rocky 9.4)menu defaultkernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=VA quiet inst.ks=hd:LABEL=VA:/isolinux/ks.cfg inst.text selinux=0 biosdevname=0 net.ifnames=0

修改ISO中的grub.cfg文件
需要修改默认的menuentry, 通过inst.ks指定ks.cfg路径,如下:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install My Custom ISO(Based on Rocky Linux 9.4)' --class fedora --class gnu-linux --class gnu --class os {linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=VA quiet inst.ks=hd:LABEL=VA:/isolinux/ks.cfg inst.text selinux=0 biosdevname=0 net.ifnames=0initrdefi /images/pxeboot/initrd.img
}

构建ISO

调用genisoimage生成ISO, 调用implantisomd5校验ISO的md5

genisoimage -input-charset utf-8 -U -r -v -T -J -joliet-long -V "VA" -volset "VA" -A "VA" \
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o custom.iso ISO/implantisomd5 custom.iso

测试, 安装ISO

最后安装ISO, 测试KickStart安装是否成功。

参考资料

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/automatically_installing_rhel/creating-kickstart-files_rhel-installer

相关文章:

如何定制RockyLinux ISO

目标 基于Rocky9官方ISO做定制,构建自己的ISO 可以添加非官方预装的RPM包实现Kickstart自动化安装, 完成分区等操作ISO安装后,可以执行自定义脚本,比如安装你手动添加的RPM包 Rocky9 官方ISO内容分析 挂载Rocky9 ISO,得到如下…...

python基于深度学习的音乐推荐方法研究系统

需求设计 一款好的音乐推荐系统其目的是为用户进行合理的音乐推荐,普通的用户在登录到系统之后,能够通过搜索的方式获取与输入内容相关的音乐推荐,而以管理员登录到系统之后,则可以进行徐昂管的数据管理等内容操作。此次的需求主…...

机器学习系列----介绍前馈神经网络和卷积神经网络 (CNN)

前言 在深度学习领域,神经网络是一种模拟人脑神经元结构和功能的数学模型。它通过大量的层次结构和参数调整来实现模式识别、分类、回归等任务。常见的神经网络结构有前馈神经网络(Feedforward Neural Networks,简称 FNN)和卷积神…...

vue.js组件和传值以及微信小程序组件和传值

微信小程序组件以及vue.js组件 一.微信小程序组件引用1.创建组件Component2.页面组件引用3.组件传值3.1 父视图传值到子组件 (父---->子)3.2 子组件传值给父组件 (子---->父)3.3 父组件方法传递到子组件 4. 界面之间的传值4.1 正向传值4.2 反向传值…...

c语言编程题(函数)

1编写函数将一个仅包含整数&#xff08;可能为负&#xff09;的字符串转换为对应的整数 方法一使用标准库函数 atoi atoi 函数是C语言标准库中的一个函数&#xff0c;用于将字符串转换为整数。 代码&#xff1a; #include <stdio.h> #include <stdlib.h> // 包含…...

华为eNSP:QinQ

一、什么是QinQ&#xff1f; QinQ是一种网络技术&#xff0c;全称为"Quantum Insertion"&#xff0c;也被称为"Q-in-Q"、"Double Tagging"或"VLAN stacking"。它是一种在现有的VLAN&#xff08;Virtual Local Area Network&#xff0…...

JAVA基础-多线程线程池

文章目录 1. 多线程1.1什么是多线程&#xff08;1&#xff09;并发和并行&#xff08;2&#xff09;进程和线程 1.2多线程的实现方式1.2.1 方式一&#xff1a;继承Thread类1.2.2 方式二&#xff1a;实现Runnable接口1.2.3方式三: 实现Callable接口 1.3 常见的成员方法1.3.1 设置…...

HarmonyOS 沉浸式状态实现的多种方式

1. HarmonyOS 沉浸式状态实现的多种方式 HarmonyOS 沉浸式状态实现的多种方式 1.1. 方法一 1.1.1. 实现讲解 &#xff08;1&#xff09;首先设置setWindowLayoutFullScreen(true)&#xff08;设置全屏布局&#xff09;。   布局将从屏幕最顶部开始到最底部结束&#xff0c…...

Python3.11.9下载和安装

Python3.11.9下载和安装 1、下载 下载地址&#xff1a;https://www.python.org/downloads/windows/ 选择版本下载&#xff0c;例如&#xff1a;Python 3.11.9 - April 2, 2024 2、安装 双击exe安装 3、配置环境变量 pathD:\Program Files\python3.11.9...

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…...

减少 try...catch,定义全局统一异常处理器!

前言 软件开发springboot项目过程中&#xff0c;不可避免的需要处理各种异常,spring mvc 架构中各层会出现大量的try {...} catch {...} finally {...}代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而且还影响代码的可读性。这样就需要定义个全局统一异常处理器&#x…...

多点支撑:滚珠导轨的均匀分布优势!

滚珠导轨的滚珠稳定性可以有效保持滚珠导轨的稳定运行&#xff0c;减少滚珠脱落的风险&#xff0c;确保设备的长期稳定性和可靠性。事实上&#xff0c;滚珠导轨的滚珠稳定性主要依赖于以下几个方面&#xff1a; 1、精密的制造工艺&#xff1a;滚珠导轨的导轨和滑块通常采用高精…...

电气火灾探测器在商场火灾隐患监测和火灾预防中的应用

徐悦 安科瑞电气股份有限公司 近年来&#xff0c;全国火灾事故频发&#xff0c;尤其是在大型商场等公共场所&#xff0c;火灾造成了巨大的人员伤亡和财产损失。以南京金盛百货中央门店火灾为例&#xff0c;该起事故暴露了商场在电气安全、消防管理方面的重大隐患&#xff0c;…...

速盾:如何有效防止服务器遭受攻击?

服务器攻击是网络安全中常见的问题&#xff0c;但我们可以采取一系列的措施来有效防止服务器的遭受攻击。以下是一些常见的防御措施&#xff1a; 更新和维护服务器软件&#xff1a;及时更新操作系统、应用程序以及安全补丁&#xff0c;以确保最新版本的软件没有已知的漏洞。同时…...

【今日更新】使用Python辅助处理WebGIS

Linux发行版本: Debian GNU/Linux 12 (bookworm)操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36Python版本: 3.11.2 1.使用Python处理MapServer配置文件Mapfile 创建、分析、修改和格式化的python库 MapServer Mapfiles。 Python 2和3 兼容 纯Python-无MapServer依…...

Linux 消息队列

在Linux中&#xff0c;线程间消息队列可以通过使用System V消息队列或POSIX消息队列来实现。 使用System V消息队列&#xff1a; System V消息队列是一种基于IPC&#xff08;Inter-process Communication&#xff0c;进程间通信&#xff09;的通信机制&#xff0c;可以用于进程…...

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要…...

delphi 编译多语言工程 error RC2104 : undefined keyword or key name:

Delphi 10.3中建立多语言工程&#xff0c;编译时出现错误&#xff1a;error RC2104 : undefined keyword or key name: 出现错误的的文件是.rc文件&#xff0c;出现错误的位置是 System_JSONConsts_SInvalidJavascriptQuote, L"Invalid JavaScript string quote character…...

[python] 如何debug python脚本中C++后端的core dump

文章目录 Debug过程Reference Debug过程 另外&#xff1a;对于core dump: gdb版本是>7&#xff0c;gdb从版本7开始支持对Python的debug。确保你的系统中安装了 GDB 调试器和对应版本的 Python 调试信息包&#xff08;例如 python-dbg 或 python-debuginfo&#xff09;。 #…...

Ecmascript(ES)标准

Ecmascript&#xff08;ES&#xff09;标准 ECMAScript&#xff08;通常简称为 ES&#xff09;是一种标准化的脚本语言&#xff0c;由 Ecma International 通过 ECMA-262 标准定义。ECMAScript 是 JavaScript 的规范版本&#xff0c;几乎所有的现代浏览器和许多服务器端环境&a…...

易泊车牌识别相机:4S 店的智能之选

在当今数字化时代&#xff0c;科技的进步不断为各个行业带来更高效、便捷的解决方案。对于 4S 店来说&#xff0c;易泊车牌识别相机的出现&#xff0c;无疑为其运营管理带来了全新的变革。 一、易泊车牌识别相机的强大功能 易泊车牌识别相机以其卓越的性能和精准的识别能力&…...

Webpack 深度解析与实战指南

文章目录 前言一、安装于基本配置安装Webpack 和 Webpack CLI创建基本配置文件 二、加载器常见的加载器配置加载器 三、插件&#xff08;Plugins&#xff09;常用的插件配置插件 四、性能优化缓存代码分割Tree Shaking压缩 五、开发服务器安装服务器配置服务器启动服务器生产环…...

【RabbitMQ】06-消费者的可靠性

1. 消费者确认机制 没有ack&#xff0c;mq就会一直保留消息。 spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack2. 失败重试机制 当消费者出现异常后&#xff0c;消息会不断requeue&#xff08;重入队&#xff09;到队列&#xff0c;再重新发送给消费者。…...

【K8S系列】如何监控集群CPU使用率并设置告警的分析与详细解决方案

监控 Kubernetes 集群的 CPU 使用率并设置告警是确保集群健康和性能的关键。以下是几种常见的方案&#xff0c;每种方案的具体步骤都进行了详细说明。 方案 1: 使用 Prometheus 和 Grafana 1. 安装 Prometheus 和 Grafana 1.1 使用 Helm 安装 Prometheus 添加 Helm 仓库: hel…...

解线性方程组(二)

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法&#xff0c;提高编程能力和解算线性方程组问题的实践技能。 实验内容&#xff1a; 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…...

HarmonyOS Next 实战卡片开发 02

HarmonyOS Next 实战卡片开发 02 卡片开发中&#xff0c;还有一个难点是显示图片。其中分为显示本地图片和显示网络图片 显示本地图片 卡片可以显示本地图片&#xff0c;如存放在应用临时目录下的图片。路径比如 /data/app/el2/100/base/你的项目boundleName/temp/123.png 以…...

FastDDS服务发现之PDP的收发

目录 PDP发送PDP接收EDP更新 EntityID 通过FastDDS服务发现之PDP和EDP的创建这一节内容&#xff0c;可以了解服务发现的概念&#xff0c;机制和PDP/EDP中各类对象的创建&#xff0c;本文详细介绍Simple PDP发送数据&#xff0c;接收数据和处理报文的流程。 PDP发送 通过在RTP…...

【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(2)

前言 大家好吖&#xff0c;欢迎来到 YY 滴计算机网络 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 本博客主要内容&#xff0c;收纳了一部门基本的计算机网络题目&#xff0c;供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…...

关于有机聚合物铝电容的使用(2)

在使用时需要特别注意的几个应用场景&#xff1a; 在有较长供电电缆或PCB电源布线较长的场合。 这个场景应当仍与有机聚合物铝电容的耐压有关。 假设在相同的冲击电流下&#xff0c;较长的供电电缆和PCB布线&#xff0c;那么电缆和PCB布线上产生的冲击电压就会越高。故而&…...

Linux -- 进程初印象

目录 预备知识 切入点 PCB 看见进程 pid getpid 函数 预备知识 Linux -- 冯诺依曼体系结构&#xff08;硬件&#xff09;-CSDN博客https://blog.csdn.net/2301_76973016/article/details/143598784?spm1001.2014.3001.5501 Linux -- 操作系统&#xff08;软件&#xf…...

南京尚网网络科技有限公司/福建企业seo推广

题目要求1登录账号&#xff1a;要求由6到12位字母、数字、下划线组成&#xff0c;只有字母可以开头&#xff1b;(1分)2登录密码&#xff1a;要求显示“• ”或“*”表示输入位数&#xff0c;密码要求八位以上字母、数字组成。(1分)3性别&#xff1a;要求用单选框或下拉框实现&a…...

提升神马seo关键词自然排名/北京seo课程培训

mysql中的时间戳是10位数。利用java取值后在页面上展示会显示为1970年的某个时间&#xff0c;这是因为前端展示的时间戳是13位数的。需要将从mysql中取到的时间乘以1000然后去返回给前端。再由前端将时间戳转换为时间。...

珠海做网站公司有哪些/好用的磁力搜索引擎

KingbaseESV8R6有一种表称为unlogged&#xff0c;在该表新建的索引也属于unlogged。和普通表的区别是&#xff0c;对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中。在数据库异常关机或者异常崩溃后该表的数据会被truncate掉&#xff0c;但是在写入性能上会比普通…...

网站ueo/太原百度快速优化排名

动量梯度下降&#xff08;Gradient Descent With Momentum&#xff09;&#xff0c;简称为动量方法&#xff08;Momentum&#xff09;&#xff0c;运行速度几乎总是快于标准的梯度下降算法&#xff0c;并且能够解决随机梯度下降所遇到的山谷震荡以及鞍部停滞问题&#xff0c;这…...

青岛网站专业制作/百度推广在哪里

1.答案初始乘积-最终乘积的期望。然后直接dpntt是O(nklogk) 2.考虑展开式子anssum(a[i]-b[i])&#xff0c;大概感受一下未知数个数相同的项系数相同&#xff0c;问题在于如何求系数 3.没思路。题解的做法是把状态用子集表示&#xff0c;这样就很好转移。 F(s,i)表示s集合在i次操…...

JavaScript做的网站/游戏代理怎么找渠道

Windows API 简介 其实很早之前我就完成了红队路径&#xff0c;只是没写笔记&#xff0c;现在开始复习一下红队&#xff0c;根据大佬的建议&#xff0c;我们直接只看 .NET C#相关的利用 了解如何与 win32 API 交互并了解其广泛的用例 Windows API 提供本机功能来与 Windows …...