首页 文章 精选 留言 我的

精选列表

搜索[基础软件],共10000篇文章
优秀的个人博客,低调大师

word2vec 入门基础(一)

一、基本概念 word2vec是Google在2013年开源的一个工具,核心思想是将词表征映 射为对应的实数向量。 目前采用的模型有一下两种 CBOW(Continuous Bag-Of-Words,即连续的词袋模型) Skip-Gram 项目链接:https://code.google.com/archive/p/word2vec 二、背景知识 词向量 词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量 就是把一个词表示成一个向量。这样做的初衷就是机器只认识0 1 符号,换句话说,在自然语言处理中,要想让机器识别语言,就需要将自然语言抽象表示成可被机器理解的方式。所以,词向量是自然语言到机器语言的转换。 词向量有一下两种 One-hot Representation 向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置,例如 “话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...] “麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...] 优点: 如果使用稀疏方式存储,非常简洁,实现时就可以用0,1,2,3,...来表示词语进行计算,这样“话筒”就为3,“麦克”为8. 缺点:1.容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;2.任何两个词都是孤立的,存在语义鸿沟词(任意两个词之间都是孤立的,不能体现词和词之间的关系)。 Distributional Representation 最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation的缺点。解决“词汇鸿沟”问题,可以通过计算向量之间的距离(欧式距离、余弦距离等)来体现词与词的相似性 。 其基本想法是直接用一个普通的向量表示一个词,这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, ...],常见维度50或100。 优点:解决“词汇鸿沟”问题 缺点:训练有难度。没有直接的模型可训练得到。所以采用通过训练语言模型的同时,得到词向量 。 当然一个词怎么表示成这么样的一个向量是要经过一番训练的,训练方法较多,word2vec是其中一种。值得注意的是,每个词在不同的语料库和不同的训练方法下,得到的词向量可能是不一样的。 词向量在机器翻译领域的一个应用,就是google的TomasMikolov 团队开发了一种词典和术语表的自动生成技术,该技术通过向量空间,把一种语言转变成另一种语言,实验中对英语和西班牙语间的翻译准确率高达90%。 论文http://arxiv.org/pdf/1309.4168.pdf在介绍算法工作原理的时候举了一个例子:考虑英语和西班牙语两种语言,通过训练分别得到它们对应的词向量空间 E 和 S。从英语中取出五个词 one,two,three,four,five,设其在 E 中对应的词向量分别为 v1,v2,v3,v4,v5,为方便作图,利用主成分分析(PCA)降维,得到相应的二维向量 u1,u2,u3,u4,u5,在二维平面上将这五个点描出来,如下图左图所示。类似地,在西班牙语中取出(与 one,two,three,four,five 对应的) uno,dos,tres,cuatro,cinco,设其在 S 中对应的词向量分别为 s1,s2,s3,s4,s5,用 PCA 降维后的二维向量分别为 t1,t2,t3,t4,t5,将它们在二维平面上描出来(可能还需作适当的旋转),如下图右图所示: 观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,这说明两种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在词向量空间中利用距离刻画词之间相似性的合理性。 语言模型 语言模型其实就是看一句话是不是正常人说出来的。意义在于机器翻译、语音识别得到若干候选之后,可以利用语言模型挑一个尽量靠谱的结果。在 NLP 的其它任务里也都能用到。 用数学符号描述为:给定一个字符串"w1,w2,...,wt",计算它是自然语言的概率P(w1,w2,…,wt)。w1到wT 依次表示这句话中的各个词。有个很简单的推论是: p(s)=p(w1,w2,⋯wT)=p(w1)p(w2|w1)p(w3|w1,w2)⋯p(wt|w1,w2,⋯wT−1) 上面概率公式的意义为:第一次词确定后,看后面的词在前面次出现的情况下出现的概率。 例如,有个句子“大家喜欢吃苹果”,一共四个词"大家,喜欢,吃,苹果" P(大家,喜欢,吃,苹果)=p(大家)p(喜欢|大家)p(吃|大家,喜欢)p(苹果|大家,喜欢,吃) p(大家)表示“大家”这个词在语料库里面出现的概率; p(喜欢|大家)表示“喜欢”这个词出现在“大家”后面的概率; p(吃|大家,喜欢)表示“吃”这个词出现在“大家喜欢”后面的概率; p(苹果|大家,喜欢,吃)表示“苹果”这个词出现在“大家喜欢吃”后面的概率。 把这些概率连乘起来,得到的就是这句话平时出现的概率。 如果这个概率特别低,说明这句话不常出现,那么就不算是一句自然语言,因为在语料库里面很少出现。如果出现的概率高,就说明是一句自然语言 为了表示简单,上面的公式用下面的方式表示 p(s)=p(w1,w2,⋯wT)=∏i=1Tp(wi|Contexti) 其中,如果Contexti是空的话,就是它自己p(w),另外如“吃”的Context就是“大家”、“喜欢”,其余的对号入座。 现有模型有 N-gram模型 N-pos模型 ... Bengio的NNLM C&W 的 SENNA M&H 的 HLBL Mikolov 的 RNNLM Huang 的语义强化 N-gram 模型 接下来说 p(wi|Contexti) 的计算方法,上面看的是跟据这句话前面的所有词来计算,这样计算就很复杂,像上面那个例子得扫描四次语料库,这样一句话有多少个词就得扫描多少趟。语料库一般都比较大,越大的语料库越能提供准确的判断。这样计算开销太大。 可以想到的优化方法就是提前将p(wi|Contexti) 提前算好了,那么根据排列组上面的来算,对于一个只有四个词的语料库,总共就有4!+3!+2!+1!个情况要计算,那就是24个情况要计算;换成1000个词的语料库,就是∑i=11000i! 个情况需要统计,对于计算机来说,这根本不可能。 所以诞生了N-gram模型是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese Language Model)。汉语语言模型利用上下文中相邻词间的搭配信息,在需要把连续无空格的拼音、笔画,或代表字母或笔画的数字,转换成汉字串(即句子)时,可以计算出最大概率的句子,从而实现从到汉字的自动转换,无需用户手动选择,避开了许多汉字对应一个相同的拼音(或笔画串、数字串)的重码问题。 我们给定一个词,然后猜测下一个词是什么。当我说“艳照门”这个词时,你想到的下一个词时什么?我想大家很有可能会想到“陈冠希”,基本上不会有人想到“陈志杰”吧。N-Gram模型的主要思想就是这样的。 上面的context都是这句话中这个词前面的所有词作为条件的概率,N-gram就是只管这个词前面的n-1个词,加上它自己,总共n个词,计算p(wi|Contexti) 只考虑用这n个词来算,换成数学的公式来表示,就是 p(wi|Contexti)=p(wi|wi−n+1,wi−n+2,⋯,wi−1) 一般来说,n取2或者3 假设词表中词的个数 |V| = 20,000 词,那么有下面的一些数据。 照图中的数据看去,取n=3是目前计算能力的上限了。在实践中用的最多的就是bigram和trigram了,而且效果也基本够了。 如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram。即 P(T) = P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1) 如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。 那么我们怎么得到P(Wn|W1W2…Wn-1)呢?一种简单的估计方法就是最大似然估计(Maximum Likelihood Estimate)了。即P(Wn|W1W2…Wn-1) = (C(W1 W2…Wn))/(C(W1 W2…Wn-1)) 下面我们用bigram举个例子。假设语料库总词数为13,748 P(I want to eat Chinese food) =P(I)P(want|I)P(to|want)P(eat|to)P(Chinese|eat)*P(food|Chinese) =(3437/13748)*(1087/3437)*(786/1215)*(860/3256)*(19/938)*(120/213) =0.000154171 N-gram模型也会有写问题,总结如下: 1、n不能取太大,取大了语料库经常不足,所以基本是用降级的方法 2、无法建模出词之间的相似度,就是有两个词经常出现在同一个context后面,但是模型是没法体现这个相似性的。 3、有些n元组(n个词的组合,跟顺序有关的)在语料库里面没有出现过,对应出来的条件概率就是0,这样一整句话的概率都是0了,这是不对的,解决的方法主要是两种:平滑法(基本上是分子分母都加一个数)和回退法(利用n-1的元组的概率去代替n元组的概率)

