HoneyMoose
  • 首页
  • Java
  • Jersey
  • Jira
  • Confluence
  • U.S.
    • USRealEstate
    • USVisaTrack
    • H1B
  • 项目和网站
    • CWIKI.US
    • OSSEZ 社区
    • WIKI.OSSEZ.COM
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
Computer Science
Computer Science

Ansible 服务器主机配置

使用 ansible 来对远程主机进行部署的话。我们需要首先对远程注解进行配置。 配置文件路径 配置文件位于:/etc/ansible/hosts 路径下面。 可以使用 vi 工具进行打开。 配置示例 下面是一个简单的配置示例。 [db] 127.0.0.1 [app] 127.0.0.1 ansible_connection=ssh ansible_user=fedora ansible_ssh_pass=***** 如下面图片所示,我们定义了 2 个主机组。 每一个主机的组里面可以有很多的主机。 我们对主机的部署是按照主机组进行部署的。 你可以为每个主机组下面的主机单独设置连接的用户名和密码,当然你也可以使用统一的用户名和密码,这样实现密码的通用管理。   https://www.ossez.com/t/ansible/14249

2022年12月14日 0Comments 111Browse 0Like Read more
Computer Science

在 Ubuntu 上安装 Discourse 开发环境

 本指南只针对 Discourse 开发环境的配置,如果你需要在生产环境中安装 Discourse ,请访问页面:Install Discourse in production with the official, supported instructions - sysadmin - Discourse Meta 中的内容。  有关开发环境的设置英文原文,请参考:Set up a local Discourse Development Environment? - developers - Discourse Meta 页面中的内容。 本文只针对在 Ubuntu 环境下的开发进行设置,因为 Discourse 是基于 Ruby 开发的,Ruby 的开发环境在 Ubuntu 下设置最为简便,所以 Discourse 的生产环境运行也是是官方建议在 Ubuntu 下运行的,虽然我们的社区是运行在 REHL 环境下也没有问题,因为使用了 Docker 的容器,但如果你想对 Discourse 进行开发的话,建议还是使用 Ubuntu 环境。 如果你使用的是 Windows 系统的话,你需要安装 WSL 环境。WSL 是 Windows 提供的一个基于 Ubuntu 的环境,主要用于解决 Windows 下开发Linux 应用的问题。 本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧! 尽管这个开发指南是假定你使用的是 Ubuntu 开发环境,但是任何基于 Debian 发行的 Linux 系统都是可以使用的。 本开发指南在 Ubuntu 18 上验证过不需要任何其他的步骤就可以完成开发环境设置。  基于 Ubuntu/Debian 开发环境的使用不同,你可能在对 Ubuntu/Debian 进行开发的时候需要参考下下面的信息:  有关在 Ubuntu 20.04 及其后续版本上安装 Discourse 测试环境  有关在 Ubuntu 低于 20.04版本上安装 Discourse 测试环境 根据我们进行测试的经验来看,Ubuntu 22 的版本中可能有无法编译和包找不到的情况,我们还只在 20.04 上完成本地开发环境的设置。 安装 Discourse 依赖 作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。 运行的命令为: bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux) 上面的命令将会在你的本地系统中安装下面的包: Git rbenv ruby-build Ruby (stable) Rails PostgreSQL SQLite Redis Bundler MailHog ImageMagick 如果在你的本地操作系统中已经安装了一些软件,或者你不希望安装所有的软件的话,请参考 script 中的内容,然后选择你不希望当前安装的软件。上面的安装脚本将会安装所有 Discourse 运行需要的软件,这些软件将会为 Discourse 的运行提供支持。 当你完成安装所有的 Discourse 依赖后,我们就可以对 Discourse 进行安装了。     上图显示的是在 Ubuntu 中安装的界面,整个软件安装的过程还是比较耗时的,可能需要5 分钟以上,与你使用的系统有关。 克隆(Clone)Discourse 克隆 Discourse 到 ~/discourse 文件夹中 git clone https://github.com/discourse/discourse.git ~/discourse ~ 定义的是当前的 Home 文件夹,这个意思是 Discourse 的程序将会复制到你的 home 文件夹下。 因为我们使用的是 WSL 子系统,因此我们实际上是把文件克隆到我的 D 盘下了。     设置(Setup) Database 创建一个 与你 ubuntu 系统用户名相同的用户: sudo -u postgres createuser -s "$USER" 如果你在运行上面的命令的时候提示错误: createuser: error: could not connect to database template1: could not connect to server: No such file or directory 请参考页面:Discourse 开发环境安装 PGSQL 提示错误 2 中的内容。 启动 Discourse 切换到你的 Discourse 克隆目录中: cd ~/discourse 安装所需要的 gems source ~/.bashrc bundle install 同时安装所需要的 JS 依赖 yarn install 当到这一步为止,你已经安装好所有需要的 gems 和依赖,请尝试运行下面的命令: bundle exec rake db:create bundle exec rake db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate 如果在运行的时候出现错误,请仓库: Discourse 开发环境安装运行 bundle exec rake db:create 错误 中的内容。 尝试运行下面的命令: bundle exec rake autospec 你的项目应该会通过所有的测试。 这个测试非常耗时,可以不做这个的,要不然估计几个小时就出去了。 运行下面的命令来启动服务器: bundle exec rails server 当你完成上面的安装步骤后,你应该可以通过 http://localhost:3000 访问你本地安装的 Discourse。 从 Discourse 2.5+ 开始, 针对本地的开发环境 EmberCLI…

