你们都在用什么项目管理软件?
在任何一个项目开发或设计中,项目管理被认为最重要的过程之一,因此,选择一款适宜的项目管理工具尤为重要。项目管理是指管理项目计划、定义、监控、控制以及确认交付的过程,因此它的优势也是被公认的。随着各个领域特定项目管理需求的提升,企业就需要一个更好的项目管理工具来管理项目进程。因此一款高效的、良好的项目管理软件是企业必须具备的。在此,小编给大家推荐一款广受好评的项目管理软件[CORNERSTONE](https://www.cornerstone365.cn/),本文会结合项目管理最佳实践,总结项目...阅读全文
[Golang]两个对象的指针相同,一定是同一个对象吗?
开门见山 今天发现一个十分有趣的case,如下: package main import "fmt" func main() { n1 := make ([] int, 0,5) n2 := n1[:2] fmt.Println(n1) fmt.Println(n2) // 思考 n1和n2打印出的指针地址是否相同? fmt.Printf("address of n1:%p\n",n1) fmt.Printf("address of n2:%p\n",n2) } n1不是指针类型,是make的一...阅读全文
Go语言实战笔记(五)| Go 切片
《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。 内部实现 切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。因为机遇数组实现,所以它的底层的内存是连续非配的,效率非常高,还可以通过索引获得数据,可以迭代以及垃圾回收优化的好处。 切片对象非常小,是因为它是只有3个字段的数...阅读全文
【Go】深入剖析slice和array
array 和 slice 看似相似,却有着极大的不同,但他们之间还有着千次万缕的联系 slice 是引用类型、是 array 的引用,相当于动态数组,这些都是 slice 的特性,但是 slice 底层如何表现,内存中是如何分配的,特别是在程序中大量使用 slice 的情况下,怎样可以高效使用 slice?今天借助 Go 的 unsafe 包来探索 array 和 slice 的各种奥妙。 数组slice 是在 array 的基础上实现的,需要先详细了解一下数组。 ** 维基上如此介绍数组:*...阅读全文
实战分析一个运行起来会卡死的Go程序
序言最近一位非常热心的网友建议结合demo来分析一下goroutine的调度器,而且还提供了一个demo代码,于是便有了本文,在此对这位网友表示衷心的感谢!这位网友提供的demo程序可能有的gopher以前见过,已经知道了具体原因,但本文假定我们是第一次遇到这种问题,然后从零开始,通过一步一步的分析和定位,最终找到问题的根源及解决方案。虽然本文不需要太多的背景知识,但最好使用过gdb或delve调试工具,了解汇编语言及函数调用栈当然就更好了。本文我们需要重点了解下面这3个内容。调试工具无法准确显...阅读全文
Golang源码探索(三) GC的实现原理
Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短. 停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务程序. 这篇文章将通过分析golang的源代码来讲解go中的三色GC的实现原理. 这个系列分析的golang源代码是Google官方的实现的1.9.2版本, 不适用于其他版本和gccgo等其他实现, 运行环境是Ubuntu 16.04 LTS 64bit. 首先会讲解基础概念, 然后讲解分配器, 再讲解收集器的实现....阅读全文
Golang GC核心要点和度量方法
一. Go GC 要点先来回顾一下GC的几个重要的阶段: Mark Prepare - STW做标记阶段的准备工作,需要停止所有正在运行的goroutine(即STW),标记根对象,启用内存屏障,内存屏障有点像内存读写钩子,它用于在后续并发标记的过程中,维护三色标记的完备性(三色不变性),这个过程通常很快,大概在10-30微秒。 Marking - Concurrent标记阶段会将大概25%(gcBackgroundUtilization)的P用于标记对象,逐个扫描所有G的堆栈,执行三色标记,在...阅读全文
[总结]Spring事务管理中@Transactional的参数
@Transactional注解就代表支持事务管理,@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。如果这个注解在类上,那么表示该注解对于所有该类中的public方法都生效;如果注解出现在方法上,则代表该注解仅对该方法有效,会覆盖先前从类层次继承下来的注解。 @Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Tran...阅读全文
可能是最全面的G1学习笔记
引子最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题。总体来讲,对于G1我有几个疑惑,希望能够在这篇文章中得到解决。 G1出现的初衷是什么? G1适合在什么场景下使用? G1的trade-off是什么? G1的详细过程? 如何理解G1的gc日志? G1的调优思路? G1和CMS的对比和选择? 一、基础知识1. 初衷在G1提出之前,经典的垃圾收集器主要有三种类型:串行收集器、并行收集器和并发标记清除收集器,这三种收集器分别可以是满足...阅读全文
工作效率低?这个锅远程办公不背
疫情仍在继续,每个人为这个社会做贡献的方式,除了做好防控和不必要的恐慌外,我们更应该做好本职工作,以确保社会经济的正常运转,要做到“各司其职”。 从2月3号开始,越来越多企业选择了远程办公模式。但因为沟通不畅所带来的信息不对称、效率低下,内耗等问题,对管理者和员工都是不小的考验。 远程办公三大疑问:如何远程办公?如何高效远程办公?如何高效协同他人一起远程办公? 别急,这就为大家一个个来解答。 一、如何远程办公? 据阿里统计,2月3日,...阅读全文
分布式一致性之两阶段提交协议、三阶提交协议
前言最近在学习一些分布式系统中的基础知识,看到了前人总结的非常好的博客。在作者申明可以转载的情况下,将它们转载到自己的专栏。既为了建立一个完整的知识体系,也为了更好的理解原文。接下来的篇幅末尾,会将参考的篇幅列举出来,感兴趣的可以读一下参考的博客。笔者是在前人博客的基础上,加上自己的理解和适当的配图,使得文章更易理解。原文内容随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发...阅读全文
MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进
当期文章 POLARDB · 新品介绍 · 深入了解阿里云新一代产品 POLARDB HybridDB · 最佳实践 · 阿里云数据库PetaData MySQL · 捉虫动态 · show binary logs 灵异事件 MySQL · myrocks · myrocks之Bloom filter MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进 MySQL · 特性分析 · 利用gdb跟踪MDL加锁过程 MySQL · 源码分析 · Innodb 引擎Redo日志存储...阅读全文
MySQL innodb引擎的事务执行过程_数据库技术_Linux公社
通过这篇文章可以了解到下面几个问题 问题1:MySQL innodb引擎的update的流程; 问题2:以及写redo,undo,binlog的顺序,然后刷盘的顺序又是什么呢? 问题3:以及刷新redo和脏数据的相关进程; 总结以上的三个问题,其实就是关于MySQL innodb事务的流程;那么接下来,我将详细总结下一一一:MySQL innodb的事务流程: 1.接下来我就以update为例,讲解下MySQL5.6的innodb的事务流程,总结起来就是: 镇对update he set nam...阅读全文
解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。 1. 问题原因分析 为了安装最新版本的Node.js(最新版本的Node.js使用了C++ 11中,而C++ 11需要code>gcc 4.8+才能支持),将gcc升级到了...阅读全文
Go 生态圈的 K/V 数据库 benchmark
Go生态圈有好几个K/V数据库,我们经常用它来做我们的存储引擎,但是这些数据库引擎的性能如何呢?本文试图用性能而不是功能的数据考察这些数据库,我测试了几种场景: 并发写、并发读、单一写并发读、并发删除,得出了一些有趣的数据。 测试在两台机器上测试的,一台机械硬盘,一台固态硬盘,使用256字节作为value值的大小,9个字节作为key的大小,测试简单的读写删除操作,并没有测试批量读写操作。 每个测试case测试1分钟。 代码: kvbench K/V 数据库 Rocksdb: RocksDB是Fa...阅读全文
并发研究之CPU缓存一致性协议(MESI) - 枫飘雪落
CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。 时间局部性...阅读全文