时光小窝 - 编程日常
type: channel
link: http://www.mepoch.cn/index.php/category/编程日常
items: 一些对Java后端的看法
items: MBR和GUID格式的区别
items: openai的api搭建的机器人,用docker一键搭建
items: ChatGPT 中文食用指南
items: 软件过程模型
items: Leetcode 面试题17.19. 消失的两个数字
items: 浅谈 spring、springboot和springcloud
items: 剑指Offer
items: 工具软件合集
items: Docker网络

一些对Java后端的看法
type: item
date: 2023-10-30T19:51:48+08:00
description: 正好晚上睡不着，跟大家分享一下我所熟知的JAVA吧，仅供参考[受虐滑稽]。JAVA学习方向比较单一，基本上是就是做web后端。后端基本上是spring框架的天下，所以学习方向比较固定（就是学spring和spring的周边[受虐滑稽]）。spring系列框架从零几年就有了，到现在一直在更新，从ssh到ssm，然后springboot，到现在企业中比较常用的springcloud。spring框架可以说已经是一个庞然大物了，基本上很多你需要的东西，spring中都会集成，所以用起来很方便[机智]。除开spring框架，数据库也是JAVA开发中必不可少的一环，很多时候开发就是对数据库增删改查，常用的比如mysql、postgresql，工作中常常需要熟悉多种数据库，加上现在大力支持国产化，有时候也会接触很多的国产数据库，比如达梦、人大金仓、瀚高等[皱眉]。很多企业级软件还会使用redis来缓存部分数据，减少数据库的压力和提升响应速度，redis作为内存数据库，使用起来确实很轻量级，占用内存也小，相比于运行起来的spring程序，redis真的是小太多了[喝酒]。现在讲究前后端分离，前后端采用restful接口来进行交互，其实就是用nginx来代理前端的静态页面和后端服务，这里大概率会涉及到跨域问题和无法获取到客户端IP地址的问题，萌新处理起来可能有点费劲[难过]。nginx功能还是很强大的，除了代理HTTP，还可以代理传输层的TCP段或者UDP数据报。此外一般情况下可能还需要使用nginx来配置HTTPS服务，这里面又会涉及到证书的签发问题[无奈]。容器的概念很早就火了，使用docker能让安装部署变得非常简单，不需要再针对不同的Linux发行版准备不同的安装包了，docker能提供一致的环境，减轻运维支持的压力。就比如上面的nginx、redis很多时候需要针对现场环境来进行编译，导致运维成本提升，而在使用docker后直接下载通用的镜像文件即可，还是挺方便的[皱眉]。企业软件基本上都会部署在Linux系统上，常见的就是centos7，不过近些年很多企业会使用国产化操作系统，比如银河麒麟之类的，所以还是需要熟悉一下Linux命令和shell脚本，方便去排查问题[害羞]。现在有很多的消息队列，比如Kafka、rabbitMQ，我只用过Kafka[受虐滑稽]。队列就是先进先出，保证有序。消息队列是能保证有序同时有缓冲能力的一个中间件，他能将系统各部分功能进行解耦[哼唧]，提高系统健壮性和代码的可维护性。一般来说前后端分离后前后端接口统一后是各写各的，后端一般会用Postman来进行接口测试，Postman可以发送HTTP请求，接收响应，同时可以自由设置HTTP的头部，是大家都爱用的工具[哼唧]。做web开发是离不开IDE的，首先IDE推荐使用idea，大佬可以用vscode，idea上手就能用，vscode需要进行一下配置，比如安装spring插件、手动配置maven等，对新手可能有点费劲[真正的音乐]。目前的计算机行业内卷严重，就业形势远不如前几年，网络上也有前端已SI的说法（前端：勿Q我[挨打]）。这都是真的[表面开心]，今年大小公司基本上都在裁员，就业难度上升，学历变得很重要[喷血]。如果你已经在这个行业里，那也没有办法，各行各业都不行，也不止计算机[喷]。如果你想考研，考研难度也很大，计算机考研分数也是逐年上涨[t耐克嘴]。人生就一次，多看看风景，做自己想做的事情吧，祝大家身体健康[笑眼]。

