goja能够做什么 goja是什么goja实现了ECMAScript 5.1(+)特性1. 完整支持ECMAScript 5.12. 测试通过了ECMAScript官方所有测试用例3. 支持任何能在babel, typescript编译器中运行任何ES54. 支持sourcemapgoja能够做什么执行js表达式func testExpression(){ //创建运行实例 vm := goja.New() //运行表达式 v, _ := vm.RunString("2 + 2") //获
golang实现单例模式 golang实现单例模式go已经提供了实现单例模式的工具sync.Once示例借用sync.Once的一次性特点import ( "sync")type singleton struct {}var _instance *singletonvar _once sync.Oncefunc GetInstance() *singleton { _once.Do(func() { instance = &singleton{} }) return instanc
celery5.2.1以下版本任务调用多耗费1秒 5.0.5版本celery存在一个缺陷, 调用任务耗时多用1秒 这个问题在5.2.0, 5.1.2同样存在 没理解为什么到5.2.1版本才解决,甚至一度把celery排除python技术栈
基于ectd实现go的服务注册 描述基于etcd实现go程序的服务注册,所看的学习资料均比较简单, 实际中要经过反复测试,自己写了一个先用着,有坑再填.需求1. 注册一个服务: 程序启动时2. 注销服务: a. 程序异常退出时, 自动注销, 有5秒TTL延迟; b. 调用Stop()接口主动注销3. 健壮性: a.ectd单节点重启, ectd本身支持; b. etcd全部重启后, 能够恢复正常4. key的格式: 前缀/ip/pid5. value: 字符串.(可以先转为json, 再转string)创建etcd客户
go和python解码msgpack不一致 描述有一个消息字典类型, 使用go进行编码, 传入消息中间件。同时有一个python程序监听, 监听到消息之后进行解码, 遇到了编码问题环境go使用: github.com/vmihailenco/msgpack/v5 v5.3.4python使用: msgpack==1.0.2python解码# go编码的对象是个字典,value可能包含了数组,并且数组类型复杂msgpack.unpackb(xxx)错误提示UnicodeDecodeError: 'utf-8' codec
golang位移操作的一个小坑 问题描述现有int16类型的整数,将它转为两个字节存放。在还原时,一不小心会就被坑。错误用法length := int(keyBytes[cursor] + keyBytes[cursor+1] <<8)正确用法keyBytes := []byte{ 16, 1}length := int(uint16(keyBytes[cursor]) + uint16(keyBytes[cursor+1]) <<8)错误原因字节byte位移时类型不会自动变化, 先要转换类型
nats批量publish最后一条疑似丢失 问题描述写了一个测试脚本,从数据读取一组数据,然后逐条publish到nats-server中, 确定每条都publish了有另外一个程序中subscribe订阅,在该程序发现最后一条一直没收到环境go: 1.16nats-server程序摘要发布for _, record := range records{ ... gNatsConn.Publish(Topic, record) time.Sleep(time.Second*0.1) //
go版本的supervisord #%%描述python版本的supervisrod, 在linux、windows系统中离线安装都不怎么方便. 是否有go版本的呢?github地址https://github.com/ochinchina/supervisord/踩坑记录编译32版本, 有些报错, 需要修改源码在ui界面快速点击start/stop, 进程可能会启动多个。需要加锁处理处理.用法配置文件查找顺序$CWD/supervisord.conf$CWD/etc/supervisord.conf
influxdb遇到时间点存储不了 问题描述有一份mysql存储的历史数据,准备把它转为influxdb存储, 时间点用的是mysql表中记录的创建时间,创建时间是时许的。环境描述influxdb: 2.0.8开发语言: goinflux客户端: influxdb-client-go 2.5.0关键代码摘要使用如下代码, 创建point,发现存储不了。point := influxdb2.NewPoint("table_name", map[string]string{ ...
influxdb如何把point中的多个field一起查出来 问题描述influx查询包含了水平拆分、垂直拆分. 查询结果的每一条记录record,只对应一个field写入一个point时包含多个field, 查询时如何将这几个field一起查出来呢?写入示例point := influxdb2.NewPoint("history", map[string]string{ "Version": DedefaultVersion, "Name": sh.Name, "Active": fmt.Sprin
golang编译-ldflags -H windowsgui被认为是病毒 介绍使用walk为程序做了一个windows界面, cmd窗口需要隐藏。使用了 go build -ldflags="-H windowsgui"结果exe程序被杀毒软件认为是病毒为什么会认为是病毒?隐藏cmd窗口, 双击exe,可以直接启动,并且看不到任何窗口。这不就是病毒的喜欢干的事吗.所以有些杀毒软件, 干脆通杀, 使用了 "-H windowsgui" 直接被认为是病毒我们这些正常的需求该咋办呢?解决办法在程序中,使用代码隐藏cmd窗口import "github.co
influxdb的docker-compose如何配置 influxdb的docker-compose如何配置新建数据目录mkdir data-volumne生成配置文件docker run --rm influxdb:2.0.8 influxd print-config > config.ymldocker-compose配置docker-compose.yaml内容version: "2"services: influxdb: image: influxdb:2.0.8 volumes:
以管理员身份运行cmd有哪几种方法 描述除了右键"以管理员身份运行",还有哪几种方法,能够以管理员身份启动cmd方式一:右键"以管理员方式运行"方式二:powershell命令Start-Process cmd -Verb runasStart-Process powershell -Verb runas方式三: 第三方工具http://code.kliu.org/misc/elevate/方式四:编程在编译程序时,设置启动时请求权限佛說大乘無量壽莊嚴清淨平等覺經pdf净土大经科注2014-doc此生必看的科学实验
golang离线环境依赖包问题 问题描述在一个win10虚拟机中安装了go(go1.16.4)的开发环境, 其中有自己的项目,此时正常编译。然后将这个虚拟机放到内网,内网网络受限,不允许访问外网如果新一个依赖包,该怎么办呢?方法一: 拷贝vendor目录(推荐)在外网环境项目目录,生成vendorgo mod vendor将vendor拷贝进内网,放在内网项目目录缺点:只能当前项目使用优点:体积小类似python的pip download -r requipment.txt,将包下载后放到一个目录方法二:
nats-server系统服务只能使用sc命令注册 起因描述windows环境下nats-server注册成系统, 官方推荐是sc命令而我觉得sc命令台太麻烦, 为什么不用github.com/kardianos/service,或者更方便的工具呢?方法一:使用nssm通过界面进行配置下载地址http://nssm.cc/download过程省略结果死活不行,由于是第三方工具,出错找不到原因,放弃方法二:通过服务外壳作为系统服务介绍使用go生成一个demo.exe,再将demo.exe注册成系统,demo.exe读取配
zap日志写入通道被覆盖 描述实现了一个io.Writer接口,允许zap日志写入,传递给界面,出现了日志被覆盖、重复的情况。原因io.Writer的接口Write传入的[]byte真实类型是slice。通道传递slice时,用的是引用传递,所以真实数据有被覆盖的情况示例zap初始化...out = COut()zapcore.NewCore(encoder, zapcore.AddSync(out), clevel),...自定义日志写入Channelpackage logsvar _Globa
msgpack代替json防止丢失类型 描述开发了一个通信协议, 协议对数据类型比较敏感, 根据不同数据数据类型使用不同格式。golang的数据类型能够满足需求。然后,讲协议转为http方式时,如果传入json,会发现数据类型不符合预期例如,本来是应该int结果是float64; 本来应该是[]byte,结果是string环境http服务器: gin开发语言: golang解决方法探寻什么传输协议会带上数据类型?json类型丢失默认情况下gin的BindJSON,可将传入的参数绑定到具体的结构体,产生类型转换。然后,我的结
人生枷锁之一:傲慢 问题有时会生出轻视之心,觉得某某能力不行。确实它真的能力不行,为什么会产生这种情绪?别人与我何干,应该很平淡才对。这是什么?在什么地方是否会出现?对我有多大危害?这是什么?傲慢什么地方会出现?1、熟人之间。熟悉对方,才会有分别判断,才会产生某某不行的情绪。2、能力、相貌、财富、权势、等等不平等的地方实例1、骂人、打人。傲慢是原因之一。2、刻薄、不能容人。傲慢是原因。3、怨恨,愤世嫉俗。有才能而不得志,傲慢是原因。4、嫌弃、不如意。觉得周围人不如你,必然产生嫌弃感。对我有多大危
nats的安装docker方式 描述docker-compose方式启动nats-server。nats的镜像非常小, docker-cpomse进行管理。下面是配置方式docker-compose.yaml配置version: "2"services: nats-server: #image: provide/nats-server:latest image: nats:latest volumes: - ./nats-server.conf:/nats-s