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

Gitea 的简单介绍

Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。 在这个领域,名气最响的应该是 Gitlab。 但实际使用中Gitlab也有点问题,首先就是资源占用。Gitlab 是使用 ruby 编写的,好几年之前刚出来的时候,一台1G内存的虚拟主机连安装运行都做不到,着实震惊。 时至今日都已经发展到了以docker镜 像分发,gitlab 仍旧会有体积和运行时资源占用的问题。另一点就是功能,对于一般标准团队来说,gitlab的功能太过于丰富,这是往好的地方说,往坏的地方说就是它包含了太多不需要的东西,而这些东西还占用磁盘和运行时资源。 同时 Gitlab 的许可证政策对新的用户也不是非常友好,主要在于与其他平台的同步上面。 例如有一个下面的场景:你将代码提交到自己的服务器上后,如果希望能够自动同步到其他的平台上,比如 GitHub 或者从其他平台上镜像回来,Gitlab 的社区版本是做不到的。 你需要使用企业版本,企业办法的收费是一个用户 5 美元,就算用户不再提交代码了,或者你的员工已经离职了,这个许可证也没有办法收回。 于是着手查看开源的可选方案,很快就找到了golang 研发的gitea。 使用golang研发的软件分发都很容易,体积小,安装使用简单,运行时占用资源少。 且gitea的功能很完备。 Gitea 和 Gogs 的关系 Gitea 其实是 Gogs 的一个分支。 这 2 个都有国人的参与,只是 Gogs 可能开发理念和 Gitea 有所不同,感觉社区上面的参与度不高。 同时 Gogs 更新速度较慢,因此可能选择 Gitea 会多一些。 我们也选择使用了 Gitea 。 Gitea 与其它 Git 托管工具的横向对比 这里列出了 Gitea 与其它一些 Git 托管工具之间的异同,以便确认 Gitea 是否能够满足您的需求。 请注意,此列表中的某些表项可能已经过时,因为我们并没有定期检查其它产品的功能是否有所更改。     使用界面 使用界面的情况如下:     你可以直接对你的代码库进行提交。 https://www.ossez.com/t/gitea/13938

2022年04月30日 0Comments 44Browse 0Like Read more
Computer Science

Postman 如何删除一个工作空间

Postman 删除工作空间的地方比较隐蔽。 在你打开工作空间后,选择工作空间的设置。     在后续的页面中,将会提示你是否选择删除这个工作空间。     在随后的页面中,提示你输入工作空间的名字,然后单击确定删除即可。   https://www.ossez.com/t/postman/13936

2022年04月30日 0Comments 41Browse 0Like Read more
Computer Science

Fedora 上如何安装 gitea

