关于debian:Docker启动容器报错cannot-allocate-memory-unknown

当你尝试在Docker中启动一个容器,但遇到“cannot allocate memory: unknown”这样的谬误时,这通常意味着你的零碎没有足够的内存来启动和运行该容器。Docker容器在启动时会尝试调配肯定的内存,如果零碎内存不足,就会呈现这样的谬误。 首先,你须要查看你的零碎是否真的没有足够的内存。你能够应用一些零碎工具,如 free -m(在Linux上)或工作管理器(在Windows上)来查看你的零碎内存应用状况。如果你的零碎内存的确有余,你可能须要敞开一些不必要的程序或服务,或者思考减少更多的内存。 其次,你可能须要查看你的Docker容器是否申请了过多的内存。每个Docker容器在启动时都能够设置一个内存限度,如果你设置的内存限度超过了你的零碎可用内存,那么就会呈现这样的谬误。你能够在Docker的运行命令中应用 -m或 --memory参数来设置内存限度,例如 docker run -m 512m ...会限度容器只能应用512MB的内存。 另外,你也可能须要查看你的Docker守护过程是否有足够的内存。Docker守护过程是治理和运行所有Docker容器的后盾服务,如果它没有足够的内存,那么你也无奈启动新的容器。你能够在Docker的配置文件中设置Docker守护过程的内存限度,或者应用零碎工具来调整它的内存应用。 如果你尝试了以上办法,但问题依然存在,那么可能是一个更深层次的问题。例如,你的零碎可能有一个内存透露,导致可用内存继续缩小。或者,你的零碎可能有一些内存治理的问题,导致Docker无奈正确地分配内存。这些问题可能须要更深刻的考察和修复,可能须要你查看系统日志,或者应用一些专门的工具来诊断和修复。 总的来说,"cannot allocate memory: unknown"这样的谬误通常是因为零碎内存不足或者Docker配置问题所导致的。你须要查看你的零碎内存应用状况,调整你的Docker容器和守护过程的内存限度,或者深入调查可能的零碎问题,以解决这个问题。

February 27, 2024 · 1 min · jiezi

关于debian:ubuntu20使用apt安装pcl

首先,咱们须要明确一点,PCL(Point Cloud Library)是一个开源的大规模点云解决库,它包含了从点云获取、滤波、特征提取、配准、搜寻、宰割、采样等一系列解决点云的办法。在Ubuntu 20.04零碎中,咱们能够应用APT(Advanced Package Tool)这个弱小的包管理工具进行装置。 这里,我将为你具体介绍在Ubuntu 20.04上应用APT装置PCL的步骤。请严格依照上面的步骤操作,以确保PCL的正确装置。 步骤1:更新零碎包列表 首先,咱们须要更新零碎的包列表,以确保咱们能获取并装置到最新的软件包。在终端中输出以下命令: sudo apt update步骤2:装置必要的依赖 PCL的装置须要一些依赖库,咱们须要先进行装置。在终端中输出以下命令: sudo apt install git build-essential linux-libc-devsudo apt install cmake cmake-gui sudo apt install libusb-1.0-0-dev libusb-dev libudev-devsudo apt install mpi-default-dev openmpi-bin openmpi-common sudo apt install libflann1.9 libflann-devsudo apt install libeigen3-devsudo apt install libboost-all-devsudo apt install libvtk6-dev libvtk6-qt-dev libvtk6.2 libvtk6.2-qt步骤3:装置PCL 在装置了所有必要的依赖之后,咱们就能够开始装置PCL了。在终端中输出以下命令: sudo apt install libpcl-dev至此,PCL应该曾经胜利装置在你的Ubuntu 20.04零碎中了。你能够通过编写一个简略的PCL程序来验证装置是否胜利。 如果你须要应用PCL的某些特定性能,可能还须要装置一些额定的依赖库。你能够在PCL的官网文档中查找到这些信息。 以上就是在Ubuntu 20.04上应用APT装置PCL的具体步骤。心愿这个指南能帮忙你顺利完成装置。如果在装置过程中遇到任何问题,你都能够在网上搜寻相干信息,或者在PCL的官方论坛上寻求帮忙。记住,无论遇到什么问题,都不要轻易放弃,因为每一个问题的解决都会让你更加深刻地了解这个过程。 在应用PCL进行点云解决时,你可能会遇到很多挑战,然而只有你坚持下去,你肯定可能把握这个弱小的工具。在这个过程中,你不仅能学到点云解决的常识,还能晋升你的编程技能。所以,不要怕难,畏缩不前,你会发现这个过程其实很乏味的。

February 26, 2024 · 1 min · jiezi

关于debian:ubuntu18安装cmake27的方法

在Ubuntu 18.04零碎中装置CMake 2.7版本,能够依照以下步骤进行操作。 首先,咱们须要确保零碎中曾经装置了必要的开发工具和库。在Ubuntu中,咱们能够应用apt包管理器来实现这个工作。关上终端窗口,输出以下命令: sudo apt updatesudo apt install build-essential libssl-dev这些命令会更新你的包列表,并装置构建工具和SSL开发库,这些都是编译CMake所需的。 接下来,咱们将从CMake的官方网站下载2.7版本的源代码。在终端窗口中,应用以下命令: wget https://cmake.org/files/v2.7/cmake-2.7.0.tar.gz这个命令会下载一个名为"cmake-2.7.0.tar.gz"的文件。下载实现后,咱们须要解压这个文件。在终端窗口中,输出以下命令: tar -xzvf cmake-2.7.0.tar.gz这个命令会创立一个名为"cmake-2.7.0"的目录,并将源代码解压到这个目录中。 接下来,咱们将进入这个目录,并开始编译CMake。在终端窗口中,输出以下命令: cd cmake-2.7.0/./configuremake"./configure"命令会查看你的零碎,并筹备编译过程。"make"命令会开始编译过程。这可能须要一些工夫,具体取决于你的零碎性能。 编译实现后,咱们能够装置CMake。在终端窗口中,输出以下命令: sudo make install这个命令会将CMake装置到你的零碎中。 最初,咱们能够查看CMake的版本,以确保装置胜利。在终端窗口中,输出以下命令: cmake --version如果一切顺利,你应该会看到"CMake version 2.7.0"的输入。 以上就是在Ubuntu 18.04零碎中装置CMake 2.7版本的过程。请留神,因为CMake的版本更新迅速,所以在某些新的零碎或环境中,可能须要装置更高版本的CMake来满足需要。在这种状况下,你能够参考这个教程,但在下载和编译时抉择正确的版本。

February 26, 2024 · 1 min · jiezi

关于debian:解决Ubuntu或Debian-aptget-IPv6问题如何设置仅使用IPv4

在Ubuntu或Debian零碎中,apt-get可能默认应用IPv6进行网络连接,这在某些状况下可能会导致问题,比方连贯速度慢或者连贯失败。要解决这个问题,咱们能够设置apt-get仅应用IPv4。上面将具体介绍如何进行这样的设置。 首先,咱们须要明确Ubuntu和Debian默认应用IPv6的起因。IPv6是Internet协定的最新版本,设计用于代替IPv4。IPv6解决了IPv4地址耗尽的问题,并提供了一些其余的改良。然而,只管IPv6曾经存在了一段时间,但在某些网络环境中,IPv6的反对并不齐全,这就可能导致上述的连贯问题。 要让apt-get仅应用IPv4,咱们须要批改apt-get的配置。在Ubuntu和Debian中,apt-get的配置文件位于/etc/apt/目录下。咱们能够创立一个新的配置文件,例如"99force-ipv4",并在其中增加一行配置来强制apt-get应用IPv4。以下是具体的步骤: 关上终端。在Ubuntu和Debian中,你能够通过快捷键Ctrl+Alt+T来关上终端。应用文本编辑器关上新的配置文件。你能够应用你喜爱的文本编辑器,例如nano或vi。在这里,咱们应用nano作为例子。在终端中输出以下命令:sudo nano /etc/apt/apt.conf.d/99force-ipv4在关上的文件中,粘贴以下内容:Acquire::ForceIPv4 "true";这行配置通知apt-get强制应用IPv4。 保留并敞开文件。如果你应用的是nano,你能够通过Ctrl+O来保留文件,而后通过Ctrl+X来敞开文件。实现上述步骤后,apt-get将只应用IPv4进行网络连接。这种办法的长处是扭转的只是apt-get的行为,而不会影响到其余的网络连接。如果你心愿复原到默认设置,只须要删除刚刚创立的"99force-ipv4"文件即可。 这就是如何在Ubuntu或Debian中设置apt-get仅应用IPv4的办法。这种办法简略无效,能够帮忙你解决因IPv6导致的apt-get连贯问题。心愿这个办法对你有所帮忙。同时,也要揭示你,只管这种办法能够解决一些问题,但并不能解决所有的网络问题。如果你遇到其余的网络问题,可能须要采取其余的解决办法。

February 26, 2024 · 1 min · jiezi

关于debian:docker镜像配置mysqlredis

在Docker中配置MySQL和Redis是一种常见的开发和部署利用的形式。以下是如何在Docker中配置MySQL和Redis的步骤。 首先,确保你的零碎曾经装置了Docker。如果还没有装置,能够拜访Docker的官方网站下载和装置。 一、配置MySQL 拉取MySQL镜像 在Docker中,咱们能够间接从Docker Hub上拉取官网的MySQL镜像。运行以下命令: docker pull mysql:5.7这将会下载MySQL 5.7版本的镜像。 运行MySQL容器 下载完MySQL镜像后,咱们能够创立并运行一个MySQL容器。在运行容器时,咱们须要设置一些环境变量,比方 MYSQL_ROOT_PASSWORD,这是root用户的明码。 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7这将会创立并运行一个名为 some-mysql的MySQL容器,并将root用户的明码设置为 my-secret-pw。 连贯到MySQL容器 咱们能够应用MySQL客户端工具连贯到方才创立的MySQL容器。首先,找到MySQL容器的IP地址: docker inspect some-mysql | grep IPAddress而后,应用MySQL客户端工具连贯到MySQL容器: mysql -h <MySQL-Container-IP> -u root -p输出root用户的明码,就能够胜利连贯到MySQL容器了。 二、配置Redis 拉取Redis镜像 同样地,咱们也能够从Docker Hub上拉取官网的Redis镜像。运行以下命令: docker pull redis这将会下载最新版本的Redis镜像。 运行Redis容器 下载完Redis镜像后,咱们能够创立并运行一个Redis容器。 docker run --name some-redis -d redis这将会创立并运行一个名为 some-redis的Redis容器。 连贯到Redis容器 咱们能够应用Redis客户端工具连贯到方才创立的Redis容器。首先,找到Redis容器的IP地址: docker inspect some-redis | grep IPAddress而后,应用Redis客户端工具连贯到Redis容器: redis-cli -h <Redis-Container-IP>这样,咱们就能够胜利连贯到Redis容器了。 以上就是在Docker中配置MySQL和Redis的步骤。应用Docker配置这些服务的益处是,能够疾速地在任何反对Docker的平台上部署和运行利用,而不须要手动装置和配置这些服务。并且,Docker的隔离性能确保了利用的稳定性和安全性。

February 25, 2024 · 1 min · jiezi

关于debian:Jmeter是用来做什么的

JMeter是一个弱小的开源软件,它的次要性能是用于对各种服务和应用程序进行性能测试和负载测试。它是由Apache软件基金会开发和保护的,能够帮忙开发者和测试人员在开发和部署过程中,对应用程序的性能进行深刻的剖析和评估。 首先,咱们来看一下JMeter的根本用处。JMeter能够模仿多个并发用户对服务器、网络或应用程序进行压力测试,以评估其性能。它能够测试动态和动静资源,包含HTML、JavaScript、Java对象、数据库、FTP服务器、SOAP等。 其次,JMeter的性能十分弱小和灵便。它能够创立多线程或并发的测试计划,模仿多用户的并发申请,以便在理论环境中检测零碎的性能。此外,JMeter还提供了数据分析和可视化性能,能够生成各种图形化的测试后果报告,帮忙用户更好地了解和分析测试后果。 再者,JMeter是一个跨平台的工具,能够在各种操作系统中运行,包含Windows、Linux和Mac OS。它是基于Java开发的,只有装置了Java环境,就能够运行JMeter。 而后,JMeter的可扩展性也十分杰出。它反对多种插件,能够扩大其性能,满足不同的测试需要。例如,有的插件能够提供更丰盛的图形报告,有的插件能够减少新的取样器或断言等。 最初,JMeter的社区沉闷,有很多开发者和用户在应用和改良JMeter,这意味着你能够很容易地找到帮忙和资源。 然而,只管JMeter有很多长处,但也有一些限度。例如,它是一个基于GUI的工具,如果要进行大规模的压力测试,可能会耗费大量的计算资源。此外,JMeter的学习曲线可能比拟平缓,对于初学者来说,须要破费一些工夫来相熟其各种性能和设置。 总的来说,JMeter是一个功能强大,灵便和可扩大的性能测试工具。无论你是开发者,测试人员,还是系统管理员,只有你须要进行性能测试或负载测试,都能够思考应用JMeter。

February 25, 2024 · 1 min · jiezi

关于debian:Redis的数据类型到底有什么奥秘

Redis是一个开源的,内存中的数据结构存储系统,它能够用作数据库、缓存和音讯代理。Redis反对多种类型的数据结构,这是它的一大特色。这些数据结构并非简略的键值对,而是具备丰盛的语义和操作,使得Redis能更好地适应各种业务场景。上面咱们来具体解析一下Redis的数据类型。 首先,咱们要理解的是字符串(String)。在Redis中,字符串是最根本的数据类型,它能够蕴含任何数据,例如数字、文本、二进制数据等。字符串类型是二进制平安的,也就是说,Redis的字符串能够蕴含任何数据,包含图片、视频等。此外,Redis还为字符串提供了一系列的操作,例如追加、长度获取、范畴查问、设置、获取等。 其次,是哈希(Hash)。哈希是字符串字段和字符串值之间的映射,因而它是键值对的汇合。哈希特地适宜用于存储对象,因为它能够用一小部分内存存储大量相干信息。例如,你能够应用哈希来存储用户的名字、电子邮件地址、明码等信息。 第三,咱们要讲的是列表(List)。列表是简略的字符串链表,按插入程序排序。你能够增加一个元素到列表的头部(右边)或尾部(左边)。这使得列表能够用作栈(stack)或队列(queue)。Redis的列表十分弱小,你能够获取列表的子范畴,或者按索引获取、设置元素。 第四种是汇合(Set)。汇合是字符串的无序汇合,能够进行增加、删除、查找和随机元素获取等操作。因为汇合元素是无序的,所以你能够疾速地进行汇合运算,如并集、交加和差集等。 第五种是有序汇合(Sorted Set)。有序汇合和汇合一样也是字符串的汇合,不同的是每个元素都会关联一个浮点数优先级(score)。元素的排列程序由这个关联的浮点数决定。有序汇合能够用来实现排行榜等性能。 最初是位图(Bitmaps)和HyperLogLogs,这两种数据类型尽管不罕用,但也十分有用。位图能够用来存储大量的二进制数据,而HyperLogLogs则能够用来做基数统计。 总的来说,Redis的数据类型之所以有神秘,是因为它们不仅仅是简略的数据存储,而是提供了丰盛的操作,使得咱们能够依据业务需要抉择不同的数据类型,从而更高效地解决问题。例如,如果咱们须要存储大量的用户信息,那么哈希可能是一个好抉择;如果咱们须要实现一个音讯队列,那么列表就是一个不错的抉择。 同时,Redis的数据类型也反映了它的设计哲学:简略、高效和灵便。每种数据类型都是为了解决特定的问题而设计的,而这些问题都是咱们在理论开发中常常遇到的。因而,了解Redis的数据类型,不仅能够帮忙咱们更好地应用Redis,也能够帮忙咱们更好地了解如何设计和抉择数据结构来解决问题。

February 25, 2024 · 1 min · jiezi

关于debian:php报错Malformed-UTF8-characters-possibly-incorrectly-encoded

在应用PHP进行开发时,有时可能会遇到这样的谬误:“Malformed UTF-8 characters, possibly incorrectly encoded”。这种谬误通常产生在解决字符串或者尝试将数组或对象编码为JSON格局时。如果字符串、数组或对象中蕴含了格局不正确的UTF-8字符,就可能引发这个谬误。那么,咱们应该如何解决这个问题呢? 首先,咱们须要理解UTF-8编码。UTF-8是一种针对Unicode的可变长度字符编码,它能够用1到4个字节示意一个符号,依据不同的符号而变动。UTF-8的编码规定很简略,只有二进制的位上的第一位是0,那么这就是一个ASCII字符。如果第一位是1,那么间断有多少个1,就示意这是一个多少位的字符。因而,如果咱们的字符串中蕴含了不合乎UTF-8编码规定的字符,PHP就会抛出“Malformed UTF-8 characters, possibly incorrectly encoded”这样的谬误。 解决这个问题的办法有很多种,以下是几种常见的解决方案: 查看并修复源数据:首先,咱们须要查看引发谬误的数据。这可能是来自数据库的数据,也可能是用户提交的数据。咱们须要确保这些数据是UTF-8编码的。如果数据源不是UTF-8编码,咱们须要将其转换为UTF-8编码。在PHP中,咱们能够应用 mb_convert_encoding函数来转换编码。应用 json_last_error_msg函数:当 json_encode函数失败时,咱们能够应用 json_last_error_msg函数来获取更具体的错误信息。这能够帮忙咱们更精确地定位问题。应用 mb_check_encoding函数:咱们能够应用 mb_check_encoding函数来查看字符串是否为无效的UTF-8编码。如果 mb_check_encoding函数返回false,阐明字符串不是无效的UTF-8编码,咱们须要修复这个字符串。应用 iconv函数:咱们能够应用 iconv函数来修复格局不正确的UTF-8字符。iconv函数能够将字符串从一种编码转换为另一种编码。在转换过程中,咱们能够设置 //IGNORE标记,这样,如果字符串中有不能被正确转换的字符,iconv函数会疏忽这些字符。应用 utf8_encode和 utf8_decode函数:如果咱们晓得源数据是ISO-8859-1编码的,咱们能够应用 utf8_encode函数将其转换为UTF-8编码。如果咱们须要将UTF-8编码的数据转换为ISO-8859-1编码,咱们能够应用 utf8_decode函数。以上就是解决“Malformed UTF-8 characters, possibly incorrectly encoded”谬误的一些常见办法。在理论开发中,咱们可能须要依据具体情况抉择适合的解决方案。同时,咱们也须要留神,只管上述办法能够解决大部分问题,但并不能保障100%解决所有问题。因而,咱们在编程时,应尽量确保咱们的数据是正确的UTF-8编码,以避免出现此类问题。

February 25, 2024 · 1 min · jiezi

关于debian:OSPF的基本概念

