Docker学习笔记

Docker学习笔记

安装

# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都输入 y 
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v

Docker架构

配置Docker镜像加速

我用的阿里云的

如果是宝塔可以直接配置

宝塔

bash

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

这里对tee命令

Docker进程相关命令

systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker #查看Docker服务状态
systemctl enable docker #设置开机自启

Docker镜像相关命令

docker images
docker images –q                # 查看所有镜像的id
docker search 镜像名称
docker pull 镜像名称
docker rmi 镜像id               # 删除指定本地镜像
docker rmi `docker images -q`  # 删除所有本地镜像

镜像版本查看:https://hub.docker.com 如果对于版本有限制,则为 镜像名称:版本号,否则默认为latest

Docker容器相关命令

docker ps                               # 查看正在运行的容器 
docker ps –a                            # 查看所有容器
docker run 参数
docker exec 参数                         # 进入容器
docker stop 容器名称
docker start 容器名称 镜像名 /bin/bash
docker rm 容器名称                        #运行状态删除失败
docker inspect 容器名称                   # 查看容器信息

run 参数说明

  • -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
  • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
  • -it创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
  • --name:为创建的容器命名。

Docker数据卷

挂载 复习一下,这个和Linux的挂载做下区分,不要弄混

参考链接:

  • 什么是挂载,Linux挂载详解 (biancheng.net)
  • (77条消息) Linux中挂载详解以及mount命令用法daydayup654的博客-CSDN博客mount
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
docker run -it --name='name' -v 宿主机目录(文件):容器内目录(文件) -v 宿主机目录(文件):容器内目录(文件)

.e.g:

启动一个Centos容器

docker run -it --name=c3 -v /root/data:/root/data_container centos /bin/bash

数据卷容器

Docker应用部署

MySQL

docker search mysql
docker pull mysql:5.6
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6

$PWD是啥?和pwd有什么区别? 前者是变量,后者是命令,用于获得当前目录

TomCat

docker search tomcat
docker pull tomcat
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat 

Nginx

docker search nginx
docker pull nginx
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf	#用vi也行
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

Redis

docker search redis
docker pull redis:5.0
docker run -id --name=c_redis -p 6379:6379 redis:5.0

外部连接Redis

redis-cli.exe -h 服务器地址 -p 6379

Docker镜像

Docker镜像原理

Docker镜像制作

docker commit 容器id 镜像名称:版本号			#创建镜像
docker save -o 压缩文件名称 镜像名称:版本号	 #镜像压缩
docker load -i 压缩文件名称 				  #还原镜像

DockerFile

概念

DockerFile关键字

关键字

作用

备注

FROM

指定父镜像

指定dockerfile基于那个image构建

MAINTAINER

作者信息

用来标明这个dockerfile谁写的

LABEL

标签

用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看

RUN

执行命令

执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,”param2”]

CMD

容器启动命令

提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,”param2”]

ENTRYPOINT

入口

一般在制作一些执行就关闭的容器中会使用

COPY

复制文件

build的时候复制文件到image中

ADD

添加文件

build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务

ENV

环境变量

指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value

ARG

构建参数

构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数

VOLUME

定义外部可以挂载的数据卷

指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]

EXPOSE

暴露端口

定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp

WORKDIR

工作目录

指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径

USER

指定执行用户

指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户

HEALTHCHECK

健康检查

指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制

ONBUILD

触发器

当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大

STOPSIGNAL

发送信号量到宿主机

该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。

SHELL

指定执行脚本的shell

指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

根据DockerFile制作镜像

docker build -f DockerFile文件 -t 镜像名称:镜像版本号 .

Demo

SpringBoot

vim springboot_dockerfile

FROM java:8
MAINTAINER itheima <itheima@itcast.cn>
ADD HelloDocker-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar

docker build -f springboot_dockerfile -t app .
docker run -id -p 9000:8080 app	#端口映射

Centos7

vim centos_dockerfile

FROM centos:7
MAINTAINER itheima<itheima@itcast.cn>
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash

docker build -f centos_dockerfile -t itheima_centos:1 .
docker run -it --name=c5 itheima_centos:1

