GVKun编程网logo

Java 学习汇总

16

在这里,我们将给大家分享关于Java学习汇总的知识,同时也会涉及到如何更有效地2018-cpp学习汇总、docker学习汇总、docker相关命令学习汇总、ElasticSearch中Api学习汇总(

在这里,我们将给大家分享关于Java 学习汇总的知识,同时也会涉及到如何更有效地2018-cpp学习汇总、docker学习汇总、docker相关命令学习汇总、ElasticSearch 中 Api 学习汇总 (46)的内容。

本文目录一览:

Java 学习汇总

Java 学习汇总

基础学习

  • OpenJDK 和 JDK 的区别详解
  • 十个最常用的JVM配置参数
  • QPS、TPS、并发用户数、吞吐量关系
  • Java8 内存结构
  • Java static 静态
  • Integer、new Integer() 和 int 比较

 

实战学习

  • Java 常用正则表达式
  • Java 可变参数方法
  • HashMap 遍历的5种最佳方式
  • List 初始化的五种方法
  • List 去重的五种方法
  • List 遍历删除
  • Java 三种 OutputStream 转 InputStream 方法
  • Java 常用的几个Json库性能对比

 

issues

  • 一个 Java 对象到底有多大?
  • Java中的深浅拷贝问题你清楚吗?
  • Java反射到底慢在哪?
  • Java 为什么序列化,反序列化有什么问题?
  • 为什么阿里巴巴不建议boolean类型变量用isXXX?
  • 为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?
  • Java8 为什么提供LocalDate、LocalTime、LocalDateTime时间类?
  • Java8 为什么会有StringJoiner辅助类?
  • 为什么ConcurrentHashMap的读操作不需要加锁?

 

2018-cpp学习汇总

2018-cpp学习汇总

1.boost的scoped_ptr在reset时会交换,如果和空指针交换,原数据在什么时候析构

92     void reset(T * p = 0) // never throws
 93     {
 94         BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
 95         this_type(p).swap(*this);
 96         int a= 10;
 97         a++;
 98         printf("%d\n",a);
 99     }
121     void swap(scoped_ptr & b) BOOST_NOEXCEPT
122     {
123         printf("swap begin\n");
124         T * tmp = b.px;
125         b.px = px;
126         px = tmp;
127         printf("swap end\n");
128     }

=========================
  7 struct p_file
  8 {
  9     p_file(const char * file_name)
 10     {
 11         cout<< "open file" << file_name << endl;
 12     }
 13     ~p_file()
 14     {
 15         cout << "close file" <<endl;
 16     }
 17 };

 38     boost::scoped_ptr<p_file> fp(new p_file("/tmp/a.txt"));
 39     fp.reset();
 40     cout << "111" <<endl;

open file/tmp/a.txt
swap begin
swap end
close file
11
111

会在swap结束后reset结束前析构,原因不明

  

docker学习汇总

docker学习汇总

学习思路: l Docker是什么? l Docker有什么特点? l Docker 怎么用? l 不论什么知识框架都要以官方文档为主 一、认识docker Docker的概念 Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器。 · Docker容器引擎:该引擎可以让开发者打包它们的应用和依赖包到一个可移植的容器中,然后将其发布到任何流行的Linux机器上。 · Docker Hub注册服务器:用户可以在该服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker,可实现软件的一次配置,处处运行。 Docker引擎可以将任何应用打包成一个轻量的、易移植的、隔离的容器。 通过标准的操作系统接口使得应用可以在各种运行环境下保持一致。 容器和虚拟机 Docker是容器的一种,容器是一种轻量级的虚拟技术,和容器对应的更为重量级的虚拟技术是虚拟机。 虚拟机是一种基于硬件的虚拟技术,它采用指令级的虚拟,完全虚拟一整套物理主机,包含cpu、内存、磁盘、网卡等设备,给用户呈现的就是一个物理主机的特性。用户可以在虚拟机里安装各种各样的操作系统,一切操作都看起来和真机一样。(第一类虚拟机管理程序,如VirtualBox和VMWare Workstation,它运行在操作系统之上。第一类虚拟机管理程序,如Xen,它直接运行在裸机上。) 容器是一种基于操作系统的虚拟技术,它运行在操作系统之上的用户空间,所有的容器都共用一个系统内核,甚至是公共库,容器引擎提供进程级别的隔离,让每一个容器都想运行在单独的系统之上,但又能共享很多底层资源。比起虚拟机,容器更为轻量、快速、易于管理。 除了Docker,常见的容器还有Solaris Zone、BSD jails、OpenVZ和LXC等。

更为详细的对比如下表:

Docker与容器 Docker早期是基于LXC(Linux Containers,LXC)4容器的,但是其具有很多LXC这类容器所没有的新特性。 · 跨平台的可移植性。Docker定义了一种统一标准的打包格式,将应用及其依赖打包进单个镜像中,该镜像可以在任何Docker可运行的机器间便携传输,并且在不同机器上,Docker隔离了应用与平台的直接联系,对配置进行了抽象,使得在任何平台上应用的运行环境都一样。LXC的配置却不是可移植的,它依赖于某台具体的机器。 · 面向应用。Docker是为优化应用部署而诞生的,LXC则是面向机器的,这是两者设计哲学上的不同。Docker面向应用的哲学体现在API、用户接口以及文档等各个方面,Docker都是为了更简单地做事。而LXC则是更关注于使用更少地cpu、更少地RAM,成为一个更轻量地机器。 · 版本控制。Docker地版本控制和git工具非常类似,Docker可以跟踪一个容器地版本信息,查看版本差异,提交和回滚版本等。所有地版本信息都将被记录,这样可以清晰地看到一个应用服务器地更改历史。 · 组建复用。Docker容器以组件式搭建,可以利用一个基础镜像构建更多的应用容器。 · 共享性。Docker用于一个公共的注册服务器。开发者上传它们的镜像,我们可以通过这些共享的镜像来进一步定制自己的镜像。Docker的注册服务器本身也是一个开源项目,所以任何人都可以下载源码后在自己的网络中部署自己的注册服务器。 · 工具生态系统。Docker提供了API以供自动化创建和部署容器,而越来越多的工具加入到Docker之中来扩展它的能力,Docker已经形成了自己的软件工具生态圈。 Docker的组件 Docker采用的是C/S架构,Docker客户端,即Docker可执行程序,可以通过命令行和API的形式与Docker守护程序进行通信,Docker守护程序提供Docker服务。 Docker的特性 Docker是利用容器技术实现的一种轻量级的虚拟技术。 · 隔离性:Docker采用libcontainer作为默认容器,取代了之前的LXC。libcontainer的隔离性主要是内核的命名空间来实现的,具体有pid、net、mnt和uts等命名空间,它们将容器的线程、网络、消息、文件系统和主机名进行隔离。 · 可度量性:在Docker中,主要通过cgroups(控制组)来控制资源的度量和分配。 · 移植性:Docker利用AUFS来实现对容器的快速更新。AUFS是一种支持将不同目录挂载到同一虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。另外,AFUS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改内容将形成新的文件层,而不会影响原有的层。采用AUFS作为Docker容器的文件系统,具有如下好处 · 节省存储空间:多个容器可以共享一个基础镜像存储 · 快速部署 · 升级方便 · 增量修改 · 安全性 有关docker其他更详细的概述请结合docker官网学习 二、使用docker 1 安装docker

我这里以Centos 为例: 要在CentOS上开始使用Docker Engine,请确保您 满足先决条件,然后 安装Docker。 前提条件 操作系统要求 要安装Docker Engine,您需要一个CentOS 7的维护版本。不支持或未测试存档版本。 该centos-extras库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要 重新启用它。 overlay2建议使用存储驱动程序。 第一步:Yum安装gcc相关环境 yum -y install gcc yum -y install gcc-c++ 第二步:卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 第三步:安装yum-utils软件包 yum install -y yum-utils 第四步:设置镜像仓库。 #默认的 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #正确使用的国内的 yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 第五步:更新yum软件包索引 yum makecache fast 第六步:安装DOCKER引擎 安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本: yum install docker-ce docker-ce-cli containerd.io 第七步:启动Docker systemctl start docker 第八步:检查docker是否安装成功。 docker version docker run hello-world docker images 此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。 Docker Engine已安装并正在运行。您需要使用sudo来运行Docker命令。继续进行Linux后安装,以允许非特权用户运行Docker命令以及其他可选配置步骤。 2 卸载Docker 卸载Docker Engine,CLI和Containerd软件包: yum remove docker-ce docker-ce-cli containerd.io 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷: rm -rf /var/lib/docker 您必须手动删除所有已编辑的配置文件。 三、docker安装 MysqL 首先你对应的服务器要有docker引擎以及相关配置 首先下载自己需要的MysqL版本镜像 第一步:docker pull MysqL:5.7

第二步:启动MysqL

以上启动命令解释 -i:表示运行容器 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 -e:环境配置 --name :为创建的容器命名。 -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。 -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 以上数据卷挂载 先没有做容器内部文件与Linux文件的挂载映射

以上的MysqL容器已经创建成功 第三步:测试连接

以上已经进入容器内部

第四步:Navicat测试连接

初次安装可能因为权限不足不让远程访问:必须进容器内容设置并刷新权限: MysqL授权: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 刷新权限: flush privileges; 三、docker-compose部署项目 首先服务以上要有安装docker-compose以及相关配置: 首先手写一个springboot项目(集成Redis 计数器) 打开IDEA ->File->new->project 第一步:项目准备

下一步

下一步

下一步:

配置:application.properties 文件

编写controller

编写Dockerfile

编写docker-compose.yml

对于以上的文件如何编写docker-compose官网有详细说明 项目打包:  

打包成功:

第二步:将打包好的项目放到自己的服务器 我这里用的xftp: 1 首先找一个空的文件夹

2 把打包好的项目、dockerfile 、docker-compose.yml 放到新建的目录下

3 去服务器上检查是否把文件上传成功

第三步:启动项目 首先在服务器上要到所放文件的目录下 输入:docker-compose up 或者后台运行:docker-compose up -d

第四步:访问测试

希望我以上的docker学习的小小分享,希望能对大家有所帮助,有不到之处请大家批评指正!

docker相关命令学习汇总

docker相关命令学习汇总

docker 命令

#centos安装
yum search docker
yum -y install docker-io
#启动
service docker start

#版本展示
docker --version
docker version
docker info

#查看命令清单
docker --help
docker COMMAND --help
docker container --help

#容器运行hello world
docker run hello-world
#查看镜像
docker image ls
#查看容器
docker container ls
docker container ls --all
docker container ls -aq

#容器构建(friendlyhello)
docker build -t friendlyhello .
#容器启动
docker run -p 4000:80 friendlyhello
docker run -d -p 4000:80 friendlyhello
#查看停止容器
docker container ls
docker container ls -a
docker container stop 1fa4ab2cf395
docker container kill 1fa4ab2cf395
docker container rm 1fa4ab2cf395

#登陆login
docker login
#标记镜像
docker tag image username/repository:tag
#推送镜像
docker push username/repository:tag
#运行容器,没有就从仓库拉取
docker run -p 4000:80 username/repository:tag

#下载
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加权限
chmod +x /usr/local/bin/docker-compose
#创建软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#测试是否安装成功
docker-compose --version

#运行你的负载均衡应用
#初始化swarm集群
docker swarm init
#基于docker-compose创建
docker stack deploy -c docker-compose.yml getstartedlab
#查看服务
docker service ls
#查看服务的任务
docker service ps getstartedlab_web
#查看容器
docker container ls -q
#修改docker-compose之后,扩展用用程序
docker stack deploy -c docker-compose.yml getstartedlab
#关闭应用用docker stack命令
docker stack rm getstartedlab
#关闭swarm
docker swarm leave --force

swarm简介

一个swarm由多个节点组成,节点可以是物理的活着虚拟的机器。

运行docker swarm init命令能够开启swarm模式,并且使你当前的机器成为swarm manager,运行docker swarm join命令可以让其他机器加入到swarm中成为worker机器。

#创建集群
docker-machine create --driver virtualBox myvm1
docker-machine create --driver virtualBox myvm2
#查看vm列表并获取他们的ip地址
docker-machine ls
#初始化swarm并添加节点
docker-machine ssh myvm1 "docker swarm init --advertise-addr <myvm1 ip>"
docker-machine ssh myvm2 "docker swarm join \
--token <token> \
<ip>:2377"

#查看swarm节点
docker-machine ssh myvm1 "docker node ls"

#总结
docker-machine create --driver virtualBox myvm1 # Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
docker-machine env myvm1                # View basic information about your node
docker-machine ssh myvm1 "docker node ls"         # List the nodes in your swarm
docker-machine ssh myvm1 "docker node inspect <node ID>"        # Inspect a node
docker-machine ssh myvm1 "docker swarm join-token -q worker"   # View join token
docker-machine ssh myvm1   # Open an SSH session with the VM; type "exit" to end
docker node ls                # View nodes in swarm (while logged on to manager)
docker-machine ssh myvm2 "docker swarm leave"  # Make the worker leave the swarm
docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm
docker-machine ls # list VMs, asterisk shows which VM this shell is talking to
docker-machine start myvm1            # Start a VM that is currently not running
docker-machine env myvm1      # show environment variables and command for myvm1
eval $(docker-machine env myvm1)         # Mac command to connect shell to myvm1
& "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env myvm1 | Invoke-Expression   # Windows command to connect shell to myvm1
docker stack deploy -c <file> <app>  # Deploy an app; command shell must be set to talk to manager (myvm1), uses local Compose file
docker-machine scp docker-compose.yml myvm1:~ # copy file to node's home dir (only required if you use ssh to connect to manager and deploy the app)
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"   # Deploy an app using ssh (you must have first copied the Compose file to myvm1)
eval $(docker-machine env -u)     # disconnect shell from VMs, use native docker
docker-machine stop $(docker-machine ls -q)               # Stop all running VMs
docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images

ElasticSearch 中 Api 学习汇总 (46)

ElasticSearch 中 Api 学习汇总 (46)

TestQuery:http://app.yinxiang.com/shard/s34/sh/665797f5-de0b-4db2-b51c-8f404baf25d2/94aa4bee41e4a404f9921e85b6f011bd

TestFilter:http://app.yinxiang.com/shard/s34/sh/25bf71b1-45d7-4f6e-8740-bcd226cd4279/f1815b8eace5c53b7767ce6ef2f5a8a7

ESClient:http://app.yinxiang.com/shard/s34/sh/29c7b4c7-cbbf-4e6c-87fc-3a119d092d3c/cd5e9374ac9a762914407f0bfef1e4e6

SourceUtils:http://app.yinxiang.com/shard/s34/sh/5aa91ee8-cfbd-4a15-9c47-7fabe24cc817/2c75ebb9db106802e7017d13c544b001

properties:http://app.yinxiang.com/shard/s34/sh/2d6a8b43-58ca-4f5f-b2a4-d0bebb8d118f/9f6dfc1a0d7bf53b21f398838d4757e4



                                                                                                                            name:Xr

                                                                                                                             date :2014/08/22 周五 18:09

关于Java 学习汇总的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2018-cpp学习汇总、docker学习汇总、docker相关命令学习汇总、ElasticSearch 中 Api 学习汇总 (46)的相关信息,请在本站寻找。

本文标签: