离线安装apisix

news2024/11/28 8:36:07

公司部分机器因为某些原因无法联网,只能离线安装apisix,折腾了很久,走了很多弯路,记录一下安装过程。

下载所有的包

安装epel源

sudo yum install epel-release

在home下创建文件夹/apisix-dependence

下载apache-apisix-repo以及相关的依赖

yumdownloader yum-utils-1.1.31-54.el7_8.noarch
yumdownloader python-kitchen-1.1.1-5.el7.noarch
yumdownloader python-chardet-2.2.1-3.el7.noarch
yumdownloader libxml2-python-2.9.1-6.el7_9.6.x86_64
yumdownloader libxml2-2.9.1-6.el7_9.6.x86_64

yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
cd /var/tmp/yum-root-
mv apache-apisix-repo-1.0-1.noarch.rpm /home/apisix-dependence

apisix-base并获取其依赖

yumdownloader gcc-4.8.5-44.el7.x86_64
yumdownloader pcre-8.32-17.el7.x86_64
yumdownloader pcre-devel-8.32-17.el7.x86_64
yumdownloader git-1.8.3.1-23.el7_8.x86_64
yumdownloader curl-7.29.0-59.el7_9.1.x86_64
yumdownloader libcurl-7.29.0-59.el7_9.1.x86_64
yumdownloader openldap-2.4.44-25.el7_9.x86_64
yumdownloader openldap-devel-2.4.44-25.el7_9.x86_64
yumdownloader cyrus-sasl-devel-2.1.26-24.el7_9.x86_64

安装cyrus-sasl-devel-2.1.26-24.el7_9.x86_64的依赖

yum -y install cyrus-sasl-devel-2.1.26-24.el7_9.x86_64.rpm --downloadonly --downloaddir=./
yumdownloader unzip-6.0-24.el7_9.x86_64

安装apisix-base并获取其依赖

yumdownloader apisix-base-1.21.4.1.3-0.el7.x86_64
yum -y install apisix-base-1.21.4.1.3-0.el7.x86_64.rpm --downloadonly --downloaddir=./

下载luarocks

wget https://github.com/luarocks/luarocks/archive/v3.8.0.tar.gz

下载etcd

wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz

下载openresty-1.19(如果用了rpm包就不用执行1.7、1.8和1.9了)

如果apisix init报ssl.core找不到,解决方案:将openresty1.21版本改成1.19版本,apisix默认安装openresty-1.21。
方式1:

yumdownloader openresty-1.19.9.1-1.el7.x86_64

方式2:

wget https://openresty.org/download/openresty-1.19.9.1.tar.gz

下载openssl

wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz --no-check-certificate

下载openssl的依赖,zlib和zlib-devel

yumdownloader zlib
yumdownloader zlib-devel

下载安装perl以及perl的依赖

yumdownloader perl
yumdownloader perl-parent-0.225-244.el7.noarch perl-HTTP-Tiny-0.033-3.el7.noarch perl-podlators-2.5.1-3.el7.noarch perl-Pod-Perldoc-3.20-4.el7.noarch perl-Pod-Escapes-1.04-297.el7.noarch perl-Encode-2.51-7.el7.x86_64 perl-Text-ParseWords-3.29-4.el7.noarch perl-Pod-Usage-1.63-3.el7.noarch perl-libs-5.16.3-297.el7.x86_64 perl-Exporter-5.68-3.el7.noarch perl-constant-1.27-2.el7.noarch perl-Socket-2.010-5.el7.x86_64 perl-Time-Local-1.2300-2.el7.noarch perl-Carp-1.26-244.el7.noarch perl-PathTools-3.40-5.el7.x86_64 perl-Scalar-List-Utils-1.27-248.el7.x86_64 perl-macros-5.16.3-297.el7.x86_64 perl-Pod-Simple-3.28-4.el7.noarch perl-Storable-2.45-3.el7.x86_64 perl-File-Temp-0.23.01-3.el7.noarch perl-File-Path-2.09-2.el7.noarch perl-threads-shared-1.43-6.el7.x86_64 perl-threads-1.87-4.el7.x86_64 perl-Time-HiRes-1.9725-3.el7.x86_64 perl-Filter-1.49-3.el7.x86_64 perl-Getopt-Long-2.40-3.el7.noarch perl-5.16.3-297.el7.x86_64

