Docker基础操作命令与常用容器创建

常用操作命令

docker search
docker pull
docker save
docker load
docker rm/rmi
docker ps
docker images
docker create --name 容器 ...
docker container ls
docker stop/start/pause/unpause 容器名
docker exec -it 容器名 运行命令(如:bash,redis-cli)
docker run --name 容器名 -p 宿主机端口号:容器端口号 -v 容器卷:容器文件目录(配置文件等位置去dockerHub查) -v 宿主机目录/文件:容器目录/文件 -d 镜像:版本 启动配置 
例:
docker run --name myredis -p 6379:6379 -v /usr/local/myredis/conf:/usr/local/etc/redis -v /usr/local/myredis/data:/data -d redis:6.2.6 redis-server /usr/local/etc/redis/redis.confdocker volume prune
docker volume ls
docker volume rm 容器名
docker inspect 容器卷/容器
docker cp 容器名:/文件路径 /复制到宿主机路径
docker run ... --privileged=true  扩大容器内权限到root
docker run ... -restart=always :重启docker时,自动启动相关容器
docker run ... -e xxx 启动参数

创建各种镜像

#redis 
docker run --name myredis -p 6379:6379 -v /usr/local/myredis/conf:/usr/local/etc/redis -v /usr/local/myredis/data:/data -d redis:6.2.6 redis-server /usr/local/etc/redis/redis.conf#mysql
docker run --name mysql -p 3306:3306 -v /usr/local/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql#jdk
docker run --name openjdk -it -d openjdk:8 /bin/bash#RabbitMQdocker run -d --name myrabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=用户名 -e RABBITMQ_DEFAULT_PASS=密码 rabbitmq:3-management#Nginx
docker run --name mynginx -d -p 80:80 -v /usr/local/mynginx/default.conf:/etc/nginx/conf.d/default.conf -v /usr/local/mynginx/html:/usr/share/nginx/html --restart=always --privileged=true nginx宿主机default.conf:server {listen 80;server_name 1.94.125.38;#别用localhostproxy_buffer_size 64k;proxy_buffers   32 32k;proxy_busy_buffers_size 128k;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ =404;}location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://1.94.125.38:8080/;#别用localhost
}}

安装nacos

安装之前你需要准备一个mysql,当前安装方式是将数据持久化到数据库中的,这里的部署是单机模式
1、Docker 拉取镜像

docker pull nacos/nacos-server

2、挂载目录

mkdir -p /mydata/nacos/logs/                      #新建logs目录
mkdir -p /mydata/nacos/conf/						#新建conf目录

3、启动nacos并复制文件到宿主机,关闭容器
启动容器

docker run -p 8848:8848 --name nacos -d nacos/nacos-server

复制文件

docker cp nacos:/home/nacos/logs/ /mydata/nacos/
docker cp nacos:/home/nacos/conf/ /mydata/nacos/

关闭容器

docker rm -f nacos

PS:这一步启动nacos是为了将nacos里面的文件拷贝出到挂载目录中,这样我们就可以直接修改挂载目录中文件来映射到容器里面去了
4、mysql中创建nacos所需的表
mysql中新建一个库,名字可自定义,这里就用nacos_config
,创建所需的表

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) DEFAULT NULL,`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`c_desc` varchar(256) DEFAULT NULL,`c_use` varchar(64) DEFAULT NULL,`effect` varchar(64) DEFAULT NULL,`type` varchar(64) DEFAULT NULL,`c_schema` text,PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(255) NOT NULL COMMENT 'group_id',`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',`content` longtext NOT NULL COMMENT '内容',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`app_name` varchar(128) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (`id` bigint(20) NOT NULL COMMENT 'id',`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`nid` bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (`id` bigint(64) unsigned NOT NULL,`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`data_id` varchar(255) NOT NULL,`group_id` varchar(128) NOT NULL,`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL,`md5` varchar(32) DEFAULT NULL,`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',`src_user` text,`src_ip` varchar(20) DEFAULT NULL,`op_type` char(10) DEFAULT NULL,`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATE TABLE `tenant_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` varchar(128) NOT NULL COMMENT 'kp',`tenant_id` varchar(128) default '' COMMENT 'tenant_id',`tenant_name` varchar(128) default '' COMMENT 'tenant_name',`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATE TABLE users (username varchar(50) NOT NULL PRIMARY KEY,password varchar(500) NOT NULL,enabled boolean NOT NULL
);CREATE TABLE roles (username varchar(50) NOT NULL,role varchar(50) NOT NULL,constraint uk_username_role UNIQUE (username,role)
);CREATE TABLE permissions (role varchar(50) NOT NULL,resource varchar(512) NOT NULL,action varchar(8) NOT NULL,constraint uk_role_permission UNIQUE (role,resource,action)
);INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