Docker服务编排

为了降低工作量,我们引入了Docker Compose

Docker Compose

安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows
#在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

卸载Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

使用docker compose编排nginx+springboot项目

mkdir ~/docker-compose
cd ~/docker-compose

vim docker-compose.yml

###docker-compose.yml-begin
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:					##容器名称
    image: app			##绑定镜像
    expose:
      - "8080"
###docker-compose.yml-end

mkdir -p ./nginx/conf.d
vim ./nginx/conf.d/itheima.conf

###./nginx/conf.d/itheima.conf-begin
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
}
###./nginx/conf.d/itheima.conf-end

docker-compose up

Docker私有仓库(私服)

私服搭建

# 1、拉取私有仓库镜像 
docker pull registry
# 2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json   
vim /etc/docker/daemon.json    
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip 
{"insecure-registries":["私有仓库服务器ip:5000"]} 
# 5、重启docker 服务 
systemctl restart docker
docker start registry

镜像上传

# 1、标记镜像为私有仓库的镜像     
docker tag centos:7 私有仓库服务器IP:5000/centos:7
 
# 2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/centos:7

拉取镜像

#拉取镜像 
docker pull 私有仓库服务器ip:5000/centos:7

容器虚拟化与传统虚拟机的比较

结束语

本笔记完全适用于黑马程序员Docker容器化技术,从零学会Docker教程哔哩哔哩bilibili 部分笔记采纳于黑马程序员-Docker - WeiBlog (weishao-996.github.io)

本文转载于网络 如有侵权请联系删除