凋谢最短门路优先(OSPF)是一种在自治零碎外部应用的链路状态路由协定。OSPF是互联网工程工作组(IETF)为互联网开发的,用于代替RIP(路由信息协定)。它的工作原理基于Dijkstra算法,也被称为最短门路优先(SPF)算法。 OSPF的基本概念能够从以下几个方面进行解释: 1.链路状态数据库(LSDB) :每个OSPF路由器都保护一个链路状态数据库。这个数据库是网络的残缺图形示意,蕴含所有OSPF路由器及其连贯的信息。路由器应用这个数据库计算到网络中所有其余路由器的最短门路。 2.区域:在OSPF中,自治零碎被划分为多个区域。每个区域都有一个区域边界路由器(ABR)连贯到骨干区域(区域0)。这种设计缩小了路由器之间的路由更新交互,从而进步了效率。 3.链路状态通告(LSA) :OSPF路由器通过发送LSA来替换路由信息。每个路由器都会定期发送LSA,或者在网络拓扑发生变化时发送LSA。LSA蕴含了路由器的链路状态信息,例如街坊路由器、链路的老本等。 4.街坊和街坊关系:在OSPF中,路由器须要发现并建设街坊关系,以便与街坊替换路由信息。街坊关系的建设包含几个阶段,如初始化、双向通信、替换、加载等。 5.最短门路树(SPT) :每个OSPF路由器都会应用Dijkstra算法和链路状态数据库来计算到网络中所有其余路由器的最短门路。这些最短门路造成了一个最短门路树。 6.老本和度量:OSPF应用老本作为路由抉择的度量。链路的老本能够由管理员配置,也能够基于链路的带宽主动计算。老本越低,门路越优先。 7.路由更新:OSPF路由器定期发送路由更新,或者在网络拓扑发生变化时发送路由更新。这些更新被所有路由器接管并用于更新链路状态数据库。 8.可扩展性:因为区域的设计,OSPF能够很好地扩大到大型网络。每个区域内的路由更新不会流传到其余区域,这缩小了路由更新的交互,并进步了效率。 9.鲁棒性:因为OSPF路由器持有网络的残缺图形示意,所以它们能够疾速适应网络拓扑的变动。如果一个链路或路由器失败,路由器能够疾速计算新的最短门路。 总的来说,OSPF是一个弱小而灵便的路由协定,它应用了许多先进的概念和技术,如链路状态路由、区域、最短门路树等,使其可能无效地在大型和动静的网络环境中工作。

February 25, 2024 · 1 min · jiezi

关于debian:PHP通过Redis解决并发请求的操作问题

在高并发状况下,PHP通过Redis能够无效地解决并发申请的操作问题。Redis是一种开源的内存数据结构存储系统,它能够用作数据库、缓存和音讯代理等多种场景。Redis提供了多种数据结构,如字符串、哈希、列表、汇合、有序汇合等。因为Redis是内存存储,因而它的读写速度十分快,适宜用于解决高并发申请的问题。 在PHP中,咱们能够应用Redis扩大库来操作Redis。首先,咱们须要在服务器上安装Redis并启动服务,而后在PHP中通过创立Redis对象来连贯Redis服务。例如: $redis = new Redis();$redis->connect('127.0.0.1', 6379);接下来,咱们能够应用Redis对象的办法来操作Redis。例如,咱们能够应用set办法来存储一个键值对,应用get办法来获取一个键的值。例如: $redis->set('key', 'value');echo $redis->get('key');在高并发状况下,咱们能够应用Redis的几种个性来解决并发申请的问题。 缓存:在高并发场景下,数据库可能会成为瓶颈。咱们能够应用Redis作为缓存,将数据库中的局部数据存储在Redis中,这样在解决申请时,能够间接从Redis中读取数据,而不须要拜访数据库。例如,咱们能够将用户的个人信息、商品的详细信息等罕用数据存储在Redis中。分布式锁:在并发环境下,可能会呈现多个申请同时批改同一数据的状况,这可能会导致数据不统一。咱们能够应用Redis的setnx(SET if Not eXists)命令来实现一个简略的分布式锁。例如,当一个申请须要批改数据时,首先应用setnx命令试图获取锁,如果获取胜利,则进行批改操作,批改实现后开释锁;如果获取失败,则期待一段时间后再试。音讯队列:在高并发环境下,可能会有大量的申请须要解决,然而服务器的解决能力无限。咱们能够应用Redis的列表构造实现一个简略的音讯队列,将申请放入队列中,而后由后盾过程逐个解决。这样能够无效地管制并发申请的数量,防止服务器过载。会话存储:在Web利用中,会话信息通常存储在文件或数据库中,但这可能会成为并发环境下的性能瓶颈。咱们能够应用Redis来存储会话信息,因为Redis是内存存储,因而读写速度十分快,适宜用于高并发环境。以上就是PHP通过Redis解决并发申请的操作问题的一些根本办法。须要留神的是,尽管Redis十分弱小,但它并不能解决所有问题。在应用Redis时,咱们须要依据具体的利用场景和需要来抉择适合的数据结构和操作方法。同时,因为Redis是内存存储,因而咱们也须要思考数据的持久性和安全性问题。

February 24, 2024 · 1 min · jiezi

关于debian:Dockerfile创建镜像异常问题解决

在应用Dockerfile创立镜像时,可能会遇到各种异样问题。如何解决这些问题,是咱们在开发过程中须要把握的要害技能。上面我将介绍一些常见的Dockerfile创立镜像异样问题及其解决方案。 Dockerfile语法错误:这是一个很常见的问题。Dockerfile的语法错误可能导致镜像创立失败。例如,每个指令都必须大写,例如“RUN”、“CMD”、“ENTRYPOINT”等。同时,Dockerfile中的每一行都不能有多余的空格或者制表符。如果Dockerfile中呈现语法错误,你能够应用在线的Dockerfile语法查看工具进行查看,或者在本地应用Docker命令进行构建,看是否有谬误提醒。根底镜像不存在:Dockerfile的第一行通常是“FROM”指令,用于指定根底镜像。如果这个根底镜像不存在,那么镜像构建就会失败。解决这个问题的办法是确认你的根底镜像名字和标签是否正确,或者尝试更换其余可用的根底镜像。Dockerfile中的命令执行失败:Dockerfile中的每一行命令都会在一个新的层中执行,如果命令执行失败,那么镜像构建就会进行。例如,你可能在Dockerfile中应用“RUN”指令执行一些命令,如果这些命令在运行时出错,那么镜像构建就会失败。解决这个问题的办法是查看你的命令是否正确,或者尝试在本地环境中先执行这些命令,看是否可能胜利。网络问题:在构建镜像的过程中,可能须要从网络上下载一些文件。如果网络连接有问题,那么下载就会失败,从而导致镜像构建失败。解决这个问题的办法是查看你的网络连接,或者尝试应用其余的网络连接。Docker守护过程问题:有时候,Docker守护过程可能会呈现问题,导致镜像构建失败。例如,Docker守护过程可能因为内存不足、磁盘空间有余等起因而解体。解决这个问题的办法是查看Docker守护过程的状态和日志,看是否有异样。Docker版本问题:不同版本的Docker可能反对不同的性能,如果你的Docker版本过低,可能会导致一些性能无奈应用,从而导致镜像构建失败。解决这个问题的办法是降级你的Docker版本,或者批改Dockerfile,防止应用那些不反对的性能。

February 24, 2024 · 1 min · jiezi

关于debian:解决Apache-Tomcat-Request-header-is-too-large-异常

Apache Tomcat是一个宽泛应用的Web服务器和Servlet容器,它提供了一个牢靠的环境来运行基于Java的Web应用程序。然而,像所有软件一样,它也有可能遇到一些问题。其中之一就是“Request header is too large”异样。这个异样通常产生在一个申请头的大小超过了Tomcat的默认限度。好消息是,这个问题有几种解决方案。 首先,为了解决这个问题,咱们须要了解它的本源。HTTP申请由两局部组成:申请头和申请体。申请头蕴含了对于申请的元数据,如申请的办法(GET、POST等),申请的URL,以及其余一些字段,如User-Agent,Accept,Cookies等。当这些信息过多,超过了Tomcat的默认限度时,就会抛出“Request header is too large”异样。 那么,如何解决这个问题呢?以下是几种可能的解决方案: 增大Tomcat的申请头限度:这是最间接的解决方案。Tomcat容许你在其配置文件中设置申请头的最大大小。你能够通过编辑Tomcat的server.xml文件来实现这一点。在Connector标签中,减少或批改maxHttpHeaderSize属性。默认值是8192(字节),你能够依据须要增大这个值。例如,如果你想把限度进步到16KB,你能够设置maxHttpHeaderSize="16384"。优化你的应用程序:如果增大申请头限度并不能解决问题,或者你不心愿增大这个限度,你可能须要查看并优化你的应用程序。有可能是你的应用程序在申请头中放入了过多的数据。你能够思考缩小申请头的大小,例如,缩小Cookie的应用,或者清理无用的申请头字段。应用HTTP/2:HTTP/2协定提供了对申请头的压缩,这能够显著缩小申请头的大小,从而避免出现这个问题。如果你的应用程序和客户端都反对HTTP/2,你能够思考启用它。在Tomcat的server.xml文件的Connector标签中,设置protocol="org.apache.coyote.http2.Http2Protocol"即可启用HTTP/2。以上就是解决Apache Tomcat “Request header is too large”异样的几种可能的办法。请留神,这些办法可能须要你对Tomcat和你的应用程序有肯定的了解,并且可能须要进行一些测试以确保改变不会影响到应用程序的其余局部。在做出任何改变之前,最好备份你的配置文件和应用程序,以防万一。 总的来说,尽管Apache Tomcat “Request header is too large”异样可能会给你的应用程序带来一些麻烦,然而只有你了解了问题的本源,并采取适当的解决方案,就齐全能够解决这个问题。心愿以上内容对你有所帮忙。

February 24, 2024 · 1 min · jiezi

关于debian:执行可执行程序时遇到error-while-loading-shared-libraries错误解决

在Linux环境中,你可能会遇到这样的谬误提醒:“error while loading shared libraries”。这是因为你的零碎中短少某个动态链接库(shared library),或者零碎无奈找到它。上面咱们将具体介绍如何解决这个问题。 首先,咱们须要了解什么是动态链接库。在Linux中,动态链接库(也称为shared libraries)是一种非凡的二进制文件,它蕴含了程序运行所需的函数和数据。这些库被设计为能够被多个程序共享,从而缩小了零碎的内存占用和磁盘空间的应用。当你运行一个程序时,零碎会主动加载所需的库文件。然而,如果零碎无奈找到某个库文件,就会呈现上述的谬误提醒。 解决这个问题的办法有几种: 1. 装置缺失的库 谬误提醒中通常会蕴含缺失库的名称。你能够应用包管理器(如apt、yum或dnf等)来装置这个库。例如,如果你的零碎是基于Debian的(如Ubuntu),并且缺失的库是libgmp.so.10,你能够应用以下命令来装置它: sudo apt updatesudo apt install libgmp10如果你的零碎是基于Red Hat的(如Fedora或CentOS),你能够应用以下命令: sudo dnf install gmp2. 更新库缓存 如果你曾经装置了所需的库,但零碎依然无奈找到它,那可能是因为库缓存(ld cache)没有更新。你能够应用以下命令来更新库缓存: sudo ldconfig这个命令会从新创立/etc/ld.so.cache文件,这个文件蕴含了库文件的搜寻门路。 3. 查看库文件的门路 如果上述办法都无奈解决问题,那可能是因为库文件的门路没有被蕴含在库文件的搜寻门路中。你能够应用以下命令来查看库文件的搜寻门路: echo $LD_LIBRARY_PATH如果这个命令的输入中没有蕴含库文件的门路,你能够应用以下命令来增加它: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library请将/path/to/library替换为库文件的理论门路。 以上就是解决“error while loading shared libraries”谬误的办法。请依据你的理论状况抉择适合的办法。心愿这个指

February 24, 2024 · 1 min · jiezi

关于debian:Linux查看属于某个组例如docker组的所有用户

在Linux零碎中,用户和组的治理是十分重要的一部分。每个用户都属于一个或多个组,这些组的定义存储在/etc/group文件中。如果你想查看属于特定组(例如docker组)的所有用户,能够应用一些命令行工具来实现。 首先,咱们须要了解/etc/group文件的构造。这个文件中的每一行都示意一个组,每一行由四个字段组成,这四个字段由冒号":"分隔。这四个字段顺次是:组名,明码(通常为空或为"x"),GID(组ID),和组成员(以逗号分隔的用户名列表)。 例如,docker组的一行可能看起来像这样: docker:x:999:user1,user2,user3这示意有一个名为docker的组,其GID为999,有三个用户user1、user2和user3是这个组的成员。 要列出docker组的所有成员,你能够应用grep命令来搜寻/etc/group文件中蕴含"docker"的行,而后应用cut命令来提取组成员字段。这个命令可能是这样的: grep '^docker:' /etc/group | cut -d: -f4这个命令的工作原理如下: grep '^docker:' /etc/group:这个命令在/etc/group文件中搜寻以"docker:"结尾的行。"^docker:"是一个正则表达式,"^"示意行的结尾。cut -d: -f4:这个命令用冒号作为字段分隔符,而后提取第4个字段(即组成员字段)。这个命令的输入是一个以逗号分隔的用户名列表,这些用户名就是docker组的所有成员。 如果你心愿每个用户名都独自占一行,你能够再增加一个tr命令来替换逗号为换行符,这样就能够失去一个更易读的列表: grep '^docker:' /etc/group | cut -d: -f4 | tr ',' '\n'这个命令的输入是一个每行一个用户名的列表。 以上就是在Linux零碎中查看属于特定组的所有用户的办法。这个办法是基于文本处理工具的,它们是Linux命令行的弱小性能之一。通过这些工具,你能够轻松地解决各种文本文件,包含零碎配置文件和日志文件等。

February 24, 2024 · 1 min · jiezi

关于debian:sonarqube的基本使用

SonarQube是一款开源的代码品质管理工具,用于主动查看代码的品质并提供反馈。它反对30多种编程语言,可能检测出代码中的谬误、破绽、坏滋味和代码反复等问题,并提供一种简略易用的形式来治理和改良代码品质。 应用SonarQube的根本步骤如下: 1. 装置和配置SonarQube 首先,你须要在你的服务器或者本地机器上装置SonarQube。你能够从SonarQube的官方网站下载最新的安装包。解压安装包后,你能够通过运行bin目录下的启动脚本来启动SonarQube。 2. 配置我的项目 在SonarQube中,每个被扫描的代码库被称为一个我的项目。你须要在SonarQube中创立一个新的我的项目,并为其指定一个惟一的键和显示名称。你还须要为项目选择正确的编程语言和品质配置文件。 3. 运行扫描 接下来,你须要在你的代码库上运行SonarQube的扫描器。扫描器会剖析你的代码,检测出各种问题,并将后果发送到SonarQube服务器。你能够在命令行中运行扫描器,也能够将其集成到你的构建零碎或继续集成/继续部署(CI/CD)流程中。 4. 查看和治理后果 扫描实现后,你能够在SonarQube的web界面中查看后果。你会看到一个全面的品质报告,包含谬误、破绽、坏滋味和代码反复的数量,以及各种质量指标的评分。你能够查看每个问题的详细信息,以及如何修复它的倡议。你还能够治理这些问题,例如将其调配给开发人员,或者将其标记为已解决或不重要。 5.改良代码品质 最初,但并非最不重要,你须要依据SonarQube的反馈来改良你的代码品质。这可能包含修复谬误和破绽,重构有坏滋味的代码,或者改良测试覆盖率。随着你的代码品质的进步,你会看到SonarQube的评分也会相应地进步。 总的来说,SonarQube是一个十分弱小的工具,能够帮忙你治理和改良代码品质。它的应用并不简单,然而须要一些工夫和致力来配置和了解。只有你违心投入这些,你就会发现它是一个无价的资源。

February 23, 2024 · 1 min · jiezi

关于debian:GitExceptionGit报错fatal-unable-to-autodetect-email-address

Git是一种分布式版本控制系统,它被宽泛应用于软件开发和其余版本控制工作。在应用Git进行版本控制时,可能会遇到各种谬误,其中之一就是“fatal: unable to auto-detect email address”。这个谬误是因为Git无奈自动检测到用户的电子邮件地址。 当咱们在Git中进行提交(commit)操作时,Git会记录提交者的姓名和电子邮件地址。这些信息会作为提交记录的一部分,用于追踪代码的更改。如果Git无奈获取到这些信息,就会呈现上述的谬误。 解决这个问题的办法是手动设置Git的用户姓名和电子邮件地址。在Git中,咱们能够应用以下命令来设置这些信息: git config --global user.name "你的名字"git config --global user.email "你的邮箱"在上述命令中,--global选项意味着这些设置将利用到所有的Git仓库。如果你只想在以后的Git仓库中设置这些信息,能够省略 --global选项。 留神,你须要将"你的名字"和"你的邮箱"替换为你理论的名字和电子邮件地址。这些信息将会用于记录你的Git提交。 在设置完用户信息后,你能够应用 git config --list命令来查看以后的Git配置,确认你的设置是否正确。如果你看到的输入中蕴含了你刚刚设置的用户姓名和电子邮件地址,那么就阐明你的设置是正确的。 如果你在设置用户信息后依然遇到了雷同的谬误,那么可能是因为你的Git仓库有非凡的配置,或者你的操作系统环境有问题。在这种状况下,你能够尝试在Git仓库的目录中运行上述的命令,或者查看你的操作系统的环境变量设置。 总的来说,"fatal: unable to auto-detect email address"这个谬误是因为Git无奈获取到用户的电子邮件地址,解决这个问题的办法是手动设置Git的用户姓名和电子邮件地址。在设置完用户信息后,你应该可能失常应用Git进行提交操作。如果你在设置用户信息后依然遇到了雷同的谬误,那么可能须要进一步查看你的Git仓库配置或操作系统环境。

February 23, 2024 · 1 min · jiezi

关于debian:PHP调用API接口的方法及实现

在PHP中,调用API接口的办法次要有两种:应用file_get_contents函数和应用cURL库。上面将具体介绍这两种办法。 首先,咱们来看看如何应用file_get_contents函数调用API接口。file_get_contents函数是PHP的内置函数,能够用来读取文件的内容,也能够用来获取网络资源,包含API接口。 以下是一个应用file_get_contents函数调用API接口的例子: $url = "http://api.example.com/data"; // API接口的URL$response = file_get_contents($url); // 从API接口获取数据$data = json_decode($response, true); // 解析JSON格局的数据在上述代码中,咱们首先定义了API接口的URL,而后应用file_get_contents函数从该URL获取数据,最初应用json_decode函数解析获取到的JSON格局的数据。 然而,file_get_contents函数有一些限度。例如,它不能发送POST申请,也不能设置HTTP头。因而,如果你须要更高级的性能,你可能须要应用cURL库。 cURL是一个弱小的库,能够用来发送各种类型的HTTP申请,包含GET、POST、PUT、DELETE等。它还能够设置HTTP头,解决cookies,以及进行其余高级操作。 以下是一个应用cURL库调用API接口的例子: $url = "http://api.example.com/data"; // API接口的URL$ch = curl_init(); // 初始化cURL会话curl_setopt($ch, CURLOPT_URL, $url); // 设置URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置返回后果而不是输入它$response = curl_exec($ch); // 执行cURL会话curl_close($ch); // 敞开cURL会话$data = json_decode($response, true); // 解析JSON格局的数据在上述代码中,咱们首先初始化一个cURL会话,而后设置API接口的URL,以及一个选项,使得cURL执行后返回后果而不是输入它。而后,咱们执行cURL会话,获取API接口的数据,敞开cURL会话,最初解析获取到的JSON格局的数据。 总的来说,PHP提供了多种办法来调用API接口,你能够依据你的需要抉择适合的办法。如果你只须要简略地获取API接口的数据,你能够应用file_get_contents函数。如果你须要更高级的性能,你能够应用cURL库。

February 23, 2024 · 1 min · jiezi

关于debian:使用php获取时间今天明天昨天时间戳的详解