下载安装gcc相关安装包

创建gcc/目录,然后安装以下依赖包:

yumdownloader cpp-4.8.5-44.el7.x86_64
yumdownloader glibc-devel
yumdownloader libcpp-4.8.5-44.el7.x86_64
rm -rf glibc-devel-2.17-326.el7_9.i686.rpm
yumdownloader libgcc
rm -rf libgcc-4.8.5-44.el7.i686.rpm
yumdownloader libgomp
rm -rf libgomp-4.8.5-44.el7.i686.rpm
yumdownloader libmpc.so.3
yumdownloader libmpfr.so.4

安装包全家福

在这里插入图片描述

打包

zip -r -q -o apisix-dependence.zip apisix-dependence/

注意:unzip-6.0-24.el7_9.x86_64.rpm需要单独上传,安装之后才能解压zip包

安装rpm包

上传安装包到离线机器的/home下,首先安装unzip软件,然后解压依赖包

rpm -ivh unzip-6.0-24.el7_9.x86_64.rpm
unzip apisix-dependence.zip

按顺序安装apache-apisix-repo相关的安装包

rpm -ivh python-chardet-2.2.1-3.el7.noarch.rpm
rpm -ivh python-kitchen-1.1.1-5.el7.noarch.rpm
rpm -ivh yum-utils-1.1.31-54.el7_8.noarch.rpm
rpm -ivh libxml2-2.9.1-6.el7_9.6.x86_64.rpm
rpm -ivh libxml2-python-2.9.1-6.el7_9.6.x86_64.rpm
rpm -ivh apache-apisix-repo-1.0-1.noarch.rpm

按顺序安装apisix-base相关的安装包

rpm -ivh openresty-zlib-1.2.12-1.el7.x86_64.rpm
rpm -ivh openresty-pcre-8.45-1.el7.x86_64.rpm
rpm -ivh openresty-openssl111-1.1.1s-1.el7.x86_64.rpm
rpm -ivh openresty-openssl111-devel-1.1.1s-1.el7.x86_64.rpm
rpm -ivh libcurl-7.29.0-59.el7_9.1.x86_64.rpm  --replacefiles
rpm -ivh curl-7.29.0-59.el7_9.1.x86_64.rpm  --replacefiles
rpm -ivh cyrus-sasl-lib-2.1.26-24.el7_9.x86_64.rpm  --replacefiles
rpm -ivh cyrus-sasl-2.1.26-24.el7_9.x86_64.rpm
rpm -ivh cyrus-sasl-devel-2.1.26-24.el7_9.x86_64.rpm
rpm -ivh openldap-2.4.44-25.el7_9.x86_64.rpm --replacefiles
rpm -ivh  openldap-devel-2.4.44-25.el7_9.x86_64.rpm
rpm -ivh  apisix-base-1.21.4.1.3-0.el7.x86_64.rpm

安装openresty-1.19

rpm -ihv openresty-1.19.9.1-1.el7.x86_64.rpm  --force --nodeps

公共安装包

rpm -ivh gcc-4.8.5-44.el7.x86_64.rpm  --force --nodeps
rpm -ivh pcre-8.32-17.el7.x86_64.rpm
rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm

rpm后面跟的参数说明

1、–nodeps – force
加上那两个参数的意义就在于,安装时不再分析包之间的依赖关系而直接安装,也就不会再提示error: Failed dependencies:这样的错误了
2、–replacefiles
安装提示软件冲突时,添加–replacefiles参数即可。

安装etcd

将etcd安装包复制到/home下,然后执行以下命令:

ETCD_VERSION='3.5.4'
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz &&   cd etcd-v${ETCD_VERSION}-linux-amd64 &&   sudo cp -a etcd etcdctl /usr/bin/
nohup etcd >/tmp/etcd.log 2>&1 &