5、再次启动nacos

docker run -d --name nacos -p 8848:8848 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server

语句讲解

  • docker run -d : 启动容器 -d是后台启动并返回容器id的意思
  • –name nacos :为容器指定一个名称
  • -p 8848:8848 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
  • –privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
  • -e JVM_XMS=256m : 为jvm启动时分配的内存
  • -e JVM_XMX=256m : 为jvm运行过程中分配的最大内存
  • -e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
  • -v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs
  • -v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf
  • –restart=always :重启docker时,自动启动相关容器

注意事项
需要在防火墙开放相关端口,如果你是云服务器,开放安全组,下面提供相关语句

开放端口8848

firewall-cmd --zone=public --add-port=8848/tcp --permanent

重启防火墙

firewall-cmd --reload

查看所有开启的端口

firewall-cmd --zone=public --list-ports

PS:这里有点小问题,重启完防火墙之后,需要重启docker

重启docker

systemctl restart docker

这里最容易犯错的就是挂载目录对应不上,可以看下自己语句中的-v 后面的目录是否映射正确,博主第一次安装的时候logs里面还有一个logs文件夹,conf里面还有个conf文件夹,导致出错
6、修改配置文件
主要修改的是application.properties文件

在宿主机中修改application.properties文件

vim /mydata/nacos/conf/application.properties

文件修改的地方(修改为你对应的mysql)

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

PS :因为我们在第三步已经复制了logs和conf到了我们的宿主机里面,那么我们可以直接修改application.properties文件映射到容器里,可以通过下面的语句来查看

进入到nacos容器里

docker exec -it nacos /bin/bash

查看application.properties文件

cat /home/nacos/conf/application.properties

退出容器

exit

PS:如果文件没有修改成功的话,说明挂载目录映射的不对,仔细查看一下,可以通过下面的方法来查看是否正确

docker inspect --format="{{json .Mounts}}" nacos

访问页面

http://ip:8848/nacos/index.html

安装Elasticsearch

1.Elasticsearch介绍

【摘自百度百科】

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

2.基于Docker安装Elasticsearch

2.1 创建网络

    因为需要部署kibana容器,因此需要让es和kibana容器互联。

指令:

docker network create es-net

2.2 拉取镜像

以安装Elasticsearch 8.6.0 版本为例
指令:

docker pull elasticsearch:8.6.0

2.3 创建挂载点目录

指令:

mkdir -p /usr/local/es/data /usr/local/es/config /usr/local/es/plugins

指令:

chmod 777  /usr/local/es/data
chmod 777  /usr/local/es/config
chmod 777  /usr/local/es/plugins

2.4 部署单点es,创建es容器

指令:

docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/es/data:/usr/share/elasticsearch/data \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0

2.5 编写elasticsearch.yml

    先进入es容器

指令:

docker exec -it es /bin/bash

复制elasticsearch.yml到宿主机

指令:

docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/local/config/

关闭 密码安全验证
指令:

xpack.security.enabled: false
docker exec es rm -f /usr/share/elasticsearch/config/elasticsearch.yml
docker cp /usr/local/config/elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml

2.6 重启es容器

指令;

docker restart es

2.7 测试Elasticsearch是否安装成功

访问虚拟机地址+端口号,前面配置Elasticsearch 的端口号为:9200

例如:

http://192.168.27.129:9200

3.基于Docker安装Kibana

3.1 拉取镜像

以安装kibana 8.6.0 版本为例

指令:

docker pull kibana:8.6.0

3.2 创建挂载点目录

指令:

mkdir -p /usr/local/kibana/config /usr/local/kibana/data

指令:

chmod 777 /usr/local/kibana/data
chmod 777 /usr/local/kibana/config

3.3 部署kibana,创建kibana容器

指令:

docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.6.0

3.4 测试Kibana是否安装成功