MBR和GUID格式的区别
type: item
date: 2023-04-01T10:14:09+08:00
description: 1、分区表安全性不同。MBR的意思是“主引导记录”，它有自己的启动器，也就是启动代码，一旦启动代码被破坏，系统就没法启动，只有通过修复才能启动系统。而GUID分区表自带备份，在磁盘的首尾部分分别保存了一份相同的分区表。其中一份被破坏后，可以通过另一份恢复。2、支持磁盘容量大小不同。MBR分区方案无法支持超过2TB容量的磁盘,也即3TB硬盘以MBR分区方案分区,有三分之一容量会认不到。以GUID分区表(GPT)方案分区则可认到最大18EB(18X1024GB)容量的磁盘。3、分区个数不同。使用MBR分区表的硬盘最多只能划分4个主分区磁盘，而GPT分区表类型，此分区表类型不受分区个数限制。限制只在于操作系统——Windows支持最多128个GPT分区，而且你还不需要创建扩展分区。4、分区标识不同：GUID分区，每个分区可以有一个名称(不同于卷标)。5.MBR的意思是主引导记录，是传统分区类型，只支持一个硬盘上最多4个主分区，最大的缺点是不支持2TB以上硬盘容量，而GUID就是新兴的GPT方式，支持的主分区数量没有限制；MBR支持win7版本系统以下的32位和64位，而GUID支持win7版本以上的64位系统，不支持32位系统。6.MBR配合传统模式Legacy（传统的启动方式）,GUID配合UEFI（最新的启动方式）。简单地说吧：Legacy模式是之前老式电脑上用的；UEFI是现在新式电脑上用的,UEFI可以快速启动电脑,提升电脑的开机速度。7.电脑如果只有4GB运行内存的话建议安装32位操作系统，4GB以上的建议安装64位操作系统，因为32位操作系统只能运用电脑的4GB运行内存，简单的说就是如果你是8GB运行内存安装了32位操作系统，那么你的电脑此时只用了4GB运行内存，另外的4GB可能就浪费了没被运用。8.进入控制面板，点击系统与安全，双击系统就可以查看电脑是32位还是64位，32位操作系统最多支持4G内存，如果电脑内存大于4G就要用64位的系统了。64位操作系统支持4G，8G，16G，32G，64G，128G，256G内存，系统是双核以上肯定支持64位操作系统。9.64位操作系统，可以进行更大范围的整数运算可以支持更大的内存，比32位的系统，理论上快2倍，32位的操作系统民用化软件基本全部兼容，而64位的要差些。

openai的api搭建的机器人,用docker一键搭建
type: item
date: 2023-02-25T15:05:00+08:00
description: Github项目地址：https://github.com/Chanzhaoyu/chatgpt-web/在线演示地址：自建api代理version: '3' services: app: image: chenzhaoyu94/chatgpt-web:main ports: - 3002:3002 environment: # 二选一 OPENAI_API_KEY: xxxxxx # 二选一 OPENAI_ACCESS_TOKEN: xxxxxx # 反向代/理，可选 API_REVERSE_PROXY: xxx # 超时，单位毫秒，可选 TIMEOUT_MS: 60000 配置文件,把OPENAI_API_KEY填为你的就可以了,token能用 但是不稳定，还需要你的服务器能正常访问才行。最后再用nginx做个反代就能用域名访问了

