草庐IT

数字安全

全部标签

multithreading - 阅读缓存DIY书时的一个Go map线程安全问题

我正在读一本书,它教我如何编写像Redis这样的简单缓存。以实现分布式哈希为目标,项目必须有key迁移,这需要一个迭代器。而且我认为可能存在一些问题。他的书是关于迭代map的,但是在迭代的同时,读取锁的保持不是连续的。原因是尽量不影响主缓存进程。我相信一定存在线程安全问题,因为主缓存线程仍在写入映射。我写了一个演示,但不确定。//bookcodetypeinMemoryScannerstruct{pairpairChan*paircloseChchanstruct{}}func(c*inMemoryCache)NewScanner()Scanner{pairCh:=make(chan*

长数字的 JSON 解码给出 float

例如,我使用golang编码和解码JSON,当我想用​​数字字段进行编码时,golang将其转换为float而不是使用长数字。我有以下JSON:{"id":12423434,"Name":"Fernando"}在marshal到map并再次unmarshal到json字符串后,我得到:{"id":1.2423434e+07,"Name":"Fernando"}如您所见,“id”字段采用浮点表示法。我使用的代码如下:packagemainimport("encoding/json""fmt""os")funcmain(){//CreatetheJsonstringvarb=[]byte(

go - 我应该重用日历 API 服务,还是按需创建新服务是否安全?

我制作了一个小型网络服务器来创建和更新日历事件。但是,我有点不确定我应该如何使用日历api库服务。目前,每次网络服务器接受请求时,我都会创建一个新请求,如下所示:ctx:=context.Background()srv,err:=calendar.NewService(ctx,option.WithTokenSource(config.TokenSource(ctx)))我怀疑我可能应该重用此服务,但我找不到任何关于此的文档。重复使用安全吗?不再使用时会自动丢弃(即垃圾回收)吗? 最佳答案 您可能想使用req.Context()(其

数字信号处理技术在各个领域(电信、音频、图像、雷达、声呐等)的用途

电信领域电信,即电子通信。电信公司的基本盈利模式就是:为用户创建信道,用户再来使用这些信道,电信公司以此向用户收费,类似先修路再收过路费。当然,电信公司也可以为用户提供更多的服务,再进行收费。信道的概念可能比较抽象,稍微具体化一点,它在物理实物上分为有线和无线,在资源上分为时域、频域、空域。在有线通信中,信号在线缆中占据某一频段某一时间,即信号在信道中传输。在无线通信中,信号在空间中占据某一频段某一时间,也是信号在信道中传输。电信公司的主要成本在于创建和维护信道。在一个信道中传输的有效信息越多,他们赚的钱就越多。一个信道能够传输的最大信息量,在数学上已经被香农公式限定。众多技术只是帮助逼近香农

google-app-engine - Golang、App Engine、 channel 和线程安全

http://blog.golang.org/go-and-google-app-engine“此外,尽管存在goroutine和channel,但当Go应用程序在AppEngine上运行时,在给定实例中仅运行一个线程。也就是说,所有goroutine都在单个操作系统线程中运行,因此没有CPU并行性可用于给定的客户请求。我们希望在某个时候可以取消此限制”那是在2011年5月。现在仍然如此吗?我有一个应用程序,它除了利用Golang的速度之外什么都不做;获取一些输入数据,对其执行内存计算,返回结果。切勿接触数据存储区或任何其他AppEngineAPI。我需要应用程序执行许多计算,最好是具

winapi - 从 unsafe.Pointer 获取特定 byte slice 的最佳(最安全 + 最高性能)方法是什么

我正在尝试转换thisc++去。简而言之,这就是C代码正在做的事情:staticconstchar*pSharedMem=NULL;intsessionInfoOffset;returnpSharedMem+pHeader->sessionInfoOffset;这是我的(伪)go代码:varpSharedMemunsafe.PointersessionInfoLenC.intbyteSlice:=C.GoBytes(pSharedMem,pHeader.sessionInfoLen)returnbyteSlice[pHeader.sessionInfoOffset:]我从来没有真正编写

go - 在启用安全和隐私的情况下开始对等时出错

当我尝试使用启动对等体时peernodestart出现以下错误hyperledger@linux-box:/opt/gopath/src/github.com/hyperledger/fabric$peernodestart20:42:02.999[crypto]main->INFO001Loglevelrecognized'info',settoINFO20:42:03.017[main]serve->INFO002Securityenabledstatus:true20:42:03.017[main]serve->INFO004Privacyenabledstatus:true20

go - Go中如何使用 channel 安全同步数据

下面是一个如何使用互斥锁来安全访问数据的例子。我如何使用CSP(communicationsequentialprocesses)而不是使用互斥锁和解锁来做同样的事情?typeStackstruct{top*Elementsizeintsync.Mutex}func(ss*Stack)Len()int{ss.Lock()size:=ss.sizess.Unlock()returnsize}func(ss*Stack)Push(valueinterface{}){ss.Lock()ss.top=&Element{value,ss.top}ss.size++ss.Unlock()}func

go - 从内部函数引用外部函数中的值安全吗?

我正从Node.js转向Go,我担心我将在Node中使用的结构在Go中是否安全,以及是否有更惯用的方法来完成同样的事情。我正在使用Echo框架并希望设置一个特定于路由的结构,该结构将在上下文对象中可用。我可以为中间件中的每个调用生成结构,但这样做很昂贵。相反,我在外部函数中设置一次结构,然后返回一个内部函数,该内部函数引用外部函数中的结构。我希望我只承担一次生成成本,然后每次调用都有与我的路由相关联的正确结构。e.POST(path,POST.GenericPostHandler,func(nextecho.HandlerFunc)echo.HandlerFunc{operation:

go - 使用 goavro 创建的 Avro 文件将数字数据加载到 BigQuery

我正在尝试弄清楚如何使用Avro文件将美元值加载到BigQuery中的数字列中。我正在使用golang和goavro打包生成avro文件。看来go中处理货币的适当数据类型是big.Rat。BigQuerydocumentation表示应该可以为此使用Avro。从几个我可以看出goavrotestcases将*big.Rat编码为fixed.decimal类型是可能的。我正在使用goavro.OCFWriter使用简单的avro模式对数据进行编码,如下所示:{"type":"record","name":"MyData","fields":[{"name":"ID","type":["s