2022年12月10日 0Comments 124Browse 0Like Read more
Computer Science

Discourse 本地开发环境时候出现代理错误

在本地开发环境的时候出现错误: # Discourse Ember CLI Proxy Error FetchError: request to http://127.0.0.1:3000/ failed, reason: connect ECONNREFUSED 127.0.0.1:3000 at ClientRequest. (file:///mnt/d/WorkDir/Repository/Discource-C/discourse/app/assets/javascripts/node_modules/node-fetch/src/index.js:108:11) at ClientRequest.emit (node:events:513:28) at Socket.socketErrorListener (node:_http_client:494:9) at Socket.emit (node:events:513:28) at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21)     问题和解决 出现上面的问题的原因是本地进行编译的时候,我们本地计算机上运行了: bin/ember-cli 服务,但是没有运行: bundle exec rake autospec 服务。 所以界面上出现了反向代理的错误提示,只需要重新启动所有的 2 个服务就可以了。   https://www.ossez.com/t/discourse/14244

2022年12月09日 0Comments 142Browse 0Like Read more
Computer Science

日期格式化 YYYY-MM-DD 出现时间偏移量

在js中,很多时候需要把日期字符串转换为一个 Date 对象。 如果得到的日期字符串有时间还好办,如果没有时间,只有日期的格式,例如 2022-12-01 这样的字符串呢? 大部分人可能什么都没想,直接就调用了 new Date(datestring)。可是事情没有想象中那么简单。     发现了问题了吗?获得日期时间被减去了 5 个小时。 这是因为我们的浏览器在美国东部时间。 在 MDN 中,有一个下面的注释: Note: When parsing date strings with the Date constructor (and Date.parse, they are equivalent), always make sure that the input conforms to the ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ) — the parsing behavior with other formats is implementation-defined and may not work across all browsers. Support for RFC 2822 format strings is by convention only. A library can help if many different formats are to be accommodated. Date-only strings (e.g. "1970-01-01") are treated as UTC, while date-time strings (e.g. "1970-01-01T12:00") are treated as local. You are therefore also advised to make sure the input format is consistent between the two types.     不要忽略掉上面的这个注释。 用人话解释一下就是,如果直接给 new Date 传入’YYYY-MM-DD’ 这样的字符串作为参数的话,得到的 Date 对象是一个基于 UTC 的对象实例。 如上面的代码实例中, const date2 = new Date('2022-12-01') date2 在进行实例化的时候,得到的是 2022-12-01 00:00:00 GMT+00:00 这样的时间,再被转换美国的东部时区的时候,就少了 5 个小时。 问题解决 要解决这个问题,其实就使用了 moment 来对日期进行格式化就可以了。 moment('2022-12-01').toDate(); 使用上面的代码,就可以避免在 new Date() 进行日期格式化的时候因为时区的问题导致的时间便宜。 这个便宜有可能会导致多一天或者少一天的情况。 处理日期,还是尽量使用 moment 库吧。 https://www.ossez.com/t/yyyy-mm-dd/14233

2022年12月02日 0Comments 179Browse 0Like Read more
Computer Science

IntelliJ IDEA 2022.3 版本又更新了