Gitea 是由 Gi t支持的另一种开源,自托管版本控制系统。 Gitea用Golang编写,是可在任何平台上托管的轻量级解决方案。 换句话说就是你希望自己部署一个 Git 远程库,但是你又不想用 GitHub,GitLab 又太重,同时还收费。 配置环境 在安装 Gitea 之前,需要对你的服务器环境进行一些配置。 Git 确保你已经在服务器上安装了 Git。 使用命令: git --version 来查看安装 Git 的版本。 如果没有安装的话,可以使用:sudo dnf install git 来进行安装。 获得 Gitea 安装包 你可以到官方的下载页面中获得最新的安装包。 在当前,最新的版本为 1.16.6 运行下面的命令来获得最新的安装包: wget -O gitea https://dl.gitea.io/gitea/1.16.6/gitea-1.16.6-linux-amd64 chmod +x gitea 创建 gitea 运行的用户 直接运行下面的命令来创建这个服务运行需要的用户。 adduser \ --system \ --shell /bin/bash \ --comment 'Git Version Control' \ --user-group\ --create-home \ --home /home/git \ git 准备 gitea 运行的目录 直接运行下面的命令来准备 gitea 运行需要的目录。 mkdir -p /var/lib/gitea/{custom,data,log} chown -R git:git /var/lib/gitea/ chmod -R 750 /var/lib/gitea/ mkdir /etc/gitea chown root:git /etc/gitea chmod 770 /etc/gitea  针对用户 git,目录 /etc/gitea 被临时设置为可写权限了。 在完成安装后,你可以使用下面的命令: chmod 750 /etc/gitea chmod 640 /etc/gitea/app.ini 来修改权限为不可写的权限。 配置环境变量 设置 gitea 的环境运行变量:GITEA_WORK_DIR 使用的命令是: export GITEA_WORK_DIR=/var/lib/gitea/ 拷贝程序文件 将运行需要的文件,拷贝到我们准备好的目录中。 使用的命令为: cp gitea /usr/local/bin/gitea 运行 Gitea 在完成上面的操作后,你有 2 种方法来运行 gitea。 这 2 种方法分别为以服务方式和命令行方式。 如果你是以命令行方式运行的话,那么在你关闭控制台以后,gitea 将会停止运行,因此我们推荐使用以服务的方式来运行。 以服务方式 以服务方式的运行,请按照下面的步骤进行: 设置启动配置文件 将 gitea/gitea.service at main · go-gitea/gitea · GitHub 文件中的内容拷贝到 /etc/systemd/system/gitea.service 文件中。 随操作启动 运行下面的命令,我们可以配置服务随操作系统启动而启动。 sudo systemctl enable gitea sudo systemctl start gitea 校验安装 Gitea 默认的启动端口是 3000。 如果你的服务器没有安装防火墙,没有配置反向代理的话,你可以通过浏览器访问服务器的 IP 地址,并且端口号是 3000。 如果你能够看到下面的界面的话,说明 Gitea 的启动已经完成了。 你需要为你的服务配置数据库服务器,并且在这个界面中完成配置就可以开始使用了。     如果你的数据库配置没有问题,并且上面的参数都填写正确的话。     就可以继续进行安装了,安装通常不需要多长时间,1 到 2 分钟就可以了。 安装成功后,你就能看到上面的界面了。 当然你还可以为你的服务器配置反向代理,开放 80 或者 443 端口以增强安全性。   https://www.ossez.com/t/fedora-gitea/13935

2022年04月30日 0Comments 44Browse 0Like Read more
Computer Science

Java 如何从一个 List 中随机获得元素

概述 从一个 List 中随机获得一个元素是有关 List 的一个基本操作,但是这个操作又没有非常明显的实现。 本页面主要向你展示如何有效的从 List 中获得一个随机的元素和可以使用的一些方法。 选择一个随机的元素 为了从一个 List 中随机获得一个元素,你可以随机从 List 中获得一个索引的下标。 然后你可以使用这个随机的下标使用方法 List.get() 来随机获得元素。 使用这个方法的要点就是,随机生成的下标不要超过 List’s 的大小,否则你将会遇到溢出的异常。 单一随机元素 为了获得随机下标,你可以使用 Random.nextInt(int bound) 方法。 考察下面的代码: public void givenList_shouldReturnARandomElement() { List<Integer> givenList = Arrays.asList(1, 2, 3); Random rand = new Random(); int randomElement = givenList.get(rand.nextInt(givenList.size())); } 如果你不想使用 Random 类,你可以使用 Math.random() 这个静态方法,然后将生成的随机数乘以 List 的大小。 (Math.random())将会生成 Double 的随机变量。 这个随机变量的区间在 0 和 1 之间,这个变量包含 0,但是不包含 1。     在完成上面的转换后,不要忘记需要讲获得的下标转换为 int 类型。 在多线程环境中选择随机下标 在多线程环境中,如何使用单一的 Random 类实例,将会导致可能在这个实例中每一线程都访问到相同的结果。 我们可以使用 ThreadLocalRandom 类来为每一线程创建一个新的实例。 如下面的代码能够保证在多线程中不出现相同的随机下标。 int randomElementIndex = ThreadLocalRandom.current().nextInt(listSize) % givenList.size(); 可以重复选择元素 有时候,你可能希望从 List 中选择一些元素,但是这些选择的元素是可以重复的。 需要的操作也非常简单,需要多少就选多少,使用一个循环来做就可以了。 如下面的代码,直接使用循环。 public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat() { Random rand = new Random(); List<String> givenList = Arrays.asList("one", "two", "three", "four"); int numberOfElements = 2; for (int i = 0; i < numberOfElements; i++) { int randomIndex = rand.nextInt(givenList.size()); String randomElement = givenList.get(randomIndex); } } 选择不重复的元素 如果你希望你选择的元素是不重复的话,你可以在选择后将选择后的元素从 List 中移除。 需要注意的是担心下标的溢出。 例如你的 List 长度是 10, 但是你希望从这 List 中选择 11 个不重复的元素,这是没有办法做到的。 通常会抛出异常。 public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat() { Random rand = new Random(); List<String> givenList = Lists.newArrayList("one", "two", "three", "four"); int numberOfElements = 2; for (int i = 0; i < numberOfElements; i++) { int randomIndex = rand.nextInt(givenList.size()); String randomElement = givenList.get(randomIndex); givenList.remove(randomIndex); } } 选择一个随机序列 这个方法的主要目的是将给出的 List 进行打乱,并且获得一个相同的随机序列。 当然你也可以使用循环来做,如果你使用 Collections 工具类能够更好的帮助你完成这个目标: public void givenList_whenSeriesLengthChosen_shouldReturnRandomSeries() { List<Integer> givenList = Lists.newArrayList(1, 2, 3, 4, 5, 6); Collections.shuffle(givenList); int randomSeriesLength = 3; List<Integer> randomSeries = givenList.subList(0, randomSeriesLength); } 结论 在本页面中,我们对 List 中的元素随机进行输出进行了一些探讨。 通过上面的内容,能够更好的帮助你了解有关 List 中的随机输出等情况。   https://www.ossez.com/t/java-list/13934