ChatGPT 中文食用指南
type: item
date: 2023-02-25T12:38:00+08:00
description: ChatGPT 中文调教指南自建：chatgpt国内代理地址ChatGPT 中文调教指南**ChatGPT模型是由OpenAI训练的大型语言模型，能够生成类人文本。通过向它提供提示，它可以生成继续对话或扩展给定提示的响应。在此存储库中，您将找到可与 ChatGPT 一起使用的各种提示。我们希望您发现这些调教指南很有用，并能从使用 ChatGPT 中获得乐趣！**它能干什么? 直接问它**我是一个训练有素的大型语言模型，可以帮助你回答各种问题，比如关于政治、历史、科学、技术、艺术等方面的问题。我可以帮助你理解一些概念，并为你提供有价值的信息和见解。你可以尝试提出一些问题，看看我能不能帮到你。除了回答问题，我还可以帮助你写一些文章或小说。你只需要给我一些提示和背景信息，我就可以根据你提供的信息来为你写一篇文章或小说。我会尽力为你写出一篇优秀的文章，帮助你实现你的写作目标。除了回答问题和写作，我还可以帮助你进行文本生成。如果你想生成一些随机的文本，你可以向我提供一些模板和关键词，我就可以根据你提供的信息生成一些随机的文本。这些文本可能是一些名言、句子、段落或者小故事，它们都可以根据你提供的信息来生成。我会尽力为你生成有趣、有用的文本，帮助你实现你的目标。还有很多其他的事情，我可以帮助你完成。比如，如果你想知道某个单词的含义，你可以问我，我会告诉你这个单词的含义。如果你想了解一些事情的细节，你也可以问我，我会尽力为你提供有价值的信息。如果你有任何问题，都可以问我，我会尽力为你解答。**回答问题：我能够通过文字回答问题，为用户提供信息。提供建议：我能够根据用户的需求提供专业的建议。计算数学问题：我能够快速准确地计算简单的数学问题。翻译文本：我能够快速准确地翻译文本，让用户更好地理解内容。生成文本：我能够根据提供的信息生成文本，为用户提供更多信息。写作：我能够根据用户的需求进行写作，为用户提供高质量的文字内容。提供知识：我能够根据用户的需求提供专业的知识，为用户提供更多信息。提供解决方案：我能够根据用户提出的问题提供解决方案，帮助用户解决实际问题。提供娱乐：我能够根据用户的需求提供娱乐内容，为用户提供欢乐和放松。**聊天：我能够通过文字和用户进行交流，提供娱乐和放松。****正经指南充当英语翻译和改进者**我想让你充当英语翻译员、拼写纠正员和改进员。我会用任何语言与你交谈，你会检测语言，翻译它并用我的文本的更正和改进版本用英语回答。我希望你用更优美优雅的高级英语单词和句子替换我简化的 A0 级单词和句子。保持相同的意思，但使它们更文艺。我要你只回复更正、改进，不要写任何解释。我的第一句话是“istanbulu cok seviyom burada olmak cok guzel”充当英英词典(附中文解释)我想让你充当英英词典，对于给出的英文单词，你要给出其中文意思以及英文解释，并且给出一个例句，此外不要有其他反馈，第一个单词是“Hello"充当前端智能思路助手替代：百度、谷歌人工搜索我想让你充当前端开发专家。我将提供一些关于Js、Node等前端代码问题的具体信息，而你的工作就是想出为我解决问题的策略。这可能包括建议代码、代码逻辑思路策略。我的第一个请求是“我需要能够动态监听某个元素节点距离当前电脑设备屏幕的左上角的X和Y轴，通过拖拽移动位置浏览器窗口和改变大小浏览器窗口。”担任面试官示例：Java 后端开发工程师、React 前端开发工程师、全栈开发工程师、iOS 开发工程师、Android开发工程师等。我想让你担任Android开发工程师面试官。我将成为候选人，您将向我询问Android开发工程师职位的面试问题。我希望你只作为面试官回答。不要一次写出所有的问题。我希望你只对我进行采访。问我问题，等待我的回答。不要写解释。像面试官一样一个一个问我，等我回答。我的第一句话是“面试官你好”充当 JavaScript 控制台我希望你充当 javascript 控制台。我将键入命令，您将回复 javascript 控制台应显示的内容。我希望您只在一个唯一的代码块内回复终端输出，而不是其他任何内容。不要写解释。除非我指示您这样做。我的第一个命令是 console.log("Hello World");充当 Excel 工作表我希望你充当基于文本的 excel。您只会回复我基于文本的 10 行 Excel 工作表，其中行号和单元格字母作为列（A 到 L）。第一列标题应为空以引用行号。我会告诉你在单元格中写入什么，你只会以文本形式回复 excel 表格的结果，而不是其他任何内容。不要写解释。我会写你的公式，你会执行公式，你只会回复 excel 表的结果作为文本。首先，回复我空表。充当英语发音帮手我想让你为说汉语的人充当英语发音助手。我会给你写句子，你只…