安装luarocks-3.8.0

将luarocks安装包复制到/home下,然后执行以下命令:

tar -xf v3.8.0.tar.gz
cd luarocks-3.8.0
OR_BIN=/usr/local/openresty/bin/openresty
OPENRESTY_PREFIX=/usr/local/openresty
LUAROCKS_VER=3.8.0
/usr/local/openresty/bin/openresty -v
awk -F / '{print $2}'
WITH_LUA_OPT=--with-lua=/usr/local/openresty/luajit
./configure --with-lua=/usr/local/openresty/luajit
make build
sudo make install
luarocks -version
luarocks --version
mkdir /root/.luarocks
OPENSSL_PREFIX=/usr/local/openresty/openssl
OPENSSL_PREFIX=/usr/local/openresty/openssl111
FOUND_PATH=/usr/local/bin
luarocks config variables.OPENSSL_LIBDIR /usr/local/openresty/openssl111/lib
luarocks config variables.OPENSSL_INCDIR /usr/local/openresty/openssl111/include

安装perl(如果rpm安装了openresty,这一步可以取消)

安装perl目录下的依赖

rpm -ivh *.rpm --force --nodeps
rpm -ivh perl-5.16.3-299.el7_9.x86_64.rpm --force --nodeps

安装gcc(如果rpm安装了openresty,这一步可以取消)

rpm -ivh gcc-4.8.5-44.el7.x86_64.rpm  --force --nodeps
rpm -ivh *.rpm --force --nodeps

安装openresty(如果rpm安装了openresty,这一步可以取消)

编译安装openresty1.19

[root@localhost openresty-1.19.9.1]# ./configure --with-luajit --with-poll_module --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat --with-stream --with-http_ssl_module && make && make install

安装openssl(如果rpm安装了openresty,这一步可以取消)

安装依赖

rpm -ivh zlib-1.2.7-20.el7_9.x86_64.rpm  --replacefiles
rpm -ivh zlib-devel-1.2.7-20.el7_9.x86_64.rpm

安装apisix

将apisix安装包放到/home下,执行以下命令:

[root@localhost home]# unzip apisix-2.13-master.zip
[root@localhost home]# mv apisix-2.13-master/ apisix-2.13.1/

进入apisix-2.13.1目录:

[root@localhost home]# cd apisix-2.13.1/

在apisix根目录下执行:make install

[root@localhost apisix-2.13.1]# make install

执行apisix init:

[root@localhost apisix-2.13.1]# apisix init

启动apisix:

[root@localhost apisix-2.13.1]# apisix start

安装apisix-dashboard

将dashboard的rpm包,放到/home下,然后执行以下命令:

[root@localhost home]# rpm -ivh apisix-dashboard-2.10.1-0.el7.x86_64.rpm
[root@localhost home]# cd /usr/local/apisix/dashboard/conf
[root@localhost conf]# vim conf.yaml

将allow_list中的IP改成0.0.0.0/0
启动dashboard:

[root@localhost conf]# sudo manager-api -p /usr/local/apisix/dashboard/ &

浏览器访问dashboard:
http://192.168.6.248:9000/
账号密码都是admin

报错信息

rpm安装时报错冲突

[root@localhost apisix-dependence]# rpm -ivh libxml2-2.9.1-6.el7_9.6.x86_64.rpm
准备中...                          ################################# [100%]
        file /usr/bin/xmlcatalog from install of libxml2-2.9.1-6.el7_9.6.x86_64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.x86_64
        file /usr/bin/xmllint from install of libxml2-2.9.1-6.el7_9.6.x86_64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.x86_64
        file /usr/lib64/libxml2.so.2.9.1 from install of libxml2-2.9.1-6.el7_9.6.x86_64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.x86_64

解决方案:
上面提醒,说明软件冲突,安装时,添加–replacefiles参数即可。

[root@localhost apisix-dependence]# rpm -ivh libxml2-2.9.1-6.el7_9.6.x86_64.rpm --replacefiles