相关文章

  • 一个php文件实现反代jsdelivr,并缓存文件到本地服务器

    之前写了shell脚本,可以手动下载jsdelivr的单文件,已经满足的我需求了(在这里),但评论区表示没有一步到位。 那就用最好的语言之php配合伪静态再搞一个吧!话不多说,直接上代码!将下面的代码保存为jsd.php<?php $file=$_SERVER['REQUEST_URI']; $self_path=pathinfo($_SERVER['PHP_SELF'],PATHINFO_DIRNAME); $query=''; if($_SERVER['QUERY_STRING']) { $file=explode('?',$file)[0]; $query='?'.$_SERVER['QUERY_STRING']; } $file_info=pathinfo($file); $path=$file_info['dirname']; if($path=='/')exit('/*???*/&

  • DOCK教程-1

    DOCK教程 简介:DOCK是基于Unix的科学计算软件。遵循通用的安装方法:下载,解压缩,配置,构建和测试。DOCK的简单配置方案基于纯文本文件。构建和测试使用make命令。DOCK的安装是如此简单和透明,以使用户有机会自己解决问题。DOCK是经典的分子对接程序,用于识别潜在的结合构象以及分子与靶标的相互作用。具体地说,对接是对结构已知的大分子或受体的活性位点内的小分子或配体的低能结合模式的鉴定。与疾病相关的受体强烈相互作用或与其结合的化合物可能会抑制其功能并因此充当药物。以计算方式解决对接问题,需要分子能量学的准确表示以及搜索潜在结合模式的有效算法。DOCK能做的预测小分子-蛋白质复合物的结合模式搜索配体的数据库,以模拟经过实验验证的抑制剂的抑制性结合相互作用的化合物在配体数据库中搜索与特定蛋白质的特定位点结合的化合物搜索与核酸靶标结合的化合物的配体数据库检查蛋白质-蛋白质和蛋白质-DNA复合物的可能结合方向通过检查通过计算衍生的小分子,帮助指导合成工作Overview对接原理: 配体的内部自由度可以使用Anchor-and-Grow方法进行采样。该构象搜索算法已使用来自1043个

  • 存储基本概念(3)

    将数据保存在存储介质上,除了需要一个好的存储介质之外,还需要一个适当的机制去管理这些存储介质上的数据,以便上层应用包括操作系统可以方便快捷的访问到这些数据。传统上我们知道进行磁盘管理都是通过一些工具进行操作的,那么这些工具是否一定与操作系统有关呢?不是的,因为从操作系统角度来看,操作系统虽然一般具有文件系统管理功能,但本质上文件管理系统它是比较独立的一个功能,显然可见的,就是操作系统可以支持多个文件系统,如LINUX支持ext2,ext3等,Windows7扶持fat32也支持NTFS,实际上LINUX也是支持NTFS的。从文件系统角度来看,文件系统将数据以文件、目录方式进行。组织。那么从磁盘的角度来说,应该怎么管理这些空间呢?我们前面了解到磁盘一般都分磁道和扇区,那么这些磁盘和扇区是如何与文件系统对应上的呢?。这里需要了解磁盘管理的两个关键:磁盘分区和磁盘格式化。进行磁盘管理一般都是采用一些专用的工具进行的,这些工具可以实现我们想要的如磁盘分区和格式化功能。通常将磁盘划分成多个分区(partitions),然后操作系统通过磁盘驱动程序来读取这些硬盘上的分区信息。一般的LINUX上根据

  • 抖音与快手的最后战役

    据2019年Q3中国短视频市场研究报告显示,抖音与快手的MAU合计达到了6.8亿。对比近年移动互联网红利在一二线城市逐渐衰退这一现状来说,抖音和快手在一二线城市能渗透的用户不多了,也许今年就是它们的MAU触顶之年。所以针对这一趋势,今年8月快手和抖音分别推出了其极速版。极速版不仅安装包小、运行速度快、省流量、界面清爽,而且没有广告推送,更重要的是还多了一个“赚金币”的功能。很显然这一模式与曾经下沉市场三巨头之一的趣头条有很大的相似性,都是通过现金红包来吸引下沉市场人群使用,以此来增加用户下载量。抖音、快手的下沉布局8月24日,抖音在上海举办创作者大会。会上抖音总裁张楠发表演讲时表示,短视频的发展超乎想象,预计到2020年,短视频行业的日活跃用户总数将达到10亿。这从另一层面宣告了短视频增量流量争夺的继续,但争夺的阵地已经由一二线大城市转移到了下沉市场。今年8月,快手率先推出极速版,抖音则在8月末也推出了极速版。从产品体验来看,无论是页面的设计还是内容,抖音极速版、快手极速版与原产品之间没有太大的区别,唯一的改变是着重突出了“看视频领红包”这一功能。其实,这一功能在本质上与下沉巨头趣头条

  • 如何爬取当当网畅销书排行榜信息? requests + pyquery

    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_40313634/article/details/103099547''' 爬取当当网的五星图书排行榜的信息 ''' Max_Page=3#爬取前三页的排行榜信息 importrequests frompyqueryimportPyQueryaspq importjson defrequests_dangdang(url,headers=None,retry=3): for_inrange(retry): try: response=requests.get(url=url,headers=headers) ifresponse.status_code==200: response.encoding=response.apparent_encoding returnresponse.text exceptrequests.RequestExceptionase:

  • Java开源项目——源码阅读方法,二次开发方法

    一直以来,都想要阅读某些Java开源项目的源代码,甚至想要修改某些代码,实现对开源项目进行二次开发的目的。但总是不知从何入手,直接将开源项目的源代码导入Eclipse,总是会报很多错误,而无法编译。下面以Axis2源代码为例,做一个小实验例子,修改services/listServices请求的处理源码,使得原先仅支持WSDL方式描述的Web服务现在也支持OWL4WS的Web服务描述。看到文末有惊喜!第一步:安装maven安装maven实在是简单,从http://maven.apache.org/download.html下载最新的maven版本,然后解压,配置MAVEN_HOME和MAVEN_OPTS以及path环境变量即可。MAVEN_HOME指向maven的跟目录,MAVEN_OPTS配置maven执行时的参数,由于MAVEN默认设置的内存比较少,编译大项目时可能会出现OutofMemory的情况,如我没有设置MAVEN_OPTS而编译Axis2的源码时就出现了OutofMemory的情况,最后配置path,指向%MAVEN_OPTS%in即可。使得在命令行界面中能够直接使用m

  • Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身

    本文作者:CodingBlock文章链接:http://www.cnblogs.com/codingblock/p/8479282.html在Android中进程间通信是比较难的一部分,同时又非常重要,针对进程间通信,博主会用四篇文章来介绍,本篇文章为IPC系列的开篇,主要介绍一些IPC中用到的一些概念、基础等,目的是让读者朋友们在学习IPC之前对一些必要的知识有一个大体的把握。在Android中进程间通讯的方式有很多种,在后续的三篇中会分别介绍每一种方式的实现过程已经各自的优缺点。IPC是什么?IPC(全称:Inter-ProcessCommunication)为进程间通讯,指至少两个进程间传递数据或信号的一些技术活方法。注:进程间通讯是至少两个进程之间发生的事情,我们通常习惯性的会把一方称为客户端,一方称为服务端,在后续的文章也会多次出现客户端和服务端,没接触过进程间通信的童鞋可能一开始会不太习惯,这里要注意一下。为什么要使用IPC?无论是在计算机系统还是Android系统中每个进程都有自己一部分独立的系统资源,彼此是隔离的,为了能是不同的进程互相访问资源并协同工作,就需要用到进程

  • 基于java的商业智能工具Top 5

    在软件和IT领域,性能和收入是由商业智能软件来衡量的。但是,在Java世界中,市场上有很多开源解决方案。这些是开放源码项目使用的前5个和最流行的Java工具。PentahoBI——它基于在JBossweb服务器上运行的Java企业版。这用于集成数据和数据挖掘流程,有助于处理复杂的业务分析领域。此外,它还拥有强大的工作流自动化机会基础,使其适合于报告需求和分析。这在SourceForge.net上每周有超过10,000次的下载,JasperReportsServer每周大约有2,800次的下载。JasperReportsServer——这是一个流行的BI工具包,基于Mondrian和JPivot用于OLAP。这可以用于分析和使用非关系(NoSQL)数据库,如Cassandra、CouchDB、MongoDB、Neo4j和Riak。JasperReportsServer在OpenLogic中获得了很高的分数,和上面提到的Pentaho相比,有更好的用户界面和干净的文档。Splunk-这是另一个BI工具,它与其他工具非常不同,它允许没有任何麻烦的您收集、索引和搜索您的组织的数据。麦肯尼公司企

  • .Net GDI+的图件绘制平台(二)-图元属性设置对话框

    接下来我们介绍的项目是绘图库中的UI项目,这个项目主要包含两部分内容。第一部分是图元的属性对话框,选中某个图元后右键弹出窗体来设置这个图元的大小、线宽、各种颜色等绘制相关的属性。第二部分是用来保存图元属性的对象。如下:主要有以下几类的对象:DashBoard里是仪表盘绘图对象(由多个不同类型图元组合而成)属性DigitPanel是数字显示屏的绘图对象属性Lane目录有多个图元属性对象,包含图道属性、图道坐标刻度属性、曲线属性等Layout目录中有Container容器布局相关的属性对象。Share目录中有属性对象的基类SettingBase类和其它对话框基类对象类图如下:部分代码示例:publicclassSettingBase { protectedSettingBase() { State=EEntityState.Unknown; LaneCategory=ELaneCategroy.CurveLane; Name=string.Empty; LaneWidth=180; CanvaCategory=ECanvaCategory.Blank; DataProvideMethod=

  • 中国AI哪里强?清华给各个城市排了排座次

    本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处AI哪里搞得好?经济基础不能忽略,群众基础也很重要。有人说首都北京永远第一,有人觉得深圳才是王者,也有人举出上海、杭州和广州……抑或认为成都、重庆、青岛都有机会。总之,大家心里各自藏着一杆秤,谁也不服谁。不要再争了!就在最近,清华大学以报告的形式,提供了一份“大数据”参考。在这份报告中,清华大学经管学院结合百度关键词搜索数据,给各个呼喊人工智能的中国城市排了排座次。服不服?到底谁才是天下第一?吃瓜群众哪里多第一项是基础认知,参照数据是百度中人工智能基本认知类词汇的搜索量。例如“人工智能”、“AI”等就算基础词汇。直白来说,这个数据反映了哪里的群众对AI的好奇心最旺盛。当然,你可能说哪个城市总人口多,哪里吃瓜群众就多。但,并不完全这样。前10名分别是:北京、上海、成都、广州、深圳、武汉、杭州、西安、天津,郑州。所以你看,成都直逼北京、上海之后,连深圳、杭州等互联网巨头盘踞城市都难与争锋。而且之前把AI喊得响亮的几座城市,意外没进前10。比如南京、合肥、苏州,以及青岛……如果按照南北方进行对比,清华还给出结论说:长江

  • Spring 源码(4)在Spring配置文件中自定义标签如何实现?

    Spring配置文件自定义标签的前置条件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.htmlSpringBeanFactory的创建过程中了解了BeanDefinition的加载和BeanFactory的创建,并且提到了Spring留了一个扩展点就是用户可以自定义标签进行解析BeanDefinition。 基于Spring源码在处理定制的标签时是通过定制的命名空间处理器和xsd文件进行解析的,在spring的classpath下的META-INF/spring.schemas和META-INF/spring.handlers,并且需要将标签的解析器注册到BeanDefinition的解析器中,这样说起来比较抽象,接下来我们自己定义一个标签就明了了。 定义标签属性类 创建一个需要解析的标签的属性,比如在Spring配置文件中经常看到的<context:component-scanbase-package="com.redwinter.test"/>,这里的component-scan就是标签属性。 /** *@aut

  • 在使用Ubuntu时……

    搜狗输入法 在线打摆 图片编辑 终于有好用的\(QQ\)了(sudodpkg-i) 因为【数据删除】,我的Ubuntu要手动更新:sudoaptupgrade \(Orthers\) 这个~ 还有这个~ 还有表情包呢QQwQ 来自D站的小家伙 良心图床 制图工具 \(Latex\)下写希腊字母 \(ACG\)资讯 \(Picture\) 伪\(P\)站 更加好用的OI工具 找资源 这是什么鬼玩意儿 又一图片网站 \(BZOJ\)数据下载 \(Game\) 绅士 \(Ten\)\(mail\) \(Tools\) \(Image\)\(Search\)\(Options\) \(SetupVPN\)

  • 电视剧《知否知否应是绿肥红瘦》快要来了,突然想起这本书我居然看过。。。。

    最近听说《知否知否应是绿肥红瘦》杀青了,这意味着不用多久应该能看到着不正剧了。 “这个故事,起始于一位盛六姑娘,也结束于一位盛六姑娘,最后她们都很幸福;所有的情感纷扰,起始于一个齐姓少年掀帘而入的一个下午,也结束于这个少年的过世,他最后是否幸福,谁也不知道;我们的怀念,起始于一个家族的即将兴盛,也结束于这个家族的花到荼靡。”希望开拍能对得起作者最后这段话。 最初看这部小说,还是因为女朋友的关系,她看得津津有味,还和我讲得义愤填膺,让我没办法不去看一看,究竟是个什么故事,让这小妮子这么上劲。看完发现还真是个好故事,虽然单薄了些,也不失为网文届一股清流。 看看剧照吧。        

  • EPP3怎么安装SVN(EclipsePHP Studio 3.0)

    如果你和我一样,喜欢用eclipse,你想用用他来开发PHP,那么EPP是一个不错的选择(个人觉得,中文版的有点不习惯) 我们一般都用svn来进行版本控制和代码共享,但是用epp3的时候会遇到这么一个问题,那就是他没有集成svn,并且不能安装新的插件 你在点击安装新软件的时候会出现以下情况 epp3不让你安装新的软件 解决办法如下: 1.去下载org.eclipse.equinox.p2.engine.zip,替换掉原来的(路径为:根目录\p2\下),下载地址http://download.csdn.net/download/misul/7917775 替换后如果你在点击安装新软件的话就不会出现这种情况了 2.然后点击“安装新软件...”,开始安装svn插件,注:如果自己会安装svn插件的话可以略过,自行安装即可 方法1.点击“添加”,会弹出一个对话框,名称那你自己起个名字,知道他是svn插件就行了   位置那点击“Archive...”,选择svn-eclipse-site-1.6.10.zip的路径,下载地址:http://download.csdn.net/download/m

  • GCC的gcc和g++区别-源文件命名规则

    转载:http://www.cnblogs.com/samewang/p/4774180.html 看的Linux公社的一篇文章,觉得不错,内容复制过来了。 其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。 先描述一下今天遇到的错误: 因为以前写程序的时候,写的都是cpp文件,然后就直接使用g++编译,没出错,也就没有在意过这些问题,今天有一个c文件,但里面包含后STL中的vector语法,想着使用gcc来编译,结果报错了,报错是:找不到vector。 什么是gcc/g++ 首先说明:gcc和GCC是两个不同的东西 GCC:GNUCompilerCollection(GUN编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。 gcc是GCC中的GUNCCompiler(C编译器) g++是GCC中的GUNC++Compiler(C++编译器) 一个有趣的事实就是,就本质而言,gcc和g++并不是编译器,也不是编译器的集合,它们只是

  • 【CV算法基础】直方图的定义与扩展

    前言 直方图、直方图归一化、直方图均衡化,使用情况,优缺点;图像增强;全局、局部增强; 直方图 离散函数,图像中每个灰度级的像素个数; 归一化直方图 图像中每个灰度级发生的概率估计值; 基本灰度级特征:暗、亮、低对比度、高对比度; 直方图均衡化(线性化) 概率密度函数PDF;累积分布函数CDF;均匀概率密度函数;变换(映射);均匀直方图; 直方图匹配(规定化)   做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/

  • Visual Studio 2017 离线安装包

    https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio?view=vs-2019 https://www.jianshu.com/p/d13d59dea712

  • BAT加密最终版

    %%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a%%a cls @echooff ::color2a :start cls echo**************************************************************************

  • Spring Boot 整合监听器

    Listener是servlet规范中定义的一种特殊类,用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件,监听域对象的属性发生修改的事件。用于在事件发生前后做一些必要的处理。 对ServletContext的监听 ServletContextListener:Servlet上下文初始化和销毁时的监听器。 ServletContextAttributeListener:Servlet上下文参数变化时的监听器。 对HttpSession的监听 HttpSessionListener:HttpSession初始化和销毁时的监听器。 HttpSessionAttributeListener:HttpSession参数变化时的监听器。 对ServletRequest的监听 ServletRequestListener:ServletRequest初始化和销毁时的监听器。 ServletRequestAttributeListener:ServletRequest参数变化时的监听器。  

  • Git学习笔记

      Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。   分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(gitclone),在本地机器上拷贝一个完整的Git仓库。   Git的工作原理框图如下所示:      首先,介绍一下在GitBash中使用的Git相关命令。 1、Git配置 gitconfig--globaluser.name"Yourname" gitconfig--globaluser.email"Youremail" gitconfig--globalcolor.uitrue gitconfigformat.prettyoneline#显示历史记录时,只显示一行注释信息复制 2、本地仓库管理   建立并初始化本地Git仓库(cd到需建立仓库的目录下): gitinit复制   添加工作区中文件到暂存区(index或stage): gitadd<filename>#可添加多个文件复制  

  • java修饰符以及面向对象的一些总结

    修饰符的作用 修饰符的分类和作用 java当中修饰符根据功能可分为两类,一类是访问全权限修饰符,另一类是非访问权限修饰符。 访问权限修饰符主要有四种:即public、protected、default(不指定访问权限修饰符时)、private,四种修饰符访问权限从左向右依次递减。非访问权限修饰符常见的有static、final、abstract、synchronized、volatile五种修饰符,其中最后两种修饰符设计线程编程,此处不做讲解。 根据修饰作用对象的不同,修饰符又可以分为类修饰符,方法、变量修饰符。其中类修饰符包括:public、default、abstract、final。而方法、属性除了类所具有的修饰符外,还可以用private、static修饰。 综上所述,java修饰符种类放多,不同的修饰符具有不用的作用,同时其作用对象也有所不同,在学习过程中要格外注意。 修饰符的具体功能以及作用对象 访问权限修饰符:控制类、方法、变量的访问权限 修饰符 类 方法和变量 public 包内外的类都可以访问 包内外的类都可以访问 protected 不可以

相关推荐

推荐阅读