软件过程模型
type: item
date: 2022-10-23T17:11:58+08:00
description: 一、软件危机与软件工程1.1.软件危机1.2.软件工程软件工程是将系统化的，严格约束的，可量化的方法应用于软件的开发，运行和维护，即将工程化应用于软件软件工程方法学包括三个要素：方法、工具和过程二、软件生命周期2.1.基本概念软件的产生直到报废的生命周期，包括：问题定义、可行性分析、需求分析、总体设计、详细设计、编码、测试、运行维护等阶段三、软件开发模型3.1.分类瀑布模型增量模型螺旋模型喷泉模型智能模型V模型快速应用开发模型构件组装模型敏捷方法和统一过程等3.2.瀑布模型也称为生命周期法，是结构化方法中最常用的开发模型，它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段定义阶段：软件计划、需求分析开发阶段：软件设计、程序编码、软件测试维护阶段：运行维护瀑布模型的优点：为项目提供了按阶段划分的检查点当前一个阶段完成后，只需要去关注后续阶段它提供了一个模板，这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导瀑布模型的缺点：各个阶段之间产生大量的文档，极大地增加了工作量由于开发模型是线型的，用户只有等到整个过程的末期才能见到开发结果，从而增加了开发风险不适应用户需求的变化，并且在需求分析阶段不可能完全获取在软件开发前期未发现的错误传到后面的开发活动中时，可能会扩散，进而可能会导致整个软件项目开发失败所以，瀑布模型适用于需求明确或很少变更的项目3.3.快速原型模型快速原型是利用原型辅助软件开发的一种新思想经过简单快速分析，快速建造一个可以运行的软件原型，以便理解和澄清问题，使开发人员与用户达成共识，最终在确定的用户需求基础上开发客户满意的软件产品原型可以为三类：探索型原型：主要用于需求分析阶段，目的是要弄清用户的需求，并探索各种方案的可行性。它主要针对开发目标模糊，用户与开发人员对项目都缺乏经验的情况，通过对原型的开发来明确用户的需求实验型原型：主要用于设计阶段，考核实现方案是否合适，能否实现。对于大型系统，若对设计方案心中没有把握时，可通过这种原型来证实设计方案的正确性演化型原型：主要用于及早向用户提交一个原型系统，该原型系统或者包含系统的框架，或者包含系统的主要功能，在得到用户的认可后，将原型系统不断扩充演变为最终的软件系统它将原型的思想扩展到软件开发的全过程3.4.演化模型也称为变换模型，根据用户的基本需求，通过快速分析构造出一个初始可运行版本(原型)，然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进，获得原型的新版本。重复这一过程，最终可得到令用户满意的软件产品快速原型模型时“抛弃式”的，演化模型是“渐进式”原型方法。演化模型特别适用于对软件需求缺乏准确认识的情况演化模型的优点：很早就可以验证是否符合产品需求风险管理可以在早期就获得项目进程数据，可据此对后续的开发进度作出比较切实的估算，增加项目成功的机率经验教训能反馈于本产品的下一个循环过程，提高质量效率心理上，开发人员早日见到产品的雏形，是一种鼓舞使用户可以在新的一批功能开发测试后，立即参加验证，以便提供非常有价值的反馈演化模型的缺点产品需求在一开始并不安全弄清楚的话，会给总体设计带来困难及削弱产品设计的完整性，并影像产品性能的优化如果缺乏严格的过程管理，这个生命周期模型可能退化为一种原始的无计划的“试 - 错 - 改”模式用户接触开发中的尚未测试稳定的功能，可能对用户产生负面的影响3.5.增量模型融合了瀑布模型的基本成分和原型实现的迭代特征，是第三种原型化开发方法，但它不是“抛弃式”的，也不是“渐进式”的。增量模型把软件产品划分为一系列的增量构件，第一个增量往往是核心的产品，即第一个增量实现了基本的需求。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能，这个过程在每一个增量发布后不断重复，直到产生了最终的完善产品增量模型与原型实现模型和其他演化方法一样，本质上是迭代的，但与原型实现不一样的是其强调每一个增量均发布一个可操作产品增量模型的特点是引进了增量包的概念，无须等到所有需求都出来，只要某个需求的增量包出来即可进行开发增量模型的优点：人员分配灵活，初期不用太大投入每隔一小段时间就提交用户部分功能，用户可以直观感受项目进展，及时试用产品功能有利于风险的把控增量模型将功能细化、分别开发的方法适应于需求经常改变的软件开发过程3.6.螺旋模型将瀑布模型和演化模型相结合，综合了两者的优点，并增加了风险分析。它以原型为基础，沿着螺线自内向外旋转，每旋转一圈都要经过制订计划、风险分析、实施工程及客户评价等活动，并开发原型的一个新版本。经过若干次螺旋上升的过程，得到最终的系统螺旋模型的优点：设计上灵活，可以在项目的各个阶段进行变更以小的分段来构建大型系统，使成本计算变得简单容易客户始终参与每个阶…

