Go/Golang DevOps运维开发实战集训营(2023版)

赵颜
• 阅读 118

Go/Golang DevOps运维开发实战集训营(2023版) 网盘地址:https://pan.baidu.com/s/1mldouX5nPMWoFHhW5CP8OQ 提取码: kd7r 腾讯微云下载地址:https://share.weiyun.com/fOjvMvBh 密码:32sf5s

随着服务器、业务系统越来越多,已经没有办法靠人来运维整个平台和业务了。可以试想,如果都需要人工干预完成工作,那得需要投入多少人力?当业务上线时,我们需要部署环境、部署项目;当发生问题时,我们人为地去感知问题后排查问题、定位问题,这时业务可能已经挂了很长时间。所以要基于对运维的理解构建起自动化、智能化运维平台现阶段,掌握一门开发语言已经是高薪运维工程师的必备技能,不会开发,你就不能提高运维工作效率!就不能充分理解公司业务流程!就不能帮助调试、优化!

Go是首选的开发语言,应用广泛;因为它出身名门谷歌,快速吸引大对于DevOps领域来说,批开发者的关注和使用,经过短短几年时间,已经挤进“开发语言排行榜”前10名,Go之所以能够取得如此出色的成绩,与他自身特点及发展密不可分,Go具有语法简洁、高并发、跨平台等优势!

Kubernetes 是一个用于自动化容器化应用程序的部署、扩展和管理的系统。它将构成应用程序的容器分组为逻辑单元,以便于管理和发现。Kubernetes 可以在不增加运维团队规模的情况下扩展和添加无限量的资源。它可以部署在本地,也可以在混合或公共云基础设施上运行。

在application.yml文件中,配置MongoDB连接。因为MongoDB自带数据库连接池,所以我们不需要在Java项目中重复配置连接池。 spring: …… data: mongodb: host: localhost port: 27017 database: his #admin是MongoDB用于验证用户身份的逻辑库 authentication-database: admin username: admin password: abc123456

因为SpringBoot Data中默认的RedisTemplate存在序列化机制的问题,向Redis里面保存Hash类型数据通常是乱码的,为了解决这个问题,我们需要自己定义配置类,修改RedisTemplate使用的序列化机制。

在com.example.his.api.config包中,创建RedisTemplateConfig类。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration public class RedisTemplateConfig { @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); template.setConnectionFactory(factory); return template; } }

因为Controller类用上@RestController注解之后,Web方法返回的对象会被自动转换成JSON对象,所以我们只需要声明一个封装类,让所有Web方法返回这个封装类的对象即可。除了公共属性之外,不同的Web方法要返回的业务数据也不尽相同,所以选择动态的结构才是最佳的方案,恰好HashMap允许我们随便添加数据,那就选择HashMap作为父类吧。在com.example.his.api.common包中,创建R.java类。 package com.example.his.api.common;

import org.apache.http.HttpStatus; import java.util.HashMap; import java.util.Map;

