- 博客(19)
- 收藏
- 关注
原创 go实现素数筛选器
问题描述:素数是一个自然数,它具有两个截然不同的自然数除数:1和它本身。这里的问题是如何找到小于或等于给定整数n的素数。针对这个问题,我们可以采用埃拉托斯特尼素数筛算法。算法描述:先用最小的素数2去筛,把2的倍数筛除;下一个未筛除的数就是素数(这里是3)。再用这个素数3去筛,筛除3的倍数……这样不断重复下去,直到筛完为止。有[2,∞)的数据生产器。假设是[2,25]有一个素数为2的筛选器,负责筛掉能被2整除的,留下不能被2整除的数,这个数有可能是素数。
2023-11-19 21:47:19 186
原创 Go语言中New函数可以用来创建map吗
一个简单的面试题简单总结下,以及这种题怎么回答。new(T)可以为任意类型的数据分配内存,当使用new(T)创建引用类型时,引用类型初始化为nil,对于nil是不能被赋值的。这时需要使用make来初始化零值。make不仅可以开辟一个内存,还能给这个内存的类型初始化其零值。对于引用类型推荐使用make来创建。make和new的区别?make和new都是golang用来分配内存的内建函数,且在堆上分配内存,make即分配内存,也初始化内存。new只是分配内存,并没有初始化内存。
2023-11-16 12:15:42 234
原创 JWT续期方案
在使用JWT方案的过程中也是遇到了其他的问题,一一解决后,对jwt理解更清晰了。网上给到的方案也挺多的,我没有一一尝试,大家可以根据具体情况选择合适的方案使用。在项目中不考虑性能情况下,我只想简单实现,能颁发token,能续期,能正常过期,能退出登录就可以了。这个方案是遇到了问题,后来就演变成这个方案了。- 后端返回给前端一个生成的Token,前端存在本地Localstorage中,每次请求API放在Header中。Token的续期方案有很多,根据前后端自由搭配,自主设计只要没有bug,都没有问题。
2023-06-01 11:52:02 1279 2
原创 Goroutine泄露
记录一下go语言中常见的goroutine泄露。在内存管理方面,Go 为您处理了许多细节。Go 编译器使用逃逸分析决定值在内存中的位置。运行时通过使用垃圾收集器来跟踪和管理堆分配。尽管在您的应用程序中产生内存泄漏并非不可能,但这种可能性会大大降低。
2023-05-24 17:54:31 493
原创 go-gin 自定义应用metrics
最近有个需求,Prometeus要监控业务系统的运行时指标和业务指标,用来做数据分析和报表。运行时指标包括系统使用的cpu,内存,创建的goroutie等。业务指标包括数据库连接状态,Redis连接状态,IPFS连接状态,平台收入,平台支出及其他业务指标等。根据技术调研,gin框架默认支持与prometheus集成,会生成go运行时的metrics,也可以自定义metrics,下面来看下具体例子和业务应用。
2023-02-12 19:55:32 1083
原创 go-casbin学习
casbin权限这一块做的挺全面,覆盖的权限模型基本上满足日常开发使用,包括RBAC,ABAC,ACL,Restful等模型。简单学习即可上手开发。熟练掌握各种模式,和casbin的api使用,在项目中可以解决权限的大部分问题。
2022-10-19 19:13:33 1025
原创 MongoDB聚合查询优化(二)
MongoDB聚合查询优化(二)问题界面list获取耗时 8s以上,用户无法忍受。数据量才5w问题分析1. 界面功能:根据name过滤根据author过滤根据tokenId过滤根据owner过滤根据created_at降序排列根据recycle_amount,amount,recycle_to判断状态分页2. 表结构EthNftMetatype EthNftMeta struct { Id primitive.ObjectID `bso
2022-05-31 15:59:50 1840
原创 mongodb 聚合查询优化(一)
MongoDB 聚合查询优化一、性能分析1. 参考文档https://developer.aliyun.com/article/777617https://blog.csdn.net/leshami/article/details/53521990?spm=a2c6h.12873639.article-detail.5.ec165124uwgMuO官方: https://www.mongodb.com/docs/manual/reference/explain-results/?spm=a2c6
2022-05-31 15:58:22 1111
原创 第四章 网络层
文章目录一、网络层服务二、数据报网络与虚电网络1. 数据报网络2. 虚电路网络三、数据互连与网络互连设备1. 异构网络互连2. 路由器四、网络层拥塞控制1. 网络拥塞2. 流量感知路由3. 准入控制4. 流量调节5. 负载脱落五、Internet网络层(重点)1. IPv4协议(Interet Protocol version 4)2. IPv4编址3. 动态主机配置协议4. 网络地址 转换5. ICMP(互联网控制报文协议)6. IPv6六、路由算法与路由协议1. 路由选择算法的分类2. 链路状态路
2021-11-24 11:35:33 1179
原创 第六章 物理层
文章目录一、数据通信基础1. 数据通信基本概念2. 数据通信系统模型二、物理介质三、信道与信道容量四、基带传输五、频带传输六、物理层接口规程一、数据通信基础1. 数据通信基本概念消息和信息消息:人类能够感知的描述。 例如:眼镜看到的文字和图像;耳朵听到声音;鼻子闻到气味等。信息:消息中包含的有意义的内容。通信通信:在一点精确或近似地再生另一点的信息。 -------香农通信系统:能够实现通信功能的各种技术、设备和方法的总体。信号信号: 在通信系统中,信息在传输
2021-09-11 16:49:23 1179
原创 第五章 数据链路层与局域网
第五章 数据链路层与局域网数据链路层服务差错控制多路访问控制协议局域网点对点链路协议一、数据链路层服务概念数据链路层: 负责通过一条链路,从一个结点向另一个物理链路直接相连的相邻结点 ,传送网络层数据表报,中间不经过 任何 其他交换结点。数据链路: 网络中两个结点之间的逻辑通道。实现控制数据传输协议的硬件(网卡)和软件加到链路上构成的。数据链路层传输单元:帧。数据链路层提供的服务组帧帧头:发起结点和接受结点的信息地址、定界字符。帧尾:用于差错检测和差错编码。
2021-08-31 13:21:00 244
原创 VC++安装
文章目录前言一、VC++安装?二、使用步骤1. 打开VC6.0++,选择文件--新建。2. 新建一个控制台应用工程,命名为demo。3. 选择一个空的工程。4. 新建工程完毕后,再次新建。5. 新建一个C++源文件。6. Hello World7. 调试8. 排错总结前言重新学习高级语言程序设计,把曾经学过的C语言再捡起来一、VC++安装?vc++ 6.0下载解决win8.1环境兼容问题二、使用步骤1. 打开VC6.0++,选择文件–新建。2. 新建一个控制台应用工程,命名为d
2021-05-09 14:52:32 2079 1
原创 基于wasm的探索与研究(四)
AES加密算法性能对比上一篇文章分享了wasmer runtime,编译好的openssl.wasm文件可以独立运行,这篇文章分享openssl.wasm和原生openssl之间的性能对比。测试硬件主机MacBook ProCPU6-Core Intel Core i7 2.2 GHz/启动超线程内存16GB磁盘SSD测试软件OpensslLibreSSL 2.8.3Openssl WASMopenssl 版本 openssl 1.1.1d
2020-12-21 14:42:37 986
原创 基于wasm的探索与研究(三)
wasmer运行时上一篇文章分享了基于wasm的openssl实践,讲述了openssl的MD5算法如何在浏览器中执行。在探索过程中发现了openssl是可以通过wasm编译后直接run,并且有自己的runtime,这是因为openssl.wasm是通过wasmer编译运行的,这一篇文章分享制作具有运行时的openssl.wasm概述Wasmer介绍Openssl编译到WASM总结一、Wasmer介绍Wasmer是一个用于在服务器上执行WebAssembly的开源运行时。支持基于WebAs
2020-12-12 18:15:57 1793 2
原创 基于wasm的探索与研究(二)
基于wasm的openssl实践上一篇文章分享了WebAssembly概念和基本使用,通过两个代码示例的分析对WebAssembly有了大致的了解。这一篇文章分享的是基于WebAssembly的加密工具实践,我们就以openssl的摘要算法md5和sha1为例,在Mac上编译openSSL到WebAssembly。环境Emscripten 版本 2.0.3Openssl 版本1.1.1d浏览器 版本 85.0.4183.121(正式版本) (64 位)概述在Mac上编译openSSL到W
2020-12-07 12:02:31 1461
原创 基于wasm的探索与研究(一)
基于wasm的探索与研究(一)WebAssembly初探本次分享的文章是基于WebAssembly的探索与研究。由于最近一直在做加密相关的项目,有想法把高级语言实现的加密工具运行在浏览器中,恰好WebAssembly是为了一个可移植的目标而设计的,正好满足需求,顺便测试下通过WebAssembly编译后的加密工具性能。当然在研究WebAssembly的时候也遇到了各种问题,后面会和大家一起分享。这篇文章主要了解WebAssembly,以及WebAssembly基本使用方法。概述WebAssembly
2020-11-30 11:01:26 2584
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人