在PHP中获取工夫戳是一项常见的工作,尤其是当咱们须要解决日期和工夫的数据时。在本文中,咱们将探讨如何在PHP中获取明天、今天和昨天的工夫戳。 首先,咱们须要了解工夫戳是什么。工夫戳是从1970年1月1日00:00:00开始,到特定工夫的秒数。它是一个整数,通常用于计算日期和工夫。 在PHP中,咱们能够应用内置的 time()函数获取以后的工夫戳。这个函数返回的是以后工夫的Unix工夫戳。 $now = time();echo $now;以上代码将会输入以后的Unix工夫戳。 那么,如何获取明天、今天和昨天的工夫戳呢? 获取明天的工夫戳咱们能够应用PHP的 strtotime()函数来获取明天的工夫戳。这个函数接管一个字符串参数,示意要解析的日期字符串。 $today = strtotime("today");echo $today;以上代码将会输入明天的工夫戳。 获取今天的工夫戳同样,咱们能够应用 strtotime()函数来获取今天的工夫戳。 $tomorrow = strtotime("tomorrow");echo $tomorrow;以上代码将会输入今天的工夫戳。 获取昨天的工夫戳咱们还能够应用 strtotime()函数来获取昨天的工夫戳。 $yesterday = strtotime("yesterday");echo $yesterday;以上代码将会输入昨天的工夫戳。 须要留神的是,strtotime()函数返回的工夫戳是基于以后时区的。如果你的服务器设置的时区和你的理论时区不同,可能会呈现工夫不精确的状况。在这种状况下,你能够应用 date_default_timezone_set()函数来设置正确的时区。 总结起来,PHP提供了很多内置的函数来解决日期和工夫,这使得获取和操作工夫戳变得十分不便。无论你是要获取明天、今天还是昨天的工夫戳,只须要应用 strtotime()函数即可。同时,别忘了检查和设置你的时区,以确保工夫的准确性。

February 23, 2024 · 1 min · jiezi

关于debian:在PHP8中统计数组元素个数PHP8知识详解

在PHP中,咱们常常须要对数组进行操作,其中一种常见的操作就是统计数组元素的个数。在PHP8中,咱们能够应用 count()函数来实现这个性能。上面咱们将具体介绍在PHP8中如何应用 count()函数来统计数组元素的个数。 首先,让咱们来看一下 count()函数的根本用法。count()函数的语法是 count($array, $mode),其中 $array是必须的,示意要统计元素个数的数组;$mode是可选的,示意统计模式,它能够是 COUNT_NORMAL(默认)或 COUNT_RECURSIVE。默认状况下,count()函数只统计数组的第一层元素,如果要统计多维数组的所有元素,能够将 $mode设为 COUNT_RECURSIVE。 上面是一个应用 count()函数的例子: $array = array(1, 2, 3, 4, 5);echo count($array); // 输入:5在这个例子中,咱们创立了一个蕴含五个元素的数组,而后应用 count()函数统计了数组的元素个数,输入后果为5。 如果咱们有一个多维数组,能够这样应用 count()函数: $array = array(array(1, 2), array(3, 4), 5);echo count($array, COUNT_RECURSIVE); // 输入:7在这个例子中,咱们创立了一个多维数组,而后应用 count()函数和 COUNT_RECURSIVE参数统计了数组的所有元素个数,输入后果为7。 须要留神的是,count()函数统计的是数组元素的个数,而不是数组的长度。在PHP中,数组的长度是指数组的最大整数键加1,而数组元素的个数是指数组中理论存在的元素个数。例如,上面的数组的长度是10,但元素个数是1: $array = array(9 => 'a');echo count($array); // 输入:1在PHP8中,count()函数的行为和之前的版本基本一致,但PHP8在性能和错误处理上做了一些优化。例如,如果你试图对非数组的变量应用 count()函数,PHP8会抛出一个正告。这使得咱们在编写代码时更容易发现错误。 总的来说,count()函数是PHP中十分实用的一个函数,它能够帮忙咱们简略疾速地统计数组元素的个数。无论你是在解决一维数组还是多维数组,都能够通过 count()函数轻松实现工作。在应用 count()函数时,只须要留神它统计的是元素个数而不是数组长度,以及如何通过 $mode参数来管制统计的深度,就能够防止大部分常见的谬误。

February 23, 2024 · 1 min · jiezi

关于debian:Ubuntu下运行QEMU模拟riscv64跑Debian

在Ubuntu下运行QEMU模仿riscv64来运行Debian零碎是一种实用的办法,它能帮忙你在不同的架构上测试和运行软件。以下是一种可能的步骤,但请留神,这种办法可能会因为你的具体环境和版本而略有不同。 首先,你须要在Ubuntu上装置QEMU。QEMU是一个开源的处理器模拟器和虚拟机,它能够模仿各种处理器架构,并为它们提供虚拟机服务。你能够应用以下命令装置QEMU: sudo apt updatesudo apt install qemu接下来,你须要获取一个riscv64的Debian零碎镜像。你能够从Debian的官方网站或者其余可信赖的源获取。例如,你能够应用以下命令从Debian的官方网站下载一个riscv64的零碎镜像: wget https://cdimage.debian.org/debian-cd/current/riscv64/iso-cd/debian-10.7.0-riscv64-netinst.iso下载实现后,你须要应用QEMU来启动这个零碎镜像。你能够应用以下命令来启动零碎镜像: qemu-system-riscv64 -M virt -m 1024 -kernel vmlinux-4.15.0-2-riscv64 -initrd initrd.img-4.15.0-2-riscv64 -append "root=/dev/vda1" -drive file=debian-10.7.0-riscv64-netinst.iso,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-net-device,netdev=usernet -netdev user,id=usernet,hostfwd=tcp::10000-:22 -nographic这个命令将会启动一个模仿的riscv64零碎,并应用你下载的Debian零碎镜像作为硬盘。-M virt参数指定了要模仿的机器类型,-m 1024参数指定了虚拟机的内存大小,-kernel和 -initrd参数指定了启动的内核和初始化ramdisk,-append "root=/dev/vda1"参数指定了根文件系统的地位,-drive参数指定了硬盘的地位和类型,-device参数指定了硬盘和网络设备的类型,-netdev参数指定了网络设备的配置,包含端口转发的设置,-nographic参数让QEMU在终端模式下运行。 在启动后,你应该能够看到Debian的安装程序。你能够依照提醒进行操作,装置Debian零碎。 一般来说,装置过程中可能会遇到一些问题,例如网络设置或者硬盘分区的问题。这些问题通常能够通过调整QEMU的启动参数或者在Debian安装程序中进行配置来解决。 装置实现后,你能够应用同样的QEMU命令来启动你的Debian零碎。如果你在装置过程中设置了网络和SSH,你也能够通过SSH来拜访你的Debian零碎。 以上就是在Ubuntu下运行QEMU模仿riscv64来运行Debian零碎的根本步骤。这种办法尽管有些简单,然而它提供了一种在不同架构上测试和运行软件的弱小工具。

February 22, 2024 · 1 min · jiezi

关于debian:ssh登录22号端口拒绝连接Ubuntu

SSH(Secure Shell)是一种网络协议,用于平安地连贯到近程服务器。默认状况下,SSH应用22号端口。然而,如果你在尝试应用SSH连贯到Ubuntu服务器时遇到了“回绝连贯”谬误,可能有多种可能的起因。上面咱们将具体探讨这些起因以及解决方案。 首先,你须要确定SSH服务器是否在你的Ubuntu零碎上运行。你能够应用以下命令来查看: sudo systemctl status ssh如果SSH服务器没有运行,你能够应用以下命令启动它: sudo systemctl start ssh其次,你须要查看防火墙设置。如果防火墙阻止了22号端口,你会无奈通过SSH进行连贯。你能够应用UFW(Uncomplicated Firewall)来治理你的防火墙规定。以下命令能够用来查看以后的UFW规定: sudo ufw status如果22号端口被阻止,你能够应用以下命令凋谢它: sudo ufw allow 22你还须要查看SSH配置文件中的设置。配置文件通常位于 /etc/ssh/sshd_config。你能够应用文本编辑器关上这个文件并查看其中的设置。特地要留神 Port、PermitRootLogin、PasswordAuthentication等参数。如果你更改了任何设置,记得重启SSH服务以使更改失效: sudo systemctl restart ssh还有一种可能是你的服务器可能设置了只容许特定的IP地址或网络通过SSH进行连贯。这些设置通常在SSH配置文件或防火墙规定中进行。你须要查看并确保你的IP地址或网络被容许连贯。 另外,如果你的服务器在云服务如AWS或DigitalOcean上,那么你可能还须要查看云服务提供商的网络安全组或防火墙设置。这些设置可能会笼罩你在操作系统级别的防火墙规定。 如果你曾经查看了所有这些可能性并且依然无奈解决问题,那么可能是有更简单的网络问题存在。例如,你的ISP可能阻止了SSH连贯,或者你的路由器可能须要进行非凡配置。在这种状况下,你可能须要寻求业余的网络技术支持来帮忙解决问题。 总的来说,SSH“回绝连贯”谬误通常是因为SSH服务未运行、防火墙阻止了连贯、SSH配置问题或网络问题导致的。解决这个问题通常须要一步步地排查和解决这些可能的起因。心愿以上的信息可能帮忙你解决问题。

February 22, 2024 · 1 min · jiezi

关于debian:Python动态变量名定义与调用方法

在Python中,咱们有时会遇到须要动态创建变量名的状况,即在运行时生成变量名。Python提供了一种办法能够实现这一点,即通过应用内置的 globals()或 locals()函数。然而,须要留神的是,动态创建变量并不是一种举荐的做法,因为它可能会导致代码的可读性和可维护性升高。不过,理解这种办法能够帮忙咱们更深刻地了解Python的工作原理。 首先,咱们来看一下如何应用 globals()函数动态创建变量。globals()函数返回一个字典,该字典示意以后全局符号表,这包含所有导入的模块和定义的函数、类、变量等。咱们能够批改这个字典来动态创建变量。例如: for i in range(5): globals()[f"var{i}"] = i * i在这个例子中,咱们创立了5个变量,名字别离为 var0、var1、var2、var3和 var4,它们的值别离是0、1、4、9和16。 而后,咱们能够通过间接应用变量名来拜访这些变量: print(var0) # 输入:0print(var1) # 输入:1print(var2) # 输入:4print(var3) # 输入:9print(var4) # 输入:16locals()函数的用法与 globals()函数相似,但它返回的是以后部分符号表的字典。如果在函数外部应用 locals()函数,那么它将返回该函数的局部变量。须要留神的是,尽管能够应用 locals()函数获取局部变量,但批改返回的字典并不能真正扭转局部变量。例如: def test(): for i in range(5): locals()[f"var{i}"] = i * i print(var0) # NameError: name 'var0' is not definedtest()在这个例子中,尝试拜访 var0会导致 NameError,因为批改 locals()返回的字典并不能真正创立局部变量。 只管Python提供了动态创建变量的办法,但通常咱们不举荐这样做。动态创建变量可能会导致代码难以了解和保护,因为咱们不能间接看到所有的变量名。在大多数状况下,应用数据结构(如列表或字典)来存储数据会更好。例如,咱们能够应用字典来代替下面的例子: vars = {}for i in range(5): vars[f"var{i}"] = i * iprint(vars["var0"]) # 输入:0print(vars["var1"]) # 输入:1print(vars["var2"]) # 输入:4print(vars["var3"]) # 输入:9print(vars["var4"]) # 输入:16在这个例子中,咱们创立了一个字典 vars,并应用循环来填充它。而后,咱们能够通过键来拜访字典中的值。这种办法的益处是,咱们能够立刻看到所有的数据都存储在 vars字典中,而不须要查找多个动态创建的变量。 总的来说,尽管Python提供了动态创建变量的办法,但在大多数状况下,应用数据结构来存储数据会更好。如果你的确须要动态创建变量,那么请确保你明确这样做的结果,并尽量使你的代码放弃清晰和可保护。

February 20, 2024 · 1 min · jiezi

关于debian:route命令小结

在计算机网络畛域,route命令是一个十分重要的工具。它在各种操作系统中都有存在,如Linux、Windows、Mac OS等,次要用于显示和操作IP路由表。路由表是一个数据结构,它记录了数据包从一个网络设备发送到另一个网络设备的门路。通过route命令,咱们能够查看、增加或删除路由表中的路由。 route命令的根本语法如下: route [-nNvee] [-FC] [<AF>] # 显示路由表route [-v] [-FC] {add|del|flush} ... # 批改路由表这里,"[]"中的内容示意可选参数,"{}"中的内容示意必选参数。"add"、"del"和"flush"别离用于增加、删除和清空路由表。 route命令的常见用法如下: route:不带任何参数的route命令将显示以后的路由表。route add -net 192.0.2.0 netmask 255.255.255.0 gw 192.0.2.1:这个命令将增加一个网络路由。这个路由指定了从以后网络设备到192.0.2.0/24网络的门路,通过192.0.2.1这个网关。route del -net 192.0.2.0 netmask 255.255.255.0:这个命令将删除一个网络路由。route add default gw 192.0.2.1:这个命令将增加一个默认路由。默认路由是当没有找到匹配的特定路由时应用的路由。route命令还有一些高级用法,例如: route -n:这个命令将以数字模式显示IP地址,而不是以主机名模式显示。这能够放慢命令的执行速度,因为不须要进行DNS解析。route add -host 192.0.2.1 dev eth0:这个命令将增加一个主机路由。这个路由指定了从以后网络设备到192.0.2.1这个主机的门路,通过eth0这个网络接口。须要留神的是,route命令批改的路由表是长期的,重启零碎后将生效。如果须要永恒批改路由表,须要批改网络配置文件,这个过程依赖于具体的操作系统。 总的来说,route命令是一个弱小的网络配置工具,它能够帮忙咱们了解和管制数据包在网络中的传输门路。无论是进行网络故障排查,还是进行网络配置优化,route命令都是一个十分有用的工具。

February 20, 2024 · 1 min · jiezi

关于debian:关于Ingressnginx的跨域配置

Ingress-nginx是一个基于Nginx的Ingress Controller,它能够帮忙咱们在Kubernetes环境中解决HTTP和HTTPS路由。当咱们须要在这个环境中解决跨域(CORS)问题时,咱们能够通过配置Ingress-nginx来实现。 首先,咱们须要了解什么是CORS。CORS,即跨源资源共享(Cross-Origin Resource Sharing),是一种机制,它应用额定的HTTP头来通知浏览器让运行在一个origin(域)上的Web利用被准许拜访来自不同源服务器上的特定的资源。当一个Web利用进行CORS申请时,浏览器会向服务器发动一个预检申请,通过这个预检申请来晓得Web利用是否有权限进行理论的申请。 在Ingress-nginx中,咱们能够通过增加特定的注解(annotation)来配置CORS。以下是一个例子,展现了如何在Ingress规定中增加CORS相干的注解: apiVersion: networking.k8s.io/v1kind: Ingressmetadata: annotations: nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, DELETE, PATCH, OPTIONS" nginx.ingress.kubernetes.io/cors-allow-origin: "http://my-allowed-origin.com" nginx.ingress.kubernetes.io/cors-allow-credentials: "true" name: ingress-with-cors namespace: my-namespacespec: rules: - host: my-app.my-domain.com http: paths: - pathType: Prefix path: "/" backend: service: name: my-service port: number: 8080在上述的YAML文件中,咱们定义了一个Ingress资源,这个资源应用了一些注解来开启和配置CORS。以下是这些注解的含意: nginx.ingress.kubernetes.io/enable-cors: "true":这个注解用来开启CORS。nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, DELETE, PATCH, OPTIONS":这个注解定义了容许的HTTP办法。nginx.ingress.kubernetes.io/cors-allow-origin: "http://my-allowed-origin.com":这个注解定义了容许的源(origin)。nginx.ingress.kubernetes.io/cors-allow-credentials: "true":这个注解示意是否容许浏览器解决跨域申请时携带用户凭证(例如,cookies或HTTP认证相干数据)。以上就是在Ingress-nginx中配置CORS的根本办法。须要留神的是,CORS配置是非常灵活的,你能够依据你的理论需要来调整上述的配置。例如,你可能须要容许所有的源,那么你能够将 nginx.ingress.kubernetes.io/cors-allow-origin设置为 "*"。又或者,你可能须要容许更多的HTTP办法,那么你能够在 nginx.ingress.kubernetes.io/cors-allow-methods中增加更多的办法。 总的来说,Ingress-nginx提供了一种不便的形式来解决Kubernetes环境中的CORS问题,你只须要通过增加相应的注解就能够配置CORS,无需批改你的利用代码。

February 20, 2024 · 1 min · jiezi

关于debian:Mysql创建用户并且给指定用户添加某个库的所有权限

在MySQL中,创立新用户并为其调配特定数据库的所有权限是一种常见的数据库治理工作。这个过程波及到几个根本步骤:创立新用户、创立新数据库(如果需要的话),以及为新用户调配特定数据库的权限。以下是这个过程的具体步骤: 首先,你须要登录到MySQL服务器。这能够通过在命令行中输出以下命令来实现: mysql -u root -p这将提醒你输出root用户的明码。在输出明码后,你将被带到MySQL命令行界面。 接下来,咱们须要创立一个新用户。假如咱们要创立的新用户的用户名为"myuser",明码为"mypassword"。咱们能够应用以下命令来创立新用户: CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';这个命令将在MySQL服务器上创立一个名为"myuser"的新用户,该用户只能从localhost(即本地服务器)拜访MySQL。"IDENTIFIED BY"子句设置了用户的明码。 接下来,咱们须要创立一个新的数据库,或者指定一个曾经存在的数据库,咱们能够给新用户调配权限。假如咱们要创立的新数据库名为"mydatabase",咱们能够应用以下命令来创立新数据库: CREATE DATABASE mydatabase;当初咱们有了一个新用户和一个新数据库,咱们能够开始调配权限。假如咱们想要给"myuser"用户在"mydatabase"数据库上的所有权限,咱们能够应用以下命令: GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';这个命令将"mydatabase"数据库上的所有权限授予"myuser"用户。这意味着"myuser"能够执行所有类型的操作,包含SELECT,INSERT,UPDATE,DELETE,CREATE,DROP等。 最初,为了使更改失效,咱们须要刷新权限。这能够通过以下命令来实现: FLUSH PRIVILEGES;这个命令将强制MySQL服务器从新加载权限。 以上就是在MySQL中创立新用户并为其调配特定数据库所有权限的全副步骤。请留神,这些步骤须要具备足够权限的用户(如root用户)来执行。在操作数据库时,应始终审慎行事,确保你的命令不会无心中毁坏任何重要数据。

February 19, 2024 · 1 min · jiezi

关于debian:TDengine函数大全目录

TDengine是一个为互联网物联网(IoT)、互联网汽车、风力发电等行业设计的高性能时序数据库。它次要用于存储和剖析大量的工夫序列数据。TDengine提供了一系列的函数来帮忙用户解决和剖析这些数据。以下是TDengine的函数大全-目录: 聚合函数:聚合函数用于对一组值进行操作并返回单个值。TDengine提供了一系列的聚合函数,包含但不限于avg()(平均值)、sum()(求和)、min()(最小值)、max()(最大值)、first()(第一个值)、last()(最初一个值)、count()(计数)等。窗口函数:窗口函数容许用户依照工夫窗口对数据进行操作。这些函数包含但不限于avg()、sum()、min()、max()、first()、last()、count()等。数学函数:数学函数用于对数据进行数学操作。包含abs()(绝对值)、ceil()(向上取整)、floor()(向下取整)、round()(四舍五入)、sqrt()(平方根)、cbrt()(立方根)、log()(对数)、exp()(指数)、power()(幂运算)、acos()、asin()、atan()、cos()、sin()、tan()等。字符串函数:字符串函数用于对字符串类型的数据进行操作。这些函数包含concat()(连贯字符串)、length()(字符串长度)、substring()(子字符串)、trim()(去除空格)等。日期和工夫函数:日期和工夫函数用于解决和转换日期和工夫类型的数据。这些函数包含now()(以后工夫)、curdate()(以后日期)、curtime()(以后工夫)、day()(日)、month()(月)、year()(年)、hour()(小时)、minute()(分钟)、second()(秒)、millisecond()(毫秒)等。条件函数:条件函数用于依据条件对数据进行操作。这些函数包含if()(如果)、case()(状况)、when()(当)、then()(而后)、else(否则)等。类型转换函数:类型转换函数用于转换数据类型。这些函数包含cast()(类型转换)、to_binary()(转换为二进制)、to_char()(转换为字符)、to_number()(转换为数字)、to_timestamp()(转换为工夫戳)等。其余函数:TDengine还提供了一些其余的函数,如last_row()(获取最初一行数据)、interp()(插值函数)、spread()(扩散函数)等。以上就是TDengine的函数大全-目录,这些函数能够帮忙用户更好地解决和剖析时序数据库中的数据。在应用这些函数时,须要留神函数的应用条件和限度,以确保失去正确和无效的后果。

