HiKariのTechLab

光の技术屋


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

【从零单排Golang】第二话:初探服务端CRUD,gin+gorm黄金搭档

发表于 2019-08-04 | 更新于 2025-04-12 | 分类于 从零单排Golang

前言

Github传送门

学一门新语言,如果太专注于语法,那肯定学的不够快。如果有一定的需求目标,带着这个目标去学习一门新语言,这样才能学得快。

工作中写后端的时间比例不在少数,而且传闻Go也因其适用于服务端而著名。在Go社区中最为火热的服务端框架跟数据库抽象ORM层当属gin跟gorm了,因此本期单排的目标便是用gin+gorm打一个简易的框架,实现基本CRUD的目标。走你~

准备工作

在第一话中已经大致了解了Go项目的生成,故本次gin+gorm的搭建也以此为基础。

服务端领域的各种术语在不同的场景跟技术栈下有不同的含义。但总体来讲,一个简单的服务端App都会有以下的层次:

  • 校验层:预处理请求,校验请求是否合法(大小、字段、cors、oauth之类),并判断是否拦截。通常也被称作中间层middleware
  • 控制层:处理合法请求的起点——收集整理相应服务模块的结果,判断请求是否合理,决定返回的数据,遵循宽进严出原则。一般叫做Controller,gin里面叫做handler。
  • 业务层:处理真实的业务逻辑,通过和数据层以及各个业务模块的交互从而校验并构建业务数据,交由控制层决策,一般可称之为service
  • 数据层:抽象持久化数据(数据库)到代码层面并提供一系列交互访问的方法,ORM与DAO层都算在内

基于以上结构,大致构建了以下的目录结构:

阅读全文 »

【测试人生】一个测试开发的用户思维

发表于 2019-07-28 | 更新于 2024-11-03 | 分类于 测试人生

近几天一直在思考什么是用户思维,决定结合这一年的工作,把自己的想法记录下来。

在这之前,自己一直秉持一种观念——测试开发从工作内容上,更加符合“开(码)发(农)”的定义,因此应当更加着重于技术深耕,并且在业务对接时,也尽可能地从从技术实现的角度去阐述观点与想法。但是在经过同事伙伴们的提点,以及和家中领导激烈讨(吵)论(架)了一番之后,这个观念就慢慢地改变了。

测试,不仅仅是根据需求,利用各种工具,对开发交付的产品进行功能、性能、安全等测试,发现bug而后提交复现/解决方案,从而确保产品稳定(QC)。而另一些方面在于——如何确保研发计划完备进行,预防产品设计缺陷,从而保证产品体验;如何优化产品生命周期流程,从而使产品顺利上线运营(QA)。作为偏中台的测试开发,扮演的角色更像是“优化产品生命周期”的实现者,而前线上的QA与QC,则成为了我们的用户。因此在业务对接时,首先都需要尽可能满足前线同学的需求,让他们引领效率工具/平台的设计。

阅读全文 »

【从零单排Golang】第一话:Go开发环境搭建——环境变量、依赖与目录结构踩坑

发表于 2019-07-20 | 更新于 2025-06-01 | 分类于 从零单排Golang

前言

Github传送门

当测试开发真不容易,入行第一年,就要在python、NodeJS、lua、C、Java等语言间无缝切换。为了快速响应需求,挺难抽出时间去深耕一门语言的特性(诶羡慕那些只搞Java的人= =)。在MTSC2019分享中也谈到,测试开发归属质量保障QA,作为一个中台角色,其终极任务保障研发效能,因此一大需求是打通产品研发运维的生产线。说到生产线就想到上云,说到上云就想到docker跟kube,说到跟容器的交互就想到了Golang。马蛋,又要学一门新语言了。

开这个坑,旨在展现以程序员的视角学习一门新语言的过程。希望大家看得欢乐。如果有启发,那就更棒啦!

安装与环境变量配置

家里的电脑是Windows,从官网即可下载Win的安装包。Go的版本为1.12。

下好后安装,安装完毕之后还需要设置环境变量(我的电脑——属性——高级系统设置)。GOROOT设置成Go的安装路径,还有一个关键的GOPATH,它表示你的工作目录,一般所有的Go项目,甭管第三方的还是你的,都统一放到这个目录下(从这点可以看出,Go的控制欲还是很强的)。GOPATH的一般结构如下:

阅读全文 »

【测试人生】安卓FPS测试详解

发表于 2019-07-13 | 更新于 2024-04-07 | 分类于 测试人生

安卓的fps测试,是我打开测试开发大门的一把钥匙。两年前的现在,安卓性能测试的相关资料甚少,以fps为例在网上也只有寥寥几篇文章讲述,但到了今年,已经有许多资料在各大技术论坛上供大家看到了。对于自己,一直想找一个机会把这一段技术探索写出来。所以,心动不如行动。

fps(frames per second),通常表示我们屏幕每秒展现的图片(帧)数,反映了一款应用在当前硬件下的性能消耗。比如我们抽CS的时候,就经常关注fps是否高,在高的情况下,就会有较好的流畅度。因此fps是应用性能测试中一个重要指标。

对于一个安卓app而言,为了测定fps数值,我们需要从安卓图形显示相关的模块入手。一个通用的方式是切入安卓的SurfaceFlinger服务,它是图形显示流程中软件层和硬件层的交互点,是极其关键的一环。SurfaceFlinger则是负责分析&合成各个app中的图层,而后将合成的图像数据交由硬件渲染。硬件渲染的机制复杂,因此安卓系统中,将硬件操作进行了抽象方便调用,我们将这一与SurfaceFlinger对接的层次,称之为硬件抽象层(HAL)。SurfaceFlinger与HAL在功能上有部分的耦合,一些Surface合成的工作,也会委托HAL进行。