Leetcode 面试题17.19. 消失的两个数字
type: item
date: 2022-09-26T22:20:45+08:00
description: 面试题 17.19. 消失的两个数字给定一个数组，包含从 1 到 N 所有的整数，但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗？以任意顺序返回这两个数字均可。示例 1:输入: [1]输出: [2,3]示例 2:输入: [2,3]输出: [1,4]题解：感觉像是一道数学题，首先数组的个数为n，因为缺少两个数字，所有总数是n+2，可以通过（n+2+1）*（n+2）/2 算出数组的总和，例：高斯算1+..100的算法；然后减去原数组就可以的到缺失的两个数的和，然后再除以2，得到两个数，这两个数一个大于a/2,一个小于a/2，我们运用同样的算法，首先算出0-a/2的总和再减去原数组中小于a/2的元素，就得到其中一个数，再运用两数之和再减去这个数，就成功的到了这两个数；真的是秒啊啊 啊class Solution { public int[] missingTwo(int[] nums) { int totalLength = nums.length + 2; int totalSum = ((totalLength + 1) * totalLength) >> 1; for (int num : nums) totalSum -= num; int missingHalf = totalSum >> 1; int missingHalfSum = ((missingHalf + 1) * missingHalf) >> 1; for (int num : nums) if (num <= missingHalf) missingHalfSum -= num; return new int[] {missingHalfSum, totalSum - missingHalfSum}; } }