优秀的个人博客,低调大师

07HTML基础-meta其它类型

meta其它类型 Keywords类型 作用: 告诉搜索引擎当前网页的关键词, 在SEO中非常重要, 能够提高搜索命中率, 让别人更容易找到你 格式: <meta name="keywords" content="IT前言技术、iOS技术、HTML5技术、Android技术" /> Descriiption类型 作用: 告诉搜索引擎当前网页的主要内容, 在SEO中非常重要, 当别人在搜索引擎中搜索到你的网站时会自动作为对你网站的描述信息展示给用户, 能够提高搜索命中率, 让别人更容易找到你 格式: <meta name="description" content="江哥热爱于IT前言技术、iOS技术、HTML5技术、Android技术研究" /> Author类型 作用: 告诉搜索引擎当前网页的作业, install B专用 格式: <meta name="author" content="Jonathan_Lee" /> Refresh类型 作用: 告诉浏览器多久自动刷新一次页面并指向新页面, 常用于新老域名交替时, 访问老域名自动跳转到新域名, 或用语一些需要定时刷新的聊天室等. 格式: <meta http-equiv="Refresh" content="2;URL=http://www.baidu.com/"> Robots类型 作用: 告诉搜索引擎当前网页的作业, 写给网络爬虫看的内容 格式: <meta name="robots" content="all|none|index|follow|noindex|nofollow" /> index: 告诉搜索引擎允许抓取当前页面 noindex:告诉搜索引擎不允许抓取当前页面 follow: 告诉搜索引擎可以从当前页面上找到链接,然后继续访问抓取下去 nofollow:告诉搜索引擎不允许从当前页面上找到链接, 拒绝其继续访问 all: 告诉搜索引擎允许抓取当前页面, 并且允许从此页找到链接继续访问 none: 告诉搜索引擎不允许抓取这个页面,并且不允许从此页找到链接、拒绝其继续访问 常见组合 <META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">:可以抓取本页,而且可以顺着本页继续索引别的链接 有可以写成<META NAME="ROBOTS" CONTENT="ALL"> <META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">:不许抓取本页,但是可以顺着本页抓取索引别的链接 <META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">:可以抓取本页,但是不许顺着本页抓取索引别的链接 <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">:不许抓取本页,也不许顺着本页抓取索引别的链接。 注意事项: 不要把两个对立的反义词写到一起,例如 例如<META NAME="ROBOTS" CONTENT="INDEX,NOINDEX"> 学习交流方式: 1.微信公众账号搜索: 李南江(配套视频,代码,资料各种福利获取) 2.加入前端学习交流群: 302942894 / 289964053 / 11550038