那么我们该如何通过SurfaceFlinger获得fps数据呢?大体上,我们可以参考《Android性能测试之fps获取》一文。这种方式成功率高(虽然我家手机行不通),且不用root,较为方便

首先,通过adb,我们可以导出SurfaceFlinger服务的运行时信息。

阅读全文 »

【测试人生】MTSC2019参会见闻感悟

发表于 2019-07-01 | 更新于 2024-04-07 | 分类于 测试人生

“测试人生”第一篇文章,献给2019年的移动测试开发大会MTSC。这一次,非常荣幸能够来到北京国际会议中心参会,一睹国内质量保障工作的现状与未来的发展趋势。

在学校期间,我也参与过一些小型的学术会议,但并不如今年的MTSC这样声势浩大。工作一年以来参与的第一个讨论会,已然是全国顶会。借这个机会,能够了解到业内排头企业在质量保障业务上的解决方案,对于自己在业务理解上会颇有帮助。本次议程中,除了参与第一天主会场之外,第二天游戏测试专场也全程参与,收获颇丰,感悟良多,一言难尽。

阅读全文 »

【GitHub探索】新款命令行工具terminus测试

发表于 2019-06-22 | 更新于 2024-09-15 | 分类于 GitHub探索

前言

六月的Github趋势榜单上,除去一些文书、教程性质的项目外,大部分项目并非自己所针对的领域。因此,果断试水了一款软件,

Windows系统下的命令行工具配置,一直是开发者们纠结的痛点。在这一块,cmder、MobaXTerm甚至即将上线的Windows Terminal,都是不错的解决方案。

而今天介绍的这一款软件——terminus,在六月份跻身趋势排行前十,则似乎更加符合我们对命令行工具的影响。作为一个终端模拟器,terminus采用Angular + Electron开发,包含了终端模拟器必备的许多功能,兼具美观与实用性。我们可以首先来看看,terminus的界面长什么样子~

阅读全文 »

【Lua杂谈】犹豫就会败北——元表metatable解析

发表于 2019-06-12 | 更新于 2024-04-07 | 分类于 Lua杂谈

前言

在lua的学习过程当中,元表metatable的概念及用法是常见的障碍之一

元表,在其它lua杂谈等都提到过,是一种描述lua数据的属性以及行为的表。虽然官方给了set、account等例子详细讲解了metatable,但总还是缺乏些提炼。为了干翻这个痛点,这次,果断强上metatable的精髓。毕竟,犹豫就会败北~

元表有什么

我们首先就会有疑问:通过哪些属性指标,可以描述lua的数据呢?通过官方手册,我们可以很容易地找到答案。

在lua中,我们把元表中的key,也就是描述数据的属性指标,称之为event

我们可以把所有的event分为两组(括号中代表lua里的语法):

  1. 描述其基础性质的:

    • 属性索引:__index,__newindex
    • 长度:__len(#)
    • 函数形式:__call
    • 字符串形式:__tostring
  2. 描述其运算的:

    • 普通运算:__add(加+),__sub(减-),__mul(乘*),__div(除/),__mod(模%),__pow(乘方^),__unm(负-),__idiv(取整除//)
    • 位运算:__band(与&),__bor(或|),__bxor(异或~),__bnot(非~),__shl(左移<<),__shr(右移>>)
    • 关系运算:__concat(联结..),__eq(全等==),__lt(小于<),__lte(小于等于<=)

元表怎么用

先来看一段程序吧~

阅读全文 »

【DIY小记】Win10编程字体&主题设置全攻略

发表于 2019-06-01 | 更新于 2024-04-07 | 分类于 DIY小记

前言

编程需要纠结字体跟皮肤吗?肯定要纠结的啦= = = =

调理字体跟皮肤,就跟打扮房间一样。每当打开编程软件之时,要是看到清亮的字体,爽快的皮肤,心里肯定就特别踏实,码码起来肯定也就特别舒服。

是时候分享一下我的编程字体以及主题设置了!!!

阅读全文 »

【GitHub探索】python调试利器——pysnooper源码分析

发表于 2019-05-25 | 更新于 2024-04-07 | 分类于 GitHub探索

前言

这次又开了个新坑——GitHub探索,主要内容是试水当期GitHub上较火的repo

虽然top榜上各路新手教程跟经典老不死项目占据了大半江山,但清流总是会有的。

第一期就试水一下pysnooper吧,一个新奇实用的python调试器。

顺便源码分析一波,了解下python的debug操作。

废话不多说,进入正题~

pysnooper使用效果

通常,我们可以在函数上用pysnooper.snoop装饰器,给这个函数包装一个额外功能,实现在标准错误流打印函数debug信息的效果。比如说:

阅读全文 »

【Easy Python】最终话:重回首知识点,让python真正easy!

发表于 2019-05-19 | 更新于 2024-04-07 | 分类于 Easy Python

前言

Easy Python终于来到完结,我的领导也夸奖我写作非常的卖力用心。对此,我深表欣慰!

六章Python讲解,并不单纯是切磋代码技艺,而更是注重于每一行代码背后发生的事儿

为此,让我们一起重回首Easy Python系列,光荣收尾吧!

回顾

阅读全文 »
1…17181920
ひかり.HDQ

ひかり.HDQ

talk is cheap, code is rich
191 日志
14 分类
415 标签
GitHub Mail CSDN Juejin Steam Bilibili
© 2019 – 2025 ひかり.HDQ
|