public class R extends HashMap<String, Object> { public R() { //默认创建的R对象中包含了公共的属性 put("code", HttpStatus.SC_OK); put("msg", "success"); }

/*
 * 覆盖继承的put函数,添加Key-Value数据
 */
public R put(String key, Object value) {
    super.put(key, value);
    //把自己返回,用于链式调用
    return this;
}

public static R ok() {
    return new R();
}

public static R ok(String msg) {
    R r = new R();
    r.put("msg", msg);
    return r;
}

public static R ok(Map<String, Object> map) {
    R r = new R();
    r.putAll(map);
    return r;
}

public static R error(int code, String msg) {
    R r = new R();
    r.put("code", code);
    r.put("msg", msg);
    return r;
}

public static R error(String msg) {
    return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
}

public static R error() {
    return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
}

} 在user.vue页面中,我们要添加表格标签和分页组件标签,具体如下:

……
这定义了一个Go程序中的包。包是Go语言的基本单元,而Go程序本质上是一组包。

在我们的示例中,它告诉Go编译器创建一个可执行文件,而不是库文件。如果你将包命名为不同的名称,则会遇到以下错误:

package command-line-arguments is not a main package 例如,如果你将其重命名为apple,如下所示:

package appleimport "fmt"func main() { fmt.Println("Hello, world") } 如果运行go run main.go:

$ go run main.go package command-line-arguments is not a main package 但是你仍然可以构建它,但它不会生成任何可执行文件:

$ go build main.go $ ls main.go import { isUsername,isPassword } from '../../utils/validate'; …… function login() { if (!isUsername(loginForm.username)) { proxy.$message({ message: '用户名不正确', type: 'error', duration: 1200 }); } else if (!isPassword(loginForm.password)) { proxy.$message({ message: '密码不正确', type: 'error', duration: 1200 }); } else { const data = { username: loginForm.username, password: loginForm.password }; proxy.$http('/mis/user/login', 'POST', data, true, resp => { if (resp.result) { const permissions = resp.permissions; const token = resp.token; //向浏览器storage保存令牌和权限列表 localStorage.setItem('permissions', permissions); localStorage.setItem('token', token); //跳转页面 router.push({ name: 'MisHome' }); } else { proxy.$message({ message: '登陆失败', type: 'error', duration: 1200 }); } }); }

} 接下来,我将把我搭建该技术框架的入门过程记录下来:

过程中遇到很多坑,只要硬着头皮上就没什么能把你阻挡,让我们一起go!go!go! 需求:在日常开发过程中,需要频繁的修改业务逻辑,然后需要部署到服务器上供QA测试。这个过程对于大多数开发人员来说不是难事,但是这个重复性的过程很浪费开发人员的时间,我们希望达到,只要我们将改好的业务逻辑代码commit & push,自动部署更新到服务器上并启动。就可以测试了。 /*!mycat: sql= SELECT DISTINCT u.id, u.username, ( SELECT GROUP_CONCAT( role_name separator "," ) FROM tb_role WHERE JSON_CONTAINS ( u.role, CONVERT (id, CHAR) ) ) AS roles FROM tb_user u JOIN tb_role r ON JSON_CONTAINS ( u.role, CONVERT (r.id, CHAR) ) WHERE u.name="超级管理员" */ SELECT DISTINCT u.id, u.username, ( SELECT GROUP_CONCAT( role_name separator "," ) FROM tb_role WHERE JSON_CONTAINS ( u.role, CONVERT (id, CHAR) ) ) AS roles FROM tb_user u JOIN tb_role r ON JSON_CONTAINS ( u.role, CONVERT (r.id, CHAR) ) WHERE u.name="超级管理员"

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Kubernetes K8s架构师实战集训营,对标大厂高级K8s运维岗
KubernetesK8s架构师实战集训营,对标大厂高级K8s运维岗,覆盖主流容器云平台核心技术,由李振良老师主讲,共8个大的章节,包含工具共计20G。课程为K8s架构师中高级课程,适合K8s已经入门或者高级运维/开发人员学习,学完本套课程能够提升K8s架构设计及故障排查能力,增强公司K8s容器平台。!KubernetesK8s架构师实战集训营,对
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
荀勗 荀勗
5个月前
SpringBoot 3 + Flutter3 实战低代码运营管理-10章
SpringBoot3Flutter3实战低代码运营管理10章地址1:https://pan.baidu.com/s/1Uay0bc6ghAVf401tOdXiQ提取码:sqcs地址2:https://pan.baidu.com/s/1l3kJpBzm9
赵颜 赵颜
4个月前
[最新47章]Three.js可视化企业实战WEBGL课(23年12月升级版)
最新47章Three.js可视化企业实战WEBGL课(23年12月升级版)网盘地址:https://pan.baidu.com/s/1JUzSfbQ95949f7LBDoyRDQ提取码:mog6腾讯微云下载地址:https://share.weiyun
赵嬷嬷 赵嬷嬷
4个月前
[升级16章+电子书]SpringBoot+Vue3 项目实战,打造企业级在线办公系统
学习地址1:https://pan.baidu.com/s/1gx9YoT3asP0fRdlwnBzXIQ提取码:ftyi学习地址2:https://share.weiyun.com/jVSDdcBU密码:cruqf9SpringBootVue3项目实战
贾蓁 贾蓁
3个月前
Go/Golang DevOps运维开发实战集训营
Go/GolangDevOps运维开发实战集训营download》http://quangneng.com/4179/Go/GolangDevOps运维开发实战是一个涉及多个领域的实践项目,包括开发、运维和DevOps。以下是一些关键步骤和技巧:了解Go/
吉太 吉太
1个月前
AI Agent智能应用从0到1定制开发[12章]
下载地址1:https://pan.baidu.com/s/15IbktHy54IdZRg3g7PWWKQ提取码:v7lt下载地址2:https://pan.baidu.com/s/1itYcy6EHYLRZSvj2D5e00A提取码:9jdp一、那为啥最
吉太 吉太
1个月前
[完结16章]SpringBoot2 仿B站高性能前端+后端项目
网盘地址:https://pan.baidu.com/s/1EjOHGVD5ngeLUXUT6YZB1w提取码:fjzv腾讯微云下载地址:https://share.weiyun.com/OZdRCg4X密码:a8wnmx一、什么是SpringBootsp
鲍二家的 鲍二家的
1个月前
[21章]2024版React18+Next.js14+Nest.js全栈开发复杂低代码项目
网盘地址:https://pan.baidu.com/s/1C9IViEiyf1LjX9iAl6Q提取码:7alt腾讯微云下载地址:https://share.weiyun.com/vXd3qr0O密码:bcrymy一、什么是低代码低代码(LowCode
鲍二家的 鲍二家的
3星期前
[完结17章]SpringBoot3+Vue3 开发高并发秒杀抢购系统
学习地址1:https://pan.baidu.com/s/1DRZXkQeGkrPwhVTd2ko00g提取码:gpwn学习地址2:https://share.weiyun.com/ysK13sR2密码:74m96t众所周知,作为开发新手,入行、实习、转