February 19, 2024 · 1 min · jiezi

关于debian:rke2在线部署kubernetes

RKE2是Rancher Labs推出的一款Kubernetes发行版,它是Rancher Kubernetes Engine (RKE) 的下一代版本,专为生产环境设计,遵循CIS Kubernetes基准。这款产品的特点是易于装置,安全性高,同时蕴含了一些常见的插件,如网络插件和存储插件等。上面将解说如何在线部署RKE2以搭建Kubernetes集群。 首先,咱们须要筹备好服务器。在这个示例中,咱们将应用三台服务器,一台作为管制节点,两台作为工作节点。这三台服务器都须要有一个公开的IP地址,并且可能相互拜访。同时,这些服务器须要运行Linux操作系统,如Ubuntu或CentOS。 第一步是在每台服务器上安装RKE2。首先,咱们须要下载RKE2的装置脚本。在服务器的命令行中运行以下命令: curl -sfL https://get.rke2.io | sh -这个命令会下载并运行RKE2的装置脚本。装置实现后,RKE2的二进制文件会被放在 /usr/local/bin/目录下。 接下来,咱们须要在管制节点上启动RKE2服务器。首先,咱们须要创立一个配置文件。在 /etc/rancher/rke2/目录下创立一个名为 config.yaml的文件,而后在文件中增加以下内容: write-kubeconfig-mode: "0644"tls-san: - "your-server-public-ip"其中,your-server-public-ip须要替换为你的服务器的公开IP地址。而后,咱们能够通过运行以下命令启动RKE2服务器: systemctl enable rke2-server.servicesystemctl start rke2-server.service启动实现后,咱们能够通过运行 kubectl get nodes命令来查看节点的状态。如果一切正常,你应该能看到你的管制节点曾经在运行。 接下来,咱们须要在工作节点上启动RKE2 agent。首先,咱们须要在工作节点上创立一个配置文件。在 /etc/rancher/rke2/目录下创立一个名为 config.yaml的文件,而后在文件中增加以下内容: server: https://your-server-public-ip:9345token: your-server-token其中,your-server-public-ip须要替换为你的管制节点的公开IP地址,your-server-token须要替换为你的管制节点的token。你能够在管制节点的 /var/lib/rancher/rke2/server/node-token文件中找到这个token。 而后,咱们能够通过运行以下命令启动RKE2 agent: systemctl enable rke2-agent.servicesystemctl start rke2-agent.service启动实现后,咱们能够在管制节点上运行 kubectl get nodes命令来查看所有节点的状态。如果一切正常,你应该能看到所有的节点都曾经在运行。 至此,你曾经胜利地应用RKE2在线部署了一个Kubernetes集群。你当初能够开始在这个集群上部署你的利用了。

February 19, 2024 · 1 min · jiezi

关于debian:MySQL之MHA高可用配置及故障切换

MHA(Master High Availability)是一个用于治理MySQL复制集群的高可用解决方案。MHA能够主动解决主服务器(Master)的故障并进行故障切换,同时还能够最小化复制提早。 MHA的工作原理次要基于MySQL的主从复制机制。在失常状况下,主服务器会解决所有的写操作,并将这些操作的日志复制到从服务器。当主服务器呈现故障时,MHA会主动抉择一个从服务器晋升为新的主服务器,并重新配置残余的从服务器,使它们从新的主服务器复制数据。 MHA的配置和应用次要包含以下步骤: 装置MHA:MHA次要由两局部组成,别离是MHA Manager和MHA Node。MHA Manager用于管制和治理整个复制集群,通常只须要在一台服务器上安装。MHA Node须要在每台参加复制的服务器上安装。配置MHA:MHA的配置次要通过一个配置文件进行,该文件须要定义复制集群中所有服务器的信息,包含主服务器和从服务器的IP地址、端口、用户名和明码等。此外,还能够定义一些其余的参数,如故障切换策略、日志地位等。启动MHA:启动MHA次要通过执行MHA Manager的start命令实现。在启动MHA之前,须要确保所有的服务器都能够失常运行,并且主从复制曾经配置正确。故障切换:当主服务器呈现故障时,MHA会主动进行故障切换。首先,MHA会进行所有从服务器的复制,并抉择一个从服务器晋升为新的主服务器。而后,MHA会重新配置残余的从服务器,使它们从新的主服务器复制数据。最初,MHA会更新配置文件,将新的主服务器的信息保存起来。MHA的次要长处是能够主动解决主服务器的故障并进行故障切换,而且能够最小化复制提早。然而,MHA也有一些局限性,比方,它不能解决多主服务器的状况,也不能解决网络分区等简单的故障场景。此外,MHA的配置和应用也比较复杂,须要有肯定的MySQL和Linux系统管理常识。

February 19, 2024 · 1 min · jiezi

关于debian:Linux之autofs自动挂载服务

autofs是Linux零碎中一种主动挂载服务,它能够在须要时主动挂载文件系统,而在不须要时主动卸载。这种机制能够进步系统资源的利用率,缩小管理员的工作量。 autofs的工作原理基于Linux内核的automount性能。当用户试图拜访autofs挂载的目录时,automount守护过程会捕捉这个拜访申请,而后依据配置文件挂载相应的文件系统。当这个文件系统一段时间没有被拜访,automount会主动将其卸载。 要应用autofs,首先须要在零碎中装置autofs软件包。在大多数Linux发行版中,能够通过包管理器进行装置,如在基于Debian的零碎中,能够应用 apt-get install autofs命令进行装置。 装置实现后,须要配置autofs的主配置文件/etc/auto.master。这个文件中定义了autofs的挂载点和相干的配置文件。例如,一条常见的配置可能如下: /misc /etc/auto.misc这条配置指定了一个挂载点/misc,和一个相干的配置文件/etc/auto.misc。在/etc/auto.misc文件中,能够定义具体的挂载规定。例如: cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom这条规定定义了当拜访/misc/cd目录时,零碎会主动挂载/dev/cdrom设施,文件系统类型为iso9660,挂载选项为只读、不容许setuid、不容许设施文件。 配置实现后,须要重启autofs服务使配置失效。在大多数零碎中,能够应用 service autofs restart命令进行重启。 总的来说,autofs是一种十分实用的工具,它能够帮忙管理员简化文件系统的治理,进步零碎的效率和稳定性。

February 19, 2024 · 1 min · jiezi

关于debian:linux压缩webfile文件夹-webfiletargz和webfiletar的区别

在Linux零碎中,.tar和.tar.gz是两种常见的文件压缩格局。它们的次要区别在于压缩级别和解决形式。 .tar文件是通过tar命令创立的归档文件。tar,全称Tape Archive,最后被设计用于在磁带存储设备上存储文件,但当初曾经宽泛用于在硬盘驱动器上存储和散发文件。tar命令能够将一个或多个文件或目录打包成一个繁多的tar文件,但不会进行任何压缩。因而,tar文件的大小通常与原始文件或目录的大小雷同。 .tar.gz文件则是通过gzip压缩的tar文件。gzip,全称GNU zip,是一个在Unix和类Unix零碎(包含Linux)中宽泛应用的文件压缩程序。gzip能够将文件压缩到更小的大小,从而节俭存储空间并放慢文件传输速度。因而,.tar.gz文件的大小通常比原始文件或目录的大小要小。 如果你想在Linux零碎中压缩一个名为webfile的文件夹,你能够先应用tar命令创立一个tar文件,而后应用gzip命令将其压缩为.tar.gz文件。以下是具体的命令: 创立tar文件: tar -cvf webfile.tar webfile这将创立一个名为webfile.tar的文件,其中蕴含webfile文件夹的内容。 创立.tar.gz文件: tar -zcvf webfile.tar.gz webfile这将创立一个名为webfile.tar.gz的文件,其中蕴含webfile文件夹的内容,并且文件曾经被gzip压缩。 总的来说,.tar和.tar.gz的次要区别在于是否进行了压缩。.tar文件只是将多个文件或目录打包成一个文件,而.tar.gz文件则进一步将tar文件进行了gzip压缩。在抉择应用哪种格局时,你须要衡量存储空间和解决工夫的需要。如果存储空间缓和,或者须要传输文件,那么.tar.gz文件可能是更好的抉择。如果解决工夫是要害,那么.tar文件可能会更快,因为它不须要进行压缩和解压缩操作。

February 18, 2024 · 1 min · jiezi

关于debian:在ubuntu2004上安装armlinuxgcc-443

在Ubuntu 20.04中装置arm-linux-gcc 4.4.3的过程能够分为几个步骤。因为arm-linux-gcc 4.4.3可能不间接存在于Ubuntu的软件源中,因而须要从源码编译装置。以下是具体的步骤: 装置依赖 在开始之前,你须要确保曾经装置了必要的依赖。在终端中输出以下命令: sudo apt-get updatesudo apt-get install build-essential libgmp3-dev libmpfr-dev libmpc-dev下载源码 你须要从GNU官方网站下载GCC的源码。因为你须要的版本是4.4.3,你可能须要在GNU的FTP服务器中找到相应的源码。你能够应用wget命令来下载: wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.4.3/gcc-4.4.3.tar.gz而后解压下载的源码包: tar xvf gcc-4.4.3.tar.gz配置源码 在编译源码之前,你须要配置源码。进入解压后的目录,而后运行以下命令: cd gcc-4.4.3./configure --target=arm-linux --prefix=/usr/local/arm-linux-gcc-4.4.3 --enable-languages=c,c++ --with-arch=armv5te --with-float=soft --disable-multilib这里的 --target=arm-linux示意指标架构是ARM Linux,--prefix=/usr/local/arm-linux-gcc-4.4.3示意装置门路,--enable-languages=c,c++示意启用C和C++编译器,--with-arch=armv5te --with-float=soft --disable-multilib是针对特定ARM架构的选项。 编译和装置 配置实现后,就能够开始编译了: make编译可能须要一段时间。编译实现后,应用以下命令进行装置: sudo make install设置环境变量 为了方便使用,你能够将装置的arm-linux-gcc增加到PATH环境变量中: echo 'export PATH=$PATH:/usr/local/arm-linux-gcc-4.4.3/bin' >> ~/.bashrcsource ~/.bashrc这样,你就能够在任何地位应用arm-linux-gcc了。 以上就是在Ubuntu 20.04中装置arm-linux-gcc 4.4.3的步骤。请留神,因为GCC的版本和指标架构的不同,可能须要依据理论状况调整配置选项和编译参数。

February 18, 2024 · 1 min · jiezi

关于debian:Logstash同步MySQL数据到ElasticSearch

应用Logstash从MySQL同步数据到Elasticsearch是一个常见的需要,这个过程能够分为以下几个步骤: 装置和配置Logstash:首先,你须要在你的服务器上安装Logstash。一旦装置实现,你须要创立一个配置文件,这个文件将定义如何从MySQL读取数据,以及如何将这些数据推送到Elasticsearch。配置MySQL输出插件:在Logstash配置文件中,你须要定义一个输出插件来从MySQL数据库读取数据。你须要提供数据库的URL,用户名,明码,以及你想要查问的SQL语句。这个SQL语句将决定你想要从数据库中提取哪些数据。 例如: input { jdbc { jdbc_driver_library => "/path/to/mysql-connector-java.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/mydatabase" jdbc_user => "myuser" jdbc_password => "mypassword" statement => "SELECT * FROM mytable" }}配置Elasticsearch输入插件:在同一个配置文件中,你还须要定义一个输入插件来将数据推送到Elasticsearch。你须要提供Elasticsearch服务器的URL,以及你想要存储数据的索引名称。 例如: output { elasticsearch { hosts => "localhost:9200" index => "myindex" }}运行Logstash:一旦你的配置文件筹备好了,你就能够运行Logstash了。只须要在命令行中输出以下命令: bin/logstash -f /path/to/your/config/fileLogstash将开始从MySQL读取数据,并将数据推送到Elasticsearch。 这只是一个根本的例子,理论的配置可能会依据你的具体需要而变动。例如,你可能须要配置更简单的SQL查问,或者你可能须要应用Logstash的过滤插件来转换或荡涤数据。总的来说,Logstash是一个十分弱小和灵便的工具,能够用来满足各种各样的数据同步需要。

February 18, 2024 · 1 min · jiezi

关于debian:SQLServer如何获取客户端IP

在SQL Server中,获取客户端IP并不像获取其余数据库信息那样间接,但的确有一些办法能够实现。以下是一个罕用的办法: 首先,你须要应用零碎视图 sys.dm_exec_connections。这个动静治理视图能够提供对于每个数据库连贯的信息,包含客户端的IP地址。以下是一个简略的查问例子: SELECT session_id, client_net_address FROM sys.dm_exec_connections;在这个查问中,session_id是每个连贯的惟一标识符,而 client_net_address就是客户端的IP地址。 然而,须要留神的是,这个查问只能获取到以后流动连贯的IP地址。如果客户端曾经断开连接,那么你将无奈获取到那个客户端的IP地址。 另外,这个查问须要VIEW SERVER STATE权限。如果你没有这个权限,那么你须要向数据库管理员申请。 再者,你也能够创立一个触发器或者存储过程,当新的连贯被建设时,自动记录下客户端的IP地址。这种办法须要更深刻的SQL Server常识,但能够提供更残缺的连贯历史信息。 最初,如果你的应用程序是通过一个中间层连贯到SQL Server的(例如,一个Web服务器或者应用服务器),那么你可能无奈间接获取到最终用户的IP地址。在这种状况下,你可能须要批改你的中间层,让它在每次数据库申请时,都把用户的IP地址作为一个参数传递给SQL Server。 总的来说,获取客户端IP地址在SQL Server中可能须要一些额定的工作,然而通过应用零碎视图、触发器、存储过程,或者批改你的应用程序,你应该能够实现这个指标。

February 18, 2024 · 1 min · jiezi

关于debian:Debian下dpkgquery命令怎么用

在Debian零碎中,dpkg-query是一个十分有用的命令,它用于查问零碎中的软件包信息。这个命令有多种选项和参数,能够用来获取具体的包信息,查看包的状态,以及搜寻蕴含特定文件的包等。 以下是一些根本用法: 查问已装置的软件包:dpkg-query -l。这个命令会列出零碎中所有已装置的软件包。查问特定软件包的信息:dpkg-query -s <包名>。这个命令会显示指定的软件包的详细信息,包含版本号,装置状态,形容等。查问软件包的列表文件:dpkg-query -L <包名>。这个命令会列出指定软件包装置的所有文件和目录。查问蕴含特定文件的软件包:dpkg-query -S <文件门路>。这个命令能够用来找出蕴含指定文件的软件包。查问软件包的版本信息:dpkg-query -W -f='${Version}\n' <包名>。这个命令会显示指定软件包的版本号。以上只是 dpkg-query命令的一些根本用法,实际上它还有更多的选项和参数。在应用时,能够依据本人的需要抉择适合的选项和参数。如果须要查看所有的选项和参数,能够应用 man dpkg-query命令查看手册页。 在应用 dpkg-query命令时,须要留神的是,这个命令只能查问已装置的软件包。如果须要查问未装置的软件包,能够应用 apt-cache命令。 总的来说,dpkg-query是一个十分弱小的工具,它能够帮忙用户获取零碎中软件包的详细信息,对于系统管理和故障排查都十分有用。

February 18, 2024 · 1 min · jiezi

关于debian:enkins如何请求http接口及乱码问题解决

在Jenkins中申请HTTP接口,通常有两种形式。一种是应用Shell脚本,如curl命令;另一种是应用Jenkins的HTTP Request插件。这两种形式都能够满足根本的HTTP申请需要。 首先,咱们来看看如何应用Shell脚本进行HTTP申请。在Jenkins的构建步骤中,咱们能够抉择"执行shell",而后在输入框中输出curl命令。例如: curl -X GET http://example.com/api这个命令会发送一个GET申请到http://example.com/api。如果你须要发送POST申请,或者须要在申请中蕴含数据,你能够应用-d选项: curl -X POST -d "param1=value1&param2=value2" http://example.com/api第二种形式是应用Jenkins的HTTP Request插件。首先,你须要在Jenkins中装置这个插件。装置实现后,在构建步骤中抉择"HTTP Request",而后在弹出的配置页面中输出你的申请信息。 至于乱码问题,Jenkins默认的字符编码是UTF-8,如果你的HTTP接口返回的数据不是UTF-8编码,可能会呈现乱码。解决这个问题的办法是在Jenkins的零碎设置中,将字符编码设置为你的数据的理论编码。 具体步骤如下: 在Jenkins主页,抉择"治理Jenkins" -> "零碎设置"。在"零碎设置"页面,找到"Locale"设置。在"Default Language"输入框中,输出你的字符编码,例如GBK。保留设置。留神,这个设置会影响Jenkins的所有我的项目,如果你只有局部我的项目须要应用非凡的字符编码,你可能须要在每个我的项目的配置中独自设置。 以上就是在Jenkins中申请HTTP接口以及解决乱码问题的办法。心愿对你有所帮忙。

February 17, 2024 · 1 min · jiezi

关于debian:centos下安装jenkinswar

在CentOS零碎下装置Jenkins,个别须要先装置Java,而后下载并运行jenkins.war。以下是具体步骤: 首先,确保你的零碎曾经装置了Java。Jenkins须要Java运行环境,你能够应用以下命令查看是否曾经装置Java: java -version如果未装置Java,能够通过以下命令装置OpenJDK: sudo yum install java-1.8.0-openjdk-devel装置实现后,再次运行 java -version命令,确认Java曾经胜利装置。 接下来,咱们下载Jenkins。你能够从Jenkins官方网站下载最新的jenkins.war文件。在终端中,你能够应用wget命令来下载: wget https://get.jenkins.io/war-stable/latest/jenkins.war下载实现后,你能够应用以下命令来运行Jenkins: java -jar jenkins.war这将会启动Jenkins,你能够通过浏览器拜访localhost:8080来查看Jenkins的界面。 在第一次运行Jenkins时,它会生成一个初始密码,并保留在一个文件中。你须要从这个文件中获取明码,而后输出到Jenkins的设置界面,以实现装置。 cat ~/.jenkins/secrets/initialAdminPassword以上就是在CentOS下装置jenkins.war的步骤。在实际操作中,你可能还须要依据本人的需要进行一些配置,例如批改Jenkins的运行端口,设置Jenkins的管理员账户等。

February 17, 2024 · 1 min · jiezi

关于debian:如何使用Python和正则表达式处理XML表单数据

解决XML数据时,Python提供了多种工具,其中包含ElementTree和minidom等。然而,应用正则表达式来解决XML数据并不是一个举荐的做法。XML是一种嵌套构造,而正则表达式对于解决这种嵌套构造的数据并不善于。更好的形式是应用Python的XML解析库,如ElementTree。 以下是一个简略的应用ElementTree解决XML数据的例子: import xml.etree.ElementTree as ETdata = """<root> <element1>Text1</element1> <element2 attribute="value">Text2</element2></root>"""tree = ET.ElementTree(ET.fromstring(data))root = tree.getroot()for elem in root: print(f"Element: {elem.tag}, Text: {elem.text}") for attr_name, attr_value in elem.attrib.items(): print(f"Attribute: {attr_name}, Value: {attr_value}")在这个例子中,咱们首先导入了ElementTree库,并创立了一个XML字符串。而后,咱们应用ElementTree的fromstring函数将字符串转换为一个ElementTree对象。接着,咱们能够遍历根元素的所有子元素,并打印出它们的标签、文本和属性。 尽管正则表达式对于解决XML数据并不是最佳抉择,但在某些状况下,你可能还是须要应用它。例如,你可能须要在文本中查找所有合乎特定模式的字符串。在这种状况下,你能够应用Python的re模块来应用正则表达式。 例如,以下代码将查找XML文本中所有的标签: import redata = """<root> <element1>Text1</element1> <element2 attribute="value">Text2</element2></root>"""pattern = r'<(.+?)>'matches = re.findall(pattern, data)for match in matches: print(f"Matched tag: {match}")在这个例子中,咱们应用了re模块的findall函数来查找所有合乎模式的字符串。模式 '<(.+?)>'将匹配所有的XML标签。而后,咱们打印出所有匹配的标签。 总的来说,解决XML数据时,举荐应用专门的XML解析库,而不是正则表达式。然而,在须要查找特定模式的字符串时,正则表达式依然是一个有用的工具。