编译openresty报错:需要安装perl

[root@localhost openresty-1.19.9.1]# ./configure --with-luajit --with-poll_module --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat --with-stream --with-http_ssl_module

/usr/bin/env: perl: 没有那个文件或目录

安装perl报错:需要安装依赖

[root@localhost apisix-dependence]# rpm -ivh perl-5.16.3-299.el7_9.x86_64.rpm
错误:依赖检测失败:
        libperl.so()(64bit) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Carp) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Cwd) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Exporter) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(File::Path) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(File::Spec) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(File::Spec::Functions) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(File::Spec::Unix) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(File::Temp) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Filter::Util::Call) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Getopt::Long) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Pod::Simple::Search) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Pod::Simple::XHTML) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Scalar::Util) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Scalar::Util) >= 1.10 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Socket) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Socket) >= 1.3 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Storable) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Time::HiRes) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(Time::Local) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(constant) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(threads) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl(threads::shared) 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl-libs 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl-libs = 4:5.16.3-299.el7_9 被 perl-4:5.16.3-299.el7_9.x86_64 需要
        perl-macros 被 perl-4:5.16.3-299.el7_9.x86_64 需要

编译openresty报错:需要安装gcc

[root@localhost openresty-1.19.9.1]#  ./configure --with-luajit --with-poll_module --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat --with-stream --with-http_ssl_module
platform: linux (linux)
cp -rp bundle/ build
cd build
cd LuaJIT-2.1-20210510
Can't exec "cc": 没有那个文件或目录 at ./configure line 719.
gmake TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/openresty/luajit
==== Building LuaJIT 2.1.0-beta3 ====
gmake -C src
gmake[1]: cc:命令未找到
gmake[1]: 进入目录“/home/apisix-dependence/openresty-1.19.9.1/build/LuaJIT-2.1-20210510/src”
gmake[1]: cc:命令未找到
Makefile:274: *** Unsupported target architecture。 停止。
gmake[1]: 离开目录“/home/apisix-dependence/openresty-1.19.9.1/build/LuaJIT-2.1-20210510/src”
gmake: *** [default] 错误 2
ERROR: failed to run command: gmake TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/openresty/luajit

编译openresty报错

platform: linux (linux)
cp -rp bundle/ build
cd build
cd LuaJIT-2.1-20210510
gmake TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/openresty/luajit
==== Building LuaJIT 2.1.0-beta3 ====
gmake -C src
/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
gmake[1]: 进入目录“/home/apisix-dependence/openresty-1.19.9.1/build/LuaJIT-2.1-20210510/src”
Makefile:274: *** Unsupported target architecture。 停止。
gmake[1]: 离开目录“/home/apisix-dependence/openresty-1.19.9.1/build/LuaJIT-2.1-20210510/src”
gmake: *** [default] 错误 2
ERROR: failed to run command: gmake TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/openresty/luajit

没有找到libmpc的路径,需要添加如下环境变量
export LD_LIBRARY_PATH=“/usr/lib”
error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory

编译openresty报错

platform: linux (linux)
cp -rp bundle/ build
cd build
cd LuaJIT-2.1-20210510
gmake TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/openresty/luajit
==== Building LuaJIT 2.1.0-beta3 ====
gmake -C src
/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1: error while loading shared libraries: libmpc.so.3: wrong ELF class: ELFCLASS32
/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1: error while loading shared libraries: libmpc.so.3: wrong ELF class: ELFCLASS32

解决方案:
安装mpfr-3.1.1-4.el7.x86_64.rpm

编译openresty报错

/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h:168:61: 致命错误:limits.h:没有那个文件或目录
 #include_next <limits.h>  /* recurse down to the real one */
                                                             ^
编译中断。
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h:7:0,
                 from /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h:34,
                 from luaconf.h:12,
                 from lua.h:16,
                 from lj_arch.h:9:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h:168:61: 致命错误:limits.h:没有那个文件或目录
 #include_next <limits.h>  /* recurse down to the real one */

报DNS为空