2022年04月29日 0Comments 47Browse 0Like Read more
Computer Science

H2 数据库采用客户/服务器端连接数据的 JDBC 参数

我们可以使用下面的 H2 JDBC 参数来连接使用服务器方式运行的 H2 数据库。 jdbc:h2:tcp://localhost/~/test;USER=sa;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 上面参数的意思是采用的是 tcp 的连接方式,连接的数据库名称为 test。 同时连接的服务器地址为 localhost,意思为本地服务器。 webPort 也可以通过网页方式访问启动的 H2 服务器。 端口地址为:8082 例如你可以访问:http://192.168.1.229:8082/login.jsp 来获得登录界面。 如果你没有修改登录密码的话。 直接单击连接就可以进行连接了。 连接后,你会看到下面的控制台界面。     这种模式就是使用服务器方式启动 H2 后的控制台信息。   https://www.ossez.com/t/h2-jdbc/13931

2022年04月28日 0Comments 43Browse 0Like Read more
Computer Science

H2 数据库如何以服务器方式启动

以服务器方式启动 H2 数据库非常简单。 你可以下载任何一个 H2 的 jar 包。 然后运行: java -jar h2-2.1.212.jar 在启动后,直接通过你的本地计算机浏览器访问地址: http://192.168.1.229:8082/login.do 就可以了。 你将会看到需要登录的界面。 单击链接就可以了。 Java 连接需要使用的 JDBC 参数,请参考: H2 数据库采用客户/服务器端连接数据的 JDBC 参数 页面中的内容。   https://www.ossez.com/t/h2/13932

2022年04月28日 0Comments 41Browse 0Like Read more
Computer Science

Windows Edge 浏览器的有关 URL 链接的复制粘贴

在 Windows 如果使用 Edge 进行复制粘贴的时候,我们可能会需要拷贝 URL。 但是粘贴的时候却和标题一同粘贴显示出来了。 例如我们现在正在编辑的这个内容,其实我们只拷贝了 URL,但是如果你使用了 Edge 浏览器进行编辑的话,却同时还显示了标题。     如果上面的图片显示的内容,其实我们并不需要显示标题。 如何修改 进入 Edge 浏览器的设置。     然后选择分享,拷贝和粘贴。 在这个界面中,你可以选择你需要的格式。 在默认情况下 Ctrl+V 将会使用链接模式。     你可以选择使用 纯文本模式来和以前的拷贝张贴方式保持一致。 当然,你还可以使用张贴为什么来对设置进行调整。     在 Edge 的文本编辑区域中,选择鼠标的右键来进行配置。   https://www.ossez.com/t/windows-edge-url/13933

2022年04月28日 0Comments 56Browse 0Like Read more
Computer Science

CentOS 8 更新提示 appstream 错误

在 CentOS 8 进行更新的时候提示错误: Error: Failed to download metadata for repo appstream”     完整的错误提示为: Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 问题和解决 这是因为 CentOS 8 已经不再提供支持,并且在 2021 年已经结束生命周期了。 如果你还想使用 dnf 或者 yum 对 CentOS 8 进行更新的话,你只能使用 Fedora 的库了。 运行下面 2 个命令: dnf --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos dnf distro-sync 对 CentOS 8 的源进行修改后,就可以继续使用 dnf 进行更新了。   https://www.ossez.com/t/centos-8-appstream/13928

