官方服务API对接
登录看似简单实则学问很大,不仅仅是自己设计个简单的数据库表来完成账号注册和登录就完事了,还可以延伸到权限认证(动态路由)、登录续期、设备ip限制、三方登录对接、单点登录等问题
目前基本上都是基于OAuth2协议,流程基本一样,小而美的开源SDK,集成了市面上基本所有的第三方授权登录:
有些三方登录的申请和授权会比较麻烦,可以直接参考justauth官方文档:JustAuth
可以尝试免签方案:水滴聚合登录官网 - QQ\微信\Google免签约快捷登录API接口 (uniqueker.top)
权限校验则有:轻量的Sa-Token,复杂的SpringSecurity
支付宝:在众多支付手段中支付宝应该算是比较友好的了,因为他提供有支付沙盒环境,调试好后直接更换接口就可以直接搞掂了。参考:SpringBoot 集成支付宝支付,看这篇就够了 (qq.com)
微信支付:参见上方WxJava
Git版本控制:
GitLab社区版默认启动核心数+1,会占用大量内存
编辑gitlab配置文件/etc/gitlab/gitlab.rb,取消注释修改以下
unicorn['worker_processes'] = 2
保存退出执行gitlab-ctl reconfigure使其生效
注意:此值最小值是2,如果设置成1,服务器可能会卡死。
Maven私服:
Nexus:Sonatype公司的一款maven私服产品
可以参考:Maven进阶 > 6、私服
最著名的是若依,低代码快速搭建前后端。但老实说若依的代码质量,emm,而且虽然一直在更新,但有些技术栈其实挺旧的
快速入门若依:基于若依完成的自己的功能_哔哩哔哩_bilibili,现在新的中后台手脚架基本上也延续了若依的设计思想
下面这个RuoYi-Vue-Plus是基于若依不断发展并最终替换所有原初技术栈,迭代最新的技术栈,保持最新主流,也非常适合用来学习各种最新技术。
可以试试基于JavaDoc的Api-fox这样的接口调试工具来生成文档
去中心化的轻量、强大的分布式文件系统,基本上实现了Elastaticsearch的分片集群特点能够做到:备选结点、自动故障转移等特性
要求保证必须有大于1/2的存活结点才能上传否则不能上传,(但能够下载),这种机制保证数据安全,还有文件恢复算法
前端携带md5,上传时临时分块以便实现断点续传
自己用的话,Github的Action也可以了
轻量级 gitea 就行, 也不用上云,甚至直接使用CloudFlare提供的Page、Vercel等第三方服务也基本够用。其实可以更本质一点,无非两种方案:
定期轮询:编写一个shell脚本来监听GitHub仓库的新推送并执行部署命令,您可以使用Git的钩子功能。具体来说,您可以使用post-receive钩子,它在每次成功的推送到仓库后触发。以下是一个基本的shell脚本示例,它将在新的推送到达时执行部署命令:
#!/bin/bash
# 保存最新的提交到一个变量中
LATEST_COMMIT=$(git rev-parse HEAD)
# 检查是否有新的推送
git fetch origin main
if [[ $(git rev-parse HEAD) != $LATEST_COMMIT ]]; then
echo "检测到新的推送,正在部署..."
# 在这里执行您的部署命令
# 例如:./deploy.sh
fi
这个脚本首先定义了一个变量LATEST_COMMIT来存储当前的最新提交。然后,它使用git fetch来更新本地仓库的信息,并检查是否有新的提交。如果有新的推送,它将执行部署命令。
请注意,这个脚本需要定期运行,例如可以通过cron任务来实现。
仓库事件推送:自己写了一些 shell ,gitea 收到 events 就发 webhooks ,nc 监听端口,收到指定 http 的 hook 就执行 shell 编译打包部署。以Github为例:要设置GitHub仓库的Webhook,你需要在仓库的设置页面中找到Webhook选项,并添加一个新的Webhook。在添加Webhook时,你需要提供一个Payload URL,即你的服务器的地址,GitHub会向该地址发送HTTP请求。你还可以选择要监听的事件类型(例如代码推送、Issues创建等),以及是否要触发SSL验证等选项。
一旦设置完成,当你的GitHub仓库中发生指定的事件时,GitHub会向你的服务器发送HTTP请求,你可以在服务器上编写相应的脚本来处理这些请求,例如进行持续集成、自动部署等操作。需要注意的是,你的服务器必须能够被公网访问,并且能够处理来自GitHub的HTTP请求。你可以使用类似于nc(Netcat)等工具来监听并处理这些请求。
kubernetes(K8S),太重,依赖Docker、K8S生态,不太适合个人使用
公司内网可以采取的方案:
实习公司项目采取的管理方式,敏捷开发
敏捷开发参考流程:https://www.tapd.cn/home/solution/tapdpro
TAPD是一种常用的敏捷软件开发方法论,它代表了"Team, Artifact, Process, and Domain"这四个关键组成部分。TAPD的目标是通过团队协作、良好的工作成果管理、规范的工作流程和深入理解项目领域来提高软件开发效率和质量。
这是项目进度的管理方式,代码提交可以使用Git/SVN等,提交时携带TAPD平台任务的源码关键字
比较经典的Xxl-Job:(很久不更新了)
目前比较火热的PowerJob:(持续更新迭代,就功能而言更加强大)
你可能还在程序里使用xxl-job提供的日志记录类来写日志,传给rpa调度器?
No!No!No!这一点也不优雅。有一个很好的解决方案,那就是:比如在xxl-job任务调度器上定义一个名为cmd的执行器。他怎么做呢?调度器启动扫描注册的任务执行器去执行他的时候
/**
* 3、命令行任务
*/
@XxlJob("commandJobHandler")
public void commandJobHandler() throws Exception {
String command = XxlJobHelper.getJobParam();
int exitValue = -1;
BufferedReader bufferedReader = null;
try {
// command process
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(command);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
//Process process = Runtime.getRuntime().exec(command);
BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());
bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
// command log
String line;
while ((line = bufferedReader.readLine()) != null) {
XxlJobHelper.log(line);
}
// command exit
process.waitFor();
exitValue = process.exitValue();
} catch (Exception e) {
XxlJobHelper.log(e);
} finally {
if (bufferedReader != null) {
bufferedReader.close();
}
}
if (exitValue == 0) {
// default success
} else {
XxlJobHelper.handleFail("command exit value("+exitValue+") is failed");
}
}
静态博客很好,但我们也需要评论、访问计数呀,那怎么做呢?
如果只是个人使用的小站系统只是想提供一个交流的地方的话我们可以使用giscus,一个免费的评论系统,无需设计数据库表,适合简单的留言和收集需求
访问计数:
不蒜子 | 不如 (ibruce.info)
优点:
开源的内网穿透方案:ftp,需要自行准备服务器搭建