CMS 问题定位与排查
起因最近排查一个历史老问题,历史问题就是大家都知道,但是没人愿意处理。线上节点 16 和 32 G 内存频繁的出现GC,并且由于 GC 还导至两个问题,1.CPU使用率在GC时变高,2.业务出现异常。这个问题变得无法忍耐了,跟踪程序线程使用,CMS GC 线程CPU 使用在初始化时都 11-99% 之间,严重影响业务处理。通过 jstat 观察,FullGC 不多,但是 YoungGC 非常频繁,YoungGC 多不影响服务性能吗?也影响。计算一个服务GC的好坏,不是看 FullGC 多少,而是看整体服务的吞吐量。
12345678910111213 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT68096.0 68096.0 16840.1 0.0 545344.0 115481.1 6658496.0 4835834.6 63280.0 60712.9 708 ...
bitcoin-06-bitcore钱包使用
比特币钱包不管是开发者,还是投资者,比特币钱包都是一个不错的学习工具,和常用的电子钱包相差不大。开发者可以很好的从这个工具是学习比特币在客户端的应用,非常值得借鉴,包括现在很多项目都有比特币的影子,有些甚致直接拿到比特币的代码改改就发行自己加密货币。
比特币官网: https://bitcoin.org/zh_CN/
直接跳到钱包选择页面: https://bitcoin.org/zh_CN/choose-your-wallet?step=5&platform=mac
我这里使用的时 BitCore 钱包,这个钱包比较成熟。https://bitcoin.org/zh_CN/wallets/desktop/mac/bitcoincore/?step=5&platform=mac
使用1.同步数据初次使用比特币钱包,会进行一次全量数据同步,大概在 500G 左右,所以硬盘要保证够大,同步完成后,会进行裁剪。大几2G左右大小。
2.创建钱包同步完成后,才能进行后续的操作。先创建钱包密码,这个密码会需要记住,不能忘记,否则会使用不了钱包。
3.导出私钥私钥非常重要,保证 ...
bitcoin-05-比特币区块同步机制
前言
一个区块生产出来之后,需要进行同步给其它的节点。由于区块链是去中心化的,所以所有节点都保留相同的全量数据。当一个区块打包好一个区块后,需要同步给其它节点,进行校验 和 上链。只有上链的成功的区块,才算是区块链上的一个块。换句话说,区块可能上链成功,也有可能上链不成功。
同步区块中的问题
为什么要同步区块
如何保证同步
网络延迟如何解决
同时收到相同高度的块,该同步谁的块
如何得知块已被确认
被丢块的节点会怎么样
区块打包区块广播区块验证区块上链区块回滚
bitcoin-04-coinbase交易
coinbase交易,也是被打包在区块中的第一笔交易,只是这笔是区块的第一笔交易,是挖矿产生的奖励。
查看 coinbase交易1https://api.blockcypher.com/v1/btc/main/txs/1a44cb6551af919652eac49d953c50ab2acb1ebdfe7d2b20ed3c1944bd37ac96
coinbase 结构可以很明显的看到,除了公共字段外,有 outputs、inputs 两个字段。
outputs: 交易输出
inputs: 交易输入
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566{ block_hash: "00000000000000000000bca6ccc2ef309fd814f80a55b3e08a4212326137d7d2", block_height: 681181, ...
bitcoin-03-比特币区块结构
区块结构
区块链开发之前,先了解比特币的区块结构,有利于了解后续比特币的各种数据结构的做用。
本文要介结几个重要概念:
区块结构
区块头
区块体
区块查看工具
区块区块是比特币的核心。当前比特币网络,每10分产一个块。区块的作用: 比特币最核心的数据结构,包含了交易的重要标识,包括:区块头、区块体、区块大小等数据。
一个完整的区块结构
数据项
字节
字段
说明
Magic NO
4
魔数
常数0xD9B4BEF9
Blocksize
4
区块大小
用字节表示的该字段之后的区块大小
Blockheader
80
区块头
组成区块头的几个字段
Transaction counter
1-9
交易计数器
该区块包含的交易数量,包含coinbase交易
Transactions
不定
交易
记录在区块里的交易信息,使用原生的交易信息格式,并且交易在数据流中的位置必须与Merkle树的叶子节点顺序一致
这里最典型的要数 区块头和 区块体 了,因为它们通常在学习区块链的时候,比较能说明区块链的重要特性。
另外区块链不看不见摸不着的东西,人往往需要可视化的模型会 ...
bitcoin-02-比特币技术体系
学习区块链技术,首先应该了解最经典的 比特币。比特币做为最早的分布式去中心化的区块链应用,其经典设计值得学习。
比特币架构比特币通过将各项技术进行结合,创造出来的这个产品,其本质的功能是记账,副做用是炒。比特币的设计是为了保证所有数据是分布式的、去中心化的保存数据,防止数据在中心的节点中保存。
自上而下,共分6层
应用层
RPC 层
网络层
共识层
数据层
存储层
1.应用层包括比特币钱包、客户端等种上层的应用,一般是比特币程序本身的外部应用。以比特币钱包为例,比特币钱包有很多种,可以上官网上下载不同钱包,比如最简单的钱包,早期这个钱包还保留有CPU挖矿功能。现在版本已不支持,可以参考官方 Github 文档:
https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md
2.RPC 层RPC 层的作用是进行RPC 通信。测试可以使用 BitCore 这个工具来进行测试。
测试一个 RPC 命令,查看区块信息: getblockchaininfo命令行
1234 ...
bitcoin-01-区块链初识
区块链技术,发展到目前,主流的区块链有两个代表,一个是以 比特币(BTC) 为代表的分布式去中心化记账本,一个是以 以态坊(ETH) 为代表的图灵完备的分布式去中心化计算机。名词解释会放到下面。
为什么写这个文章投身加密货币研究有一段时间了,其间了解到了比特币的原理和应用,想把了解到的知识整理成一个简单直白的系列科普文章,希望可以帮助大家轻松简单学习并使用加密货币。本篇作为开篇,仅提一些简单概念,以免概念太多,让人望而却步。
加密货币加密货币当下有两种主流的技术模型:
比特币
以太坊
这两种加密货币有本质的区别,之所以很少听说以太坊,是因为以太坊出现的在比特币之后,出现在人们的视野里比较晚,但是其设计理念相较比特币较超前,当前和比特币并驾齐驱。现在主流的一些币都是基于以太坊的基础上进行设计,还可以基于以太坊发行自己的货币,在这里不用深究,后续会深入讲解。
比特币(Bitcoin)
本质是分布式记账本
比特币的宗旨是做为一个去中心化的分布试记账本,仅为了记账而存在。比特币的由来就不赘述,可自行了解。BTC是一种点对点(Peer-2-Peer)传输的数字加密货币。宗旨在于使用点网 ...
hexo-解决图片不显示问题
问题原因由 hexo-asset-image 图片模块和 hexo-abbrlink 不兼容导致的。
hexo由于浏览器中,中文路径复制到文本中会被转成 unicode 编码,感观上特别不舒服,虽然粘回url后可以decode回来。
https://liukay.com/2020/11/12/linux-%E5%B8%B8%E7%94%A8%E6%96%87%E4%BB%B6%E5%92%8C%E6%96%87%E6%9C%AC%E6%93%8D%E4%BD%9C/
决定把路径改成Hash编码,使用abbrlink 这个插件后发现问题,图片显示不正常,查看一下图片路径发现,多了一个.html
解决方法
修改图片输出插件
插件路径:
hexo_home/node_modules/hexo-asset-image/index.js
12//24行 -1 改为 -5var endPos = link.length-5;
为什么要 -5,因为.html 刚好5个字符,-5 就是 link 减少5个字符刚好。
oh-my-zsh插件 zsh-autosuggestion自动补全 和 zsh-syntax-highlighting语法高亮
安装 on-my-zsh 插件插件在 .zshrc 的 plugins 中进行添加。
这些插件可以让oh-my-zsh更好用,推荐安装,不安装对使用vim也没什么影响。分两步
$ZSH_CUSTOM 安装完 zsh 后,默认已经存在。
安装 zsh-autosuggestions这是一个超级好用的插件,直接显示命令的操作记录,可以快速使用重复命令。
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
看效果
安装 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
这个插件会在终端以颜色的方式提示命令是否正确。
正确命令
不正确的命令
添加配置zsh-au ...
vim-IDE进化04 NERD-tree 文件目录管理树插件
演示这个插件的作用很大,可以方便的管理和打开文件、进入目录一个刚需插件。看效果图,左侧的目录就是插件显示的效果。
安装如果还不了解安装插件的话朋友,请移步vim-IDE 03 插件管理器plug插件,这里我们进行 vim IDE 化的第一个插件。
添加插件
vim ~/.config/nvim/init.vim
1234" NERDTree文件树Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }" NERDTree 中显示git信息Plug 'Xuyuanp/nerdtree-git-plugin'
添加保存后执行以下命令安装。
:PlugInstall
配置刚安装后,还需要进行一些配置,可以添加一些个性化的配置,用起来才会顺手。添加 NERDTree 配置
vim ~/.config/nvim/init.vim
12345678910111213141516171819202122232425 ...