感觉最大的更新就是配置同步。 这配置不是一直都是同步的吗?针对 WSL 还能直接连上去了。   https://www.ossez.com/t/intellij-idea-2022-3/14231

2022年11月30日 0Comments 78Browse 0Like Read more
Computer Science

一个有点咬文嚼字的 sorting 和 ordering

为什么排序算法的英文是 sorting 而不是 ordering。 还真没有怎么研究过这个问题,一般来说数据库中对结果进行排序我们都习惯用 Order By 这个关键字。 所有有关算法的排序都使用的是 Sort。     这个还真有点意思,然后就网上考古了下。 根据英文中的定义, Ordering 定义通常定义为我有一个结果集合,我需要定义一系列的规则来将这个结果集按照某一个特定的顺序显示出来或者从一个已有的结果集变成另外的结果集。 Sorting 的定义是整个排序的过程,是按照何种方法排序的? 理解 通过上面的说法,Order 可以理解为结果,Sort 可以理解为过程。 在中文语境中,这 2 个词没有那么大的区别,因为中文语境通常是以结果为导向的,这也可以解释为什么中文没有时态的概念。 如果是过程的话,如何实现这个过程,这个属于进行的状态和实现的状态,这种情况使用 Sort 会更加合适。     再加上约定俗称,使用 Sort 来表示算法,使用 Order 来表示结果集。   https://www.ossez.com/t/sorting-ordering/14230

2022年11月30日 0Comments 101Browse 0Like Read more
Computer Science

Hash 的定义

Hash,一般翻译做散列、杂凑,或音译为哈希。 这句话就是很多混乱的根源。 笔者还是比较时候直接使用 哈希这个翻译,或者干脆不翻译。 混乱来源 在查看很多资料的时候,经常会看到最多的一个词就是散列算法。 如果不深入追究下的话,开始的时候经常是一头雾水,其实这个所谓的散列就是我们常说的 Hash。 散列算法也就是 Hash 算法,简单点就是摘要算法。 所有混乱的来源就是因为翻译不同意,不同人的使用习惯不一样。 可以理解的就对输入的数据获得这些数据的一个指纹或者摘要来对这些数据来进行识别。 这些数据可以是文本,也可以是任何的 2 进制块。 我们常用的一些 Hash 算法如:MD5, SHA-1, SHA-2, NTLM, 和 LANMAN。 需要注意的是 MD5 算法已经不安全了,不要使用 MD5 存储密码。   https://www.ossez.com/t/hash/14229/1

2022年11月30日 0Comments 72Browse 0Like Read more
Computer Science

Java Hash Table(Hash 表)的处理和存储逻辑

在网站看到一个有关 Java Hash 表的的处理和存储逻辑。 key.hashCode() | | 32-bit value | hash table V +------------+ +----------------------+ HashMap.hash() --+ | reference | -> | key1 | value1 | null | | |------------| +----------------------+ | modulo size | null | | = offset |------------| +---------------------+ +--------------> | reference | -> | key2 | value2 | ref | |------------| +---------------------+ | .... | | +----------------+ V +----------------------+ | key3 | value3 | null | +----------------------+ 上面的图片做的还是非常好的,逻辑也解释得非常清楚。 涉及到了: 对象的 Hash 值计算 将数据插入到 Hash 表中 如果出现了 Hash 冲突后怎么办 这 3 个点是我们在处理 Hash 表的时候的几个关键点。   https://www.ossez.com/t/java-hash-table-hash/14228

2022年11月30日 0Comments 84Browse 0Like Read more
Computer Science

Java HashMap 在获得 Key 的 Hash 值的时候用的是什么算法