2022年04月26日 0Comments 37Browse 0Like Read more
Computer Science

Windows 11 修改 PIN 的长度为 4 位

Windows 最近不知道抽了什么风,要求 PIN 的长度至少有 6 位。 太难了,我们就喜欢 4 位的。 其实这个是可以修改的。 WIN + R 运行 gpedit.msc 然后选择密码复杂度。     针对最小的密码复杂度,我们选择启用后,然后输入最小的密码长度 4 后保存退出。     在完成上面的设置后,你需要重启你的计算机。 然后再修改用户的 PIN 就可以设置为 4 位密码了。   https://www.ossez.com/t/windows-11-pin-4/13926

2022年04月25日 0Comments 61Browse 0Like Read more
Computer Science

如何从 Java 的 List 中删除第一个元素

概述 在这个实例中,我们将会演示如何删除在 Java 中定义的 List 的第 1 个元素。 我们将会针对这个问题使用 List 接口的 2 个实现 ArrayList 和 LinkedList 来进行演示。 创建一个 List 首先,我们来创建一个我们需要的 List: @BeforeAll public void startup() { list.add("cat"); list.add("dog"); list.add("pig"); list.add("cow"); list.add("goat"); linkedList.add("cat"); linkedList.add("dog"); linkedList.add("pig"); linkedList.add("cow"); linkedList.add("goat"); } ArrayList 根据我们创建的 List,我们来演示在 ArrayList 中删除第一个元素,然后确定删除后的 List 不再包含有任何一个删除的元素了。 使用下面的测试方法来进行测试。 /** * ArrayList remove first */ @Test public void testGivenList_whenRemoveFirst_thenRemoved() { list.remove(0); assertThat(list, hasSize(4)); assertThat(list, not(contains("cat"))); } 通过上面的代码我们可以了解到,我们使用了 remove(index) 这个方法来删除我们需要处理的 List 中的第一个元素。 需要注意的是:remove 这个方法,针对 List 接口的所有实现都是可以使用的。 LinkedList LinkedList 同时也实现了 remove(index) 这个方法,同时 LinkedList 还有一个自己的 removeFirst() 方法。 让我们考察下面的测试方法,来确定删除是否正确。 /** * LinkedList remove first */ @Test public void testGivenLinkedList_whenRemoveFirst_thenRemoved() { linkedList.removeFirst(); assertThat(linkedList, hasSize(4)); assertThat(linkedList, not(contains("cat"))); } 时间复杂度 尽管上面的 remove 方法类似,但是这 2 个方法的时间复杂度是不同的: ArrayList 的 remove() 方法的时间复杂度是 O(n) 。 LinkedList 的 removeFirst() 方法的时间复杂度是 O(1) 。 这是因为 ArrayList 在 List 中是使用 Array(数组)的,当我们使用删除方法的时候,ArrayList 将会重新将剩余的元素进行拷贝。如果你需要删除 List 越大,那么需要移动的元素越多。因此所需要的时间复杂度越高。 LinkedList 却是使用的是指针(points),这个指针的意思就是每一个元素使用指针来指向下一个元素,同时还使用一个指针来指向前一个元素。 因此,在 LinkedList 删除第一个元素的时候,需要进行的操作就只需要修改第一个元素的指针就可以了。 不管你的 List 有多大,这个修改指针的操作需要的时间是相同的。 结论 在本文中,我们对如何对 List 中的第一个元素进行删除进行了说明和讨论。 并且针对 List 接口的 2 个实现来分别了解了不同的时间复杂度。 上面的内容的源代码可以在 java-tutorials/RemoveFirstElementTest.java at master · cwiki-us-docs/java-tutorials · GitHub 中进行下载和编译。     需要注意的是 assertThat 断言使用的是 Hamcrest 。 https://www.ossez.com/t/java-list/13919

2022年04月16日 0Comments 99Browse 0Like Read more
12345…194
Categories
  • Akka
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Spring
  • Spring Batch
  • U.S.
  • U.S. Travel
  • USRealEstate
  • 我的小厨

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1