开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

CentOS 8 启用 NTP 服务

NTP 服务是什么和为什么我们需要在我们的服务器启用 NTP 服务? 可能很多人都不是非常了解,简单来说就是我们希望我们服务器的时间是准确的没有偏差的。这个的意义在数据插入和你程序取得计算机时间的时候是准确的。 比如说在 java 中如果 new date() 将会获得计算机当前的时间,如果当前的世界不准确的话,那么你插入数据库的时间就是混乱的。 同时,我们也希望我们的服务器的时区是准确的,比如说我们常使用的东八区和美国太平洋时间等。 如果计算机有什么原因导致时钟慢了,我们可以通过 ntp 进行同步。 所以针对服务器来说,在设置好时区后,NTP 服务是必须要启用的。 NTP 介绍 网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机[时间同步化的一种协议,它可以使计算机对其服务器或时钟源如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶意攻击。 NTP 的目的是在无序的 Internet 环境中提供精确和健壮的时间服务。 NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP 获得 UTC的 时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。 按照离外部 UTC 源的远近将所有服务器归入不同的 Stratum(层)中。Stratum-1在顶层,有外部 UTC 接入,而 Stratum-2 则从 Stratum-1 获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。 所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。 为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。NTP时间同步报文中包含的时间是格林威治时间,是从1900年开始计算的秒数。 安装 NTP 服务 在 CentOS 8 中,我们使用 chronyd 来提供 NTP 的服务。 在 CentOS 上执行下面的命令来进行安装,如果你已经安装过的话,系统会进行提示。 dnf install chrony 开启启用 NTP 服务 在 CentOS 8 中,执行下面的命令,来让服务进程随开机自动启动。 systemctl enable chronyd 上面的命令会随计算机开机的时候自动运行。 检查服务器 NTP 服务器地址 请执行下面的命令,确定 NTP 服务器的地址已经配置成功了。 chronyc sources 上面命令会显示默认配置的 NTP 服务器地址。     强制同步 在安装操作系统后,可能会遇到时间不准确的情况。 可以使用下面的命令对服务器的世界进行强制同步一次。 chronyc -a makestep 服务器的输入内容是: [root@vps-c853c8ac home]# chronyc -a makestep 200 OK [root@vps-c853c8ac home]# 然后可以在服务器上执行 date +%z 以确定当前的时区和你可用使用 date 确定当前服务器的时间。 date 通过这个设置,我们就可以在服务器上使用 NTP 进行同步了,你就不需要对服务器的时间进行调整了。 https://www.ossez.com/t/centos-8-ntp/555

2020年10月06日 0Comments 586Browse 0Like Read more
Computer Science

Discourse 如何使用命令行方式进行恢复

本文主要用于说明如何从命令行工具的方式中恢复 Discourse,以及我们在备份和恢复的过程中遇到的坑和解决办法。 恢复前需要的准备工作 在新服务器上安装完整和全新的 Discourse,这个安装成功后不需要通过 UI 前台进行用户注册。 备份和获得备份文件。 确定你现在运行的 Discourse 版本是最新的版本,如果你的 Discourse 不是最新的版本,你需要先进行升级。 安装权限的 Discourse 因为 Discourse 必须使用域名公共网络访问才能完整安装。如果你的站点比较大的话,你需要考虑这个问题。你需要考虑修改 DNS 的配置,让你的 Discourse 能够通过公共网络访问,或者你的域名将会在访问的时候出现你 Discourse 正在安装的提示。 这部分的操作按照完整的 Discourse 安装方式进行就可以了,你不需要进行任何操作,你也不需要在安装成功后注册管理员账号。 请注意安装次数,如果你是使用 Let’s Encrypt 的签名的话,你的 CA 签名是有次数限制的。最多可以重新安装 5 次,否则你需要再等 5 天。 除非使用自己的签名。 这个问题的讨论,请参考下面的链接:Discourse 如何不使用 Let's Encrypt 而使用 CA 签名的密钥进行安装 备份和获得备份文件 Discourse 可以使用混合附件存储方式。这个方式的定义是部分附件存储在本地,部分附件存储在云上,最常用的服务就是 AWS 的 S3 服务。 因为这种方式,会导致在恢复的时候,可能出现数据错误,绝大部分情况就是因为有部分附件在本地,有部分附件在 S3 ,但是你的 Discourse 已经全部使用 S3 了,这会导致在恢复的时候提示 S3 校验失败的情况。 在进行备份恢复之前,你需要将你的 Discourse 再备份一次。通常可以直接点后台的备份按钮。 如果你的备份是上传到 S3 的话,你可以直接到 AWS 上将备份文件下载到本地。 如果你是混合存储文件的话,在这里 不要备份附件 否则你没有办法恢复你的备份文件。   如上图我们的内容,找到最新的备份文件,然后下载。 传输备份文件到新服务器 SSH 到你需要恢复的服务器上,如果你的服务器上没有下面的目录的话,你需要使用下面的命令创建一个: mkdir -p /var/discourse/shared/standalone/backups/default 上传你下载的备份文件到这个目录中。如果你是在服务器直接进行数据传输的话,你可以使用下面的命令,下面命令是帮助你 SSH 到老服务器,然后将老服务器上的备份传输到新服务器上。 scp /path/to/backup/backup.tar.gz root@192.168.1.1:/var/discourse/shared/standalone/backups/default 参数说明: /path/to/backup/backup.tar.gz 这个是你老服务器上备份文件的路径和文件名 192.168.1.1 这个是你老服务器的 IP 地址,你需要根据你的实际情况进行更改 你也可以使用 FTP 将备份上传到指定的目录。 我们最终的目的就是需要将你的备份文件存储到路径 /var/discourse/shared/standalone/backups/default 中。 恢复备份 依次执行下面的命令,首先你需要进入你新服务器的 Discourse 安装目录中: cd /var/discourse 然后通过下面的命令,进入到 Discourse 已经运行的容器,下面的操作其实是针对 Discourse 容器的操作。 ./launcher enter app 针对 Discourse 的实例,你需要启用恢复功能,因为这个功能在安装后的默认情况下是禁用的。 discourse enable_restore 恢复备份文件,直接执行下面的命令进行恢复就行。在这里只需要指定文件名就行,你不需要指定特定的路径,因为在 Discourse 容器中,默认会到上面你存储的文件路径中去找你的备份。 discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz 需要注意的是,上面的参数是示例参数,你需要根据你具体的情况替换掉备份文件的名字。 如果你在这里数据恢复成功的话,你将会在界面的下面看到 [Success] 的提示。否则将会提示失败,在失败的上面将会提示你失败的原因,你可以根据失败的原因重新调整参数后再重试,很多时候主要是附件的原因。 重构 Discourse 退出 Discourse 的容器,你可以使用命令 exit,然后你会界面中看到 bye 的容器退出提示。 然后在操作系统中的 Discourse 目录中,运行下面的命令,对 Discourse 进行重构。 cd /var/discourse ./launcher rebuild app 如果你希望对你新的实例进行调整的话,比如说修改邮件地址,增加容器配置参数,修改 app.yml 文件,在重构之前,你可以对上面的内容进行后再进行重构。 踩过的坑 下面是我们在备份恢复的时候踩过的坑和发现的问题: S3 混合存储无法恢复数据 在备份的时候,因为混合模式没有办法恢复数据。 需要修改备份方式不备份附件,只备份数据库。 文件权限 文件权限问题。 需要使用 sudo 方式,让安装程序自行确定文件和文件夹的权限,避免权限不足。 无法发送邮件 备份恢复后无法发送邮件。 开放防火墙端口,同时需要将内部配置中的允许发送邮件的域名设置一个,然后再撤销。 CA 无法签名 新实例安装过多,导致无法 CA 签名。 注意恢复次数和必要的时候使用自己的域名签名。   https://www.ossez.com/t/discourse/553

2020年10月06日 0Comments 576Browse 0Like Read more
Computer Science

Discourse 如何不使用 Let’s Encrypt 而使用 CA 签名的密钥进行安装

通过访问密钥签发机构上面提供的信息了解到:Let’s Encrypt 针对一个域名只会在一定时间内签发 5 次,如果你超过了签发的次数,你需要 5 天后才能再次申请。 这个可能对你会造成无法安装成功的影响,因为你只有 5 次安装的机会,否则你在安装过程中会得到错误信息如下: [Sun 04 Oct 2020 04:52:58 AM UTC] Create new order error. Le_OrderFinalize not found. { "type": "urn:ietf:params:acme:error:rateLimited", "detail": "Error creating new order :: too many certificates already issued for exact set of domains: www.ossez.com: see https://letsencrypt.org/docs/rate-limits/", "status": 429 } 使用 CA 签名的域名 我们参考了官方的帮助文档,并且参照我们的平台进行测试后安装成功了。 现将经验分享给大家。 官方的安装 CA 签名密钥内容如下:https://meta.discourse.org/t/advanced-setup-only-allowing-ssl-https-for-your-discourse-docker-setup/13847 购买 SSL 首先你获得已经对你域名签名的密钥,这个密钥通常的格式是 key 和 crt。 如果你对 https 签名的流程还不太了解的话,你可以搜索下相关文章。 最简单的逻辑就是你自己生成一个 key,然后将这个 key 和你的域名信息发给 CA 签发机构,这些机构会对你的信息进行一些审查。因为我们只签名 www 和根域名,这种签名方式是最简单的,只要校验你是不是域名的持有者,基本会发个邮件到你的邮箱中就可以确认了。 当上面的信息确认后,CA 会将你发给他们的 key 进行签名,签名后将结果返回给你,这就是你拿到的 crt。 要对域名进行 https 加密,需要上面 2 个文件就可以了。 将文件上传到服务器 Discourse 对文件的命名有要求,你不能随意命名。不管你签名的域名是什么。你在安装的时候的 key 文件需要命名为 ssl.key,你的 crt 文件需要命名为 ssl.crt。 你不能将你的密钥命名为其他名称,文件名要和上面的要求一致。 文件放置的位置为:/var/discourse/shared/standalone/ssl 路径下面。 配置信息如下表: 文件名 类型 放置路径 ssl.key key 文件 /var/discourse/shared/standalone/ssl/ssl.key ss.crt crt 文件 /var/discourse/shared/standalone/ssl/ssl.crt 请注意,这个放置的位置是你的服务器的文件路径位置,不是你服务器上安装 docker 容器后,docker 容器内的文件路径。 如上图,我们显示的文件路径和文件内容。 如果你服务器上不仅仅只有这 2 个文件,可能还有其他签名的文件的话,请删除其他的文件,只保留这 2 个文件。 修改 app.yml 修改 app.yml 文件中的配置。 app.yml 文件的路径为 /var/discourse/containers/app.yml,可以使用下面的命令进行修改: vi /var/discourse/containers/app.yml 在这里,有 2 个地方需要注意: 如果 - "templates/web.ssl.template.yml" 这一行被注释的话,你需要取消注释。 如果 - "templates/web.letsencrypt.ssl.template.yml" 这一行没有注释的话,你需要注释上。 我们的文件看起来如下: ## Uncomment these two lines if you wish to add Lets Encrypt (https) - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" 上面的这个配置这样注释的意图就是,启用 ssl 的配置,但是撤销使用 letsencrypt 的 ssl 签名。     完成上面的修改后,保存退出。 开放端口 你需要进行检查你容器的端口。 你需要查看下你的 app.yml 文件中的端口是否被添加到容器中了。 expose: - "80:80" - "443:443" 你可以为你的容器开放更多的端口,但是针对 https 和 http ,你需要至少开放 80 和 443 端口。     在上面我们的配置中,我们开放了上述的 2 个端口。 重新编译 在完成上面的所有操作后,进入目录 /var/discourse,然后在这个目录下运行: ./launcher rebuild app 对整个网站进行重新编译。当编译部署完成后,使用命令: ./launcher logs app 查看编译的结果,如果没有任何错误,表示编译部署成功,你的网站应该使用的是你自己的密钥了。 为了保险起见,你可以重启下 docker 容器。 重启 docker 容器的命令是: systemctl restart docker 校验安装 在完成上面的所有操作后,你就可以通过浏览器访问你的网站的。 在任何浏览器的右上角,单击带锁的图标,然后查看证书。     你可以通过这个链接查看你证书的签发机构,有效期和相关信息,以确定你的证书被正确安装到服务器上了。     希望我们能一起构建更加安全和清洁的网络。 https://www.ossez.com/t/discourse-lets-encrypt-ca/552

2020年10月05日 0Comments 486Browse 0Like Read more
Computer Science

Discourse 重复安装过程中的密钥签发问题

近期因为对服务器的平台进行切换和升级,在数据备份恢复的时候出现了不少问题,因此就进行了不少次数的重复安装。 在后面几次重复安装后,发现界面无法访问,通过使用命令 ./launcher logs app 查看安装的日志后发现 Let’s Encrypt 已经不再签发密钥了。原因是这个域名申请的密钥次数太多了。 这个对Discourse 的初级或者试验用户来说不是非常友好,因为你会有签发密钥安装的限制。 日志内容如下: [Sun 04 Oct 2020 04:52:57 AM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log Error loading file ca.cer [Sun 04 Oct 2020 04:52:58 AM UTC] Using CA: https://acme-v02.api.letsencrypt.org/directory [Sun 04 Oct 2020 04:52:58 AM UTC] Single domain='www.ossez.com' [Sun 04 Oct 2020 04:52:58 AM UTC] Getting domain auth token for each domain [Sun 04 Oct 2020 04:52:58 AM UTC] Create new order error. Le_OrderFinalize not found. { "type": "urn:ietf:params:acme:error:rateLimited", "detail": "Error creating new order :: too many certificates already issued for exact set of domains: www.ossez.com: see https://letsencrypt.org/docs/rate-limits/", "status": 429 } [Sun 04 Oct 2020 04:52:58 AM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log [Sun 04 Oct 2020 04:52:59 AM UTC] Installing key to:/shared/ssl/www.ossez.com_ecc.key [Sun 04 Oct 2020 04:52:59 AM UTC] Installing full chain to:/shared/ssl/www.ossez.com_ecc.cer cat: /shared/letsencrypt/www.ossez.com_ecc/fullchain.cer: No such file or directory Error loading file ca.cer Error loading file ca.cer Started runsvdir, PID is 2115 ok: run: redis: (pid 2123) 0s nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) ok: run: postgres: (pid 2129) 0s chgrp: invalid group: ‘syslog’ rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted. rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ] supervisor pid: 2124 unicorn pid: 2150 nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED…

2020年10月05日 0Comments 779Browse 0Like Read more
Computer Science

Discourse 升级后提示 https 混合内容

在升级 discourse 后,很多内容没有办法正确显示。 通过 F12 查看浏览器后,发现有提示 https 和 http 的混合内容。 下面是混合内容常在浏览器中看到的提示。     不管是不是对系统进行重启或者刷新缓存都没有办法解决。 强制使用 https 其实 Discourse 如果安装的时候使用了 https ,那么你可用修改配置强制所有内容都使用 https。 在默认的情况下,Discourse 都会使用 Let’s Encrypt 来对你的网站进行加密。 配置的路径在 :admin/site_settings/category/security 下面 你也可以直接搜索 force_https     在完成上面的配置后,你可以重启 docker 来刷新配置。 https://www.ossez.com/t/discourse-https/550

2020年10月05日 0Comments 591Browse 0Like Read more
Computer Science

Discourse 安装防火墙的配置如何让邮件能够发送

Discourse 安装成功后,我们可能希望启用 firewalld 的防火墙进程。 但是你会发现如果你在操作系统上启用后,邮件发送将会屏蔽。你可能会想到开启端口,当你成功开启端口后,你还是会发现你的邮件发送也是屏蔽的。 这是因为 docker 的端口也需要开放,你需要将 docker 设置到安全的 zone 里面。 分下面 2 步骤来做。 假设我们使用的端口是 587 来发送电子邮件的。 开放服务器的邮件端口 将服务器添加到可以开放的端口,这一步不是必须的,但是最好还是执行。 firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload 将服务器上面的端口也添加到开放端口中,在这里我们一般需要开放80,443,587 端口。 firewall-cmd --zone=public --permanent --add-port=80/tcp firewall-cmd --zone=public --permanent --add-port=443/tcp firewall-cmd --zone=public --permanent --add-port=587/tcp firewall-cmd --reload 在完成上面的操作后,为了谨慎起见,你可用重启防火墙。 重启防火墙的命令是: systemctl restart firewalld 根据提示,你可以了解到你的防火墙是否被成功启动了。 配置 Docker 的防火墙 这部分非常关键,如果你不在这里进行配置的话,你的服务器还是没有办法发送测试邮件的。 firewall-cmd --permanent --zone=public --add-masquerade firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --permanent --zone=trusted --add-port=587/tcp firewall-cmd --reload 在上面的命令中,非常重要的就是 --add-masquerade ,否则没有办法进行端口 forward。 最后,执行下面的命令重启防火墙和重启 docker systemctl restart firewalld systemctl restart docker 校验邮件发送 在完成上面的操作后,你就可以在 Discourse 上校验邮件发送情况了。 在登录你安装的 Discourse 实例后,选择邮件 > 下面的设置。 URL 上面的快速访问链接是: /admin/email 输入任何你可以接收到邮件的邮件地址,然后单击发送测试邮件:     如果测试没有问题,你将会看到显示发送状态已经成功了。     上面的状态显示发送已经成功了。 同时你需要访问你的邮箱地址,确定发送的测试邮件你已经收到了。 https://www.ossez.com/t/discourse/549

2020年10月05日 0Comments 614Browse 0Like Read more
Computer Science

CentOS 8 如何安装 htop

如果你安装使用的是 CentOS 的话,你可能没有办法直接安装 htop。 你会得到下面的信息: [root@vps-f2a02f66 discourse]# htop -bash: htop: command not found 解决办法 你可以将 RHEL 添加到你的仓库中。 运行下面的命令: yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 上面的命令将会添加 RHEL 到仓库中,在过程中你需要输入 Y 来同意校验。 在完成上面的操作后,再执行 yum install htop 来执行安装。 在完整完成后,可使用 htop 命令来查看系统的运行情况。     如果你可以看到上面的界面,则表明 htop 已经安装成功。

2020年10月04日 0Comments 652Browse 0Like Read more
Computer Science

CentOS 8 安装 docker 报错 containerd.io >= 1.2.2-3

在更新或者安装 docker 容器的时候,提示下面的错误: Problem: package docker-ce-3:19.03.13-3.el7.x86_64 requires containerd.io >= 1.2.2-3 上面的问题如何解决。 解决 根据提示的内容,上面已经说得比较明确了。 就是需要使用 containerd.io 的版本要升级下。 你可以访问 docker 官方的链接有关 CentOS 的安装部分:  Docker Documentation – 1 Oct 20 Install Docker Engine on CentOS To get started with Docker Engine on CentOS, make sure you meet the prerequisites, then install Docker. Prerequisites OS requirements To install Docker Engine, you need a maintained version of... 首先你需要设置仓库: sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 然后执行命令 sudo yum install docker-ce docker-ce-cli containerd.io 就可以解决上面的问题了。 https://www.ossez.com/t/centos-8-docker-containerd-io-1-2-2-3/548

2020年10月04日 0Comments 779Browse 0Like Read more
Computer Science

为什么我们需要使用 JSON Web Tokens

让我们讨论下 JSON Web Tokens (JWT) 针对 Simple Web Tokens (SWT) 和 Security Assertion Markup Language Tokens (SAML) 而言有什么优势吧。 相对 XML 来说,JSON 格式更加简洁,对 JSON 格式进行编码后的数据量更小,这就使得 JWT 相对 SAML 来说显得更加小巧,这使得 JWT 更加容易能够在 HTTP 和 HTML 环境之间传递数据。 在安全性上面,SWT 只能使用通过 HMAC 算法的对称方式签名。JWT 和 SAML 都可以使用基于 X.509 认证的公钥/私钥 密钥对的方式进行加密和解密。相比针对 JSON 格式的签名,针对XML 的数字签名更加容易导入安全漏洞。 在 JSON 格式的处理上,当前几乎所有的语言都能够支持和进行解析,这是因为 JSON 格式的数据更加容易映射到数据对象中。XML 则没有针对文本到对象的映射支持。这就导致了相对 SAML 来说,JWT 的处理更加容易。 在使用方面,JWT 已经被大量的在互联网上面取得了应用,针对多平台的使用上,JSON 格式在客户端上面更加容易被使用,尤其是针对移动平台。 针对 JSON 和 SAML 数据格式的内容对比,请参考下面的图片: 从上面的图片的对比上,我们可以看到基于 JSON 格式的内容更少,表达性更好。 如果你希望了解更多有关 JSON Web Tokens 的使用,并且打算开始在你的系统中应用这种格式,请参考由 Auth0 官方提供的介绍和文档,访问链接是:http://auth0.com/learn/json-web-tokens。   https://www.ossez.com/t/json-web-tokens/537

2020年10月03日 0Comments 717Browse 0Like Read more
文化旅游

为什么一些人下载软件喜欢到官网

很多人可能都不知道自己的 2345 ,360 怎么就被装上去了。 软件厂商耍流氓又不是一天两天了。 来源不明的软件,可能会被植入病毒,流氓软件,木马等等。 官版这部分问题就没有,也不会触发防病毒软件误报。

2020年10月02日 0Comments 853Browse 0Like Read more
1…181182183184185…304
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,370)
    • Confluence (663)
    • Gradle (12)
  • U.S. (524)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1