February 17, 2024 · 1 min · jiezi

关于debian:Myvatis关联关系映射与表对象之间的关系

MyBatis是一种优良的长久层框架,它反对定制化SQL、存储过程以及高级映射。MyBatis打消了简直所有的JDBC代码和参数的手工设置以及后果集的检索。MyBatis能够应用简略的XML或注解进行配置,并未原生SQL提供了很好的反对。 在MyBatis中,关联关系映射和表对象之间的关系是通过XML映射文件或注解来实现的。表对象,通常是Java的POJO类,对应数据库中的一张表。而关联关系映射,则是将数据库中的关联关系(如一对一、一对多、多对多等)映射到Java对象之间的关系。 例如,假如咱们有两个表:用户表(User)和订单表(Order),一个用户能够有多个订单,即一对多的关系。在Java中,咱们可能有两个POJO类:User类和Order类。User类中可能蕴含一个Order对象的列表来示意这种一对多的关系。 在MyBatis的映射文件中,咱们能够定义如何从数据库中取出数据,并将这些数据填充到POJO对象中。例如,咱们能够定义一个查问,该查问从用户表中取出用户数据,而后通过用户ID从订单表中取出相干的订单数据,而后将这些数据填充到User对象和Order对象中。 咱们能够应用元素来定义这种映射关系。例如: <resultMap id="UserOrdersResult" type="User"> <id property="id" column="user_id" /> <result property="username" column="username" /> <collection property="orders" ofType="Order"> <id property="id" column="order_id" /> <result property="orderDate" column="order_date" /> <!-- other fields... --> </collection></resultMap>在这个例子中,咱们定义了一个后果映射,该映射将数据填充到User对象中。User对象中的"orders"属性是一个Order对象的汇合,这个汇合通过元素来映射。 总的来说,MyBatis的关联关系映射提供了一种灵便的形式来解决数据库和Java对象之间的关联关系。通过定义映射关系,咱们能够在查询数据库时主动填充Java对象,从而使代码更加简洁,更易于保护。

February 17, 2024 · 1 min · jiezi

关于debian:openproject在docker下的安装

在Docker下装置OpenProject能够通过几个简略的步骤来实现。以下是一种办法: 首先,确保已在零碎上装置了Docker和Docker Compose。如果还没有装置,能够通过官方网站下载和装置。 获取OpenProject的Docker镜像 在终端中运行以下命令来拉取最新的OpenProject Docker镜像: docker pull openproject/community:VERSION请将“VERSION”替换为你想要下载的OpenProject版本。如果你想要下载最新版本,能够应用"latest"作为版本号。 创立Docker Compose文件 在一个新的目录中,创立一个名为'docker-compose.yml'的文件,并在其中增加以下内容: version: '3.7'services: openproject: image: openproject/community:VERSION volumes: - openproject-data:/var/db/openproject ports: - 8080:80volumes: openproject-data:这个文件定义了一个应用OpenProject镜像的服务,并将一个名为'openproject-data'的卷挂载到容器的'/var/db/openproject'目录。服务还将容器的80端口映射到主机的8080端口。 启动OpenProject服务 在终端中,转到蕴含'docker-compose.yml'文件的目录,而后运行以下命令来启动服务: docker-compose up -d这个命令会启动在'docker-compose.yml'文件中定义的所有服务。'-d'选项使服务在后盾运行。 拜访OpenProject 在浏览器中拜访'http://localhost:8080',你应该能看到OpenProject的欢送页面。首次拜访可能须要一些工夫,因为OpenProject须要初始化数据库和执行其余设置工作。 这就是在Docker下装置OpenProject的根本步骤。如果须要更高级的设置,如更改数据库设置或SMTP设置,能够参考OpenProject的官网文档。

February 17, 2024 · 1 min · jiezi

关于debian:goJavapython三门语言的优缺点和各自擅长做什么

Go、Java和Python是以后十分风行的编程语言,每种语言都有其特定的长处和毛病,以及特定的实用场景。 首先,咱们来看看Go语言。Go语言是谷歌开发的一种动态类型、编译型语言,它的设计指标是“实现简略、高效、平安的编程形式”。Go语言的长处包含: 并发模型:Go语言内建了并发模型,应用Goroutine和Channel能够不便地实现并发编程。动态类型和编译型:Go语言是动态类型和编译型语言,这使得Go程序在运行时性能优良,且类型平安。规范库丰盛:Go的规范库提供了大量实用的API,包含网络编程、数据处理等。但Go语言也有其毛病,如错误处理冗余,不足泛型反对,以及对于简单的面向对象编程反对有余。Go语言特地适宜用于构建网络服务和数据管道,如微服务、API服务器、数据处理等。 接下来,咱们看看Java。Java是一种面向对象的编程语言,它的设计指标是“一次编写,到处运行”。Java的长处包含: 宽泛的利用:Java被广泛应用于企业级利用、Android开发、大数据处理等畛域。JVM:Java运行在Java虚拟机(JVM)上,这使得Java程序能在各种平台上运行。稳固和成熟:Java有着宏大的开发者社区和丰盛的开源生态。Java的毛病次要是运行速度相比编译型语言较慢,且内存耗费较大。Java特地适宜用于构建大型企业级利用、Android利用和大数据处理。 最初,咱们来看Python。Python是一种动静类型、解释型语言,它的设计指标是“优雅、明确、简略”。Python的长处包含: 语法简洁:Python的语法清晰简洁,易于浏览和编写。丰盛的库:Python有丰盛的第三方库,涵盖了科学计算、数据分析、机器学习等多个畛域。动静类型:Python是动静类型语言,这使得Python在编写小型脚本和疾速原型开发时非常灵活。Python的毛病次要是运行速度慢,且对并发编程反对有余。Python特地适宜用于科学计算、数据分析、机器学习、Web开发和脚本编写。 总的来说,Go、Java和Python都是优良的编程语言,每种语言都有其独特的长处和实用场景。抉择哪种语言取决于你的具体需要和偏好。

February 16, 2024 · 1 min · jiezi

关于debian:解决SpringBoot项目war部署到tomcat下无法Nacos中注册服务问题

在Spring Boot我的项目中,如果你的war包部署到Tomcat下无奈在Nacos中注册服务,可能是因为以下几个起因造成的: 配置问题:首先,你须要确保你的Nacos服务端是运行状态,并且你的Spring Boot我的项目中的Nacos客户端的配置信息是正确的。这包含Nacos服务端的IP地址、端口号等。上下文门路问题:如果你的Spring Boot我的项目在Tomcat中设置了上下文门路,可能会影响到Nacos的服务注册。你须要确保你的服务名、服务组名和命名空间都是正确的。我的项目依赖问题:你须要确保你的Spring Boot我的项目中蕴含了正确的Nacos客户端依赖。如果短少了这个依赖,你的我的项目将无奈连贯到Nacos服务端。端口抵触问题:如果你的Tomcat服务器和Nacos服务端应用了雷同的端口,也可能会导致服务注册失败。你须要确保它们应用的是不同的端口。针对以上可能的问题,你能够尝试以下解决方案: 查看Nacos服务端:首先,你须要确保你的Nacos服务端是运行状态。你能够通过拜访Nacos服务端的控制台来确认这一点。查看Nacos客户端配置:在你的Spring Boot我的项目中,你须要查看你的Nacos客户端的配置信息。确保你的服务名、服务组名和命名空间都是正确的,和你的Nacos服务端匹配。查看我的项目依赖:在你的Spring Boot我的项目中,你须要查看你的我的项目依赖。确保你的我的项目中蕴含了Nacos客户端的依赖。更改端口:如果你的Tomcat服务器和Nacos服务端应用了雷同的端口,你须要更改其中一个的端口号。你能够在你的Tomcat服务器的配置文件中更改端口号,或者在你的Nacos服务端的配置文件中更改端口号。重新部署我的项目:在解决了以上问题后,你须要重新部署你的Spring Boot我的项目。你能够先进行你的Tomcat服务器,而后重新部署你的我的项目,最初再启动你的Tomcat服务器。以上就是解决Spring Boot我的项目war部署到Tomcat下无奈在Nacos中注册服务问题的一些可能的解决方案。心愿对你有所帮忙。

February 16, 2024 · 1 min · jiezi

关于debian:nodejs发布静态https服务器

在Node.js中,你能够应用各种模块来创立和公布HTTPS动态服务器。以下是一个根本的步骤指南: 首先,你须要装置Node.js和npm(Node包管理器)。这些都能够从Node.js官方网站下载并装置。 而后,你须要创立一个新的Node.js我的项目。在你的零碎中抉择一个地位,关上终端或命令行,而后运行以下命令: mkdir my-static-servercd my-static-servernpm init -y这将创立一个新的Node.js我的项目,并生成一个 package.json 文件。 接下来,你须要装置一些须要的模块。咱们将应用 express来创立服务器,https模块来启用HTTPS,和 serve-static来提供动态文件服务。运行以下命令来装置这些模块: npm install express https serve-static而后,你须要创立一个 server.js 文件,而后在其中写入以下代码: const express = require('express');const https = require('https');const fs = require('fs');const serveStatic = require('serve-static');// Create a new express application instanceconst app = express();// Serve static files from the "public" directoryapp.use(serveStatic('public'));// Create an HTTPS servicehttps.createServer({ key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert')}, app).listen(3000, function () { console.log('HTTPS server started on port 3000');});这段代码创立了一个新的Express利用实例,并配置它来提供"public"目录下的动态文件。而后,它创立了一个HTTPS服务,应用 server.key和 server.cert文件(你须要提供这两个文件)来提供HTTPS服务,并在端口3000上启动服务。 最初,你须要将你的动态文件放入"public"目录中,而后运行以下命令来启动服务器: node server.js这样,你的HTTPS动态服务器就曾经启动了,你能够通过浏览器拜访 https://localhost:3000来查看你的动态文件。 留神,这只是一个根本的示例,你可能须要依据你的具体需要进行批改。例如,你可能须要配置更简单的HTTPS选项,或者应用其余模块来提供更简单的动态文件服务。

February 16, 2024 · 1 min · jiezi

关于debian:Mybatis的三种映射关系以及联表查询

MyBatis是一款优良的长久层框架,它反对自定义 SQL、存储过程以及高级映射。MyBatis 防止了简直所有的 JDBC 代码和手动设置参数以及获取后果集。MyBatis 能够应用简略的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects,一般的 Java 对象) 映射成数据库中的记录。 在MyBatis中,次要有三种映射关系: 一对一映射:这是最简略的关系映射。例如,一个用户信息和其身份证信息之间就是一对一的关系。一对多映射:在这种关系中,一个对象能够领有多个其余对象。例如,一个用户能够领有多个订单,这就是一对多的关系。多对多映射:在这种关系中,多个对象能够关联多个其余对象。例如,一个学生能够选修多门课程,同时一门课程也能够被多个学生选修,这就是多对多的关系。联表查问 联表查问是数据库查问的一种,它容许从两个或更多的表中抉择数据。在MyBatis中,能够通过编写SQL语句来实现联表查问。 例如,如果你要查问一个用户的所有订单,能够编写如下的SQL语句: SELECT * FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.id = #{id}在这个查问中,user和 order是两个表,通过 LEFT JOIN关键字将 user表和 order表连接起来。ON关键字前面的是连贯条件,u.id = o.user_id示意连贯 user表和 order表的规定是 user表的 id字段等于 order表的 user_id字段。WHERE关键字前面的是查问条件,u.id = #{id}示意查问 user表的 id字段等于某个值的数据。 在MyBatis的映射文件中,能够将这个SQL语句写入 <select>标签中,例如: <select id="selectUserWithOrders" resultType="User"> SELECT * FROM user u LEFT JOIN order o ON u.id = o.user_id WHERE u.id = #{id}</select>在这个映射中,id是 <select>标签的惟一标识,resultType是返回后果的类型,SQL语句是要执行的SQL。 以上就是MyBatis的三种映射关系以及联表查问的相干内容。

February 16, 2024 · 1 min · jiezi

关于debian:tomcat部署tomcat虚拟主机及tomcat多实例

Tomcat是一款开源的、轻量级的、合乎JavaEE标准的Web应用服务器。以下是对于Tomcat部署、虚拟主机以及多实例的相干信息。 Tomcat部署 部署Tomcat的步骤大抵如下: 下载Tomcat安装包。你能够从Tomcat的官方网站下载相应版本的Tomcat。解压Tomcat安装包。你能够抉择一个适合的目录,而后将下载的Tomcat压缩包解压到这个目录。配置环境变量。你须要将Tomcat的bin目录增加到零碎的PATH环境变量中,这样你就能够在命令行中间接运行Tomcat。启动Tomcat。你能够在命令行中输出 startup.sh(Linux零碎)或 startup.bat(Windows零碎)来启动Tomcat。验证Tomcat是否胜利启动。你能够在浏览器中输出 http://localhost:8080来查看Tomcat的欢送页面。Tomcat虚拟主机 Tomcat反对虚拟主机,这意味着你能够在同一个Tomcat服务器上部署多个Web利用,并且每个Web利用都有本人的域名。你能够在Tomcat的配置文件 server.xml中配置虚拟主机。例如: <Host name="www.example.com" appBase="webapps_example" unpackWARs="true" autoDeploy="true"></Host>这个配置示意创立一个新的虚拟主机,域名为 www.example.com,并且Web利用的寄存目录为 webapps_example。 Tomcat多实例 Tomcat多实例是指在同一台服务器上运行多个Tomcat实例。每个Tomcat实例都有本人的配置文件、Web利用和日志文件,互不烦扰。实现Tomcat多实例的步骤大抵如下: 复制Tomcat的装置目录。你能够复制Tomcat的装置目录,创立一个新的Tomcat实例。批改新的Tomcat实例的配置文件。你须要批改新的Tomcat实例的配置文件,例如批改 server.xml中的端口号,确保每个Tomcat实例的端口号不同。启动新的Tomcat实例。你能够在命令行中输出新的Tomcat实例的启动命令,例如 ./bin/startup.sh。以上就是对于Tomcat部署、虚拟主机以及多实例的相干信息,心愿对你有所帮忙。

February 16, 2024 · 1 min · jiezi

关于debian:dockerfile基于apline将JDK20打包成镜像

<article class=“article fmt article-content”><p>Docker是一种开源的利用容器引擎,它容许开发者将利用及其依赖打包到一个可移植的容器中,而后公布到任何风行的Linux机器或Windows机器上,也能够实现虚拟化。Dockerfile是一种由Docker读取的脚本,蕴含了一组用来构建镜像的指令。</p><p>以下是一个基于Alpine Linux并蕴含JDK 20的Dockerfile示例,这个示例假如你曾经有了一个名为jdk-20_linux-x64_bin.tar.gz的JDK 20的安装包,并且这个安装包和Dockerfile在同一目录下:</p><pre><code># 基于Alpine Linux的根底镜像FROM alpine:latest# 作者信息LABEL maintainer=“your-email@example.com”# 装置须要的软件包,包含bash(Alpine默认应用ash shell),curl和libstdc++RUN apk add –no-cache bash curl libstdc++# 创立一个目录来寄存JDKRUN mkdir /opt/jdk# 将JDK 20的安装包复制到创立的目录中COPY jdk-20_linux-x64_bin.tar.gz /opt/jdk# 切换到寄存JDK的目录WORKDIR /opt/jdk# 解压JDK 20的安装包RUN tar -zxf jdk-20_linux-x64_bin.tar.gz# 删除JDK 20的安装包RUN rm jdk-20_linux-x64_bin.tar.gz# 将JDK 20的bin目录增加到PATH环境变量中ENV PATH /opt/jdk/jdk-20/bin:$PATH# 验证JDK的装置RUN java -version && javac -version</code></pre><p>这个Dockerfile做了以下几件事:</p><ol><li>基于Alpine Linux的根底镜像创立一个新的镜像。</li><li>装置了一些必要的软件包,包含bash,curl和libstdc++。</li><li>创立了一个目录/opt/jdk来寄存JDK。</li><li>将JDK 20的安装包复制到新创建的目录中。</li><li>切换到寄存JDK的目录,而后解压JDK 20的安装包。</li><li>删除了JDK 20的安装包。</li><li>将JDK 20的bin目录增加到PATH环境变量中,这样能够在任何中央都能够间接运行Java命令。</li><li>验证了JDK的装置,通过运行java -version和javac -version命令来确认JDK是否装置胜利。</li></ol><p>实现这个Dockerfile后,你能够应用docker build命令来构建镜像,而后应用docker run命令来运行这个镜像。如果一切正常,你应该能够在容器中运行Java命令。</p><p>留神:这个Dockerfile假如你曾经有了一个名为jdk-20_linux-x64_bin.tar.gz的JDK 20的安装包,并且这个安装包和Dockerfile在同一目录下。如果你的JDK 20的安装包在其余中央,或者有其余名称,你须要批改COPY指令和tar -zxf命令中的门路和文件名。</p></article>

February 13, 2024 · 1 min · jiezi

关于debian:MyBatis关联关系映射详解

<article class=“article fmt article-content”><p>MyBatis是一种基于Java的长久层框架,它封装了JDBC操作,使得开发者无需间接操作JDBC,从而简化开发过程。在MyBatis中,关联关系映射是一个重要的个性,它使得咱们能够不便地解决数据库中的关联关系,如一对一,一对多,多对一,多对多等。</p><p>一对一关联关系通常用于两个表之间存在一对一的关系,例如,用户表和用户详情表。在MyBatis中,咱们能够通过resultMap来实现一对一的映射。首先,咱们须要在User类中定义一个UserDetail属性,而后在UserDetail类中定义与用户表对应的属性。而后在MyBatis的映射文件中,定义一个resultMap,其中association元素用于形容一对一的关联关系。</p><p>一对多关联关系用于形容一个表中的记录对应另一个表中的多条记录,例如,一个用户可能有多个订单。在MyBatis中,咱们能够通过collection元素来实现一对多的映射。首先,在User类中定义一个List属性,而后在Order类中定义与订单表对应的属性。在映射文件中,定义一个resultMap,其中collection元素用于形容一对多的关联关系。</p><p>多对一关联关系是一对多关联关系的反向关联,例如,一个订单属于一个用户。在MyBatis中,咱们能够通过association元素来实现多对一的映射。首先,在Order类中定义一个User属性,而后在User类中定义与用户表对应的属性。在映射文件中,定义一个resultMap,其中association元素用于形容多对一的关联关系。</p><p>多对多关联关系用于形容两个表中的记录互相对应,例如,一个学生能够选多门课程,一个课程能够被多个学生抉择。在MyBatis中,咱们通常通过两头表来实现多对多的映射。首先,在Student类和Course类中都定义一个List属性,而后在映射文件中,定义两个resultMap,一个用于形容学生和两头表的关联关系,另一个用于形容课程和两头表的关联关系。</p><p>以上就是MyBatis关联关系映射的一些基本知识,实际操作中还须要依据具体的业务需要进行调整和优化。总的来说,MyBatis的关联关系映射性能提供了一种灵便而高效的形式来解决数据库中的关联关系,大大提高了开发的效率和代码的可读性。</p></article>

