![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 91
Gopher-毛
通信专业本科,23年毕业。目前全身心转码,go 服务器开发工程师。所以基本不会再更新和回答通信相关的任何内容,望海涵,江山代有才人出,肯定有很多比我更优秀的人,望大家寻找新的通信大佬博主。我说:如果有不可能,那就去创造!
展开
-
Gin源码阅读与分析
地址:https://github.com/mao888/golang-guide。大致的流程就是从路由里找出handler,然后进行处理。先执行接下来的handlers,然后返回再执行当前的。实现,使用的数据结构是基数树(radix tree)。里面的第一个handler,然后一个个执行下去。这里会把绝对路由算出来,然后加到树里。的时候发生了什么呢?的同学应该知道,在Go里只要实现。里拿一个空的context,丢到。然后发现没有然后了,那么当我们调用。这就是处理流程,请求来了,从。原创 2022-12-09 18:29:52 · 477 阅读 · 1 评论 -
【go微服务】protobuf中oneof、WrapValue和FieldMask的使用
假设我的博客系统支持为读者朋友们发送博客更新的通知信息,系统支持通过邮件和短信两个方式发送通知。但每一次只允许使用一种方式发送通知。在这个场景下我们就可以使用oneof字段来定义通知的方式——notice_way。// 通知读者的消息}}类似这种场景推荐使用中定义的WrapValue,本质上就是使用自定义message代替基本类型。// ...//}//}// ...在这个示例中,我们就可以使用Int64Value代替int64,修改后的protobuf文件如下。}原创 2022-12-02 16:56:12 · 2206 阅读 · 2 评论 -
【go微服务】Protocol Buffers V3中文语法指南
首先让我们看一个非常简单的例子。假设你想要定义一个搜索请求消息格式,其中每个搜索请求都包含一个查询词字符串、你感兴趣的查询结果所在的特定页码数和每一页应展示的结果数。下面是用于定义这个消息类型的.proto文件。}文件的第一行指定使用proto3语法: 如果不这样写,protocol buffer编译器将假定你使用proto2。这个声明必须是文件的第一个非空非注释行。消息定义指定了三个字段(名称/值对) ,每个字段表示希望包含在此类消息中的每一段数据。每个字段都有一个名称和一个类型。原创 2022-11-25 16:23:59 · 796 阅读 · 0 评论 -
【go微服务】gRPC
像许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以通过参数和返回类型远程调用的方法。默认情况下,gRPC 使用作为接口定义语言(IDL)来描述服务接口和有效负载消息的结构。可以根据需要使用其他的IDL代替。例如,下面使用 protocol buffers 定义了一个服务。}}}在gRPC中你可以定义四种类型的服务方法。普通 rpc,客户端向服务器发送一个请求,然后得到一个响应,就像普通的函数调用一样。服务器流式 rpc,其中客户端向服务器发送请求,并获得一个流来读取一系列消息。原创 2022-11-11 12:28:07 · 1510 阅读 · 1 评论 -
【go微服务】RPC的原理与Go RPC
RPC(Remote Procedure Call),即远程过程调用。它允许像调用本地服务一样调用远程服务。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。首先与RPC(远程过程调用)相对应的是本地调用。原创 2022-11-11 12:09:45 · 3250 阅读 · 1 评论 -
golang实现es根据某字段分组,统计每组某一字段的数量,过滤空值并去重
需求:根据app.Id分组,统计每组的OwnerBid数量,过滤空值并去重。欢迎进群交流:1007576722。原创 2022-09-20 17:15:06 · 1921 阅读 · 2 评论 -
golang实现es根据某个字段分组,对某个字段count总数,对某个字段sum求和
一个series 有 n 个dna,series 与 dna关系为 1 :n。欢迎进群交流:1007576722。:实现按照dna发行数量(系列下。的总数)或者发行金额(系列下。)排序,同时支持分页功能。原创 2022-09-09 18:08:47 · 2379 阅读 · 1 评论 -
【面向校招】操作系统——进程与线程
进程管理一、进程与线程线程是处理机调度的单位,进程是资源分配的单位1、进程有哪些状态及状态转换?进程一共有5种状态,分别是创建、就绪、运行(执行)、终止、阻塞。运行状态就是进程占有CPU,正在CPU上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。就绪状态就是说进程已处于准备运行的状态,即进程获得了除CPU之外的一切所需资源,一旦得到CPU即可运行。阻塞状态就是进程正在等待某一事件而暂停运行,比如等待某资源为可用或等待I/O完成。即使CPU空闲,该进程也不能运行。创建态原创 2022-05-08 00:09:49 · 1117 阅读 · 2 评论 -
基于Go语言实现OSS文件上传(local)
Config:server/config/oss.gopackage configtype Local struct { Path string `mapstructure:"path" json:"path" yaml:"path" `}type Qiniu struct { Zone string `mapstructure:"zone" json:"zone" yaml:"zone"` Bucket string `mapstruc原创 2022-04-29 23:50:15 · 2306 阅读 · 1 评论 -
【Golang面经】Channel、Context、Goroutine
目录ChannelChannel读写特性(15字口诀)channel线程安全限制goroutine的数量尝试 chanContext接口定义Deadline()Done()Err()Value()ChannelChannel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。它的操作符是箭头 <- 。channel一般用于协程之间的通信,channel也可以用于并发控制。比如主协程启动N个子协程,主协程等待所有子协程原创 2022-04-24 00:27:18 · 1361 阅读 · 1 评论 -
【面向校招】MYSQL知识点整理
目录基础数据库三范式InnoDB与MyISAMMySQL执行查询过程索引索引模型哈希模型有序数组模型搜索树模型BST和AVL等二叉树模型B树模型B+树主键索引和非主键索引回表索引维护 (页分裂与页合并)覆盖索引最左前缀原则前缀索引索引下推自适应哈希索引索引相关高频面试题事务事务的特性 ACID并发事务带来的问题隔离性与隔离级别事务相关高频面试题事务日志redo logbinlog两阶段提交undo log事务日志相关高频面试题MVCC一致性非锁定读和锁定读一致性非锁定读锁定读MVCC 实现原理RC和RR级别原创 2022-04-16 22:05:22 · 7483 阅读 · 14 评论 -
【Go学习】Go内存管理与并发控制
目录内存管理内存分配原理1. 前言2. 基础概念2.1 span2.2 cache2.3 central2.4 heap3. 内存分配过程4. 总结垃圾回收原理1. 前言2. 垃圾回收算法3. Golang垃圾回收3.1 垃圾回收原理3.2 内存标记(Mark)3.3 三色标记法3.4 Stop The World4. 垃圾回收优化4.1 写屏障(Write Barrier)4.2 辅助GC(Mutator Assist)5. 垃圾回收触发时机5.1 内存分配量达到阀值触发GC5.2 定期触发GC5.3 手原创 2022-03-20 16:44:17 · 1421 阅读 · 0 评论 -
【go学习】Golang底层学习笔记
1.1.1. Go编译词法与语法分析意义:解析源代码文件,将文件中字符串序列转换成Token序列把执行词法分析的程序称为词法解析器(lexer)语法解析的结果就是抽象语法树(AST)每个AST都对应一个单独的Go语言文件,这个抽象语法树中包括当前文件属于的包名,定义的常量,结构体和函数等如果发生错误,被语法解析器发现并将消息打印在标准输出上,编译过程直接中止Go语言早期用lex做词法分析,后续还是使用Go语言实现词法分析器,自己写的词法分析器分析自己类型检查和AST转换编译器对语原创 2022-02-26 18:16:02 · 1406 阅读 · 0 评论 -
【Go微服务】—— RPC
目录1. RPC1.1.1. RPC简介1.1.2. 流行RPC框架的对比1.1.3. golang中如何实现RPC1.1.4. RPC调用流程1.1.5. 网络传输数据格式1.1.6. 实现RPC服务端1.1.7. 实现RPC客户端1.1.8. 实现RPC通信测试1. RPC1.1.1. RPC简介远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程如果涉及的软件采用原创 2022-02-19 17:47:00 · 1771 阅读 · 3 评论 -
【GoWeb开发】基于Cookie、Session和基于JWT Token的认证模式介绍
HTTP是一个无状态的协议,一次请求结束后,下次在发送服务器就不知道这个请求是谁发来的了(同一个IP不代表同一个用户),在Web应用中,用户的认证和鉴权是非常重要的一环,实践中有多种可用方案,并且各有千秋。原创 2022-02-12 00:47:00 · 908 阅读 · 1 评论 -
【Java巩固一】面向对象、HashMap、ArrayList、LinkedList、JDK1.8新特性
Java面向对象有哪些特征,如何应用 面向对象编程是利用类和对象编程的一种思想。万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的继承关系, 一个类和多个类的多态关系。万物皆对象,对象是具体的世界事物,面向对象的三大特征封装,继承,多态。封装,封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;继承是父类和子类的关系,多态说的是类与类的关系。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数原创 2022-01-09 12:47:04 · 373 阅读 · 2 评论 -
【SSM框架】Mybatis动态SQL
目录目标一、介绍二.、环境准备1. 创建数据库,新建一个blog表2. 实体类编写3. 编写Mapper接口和xml文件4. 插入初始数据三、IF-WHERE语句1. 编写参数实体类2.编写接口类3.编写xml4. 测试1. 如果author为空,只根据title去查2. 如果Title为空,只根据auther去查四、Set语句1. 编写修改接口2. 编写xml3. 测试1. auther为空,修改title2. title为空,修改auther五、SQL片段六、Foreach语句1. 编写接口2. 编写x原创 2022-01-01 16:43:11 · 429 阅读 · 0 评论 -
【SSM框架】Mybatis的基本使用
Mybatis的基本使用目录Mybatis的基本使用学习目标一、认识Mybatis1. 简介2. 原理3. 为什么使用Mybatis原生jdbc连接4. Mybatis的优点5. Mybatis的核心6. 如何获取mybatis二、Mybatis入门1. 环境搭建2. 创建一个模块,编写MyBatis核心配置文件3. 编写MyBatis工具类4. 创建实体类5. 编写Mapper接口6. 编写Mapper.xml配置文件7. 编写测试类8. 运行结果三、更多案例讲解1. 通过id查询用户2. 根据多个参原创 2021-12-26 21:04:45 · 272 阅读 · 1 评论 -
【项目总结】项目开发规范
目录背景后端规范一、接口api规范1.接口风格接口风格统一采用restful规范2.接口api命名规范3.接口参数规范4.接口响应数据/状态码规范4.1响应数据结构4.2Http状态码使用4.3自定义code的使用(==自定义状态码暂定,需完善和确定==)4.4如何使用Http状态码和自定义code5.接口访问权限二、异常处理规范1.使用异常处理的方式(暂定)2.什么是使用异常处理?三、事务规范1.什么时候使用事务?四、日志规范1.什么时候使用日志?2.如何使用日志记录?3.日志文件生成五、文件夹结构规范1原创 2021-12-12 00:06:25 · 1346 阅读 · 1 评论 -
【Git技能】GitHub flow 与 Git 项目开发流程详解
目录一、简介二、GitHub flow三、流程详解(0)添加SSH公钥(1)Fork(2)Clone(3)添加远程仓库(4)查看分支和状态(5)新建分支(6)stash(7)commmit & push(8)提PR(9)Code Review(10)END(11)注意事项一、简介 我们常常会将自己的代码托管至一些代码管理平台进行托管,比如Github、Gitee、或是自己搭建的托管平台等,其中Git就是重要的传输控原创 2021-12-04 17:12:42 · 1347 阅读 · 2 评论 -
【框架学习】SMPE后端框架 - Spring Security
目录Spring Security1. SecurityContextHolder 工具类2. Spring Security中将使用username和password封装成Authentication的实现类UsernamePasswordAuthenticationToken,声明为了authenticationToken2.1 整个过程的讲解2.1.1 UsernamePasswordAuthenticationFilter类的说明2.1.2 封装用户名和密码的基石:UsernamePasswordA原创 2021-11-27 18:42:19 · 1094 阅读 · 1 评论 -
【框架学习】SMPE后端框架-日志模块分享
目录什么是 AOP为什么需要 AOP1、日志使用注解`@Log`接口切面日志使用2、执行过程3、原理分析3.1选择哪一种AOP声明样式3.2基于@AspectJ的AOP3.2.1声明一个Aspect3.2.2声明一个pointcut3.2.3声明一个advice3.2.3.1Before advice3.2.3.2After returning advice3.2.3.3After throwing advice3.2.3.4After (finally) advice3.2.3.5Around advic原创 2021-11-21 00:42:58 · 700 阅读 · 1 评论 -
Docker-compose+nginx部署SpringBoot+Vue前后端分离项目
目录一、windows环境1.1、windows环境前端部署1.2、windows环境后端部署二、linux环境2.1、安装docker2.2、安装docker compose2.3、编写Dockerfile文件2.4、编写docker-compose.yml文件2.5、修改application-pro.yml2.6、准备好nginx的挂载目录和配置2.7、上传前端2.8、部署后端三、域名更多相关文章点这里前言:1、vue-springboot-blog视频教程:【一周速成】Vue+SpringBo原创 2021-10-27 22:21:13 · 5147 阅读 · 2 评论 -
【后端学习】后端技术要点总结【一】
目录一、SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用二、RESTfull 接口规范理解三、SpringBoot事务四、Mybatis动态SQL分页五、**主键生成策略**六、context上下文概念七、cookie和session八、授权认证登录之 Cookie、Session、Token、JWT 详解一、先了解几个基础概念二、Cookie浏览器Cookie详解三、什么是 Session四、Cookie 和 Session 的区别五原创 2021-09-05 12:34:56 · 2418 阅读 · 1 评论 -
SpringBoot常用注解
SpringBoot常用注解目录SpringBoot常用注解1、@RequestMapping2、@RequestBody3、@GetMapping4、@PostMapping5、@PutMapping6、@DeleteMapping7、@PatchMapping8、@Configuration9、@Autowired@RequiredArgsConstructor10、@RestController@Controller和@RestController的区别11、@ResponseBody12、@Tab原创 2021-09-05 11:58:54 · 1474 阅读 · 2 评论 -
狂胜说Mybatis笔记
目录狂神说MyBatis01:第一个程序狂神说MyBatis02:CRUD操作及配置解析狂神说MyBatis03:ResultMap及分页狂神说MyBatis04:使用注解开发狂神说MyBatis05:一对多和多对一处理多对一的处理一对多的处理狂神说MyBatis06:动态SQL狂神说MyBatis07:缓存更多Java全栈相关文章点下方文章狂神说MyBatis01:第一个程序MyBatis简介环境说明:jdk 8 +MySQL 5.7.19maven-3.6.1IDEA学习前需要原创 2021-09-02 21:53:17 · 491 阅读 · 0 评论 -
【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!!!【项目完结】
项目目录资源准备前后端分离项目技术栈Java后端接口开发1、前言2、新建Springboot项目3、整合mybatis plus3、统一结果封装4、整合shiro+jwt,并会话共享ShiroConfigAccountRealmJwtTokenAccountProfileJwtFilter5、异常处理6、实体校验7、跨域问题Swagger2配置8、登录接口开发9、博客接口开发10、后端总结Vue前端页面开发1、前言2、项目演示3、环境准备4、新建项目5、安装element-ui6、安装axios7、页面路由原创 2021-09-01 21:57:16 · 14770 阅读 · 11 评论 -
【Springboot学习】SpringBoot集成Shiro前后端分离使用redis做缓存【个人博客搭建】
shiro-redis目录shiro-redis下载shiro-core/jedis 版本对比图使用前如何配置?设置文件Redis 独立Redis哨兵Redis 集群SpringRedis 独立Redis哨兵Redis 集群序列化器 Serializer可配置选项 Configurable OptionsRedis管理器RedisSessionDAOCacheManager 缓存管理器弹簧启动器 Spring boot starter如果您还没有创建自己的`SessionManager`或`Session原创 2021-08-21 09:32:53 · 1613 阅读 · 3 评论 -
【Springboot学习】Shiro快速入门及与SpringBoot集成
目录1、Shiro简介1.1、Shiro 是什么?1.2、有哪些功能?1.3、Shiro架构(外部)1.4、Shiro架构(内部)2、Hello World2.1、快速实践3、SpringBoot集成3.1、SpringBoot整合Shiro环境搭建3.2、Shiro实现登录拦截3.3、Shiro实现用户认证3.4、Shiro整合Mybatis3.5、Shiro实现用户授权3.6、Shiro整合Thymeleaf3.7、所有代码4、完美的解释1、Shiro简介1.1、Shiro 是什么?Apach原创 2021-08-20 11:31:43 · 1196 阅读 · 4 评论 -
【MyBatisPlus学习】乐观锁 OptimisticLockerInnerInterceptor插件 细解
文章目录乐观锁测试一下MP的乐观锁插件1、给数据库中增加version字段!2、我们实体类加对应的字段3、注册组件4、测试一下更多相关文章点这里乐观锁OptimisticLockerInnerInterceptor乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题, 再次更新值测试悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作!我们这里主要讲解 乐观锁机制!乐观锁实现方式:当要更新一条记录的时候,希望这条记录没有被别原创 2021-08-18 22:57:16 · 1585 阅读 · 0 评论 -
分布式系统唯一ID生成方案汇总
目录1. 数据库自增长序列或字段2. UUID3. UUID的变种4. Redis生成ID5. Twitter的snowflake(雪花)算法6. 利用zookeeper生成唯一ID7. MongoDB的ObjectId8. TiDB的主键更多相关文章点点这里系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1. 数据库自增长序列或字段原创 2021-08-18 20:33:11 · 425 阅读 · 0 评论 -
【Java全栈】Java全栈学习路线及项目全资料总结【JavaSE+Web基础+大前端进阶+SSM+微服务+Linux+JavaEE】
目录一,程序应用二,面向对象程序设计基础一,程序应用二,面向对象程序设计基础面向对象程序设计基础(一)学生信息管理面向对象程序设计基础(二)矩形原创 2020-12-03 21:35:26 · 4201 阅读 · 1 评论 -
Mybatis作用域(Scope)和生命周期
目录SqlSessionFactoryBuilderSqlSessionFactorySqlSession映射器实例作用域理解更多相关文章点这里哦理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。画一个流程图,分析一下Mybatis的执行过程!提示:对象生命周期和依赖注入框架依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器,并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。 如果对如何通过依赖注入框架使用原创 2021-08-07 17:35:13 · 678 阅读 · 0 评论