随笔分类 - golang
初学者的探索
摘要:内存泄漏 是一种即使当某块内存不再使用之后仍然没有被释放而产生的 bug。通常来说,它们是非常明显的,高度可见的,这使得它们成为学习程序调试的最佳选择。Go 是一门特别适合识别定位内存泄漏的语言,因为它有一套强大的工具链,这套工具链配备了非常强大的工具(pprof),它可以非常轻松地查明内存的使用情
阅读全文
摘要:1 属性 模式名 LDAP注入 模式ID 参考 关键词 注入,分级目录结构,数据查询 STRIDE 信息泄露,篡改,权限提升 分类 Web攻击方法 [ 回目录 ]2 概述 攻击模式介绍 LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种
阅读全文
摘要:package main import ( "fmt" "strconv" "strings" "testing" ) type testStruct1 = struct { testId int inputStr inputStruct want string } type inputStruct
阅读全文
摘要:1 sync.Pool 的使用场景 一句话总结:保存和复用临时对象,减少内存分配,降低 GC 压力。 举个简单的例子: type Student struct { Name string Age int32 Remark [1024]byte } var buf, _ = json.Marshal(
阅读全文
摘要:1. 背景 类型别名(type aliases)原本是要在 Go 1.8 发布时推出的。但是由于一些争议和实现上的问题,Go 团队把它推迟到了 Go 1.9。 2.目的 这一特性其实是为开发者们的代码库重构准备的。代码重构是对代码的重新组织,以及这种重组与代码包之间的关系的重新思考和修改过程。代码重
阅读全文
摘要:因为咱的童鞋们基础不一, 有考专业级的有考工作级的, 所以就分开来说;另外虽然考纲里说动态规划的不考, 但是其实有些题目使用简单的动态规划反而更简单, 懂得动态规划得思想就得;这下面的推荐刷题不是只刷一次就行了的, 因为第一次去做一般都不会做的, 需要多刷两次提高自己对各种数据结构和算法的理解和敏感
阅读全文
摘要:1 是否有反序列化漏洞? 1.1 先看java的反序列化漏洞 来源: https://xz.aliyun.com/t/2041 简单的反序列化漏洞demo 在Java反序列化中,会调用被反序列化的readObject方法,当readObject方法书写不当时就会引发漏洞。 PS:有时也会使用read
阅读全文
摘要:1.1.序列化反序列化是什么(what) 序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象状态的保存与重建。 反序列化:客户端从文件中或网络上获得序列化后的对象字节流,根据字节
阅读全文
摘要:摘要:go结构体方法未使用指针,结构体实例的锁失效 【问题描述】 go结构体方法未使用指针,结构体实例的锁失效 【错误代码片段】 给结构体定义一把锁 在函数中调用锁 实测锁失效,仍存在资源竞争,导致请求失败的情况 【原因分析及推荐写法】 结构体方法中未使用指针,参数传入方式是拷贝一个新实例c,因此,
阅读全文
摘要:云服务通用表格识别图片转换 1. 题目 今天学习1105专业级第二题。题目: 题目描述 华为云推出了“通用表格识别”服务,可以将图片表格转换成文本数据。请你把文本数据进一步转换为「文本型表格」, 如下图所示: 现给出一个图片表格的文本数据: · 每行数据形如 line3 col1 A,表示第3行第1
阅读全文
摘要:在上一篇,介绍了表格驱动测试方法和gomock测试框架,大大提升了测试效率与质量。本篇将介绍在测试中引入断言(assertion),进一步提升测试效率与质量。 为什么需要断言库 我们先来看看Go标准包中为什么没有断言,官方在FAQ里面回答了这个问题。 golang.org/doc/faq#ass…
阅读全文
摘要:在第一篇文章中提到过,为了让代码可测,需要用依赖注入的方式来构建我们的对象,而通常我们会在main.go做依赖注入,这就导致main.go会越来越臃肿。为了让单元测试得以顺利进行,main.go牺牲了它本应该纤细苗条的身材。太胖的main.go可不是什么好的信号,本篇将介绍依赖注入框架(wire),
阅读全文
摘要:单元测试是代码质量的保证。本系列文章将一步步由浅入深展示如何在Go中做单元测试。 Go对单元测试的支持相当友好,标准包中就支持单元测试,在开始本系阅读之前,需要对标准测试包的基本用法有所了解。 现在,我们从单元测试的基本思想和原理入手,一起来看看如何基于Go提供的标准测试包来进行单元测试。 单元测试
阅读全文
摘要:通过阅读上一篇文章,相信你对怎么做单元测试已经有了初步的概念,可以着手对现有的项目进行改造并开展测试了。学会了走路,我们尝试跑起来,本篇主要介绍gomock测试框架,让我们的单元测试更加有效率。 表格驱动测试方法(Table Driven Tests) 当针对某方法进行单元测试的时候,通常不止写一个
阅读全文
摘要:1811. 素数行李箱密码(BFS、层序遍历) 难度:困难;主观评价:中等。 本题与 1795. 最佳路径 相似,最大的难点是生成素数数组和想到用层序遍历 BFS 解题,算法本身是非常简单的——没错,比 1795 简单很多,甚至连邻接矩阵都不需要构造。 由于每次操作之后的结果必须都是素数,所以可以认
阅读全文
摘要:1795. 最佳路径(BFS、层序遍历) 难度:困难;主观评价:中等。 BFS(层序遍历)应用题,具体看注释。 看到有向带权图的最短路径,第一反应其实是 Dijkstra,但是由于这道题存在 Dijkstra 无法处理的情况:经过的顶点更少的路径权值比经过节点更多的路径高,所以只能 BFS。 与常见
阅读全文
摘要:写在前面 关于“模拟题”和“算法题”及主观难度评价 第一批 1791. 设备编号(模拟) 1792. 服务器集群网络延时(排序、数学) 1793. 给定差值的组合(哈希表) 1787. 最长元音子串(模拟) 1788. 计算面积(模拟、哈希表) 1794. 最长的指定瑕疵度的元音子串 1789. 简
阅读全文
摘要:阅读用时:4分钟 导语 “成熟的工具,要学会自己写代码”。本文介绍了 Go 依赖注入工具 [[Wire]] 及其使用方法,以及在实践中积累的各种运用技巧。当代码达到一定规模后,[[Wire]] 在组件解耦、开发效率、可维护性上都能发挥很大的作用,尤其在大仓场景。 依赖注入 当项目变得越来越大,代码中
阅读全文
摘要:1.go 采用c 的err方法,但是容易产生大量的外部判断。 package killer import "fmt" type Book struct { Name string Price int Store int Member int } func clientExample() { book
阅读全文
摘要:1. Golang里面没有构造函数,但是Golang却可以像C++一样实现类似继承、构造函数一样等面向对象编程的思想和方法 Golang里面要实现相关的构造函数定义可以通过通过new来创建构造函数, 通过new一个对象,或者利用Golang本身的&方式来生成一个对象并返回一个对象指针 package
阅读全文