开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
Computer Science
Computer Science

Fabric8 Docker Maven Plugin 如何让部署的时候执行 Docker 打包推送

配置方案在下面的这几句话。 <executions> <execution> <id>default</id> <phase>deploy</phase> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> 上面的话,就会让 Fabric8 Docker Maven Plugin 在 maven 执行 deploy 的时候实现构建 Docker 和推送。     直接运行: mvn clean deploy 就可以完成 Docker 的打包和推送了。     完成推送。   https://www.ossez.com/t/fabric8-docker-maven-plugin-docker/14161

2022年10月21日 0Comments 654Browse 0Like Read more
Computer Science

Sonatype Nexus 如何禁用匿名访问

在后台的管理员界面中,禁用匿名访问就可以了。     在匿名访问中,取消选择匿名用户访问。 https://www.ossez.com/t/sonatype-nexus/14155  

2022年10月21日 0Comments 1311Browse 0Like Read more
Computer Science

Sonatype Nexus 管理员初始密码

如果是第一次进行登录的话,我们会看到下面的界面。 在这个界面中可以找到管理的密码。     登录后提示修改管理员密码。     提示是否允许匿名访问。     如果是公司自己的服务器话,就不需要启用匿名访问了。   https://www.ossez.com/t/sonatype-nexus/14154

2022年10月21日 0Comments 589Browse 0Like Read more
Computer Science

CentOS 上安装 Sonatype Nexus 仓库

在安装仓库之前,需要首先确定服务器上已经安装了 Java。 建议是用 11 以上的版本。11 版本是最低的需求。 我们的安装版本是 11。 下载文件 我们会把文件安装到 /opt 目录下,下载文件后解压。 cd /opt wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz tar -xvzf latest-unix.tar.gz 重命名文件夹 有 2 个文件夹需要重命名。 mv nexus-3.42.0-01/ nexus mv sonatype-work nexusdata 重命名后的文件夹如上图。 设置运行的用户权限 我们将会使用 nexus 用户来运行。 依次运行下面的命令: useradd --system --no-create-home nexus chown -R nexus:nexus /opt/nexus chown -R nexus:nexus /opt/nexusdata 来对需要运行的用户进行赋权。 修改数据文件路径 因为我们对数据文件进行了重命名了,所以我们需要修改数据文件的路径。 vim /opt/nexus/bin/nexus.vmoptions 然后保存退出。 -Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=../nexusdata/nexus3/log/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties -Dkaraf.data=../nexusdata/nexus3 -Dkaraf.log=../nexusdata/nexus3/log -Djava.io.tmpdir=../nexusdata/nexus3/tmp -Dkaraf.startLocalConsole=false -Djdk.tls.ephemeralDHKeySize=2048 # # additional vmoptions needed for Java9+ # # --add-reads=java.xml=java.logging # --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED # --patch-module java.base=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.locator-4.3.6.jar # --patch-module java.xml=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.java.xml-4.3.6.jar # --add-opens java.base/java.security=ALL-UNNAMED # --add-opens java.base/java.net=ALL-UNNAMED # --add-opens java.base/java.lang=ALL-UNNAMED # --add-opens java.base/java.util=ALL-UNNAMED # --add-opens java.naming/javax.naming.spi=ALL-UNNAMED # --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED # --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED # --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED # --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED # --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED # --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED # --add-exports java.security.sasl/com.sun.security.sasl=ALL-UNNAMED # # comment out this vmoption when using Java9+ # -Djava.endorsed.dirs=lib/endorsed     如果你的数据文件在不同路径的话,这里也可以进行配置。 编辑 nexus.rc 文件 因为我们的运行用户名修改了,所以这个文件也需要进行修改。 /opt/nexus/bin/nexus.rc 将这行取消注释,修改为下面的内容。 run_as_user="nexus" 修改服务端地址和端口 运行下面的命令: vi /opt/nexus/etc/nexus-default.properties 将端口修改为 9090, 当然你也可以不修改这个端口,主要是为了避免和系统中的其他端口冲突。 地址修改为 127.0.0.1     修改后的端口和地址如上图。 修改用户打开文件限制 因为进程有打开文件的限制。 在文件的最后添加下面的内容。 nexus - nofile 65536 使用命令打开文件。 vi /etc/security/limits.conf 在文件的最后添加上面的内容。     设置 Nexus 为服务 使用命令编辑下面的文件: vi /etc/systemd/system/nexus.service 将下面的内容复制到这个文件中。 [Unit] Description=Nexus Service After=syslog.target network.target [Service] Type=forking LimitNOFILE=65536 ExecStart=/opt/nexus/bin/nexus start ExecStop=/opt/nexus/bin/nexus stop User=nexus Group=nexus Restart=on-failure [Install] WantedBy=multi-user.target 然后将上面的文件保存退出。 将服务设置开机启动,并且启动 nexus 服务。 依次运行下面的命名: systemctl daemon-reload systemctl enable nexus.service     启动服务 输入下面的命令来启动服务。 systemctl start nexus 查看服务启动状态 运行下面的命令来查看服务启动的状态。 tail -f /opt/nexusdata/nexus3/log/nexus.log     查看端口状态,如果正常启动端口应该会显示被占用。     上面显示 9090 端口被占用。 需要注意的是,第一次启动比较耗时,需要耐心等待。 校验安装 如果你没有安装反向代理,并且没有防火墙的话。 通过 9090 端口,应该就可以正常访问了。 如果能看到下面的界面,则说明安装已经成功了。   https://www.ossez.com/t/centos-sonatype-nexus/14153