优秀的个人博客,低调大师

Docker基础之八: 容器的网络

容器的网络 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 根据之前的教程我们只是运行了简单的应用程序。之前我们编译了自己的image,在本节中我们将讲述如何管理容器的网络。 1 容器命名 如果你仔细查看docker ps的输出,你会看到docker自动生成了容器的名称: root@gctest:~/.ghostcloud/bin# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09475612bb40 ghostcloud.cn:5005/gcali:1.0.8 "/usr/local/ghostclou" 2 minutes ago Up 2 minutes gcsagent f8eb8005de81 myimage "/bin/sh -c 'echo 'he" 15 minutes ago Exited (0) 15 minutes ago compassionate_cray 46ffa55f5680 ubuntu "/bin/bash" 37 minutes ago Exited (0) 29 minutes ago lonely_mirzakhani 40b4301839a1 ubuntu "echo hello-world" 40 minutes ago Exited (0) 40 minutes ago compassionate_torvalds compassionate_cray就是一个名称。通过容器命令,可以提供两个有用的功能: 默认你是通过容器的ID进行操作,你可以为特定容器设置容器名称,比如如果容器是一个web应用,你可以把它标记为web。 容器之间,可以通过名称进行相互的引用和链接. 容器的名称通过--name来进行设置: $ docker run -d -P --name web training/webapp python app.py 我们可以通过docker inspect来查看容器的详细参数: ``` ##2 容器的默认网络 Docker自身通过网络驱动来管理网络。默认Docker提供两种网络驱动,bridge和overlay。你可以自己编写网络驱动作为插件,但是这个工作比较麻烦,这儿就省略了。 Docker安装后,会自动生成3种网络: root@gctest:~# docker network ls NETWORK ID NAME DRIVER 782f465fa194 none null 6887a082de45 host host 6e75573f448f bridge bridge bridge是一种特殊的网络模式,这是默认的网络模式。我们可以通过inspect来查看详细信息: ```Bash root@gctest:~# docker network inspect bridge [ { "Name": "bridge", "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.17.0.1/16", "Gateway": "172.17.0.1" } ] }, "Containers": { "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": { "EndpointID": "48fbb1fa53db756cc4afdf4db81182bd4347bf208dba49ed27c3187ea2d6c8c0", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" } }, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" } } ] 从上面我们可以看出,桥接的网卡是172.17.0.1/16,网关是172.17.0.1。其中有一个容器连接到了这个桥接网络中,它的ip是172.17.0.2/16。 如果你想将容器从网络中移除,你可以使用: root@gctest:~# docker network disconnect bridge 85a5 root@gctest:~# docker network inspect bridge [ { "Name": "bridge", "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.17.0.1/16", "Gateway": "172.17.0.1" } ] }, "Containers": {}, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" } } ] 3 创建自己的桥接网络 Docker原生支持bridge和overlay网络,bridge只能在单个主机上使用。overlay可以在多台主机间使用,这部分将在后续进行详细讲解。下面我们就来建立一个自己的网络: root@gctest:~# docker network create -d bridge mybridge 36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9 root@gctest:~# docker network ls NETWORK ID NAME DRIVER 6e75573f448f bridge bridge 782f465fa194 none null 6887a082de45 host host 36328af2a0b1 mybridge bridge -d表示使用已有的bridge来创建新的网络,你也可以省略该参数,这个是默认参数。 4 添加容器到网络 默认情况,容器使用的是同一个bridge网络,这样可能有一定的安全隐患,为了做到完全的隔离,我们可以自己建一个桥接网络,然后在启动容器时将容器加入到自己的网络中。比如: root@gctest:~# docker run -it --net=mybridge ubuntu /bin/bash 如果你inspect你的网络,你会看到详细的连接信息: root@gctest:~/.ghostcloud/bin# docker network inspect mybridge [ { "Name": "mybridge", "Id": "36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ {} ] }, "Containers": { "2c1fda7b6efda429d2bf7c85a131200ee370512cea214a7fe423c28d952e1320": { "EndpointID": "1b988bffa26ca9e6ee3cbfc5081b8adb5dcb5cde359404ff6afb73fb954a2b93", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" }, "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": { "EndpointID": "0440158825ce6c1e6efc224238ab83084761a9c2e6fa28f162d2188e514aa737", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, "Options": {} } ] 如果启动时没有指定网络或想加入多个网络,可以通过connect命令加入。

