问题描述最近做广告业务获取某推的广告成效,与其他渠道不同的是,最终拿到的成效数据是一个压缩包的HTTP流数据。将数据写入到本地生成了一个以.gz为后缀的压缩包文件,解压以后的文件存放着json格式的成效数据。当然需要程序去解压缩这个压缩包获取里面的文件了。内置tar包的问题参考网上大佬们之前的解决方案写了一段测试代码:// TODO:解压gz文件 func decompressionGZ(file
转载 2024-04-17 11:23:31
54阅读
解释器模式 目录解释器模式解释器模式分析应用场景代码实现输出实例代码测试总结 解释器模式可以描述如何构建一个简单的“语言”解释器。这个模式只在一些特定的领域才有可能用到,如编译器、规则引擎、正则表达式等。好在解释器模式比较简单,大家可以了解一下。解释器模式解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。UML:分析通过定义可以看出,“语言
GolangAES加密解密gopackagemainimport("bytes""crypto/aes""crypto/cipher""encoding/base64""errors""fmt")//加密过程://1、处理数据,对数据进行填充,采用PKCS7(当密钥长度不够时,缺几位补几个几)的方式。//2、对数据进行加密,采用AES加密方法中CBC加密模式//3、对得到的加密数据,进行base6
原创 2022-08-12 22:27:25
1895阅读
在go的源码包及一些开源组件中,经常可以看到reflect反射包的使用,本文就与大家一起探讨go反射机制的原理、学习其实现源码首先,了解一下反射的定义:反射是指计算机程序能够在运行时,能够描述其自身状态或行为、调整或修改其状态或行为的能力。具体到go的反射机制,对应为:go提供了在运行时检查变量的值、更新变量的值和调用它们的方法的机制,而在编译时并不知道这些变量的具体类型接口反射与Interfac
摘要在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件。总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了。在这一篇文章中,我们将从最简单的一个main函数开始,慢慢重构,来研究如何把API设计的更加规范和具有扩展性。1 构建一个Web应用我们从最简单的开始,利用gin框架实现一个小应用。在这这篇文章中,我先不使用MySQL和Redis,缓存和
转载 2024-05-17 15:42:25
111阅读
同步原语和锁 Golang作为一个原生支持用户态的语言,当提到并发进程,多线程的时候,是离不开锁的,锁是一种并发编程中的同步原语(Synchronization Primitives),它能保证多个 Goroutine 在访问同一片内存时不会出现竞争条件(Race condition)等问题。 基于原语 go语言在sync包中提供了用于同步的一些基本原语,包括常见的sync.Mutex,sync.
目录1. 初识go语言1.1 Hello World1.2 go 数据类型布尔:整型:浮点型:字符类型字符串型:复数类型:1.3 变量常量局部变量:全局变量常量1.5 字符串相关操作1.6 相互转换1.6.1 基本数据1.6.2 string <=> 基本数据类型1.7 时间1.8 复合数据类型1. 数组2. slice3. map1.9 golang面向对象1. 结构体2. 继承
转载 2024-04-03 09:27:37
22阅读
Golang中的锁锁是一种在并发编程中常用的同步机制,用于管理对共享资源的访问。Golang提供了多种锁类型,可以满足不同的并发编程需求。用途和分类锁的主要作用是保护共享资源,防止多个goroutine同时访问同一个资源,导致数据的不一致性和并发安全问题。Golang提供的锁主要分为两类:互斥锁:sync.Mutex互斥锁是最基本的锁类型,可以用于保护任何类型的共享资源。当一个goroutine获
转载 2024-03-25 12:52:22
65阅读
今天谈谈golang源码netpoll部分实现的细节和协程阻塞调度原理epoll原理epoll是linux环境下i/o多路复用的模型,结合下图简单说明epoll工作原理上图说明了epoll生成描epoll表的基本流程,生成socket用来绑定和监听新的连接,将该socket放入epoll内核表,然后调用wait等待就绪事件。当epoll wait返回就绪事件时,判断是否是新的连接,如果是新的连接则
文章目录目的os.ArgsflagFlagSet总结 目的命令行界面(Command-line Interfaces)是比较常用的一种软件形式。对于大部分开发运维人员来说很多时候CLIs可能比图形界面更加方便。软件开发时也经常会有需要开发命令行界面形式软件的情况,使用Golang来开发是一种比较不错的选择。这篇文章将简单介绍使用Golang标准库中os.Args和flag包编写命令行界面。os.
转载 2024-03-16 08:39:53
44阅读
golang基础-锁1、Golang的锁2、sync.WaitGroup注意事项1.计数器不能设置为负值2.WaitGroup对象不是一个引用类型3、sync.Mutex4、sync.RWMutex 1、Golang的锁Golang中的锁有两种:sync.Mutex和sync.RWMutexsync.Mutex的锁只有一种锁:Lock(),它是绝对锁,同一时间只能有一个锁sync.RWMutex
转载 2024-06-30 00:33:58
0阅读
Golang 之区分类型别名(Type Alias)与类型定义(Type define)一、类型别名(Type Alias)、类型定义是什么?二、区分类型别名与类型定义类型定义 一、类型别名(Type Alias)、类型定义是什么?类型别名 是 Go 1.9 版本添加的新功能。主要应用于代码升级、工程重构、迁移中类型的兼容性问题。C/C++ 语言中,代码的重构升级可以使用宏快速定义新的代码。Go
前言前面我们为了解决go程同步的问题我们使用了channel, 但是go也提供了传统的同步工具.它们都在go的标准库代码包 sync 和 sync/atomic 中.下面我们来看一下锁的应用.什么是锁呢? 就是某个协程(线程)在访问某个资源时先锁住, 防止其他协程的访问, 等访问完毕解锁后其他协程再来加锁进行访问.这和我们生活中加锁使用公共资源相似, 例如: 公共卫生间.死锁死锁是指两个或者两个以
文章目录GoLang之自定义类型1.自定义类型2.类型别名3.自定义类型和类型别名的区别4.定义函数类型5.结构体5.1结构体介绍5.2new创建指针类型结构体5.3&取结构体的地址实例化5.4不初始化结构体5.5使用键值对初始化5.6对结构体指针进行键值对初始化5.7省略字段初始化5.8使用值的列表初始化5.9结构体字段的可见性5.10结构体不能与nil比较5.11先var定义结构体再
转载 2024-06-07 21:56:18
53阅读
Golang里的AES加密、解密
原创 2022-10-22 02:29:06
4078阅读
直接上代码: package tools import ( "bytes" "crypto/aes" "crypto/cipher" ) func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize
Go
原创 2021-07-25 11:18:41
831阅读
一、各种符号 1、转义字符 以下是常用的转义字符(escape char) \t :一个制表位,实现对齐功能 \n :换行符 \\ :代表一个\ \" :代表一个",注意不是单引号,Go里面没有 \' 这个转义字符 \r :代表回车,用 \r 后面的字符替换前面的字符,如:fmt.Println("你好\r我"),实际上输出:
转载 2024-03-17 00:02:46
144阅读
使用ioutil包进行文件写入// 写入[]byte类型的data到filename文件中,文件权限为permfunc WriteFile(filename string, data []byte, perm os.FileMode) error示例:/** * @File Name: writefile.go * @Author: * @Email: * @Create Date: 20
此方法仅适用于工作表密码清除,文件的打开密码无法破解!! 此方法从网络学习来的,亲测有效,故编成文档,保存并分享!!! 此方法仅适用于xlsx格式文件,xls文件需另存为xlsx格式。 1,先做好源文件备份,再进行破解 2,把源文件备份一份为“测试1.xlsx”。 3,用压缩软件,对“测试1.xlsx”进行解压操作。 4,打开解压出来的文件,找到sheet1.xml(被保护的工作表sheet1)文
# Android AES文件解密 在Android开发中,文件加密和解密是一个非常常见的需求。其中,AES加密算法是一种高级加密标准,对称加密算法,通常被用来对敏感数据进行加密。本文将介绍如何在Android中使用AES算法对文件进行解密,以保护数据的安全性。 ## AES算法简介 AES(Advanced Encryption Standard)是一种对称加密算法,由美国国家标准与技术研
原创 2024-07-03 06:34:21
241阅读
  • 1
  • 2
  • 3
  • 4
  • 5