February 13, 2024 · 1 min · jiezi

关于debian:JavaScript判断数组是否包含某个值的6种方法

<article class=“article fmt article-content”><p>在JavaScript中,有多种办法能够用来判断数组是否蕴含某个值。以下是六种常见的办法:</p><ol><li><code>includes()</code>办法:这是一种十分间接的办法。<code>includes()</code>办法会查看数组是否蕴含特定的元素,并相应地返回true或false。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];console.log(array.includes(3)); // 输入:trueconsole.log(array.includes(6)); // 输入:false</code></pre><ol start=“2”><li><code>indexOf()</code>办法:<code>indexOf()</code>办法返回数组中第一个找到的元素的索引,如果没有找到,它会返回-1。因而,如果返回的索引大于或等于0,那么数组就蕴含该元素。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];console.log(array.indexOf(3) >= 0); // 输入:trueconsole.log(array.indexOf(6) >= 0); // 输入:false</code></pre><ol start=“3”><li><code>find()</code>办法:<code>find()</code>办法返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];console.log(array.find(element => element === 3) !== undefined); // 输入:trueconsole.log(array.find(element => element === 6) !== undefined); // 输入:false</code></pre><ol start=“4”><li><code>some()</code>办法:<code>some()</code>办法测试数组中是否有元素通过了提供的函数测试。它返回一个Boolean值。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];console.log(array.some(element => element === 3)); // 输入:trueconsole.log(array.some(element => element === 6)); // 输入:false</code></pre><ol start=“5”><li><code>filter()</code>办法:<code>filter()</code>办法创立一个新数组,新数组中的元素是通过查看指定数组中符合条件的所有元素。咱们能够查看新数组的长度,如果长度大于0,那么原数组就蕴含该元素。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];console.log(array.filter(element => element === 3).length > 0); // 输入:trueconsole.log(array.filter(element => element === 6).length > 0); // 输入:false</code></pre><ol start=“6”><li><code>forEach()</code>办法:<code>forEach()</code>办法对数组的每个元素执行一次给定的函数。咱们能够在函数中查看每个元素,如果找到匹配的元素,咱们能够设置一个标记为true。例如:</li></ol><pre><code>let array = [1, 2, 3, 4, 5];let flag = false;array.forEach(element => { if (element === 3) { flag = true; }});console.log(flag); // 输入:true</code></pre><p>以上就是JavaScript中判断数组是否蕴含某个值的六种办法,每种办法都有其实用的场景,能够依据具体需要抉择应用。</p></article> ...

February 13, 2024 · 1 min · jiezi

关于debian:springmvc开启异步请求报错Java-code-using-the-Servlet-API-or

