【在Ubuntu部署Docker项目】— PROJECT#1
一、说明
让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API,建立MySQL数据库,并创建一个 PHP 网站使用 API 服务。Php + Node.js + Mysql — DockerSeries — Episode#1
二、系统架构概述
我们要构建的容器,是三个独立的容器组成,它们三者构成一个网络。
以下是目录结构和相应的步骤:
四、通过实践来学习 Docker!
这是最终结果:http://localhost:8888/
准备好练习了吗?
1#Step — 在 Ubuntu 上安装并运行 Docker Desktop。如果需要,您可以参考这篇文章;
2#Step — 使目录结构(复制/粘贴并按回车键,您就可以进入VScode:)
mkdir docker
cd docker
mkdir proj_01
cd proj_01
mkdir api
cd api
mkdir db
mkdir src
cd ..
mkdir website
cd website
mkdir vendor
cd ..
code .
3#Step — 进入 VScode 后,让我们创建一个 Dockerfile:
转到: :proj_01/api/db/Dockerfile
FROM mysql
ENV MYSQL_ROOT_PASSWORD jaythree
4#Step — 让我们构建映像。
返回到根目录并在终端中键入:proj_01/
docker build -t mysql-image -f api/db/Dockerfile .
你会得到这个:/ERROR
无法在 unix:///home/j3/.docker/desktop/docker.sock 连接到 Docker 守护程序。docker 守护程序是否正在运行?
哎呀!运行 Docker 桌面,您就可以开始了!
请立即运行 Docker 桌面!
返回根目录 ~/docker/proj_01$ 并尝试再次构建 MySQL 镜像...巨大的成功!
5#Step — 使用我们最近生成的映像运行 MySQL 容器。转到 &类型:proj_01/
容器 # 1
docker run -d -v $(pwd)/api/db/data:/var/lib/mysql --rm --name mysql-container mysql-image
在 Docker 桌面中,您将看到 MySQL 容器运行良好!
6#Step — 现在我们已经启动并运行了一个 MySQL 容器,让我们创建一个数据库 (outfit_db),定义一个表(产品),并插入一些值。
对于此测试,我们将使用我们在服装商店的在线数据库:
DB来自这篇文章。我们现在只使用三行...
创建此文件:
proj_01/db/script.sql
CREATE DATABASE IF NOT EXISTS outfit_db;
USE outfit_db;
CREATE TABLE IF NOT EXISTS products (id INT AUTO_INCREMENT,sales_code INT NOT NULL,date date NOT NULL,store_id VARCHAR(255),product VARCHAR(255),qty INT NOT NULL,unit_price DECIMAL(10, 2),PRIMARY KEY (id)
);
INSERT INTO products VALUE(0, 65014, '2019-01-12', 'Shopping Morumbi', 'Aster Pants', 5, 114);
INSERT INTO products VALUE(0, 65014, '2019-01-12', 'Shopping Morumbi', 'Trench Coat', 1, 269);
INSERT INTO products VALUE(0, 65016, '2019-01/-2', 'Iguatemi Campinas', 'Peter Pan Collar', 2, 363);
7#Step —让我们执行数据库和表,并使用前面的脚本用值填充它。转到 :proj_01/
docker exec -i mysql-container mysql -uroot -pjaythree < api/db/script.sql
8#Step — 现在,让我们访问容器以执行 SQL 选择。
若要查看容器中的表并使用命令行与数据库交互,需要通过调用方法访问它:outfit_db
exec
docker exec -it mysql-container /bin/bash
bash-4.4# mysql -uroot -pjaythreemysql> USE outfit_db;
mysql> SELECT * FROM products;
exit
exit
具体来说,它使用该命令与名为 的 Docker 容器进行交互。命令末尾的 指示它正在指定容器内启动交互式 b灰壳 (CLI) 会话。这允许您访问容器的文件系统并在其中工作,并像在容器本身中一样运行命令。这是在 Docker 容器中执行任务或维护操作的常用方法。docker exec
mysql-container
/bin/bash
为方便起见,以下是我们在终端中执行的上述两项操作:
$ docker exec -i mysql-container mysql -uroot -pjaythree < db/script.sql
mysql: [Warning] Using a password on the command line interface can be insecure.$ docker exec -it mysql-container /bin/bash
bash-4.4# mysql -uroot -pjaythree
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.1.0 MySQL Community Server - GPLCopyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> USE outfit<em>_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changedmysql> SELECT * FROM products;
+----+------------+------------+-------------------+------------------+-----+------------+
| id | sales_</em>code | date | store<em>_id | product | qty | unit_</em>price |
+----+------------+------------+-------------------+------------------+-----+------------+
| 1 | 65014 | 2019-01-12 | Shopping Morumbi | Aster Pants | 5 | 114.00 |
| 2 | 65014 | 2019-01-12 | Shopping Morumbi | Trench Coat | 1 | 269.00 |
| 3 | 65016 | 2019-01-02 | Iguatemi Campinas | Peter Pan Collar | 2 | 363.00 |
+----+------------+------------+-------------------+------------------+-----+------------+
3 rows in set (0.00 sec)mysql> exit
Bye
bash-4.4# exit
exit
注意:如果需要删除,请使用:mysql> DROP DATABASEoutlet_db;
9#Step — 继续通过终端安装Node(NodeJs官网),因此输入以下命令:
sudo apt install npmnode -v
v18.13.0
10#Step — GoTo & type:
proj_01/api/
:
npm init
这是我们终端的输出:
~/docker/proj_01/api$ npm initThis utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.See `npm help init` for definitive documentation on these fields
and exactly what they do.Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.Press ^C at any time to quit.
package name: (api)
version: (1.0.0)
description: Docker intro
entry point: (index.js)
test command: test
git repository:
keywords: Docker
author: j3
license: (ISC)
About to write to /home/j3/docker/proj_01/api/package.json:{"name": "api","version": "1.0.0","description": "Docker intro","main": "index.js","scripts": {"test": "test"},"keywords": ["Docker"],"author": "j3","license": "ISC"
}Is this OK? (yes)
该命令用于初始化新的 Node.js 项目。当您在终端中运行此命令时,它会提示您一系列问题,并询问各种配置选项来设置您的项目。这些问题通常包括项目名称、版本、说明、入口点文件、测试命令等内容。npm init
回答这些问题或接受默认值后,npm 将在项目目录中生成一个文件。此文件对于管理 Node.js 应用程序的依赖项、脚本和其他与项目相关的元数据至关重要。它会跟踪项目的依赖项及其版本,从而更轻松地在不同系统上共享和重现项目。package.json
package.json
总之,是一个命令,可帮助您为 Node.js 项目创建和配置文件,从而更轻松地管理依赖项和项目设置。npm init
package.json
11#Step — 让我们安装 。现在运行在 :nodemon
proj_01/api/
npm install --save-dev nodemonornpm install -D nodemonnpm fund
我们提到的两个命令执行以下操作:
npm install --save-dev nodemon
:此命令将包安装为 Node.js 项目的开发依赖项。 是一个实用程序,用于监视 Node.js 应用程序文件中的更改,并在检测到更改时自动重新启动服务器。该标志指定应添加到文件部分的标志。这通常用于仅在开发和测试期间(而不是在生产中)需要的工具和依赖项。nodemon
nodemon
--save-dev
nodemon
devDependencies
package.json
npm fund
:此命令用于显示有关项目中使用的文件包的资金选项的信息。它显示了有关如何在经济上支持您所依赖的软件包的维护者的信息。这是一种鼓励用户为开源项目做出贡献的方式,如果维护者已经设置了资金选项或捐赠平台的链接。- 您还可以选择使用速记:
-D
npm install -D nodemon
这两个命令(或)都将正确地将nodemon安装为开发依赖项,并相应地更新您的package.json文件。--save-dev
-D
总之,第一个命令作为开发依赖项安装,这对于开发目的很有用,第二个命令用于检查与项目中使用的包相关的资金信息。nodemon
这是我们的终端:
~/docker/proj_01/api$ npm install - save-dev nodemonadded 35 packages, and audited 36 packages in 5s3 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities~/docker/proj_01/api$ npm fund
api@1.0.0
└─┬ https://opencollective.com/nodemon│ └── nodemon@3.0.1└─┬ https://paulmillr.com/funding/│ └── chokidar@3.5.3└── https://github.com/sponsors/jonschlinkert└── picomatch@2.3.1
12#Step — 让我们安装和驱动程序。转到 :express
MySQL
proj_01/api/
npm install --save express mysql
该命令用于安装两个 Node.js 包和 ,并将它们另存为项目中的依赖项。npm install --save express mysql
express
mysql
express
:这个流行的 Node.js Web 应用程序框架简化了 Web 应用程序和 API 的构建。它提供了用于路由、处理 HTTP 请求和响应、中间件支持等的工具和功能。通过安装它并将其另存为依赖项(标志现已弃用,因此对于现代 npm 版本不是必需的),您可以包含在项目中,使其可用于代码。请参阅官方 NPM 文档。--save
express
mysql
:这是 MySQL 数据库的 Node.js 驱动程序。它允许您的 Node.js 应用程序与 MySQL 数据库交互,使您能够执行数据库操作,例如查询、插入、更新和删除数据。通过安装并另存为依赖项,您可以在项目中使用它来连接和使用 MySQL 数据库。mysql
因此,该命令会安装这两个包并将它们添加到文件中的项目部分,从而允许您在 Node.js 应用程序中使用它们。npm install --save express mysql
dependencies
package.json
13#Step —转到该文件并将以下代码添加到脚本部分中:proj_01/api/package.json
, "start": "nodemon ./src/index"
整个文件的结果如下:
proj_01/api/package.json
{"name": "api","version": "1.0.0","description": "Docker intro","main": "index.js","scripts": {"test": "test", "start": "nodemon ./src/index"},"keywords": ["Docker"],"author": "j3","license": "ISC","dependencies": {"-": "^0.0.1","express": "^4.18.2","mysql": "^2.18.1","nodemon": "^3.0.1","save-dev": "^0.0.1-security"}
}
在文件中,该部分用于定义可以使用 npm 执行的各种脚本或命令。此代码块定义了两个脚本:package.json
"scripts"
"test": "test"
:此脚本名为“test”,它与命令“test”相关联。此脚本的实际功能取决于它在项目中的实现方式。在许多 Node.js 项目中,“test”脚本用于运行自动化测试,例如使用 Mocha、Jest 等测试框架编写的测试。“test”脚本的特定行为应记录在项目的自述文件或单独的测试配置文件中。"start": "nodemon ./src/index"
:此脚本名为 ,它与命令 相关联。当您在终端中运行时,它将执行此处指定的命令,即 。此命令使用该工具通过运行位于 的文件来启动 Node.js 应用程序。 是一个实用程序,每当在指定文件中检测到更改时,它都会自动重新启动 Node.js 应用程序,这在开发过程中非常有用,可以在您进行代码更改时自动刷新服务器。start
nodemon ./src/index
npm start
nodemon ./src/index
nodemon
./src/index
nodemon
因此,总而言之,这些脚本定义了可以使用 npm 执行的命令。 通常用于运行测试,通常用于启动 Node.js 应用程序,通常在开发期间通过 自动重新加载。"test"
"start"
nodemon
14#Step —请建立一个目录并将文件放在其中:/api/src
index.js
proj_01/api/src/index.js
const express = require('express');
const mysql = require('mysql');const app = express();const connection = mysql.createConnection({host: 'mysql-container', //'172.17.0.2', You can streamline this operation by employing the alias 'mysql-container' when executing the Docker run command with the addition of '--link mysql-container.'user: 'root',password: 'jaythree',database: 'outfit_db',insecureAuth: true // Add this line
});connection.connect();app.get('/products', function(req, res) {connection.query('SELECT * FROM products', function (error, results) {if (error) { throw error};res.send(results.map(item => ({ name: item.product, price: item.unit_price })));});
});app.listen(9001, '0.0.0.0', function() {console.log('Listening on port 9001');
})
注意:要获取 IP 地址:docker inspect mysql-container
此指令将生成一组与指定容器相关的大量 JSON 格式的详细信息。我们的目标是使用以下格式查找网络 IP: “IPAddress”: “172.17.0.2”
15#Step —生成一个 Dockerfile 来设置 Node.js 应用程序:
proj_01/api/Dockerfile
FROM node:18-slim
WORKDIR /home/node/app
CMD npm start
此 Dockerfile 定义了为 Node.js 应用程序创建 Docker 容器的指令:
- 它指定要用作起点的基本映像,即 。此映像包含 Node.js 版本 18,并且是 Node.js 映像的轻量级(苗条)版本。
node:18-slim
- 它将容器内的工作目录设置为 。这是应用程序的文件和代码将放置在容器中的位置。
/home/node/app
- CMD 指令指定容器启动时要运行的命令,即 。此命令通常用于启动项目文件中定义的 Node.js 应用程序。
npm start
package.json
总体而言,此 Dockerfile 设置了一个运行 Node.js 应用程序的环境,将应用程序文件放在指定的目录中,并在启动容器时使用“npm start”启动应用程序。
16#Step — 让我们为 Node.js 应用程序构建一个映像。
转到:proj_01/
docker build -t node-image -f api/Dockerfile .
这是我的终端:
j3@JAYTHREE:~/docker/proj_01$ docker build -t node-image -f api/Dockerfile .
[+] Building 2.5s (6/6) FINISHED docker:desktop-linux=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 91B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/node:18-slim 2.4s=> [1/2] FROM docker.io/library/node:18-slim@sha256:e5c8c319295f6cbc288e19506a9ac37afa3b330f4e38afb01d1269b579cf6a5b 0.0s=> CACHED [2/2] WORKDIR /home/node/app 0.0s=> exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:9edd82ba69b8e912e3f0e3ef876a14bb4f5a82f8b19b8bbeaa612cb1e642ae0e 0.0s=> => naming to docker.io/library/node-image 0.0sWhat's Next?View summary of image vulnerabilities and recommendations → docker scout quickview
17#Step — 现在在以下位置运行节点容器:proj_01/
容器 # 2
docker run -d -v $(pwd)/api:/home/node/app -p 9001:9001 --link mysql-container --rm --name node-container node-image
该标志用于指定端口映射。-p
以下是在此上下文中执行的操作:-p
-p 9001:9001
:此标志将主机上的端口映射到 Docker 容器内的端口。在本例中,它将主机上的端口 9001 映射到容器内的端口 9001。定向到主机上端口 9001 的任何流量都将转发到容器的端口 9001。- 使用该标志链接两个容器。这允许Web应用程序容器轻松地与MySQL容器进行通信。
--link
当您在侦听特定端口的 Docker 容器中运行服务,并且您希望从主机访问该服务时,通常会使用此方法。通过指定此端口映射,可以与容器中运行的服务进行交互,就像它直接在主机上运行一样。
因此,在此特定示例中,对主机上的端口 9001 发出的任何请求都将转发到在名为 的 Docker 容器内运行的 Node.js 应用程序。node-container
18#step — 如果您打开 Web 浏览器并导航到 ,它将断言:http://localhost:9001/
不:/
转到您的 Docker 桌面终端 在选项卡中,您将看到以下内容:/Logs
错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端
此问题已在 StackOverflow 上的此线程中得到解决。
解决方案:请重复步骤#8,一旦进入MySQL容器的终端,输入以下命令:
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'jaythree';or ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';flush privileges;exit
在 Docker 桌面选项卡内,请运行这些脚本 👆️ 终端
19#step — 在 Docker Desktop 中停止并重新初始化此容器。
按以下顺序刷新两个容器,方法是单击按钮:Restart
重新启动 mysql 容器并...
重新启动节点容器。
20#step — 现在导航到:
http://localhost:9001/products
瞧!您的 API 已启动并平稳运行,并按预期响应!
21#step — 让我们继续创建一个 PHP 应用程序,该应用程序将与该 API 交互并使用该 API。
转到:
proj_01/website/index.php
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Docker Intro | Jungletronics</title><link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.min.css" />
</head>
<body><?php$result = file_get_contents("http://node-container:9001/products");$products = json_decode($result);?><h1 style="text-align: center;">Inspirational Clothing and Fashion Catalogue:</h1> <div class="container d-flex justify-content-center"> <table class="table"> <thead><tr><th>Product</th><th>Price</th></tr></thead><tbody><?php foreach($products as $product): ?><tr><td><?php echo $product->product; ?></td><td><?php echo $product->unit_price; ?></td></tr><?php endforeach; ?></tbody></table></div><footer style="text-align: center;">Please visit this post on our Outfit App:<a href="https://medium.com/jungletronics/simple-ecommerce-api-using-flask-b192e2079791">Simple eCommerce API using Flask - How to Get Started on Flask — #flaskSeries #Episode00</a>
</footer>
</body>
</html>
22#step — 为您的 PHP 应用程序创建另一个 docker 文件:
proj_01/website/Dockerfile
FROM php:7.2-apache
WORKDIR /var/www/html
23#step — 在其上构建映像app_01/:
docker build -t php-image -f website/Dockerfile .
24#step — 运行 php 容器:
容器 # 3
docker run -d -v $(pwd)/website:/var/www/html -p 8888:80 --link node-container --rm --name php-container php-image
25#step —浏览至:
http://localhost:8888/
26#step - 启用引导程序以增强网页的外观。
下载适用于 Bootstrap v5.0.2 的即用型编译代码,轻松放入您的项目中。
请点击提供的链接下载ZIP文件。下载后,提取其内容,然后将解压缩的文件夹重命名为 .bootstrap
将文件保存在目录中。proj_01/website/vendor
27#step — 转到并在 </head 上方添加此行>app_01/website/index.php
<link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.min.css" />
28#step — 在 Docker Desktop 中访问 MySQL 容器的终端并引入新产品。观察此添加是否同时反映在 API 和网站中。
29#step — 创建一个 Docker 组合:
proj_01/docker-compose.yml
version: "3.7"
services:db:image: mysql-imagecontainer_name: mysql-containercommand: --default-authentication-plugin=mysql_native_passwordenvironment:MYSQL_ROOT_PASSWORD: jaythreevolumes:- ./api/db/data:/var/lib/mysqlrestart: alwaysapi:build: ./apicontainer_name: node-containerrestart: alwaysvolumes:- ./api:/home/node/appports:- "9001:9001"depends_on:- dbweb:image: php-imagecontainer_name: php-containerrestart: alwaysvolumes:- ./website:/var/www/htmlports:- "8888:80"depends_on:- db- api
要达到预期的结果,只需执行:,就像魔术一样,一切都将被配置!docker-compose up -d
给你!
如果你也有兴趣学习Python,请考虑查看这篇文章。非常感谢您的关注!
我相信这篇文章为您提供了有关 Docker 的更多见解。
相关文章:
【在Ubuntu部署Docker项目】— PROJECT#1
一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API,建立MySQL数据库,并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器,是三…...
【学习笔记】LOJ #6240. 仙人掌
毒瘤题😅 简单版本 CF235D Graph Game 首先,考虑建立圆方树,然后对于一个点双(简单环)上的两个点,有两条路径可以到达 和简单版本类似,考虑容斥。即枚举点对 i , j i,j i,j之间 哪些路径是联…...
java通过接口转发文件(上传下载)
java接口转发上传的文件 RequestMapping(value "/XXXX/fileUpload", method RequestMethod.POST) public String getFileUpload2(RequestParam("file") MultipartFile file, HttpServletRequest request) public static String hotMapPost3(String ur…...
Docker-部署docker-compose以及管理服务
部署docker-compose以及管理服务 文章目录 部署docker-compose以及管理服务[TOC] 前言一、docker-compose是什么?1、介绍2、 功能 二、安装docker-compose1.yum直接安装2.二进制安装3.pip安装 三、docker-compose部署服务1.编写docker-compose.yml文件 总结 前言 D…...
Android - Monkey 测试应用出现Crash报错IllegalStateException
问题描述 平时使用Lottie动画都是正常的,没出过这个crash问题,看下的报错信息,代码中文件夹也设置了,没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…...
Spring源码分析 事务 实现原理
文章目录 什么是事务Spring事务管理Spring事务实现原理事务管理器事务定义事务的开启事务核心方法业务代码使用事务TransactionInterceptor 什么是事务 一般所指的事务是数据库事务,是指一批不可分割的数据库操作序列,也是数据库并发控制的基本单位。其…...
ADS-B及雷达显示终端8.3
新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后,生成地形图片,然后对图片进行贴图,一一按规定位置、大小将地形图贴至底图上,而后在底图上进行二维矢量地图的绘制,包括…...
第二章:最新版零基础学习 PYTHON 教程(第二节 - Python 输入/输出–从 Python 控制台获取输入)
目录 Python 中的控制台是什么? 接受来自控制台的输入: 1. 将输入类型转换为整数:...
linux安装配置 flume
目录 一 解压安装包 二 配置部署 (1)修改配置 (2)下载工具 (3)创建配置文件 (4)启动监听测试 (5)flume监控文件 一 解压安装包 这里提供了网盘资源 链…...
SSM - Springboot - MyBatis-Plus 全栈体系(十五)
第三章 MyBatis 二、MyBatis 基本使用 4. CRUD 强化练习 4.1 准备数据库数据 首先,我们需要准备一张名为 user 的表。该表包含字段 id(主键)、username、password。创建SQL如下: CREATE TABLE user (id INT(11) NOT NULL AUT…...
win10默认浏览器改不了怎么办,解决方法详解
win10默认浏览器改不了怎么办,解决方法详解_蓝天网络 在使用Windows 10操作系统时,你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题,不要担心,本文将为你提供详细的解决…...
C语言连接MySQL并执行SQL语句(hello world)
1.新建一个控制台项目 参考【VS2022 和 VS2010 C语言控制台输出 Hello World】VS2022 和 VS2010 C语言控制台输出 Hello World_vs2022源文件在哪_西晋的no1的博客-CSDN博客 2.安装MySQL 参考【MySQL 8.0.34安装教程】MySQL 8.0.34安装教程_西晋的no1的博客-CSDN博客 3.复制MySQ…...
react实现动态递增展示数字特效
在可视化展示界面时有一种场景,就是页面在初始化的时候,有些数字展示想要从某个值开始动态递增到实际值,形成一种动画效果。例如: 写一个数字递增的组件,有两种方式:1.固定步长,代码如下&#x…...
读取.nrrd和.dcm文件格式医学图片可视化与预处理
nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像,在这个数据格式中包含: 1、一个单个的数据头文件:为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…...
VS CODE中的筛选器如何打开?
最近更新了vscode1.82版本,发现在git管理界面有一个“筛选器”功能,十分好用,后来关掉了,找了好久都没有找到办法打开这个筛选器功能,今天无意中不知道按到了哪个快捷键,打开了,就是下图这个&am…...
vue 多环境文件配置(开发,测试,生产)
1.经常我们在开发时候会有不同环境,要代理的路由等等都会出现不同 配置一下三个文件打包的时候,执行三个不同的指令就会打包不同的环境 npm run build:dev npm run build:test npm run build:prodpackage.json 中配置scripts 指令 以,env.development…...
在服务器上搭建pulseaudio的运行环境,指定其运行目录、状态目录和模块目录
如果想在搭建 PulseAudio 的服务器上指定其运行目录、状态目录和模块目录,可以通过修改 PulseAudio 的配置文件来实现。一般情况下所涉及的配置文件和相关选项如下所示: 1、配置文件路径:通常情况下,PulseAudio 的配置文件位于 /…...
[Qt]QListView 重绘实例之一:背景重绘
0 环境 Windows 11Qt 5.15.2 MinGW x64 1 系列文章 简介:本系列文章,是以纯代码方式实现 Qt 控件的重构,尽量不使用 Qss 方式。 《[Qt]QListView 重绘实例之一:背景重绘》 《[Qt]QListView 重绘实例之二:列表项覆…...
国庆周《Linux学习第二课》
Linux开篇指南针环境安装(第一课)-CSDN博客 Linux详细的环境安装介绍在上面 第一 环境准备过程 安装过程...
6年前的麒麟980依旧可以再战
麒麟980,使用6年后的今天,我对它进行跑分测试。 在bench旗下的VRMark跑分中,麒麟980荣获5023分,同款跑分APP,要知道同一时期的高通骁龙855只有4937分, 打游戏,以和平精英为例,帧率3…...
JS计算任意多边形的面积
计算任意多边形的面积需要使用一些几何数学公式。具体的计算方法取决于多边形的形状和提供的顶点坐标。下面是一个通用的 JavaScript 函数,用于计算任意多边形的面积,假设你提供多边形的顶点坐标数组: function calculatePolygonArea(vertic…...
ios xcode15 navigationController?.navigationBar.isHidden = false无效
xcode 15 用 navigationController?.setNavigationBarHidden(true, animated: false)隐藏navigationBar后,再调用 navigationController?.navigationBar.isHidden false无效 解决 用 navigationController?.navigationBar.isHidden true隐藏navigationBar...
Python二级 每周练习题20
练习一: 日期计算器 设计一款日期计算程序,能否实现下面的功能: (1)要求用户分别输入年、月、日(分三次输入); (2)程序自动会根据输入的年月日计算出这一天是这一年的第几天; (3)输出格式为:这…...
深度学习-一个简单的深度学习推导
文章目录 前言1.sigmod函数2.sigmoid求导3.损失函数loss4.神经网络1.神经网络结构2.公式表示-正向传播3.梯度计算1.Loss 函数2.梯度1.反向传播第2-3层2.反向传播第1-2层 3.python代码4.MNIST 数据集 前言 本章主要推导一个简单的两层神经网络。 其中公式入口【入口】 1.sigmod…...
ES写入数据报错:retrying failed action with response code: 429
报错: 使用logstash导入分片数量为9的index发生错误,[logstash.outputs.elasticsearch] retrying failed action with response code: 429 ({"type">"es_rejected_execution_exception", "reason">"rejected execution …...
Redis给Lua脚本的调用
Redis给Lua脚本的调用 Redis为Lua提供了一组内置函数,这些函数可用于执行与Redis数据存储和操作相关的任务。这些内置函数可以在Lua脚本中使用,以便在Redis中执行各种操作。以下是一些常用的Redis Lua内置函数: 主要知道call就好了 redis.ca…...
Spring工具类--ReflectUtils的使用
原文网址:Spring工具类系列--ReflectUtils的使用_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring的ReflectUtils的使用。 ReflectUtils工具类的作用:便利地进行反射操作。 Spring还有一个工具类:ReflectionUtils,它们在功能上…...
联盟 | 彩漩 X HelpLook,AI技术赋能企业效率提升
近日,AI 驱动的 PPT 协作分享平台「 彩漩 」与 AI 知识库搭建工具「 HelpLook」,携手为用户工作流注入更多智能和创造力,全面拥抱 AIGC 时代带来的机遇,致力于提供前沿的智能解决方案。 彩 漩 彩漩是一个以 AI 技术为基础、贯彻 …...
MATLAB m文件格式化
记录一个网上查到的目前感觉挺好用的格式化方法。 原链接: https://cloud.tencent.com/developer/article/2058259 压缩包: 链接:https://pan.baidu.com/s/1ZpQ9qGLY7sjcvxzjMPAitw?pwd6666 提取码:6666 下载压缩包…...
分拆菜鸟将使阿里巴巴股票迎来新一轮上涨?
来源:猛兽财经 作者:猛兽财经 总结: (1)阿里巴巴(BABA)最近公布的季度财报显示,该公司有能力实现快速盈利。 (2)据报道,阿里巴巴正计划分拆菜鸟集团,并将在香…...
2021年最火的网页游戏/旅游企业seo官网分析报告
1. SET DEADLOCK_PRIORITY 说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。 语法:SET DEADLOCK_PRIORITY { LOW | NORM…...
网络营销论文选题/seo如何去做优化
链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid87813#problem/G 每个CD的时间不超过 20没有哪个CD的时间是超过N的CD不能重复每个长度和N都是一个整数 代码: #include<stdio.h> #include<string.h> #include<math.h> …...
wordpress怎么玩/百度最新版下载
撰文:Chase Devens编辑:南风对传统金融体系的去中介化正在我们眼前重新塑造经济的可能性。自动执行的智能合约允许去中心化金融 (DeFi) 应用比传统的同类应用更快、更高效地提供金融服务。这种开放和可组合的金融环境为有洞察力的开发者创造了机会&#…...
wordpress纯代码/网络营销与电子商务的区别
审核转换允许对数据流添加审核审核数据,以往使用HIPPA和Sarbanes-Oxley (SOX)时,必须跟踪谁在什么时插入数据,审核转换可以实现这种功能。例如要跟踪那一个task向表里插入数据,可以在审核转换中添加相应的列。在Output Column Nam…...
做营销型网站一般要多少钱/企业营销策划书如何编写
24.1 场景问题24.1.1 发送提示消息考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统都会有这样的功能,比如某人有新的工作了,需要发送一条消息提示他。从业务上看,消息又分成普通消息、加急消息和特急…...
需要做网站的企业资源/网络营销郑州优化推广公司
Git是一款开源的分布式版本控制系统,它的出现和Linux紧密相关。Linux内核项目组为了能更好地管理和维护Linux内核开发,于2002年开始启用商业的分布式版本控制系统BitKeeper。虽然软件开发商授权了Linux社区能免费使用,但是好景不长࿰…...