Java 在 HashMap Key 的 Hash 值的时候用的的是自己 Object 中的 hashCode() 算法。 返回的结果是一个整数值。 如果你查看 JDK 的源代码的话,在 HashMap 类中会有下面的这个方法。 public final int hashCode() { return Objects.hashCode(key) ^ Objects.hashCode(value); } 通过这个方法,我们可以看到返回的值是整数。     JDK hashCode 如果我们继续跟踪代码,我们会看到在最最基础的 Object 对象中。 有下面的代码: public int hashCode() { return J9VMInternals.fastIdentityHashCode(this); }     是不是很奇怪,为什么这个类的名字为:J9VMInternals 这是因为我们的机器装的是 IBM 的 OpenJ9 虚拟机的版本。 IBM 在这里定义了自己的获得 hashCode 的方法。 static int fastIdentityHashCode(Object anObject) { com.ibm.jit.JITHelpers h = jitHelpers; if (null == h) { return identityHashCode(anObject); /* use early returns to make the JIT code faster */ } if (h.is32Bit()) { int ptr = h.getIntFromObject(anObject, 0L); if ((ptr & com.ibm.oti.vm.VM.OBJECT_HEADER_HAS_BEEN_MOVED_IN_CLASS) != 0) { if (!h.isArray(anObject)) { int j9class = ptr & com.ibm.oti.vm.VM.J9_JAVA_CLASS_MASK; return h.getIntFromObject(anObject, h.getBackfillOffsetFromJ9Class32(j9class)); } } } else { long ptr = (com.ibm.oti.vm.VM.FJ9OBJECT_SIZE == 4) ? Integer.toUnsignedLong(h.getIntFromObject(anObject, 0L)) : h.getLongFromObject(anObject, 0L); if ((ptr & com.ibm.oti.vm.VM.OBJECT_HEADER_HAS_BEEN_MOVED_IN_CLASS) != 0) { if (!h.isArray(anObject)) { long j9class = ptr & com.ibm.oti.vm.VM.J9_JAVA_CLASS_MASK; return h.getIntFromObject(anObject, h.getBackfillOffsetFromJ9Class64(j9class)); } } } return identityHashCode(anObject); }     这个 hashCode 的方法被 IBM 提高了下,主要是看看输入的对象是不是 32 位的,如果是 32 位的,会用到 IBM 自己的方法。 否则还是使用传统的 hashCode 方法。 当然,对程序员来说,这部分的内容是透明的,程序员通常只需要知道 JDK 会在你对对象获得 hashCode 的时候返回一个整数值。 在 HashMap 插入数据的时候需要计算 Hash 值,这个方法也会被用到。 可以说这个方法是 JDK 的基础的基础了。   https://www.ossez.com/t/java-hashmap-key-hash/14227

2022年11月30日 0Comments 100Browse 0Like Read more
Computer Science

Java Hash 碰撞

散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。 该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。 Hash Collision Hash Collision 就是我们说的 Hash 碰撞或者 Hash 冲突。 这个其实也非常好理解,就是 2 个输入不同的数据,经过 Hash 算法后,得到的 Hash 值是一样的。 在现实世界中,最好是不出现 Hash 冲突的情况,但很不幸,这个是没有办法避免的。 HashMap 集合需要解决的问题就是如果出现了 Hash 碰撞后,怎么去做。 使用的方法就是使用 Hash 链表的方式,但是有时候这个碰撞的情况比较多,比如说有 10 多个输入数据都有相同的 Hash 值。 在 Java 的 HashMap 中,这种情况会使用红黑树来进行存储,以便于提交效率。   https://www.ossez.com/t/java-hash/14226

2022年11月30日 0Comments 57Browse 0Like Read more
1…34567…183
Newest Hotspots Random
Newest Hotspots Random
IBM Semeru Windows 下的安装 JDK 17 Okhttp 的 retrofit2 运行警告信息异常 应该升级 JDK 到 17 了吗 OpenAI-J 如何进行测试 微信 API 的发送客服消息返回对象不正确 PHP Windows 下 XAMPP 的 xdebug 配置
ChatGPT 嵌入微信公众号中的访问关于 USRealEstate 公众号的重要更新PHP 的 json_encode 异常Window 的 PHP XAMPP 安装 mongodb 的扩展PHP Windows 下 XAMPP 的 xdebug 配置微信 API 的发送客服消息返回对象不正确
Confluence 6 连接到外部用户目录服务器的问题分析 Confluence 6 配置推荐更新邮件通知默认的初始化设置 Confluence 6 白名单允许进入和禁用 疫情期间回国对申请绿卡有影响吗 Java 学到自己的瓶颈期了,各种框架乱七八糟,怎么办 Confluence 6 配置 Office 转换器
Categories
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • H1B
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Spring
  • Spring Batch
  • U.S.
  • USRealEstate
  • USVisaTrack
  • 我的小厨

COPYRIGHT © 2020 HoneyMoose. ALL RIGHTS RESERVED.

THEME CWIKIUS.CN MADE BY VTROIS