[root@localhost apisix-2.13.1]# apisix start
/usr/local/openresty/luajit/bin/luajit ./apisix/cli/apisix.lua start
local DNS is empty

解决方案:
1、编辑DNS配置文件
vim /etc/resolv.conf
2、添加DNS配置信息(随便添加一个,apisix就不会报错了):
nameserver 1.1.1.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-mac上的python

在Mac上使用Python编程的好处 作为一名有10年Python编程经验的工程师&#xff0c;我必须说Mac是一个出色的编程工作台。Mac操作系统本质上就是一个整合了各种开发工具的平台&#xff0c;为Python编程提供了很好的支持。这篇文章将介绍在Mac上使用Python编程的好处。 简单易用…

VOSviewer安装、环境配置及中英文文献的分析

VOSviewer介绍&#xff1a; VOSviewer是一个用于构建和可视化文献计量网络的软件工具。例如&#xff0c;这些网络可能包括期刊、研究人员或单个出版物&#xff0c;它们可以基于引文、书目耦合、共同引用或共同作者关系构建。VOSviewer 还提供文本挖掘功能&#xff0c;可用于构…

总线(计组)

概概述 基本概念 1、总线&#xff1a;是构成计算机互联的机构&#xff0c;是多个系统功能部之间进行数据传输的公共通路 2、总线的分类&#xff1a; 内部总线、系统总线、IO总线 内部总线&#xff1a;cpu连接寄存器及各运算部件的总线 系统总线&#xff1a;cpu连接其他高速功…

Typora的自定义主题

Typora的自定义主题 修改我们的Typora主题1. 在文件夹C:\Users\Peter\AppData\Roaming\Typora\themes中&#xff0c;加入下面的css文件即可&#xff0c;命名为my.css。my.css内容 2. 选择你的主题为my3. 效果如图 注意&#xff1a;如果你的字体没有完全像我一样&#xff0c;是因…

学习RHCSA的day.03

目录 2.6 Linux系统的目录结构 2.7 目录操作命令 2.8 文件操作命令 2.6 Linux系统的目录结构 1、Linux目录结构的特点 分区加载于目录结构&#xff1a; 使用树形目录结构来组织和管理文件。整个系统只有一个位于根分区的一个根目录&#xff08;树根&#xff09;、一棵树。…

chatgpt赋能Python-mac版python教程

了解Mac版Python教程 Python编程语言越来越受欢迎&#xff0c;是由其简单易学、使用广泛的特点所得。Mac用户也喜欢使用Python进行编程&#xff0c;因为Python在macOS中得到良好的支持。在本篇文章中&#xff0c;我们将介绍一些最受欢迎的Mac版Python教程&#xff0c;并提供一…

chatgpt赋能Python-a____python

理解Python的a[:]语法 Python是一门高级编程语言&#xff0c;它被广泛应用于数据分析、机器学习、人工智能等领域。在Python编程中&#xff0c;有一个很重要的语法就是a[:]。 在本文中&#xff0c;我们将介绍这个语法的含义、作用和用法&#xff0c;并帮助读者更好地理解这个语…

动态规划算法:解决复杂问题的利器

文章目录 摘要引言动态规划的基本原理动态规划的应用场景动态规划的实际代码示例总结与展望 动态规划算法的优缺点优点&#xff1a;缺点&#xff1a; 总结&#xff1a; 摘要 动态规划&#xff08;Dynamic Programming&#xff09;是一种高效解决复杂问题的算法方法&#xff0c…

如何学习网络安全?

近半年我一直在整理网络安全相关资料&#xff0c;对于网络安全该怎么入门我谈谈我的看法&#xff0c;网络安全一直处于法律的边缘&#xff0c;学的不好或者剑走偏锋一下子人就进去了&#xff0c;所以我建议入门前先熟读《网络安全法》&#xff0c;除此之外还有《互联网安全产品…

AVL树(平衡二叉搜索树)