浅谈 spring、springboot和springcloud
type: item
date: 2022-09-26T21:15:00+08:00
description: 前言Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。Spring MVC是Spring的一个模块，一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver，开发web应用变得很容易。主要针对的是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。Spring配置复杂，繁琐，所以推出了Spring boot，约定优于配置，简化了spring的配置流程。Spring Cloud构建于Spring Boot之上，是一个关注全局的服务治理框架。Spring VS SpringMVC：Spring是一个一站式的轻量级的java开发框架，核心是控制反转（IOC）和面向切面（AOP），针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案；SpringMVC是Spring基础之上的一个MVC框架，主要处理web开发的路径映射和视图渲染，属于Spring框架中WEB层开发的一部分；SpringMVC VS SpringBoot：SpringMVC属于一个企业WEB开发的MVC框架，涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等，XML、config等配置相对比较繁琐复杂；SpringBoot框架相对于SpringMVC框架来说，更专注于开发微服务后台接口，不开发前端视图；SpringBoot和SpringCloud：SpringBoot使用了默认大于配置的理念，集成了快速开发的Spring多个插件，同时自动过滤不需要配置的多余的插件，简化了项目的开发配置流程，一定程度上取消xml配置，是一套快速配置开发的脚手架，能快速开发单个微服务；SpringCloud大部分的功能插件都是基于SpringBoot去实现的，SpringCloud关注于全局的微服务整合和管理，将多个SpringBoot单体微服务进行整合以及管理；SpringCloud依赖于SpringBoot开发，而SpringBoot可以独立开发；总结Spring是核心，提供了基础功能；Spring MVC 是基于Spring的一个 MVC 框架 ；Spring Boot 是为简化Spring配置的快速开发整合包；Spring Cloud是构建在Spring Boot之上的服务治理框架。

剑指Offer
type: item
date: 2022-09-17T23:00:00+08:00
description: [post cid="255" /]

工具软件合集
type: item
date: 2022-02-23T00:49:00+08:00
description: Jetbrains系列产品激活文件软件介绍JetBrains公司旗下的IntelliJ IDEAJava是广泛使用的编程语言开发撰写时所用的集成开发环境。JetBrains全家桶，包括IntelliJ IDEA , Pycharm , Webstorm , PhpStorm , Rider Clion , RubyMine, AppCode, Goland, DataGrip , Kotlin等15款产品。Jetbrains系列产品2022.2x最新激活文件，可以永久激活最新版本。下载地址12819 (lanzoui.com)Photoshop 2022 茶末余香增强版软件介绍Adobe Photoshop（简称PS）是全球最流行的图像处理软件，知名的图像及照片后期处理大型专业软件。Adobe? Photoshop 是 Adobe Creative Cloud 创意云里的图片处理编辑软件热门产品，Photoshop 是数字图象处理的业界标准，提供广泛的专业润饰工具套件，并集成了专门为激发灵感而设计的强大编辑功能。系统要求PS2022/PS2021最低硬件要求：支持SSE 4.2 及更高版指令集的 2GHz以上CPUPS2022/PS2021最低系统要求：Windows 10 2004 及更高版64位 不支持LTSC下载地址阿里云盘分享 (aliyundrive.com)Adobe Illustrator 2022特别版软件介绍Adobe Illustrator（简称AI）专业矢量图形设计软件，矢量绘图设计工具，设计师常用的矢量绘制软件。该软件广泛应用于广告设计、印刷出版、海报书籍、插画绘制、图像处理、PDF文档设计、WEB页面等设计，借助这款矢量绘图工具，可以制作适用于印刷,Web,视频和移动设备的徽标、图标、绘图、版式和插图。系统要求AI2022安装程序要求：Windows 10 版本 1909 或更高版64位，不支持LTSC版本AI2021安装程序要求：Windows 10 版本 1809 或更高版64位AI2020软件运行要求：Windows 8 , Windows 10 或更高版64位注：低于 1803 版本部分增效工具无法加载，需要 1809 或更高版AI2019安装程序和软件运行要求：Windows 7 或更高版64位下载地址天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 (189.cn)微软Office 2019 批量授权版软件介绍微软办公软件套件Microsoft Office 2019 专业增强版2022年8月批量许可版更新推送！Office2019正式版2018年10月份推出，主要为多人跨平台办公与团队协作打造。Office2019整合对过去三年在Office365里所有功能，包括对Word、Excel、PowerPoint、Outlook、Project、Visio、Access、Publisher的更新。Microsoft Office 2019 Professional Plus :Microsoft Word 2019Microsoft Excel 2019Microsoft PowerPoint 2019Microsoft Access 2019Microsoft OutlookMicrosoft PublisherSkype for BusinessOneDrive for business什么叫Office批量授权版？Volume（批量版也称商业版或大客户批量授权版，缩写VL或VOL）﹂适用企业客户批量许可部署的版本，无需转换可以通过使用KMS激活授权﹂安装可以自定义组件和安装位置，无需第三方部署工具[2010/2013/2016]Retail（零售版也称消费者版，32和64位共用安装包，要转换才能KMS激活）下载地址阿里云盘分享 (aliyundrive.com)WPS2019温州大学版v11.8.2.10154软件介绍WPS2019温州大学版是一款定制的WPS企业专用版，无广告，免序列号正版授权。WPS Office - 国产免费办公软件套件，全面涵盖文字处理、电子表格，演示文稿、PDF以及云服务等功能。WPS2019办公套件，具备强大插件平台支持、免费提供了海量在线存储空间及文档模板、全面支持PDF文档、兼容所有微软Office格式，支持所有平台，支持跨设备云同步，成为一站式免费和收费的办公软件套件。版本特点WPS温州大学专用版有什么特点？- 定制序列号许可，无需激活，授权长期有效服务！- 安装包具备专业增强版组件和政府OEM信息标识WPS个人版和WPS专业版/专业增强版有什么区别？1、授权方面：个人版供个人免费使用，不可商业用途；专业版则可以。2、功能方面：个人版无开发工具（…

