保姆级教学:Java项目从0到1部署到云服务器

目录

1、明确内容

2、apt

2.1、apt 语法

2.2、常用命令

2.3、更新apt

3、安装JDK17

4、安装MySQL

4.1、安装

4.2、检查版本及安装位置

4.3、初始化MySQL配置⭐

4.4、检查状态

4.5、配置远程访问⭐

4.6、登录MySQL

4.7、测试数据库

4.8、设置权限与密码⭐

5、安装redis

6、安装Nginx

6.1、相关存储位置

6.2、配置文件

第一部分:全局块

第二部分:events块

第三部分:http块

完整配置文件

80端口占用

6.3、部署前端项目

6.4、测试效果

7、安装tomcat

7.1、报错

7.2、排错⭐

8、防火墙和安全组🔺

8.1、防火墙放行

8.2、阿里云安全组🔺

9、上传工程jar包

9.1、打包

9.2、上云

10、测试项目

10.1、运行

10.2、持续运行🔺


🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。
🦅主页:@逐梦苍穹

📕所属专栏:项目
🍔您的一键三连,是我创作的最大动力🌹

Java项目开发完成之后,想要给第三方访问,则需要部署到公网上去,阿里云/腾讯云是不错的选择,这里以阿里云为例进行详细说明

1、明确内容

第一步需要明确好自己部署一个项目到云服务器的同时,需要运行什么其他服务(这里以Java项目为例说明)。

①Java项目首先要部署JDK,这里部署的是JDK17;

②现在主流的Java项目都是以SpringBoot为主流,SpringBoot内嵌了tomcat容器,所以可以不额外部署tomcat服务;

③项目当中涉及到数据存储,需要部署数据库服务,这里使用的是MySQL;

④项目涉及到缓存操作,需要部署redis;

⑤如果项目是前后端分离项目,还需要部署前端nginx服务器,可以配置tomcat集群;

2、apt

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

安装:apt-get install name
更新:apt-get update name
卸载:apt-get remove name
查找:apt-cache search name

2.1、apt 语法

apt [options] [command] [package ...]

options可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。

command要进行的操作。

package:安装的包名。

2.2、常用命令

操作

命令

列出所有可更新的软件清单

sudo apt update

升级软件包

sudo apt upgrade

列出可更新的软件包及版本信息

apt list --upgradeable

升级软件包,升级前先删除需要更新的软件包

sudo apt full-upgrade

安装指定的软件包

sudo apt install <package_name>

安装多个软件包

sudo apt install <package_1> <package_2> <package_3>

更新指定的软件包

sudo apt update <package_name>

显示软件包具体信息(例如:版本号,安装大小,依赖关系等)

sudo apt show <package_name>

删除软件包

sudo apt remove <package_name>

清理不再使用的依赖和库文件

sudo apt autoremove

移除软件包及配置文件

sudo apt purge <package_name>

查找软件包

sudo apt search

列出所有已安装的包

apt list --installed

列出所有已安装的包的版本信息

apt list --all-versions

2.3、更新apt

3、安装JDK17

sudo apt install openjdk-17-jdk

当系统要求输入密码时,请输入密码。然后键入 'Y' 并按 'Enter' 继续安装。

检查是否安装成功:

运行个jar包试试看:

正常运行,环境配置无误!

4、安装MySQL

4.1、安装

sudo apt-get install mysql-server

4.2、检查版本及安装位置

4.3初始化MySQL配置⭐

输入命令:sudo mysql_secure_installation

需要的配置项会比较多,详细如下:

1)这里输入N,选择不进行密码的强校验:

2)这里输入Y,选择确认删除匿名用户:

3)这里输入N,选择允许root远程登陆:

4)这里输入N,选择不删除test数据库:

5)这里输入Y,选择修改的权限立即生效:

6)至此,初始化完成:

4.4、检查状态

检查MySQL服务的运行状态:systemctl status mysql.service

可以看到正常运行!

4.5、配置远程访问