如果BST树插入的顺序是有序的&#xff0c;那么BST树就会退化成一个双链表结构&#xff0c;查询的速率就会很慢&#xff0c; 所以有了AVL树的意义。 AVL树的定义&#xff1a; 是具有下列性质的二叉搜索树 1、它的左子树和右子树都是AVL树 2、左子树和右子树的高度之差的绝对值…

Java --- redis7之redisson的使用

目录 一、自研分布式锁核心 二、redlock红锁算法 Distributed locks with redis 2.1、设计理念 2.2、容错公式 2.3、单机案例实现 三、redisson源码分析 四、多机案例 4.1、启动三台docker的redis7 4.2、进入redis 一、自研分布式锁核心 1、按照JUC里面java.util.conc…

linux kernel pwn

基础知识 内核概述 内核架构 通常来说我们可以把内核架构分为两种&#xff1a;宏内核和微内核&#xff0c;现在还有一种内核是混合了宏内核与微内核的特性&#xff0c;称为混合内核。 宏内核&#xff08;Monolithic kernel&#xff09;&#xff0c;也译为集成式内核、单体…

工信部认可! 开源网安“源码级软件开发安全解决方案”成功入选优秀方案

日前&#xff0c;开源网安“源码级软件开发安全解决方案”成功入选工信部网络安全产业发展中心“2022年信息技术应用创新解决方案”&#xff0c;成为经工业部认可的优秀解决方案。 据悉&#xff0c;由工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&am…

【Leetcode刷题】算法:罗马数字转整数

文章目录 一、问题二、代码理解 一、问题 二、代码理解 class Solution:def romanToInt(self, s: str) -> int:answer0length len(s)d{I:1,V:5,X:10, L:50,C:100, D:500,M:1000}for i in range(length-1):if d[s[i1]]>d[s[i]]:answeranswer-d[s[i]]else:answeranswerd[…

2023年市场规模将超147亿美元,中国人工智能产业的“风口”来了吗?

2023年IDC中国ICT市场趋势论坛于5月10日召开&#xff0c;会议重点探讨了人工智能、工业互联网、网络安全、大数据、云计算等领域&#xff0c;并强调了智能终端、智慧城市和半导体等行业的前景。 IDC预计&#xff0c;中国人工智能市场规模在2023年将超过147亿美元&#xff0c;到…

Day2 排序子序列、倒置字符串

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C/C相关题解 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 选择题1.字符串/C指针2.计算机组成原理 编程题1.排序子序列2.倒置字符串 选择题 1.字符串/C指针 题目&#xff…

【网络协议详解】——数据链路层协议(学习笔记)

&#x1f4d6; 前言&#xff1a;数据链路层是 OSI 模型中的第二层&#xff0c;位于物理层之上&#xff0c;是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧&#xff0c;传输到物理层&#xff0c;并通过物理介质进行传输。同时&#xff0c;数…

为什么有些同事昨天还干的好好地,今天就离职了老板都留不住?

HR时常会遭遇员工突发申请离职&#xff0c;对于一些核心岗位员工的离职&#xff0c;甚至没有时间去挽留。 但从心理学的角度来说&#xff0c;人的行为与意识是相互反应、互加映衬的。 也就是说&#xff0c;员工离职意识的产生与发展&#xff0c; 与他近期的行为息息相关。 与…

零基础学软件测试怎么样? 完好就业吗

在当今数字化快速发展的社会中&#xff0c;软件行业已经成为了一个具有巨大潜力和广阔前景的行业。而软件测试作为软件开发过程中不可或缺的一部分&#xff0c;也因此成为了备受瞩目的职业之一。 对于零基础的人来说&#xff0c;学习软件测试是一项非常实用的技能&#xff0c;…

PyQt5开发入门到IP查询工具实现

1 基本介绍 1.1 简介 ,QT 是最强大的 GUI 库之一&#xff0c;PyQt 是 Python 绑定 QT 应用的框架,是最强大和流行的跨平台 GUI 库之一。 PyQt 兼容所有流行的操作系统&#xff0c;包括 Windows、Linux 和 Mac OS。 它是双重许可的&#xff0c;可在 GPL 和商业许可下使用。新…