- 博客(69)
- 收藏
- 关注
原创 HashMap 1.8 最详细的源码图文解析(附常见问题)
/ 前言 /HashMap是Java开发中最常用的集合之一 , 其独特数据结构使其适用于大部分场景 , 比ArrayList及HashSet有着更广泛的应用空间 , 但是也因为其独特的数据结构使其源码异常复杂 , 尤其是JDK1.8版本后的HashMap,使用了更加复杂的数据结构 , 本文主要讲解的是JDK1.8的HashMap, 本文会涉及到的内容如下所示/ 1 / 数据...
2020-05-03 16:58:28 6983 4
原创 HashMap 1.7 源码图文解析
/ 前言 / HashMap是Java开发中最常用的集合之一 , 其独特数据结构使其适用于大部分场景 , 比ArrayList及HashSet有着更广泛的应用空间 , 但是也因为其独特的数据结构使其源码异常复杂 , 尤其是JDK1.8版本后的HashMap,使用了更加复杂的数据结构 , 本文主要讲解的是JDK1.7的HashMap(不是我不想把1.8的整理出来 , 实在是太费时...
2020-04-15 19:00:03 2773 2
原创 Redis及缓存雪崩、缓存穿透等详解
版权声明 :本文为博主原创文章,如需转载,请注明出处(https://blog.csdn.net/F1004145107/article/details/88118813)本文大纲一、简介二、Redis持久化方案三、Redis的缓存雪崩,缓存穿透,缓存预热,缓存更新,缓存降级等问题及解决方案一 、简介1.Redis的特点 Redis是一种非关系数据库(不会像M...
2019-03-04 15:18:04 1257
原创 Java多线程系列 - Volatile
版权声明 :本文为博主原创文章,如需转载,请注明出处(https://blog.csdn.net/F1004145107/article/details/87952142)1. 内存模型相关概念 缓存一致性问题 : 多线程序运行时,所有的临时数据都是存放在内存中的,CPU在运行时会从内存中读取数据,然后将数据记载到CPU内部的一个缓存空间中,在运行过程中所有的数据操作都是在CPU...
2019-02-26 22:07:15 670
原创 分布式事务 - XA/TCC/最终一致性解决方案/Seata (原FESCAR)
版权声明 :本文为博主原创文章,如需转载,请注明出处(https://blog.csdn.net/F1004145107/article/details/86648263)一、 什么是分布式事务 在进入微服务系统之后,给我们带来了很多的方便,同时也有很多的痛点,这里我们不讨论微服务系统在后期逐渐变得'臃肿'的问题,本文主要讨论分布式事务 在以前的系统中,我们将订单、账户...
2019-01-25 16:39:38 3667 3
原创 使用MarkDown来写一份漂亮简约的简历
/ 前言 /简历是我们求职过程中很重要的一环, 一份漂亮简约的简历可以帮助你获得更多的面试机会, 我们一般使用的都是Word来完成简历的编写, 但是我发现无论我使用什么模板来编辑简历最终呈现的效果总是不尽如人意, 所以我决定使用MarkDown来编写简历, 事实证明, 只要你选对了排版方式, 那么你的简历会变的非常漂亮简约/ 1 / Typora我使用的MarkDown编辑器是Typora, 它支持一些emjio图标来帮助我们更好的完成简历Typora中的emoji图标标签Typora还支持将Ma
2021-01-26 13:52:28 1098
转载 Typora中的emoji图标标签
People????:smile: ????:laughing: ????:blush: ????:smiley: ☺️:relaxed: ????:smirk: ????:heart_eyes: ????:kissing_heart: ????:kissing_closed_eyes: ????:flushed: ????:relieved: ????:satisfied: ????:grin: ????:wink: ?
2020-06-28 15:13:28 12973 1
原创 解决Helm Chart异常Error: a release named tomcat already exists
异常信息Error: a release named tomcat already exists.异常原因使用helm delete xxx命令删除时并没有完全删除干净解决方案使用helm ls --all查看全部APP[root@localhost]# helm ls --allNAME REVISION UPDATED STATUS CHART
2020-06-24 10:36:25 1550
原创 解决go run: cannot run non-main package异常
异常信息go run: cannot run non-main package异常原因在Go语言中, 只有package为main时才能执行main方法package mainimport "fmt"func main() { fmt.Println("main")}如果是要做测试的话建议使用专业的测试类来测试package testimport ( "testing")func TestMethod(t *testing.T) { }注意 : 测试类的末尾必
2020-06-24 10:22:09 5425
原创 解决Go无法下载依赖问题 i/o timeout
异常信息unrecognized import path "golang.org/x/sys/unix": https fetch: Get "https://golang.org/x/sys/unix?go .... i/o timeout)这个异常的原因是因为某些特殊原因, 我们无法下载墙外的依赖, 所以我们需要去代理服务器进行下载解决方案1. 设置GOPROXY环境变量修改/etc/profile文件export GOPROXY=https://goproxy.io/zh/ 配置完G
2020-06-24 09:57:07 4640
原创 Golang库 - viper读取配置文件
/ 前言 /viper是由Steve Francia编写的开源配置解决方案, 也是cobra的作者, 我们来看下viper的功能支持JSON、TOML、YAML/YML、PROPERTIES、ENVFILE等文件的读取修改读取文件的键值数据监听配置文件的修改并自动重新加载下载go get github.com/spf13/viperGitHub地址/ 1 / 读取配置文件在读取配置文件中我们将会演示viper的集中使用方式我们以.yml文件为例config.ymluser:
2020-06-18 18:07:31 3630
原创 解决RuntimeError: maximum recursion depth exceeded递归异常
/ 前言 / 不久前写了一个脚本检测Linux某一个服务是否是启动状态, 因为服务启动时间较长就加了一个递归操作, 结果报错RuntimeError: maximum recursion depth exceeded, 我们来看下如何解决/ 1 / 问题分析 问题出现后我去网上查找发现报错原因是递归次数超过了Python3.x的默认递归深度, 那么我
2020-06-18 16:00:16 3262
原创 超详细的Shell命令大全
/ 前言 / 持续更新中 . . ./ 1 / 基础语法1 . 1 拷贝# 将a.txt中的内容拷贝到b.txt中cp a.txt b.txt# 将file文件复制到/path路径下cp file /path/file# 将path路径下所有文件拷贝到newPath下cp -a path newPath# 覆盖既有文件之前先询问用户cp -i a.txt /path/a.txt# 覆盖已存在的文件目标前
2020-06-10 22:22:17 13118 1
原创 解决SSH出现Host key verification failed error
报错原因 如果我们对某一台服务器配置了root免密登录, 然后将服务打包成了镜像安装到了另一台服务器上, 再次使用ssh连接root账号就会出现Host key verification failed.异常报错信息@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANG
2020-06-10 15:07:20 822 1
原创 Shell脚本自动修改MySQL主从配置
/ 前言 / 本文主要帮助你实现如何在MySQL服务迁移时通过脚本来自动完成MySQL主从的重新配置/ 1 / 脚本使用方式运行该脚本时需要当前主机安装有MySQL并且需要输入三次密码第一次是连接MySQL-Master服务进行Slave服务更新操作第二次是连接MySQL-Master服务读取最新的Master日志信息第三次是连接MySQL-Slave服务更新Master信息如果你不想频繁的输入密码可以看一下我之前的博文
2020-06-10 14:43:53 646
原创 Shell脚本测试服务是否能够ping通
/ 1 / ping指令详解-d :使用Socket的SO_DEBUG功能;-c<完成次数>:设置完成要求回应的次数;-f:极限检测;-i<间隔秒数>:指定收发信息的间隔时间;-I<网络界面>:使用指定的网络界面送出数据包;-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;-n :只输出数值;-p<范本样式>:设置填满数据包的范本样式;-q :不显示指令执行过程,开头和结尾
2020-06-10 14:30:08 1086
原创 Shell脚本中最常用的特殊变量(附样例)
$?获取最近一个命令的结果, 0代表着成功 ,其余代表着失败$?测试Shell脚本test.sh#!/bin/bashurl=www.csdn.netping -c 1 -W 5 $urlnum=$?if [[ $num -eq 0 ]];then echo "${url}可以ping通"else echo "${url}无法ping通"fi运行结果localhost :wise$ sh test.shPING www.csdn.net (47.95.164.112):
2020-06-10 11:28:06 590
原创 使用Explain完成SQL性能优化 从小白 → 大白
/ 前言 / 对于服务端开发人员来说性能非常重要, 接口的响应时间也是关系到用户体验的大事, 所以SQL的执行时长就至关重要了, 我们通过SQL语句结构优化和添加索引的方式来压缩SQL的执行时长, 但是优化一条SQL我们首先需要知道这条SQL的问题在哪, 你需要一个好的工具Explain/ 1 / 索引信息我们来看下索引所在的表结构CREATE TABLE "user" ( "id" int(11) NOT NULL AUTO
2020-06-08 15:03:49 638
原创 MySQL命令大全 - 从小白 → 大白之路
数据库连接# 连接到本地MySQLmysql -uroot -ppassword# 连接到远程MySQL服务mysql -hip -uroot -ppassword数据库密码查询MySQL默认密码(5.7⤴️)sudo grep 'temporary password' /var/log/mysqld.log修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';修改密码策略# 修改策略为最低级别se..
2020-06-07 13:31:22 480
原创 Dump文件分析工具 - MAT图文解析
/ 前言 /在讲解Mat工具之前我们先来看下几个关于Dump/文件的问题Dump文件是什么Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中我们拿到Dump文件有什么用的?假如JVM因为内存溢出的原因宕机了, 而程序的日志里面并没有关于溢出所在对象的信息, 此时我们就需要通过分析Dump文件来找到问题原因Dump文件怎么生成?第一种在启动JVM时指定参数 # 指定生成Dump文件的异常类型 -XX:+HeapDumpOnOutOf
2020-05-27 16:00:00 9890
原创 Shell脚本实现Linux创建分区并挂载
/ 脚本 /如果要创建多个分区可以将分区代号作为脚本输入#!/bin/bashfunction special_echo(){ if [ $# -ge 2 ];then PARAM_NUM=$1 PARAM_MSG=$2 else special_echo 1 "参数异常" fi case $PARAM_NUM in 1) echo -e "\033[31m ${PARAM_MSG}\033[0m" ;;
2020-05-26 21:23:08 1887
原创 Linux新增分区并完成挂载(附自动创建分区Shell脚本)
/ 1 / 确定系统磁盘信息fdisk -l[root]# fdisk -l磁盘 /dev/vda:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x00007489 设备 Boot Start End B
2020-05-26 17:02:15 1914
原创 ElasticSearch开机自动启动
在/etc/systemd/system/下新建文件elasticsearch.servicetouch elasticsearch.service编辑elasticsearch.service文件vi elasticsearch.service[Unit]Description=ElasticSearchAutoStartService[Service]Type=forkingUser=esExecStart=/opt/elasticsearch/bin/elasticsearch[
2020-05-22 15:54:01 1784
原创 Shell脚本自动化搭建ElasticSearch集群
/ 前言 / 该脚本适用于7台主机以下的集群, 如果是大集群需要为节点进行个性化配置可以加一些if判断来根据ip修改节点的属性 如需了解ElasticSearch集群搭建流程请看我的另一篇博文ElasticSearch集群搭建图文解析 如需了解ElasticS
2020-05-22 15:42:55 1812
原创 ElasticSearch集群搭建图文解析
/ 前言 / ElasticSearch作为一个分布式搜索引擎有着广泛的应用场景, 而搜索服务在在一个项目中的权重还是比较高的, 所以我们要想办法去提高搜索服务的可用性, 这就是ElasticSearch集群的作用, 为搜索服务提供高可用的特性 何为高可用呢, 其实就是字面意思, 假设我们的搜索服务可以一直不停的提供服务, 那么高可用性就是100%,
2020-05-22 15:19:57 1635
原创 ElasticSearch常见启动异常及解决方案
/ 前言 / 记录一下我在启动ElasticSearch时遇见的一些异常及解决方案/ 异常 /不能使用root账户启动org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Elastics
2020-05-22 15:12:56 3439 1
原创 Shell脚本配置Centos7开机自启动
/ 前言 / 在部署过程中, 很多应用都被要求配置开机启动的的服务, 例如MySQL、ElasticSearch等, 每次去写一个启动服务无疑是一键麻烦的事情, 今天我们来看下如何通过Shell脚本来一键生成自启动服务/ 1 / 脚本#!/bin/bashservice_file=/etc/systemd/system/init.servicechmod +x $sh_filetouch $service_fileecho '#!
2020-05-20 17:10:20 1875
原创 Shell脚本输出带有颜色特效的字体
echo命令我们都知道echo命令是系统中用来输出文本的一个命令, 我们来看下echo命令的参数-e : 激活转义字符使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r 光标移至行首,但不换行;\t 插入tab;\v 与\f相同;\ 插入\字符;\nnn 插入nnn(八进制)所代表的ASCII字符;文本
2020-05-18 17:15:02 1734
原创 Shell脚本创建用户
注意 :该脚本在创建前会先进行删除操作, 在输入要创建用户的账户名时请注意不要输入已有的账户该脚本适用于同时对多个主机创建用户, 如果想要修改为单一只需简单修改删除IP_LIST及for循环将${HOST_IP[i]}修改为指定ip# !/bin/bashIP_LIST=(192.168.232.136192.168.232.137192.168.232.138)# 创建es启动用户function add_user(){echo "请注意,在创建用户时会先对该用户
2020-05-18 16:34:16 1956
原创 Shell脚本配置账户免密登录
/ 前言 / 通过密钥的方式来使服务器之间免密登录无疑是很重要的, 设想一下你要在N台服务器上面搭建MySQL主从又或者是ES集群, 此时你需要先在其中一台机器上面搭建之后将文件拷贝打其它服务器上面, 而最简单的方式就是直接通过脚本来一次性拷贝完成, 如果每拷贝一台机器你都需要输入一次服务器密码那绝对不叫自动化, 最多就是帮你省去了curl + c和curl + v罢了/ 1 / SSH1 . 1 生成密钥想要实现免密登录我们就
2020-05-18 16:27:40 3508
原创 虚拟机镜像
网易开源镜像站阿里云开源镜像包含有Centos、Ununtu、Fedora…等镜像的下载连接Centos全版本镜像下载https://mirrors.aliyun.com/centos-vault/Centos6.7https://mirrors.aliyun.com/centos-vault/6.7/isos/x86_64/Centos7.6https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/镜像版本介绍# 标准
2020-05-18 13:39:50 1052
原创 Shell脚本实现MySQL主从自动化配置
/ 前言 / 该Shell脚本适用于一主一从, 但是如果你需要布置为一主多从或者多主多从只需要简单修改即可, 修改方式在脚本备注中 当前脚本暂无自动安装MySQL的流程, 我会尽快完善, 也可以看我之前的博文安装MySQLCentos7安装MySQL5.7图文解析 (附MySQL安装包官网地址及MySQL5.7安装手册) 如需了解MySQL主从搭建
2020-05-17 22:24:57 2003
原创 MySQL主从搭建图文解析及原理
/ 前言 / 随着用户的增长, 性能和稳定变得越来越重要, 为了不让其成为系统的约束, 于是大家开始追求高可用, 而MySQL的主从就是为了解决单一MySQL服务不稳定而诞生, 也可作为MySQL读写分离的基石, 主从的配置使我们不再需要担心夜里数据库突然宕机~.~ 本文主要内容有MySQL主从配置图文讲解MySQL主从配置原理MySQL主从配置自动化shel
2020-05-17 22:14:25 1225
原创 Centos7安装MySQL5.7图文解析 (附MySQL安装包官网地址及MySQL5.7安装手册)
/ 前言 /目前MySQL最高版本为8.0, 但是使用较少, 本文主要分享MySQL5.7的安装流程, 并附有MySQL官网下载地址/ 安装前准备 /1 . 检查是否已安装MySQLrpm -qa |grep -i mysql如果有显示如下所示信息请先卸载MySQL[root@localhost ~]# rpm -qa |grep -i mysqlmysql-community-libs-5.7.30-1.el7.x86_64mysql-community-libs-compat-5.7.
2020-05-17 21:27:38 1575
原创 ZStack - 全流程代码
# -*- coding: UTF-8 -*-import requestsimport jsonimport hashlibuser_name = 'admin'user_password = 'password'host = 'http://localhost:8080/'# 登录def login(): sha512 = hashlib.sha512() sha512.update(user_password) password = sha512.hexd
2020-05-12 22:22:17 1407
原创 ZStack - 创建云主机
/ 前言 / 在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3" } 创建云主机之前我们需要先创建云主机计算规格、镜
2020-05-12 22:16:58 2274
原创 ZStack - 创建镜像
/ 前言 / 在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3" } 想要创建镜像我们先需要创建镜像服务器用来存储镜
2020-05-12 22:02:51 2121
原创 ZStack - 创建2层3层网络
/ 前言 / 在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3" }/ API /创建二层网络API名称创建普通二层网络(CreateL2NoVlanNetwork)请求方
2020-05-12 21:46:56 2105
原创 ZStack - 创建云主机计算规格
/ 前言 / 在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3" }/ API /API名称创建云主机规格(CreateInstanceOffering)请求方式POST
2020-05-11 21:43:27 1082
原创 ZStack - 创建主存储
/ 前言 / 在ZStack的API中, 大多数的API返回的是一个任务结果查询地址, 此时我们就需要根据这个地址轮训去查询任务状态及结果{ "location": "http://localhost:8080/v1/api-jobs/967a26b7431c49c0b1d50d709ef1aef3" }/ API /API名称添加本地存储为主存储(AddLocalPrimaryStorage)请求方式PO
2020-05-11 21:39:47 1345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人