Go如何精确计算小数-Decimal研究

##1 浮点数为什么不精确先看两个case // case1: 135.90*100 ====// float32var f1 float32 = 135.90fmt.Println(f1 * 100) // output:13589.999// float64var f2 float64 = 135.90fmt.Println(f2 * 100) // output:13590 浮点数在单精度下, 135.9*100即出现了偏差, 双精度下结果正确. // case2: 0.1 add 10 ...阅读全文

Tidb MyDecimal问题 | hello 2017-08-27 00:00 Tidb MyDecimal问 等

Hugepage导致进程占用物理内存过多的问题

Hugepage导致进程占用物理内存过多的问题 首页 分类 标签 留言 关于 订阅 2015-04-30 | 分类 Linux  | 标签 memory  1 问题 业务同样的程序跑在TDocker、XEN,占用的内存却相差很大。 TDocker: XEN: 可以看到,虽然VIRT一样,但是程序占用的物理内存却相差6倍。 2 原因分析 经过各种分析,后来levy同学发现关闭transparent hugepage就解决了这个问题。TDocker使用的CentOS6.5的内核,默认开启了trans...阅读全文

hustcat.github.io 2015-04-30 00:00 hustcat.github. 等

Go之unsafe.Pointer && uintptr类型 - xxggy的个人页面

挑战A.I.,赢百万奖金......了解更多详情>>> Go之unsafe.Pointer && uintptr类型 unsafe.Pointer 这个类型比较重要,它是实现定位欲读写的内存的基础。官方文档对该类型有四个重要描述: (1)任何类型的指针都可以被转化为Pointer (2)Pointer可以被转化为任何类型的指针 (3)uintptr可以被转化为Pointer (4)Pointer可以被转化为uintptr 大多数指针类型会写成T,表示是“一个指向T类型变量的指针”。unsafe....阅读全文

OSCHINA 2016-08-08 17:20 OSCHINA

从科学记数法到浮点数标准IEEE 754 - 微信公众号:二进制之路

很遗憾,由于这篇文章有大量的公式,如果直接发表内容公式会显示不了,因此只能发成图片。 如果想获得更好的阅读体验,请点击:从科学记数法到浮点数标准IEEE 754 参考 https://zh.wikipedia.org/wiki/IEEE_754 https://zh.wikipedia.org/zh-hans/%E6%B5%AE%E7%82%B9%E6%95%B0 https://zh.wikipedia.org/wiki/%E7%A7%91%E5%AD%A6%E8%AE%B0%E6%95%B0...阅读全文

ITeye博客 2018-10-29 22:17 ITeye博客

JVM GC 日志详解

本文采用的JDK版本: java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) 复制代码一、GC 日志参数 设置JVM GC格式日志的主要参数包括如下8个: -XX:+PrintGC 输出简要GC日志 -XX:+PrintGCDetails 输出详细GC日志 -Xlo...阅读全文

掘金 2019-03-07 00:00 掘金

内存屏障

内存屏障(Memory barrier) 为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同。 用volatile关键字修饰变量可以解决上述问题,那么volatile是如何做到这一点的呢?那就是内存屏障,内存屏障是硬件层的概念,不同的硬件平台实现内存屏障的手段并不是一样,java通过屏蔽这些差异,统一由jvm来生成内...阅读全文

简书 2017-03-03 09:06 简书

理解 Linux 的虚拟内存

前言 前不久组内又有一次我比较期待的分享:”Linux 的虚拟内存”。是某天晚上加班时,我们讨论虚拟内存的概念时,leader 发现几位同事对虚拟内存认识不清后,特意给这位同学挑选的主题(笑)。 我之前了解一些操作系统的概念,主要是毕业后对自己大学四年的荒废比较懊恼,觉得自己有些对不起计算机专业出身,于是在工作之余抽出时间看了哈工大在网易云课堂的操作系统公开课,自己也读了一本讲操作系统比较浅的书 《Linux内核设计与实现》,而且去年自己用 C 写简单的服务器时,也追根究底了解了更多的系统底层知...阅读全文

枕边书 2019-06-20 16:48 枕边书

Golang - 调度剖析【第二部分】 - Golang 攻略

回顾本系列的第一部分,重点讲述了操作系统调度器的各个方面,这些知识对于理解和分析 Go 调度器的语义是非常重要的。在本文中,我将从语义层面解析 Go 调度器是如何工作的,并重点介绍其高级特性。Go 调度器是一个非常复杂的系统,我们不会过分关注一些细节,而是侧重于剖析它的设计模型和工作方式。我们通过学习它的优点以便够做出更好的工程决策。 开始 当 Go 程序启动时,它会为主机上标识的每个虚拟核心提供一个逻辑处理器(P)。如果处理器每个物理核心可以提供多个硬件线程(超线程),那么每个硬件线程都将作为...阅读全文

SegmentFault 思否 2018-10-08 00:00 SegmentFault 思否 等

也谈goroutine调度器

Go语言在2016年再次拿下TIBOE年度编程语言称号,这充分证明了Go语言这几年在全世界范围内的受欢迎程度。如果要对世界范围内的gopher发起一次“你究竟喜欢Go的哪一点”的调查,我相信很多Gopher会提到:goroutine。 Goroutine是Go语言原生支持并发的具体实现,你的Go代码都无一例外地跑在goroutine中。你可以启动许多甚至成千上万的goroutine,Go的runtime负责对goroutine进行管理。所谓的管理就是“调度”,粗糙地说调度就是决定何时哪个goro...阅读全文

Tony Bai 2017-06-26 00:00 Tony Bai