访问虚拟机地址+端口号,前面配置Kibana 的端口号为:5601

例如:

http://192.168.27.129:5601

4. 基于Docker安装IK分词器

4.1 进入Elasticsearch容器

指令:

docker exec -it es /bin/bash

4.2 在线安装IK分词器

    注意:安装IK分词器的版本,必须和Elasticsearch的版本一致,上文安装的是Elasticsearch 8.6.0的,所以接下来安装的IK分词器版本是8.6.0

指令:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip
或
下载到主机上传到宿主机,然后解压放进与容器映射的文件夹下

如果需要安装其他版本的IK分词器,需要把版本号修改即可

如:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip

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

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

相关文章

java号段_JAVA手机号正则(多号段)

import java.util.regex.Pattern;/*** author: Lindsay* Date: 2018/9/19 16:23* Description: 手机号正则*/public class PhoneRegUtils {/*** 是否是合法的手机号** param phone* return*/public static boolean isLegalPhoneNumber(String phone) {/*** 中国电信&#xff1a…

hdu 1863(最小生成树kruskal)

/*Name: hdu1863畅通工程 Author: Try86Date: 10/04/12 12:43Description: 最小生成树(kruskal) */ #include <cstdio> #include <iostream>using namespace std;const int M 5050;int p[M], sum; //sum统计顶点个数 struct edge {int a;int b;int w; }e[M];int…

java第二版课后题答案_Java语言程序设计第2版第16章 课后习题答案

《Java语言程序设计第2版第16章 课后习题答案》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《Java语言程序设计第2版第16章 课后习题答案(62页珍藏版)》请在人人文库网上搜索。1、第1章 Java语言概述选择题1-1 在下列概念中&#xff0c;Java语言只保留了(B)A. 运算符…

为什么手机最后 10% 的电量很不耐,最后1%的电量最耐用?

全世界只有3.14 % 的人关注了爆炸吧知识手机电量这玩意一直都是个玄学问题。为什么我的小手机&#xff0c;最后 1% 的电量最耐用&#xff0c;每次都够我看完一个十分钟的视频。又或者是为什么我的小手机&#xff0c;最后 10% 的电量很不耐用。。。每次电池报警还有 10% 的电量&…

HP 1020

HP 1020 先卸三颗螺丝 两根铁销 把盖子拔出 弹簧拔出 把硒鼓一分为二&#xff0c;有感光器的为废粉&#xff0c;倒出来&#xff0c;搽干净感光器 另外一个倒入干净的粉&#xff0c;小心不要把齿轮那面拆开了 倒好粉&#xff0c;合起来 合起来要先扣上弹簧&#xff0c;再按上盖…

使用identity+jwt保护你的webapi(三)——refresh token

前言上一篇已经介绍了identity的注册&#xff0c;登录&#xff0c;获取jwt token&#xff0c;本篇来完成refresh token。开始开始之前先说明一下为什么需要refresh token。虽然jwt token有很多优点&#xff0c;但是它的缺点也是非常明显。由于jwt无状态的特性&#xff0c;所以j…

窗体的关闭事件

对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说&#xff0c;事件引发的顺序特别重要。 当 Windows 窗体应用程序启动时&#xff0c;主窗体的启动事件按以下顺序引发 1、System.Windows.Forms.Control.HandleCreated    在为控件创建句柄时发生…

python多线程 不在main_从python线程(不是main)启动pyQt线程有什么不...

我有一个想要向其添加基本状态窗口的python控制台脚本,因此在不了解pyqt的情况下,我添加了一个窗口.如果我从主线程启动pyqt,它将阻塞其他所有内容,因此我从另一个线程启动了它.这样的运行情况已经好几个月了,但我只是注意到了一个警告(不确定我以前怎么错过它)&#xff1a;警告…

java设置窗口不可移动_Java – JDialog不可移动

什么代码有助于使JDialog无法移动&#xff1f;我看了两个选项&#xff1a;> setUndecorated(true);哪个有效,但删除了所有的装饰.> addComponentListener并覆盖componentMoved()方法,这会导致JDialog随后在移动时调用induEpilepticSeizure().有任何想法吗&#xff1f;解决…

一个10*10的正方形里,最多可以放多少个直径为1的圆?为啥不是100个?

祝大家元宵节快乐知识君曾经给大家出了一道题。↓Q&#xff1a;在一个10*10的正方形里&#xff0c;最多可以放多少个直径为1的圆&#xff1f;为啥不是100个&#xff1f;关于这道题&#xff0c;后台就收到了许多留言&#xff0c;大家纷纷给出了不同的答案。五花八门的答案&#…

.NET 时间格式 ----------摘自MSDN

使用在 DateTimeFormatInfo 的属性中存储的标准或自定义模式设置 DateTime 值的格式。 可以通过设置可写 DateTimeFormatInfo 的关联属性用自定义模式替代标准模式。若要确定 DateTimeFormatInfo 是否是可写的&#xff0c;请使用 IsReadOnly 属性。 下表列出了每一种标准模式的…

小甲鱼零基础入门python二十一课课后题_小甲鱼Python第二十一讲课后习题

测试题&#xff1a;0. 递归在编程上的形式是如何表现的呢&#xff1f;在编程上&#xff0c;递归表现为函数调用本身这么一个行为。1. 递归必须满足哪两个基本条件&#xff1f;一、 函数调用自身二、 设置了正确的返回条件2. 思考一下&#xff0c;按照递归的特…

MVC捕获数据保存时的具体字段验证错误代码

捕获验证错误代码 //try //{ // // 调试写数据库 //} //catch (DbEntityValidationException dbEx) //{ //}转载于:https://www.cnblogs.com/caojinqin/p/4561000.html

windows常用网络命令

1. ipconfig命令 ipconfig命令用于显示本机当前的TCP/IP配置的设置值&#xff0c;包括本机当前的IP地址、子网掩码、默认网关以及DNS服务器。可以用来检验TCP/IP配置是否正确。对于使用了动态主机配置协议&#xff08;DHCP&#xff09;的局域网&#xff0c;这个命令的作用就更加…

java中有stdin_在java中听stdin的后台进程

我必须创建一个java程序,当用户输入0时它应该退出.用java代码编写没问题.int cmd read();System.out.println("got command : " cmd);if (cmd 48) { // ASCII code for 0System.exit(0);我想在linux中使用start-stop脚本运行这个过程.我也可以使用&或者没有ca…

【开源框架】:解决方案级别的代码生成器 WebFirst

框架描述WebFirst 是一新代的 代码生成器&#xff0c;用法简单&#xff0c;功能强大&#xff0c;支持多种数据库 &#xff0c;具体功能如下&#xff1a;一、 建库、CodeFirst方式在线建表&#xff0c;没用到CodeFirst的用户可以用工具轻松体验&#xff0c;支持公共字段二、导出…

“智商平平”学软件

“智商平平”学软件 金旭亮 前几天收到了一个在职普通程序员的邮件&#xff0c;在邮件中他说两次报考我们学校计算机专业研究生&#xff0c;但总是惨败而回&#xff0c;第1年总分考了250&#xff0c;砸在政治和数学上&#xff0c;努力复习了一年&#xff0c;又是砸在数学上&…

在netbeans下使用调试PHP的插件XdeBug

本人的开发环境: wamp最新官网wampserver2.2d-x32版。 下载点&#xff1a;http://nchc.dl.sourceforge.net/project/wampserver/WampServer%202/WampServer%202.2/wampserver2.2d-x32.exe PHP&#xff1a;5.3.10 apache &#xff1a;2.2.21 要使用到NetBeans的调试功能&#xf…

老娘不就是没化妆吗?你几个意思?

1 可能是环境的原因唤醒了雪橇犬的祖传技能▼2 这是花仙子吧&#xff01;怎么能生的出这么好看的崽▼3 你什么表情&#xff1f;老娘不就是没化妆吗▼4 我们是专业的&#xff0c;一般不会笑除非忍不住▼5 你知道小兔子会游泳吗▼6 狗子的快乐你体会不了▼7 谁能告诉我这到…

790页微软官方《.Net核心编程》高清版PDF,提供下载

本文档由微软技术专家编写&#xff0c;从1.1版本持续维护升级至今&#xff0c;开篇就详细对比了各版本中的差异&#xff0c;内容包含了ASP.NET Core、Blazor、WebAPI、SignalR、gRPC、EF Core、云原生&#xff0c;既是最权威的&#xff0c;也是最全面的&#xff0c;是学习跨平台…