Docker网络
type: item
date: 2022-01-23T23:20:00+08:00
description: Docker网络1.本地网络有三个网卡信息：lo：本地ens：虚拟机或云服务器地址docker0：Docker 网络地址2.Docker网络在 Docker 安装后，主机会为 Docker 分配一个网卡，名为 docker0 。该网卡使用桥接模式，使用的是 veth-pair 技术。那么什么是 veth-pair 技术呢？我们先拉取一个tomcat镜像再启动两个镜像我们再使用ip addr 发现我们启动一个容器docker 就会给我们分配一个ip然后我们再进入容器docker exec -it tomcat1 /bin/bash ip addr可以看到容器内 IP 与本机 IP 成对出现，这就是 veth-pair 技术。说明容器和容器之间是可以相互通信的，不是说容器和容器之间不是相互独立的吗？这就有些矛盾了，其实容器之间的网络通信并不是直接通信，而是通过网桥docker0来进行连接的如下面这张图容器A和容器B并不是直接通信的，而是通过docker0的桥接访问，而docker和物理网卡则是直接连接的3.容器之间的网络连接在之前容器连接的时候都是使用--linkdocker run -d -P --name tomcat2 --link tomcat1 tomcattomcat2 能够通过容器名访问 tomcat1，原理是 --link 通过 tomcat2 在自己容器 hosts 文件中配置了 tomcat1 IP 信息。4.自定义网络docker network lsbridge：桥接模式（默认）host：和宿主即共享none：不配置网络再创建自定义网络查看创建的网络[root@VM-4-15-centos ~]# docker network ls NETWORK ID NAME DRIVER SCOPE e92d77f0e787 bridge bridge local 65653698f6c4 host host local 3288e49a9e5f mynet bridge local ede6e6f51446 none null local [root@VM-4-15-centos ~]# docker network inspect 3288e49a9e5f [ { "Name": "mynet", "Id": "3288e49a9e5f9ef9ba7f333450b0cc46c47f63aed6645b25e4343c14a9aa1149", "Created": "2022-01-23T23:22:06.18520826+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.0.0/16", "Gateway": "192.168.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": {} } ]docker run -d -P --net=mynet --name=tomcat1 tomcat docker run -d -P --net=mynet --name=tomcat2 tomcat docker exec -it tomcat1 /bin/bash ping tomcat2发现可以ping通，说明处于同一网络环境这种方式可以实现不同集群使用不同的网络，保证集群网络的安全。