优秀的个人博客,低调大师

Docker基础之五: 使用Docker容器

使用Docker容器 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 这一节我们将从运行一个简单的Hello world入手,来讲解如何使用容器。 1 运行Hello World root@shev:~# docker run ubuntu:14.04 echo hello-world hello-world root@shev:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0cef7fa7468d ubuntu:14.04 "echo hello-world" 3 seconds ago Exited (0) 2 seconds ago condescending_visvesvaraya 剖析: 本条命令启动ubuntu:14.04版本的镜像,并在其中运行打印hello world的命令; 由于我们的命令是一个简单的语句,并不会持续很长时间,当命令执行完毕时,容器就退出了 因此,我们通过docker ps –a可以看到容器的状态是停止状态 2 运行一个可交互的容器 之前的例子里面,容器在运行完指令后就自动退出了,那么我们可不可以运行一个可交互的容器呢? root@shev:~# docker run -it ubuntu /bin/bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu Digest: sha256:f91f9bab1fe6d0db0bfecc751d127a29d36e85483b1c68e69a246cf1df9b4251 Status: Downloaded newer image for ubuntu:latest root@558531c2b215:/# ll total 72 drwxr-xr-x 32 root root 4096 Dec 2 09:16 ./ drwxr-xr-x 32 root root 4096 Dec 2 09:16 ../ -rwxr-xr-x 1 root root 0 Dec 2 09:16 .dockerenv* -rwxr-xr-x 1 root root 0 Dec 2 09:16 .dockerinit* drwxr-xr-x 2 root root 4096 Oct 28 04:34 bin/ drwxr-xr-x 2 root root 4096 Apr 10 2014 boot/ drwxr-xr-x 5 root root 380 Dec 2 09:16 dev/ drwxr-xr-x 64 root root 4096 Dec 2 09:16 etc/ drwxr-xr-x 2 root root 4096 Apr 10 2014 home/ drwxr-xr-x 12 root root 4096 Oct 28 04:34 lib/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 lib64/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 media/ drwxr-xr-x 2 root root 4096 Apr 10 2014 mnt/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 opt/ dr-xr-xr-x 160 root root 0 Dec 2 09:16 proc/ drwx------ 2 root root 4096 Oct 28 04:34 root/ drwxr-xr-x 7 root root 4096 Oct 28 04:34 run/ drwxr-xr-x 2 root root 4096 Nov 10 00:35 sbin/ drwxr-xr-x 2 root root 4096 Oct 28 04:33 srv/ dr-xr-xr-x 13 root root 0 Dec 2 09:16 sys/ drwxrwxrwt 2 root root 4096 Oct 28 04:34 tmp/ drwxr-xr-x 11 root root 4096 Nov 10 00:35 usr/ drwxr-xr-x 12 root root 4096 Nov 10 00:35 var/ root@558531c2b215:/# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:648 (648.0 B) TX bytes:648 (648.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 剖析: 本例中,我们在ubuntu:latest镜像中,执行/bin/bash,由于bash本身是一个包含了交互的终端,因此我们可以长时间的运行容器; 但是,我们必须指定-it,同shell的stdiin和stdout绑定起来 进入容器后,我们实际进入了一个shell终端,里面不仅可以访问文件将,还有一个虚拟网卡和IP。这是不是跟一个linux主机是一样的呢? 3 在容器中运行一个后台守护进程 所谓后台守护进程,就是运行在后台,并不会阻塞当前的进程。 在后台运行一个脚本,每隔1秒打印一句hello world: root@shev:~# docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" ba50b5023bb15b50608d855671d40c09690f5b1a956a40e3544acde791e04aa3 查看后台的运行日志: root@shev:~# docker logs ba50 hello world hello world hello world hello world hello world hello world hello world 查看当前正在运行的容器列表: root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ba50b5023bb1 ubuntu:14.04 "/bin/sh -c 'while tr" 2 minutes ago Up 2 minutes ecstatic_bell e221abf45a0b ghostcloud.cn:5000/gcali:1.2 "/usr/local/ghostclou" 49 minutes ago Up 49 minutes gcsagent 停止指定的容器: root@shev:~# docker stop ba50 ba50 再次查看正在运行的容器: root@shev:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e221abf45a0b ghostcloud.cn:5000/gcali:1.2 "/usr/local/ghostclou" 50 minutes ago Up 50 minutes gcsagent 剖析: 本例中,我们通过-d属性,让容器运行在后台,我们并不进入容器内部 执行完毕后,返回了一个id,该id是容器的id。上面显示的是容器的完整id,但是我们实际操作的时候,一般可以只输入前面几位即可,docker会自动进行匹配 我们通过docker logs来查看容器运行的情况,也就是我们循环打印的日志 由于该容器是长时间运行的,所以我们可以通过docker ps,查看该容器 docker stop则是停止该容器,停止后,我们就看不到该容器了

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册