在Ubuntu下MySQL缺省是只允许本地访问的,使用远程连接工具是连不上的;

如果要其他机器也能够访问的话,需要进行配置;

找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)。

命令:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

此处修改为0.0.0.0

修改完成,记得重启服务:sudo /etc/init.d/mysql restart

如果遇到vi编辑器不能正常的插入和保存的情况,可以选择重新安装vim。

由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full,步骤如下:

①卸载vim-tiny:apt-get remove vim-common

②安装vim-full:apt-get install vim

4.6、登录MySQL

命令:sudo mysql -uroot -p
输入用户和密码(按照上面的步骤,此时的root用户是没有密码的,直接回车即可):

4.7、测试数据库

show databases:

use mysql:

select User,authentication_string,Host from user:

select host,user,plugin from user:

4.8、设置权限与密码

命令:

使用mysql_native_password修改加密规则:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

更新用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;

允许远程访问:

UPDATE user SET host = '%' WHERE user = 'root';

刷新cache中配置,刷新权限:

flush privileges;

如图:

到这里,MySQL在Ubuntu上的配置和安装就完成了!

5、安装redis

安装Redis:sudo apt install redis-server

安装完成后,Redis将自动启动。

检查Redis服务状态:sudo systemctl status redis-server

如果Redis未自动启动,则手动启动Redis:sudo systemctl start redis-server

接下来,为Redis设置密码:

首先,停止Redis服务:sudo systemctl stop redis-server

然后,编辑Redis配置文件:vim /etc/redis/redis.conf

在配置文件中找到以下行:# requirepass foobared

注释掉这行,添加密码,将 # requirepass foobared 修改为requirepass yourpassword,其中 yourpassword 是需要设置的密码。保存并关闭文件。

最后,重新启动Redis服务:sudo systemctl restart redis-server

现在,Redis已经安装并设置了密码。

使用以下命令测试连接Redis:redis-cli -h localhost -p 6379 -a yourpassword ping

如果一切正常,将看到回复 "PONG"。现在,已经成功在Ubuntu上安装了Redis并设置了密码。

redis监听的是127.0.0.1:6379,并不监听外网的请求,因此想要远程连接,还需要对redis.conf配置文件中的相关内容进行修改:

①将 bind 127.0.0.1 ::1 注释掉

②将 protected-mode 改成 no:

6、安装Nginx

安装命令:sudo apt-get install nginx

验证是否安装成功:nginx -v

6.1、相关存储位置

默认安装位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

测试配置文件/etc/nginx/conf.d是否正确:

6.2、配置文件

nginx最重要的莫过于配置文件,其中:

主配置文件:/etc/nginx/nginx.conf

其他配置文件:/etc/nginx/conf.d/xxxx.conf

建议是一个主配置文件+多个其他配置文件协同工作,这样能更好的规范配置项,显得更有条理性

进入/etc/nginx目录:

主配置文件为:nginx.conf。

可以将 nginx.conf 配置文件分为三部分:

第一部分:全局块

worker_processes  auto;

从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

上面这行 worker_processes 配置,这是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events块

events {

 worker_connections  768;

}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http块