2022年10月21日 0Comments 659Browse 0Like Read more
Computer Science

群晖(Synology)NAS 安装 MongoDB

首先需要在群晖的 Docker 中选择 Image,然后选择添加。     输入 Docker HUB 的地址 在弹出的对话框中输入 Docker Hub 的地址。 MongoDB 的地址为: Docker Hub     然后选择添加。 选择版本和运行 在后续的界面中,要求选择版本,我们选择最新的版本即可。 随后,我们需要稍等下把 Image 下载到整列中。 然后选择 Mongo 的版本运行即可,网络按照默认的选择。     下一步继续。     在下一个界面中需要对本地网络进行映射。     对卷进行配置,在默认情况下,可以跳过这一步。     对配置进行校验。 如果没有问题的话,直接下一步进行安装。   启动服务 在安装好的服务中,单击启动 Mongo 服务就可以了。     通过日志来查看启用的状态。   根据你 NAS 的情况不同,你可能没有办法安装到 MongoDB 的最高版本。 这个时候可能你只能用到 4.x 的版本。 如果能够在控制台上看到下面的内容,则说明已经安装成功了。   https://www.ossez.com/t/synology-nas-mongodb/14152

2022年10月20日 0Comments 917Browse 0Like Read more
Computer Science

Spring Batch 中的 chunk

我们都知道 Spring Batch 有 2 种任务方式。 主要是在 Step 阶段,在 Step 阶段,我们可以执行一个 Tasklet,我们也可以按照 Chunk 来执行。 主要区别 如果使用 Tasklet 的话,我们可以一个 Step 对应一个 Tasklet,Spring Batch 不允许一个 Step 对应多个 Tasklet。 考虑有一个场景,我们需要使用 Spring Batch 对数据库中的表进行更新,这个表可能每次 Batch 要更新 几千条数据,需要满足每 5 分钟更新一次。 如果我们采取 Tasklet 的方式的话,正常的思维都是读取需要更新的数据,然后逐条进行更新。 这个没有问题吧,但是恰恰问题就在这里。 问题就是在 Spring Batch 使用的事务,Tasklet 在启动的时候会创建一个事务,那么读取 1000 条数据,处理 1000 条数据,写入 1000 条数据都在一个事务里面。 假设这个处理时间超过 5 分钟,下一次的任务又开始启动了,这个时候 Spring Batch 还会启动一个事务。 假设 10 分钟了,我们还是没有完成,Spring Batch 会继续启动任务和创建事务。 结果是什么,这个显而易见了,就是出现事务堆积,导致锁表,然后所有的任务都失败,无法完成。 针对这种场景,我们就需要 chunk 了。 chunk Chunk 的主要目的就是为了告诉 Spring 一次执行几条记录。 我们如果设置 Chunk 为 1 的话,那么 Spring Batch 每次读取一条记录,处理一条记录,写入一条记录,然后将这个事务进行提交。 这样的话,可以有效的避免事务堆积导致的锁表。     Chunk 的大小,通常比较小,如果一次性设太大了,也会锁表。   https://www.ossez.com/t/spring-batch-chunk/14151

2022年10月20日 0Comments 736Browse 0Like Read more
Computer Science

Spring Batch 可以在一个 Step 中有多个 Tasklet 吗