Linux 时钟与计时器 - iFantasticMe

对 Linux 系统来说,时钟和计时器是两个十分重要的概念。时钟反应的是绝对时间,也可认为是实时时间。计时器反应的则是相对时间,即相对于系统启动后的计时。操作系统内核需要管理运行时间(uptime)和墙上时间(wall time),而内核中大量事务需要由时间驱动。 系统时钟 系统内核需要借助硬件设施来管理时间,实时时钟(RTC)是用来持久存放系统时间的设备,它由主机电池供电,因此即使关闭系统,实时时钟仍然在持续工作。 当系统启动时,系统内核从实时时钟(RTC)读取实时时间,并将该时间转换为自 1...阅读全文

博客园 2015-06-10 22:54 博客园

使用Prometheus监控服务器性能

最近一直在思考如何对线上服务做深度监控。基础的服务可用性监控很简单,定期Ping即可。但是怎样才能监控服务器的一些更加关键的数据呢?比如,每一个API Point的请求次数(QPS),最大响应时间,平均响应时间等。最终我希望实现的效果是有一个Dashboard,我可以清楚地看到各种参数曲线,对服务器的运行情况了然于胸。 绘制Dashboard不难,目前提供数据可视化的工具很多,随便选一个都能满足需要。关键问题是,怎样将整个流程打通? 服务器该以怎样的形式暴露出数据? 数据怎样被收集和存储起来? ...阅读全文

CJ Ting's Blog 2017-03-12 00:00 CJ Ting's Blog

Golang网络:核心API实现剖析(一) - Go语言中文网

这一章节我们将详细描述网络关键API的实现,主要包括Listen、Accept、Read、Write等。 另外,为了突出关键流程,我们选择忽略所有的错误。这样可以使得代码看起来更为简单。 而且我们只关注tcp协议实现,udp和unix socket不是我们关心的。Listenfunc Listen(net, laddr string) (Listener, error) { la, err := resolveAddr("listen", net, laddr, noDeadline) .......阅读全文

Golang中文社区 7319-01-04 00:00 Golang中文社区

linux网络编程backlog和somaxconn | 戒修

前言 学习过的知识只要用的机会不多,多半过段时间就会忘记.如果能反复学习或者记笔记则会记得更牢固一点.以后也可以直接查看复习. 以下内容基于Linux 2.6.18内核 listen方法传入的backlog参数#include <sys/socket.h> int listen(int sockfd, int backlog); 在上面的代码中我们看到listen函数的第二个参数为backlog. 这个参数的意义在不同的Linux内核版本或操作系统定义是不同的. tcp状态转化图 建立Tcp连接...阅读全文

沉迷技术的小沙弥 2016-10-24 00:00 沉迷技术的小沙弥

通过/proc/sys/net/ipv4/优化Linux下网络性能

通过/proc/sys/net/ipv4/优化Linux下网络性能 范堡 发布于 2011/11/03 17:58 阅读 5K+ 收藏 7 评论 1 RHEL 开发四年只会写业务代码,分布式高并发都不会还做程序员?->>>    通过/proc/sys/net/ipv4/优化Linux下网络性能 /proc/sys/net/ipv4/优化 1)      /proc/sys/net/ipv4/ip_forward 该文件表示是否打开IP转发。 0,禁止 1,转发   缺省设置:0 2)     ...阅读全文

OSCHINA 2011-11-05 10:17 OSCHINA

proc/sys/net/ipv4/下各项的意义-技术港湾

/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”。这个文件控制发送ICMP Time Exceeded消息的比率。 /proc/sys/net/ipv4/igmp_max_memberships主机上最多有多少个igmp (多播)套接字进行监听。 /proc/sys/net/ipv4/inet_peer_gc_maxtime求 助: Add a little explanation ab...阅读全文

51CTO博客 2010-05-02 19:36 51CTO博客

golang 内存分析/动态追踪 — 源代码

golang pprof 当你的golang程序在运行过程中消耗了超出你理解的内存时,你就需要搞明白,到底是 程序中哪些代码导致了这些内存消耗。此时golang编译好的程序对你来说是个黑盒,该 如何搞清其中的内存使用呢?幸好golang已经内置了一些机制来帮助我们进行分析和追 踪。 此时,通常我们可以采用golang的pprof来帮助我们分析golang进程的内存使用。 pprof 实例 通常我们采用http api来将pprof信息暴露出来以供分析,我们可以采用net/http/pprof 这...阅读全文

lrita.github.io 2017-05-26 00:00 lrita.github.io

再探go modules:使用与细节 - apocelipes

还有半个月go1.12就要发布了。这是首个将go modules纳入正式支持的稳定版本。 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go modules也发生了一些变化,借此机会我想再次深入探讨go modules的使用,同时对这个新生包管理方案做一些思考。 本文索引 版本控制和语义化版本 控制包版本 语义化版本 何谓语义化 为何使用语义化版本 语义化版本带来的影响 一点思考 replace的限制 本地包替换 顶层依赖与间接依赖 限制 发布go ...阅读全文

博客园 2019-01-20 15:37 博客园

golang包管理解决之道——go modules初探 - apocelipes

golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案。 不过现在go modules随着golang1.11的发布而和我们见面了,这是官方提倡的新的包管理,乃至项目管理机制,可以不再需要GOPATH的存在。   go module的初始化 现在modules机制仍在早期阶段,所以golang提供了一个环境变量“GO111MODULE”,默认值为auto,如果当前目录里有go.mod文件,就使用go modules...阅读全文

博客园 2018-08-25 18:01 博客园