http {
	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	server {
		listen       80;
		server_name  localhost;

		#charset koi8-r;

		#access_log  logs/host.access.log  main;

		location / {
			root   html/sky;
			index  index.html index.htm;
		}
		
    error_page   500 502 503 504  /50x.html;
   	location = /50x.html {
    	root   html;
   	}

    # 反向代理,处理管理端发送的请求
    location /api/ {
    proxy_pass   http://localhost:8080/admin/;
          #proxy_pass   http://webservers/admin/;
    }

    # 反向代理,处理用户端发送的请求
    location /user/ {
          proxy_pass   http://localhost:8080/user/;
    }

    # WebSocket
    location /ws/ {
          proxy_pass   http://localhost:8080/ws/;
    }
	}
	
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

下面的反向代理、动静分离、负载均衡都是在这部分中配置。

、http 全局块

http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

、server 块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块:

全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块:一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

反向代理:

在server中配置:

完整配置文件

主配置文件内容如下:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {
	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	server {
		listen       80;
		server_name  localhost;

		#charset koi8-r;

		#access_log  logs/host.access.log  main;

		location / {
			root   html/sky;
			index  index.html index.htm;
		}
		
    error_page   500 502 503 504  /50x.html;
   	location = /50x.html {
    	root   html;
   	}

    # 反向代理,处理管理端发送的请求
    location /api/ {
    proxy_pass   http://localhost:8080/admin/;
          #proxy_pass   http://webservers/admin/;
    }

    # 反向代理,处理用户端发送的请求
    location /user/ {
          proxy_pass   http://localhost:8080/user/;
    }

    # WebSocket
    location /ws/ {
          proxy_pass   http://localhost:8080/ws/;
    }
	}
	
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

80端口占用

在部署的过程中可以发现,当nginx.conf配置监听端口为非80端口时,访问nginx服务器的80端口依旧生效,会自动跳转到欢迎页面(welcome to nginx!) ,这是因为:

在/etc/nginx/sites-enabled这个目录下面有一个default文件,这个文件是默认加载的而配置文件:

编辑这个default文件,打开以后是这样的:

listen端口默认就是80,把它改为非80端口,就不会出现80端口被欢迎页面占用的情况。

6.3、部署前端项目

打包好的前端项目可以放在自定义的文件夹下面:

记得配置好相关路径:

监听端口默认80端口。

6.4、测试效果

部署完成可以开始测试:

在本地访问localhost,在阿里云则访问对应的ip地址:

可以看到,测试没有问题!

7、安装tomcat

这个步骤可以不需要,只是为了完善整套环境。

因为在第一部分"明确内容"的时候提到过,现在主流的都是SpringBoot项目,而SpringBoot是内嵌了tomcat容器的,如图:

项目使用的是SpringBoot2.X版本,所以内嵌的是tomcat9.0.65版本。

这里就安装对应的版本来测试一下即可。

安装:sudo apt install tomcat9

7.1、报错

这个环境下同时装了JDK17和tomcat9,不出意外的话,启动服务的时候是要报错的:

报错信息显示找不到JDK,但是实际上有JDK:

7.2、排错⭐

不出意外的话,这应该是一个老生常谈的"错误"了,就是tomcat9的某些配置文件不识别JDK17。

先查看tomcat9的安装路径(whereis tomcat9):

根据上面的报错信息,可以看到加载/lib/systemd/system/tomcat9.service失败。

下面进入/lib/systemd/system/,查看tomcat9.service文件:

可以看到Tomcat9的启动脚本是/usr/libexec/tomcat9/tomcat-start.sh,下面查看该脚本的内容:

可以发现,这里有一个脚本/usr/libexec/tomcat9/tomcat-locate-java.sh是用来寻找Java环境的,下面查看该脚本:

成功发现问题:这个脚本的内容不包括Java17

解决方案:加上Java17,如下:

像这样加入17,然后重启服务就可以了。

7.3、测试

systemctl restart tomcat9

systemctl status tomcat9

成功运行:

地址栏测试(访问8080端口)出现如下页面表示成功:

如果你在浏览器看到此页面,则表示tomcat成功运行

8、防火墙和安全组🔺

根据上面的七个步骤,整个项目的环境部署已经完成了,但是外部依旧无法访问。

此处有两个关键要点:①操作系统防火墙开放对应端口;②阿里云外部设置安全组策略

8.1、防火墙放行

放行命令:ufw allow [端口号]

查看防火墙:ufw status

8.2、阿里云安全组🔺

进入云服务器ECS控制台,找到"安全组":

点击管理规则:

点击手动添加入站规则:

至此,项目环境部署完成!

9、上传工程jar包

9.1、打包

打开开发工具IntelliJ IDEA,

第一步:跳过测试

第二步:在父模块下执行"clean":

第三步:在父模块执行"compile"编译

第四步:根据依赖关系依次执行"install"(依赖的内容越多,越慢执行"install")

这里的顺序就应该是:先"install"模块sky-pojo,再模块sky-common,最后"install"最核心的服务模块sky-server。最后打开"install"模块sky-server的jar包路径:

找到路径的target目录:

把这个jar包上传到阿里云服务器即可。

9.2、上云

利用远程连接工具连接阿里云服务器(如finalshell或Xshell):

10、测试项目

10.1、运行

连上阿里云操作系统:

在阿里云的Ubuntu系统上运行jar包即可,效果如图:

10.2、持续运行🔺

由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctrl+c又或者关闭了ssh窗口,那么程序就会被终止。

一旦退出操作系统,即使操作系统依旧在运行中,但是项目却无法访问了。

这是因为java -jar的命令只能在当前进程运行,我们需要的是在后台单独开一个进程,让它持续运行。

解决方案一:

java -jar xxx.jar &
&代表在后台运行。
特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

解决方案二:

nohup java -jar SpringBootDemo.jar &

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行时,缺省情况下该进程的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

解决方案三:

nohup java -jar SpringBootDemo.jar >out.txt &

">out.txt"是将command的输出重定向到out.txt文件,即输出内容不打印到屏幕上,而是输出到out.txt文件中

推荐使用方案二或方案三!

这里只是做一个简单的样例展示,具体可以根据springBoot的日志技术,分层级分大小的去记录日志到本地文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cmake工具的安装

1、简介 CMake 是一个开源的、跨平台的自动化建构系统。它用配置文件控制编译过程的方式和Unix的make相似&#xff0c;只是CMake并不依赖特定的编译器。CMake并不直接建构出最终的软件&#xff0c;而是产生标准的建构文件&#xff08;如 Unix 的 Makefile 或 Windows Visual C …

GPT 如何不挂VPN使用

1、下载 Home | Tampermonkey 将下载的文件tampermonkey_stable.crx 拖到上面的扩展程序里面 2、登录Greasy Fork - 安全、实用的用户脚本大全 搜索自己想要使用的东西&#xff0c;如GPT 找到 CHAT网页增强了 点击按安装&#xff0c;然后打开使用方法里面的 网址就可以使用

day04 两两交换链表中的节点、删除链表倒数第N个节点、链表相交、环形链表II

题目链接&#xff1a;leetcode24-两两交换链表中的节点, leetcode19-删除链表倒数第N个节点, leetcode160-链表相交, leetcode142-环形链表II 两两交换链表中的节点 基础题没有什么技巧 解题思路见代码注释 时间复杂度: O(n) 空间复杂度: O(1) Go func swapPairs(head *Li…

JavaEE-自定义SSM-编写核心-解析yml文件

3.3.1 加载yml文件 编写yaml工厂&#xff0c;用于加载yml文件 package com.czxy.yaml;import java.io.InputStream;/*** 用于处理 application.yml文件* 1. 加载application.yml文件* 2. yaml工具类进行解析* Map<String, Map<String, Map<....>> >* …

[数据结构]-哈希

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标&…

代码随想录刷题笔记-Day12

1. 二叉树的递归遍历 144. 二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/94. 二叉树的中序遍历https://leetcode.cn/problems/binary-tree-inorder-traversal/145. 二叉树的后续遍历https://leetcode.cn/problems/binary-tree-postorder-tra…

混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算

1.背景介绍 在训练的模型的时候&#xff0c;需要评价模型的好坏&#xff0c;就涉及到混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算。 2、混淆矩阵的概念 所谓的混淆矩阵如下表所示&#xff1a; TP:真正类&#xff0c;真的正例被预测为正例 FN:假负类&#xf…

09. Springboot集成sse服务端推流

目录 1、前言 2、什么是SSE 2.1、技术原理 2.2、SSE和WebSocket 2.2.1、SSE (Server-Sent Events) 2.2.2、WebSocket 2.2.3、选择 SSE 还是 WebSocket&#xff1f; 3、Springboot快速集成 3.1、添加依赖 3.2、创建SSE控制器 3.2.1、SSEmitter创建实例 3.2.2、SSEmi…

K8s-持久化(持久卷,卷申明,StorageClass,StatefulSet持久化)

POD 卷挂载 apiVersion: v1 kind: Pod metadata:name: random-number spec:containers:- image: alpinename: alpinecommand: ["/bin/sh","-c"]args: ["shuf -i 0-100 -n 1 >> /opt/number.out;"]volumeMounts:- mountPath: /optname: da…

Ubuntu findfont: Font family ‘SimHei‘ not found.

matplotlib中文乱码显示 当我们遇到这样奇怪的问题时, 结果往往很搞笑 尝试1不行 Stopping Jupyter Installing font-manager: sudo apt install font-manager Cleaning the matplotlib cache directory: rm ~/.cache/matplotlib -fr Restarting Jupyter. 尝试2 This work fo…

AI大模型开发架构设计(6)——AIGC时代,如何求职、转型与选择?

文章目录 AIGC时代&#xff0c;如何求职、转型与选择&#xff1f;1 新职场&#xff0c;普通人最值钱的能力是什么?2 新职场成长的3点建议第1点&#xff1a;目标感第2点&#xff1a;执行力第3点&#xff1a;高效生产力 3 新职场会产生哪些新岗位机会?如何借势?4 新职场普通人…

微信小程序(十七)自定义组件生命周期(根据状态栏自适配)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.获取手机状态栏的高度 2.验证attached可以修改数据 3.动态绑定样式数值 源码&#xff1a; myNav.js Component({lifetimes:{//相当于vue的created,因为无法更新数据被打入冷宫created(){},//相当于vue的mount…

【运行Python爬虫脚本示例】

主要内容&#xff1a;Python中的两个库的使用。 1、requests库&#xff1a;访问和获取网页内容&#xff0c; 2、beautifulsoup4库&#xff1a;解析网页内容。 一 python 爬取数据 1 使用requests库发送GET请求&#xff0c;并使用text属性获取网页内容。 然后可以对获取的网页…

基于python flask茶叶网站数据大屏设计与实现,可以做期末课程设计或者毕业设计

基于Python的茶叶网站数据大屏设计与实现是一个适合期末课程设计或毕业设计的项目。该项目旨在利用Python技术和数据可视化方法&#xff0c;设计和开发一个针对茶叶行业的数据大屏&#xff0c;用于展示和分析茶叶网站的相关数据。 项目背景 随着互联网的快速发展&#xff0c;越…

一张图区分Spring Task的3种模式

是的&#xff0c;只有一张图&#xff1a; fixedDelay 模式cron 模式fixedRate 模式

[HUBUCTF 2022 新生赛]ezPython

打开是一个pyc文件&#xff0c;我用的是pycdc进行反编译 # Source Generated with Decompyle # File: ezPython.pyc (Python 3.7)from Crypto.Util.number import * import base64 import base58 password open(password.txt, r).read() tmp bytes_to_long(password.encode(u…

基于JavaWeb开发的家具定制购买网站【附源码】

基于JavaWeb开发的家具定制购买网站【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#…

GLog开源库使用

Glog地址&#xff1a;https://github.com/google/glog 官方文档&#xff1a;http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1.利用CMake进行编译&#xff0c;生成VS解决方案 &#xff08;1&#xff09;在glog-master文件夹内新建一个build文件夹&#xff0c;用…

docker-compose Install influxdb1+influxdb2+telegraf

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

在Ubuntu上安装pycuda记录

1. 安装CUDA Toolkit 11.8 从MZ小师妹的摸索过程来看&#xff0c;其他版本的会有bug&#xff0c;12.0的版本太高&#xff0c;11.5的太低&#xff08;感谢小师妹让我少走弯路&#xff09; 参考网址&#xff1a;CUDA Toolkit 11.8 Downloads | NVIDIA Developer 在命令行输入命…
最新文章