根据 Spring Batch 的设计,在一个 Step 中只能执行一个 Tasklet。 如果想按照顺序执行多个 Tasklet 的话,我们需要设置不同的 Step。     正如上面定义的 Step,虽然我们在这个 Step 中定义了 2 个 Tasklet。 上面代码最后的执行顺序还是只执行最后一个 Tasklet,第一个定义的被忽略掉了。   https://www.ossez.com/t/spring-batch-step-tasklet/14150

2022年10月15日 0Comments 535Browse 0Like Read more
Computer Science

Spring Batch 事务限制

对 Spring Batch 有所了解的同学都知道 Batch 是用来进行批量数据处理的。 但是我们在同时使用 Spring JPA 的时候,尤其是循环数据处理的时候,我们希望能够尽快提交事务。 但是,Spring Batch 中,如果使用了 Tasklet 的话,那么Spring 会在 Tasklet 级别创建一个事务。 在 Tasklet 不完成的情况下,事务是不会提交的。 这就需要对我们代码进行进行处理的时候,需要对数据量有多大有比较清楚的了解。 否则,非常容易遇到事务堆叠导致锁表的情况。 解决办法 针对一个 Tasklet 只完成一个特定的工作,如果 Job 的处理数据比较多的话,需要分开不同的 Tasklet 来做。     如上图,哪怕我们在这里调用了不同的服务,调用了不同的数据层。 事务都是没有办法提交的。 简单的办法就是针对上面的操作使用不同的 Tasklet 来做。 有人问过,能不能在循环中一次一次的进行提交。 Spring Batch 这样设计的目的就是为了保持数据的完整性,因此需要对 Batch 的逻辑进行考虑,而不建议考虑怎么省事怎么来。 https://www.ossez.com/t/spring-batch/14148

2022年10月15日 0Comments 514Browse 0Like Read more
Computer Science

Spring 数据处理中的事务级别

在 Spring 项目中,如果使用了 Spring 的事务管理的话。 默认的事务级别都在类,这个级别的,这就导致了,如果在循环中对数据进行处理的话,如果循环不结束,事务是不会提交的。 如果出现了事务堆积的情况,大概率就会锁表,然后整个服务抛出异常。 如下面的代码: public void assignMlsListingUid() { List<MlsListing> mlsListingList = mlsListingRepository.findAllByUidIsNull(); // Loop MlsListing to get UID assigned for (MlsListing mlsListing : mlsListingList) { try { MlsListingCtx mlsListingCtx = ListingUtils.listingDeserialization(mlsListing.getMlsCtx()); String uid = mlsListing.getUid(); String addressOneLine = mlsListingCtx.getAddress().getAddressOneLine(); Listing listing = listingRepository.findDistinctFirstByAddressOneLineEqualsIgnoreCase(addressOneLine); if (ObjectUtils.isNotEmpty(listing)) { uid = listing.getUid(); } else { uid = UUID.randomUUID().toString(); listing = new Listing(); listing.setAddressOneLine(addressOneLine); listing.setUid(uid); listing.setDateCreate(new Date()); listing.setDateUpdate(new Date()); listingRepository.save(listing); } mlsListing.setUid(uid); mlsListing.setDateUpdate(new Date()); mlsListingRepository.save(mlsListing); } catch (JsonProcessingException e) { log.error("Parse Mls-Listing Ctx Error", e); mlsListingRepository.delete(mlsListing); } } } 这个方法,在循环执行完成之前是不会提交事务的。     上面的代码只要部署到服务器上,一旦需要处理的量稍微大一点点,肯定锁表。 解决办法 解决办法就是把循环从 Services 层中拿出来。 放到另外一层,这样的话就能够在循环中进行提交。 https://www.ossez.com/t/spring/14147

2022年10月15日 0Comments 597Browse 0Like Read more
Computer Science

Spring JPA 查询的时候提示错 org.hibernate.TransientObjectException

错误的信息为: Caused by: java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing     问题和解决 出现这个问题的情况有很多。 比如说在对多的关系中,没有进行映射,或者 Lazy Load 的问题的。 在这个地方的问题,我们的情况是调用 Repository 发送了一个空对象。 MlsOffice mlsOffice = mlsOfficeRepository.findDistinctFirstByMlsOfficeIdEqualsAndConfRetsEquals(officeId, new ConfRets()); 我们可以通过后面 new 一个对象,然后再进行查询。 这个查询将会重现上面的错误。 因此,我们需要确定在查询的时候发送到后端的对象不应该为 null。 在代码中进行空对象检查是有必要的。   https://www.ossez.com/t/spring-jpa-org-hibernate-transientobjectexception/14145

2022年10月13日 0Comments 624Browse 0Like Read more
1…6061626364…237
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,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (513)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1