<article class=“article fmt article-content”><p>在Spring MVC中,异步解决是一个十分实用的个性。它容许咱们在解决简单的业务逻辑或期待其余资源时,开释服务器资源,进步零碎的吞吐量。然而,如果你在应用这个个性时遇到了谬误,可能是因为你没有在Servlet或者Spring的配置中启用异步反对。</p><p>在Servlet 3.0及以上版本中,提供了异步解决的反对。你能够通过在web.xml中增加 <code><async-supported>true</async-supported></code>来开启异步反对,如下:</p><pre><code><servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported></servlet></code></pre><p>如果你应用的是Spring Boot,那么你能够在Spring的配置文件中增加 <code>spring.mvc.async.request-timeout</code>和 <code>spring.mvc.async.request-timeout</code>来开启异步反对,如下:</p><pre><code>spring.mvc.async.request-timeout=5000spring.mvc.async.request-timeout=5000</code></pre><p>当然,你还须要在你的Controller中返回一个 <code>Callable</code>或者 <code>DeferredResult</code>对象,以便Spring MVC晓得这是一个异步的申请。例如:</p><pre><code>@RequestMapping("/async")@ResponseBodypublic Callable<String> async() { return new Callable<String>() { @Override public String call() throws Exception { // 这里是你的异步逻辑 return “异步申请后果”; } };}</code></pre><p>以上就是在Spring MVC中开启异步申请的办法。如果你依照以上步骤操作还是遇到了问题,那么可能是其余起因导致的,比方你的Servlet容器不反对异步解决,或者你的异步逻辑有问题。这时候,你可能须要查看更具体的错误信息,或者寻求专业人士的帮忙。</p></article>

February 13, 2024 · 1 min · jiezi

关于debian:Vite配置环境变量以及反向代理请求

<article class=“article fmt article-content”><p>在Vite中,咱们能够通过两种形式配置环境变量,一是在我的项目根目录下创立.env文件,二是间接在vite.config.js文件中设置。</p><ol><li>.env文件配置环境变量</li></ol><p>在我的项目的根目录下创立.env文件,能够在其中定义环境变量。Vite有一个内置的个性,即能够依据不同的模式加载不同的.env文件。例如,当你在命令行中运行 <code>vite –mode production</code>时,Vite会加载.env.production文件。在.env文件中,你能够定义如下环境变量:</p><pre><code>VITE_APP_TITLE=My App</code></pre><p>而后,你就能够在你的源代码中通过 <code>import.meta.env.VITE_APP_TITLE</code>来拜访这个环境变量。</p><ol start=“2”><li>vite.config.js文件中配置环境变量</li></ol><p>除了在.env文件中定义环境变量外,你还能够在vite.config.js文件中定义环境变量。例如:</p><pre><code>export default defineConfig({ plugins: [vue()], define: { ‘process.env.VITE_APP_TITLE’: ‘My App’, },});</code></pre><p>而后,你就能够在你的源代码中通过 <code>process.env.VITE_APP_TITLE</code>来拜访这个环境变量。</p><p>接下来,咱们来看看如何在Vite中配置反向代理申请。Vite应用http-proxy模块提供代理反对,咱们能够在vite.config.js文件中配置代理规定。例如:</p><pre><code>export default defineConfig({ plugins: [vue()], server: { proxy: { ‘/api’: { target: ‘http://localhost:5000’, changeOrigin: true, rewrite: (path) => path.replace(/^/api/, ‘’) }, }, },});</code></pre><p>在上述配置中,咱们设置了一个代理规定,当拜访门路以/api结尾时,会被代理到http://localhost:5000,并且门路中的/api会被去掉。例如,当你拜访/api/users时,实际上拜访的是http://localhost:5000/users。</p><p>以上就是在Vite中配置环境变量以及反向代理申请的办法。心愿对你有所帮忙。</p></article>

February 13, 2024 · 1 min · jiezi

关于debian:debian10-buster-可能要停止维护了

FROM python:3.10-busterRUN (echo "deb http://mirrors.cloud.aliyuncs.com/debian/ buster main non-free contrib" > /etc/apt/sources.list) RUN (apt-get update) && (apt-get upgrade -y)RUN (apt-get install -y sysstat vim wget httpie netcat htop curl) WORKDIR /codeRUN /usr/local/bin/python -m pip install --upgrade pip -i http://mirrors.cloud.aliyuncs.com/pypi/simple/ --trusted-host mirrors.cloud.aliyuncs.comCOPY requirements-prd.txt /code/RUN pip install -r requirements-prd.txt -i http://mirrors.cloud.aliyuncs.com/pypi/simple/ --trusted-host mirrors.cloud.aliyuncs.comCOPY config.yaml /code/COPY . /code/ENV RUN_MODE=prd下面脚本,报错如下 Get:36 http://mirrors.cloud.aliyuncs.com/debian buster/main amd64 vim amd64 2:8.1.0875-5+deb10u2 [1281 kB]Fetched 20.6 MB in 28s (725 kB/s)[91mE: Failed to fetch http://mirrors.cloud.aliyuncs.com/debian/pool/main/g/gsasl/libgsasl7_1.8.0-8+b2_amd64.deb 404 Not Found [IP: 100.100.2.148 80]E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?然而看来一下官网又不是 ...

September 19, 2023 · 1 min · jiezi

关于debian:aliyun-cicddebian12把软件源换成-aliyun-内网源

aliyun 内网 FROM python:3.11.5-bookworm# 为什么要删除这些货色? 参考:[为什么我把 debian12 的 apt 源替换为上海交大之后,还会连贯 debian 官网源?](https://segmentfault.com/q/1010000044193707)RUN rm -rf /etc/apt/sources.list.d/*RUN sed -i 's/deb.debian.org/mirrors.cloud.aliyuncs.com/g' /etc/apt/sources.list.d/debian.sources RUN (apt-get update) && (apt-get upgrade -y)如果是外网,间接用中科大吧,速度更快 FROM python:3.11.5-bookworm# 为什么要删除这些货色? 参考:[为什么我把 debian12 的 apt 源替换为上海交大之后,还会连贯 debian 官网源?](https://segmentfault.com/q/1010000044193707)RUN rm -rf /etc/apt/sources.list.d/*RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources RUN (apt-get update) && (apt-get upgrade -y)

September 19, 2023 · 1 min · jiezi

关于debian:Debian11安装Homebrew

Homebrew 是 macOS 上的弱小的包管理工具,能够高效治理各种软件包。Homebrew 由 Max Howell 从 2009 年开始开发并在 GitHub 上开源,最后在 macOS 用户中和 Ruby 社区中失去宽泛应用,2019 年 Homebrew 的子项目 Linuxbrew 被合并进了 Homebrew,使得它可能在 Linux 和 WSL 上运行。 gpg is not available. Either install it or run with PRYSM_ALLOW_UNVERIFIED_BINARIES=1. 1. 先装Gitapt-get install git 2. 创立目录brew不能应用root帐号装置, 须要提前创立好目录,批改权限为以后登录帐号, 将以下脚本中customer改成本人应用的其余非root帐号 # 创立目录mkdir /home/linuxbrew/# 批改权限, customer改成本人的其余非root帐号chown customer:customer /home/linuxbrew3. 执行上面命令前把open files数要开大点, 不然后续可能报错参考步骤【二、批改系统配置】https://segmentfault.com/a/1190000042441329 能够解决示例报错:Error: Too many open files @ rb_sysopen - /home/linuxbrew/.linuxbrew/Cellar/systemd/253/lib/systemd/systemd-network-generator 4. 装置/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" ...

June 20, 2023 · 1 min · jiezi

关于debian:Debian-Ubuntu-上安装-Go-开发环境

Go 也被称为 Golang,它是由 Robert Griesemer、Rob Pike 和 Ken Thompson 在谷歌设计的一种收费的开源编程语言。因为它的简略性、效率和并发性,它是许多开发人员眼中的苹果。它的并发个性意味着它可能同时运行多个工作。 它次要用于后端目标,如服务器端编程。它次要用于游戏和云原生开发、命令行工具的开发、数据迷信等等。 在本指南中,咱们将逐渐介绍如何在 Ubuntu Linux 上装置 Go 开发环境。 在 Linux 中装置 Go 有三种次要形式 应用官网二进制包装置应用 APT 包管理器装置 (Debian / Ubuntu)应用 Snap 包管理器装置应用官网二进制包装置 Go这是最受欢迎的装置办法,因为它提供了最新版本的 Go,并且实用于所有 Linux 发行版。 Step 1: 更新零碎登录到服务器并更新本地包索引 $ sudo apt updateStep 2: 下载 Go 二进制包应用 wget 命令下载最新的 tarball 文件,在撰写本文时,Go 的最新版本是 v1.20.1 $ wget https://go.dev/dl/go1.20.1.linux-amd64.tar.gz Step 3: 解压文件并将其移至 /usr/local 目录应用如下命令,把文件解压到 /usr/local 目录 $ sudo tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz-C 选项解压文件到 /usr/local 目录,查看 /usr/local/go 目录的内容 ...

May 14, 2023 · 1 min · jiezi

关于debian:如何在-Debian-10-系统上安装-GitLab

GitLab 是一个收费的开源前端 Git 存储库,具备 Wiki 和问题跟踪性能。它容许你在本人的服务器上托管 Git 存储库,并设置 DevOps 平台。 在本指南中,咱们将在 Debian 10 (Buster )零碎上装置 GitLab CE (Community Edition)。 必备条件An instance of Debian 10 server with SSH access.Minimum of 8 GB RAM20GB of hard disk spaceA valid domain name pointed to the IP address of the server.User with sudo rights(1) 更新零碎应用 SSH 拜访您的 Debian 服务器,更新零碎上的包列表 $ sudo apt update(2) 装置 GitLab 依赖更新实现后,装置所需的依赖,如下所示 $ sudo apt install ca-certificates curl openssh-server postfix ...

January 11, 2023 · 2 min · jiezi

关于debian:如何升级-Debian-10-Buster-到-Debian-11-Bullseye

通过近两年的开发,代号为 bullseye 的 Debian 11 于 8 月 10 日公布。这是一个稳固的版本,将像其余任何 Debian 稳固版本一样在将来 5 年内失去反对。Debian 11 带来了次要的软件改良和其余加强,包含以下内容: Linux 内核 5.10 LTS。这是对 Debian 10 Buster 应用的内核 4.19 的改良。新版本的桌面环境包含 GNOME 3.38、MATE 1.24、KDE Plasma 5.20、LXDE 11、LXQt 0.16 和 Xfce 4.16。一个被称为家园新的主题,它的灵感来自于一种诞生于德国的叫做包豪斯静止的艺术风格。超过 40,000 个软件包有了更新的版本。应用 Debian 11,您将失去 liboffice 7.0、Apache 2.4.48、MariaDB 10.5、Python 3.9.1 和 PostgreSQL 13 等。反对 CUPS 以及无驱打印。反对 exfat 文件系统。反对多架构:64-bit & 32-bit PC, 64-bit ARM (Arch 64. IBM System Z, POWER Processors, EABI ARM, 64-bit MIPS以上只是对 Debian 11 所提供性能的概述。当初让咱们关注如何从 Debian 10 降级到 Debian 11。 ...

January 4, 2023 · 2 min · jiezi

关于debian:如何在-Debian-11-系统上设置静态IP地址

当咱们在装置 Debian Linux 时,在装置过程中它试图从调制解调器(或 DHCP 服务器)取得 DHCP ip 地址(如果可用的话)。然而在您的零碎上总是倡议有一个动态 IP 地址。动态 IP 地址的次要益处是,它将在整个从新疏导过程中放弃长久。 在本指南中,咱们将演示如何在 Debian 11 (Bullseye) 上设置动态 ip 地址。 在 Debian 11 中,咱们能够通过 GUI (图形用户界面) 或命令行 (cli) 设置动态 ip 地址。 通过 GUI 设置动态 IP 地址登录到您的 Debian Desktop 环境, 抉择菜单 Settings –> Choose Network 点击 Wired Settings,而后咱们会看到上面的窗口 *留神: 如果要禁用 IPv6,请进入 IPv6 Tab 页并抉择 Disable 选项 单击 IPv4 Tab 页 下面的窗口显示曾经配置了主动 DHCP,因而要配置动态 IP 的话,请抉择 Manual,而后指定 IP 地址、子网掩码、网关和 dns 服务器 IP 等详细信息。 ...

January 3, 2023 · 2 min · jiezi

关于debian:如何在-Debian-11上设置-Rsyslog-服务器

日志文件对于探测和排除谬误十分重要。系统管理员首先要仔细检查这些文件,以便放大谬误的可能起因,并提出解决方案。在具备数十或数百台服务器和其余设施的基础设施中,治理日志文件可能是一个挑战。这就是 Rsyslog 的用武之地。 Rsyslog是一种开源日志记录程序,它能够不便地将日志文件转发到IP网络中的集中日志服务器。通过集中式日志记录,管理员能够轻松地从一个中心点监督多个零碎的日志文件。在这篇文章中,咱们将疏导您在Debian11上装置和配置 Rsyslog 服务器。 试验设施为了演示如何应用 Rsyslog 将日志文件从客户机零碎发送到 Rsyslog 服务器,咱们将进行一个简略的试验筹备,如下所示: Rsyslog server: Debian 11 IP: 192.168.1.151Rsyslog client: Ubuntu 20.04 IP: 10.20.0.170(1) 服务端配置如前所述,Rsyslog 工作在客户机 -> 服务器模型中,在 Debian 11 上,Rsyslog 是默认装置的。如果因为某种原因 Rsyslog 不存在,您能够应用该命令装置它 $ sudo apt install -y rsyslog装置实现后,您能够如下所示查看其运行状态 $ sudo systemctl status rsyslog 接下来,咱们将配置 rsyslog 以在服务器模式下运行,编辑配置文件 /etc/rsyslog.conf $ sudo vi /etc/rsyslog.conf勾销正文上面容许从近程客户端接管 UDP 和 TCP syslog 日志的行 # provides UDP syslog receptionmodule(load="imudp")input(type="imudp" port="514")# provides TCP syslog receptionmodule(load="imtcp")input(type="imtcp" port="514") 粘贴以下行定义日志模板,Rsyslog 守护过程将应用此模板存储来自客户机传入的日志。 $template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"*.* ?remote-incoming-logs ...

January 1, 2023 · 2 min · jiezi

关于debian:如何在-Debian-11上安装-Docker-Engine

Docker 是一个提供容器运行时环境的开放平台工具。在 docker 的帮忙下,开发人员能够在 on-prem 或公共云等任何中央以容器构建、公布和运行他们的代码。Docker 利用操作系统级虚拟化来运行容器。装置 docker 并运行容器的主机称为 docker 引擎。 在这篇文章中,咱们将介绍如何在 Debian 11 (Bullseye)上装置 Docker Engine 社区版。 必备条件Minimal Debian 11 Installation64-bit SystemStable Internet ConnectionUser with sudo rights(1) 更新包索引并装置依赖项登录 Debian 11 零碎,关上终端,执行以下命令更新包索引 $ sudo apt update当初,运行上面的 apt 命令来装置 docker 依赖项 $ sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y(2) 配置 Docker 存储库要配置 docker 存储库,首先让咱们通过上面的 curl 命令增加 docker 的 GPG 密钥 $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg执行上面的 echo 命令配置正式的 docker 存储库 ...

December 27, 2022 · 1 min · jiezi

关于debian:如何在-Debian-11-上安装-Apache-Tomcat

Apache Tomcat 是一个收费和开源的 web 服务器,宽泛用于托管用 Java 编程语言编写的 web 应用程序。它是 Jakarta Servlet 和 Jakarta 表达式语言 (以前是 Java Servlet 和 Java 表达式语言) 和其余 Java websocket 技术的实现。 Apache Tomcat 并不齐全是相似 Apache 或 Nginx 意义上的 web 服务器。它是一个应用服务器,提供一个纯 Java HTTP 生态系统和基于 Java 的逻辑来服务 Java 代码。 在本指南中,咱们将学习如何在 Debian 11 (Bullseye)上逐渐装置 Apache Tomcat。 (1) 装置 OpenJDK因为 Tomcat 是建设在 Java 之上的,所以第一步就是装置 OpenJDK 提供的 Java。咱们将装置最新的 LTS 版本 OpenJDK 11 要装置 OpenJDK 11,请更新软件包列表 $ sudo apt update而后执行以下命令装置 OpenJDK 11 ...

December 14, 2022 · 2 min · jiezi

关于debian:debian与Ubuntu系列的桌面安装与卸载

背景最近发现应用河汉麒麟操作系统,抉择飞腾版本的Debian/Ubuntu系列的零碎,发现是带有桌面的,然而机器作为服务器应用,只须要带有终端能够接上显示器就行,不须要为没有用到的服务买单 上面采纳Ubuntu22.04操作系统进行桌面的装置与卸载进行演示 桌面装置在Ubuntu官方网站下载一个服务器版本的镜像 零碎装置实现之后进入零碎,发现只有一个黑黑的终端目前大多数支流linux所采纳的桌面零碎都是gnome,其余一些像Kubuntu这种自带kde桌面的零碎也有一些 当初开始装置桌面,这条命令执行的时候会下载一大堆货色,次要是gnome-*和xserver-xorg-*这些的,Ubuntu的桌面版比服务器版本多执行了这一条命令,外加上一些桌面UI的调柔美化 $ sudo apt install gnome// --snip2 upgraded, 1017 newly installed, 0 to remove and 44 not upgraded.Need to get 572 MB of archives.After this operation, 1894 MB of additional disk space will be used.Do you want to continue? [Y/n]装置实现之后重启机器,发现有输出明码的界面弹出来,最初桌面长这个样子,尽管是Ubuntu22零碎,然而零碎壁纸是debian的,鼠标挪动的时候发现是一个正方形框框,看得出来Ubuntu的桌面版应该还是做了很多优化与调整工作的执行htop命令,依照内存应用大小倒排,发现gnome桌面所应用的资源还是蛮多的 所以如果一台机器是作为服务器应用,就把桌面卸载了吧,把资源留给更重要的程序 卸载执行如下命令,该条命令会匹配gnome*和gnome-shell软件,并且卸载 $ sudo apt purge gnome gnome-shell如果下面命令执行失败,须要查看具体装置了哪些包,具体去指定包名称卸载 $ sudo dpkg -l |grep gnome个别执行如下命令,界面根本就卸载完了 $ sudo apt purge gnome-shell卸载显示服务器(桌面环境如Gnome,KDE, MATE会应用显示服务器与内核交互,xorg接管键盘鼠标输出和负责屏幕输入窗口的挪动,窗口题目的款式等等) $ sudo apt purge xserver-xorg最初清理无用软件包 ...

November 28, 2022 · 1 min · jiezi

关于debian:使用Python查询国内-COVID19-疫情

有时咱们只是想要一个速的工具来通知以后疫情的状况,咱们只须要起码的数据。 应用Python语言和tkinter图形化显示数据。首先,咱们应用 Tkinter 库使咱们的脚本能够图形化显示。应用 requests 库从 丁香园 获取数据。而后咱们将在这种状况下显示咱们须要的数据 “以后确诊人数”,“总确诊人数”。需要和装置ssh客户端为:MobaXterm,因为它反对X11-Forwarding零碎:Centos8 MinimalPython版本:Python3.6.8须要用到的库:requests, json, tkinter, time上面来装置xorg,用来在近程终端中关上图形化界面,装置python3-tkinter来创立GUI界面:[root@localhost data]# yum -y install xorg-x11-xauth xorg-x11-utils python3-tkinter上脚本上面创立python脚本:[root@localhost data]# touch gui.py[root@localhost data]# chmod +x gui.py[root@localhost data]# vim gui.py !/usr/bin/python3导入time, requests, json, tkinter库import timeimport requestsimport jsonfrom tkinter import * 创立一个窗口window = Tk() 窗口题目为“Covid-19”window.title("Covid-19") 窗口大小为600px * 130pxwindow.geometry('600x130') 创立label 1,并创立初始信息lbl = Label(window, text = "The number of confirmed cases in China: ....") label窗格占用第1列,第1行,靠左对齐。lbl.grid(column = 1, row = 0, sticky = W) 创立label 2,并创立初始信息lbl1 = Label(window, text = "Cumulative number of confirmed cases in China: ....")lbl1.grid(column = 1, row = 1, sticky = W) ...

November 24, 2022 · 1 min · jiezi

关于debian:如何在-Debian-11-系统中安装-VirtualBox

VirtualBox 是一款用于桌面级的收费开源虚拟化软件。它实用于 Linux 和 Windows 操作系统。VirtualBox 容许创立多个不同操作系统的虚拟机。通过创立虚拟机,在笔记本电脑或桌面电脑上设置测试环境。 必备条件Pre-Installed Debian 11User with sudo rightsInternet connectivity增加 VirtualBox 存储库VirtualBox 软件包在默认的存储库中不可用,所以咱们必须增加它的官网存储库。 登录 Debian 11 零碎,关上终端,执行以下命令导入 Virtualbox 存储库的 gpg 密钥。 $ sudo apt install curl wget gnupg2 lsb-release -y$ curl -fsSL https://www.virtualbox.org/download/oracle_vbox_2016.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/vbox.gpg$ curl -fsSL https://www.virtualbox.org/download/oracle_vbox.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/oracle_vbox.gpg当初,运行上面的命令增加存储库 $ echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list应用 apt 命令装置 VirtualBox运行以下 apt 命令装置最新的 VirtualBox $ sudo apt update$ sudo apt install linux-headers-$(uname -r) dkms -y$ sudo apt install virtualbox-6.1 -y启动 VirtualBox如下所示,在 Activity 中搜寻 virtualbox ...

November 3, 2022 · 1 min · jiezi

关于debian:如何安装-Debian-11-Bullseye-图文教程

Debian 终于公布了稳固的 OS 版本 11,它的代号是 bullseye。Debian 11 是一个 LTS 版本,这意味着咱们将失去更新和反对直到 2025 年。它推出了全新的主题《家园》和新的 Linux 内核 5.10。除此之外,它还反对 32 位零碎和 exFat 文件系统。Debian 11 的另一个显著个性是,它更新了桌面环境的版本,如 GNOME 3.38,KDE plasma 5.20, Xfce 4.16 和其余零碎包的更新。 零碎要求2 GB RAM or moreDual Core Processor (or higher)15 GB hard disk spaceBootable Media (USB / DVD)Stable Internet Connection (optional)废话不多说,让咱们深刻理解 Debian 11 的装置步骤 (1) 下载 Debian 11 ISO 文件请应用以下 Debian 官方网站下载 iso 文件 Download Debian 11 ISO File 文件下载实现,而后将其刻录到 USB 闪存驱动器或 DVD,使其可疏导,咱们称之为装置介质。 ...

October 17, 2022 · 2 min · jiezi

关于debian:Centos8-安装并使用Ansible一

Ansible 是一个开源的配置管理工具,咱们用于自动化工作、部署应用程序。应用 Ansible,您能够主动执行日常工作,例如更新零碎、装置软件、和配置服务。本文将介绍Ansible根本信息、为什么抉择 Ansible 以及如何装置它。根本信息学习之前,咱们先理解一下罕用Ansible术语:节点信息Control node: 任何装置了 Ansible 的主机。Ansible 管制节点次要用于在托管主机上运行工作。Managed nodes: 被Ansible治理的主机Inventory: 受控节点的列表。ansible.cfg: Ansible的配置文件模块模块是 Ansible 以执行常见工作的代码块,Ansible中有丰盛的模块。Task和PlaybookTask是 Ansible 在受控主机上执行的操作。还能够应用长期命令(AD-HOC)执行单个工作。Ansible playbook 是用 YAML 编写工作列表。为什么应用Ansible?无需装置agent与 Chef 和 Puppet 不同,Ansible 是无代理的,这意味着你不用放心在受控节点上装置或配置任何包。因为 Ansible 不会在受控节点上装置任何软件或运行守护程序,因而对于如何降级 Ansible 毫无疑问。Ansible 应用 SSH 进行通信Ansible 默认应用 SSH 协定在管制节点和受控节点之间进行通信。而后,Ansible 能够应用 SFTP 与其托管节点进行平安通信,以实现平安的文件传输。Ansible 并行执行工作Ansible 与受控节点并行通信,使其可能更快地运行自动化工作。默认状况下,forks 值为 5,但能够在配置文件中更改此值。装置Ansible我创立了一个名为 Master 的管制节点和四个受控节点(node1、node2、node3 和 node4),它们都运行Centos8。Ansible 能够装置在任何机器上,但对管制节点有要求。管制节点应装置 Python 2 (2.7) 或 Python 3(3.5 或更高版本)。不反对 Windows 管制节点。上面在Master管制节点中应用dnf包管理器来装置ansible:[[email protected] ~]# yum -y install epel-release && yum -y install ansible能够检查一下已装置的 Ansible 版本:[[email protected] ~]# ansible --versionansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Oct 7 2019, 17:58:22) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] ...

October 16, 2022 · 1 min · jiezi

关于debian:debian11系统初始化

本文形容下debian11的初始化工作。 首先,咱们应用普通用户登录到debian,而后应用su -命令来切到root用户。留神: 肯定要是su -,而不是su $ su -设置IP地址应用root登录后,批改/etc/network/interfaces文件: # The primary network interface# 正文掉这行,并记录这个相似于 ens192 的关键字# allow-hotplug ens192 # 正文点这行同时#iface ens192 inet dhcp# 退出以下行,留神ens192是咱们从下面复制下来的,不同的电脑不一样auto ens192iface ens192 inet static# 以下请依据本人的理论状况设置address 192.168.1.17netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 192.168.1.1编辑后退出,而后执行:systemctl restart networking.service使配置失效. 装置sudo默认debian11并没有装置sudo,装置过程如下: 更新源如果操作系统是以CD形式装置的,那么CD会默认成为软件源(这在离线的网络环境中是必要的),而以后咱们的服务器有网络环境,同时装置完操作系统后,CD曾经弹出,所以此时须要勾销掉软件源: $ nano /etc/apt/sources.list # 正文掉以cd rom开始的源# deb cdrom:[Debian GNU/Linux 11.4.0 _Bullseye_ - Official amd64 DVD Binary-1 2># deb cdrom:[Debian GNU/Linux 11.4.0 _Bullseye_ - Official amd64 DVD Binary-1 2>而后增加一些国内的官网源的中的华为镜像,最终文件如下: # deb cdrom:[Debian GNU/Linux 11.4.0 _Bullseye_ - Official amd64 DVD Binary-1 20220709-10:33]/ bullseye contrib main# deb cdrom:[Debian GNU/Linux 11.4.0 _Bullseye_ - Official amd64 DVD Binary-1 20220709-10:33]/ bullseye contrib main# huaweideb https://mirrors.huaweicloud.com/debian/ bullseye main contrib non-freedeb-src https://mirrors.huaweicloud.com/debian/ bullseye main contrib non-freedeb https://mirrors.huaweicloud.com/debian/ bullseye-updates main contrib non-freedeb-src https://mirrors.huaweicloud.com/debian/ bullseye-updates main contrib non-freedeb https://mirrors.huaweicloud.com/debian/ bullseye-backports main contrib non-freedeb-src https://mirrors.huaweicloud.com/debian/ bullseye-backports main contrib non-freedeb https://mirrors.huaweicloud.com/debian-security bullseye-security main contrib non-freedeb-src https://mirrors.huaweicloud.com/debian-security bullseye-security main contrib non-free#deb http://security.debian.org/debian-security bullseye-security main contrib#deb-src http://security.debian.org/debian-security bullseye-security main contrib# bullseye-updates, to get updates before a point release is made;# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports# A network mirror was not selected during install. The following entries# are provided as examples, but you should amend them as appropriate# for your mirror of choice.## deb http://deb.debian.org/debian/ bullseye-updates main contrib# deb-src http://deb.debian.org/debian/ bullseye-updates main contrib除此以外,你还能够将上述镜像中的mirrors.huaweicloud.com替换为以下地址的任意关键字: ...

September 5, 2022 · 1 min · jiezi

关于debian:ebian11安装docker-desktop从入门到放弃

近期因为某些自动测试的须要,须要装置一个docker服务器环境。查看docker的官方站点,发现无论是windows还是macos或liunx,以后官方站点都举荐装置docker desktop。于是,便有了这篇文章。 debian装置debian的装置并不是本文的重点,装置过程略。在进行UI抉择时,本文抉择是的KDE,起因是docker官网讲Gnome不反对一种图标,所以须要装置扩大。我想应该KDE反对的会更完满一些,所以坑应该会少一些吧。 增加sudo默认的用户装置后,因为并不属于系统管理员,所以是无奈装置任何软件的。此时,咱们此须要将咱们本人定义的非root用户增加到sudoer中。当然了,或者你能够间接应用 root 来操作,我想应该也是能够了。为了符合国际平安常规,在此本文采纳将普通用户增加到sudoer中的形式。 首先咱们关上控制台: 而后输出 su - 命令,输出root明码: su - 命令示意:切换到root用户的同时应用以后用户的环境,避免切到root后因为$path的设置问题导致一些命令无奈找到的谬误。比方:bash: usermod: command not found 接下来,咱们把以后用户增加到sudo这个用户组中: $ usermod -a -G sudo <username>在一些文章中呈现 <xxx>,示意应该把 <xxx> 中的内容替换为本人的理论值,比方本文要增加的用户名为 panjie,则须要将上述命令替换为 usermod -a -G sudo panjie接下来,咱们登记以后用户,抉择从新进行登录。 此时以后用户曾经是sudo用户了。 设置代理(非必须)设置apt代理请参考:https://www.serverlab.ca/tuto... 装置QEMU接下来,咱们按QEMU官网给出的计划来进行装置QEMU相干包: $ sudo apt install qemu qemu-utils qemu-system-x86 qemu-system-gui须要留神的是:如果你也是应用的DVD计划进行的计划,则可能碰到:Media change: please insert thid disc labeled 'Debin GNU/xxxx' xxx in the driver '/media/cdrom/' and press [Enter].的提醒。 解决方案有二: 从新将零碎DVD盘进行挂载(这应该不是惟一的装置形式)后从新执行上述命令实现QEMU的装置,而后按本文勾销CD源的操作操作持续操作。这也是本文在理论装置中应用的形式。按本文的勾销CD源的操作操作,从新执行上述命令实现QEMU的装置。该形式原则上应该是没有问题的,但未验证。装置实现后,执行:qemu-img --help,呈现提示信息则阐明装置胜利(装置过程未报错,但提醒找不到qemu-img找不到的话,能够尝试登记后再登录试试)。 ...

August 29, 2022 · 1 min · jiezi

关于debian:20-年的-Debian-开发者被排挤出项目操作系统-火龙-被质疑抄袭Swift-56-发布-思否周刊

40s 新闻速递全宇宙首个中文编写的操作系统 “火龙” 被质疑剽窃下载 1 款软件捆绑 6 个!下载平台 “高速下载” 竟为首恶微信 PC 版 3.6.0 正式公布:反对增加好友性能 苹果:开发者向 App Store 提交的利用必须应用 Xcode 13 创立UI 设计软件 Figma 封停大疆等公司账号微信、抖音、淘宝、微博等头部 App 已容许用户一键敞开 “个性化举荐 ”Android 13 官宣:5 月 11 日见macOS 12.3 beta 版本彻底删除 Python 2 代码20 年的 Debian 开发者被排斥出我的项目GPT-3 公布新性能:反对编辑和插入Swift 5.6 公布IntelliJ IDEA v2021.3.3 公布Firefox 98.0.1 公布Day.js 1.11.0 公布行业资讯全宇宙首个中文编写的操作系统 “火龙” 被质疑剽窃此前有个号称全宇宙首个中文编写的操作系统“火龙”,说是采纳借鉴的甲语言、乙语言编写,界面也是 Win11 格调。不过也有人发现了端倪,指出这个所谓的全中文开发的操作系统不过是盗用了日本人川合秀实《30 天自制操作系统》里的“纸娃娃操作系统”。 下载 1 款软件捆绑 6 个!下载平台 “高速下载” 竟为首恶央视 315 晚会曝光了软件捆绑问题,波及 PC6 下载网站、桔梗下载站、腾牛网、Zol 软件下载等平台,以及马鞍山百助网络科技有限公司。用户在这些平台下载软件时,个别有两种形式,间接下载和通过下载器下载,即所谓的“高速下载”,但其实速度上没有任何区别,实则诱导用户通过下载器下载更多的捆绑软件。据理解,用户每通过下载器下载一款软件,软件方会领取百助公司大概 0.3 元到 1.8 元不等的费用,百助公司凭借此此年营收超 12 亿元。 ...

March 20, 2022 · 2 min · jiezi

关于debian:阿里云镜像切换阿里巴巴开源镜像站镜像Debian镜像

一、参考链接阿里巴巴开源镜像站:阿里巴巴开源镜像站阿里镜像站—Deepin 镜像:Debian镜像 二、Debian简介Debian GNU/Linux ,是一个操作系统及自由软件的发行版,由一群被迫付出工夫和精力的用户来保护并更新。它附带了超过 59000 个软件包,这些事后编译好的软件被打包成一种良好的格局以便于用户装置和应用。下载地址: https://mirrors.aliyun.com/debian/ https://mirrors.aliyun.com/debian-archive/ 三、更换阿里Debian镜像源1、登录Debian操作系统 2、关上终端窗口 3、测试网络连通性 4、备份零碎源镜像文件 5、编辑source.list配置文件编辑/etc/apt/sources.list文件(须要应用sudo), 在文件最后面增加以下条目(操作前请做好相应备份debian 11.x (bullseye) root@debian:/etc/apt# cat sources.listdeb http://mirrors.aliyun.com/debian/ bullseye main non-free contribdeb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contribdeb http://mirrors.aliyun.com/debian-security/ bullseye-security maindeb-src http://mirrors.aliyun.com/debian-security/ bullseye-security maindeb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contribdeb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contribdeb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contribdeb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib 6、运行命令生成缓存apt-get clean - 删除所有已下载的包文件apt-get update - 取回更新的软件包列表信息apt-get upgrade - 进行一次降级root@debian:/etc/apt# apt-get cleanroot@debian:/etc/apt# apt-get update获取:1 http://mirrors.aliyun.com/debian bullseye InRelease [116 kB]获取:2 http://mirrors.aliyun.com/debian-security bullseye-security InRelease [44.1 kB]获取:3 http://mirrors.aliyun.com/debian bullseye-updates InRelease [39.4 kB]获取:4 http://mirrors.aliyun.com/debian bullseye-backports InRelease [43.7 kB]获取:5 http://mirrors.aliyun.com/debian bullseye/main Sources [8,617 kB]获取:6 http://mirrors.aliyun.com/debian bullseye/contrib Sources [43.0 kB]获取:7 http://mirrors.aliyun.com/debian bullseye/non-free Sources [80.5 kB]获取:8 http://mirrors.aliyun.com/debian bullseye/main amd64 Packages [8,180 kB]获取:9 http://mirrors.aliyun.com/debian bullseye/main Translation-en [6,241 kB]获取:10 http://mirrors.aliyun.com/debian bullseye/main Translation-zh [1,215 B]获取:11 http://mirrors.aliyun.com/debian bullseye/main Translation-zh_CN [114 kB]获取:12 http://mirrors.aliyun.com/debian bullseye/main amd64 DEP-11 Metadata [4,049 kB]获取:13 http://mirrors.aliyun.com/debian bullseye/main DEP-11 48x48 Icons [3,478 kB] 获取:14 http://mirrors.aliyun.com/debian bullseye/main DEP-11 64x64 Icons [7,315 kB] 获取:15 http://mirrors.aliyun.com/debian bullseye/non-free amd64 Packages [93.8 kB] 获取:16 http://mirrors.aliyun.com/debian bullseye/non-free Translation-en [91.5 kB] 获取:17 http://mirrors.aliyun.com/debian bullseye/non-free amd64 DEP-11 Metadata [17.9 kB] 获取:18 http://mirrors.aliyun.com/debian bullseye/non-free DEP-11 48x48 Icons [741 B] 获取:19 http://mirrors.aliyun.com/debian bullseye/non-free DEP-11 64x64 Icons [27.7 kB] 获取:20 http://mirrors.aliyun.com/debian bullseye/contrib amd64 Packages [50.5 kB] 获取:21 http://mirrors.aliyun.com/debian bullseye/contrib Translation-en [46.9 kB] 获取:22 http://mirrors.aliyun.com/debian bullseye/contrib amd64 DEP-11 Metadata [13.6 kB] 获取:23 http://mirrors.aliyun.com/debian bullseye/contrib DEP-11 48x48 Icons [47.2 kB] 获取:24 http://mirrors.aliyun.com/debian bullseye/contrib DEP-11 64x64 Icons [93.3 kB] 获取:25 http://mirrors.aliyun.com/debian-security bullseye-security/main Sources [68.4 kB] 获取:26 http://mirrors.aliyun.com/debian-security bullseye-security/main amd64 Packages [97.1 kB] 获取:27 http://mirrors.aliyun.com/debian-security bullseye-security/main Translation-en [60.1 kB] 获取:28 http://mirrors.aliyun.com/debian bullseye-updates/main Sources [1,868 B] 获取:29 http://mirrors.aliyun.com/debian bullseye-updates/main amd64 Packages [2,592 B] 获取:30 http://mirrors.aliyun.com/debian bullseye-updates/main Translation-en [2,343 B] 获取:31 http://mirrors.aliyun.com/debian bullseye-backports/main Sources [119 kB] 获取:32 http://mirrors.aliyun.com/debian bullseye-backports/non-free Sources [780 B] 获取:33 http://mirrors.aliyun.com/debian bullseye-backports/contrib Sources [1,608 B] 获取:34 http://mirrors.aliyun.com/debian bullseye-backports/main amd64 Packages [138 kB] 获取:35 http://mirrors.aliyun.com/debian bullseye-backports/main Translation-en [102 kB] 获取:36 http://mirrors.aliyun.com/debian bullseye-backports/non-free amd64 Packages [1,224 B] 获取:37 http://mirrors.aliyun.com/debian bullseye-backports/non-free Translation-en [472 B] 获取:38 http://mirrors.aliyun.com/debian bullseye-backports/contrib amd64 Packages [3,108 B] 获取:39 http://mirrors.aliyun.com/debian bullseye-backports/contrib Translation-en [2,908 B] 已下载 39.4 MB,耗时 11秒 (3,698 kB/s) 正在读取软件包列表... 实现 ...

December 7, 2021 · 2 min · jiezi

关于debian:如何在debain上安装mysql-57

其实对于如何在liunx上装置mysql,官网是给了相干的文档的。大体步骤如下: Liunx须要有基于APT的装置机制,即能够应用apt install命令来装置软件。对apt增加mysql源。装置mysql.增加mysql源查看mysql5.7装置源的地址是(https://dev.mysql.com/doc/ref...)[https://dev.mysql.com/doc/ref...]: 点击起初到疾速装置界面 而后点击它给的地址: 就能在下一个界面中失去装置源的信息: 点击下载起初到下载界面: 复这个下载链接后,便失去装置源的地址,比方以后为https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb 而后咱们来到debian零碎中下载这个文件: panjie@iZ2ze14bof6m3d4drytcvgZ:~$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb...2021-10-27 10:13:45 (117 KB/s) - 'mysql-apt-config_0.8.20-1_all.deb' saved [35548/35548]下载实现后,咱们来装置它,这里须要留神下文件名,置信随着工夫的失衡,本文给的地址必定会产生变更,这样以下你下载的文件名也会产生变更。比方咱们以后下载的文件名为mysql-apt-config_0.8.20-1_all.deb,则执行以下装置语句: panjie@iZ2ze14bof6m3d4drytcvgZ:~$ sudo dpkg -i mysql-apt-config_0.8.20-1_all.deb 抉择OK后持续 更新装置源增加胜利后,咱们须要更新下装置源,这样增加的源才会失效: $ sudo apt-get update装置mysql最初便能够轻松的装置mysql了: $ sudo apt-get install mysql-server为mysql的root设置两次明码后,mysql装置胜利。 启动mysql接下便能够应用systemctl start mysql命令来启动mysql了。 $ sudo systemctl start mysql$ sudo systemctl restart mysql$ sudo systemctl stop mysql至此,在官网文档的领导下便胜利在debian上装置了mysql.

October 27, 2021 · 1 min · jiezi

关于debian:酒介

年老 再怎么形容也不为过穷的时候 惟一的风光就是瞭望远方洁净的天空陪伴 真情的告白真爱来自骨子里面 如果勉为其难的保持成了一种戒不掉的习惯 这也是一种真爱有一天我会弱小到无药而愈最喜爱他人看不惯 又干不掉我的样子玩物上智

June 20, 2021 · 1 min · jiezi

关于debian:Debian10-安装MyCLI

1 概述Debian10装置MyCLI。 环境: Debian10Python3.72 筹备环境2.1 Python首先确保装置了Python: apt install python3若是没有换源倡议先换源,这里列出了阿里的源: deb http://mirrors.aliyun.com/debian/ buster main non-free contribdeb-src http://mirrors.aliyun.com/debian/ buster main non-free contribdeb http://mirrors.aliyun.com/debian-security buster/updates maindeb-src http://mirrors.aliyun.com/debian-security buster/updates maindeb http://mirrors.aliyun.com/debian/ buster-updates main non-free contribdeb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contribdeb http://mirrors.aliyun.com/debian/ buster-backports main non-free contribdeb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib应用: sudo cp /etc/apt/sources.list /etc/apt/sources.list.baksudo vim /etc/apt/sources.list把源复制过来即可。 装置实现后能够加个软链: sudo ln -s /usr/bin/python /usr/bin/python32.2 pip同时须要装置pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.pysudo python get-pip.py 装置实现后能够先测试一下: pip --version 接着为pip换源,先创立~/.pip目录,在创立~/.pip/pip.conf文件: ...

January 21, 2021 · 1 min · jiezi

关于debian:Debian10终端乱码解决办法

装置的debian10服务器最小化装置 1.装置字体管理软件# 装置字体治理apt-get install locales# 装置文泉驿字体apt-get install fonts-wqy-zenhei2.设置字体# 抉择中文 zh_CN.UTF-8dpkg-reconfigure locales# 查看root@debian10:~# localeLANG="zh_CN.UTF-8"LC_CTYPE="C"LC_NUMERIC="C"LC_TIME="C"LC_COLLATE="C"LC_MONETARY="C"LC_MESSAGES="C"LC_PAPER="C"LC_NAME="C"LC_ADDRESS="C"LC_TELEPHONE="C"LC_MEASUREMENT="C"LC_IDENTIFICATION="C"LC_ALL=应用 apt-get update 中文仍是菱形乱码,重启仍然不变。locale始终显示不失常。。。 3.解决百度许久,解决方案:《Debian中设置locale的办法小结》 # 长期执行:export LC_ALL=zh_CN.UTF-8# 永恒增加:vim /root/.bashrcexport LC_ALL=zh_CN.UTF-8apt-get update 查看终于可能失常显示中文!~

December 28, 2020 · 1 min · jiezi

树莓派连接WIFI无线网络配置

查看无线网卡$ iw deviw 是一种新的基于 nl80211 的用于无线设备的CLI配置实用程序。它支持最近已添加到内核所有新的驱动程序。采用无线扩展接口的旧工具iwconfig已被废弃,强烈建议切换到 iw 和 nl80211。其中显示“Interface wlan0”,说明设备名是wlan0。使用 iw 检查无线连接状态$ iw wlan0 link这是连接后的状态如果显示Not connected,则还没有建立连接扫描 WIFI 网络$ iw wlan0 scan搜索附近的wifi网络。会扫出一大坨各种无线WIFI连接到wifi无密码的wifiiw wlan0 connect 你的ssidwep加密的wifi网络$ iw wlan0 connect 你的SSID key 0:你的密钥WPA/WPA2加密的wifi网络需要用到 wpa_supplicant1. 首先需要为 wpa_supplicant 生成一个包含了预共享密钥(PSK, pre-shared key) $ wpa_passphrase 你的SSID >> /etc/wpa_supplicant/wpa_supplicant.conf 你的密码执行以上命令后,在/etc/wpasupplicant/wpa_supplicant.conf的文件上会自动生成类似如下配置network={ ssid=“你的SSID” #psk=“你的密码” psk=ba4e9c8c83de0c1531accf56d7156409da7653161fb871a85c252c88bdf3d}2. 需要在此基础上把 wpa_supplicant.conf配置文件添加内容如下所示network={ ssid=“你的SSID” proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN #psk=“你的密码” psk=ba4e9c8c83de0c1531accf56d7156409da7653161fb871a85c252c88bdf3d}3. 配置文件修改完成后,执行以下命令启动$ sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf4. 查看是否连接成功$ ifconfig查看wlan0是否分配到ip地址5. 可以用以下命令自动获取IP地址$ dhcpcd wlan0到此连接WIFI成功。但是下次重启,WIFI还不能自动连接。需要修改/etc/network/interfaces6. 配置自动连接vim /etc/network/interfaces配置如下重启后,无线网络会自动连接

December 20, 2018 · 1 min · jiezi

Debian9(Stretch) 下编译安装LNMP环境

Debian9下源码安装LNMP一、前言之前,我的开发环境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。后面开发需要使用到memcached,redis等nosql比较多,而在Windows下定制难度,很多PHP拓展并没有.dll文件,且PHP拓展在Windows下compile难度还是比较大的。所以促使我转向Linux下开发。首先,我search了一下,主要是Red Hat 与Debian。基于Red Hat:商业版,Centos,Fedora基于Debian: Debian,Ubuntu我选择了Debian 9,PHP-7.2,MariaDB-10.2,Nginx-1.13二、Requirements一般安装顺序,mariadb > nginx > php,以下的涉及的软件,库名均是基于Debian(Ubuntu)。2.1 PHP的需要的额外库:## 源码需要的词法分析器apt install bison## 源码都是c程序,需要c编译器,注意编译器版本apt install gcc-6## C++编译器apt install g++## xml解析库apt install libxml2 libxml2-dev## make cmake m4 autoconfapt install make cmake m4 autoconf## webp 格式,能够带来更小体积的图片apt install libwebp6 libwebp-dev## jpeg格式支持apt install libjpeg-dev## png格式支持apt install libpng-dev## 免费开源字体引擎apt install libfreetype6 libfreetype6-dev## ssl加密库支持(源码安装openssl,可以选择使用Debian 包来安装openssl)apt install openssl## ssh2 库(源码安装)apt install libssh2-1-dev## mhash 库apt install libmhash2## zlib 压缩库(源码安装)apt install zlib1g zlib1g-dev## pcre 正则表达式库(源码安装)apt install libpcre3-dev libpcre3## gzipapt install gzip## bz2apt install libbz2-1.0 libbz2-dev## soduim php7.2新特性 现代加密标准apt install libsodium-dev## argon2 php7.2新特性 新的加密函数,由PHC(Password Hashing Competition)发布apt install argon2 libargon2-0 libargon2-0-dev2.2 Nginx 需要的额外库主要是三个,openssl,zlib,pcre,可以通过Debian本身的库安装,也可以选择源码安装。我选择后者,所以,并不会与上面的冲突,后面会涉及到原因。2.3 MariaDB 需要的额外库## bison词法分析器apt install bison## libncurses 一个可用于编写独立终端基于文本的的程序库apt install libncurses5 libncurses5-dev## libevent-dev 一个事件库apt install libevent-dev## openssl 一个加密库apt install openssl三、 安装过程按照MariaDB > Nginx > PHP的顺序安装,安装前请再次检查上述所需的额外库都已安装。3.1 对应的系统用户创建为什么要创建用户? 答:因为安装完成后,我们只需要这些程序只用于系统服务就好(daemon或者其他自己运行的进程),并不需要使用一个具体用户身份去操作他。即创建系统账户,以及系统用户组。groupadd -r mysqluseradd -r -g mysql -s /bin/false -M mysqlmkdir /usr/local/data/mysqlchown -R mysql:mysql /usr/local/data/mysql note 参数含义通过man groupadd 或者man useradd 可以调出具体的手册-r 创建系统用户或者用户组-g 指定用户所属用户组-s 指定用户登录shell名字,sh,bash,因为是系统用户,并不需要,设置 /bin/false或者/usr/sbin/nologin-M 不创建用户主目录同样,分别创建nginx,php-fpmgroupadd -r php-fpmuseradd -r -g php-fpm -s /bin/false -M php-fpmgroupadd -r nginxuseradd -r -g nginx -s /bin/false -M nginx 3.2 MariaDBMariaDB 安装可能略显麻烦,并不是常见的make方式,而是cmake方式。获取mariadb-10.2源码wget http://mirror.jaleco.com/mariadb//mariadb-10.2.12/source/mariadb-10.2.12.tar.gz tar -zxvf mariadb-10.2.12.tar.gzmkdir build-mariadbcd build-mariadbcmake ../ -DCMAKE_INSTALL_PREFIX=/opt/soft/mariadb-10.3.4 -DMYSQL_DATADIR=/var/data/mysql -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DBUILD_LIBPROTOBUF_FROM_SOURCES=ONmake && make install 如果失败 使用 rm -rf CMakeCache.txt3.2.1 配置MariaDBvim /etc/profile.d/mariadb.shaddexport PATH=$PATH:/opt/soft/mariadb-10.2/binsource /etc/profile.d/mariadb.shcd /opt/soft/mariadb-10.2scripts/mysql_install_db –user=mysql –datadir=/usr/local/data/mysql成功输出信息:Installing MariaDB/MySQL system tables in ‘/data/mysql’ …OKTo start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !To do so, start the server, then issue the following commands:’./bin/mysqladmin’ -u root password ’new-password’’./bin/mysqladmin’ -u root -h localhost.localdomain password ’new-password’Alternatively you can run:’./bin/mysql_secure_installation’which will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the MariaDB Knowledgebase at http://mariadb.com/kb or theMySQL manual for more instructions.You can start the MariaDB daemon with:cd ‘.’ ; ./bin/mysqld_safe –datadir=’/data/maria’You can test the MariaDB daemon with mysql-test-run.plcd ‘./mysql-test’ ; perl mysql-test-run.plPlease report any problems at http://mariadb.org/jiraThe latest information about MariaDB is available at http://mariadb.org/.You can find additional information about the MySQL part at:http://dev.mysql.comConsider joining MariaDB’s strong and vibrant community:https://mariadb.org/get-involved/复制cd /opt/soft/mariadb-10.2cp support-files/my-large.cnf /etc/my.cnf或者cp support-files/my-large.cnf /etc/mysql/my.cnf创建系统启动脚本(使用systemd)cd /etc/systemd/systemvim mysqld.service [Unit]Description=MariaDB ServerAfter=network.target[Service]ExecStart=/opt/soft/mariadb-10.2/bin/mysqld –defaults-file=/etc/mysql/my.cnf –datadir=/usr/local/data/mysql –socket=/tmp/mysql.sockUser=mysqlGroup=mysqlWorkingDirectory=/opt/soft/mariadb-10.2[Install]WantedBy=multi-user.targetsystemctl daemon-reloadsystemctl restart mysqld.servicesystemctl status mysqld.servie 如果没有启动,请使用journalctl -xn 或者 journalctl -xl来查看错误信息如果想开机启动,请使用systemctl enable mysqld.service安全设置$:mysql_secure_installation Enter current password for root (enter for none): 输入当前root密码(没有输入)Set root password? [Y/n] 设置root密码?(是/否)New password: 输入新root密码Re-enter new password: 确认输入root密码Password updated successfully! 密码更新成功By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.默认情况下,MariaDB安装有一个匿名用户,允许任何人登录MariaDB而他们无需创建用户帐户。这个目的是只用于测试,安装去更平缓一些。你应该进入前删除它们生产环境。Remove anonymous users? [Y/n] 删除匿名用户?(是/否)Normally, root should only be allowed to connect from ’localhost’. Thisensures that someone cannot guess at the root password from the network.通常情况下,root只应允许从localhost连接。这确保其他用户无法从网络猜测root密码。Disallow root login remotely? [Y/n] 不允许root登录远程?(是/否)By default, MariaDB comes with a database named ’test’ that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.默认情况下,MariaDB提供了一个名为“测试”的数据库,任何人都可以访问。这也只用于测试,在进入生产环境之前应该被删除。Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.重新加载权限表将确保所有到目前为止所做的更改将立即生效。Reload privilege tables now? [Y/n] 现在重新加载权限表(是/否)All done! If you’ve completed all of the above steps, your MariaDBinstallation should now be secure.全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安全。Thanks for using MariaDB!至此,mariaddb已经安装完成,可以使用 ps -aux | grep mysql 查看服务现在测试一下,mysql -u root -p 或者 mysql -h localhost -P 5001 -u shanechiu -p 3.3 PHP 安装PHP 安装比较简单,主要是选择你要安装的拓展或者需要开启的功能可以使用./configure –help 来浏览源码安装提供的安装选项有些属于PHP内置的功能,你只需要 enable或者disable,比如php-fpm,是需要启用的。有些拓展是可以动态加载的,称之为shared extension,但是官方也说了,并不是所有的拓展都是能够shared.获取源码:wget http://am1.php.net/distributions/php-7.2.1.tar.bz2解压:tar -xvf php-7.2.1.tar.bz2cd php-7.2.1./configure –prefix=/opt/soft/php7.2 --with-config-file-path=/opt/soft/php7.2/etc --with-mysql-sock=/tmp/mysql.sock --with-openssl --with-mhash --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-pdo-pgsql=/opt/soft/pgsql --with-gd --with-iconv --with-zlib --enable-exif --enable-intl --enable-calendar --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-mbregex --enable-mbstring --enable-ftp --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-sockets --enable-ipv6 --with-bz2 --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl=/opt/soft/curl7.57–enable-debug --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-sodium --with-libxml-dir --with-password-argon2 --without-gdbm --with-pcre-regex --with-pcre-jit --enable-fast-install --enable-fileinfo配置进入源码文件,cp php.ini.development /opt/soft/php-7.2/php.ini修改以下部分extension_dir=/opt/soft/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/extension=mysqlitime_zone=PRC同时要添加php-fpm配置文件,安装目录下 etc/ 下 cp php-fpm.conf.default php-fpm.conf 和 cp php.conf.d/www.conf.default php.conf.d/www.confPHP-FPM启动脚本(systemd)PHP 非常人性化,在源码目录下/sapi/fpm下可以找到php-fpm.service文件,复制到/etc/systemd/system/php-fpm.service中systemdctl start php-fpm.servicesystemdctl status php-fpm.service如果发生错误,使用journalctl -xn查看具体错误信息开机启动,sytemctl enable php-fpm.service3.4 Nginx 源码安装Nginx的编译安装难易程度应该是LNMP环境中最简单的首先需要三个源码包,一个zlib(压缩库),一个pcre(正则表达式库),一个openssl(加密库,如果要使用HTTPS,这个库是必须的),当然你如果是通过debian本身的包管理器安装的,这个可以省略,但是一定要安装两个,一个是软件本身,同时还要安装开发库,像这种,apt -y install openssl opensll-dev。命令:–configure –prefix=/opt/soft/nginx --user=nginx --group=nginx --with-http_ssl_module \ # 这个默认是不开启的,如需使用TLS,请带上这一项编译。–with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.0g 然后,make 和 make install注意,如果是使用二进制包安装了zlib,pcre,openssl,及相应的开发库,不需要指定路径。配置:编写nginx守护进程文件,还是利用systemd工具vim /etc/sytemd/system/nginx.service[Unit]Description=The NGINX HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/opt/soft/nginx/logs/nginx.pidExecStartPre=/opt/soft/nginx/sbin/nginx -tExecStart=/opt/soft/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target这个可以在nginx 官网找到,可以按照自己需求修改。注意路径修改成自己的安装路径。systemctl start nginx.service 启动Nginxsystemctl enable nginx.service 开机启动记得,如果中途修改了service文件,一定要先运行systemctl daemon-reload重新加载守护进程文件。然后运行 systemctl start nginx.service重启服务。四、APPEND后续会添加一键安装脚本。五、参考资料systemd 入门教程CentOS7.3编译安装MariaDB10.2.6CentOS7.3编译安装php7.1GNU bisonGD-support configure PHPArgon2The Sodium crypto library (libsodium)")get the mariadb code,buildit,test itGeneric Build InstructionsInstalling System Tables (mysql_install_db)")“Compiling MariaDB From Source"ncursesCMakephp-manulPHP7.2 NEW FEATUREBuilding nginx from Sources ...

November 9, 2018 · 4 min · jiezi