自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 Redis后传-优化神技

好久没分享博文了,换了个公司确实比较忙,但是接下来还是会持续输出自己的一些内容,希望各位多多支持,这样我才更加有动力继续下去~最近一直在做优化的东西,也查了很多相关方面的资料,那今天就跟大家分享一些关于redis的优化神技,当你工作中遇到如下问题,那就使出今天学到的绝招,一招定乾坤!

2022-10-07 23:32:56 312 1

原创 因mac升级后系统默认python2.7被移除重新安装的方式

MacBook新系统版本安装python2.7的方式

2022-07-24 15:10:06 4843 1

原创 Centos 定时重启 tomcat 服务的方法

场景某一天客户突然跟我说单机服务请求失败,我一看情况,是 tomcat 挂了,但是日志却没有任何报错信息,用 top 命令查看也没发现啥问题,直接重启之后并没有啥问题,于是我就猜想会不会是运行太长时间,有一些程序内部出了异常,但是没有抛出来,短时间定位不到问题,于是我就想着,先把 tomcat 做个定时重启,确保每天服务都正常运行。正文重启tomcat的shell脚本#!/bin/bash. /etc/profiletomcatPath="这里放tomcat的路径"binPath="$tom

2021-08-07 15:40:56 1105

原创 JavaScript 获取某个月份周几的天数

前言近期在写一些项目,前后端都有涉及,刚好有这么个场景,需要获取某个月的星期几总共有几天,查了 js 的 Date 接口,稍微实现了一下,如果有哪里写得不对的,恳请各位指正~正文// 获取月份周几有多少天 这里参数以‘4’,‘D135’为例function getMonthWeekDayNum(month, schedule) { let array = schedule.substring(1).split(''); let d = new Date(); //

2021-05-18 23:21:13 373 3

原创 【合】Redis 实战篇——高并发下的 Redis

高并发问题在Redis 存储的所有数据中,有一部分是被频繁访问的。有两种情况可能会导致热点问题的产生,一个是用户集中访问的数据,比如抢购的商品,明星结婚和明星出轨的微博。还有一种就是在数据进行分片的情况下,负载不均衡,超过了单个服务器的承受能力。热点问题可能引起缓存服务的不可用,最终造成压力堆积到数据库。出于存储和流量优化的角度,我们必须要找到这些热点数据。热点数据发现除了自动的缓存淘汰机制之外,怎么找出那些访问频率高的 key 呢?或者说,我们可以在哪里记录 key 被访问的情况呢?客户端第一

2021-02-28 16:07:25 372

原创 【合】Redis 实战篇——数据一致性问题处理方案

1 Redis 客户端1.1 客户端通信原理客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。客户端和服务器发送的命令或数据一律以 \r\n (CRLF 回车+换行)结尾。如果使用 wireshark 对 jedis 抓包:环境:Jedis 连接到虚拟机 202,运行 main,对 VMnet8 抓包。过滤条件:ip.dst==192.168.8.202 and tcp.port in {6379} set qingshan 抓包:可以看到实际发出的数据包是:

2021-02-28 14:51:30 597

原创 【合】Redis 实战篇——Redis 客户端(Jedis,Luttece,Redisson)

Redis 客户端客户端通信原理客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。客户端和服务器发送的命令或数据一律以 \r\n (CRLF 回车+换行)结尾。如果使用 wireshark 对 jedis 抓包:环境:Jedis 连接到虚拟机 202,运行 main,对 VMnet8 抓包。过滤条件:ip.dst==192.168.8.202 and tcp.port in {6379} set qingshan 抓包:可以看到实际发出的数据包是:*3\r\

2021-02-27 16:45:36 1058

原创 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)

Sentinel 实战Sentinel 配置为了保证 Sentinel 的高可用,Sentinel 也需要做集群部署,集群中至少需要三个 Sentinel 实例(推荐奇数个,防止脑裂)。hostname IP 地址 节点角色&端口master 192.168.8.203 Master:6379 / Sentinel : 26379slave1 192.168.8.204 Slave :6379 / Sentinel : 26379Slave2 192.168.8.205 Slave :6

2021-02-19 21:15:03 419 2

原创 Redis一主二从Sentinel监控配置

开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Leader)。本例通过3个Sentinel实例监控3个Redis服务(1主2从)。IP地址 节点角色&端口192.168.8.203 Master:6379 / Sentinel : 26379192.168.8.204 Slave :6379 / Sentinel : 26379192.168.8.205 Slave :6379 / Sentinel : 26379防火墙记得关闭!!!

2021-02-18 23:33:07 240 2

原创 VMware+Centos7 静态IP设置方法

有很多小伙伴问我关于VMware+Centos7如何设置静态IP的问题。为了彻底帮助大家解决这个问题,我专门写一篇文章做一个说明查看虚拟网卡信息虚拟机安装好以后,当前的系统会多出来两个虚拟网卡,一般情况下这两个网卡的命名是VMware Virtual Ethernet Adapter for VMnet1VMware Virtual Ethernet Adapter for VMnet8我们可以把虚拟机中的系统的静态IP绑定到VMnet8上,所以第一步,我们要看一下VMnet8的..

2021-02-18 23:19:20 470

原创 CentOS 7单机安装Redis Cluster(3主3从)

为了节省机器,我们直接把6个Redis实例安装在同一台机器上(3主3从),只是使用不同的端口号。机器IP 192.168.8.207更新:新版的cluster已经不需要通过ruby脚本创建,删掉了ruby相关依赖的安装cd /usr/local/soft/redis-5.0.5mkdir redis-clustercd redis-clustermkdir 7291 7292 7293 7294 7295 7296复制redis配置文件到7291目录cp /usr/local/

2021-01-24 22:29:57 223

原创 【转】Redis 分布式——可用性保证之 Sentinel(原理篇)

可用性保证之 SentinelSentinel 原理如何实现主从的自动切换?我们的思路:创建一台监控服务器来监控所有 Redis 服务节点的状态,比如,master 节点超过一定时间没有给监控服务器发送心跳报文,就把 master 标记为下线,然后把某一个 slave 变成 master。应用每一次都是从这个监控服务器拿到 master 的地址。问题是:如果监控服务器本身出问题了怎么办?那我们就拿不到 master 的地址了,应用也没有办法访问。那我们再创建一个监控服务器,来监控监控服务器…

2021-01-16 15:42:14 190

原创 【转】Redis 分布式——Redis 主从复制

为什么需要 Redis 集群为什么需要集群?性能Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作。扩展第二个是出于存储的考虑。因为 Redis 所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。可用性第三个是可用性和安全的问题。如果只有一个 Redis 服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另

2020-12-27 13:49:06 248

原创 python访问目标网站报错(‘Connection aborted.‘, error(54, ‘Connection reset by peer‘))解决方案

前言有关注我博文的人应该知道,我最近在搞大数据方面的东西。有一些数据的需求是需要用到爬虫的,所以这段时间我用python比较多,当然,我也是现学现卖,所以有一些坑也是需要踩的。但是我希望,我踩过的坑,我的读者都能很快跨过去,所以今天在这里分享我踩的一个坑~场景由于我现在做的业务是国际方面的,所以我免不了要访问国外的网站,而公司的网络环境又各种限制,所以我只能拿出我的陈年老Mac出来翻墙搞爬虫~我遇到的问题访问的是国外的网站,所以我第一步肯定是已经用工具翻过墙啦~我也验证了,我确实可以访问谷歌,用

2020-12-12 22:45:55 7028

原创 【承】Redis 原理篇——Redis 高性能深入剖析

Redis 为什么这么快?Redis 到底有多快?https://redis.io/topics/benchmarkscd /usr/local/soft/redis-5.0.5/srcredis-benchmark -t set,lpush -n 100000 -q结果(本地虚拟机):SET: 51813.47 requests per second —— 每秒钟处理 5 万多次 set 请求LPUSH: 51706.31 requests per second —— 每秒钟处理 5 万

2020-11-01 14:31:21 718

原创 【承】Redis 原理篇——Redis 的内存回收机制

内存回收Reids 所有的数据都是存储在内存中的,在某些情况下需要对占用的内存空间进行回收。内存回收主要分为两类,一类是 key 过期,一类是内存使用达到上限(max_memory)触发内存淘汰。过期策略要实现 key 过期,我们有几种思路。定时过期(主动淘汰)每个设置过期时间的 key 都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的 CPU 资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期(被动淘汰)只有当访问一个 k

2020-08-29 11:32:59 337

原创 【承】Redis 原理篇——关于 Redis 中的事务

Redis 事务先看官网https://redis.io/topics/transactions/http://redisdoc.com/topic/transaction.html为什么要用事务我们知道 Redis 的单个命令是原子性的(比如 get set mget mset),如果涉及到多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。例如我们之前说的用 setnx实现分布式锁,我们先 set,然后设置对 key 设置 expire,防止 del 发生异常的时候锁不

2020-08-24 21:32:10 297

原创 【承】Redis 原理篇——Redis 发布/订阅模式

前言关于 Redis 的“起承转合”,我前面已经用五个篇章的长度作了一个 Redis 基础篇——“起”篇的详细阐述,相信大家无论之前有没有接触过 Redis,都能从中学到不少东西。基础篇的内容顾名思义,只是个基础,主要说了 Redis 的发展以及 Redis 的基本数据类型,内容跟平时使用关联会比较大,难度不算大,希望大家能好好消化。这里送上基础篇的飞机票:【起】Redis 概述篇——带你走过 Redis 的前世今生【起】Redis 基础篇——基本数据结构之String,Hash【起】Redis

2020-08-19 16:23:12 412

原创 【起】Redis 基础篇——基本数据结构之总结篇

前言距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我

2020-08-07 09:26:18 309

原创 【起】Redis 基础篇——基本数据结构之 ZSet,Bitmap…

ZSet 有序集合存储类型sorted set,有序的 set,每个元素有个 score。 score 相同时,按照 key 的 ASCII 码排序。数据结构对比:数据结构是否允许重复元素是否有序有序实现方式列表 list是是索引下标集合 set否否无有序集合 zset否是分值 score操作命令添加元素zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python获取全部元素zrange m

2020-08-04 09:29:12 601

原创 【起】Redis 基础篇——基本数据结构之 List,Set

List 列表存储类型存储有序的字符串(从左到右),元素可以重复。可以充当队列和栈的角色。操作命令元素增减:lpush queue alpush queue b crpush queue d elpop queuerpop queueblpop queuebrpop queue取值lindex queue 0lrange queue 0 -1存储(实现)原理在早期的版本中,数据量较小时用 ziplist 存储,达到临界值时转换为 linkedlist 进行存储,分别对

2020-07-31 10:08:14 476

原创 【起】Redis 基础篇——基本数据结构之String,Hash

前言距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我

2020-07-27 15:03:30 520

原创 【起】Redis 概述篇——带你走过 Redis 的前世今生

距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我必须

2020-07-23 10:24:33 640

原创 mount:未知的文件系统类型“exfat“ 问题思考与解决

问题描述给公司的闲置电脑装了一个 CentOS7,打算当自己平时练手用的服务器,今天拿了自己的移动硬盘,想把之前的东西拷过去,但是 mount 的时候发现 mount 不上去(我的是 exFat 格式的也就是 fat64,支持 macOS和 Windows 的文件互传)。思考那 Mac 上原本也是不支持 ntfs 的啊(苹果没有明确说支持,也没有在系统中自带提供),但是我们可以通过插件的形式来让其可以支持这种格式(但是曦轩为了方便,还是直接把移动硬盘格式化成 exFat 格式,毕竟很多 NTFS 插

2020-07-03 14:09:24 16710 5

原创 记我的 15 款 MacBook Pro 13.3 寸维修(开不了机)+换屏的经历

remark我的 MacBook Pro 有一天突然开不了机,拿去 Apple Store 检测,这里记录一下。流程大概是:先在苹果官网预约天才吧(选定地点和时间,并且填写自己的信息,描述问题等);按照预约的时间到 Apple Store,到场先测量体温(目前情况特殊),然后入门做登记,工作人员会核实身份并且帮你签到,带你到一个指定位置等待接待的工作人员;等了一会就有工作人员来喊你名字,然后帮你看大概是啥问题,我当时的情况是电脑开不了机,充不进电,组合键无效,工作人员也帮我试了一下,初步猜想可能

2020-06-17 17:26:19 7183 3

原创 CentOS7.2 安装单机 Redis

前言鉴于我在准备 Redis 方面的文章,所以,我先附上一份《CentOS7 安装单机 Redis》的教程,教程比较简单,按照文章所说一步一步执行即可。正文我用的是 CentOS 7.2,其实 Redis 安装在每个系统上大同小异,所以我就以我的系统为例,但是由于可能因为环境差异,遇到一些问题,记住,不要慌,可以找度娘,也可以找我,毕竟教学相长嘛。1. 下载redis下载地址在:redis.io比如把 Redis 安装到 /home/usr/soft/cd /home/usr/soft/wg

2020-06-15 15:29:52 292

原创 15 款MacBook Pro扩容之旅

我的 macbook 是 2015 年款的 13 retina 屏的 macbookpro;当时选的容量是128G,也就是俗称的乞丐版;现在那个后悔啊,严重不够用啊。要知道苹果的电脑向来是自研自销的,连个螺丝都要和别人家的不一样,所以升级之路漫漫啊。2016 后的带 bar 的笔记本的硬盘就直接焊死在主板上了,彻底堵死升级之路。我的是 2015 年款的,虽说硬盘可以换,内存也是焊死在主板上的。想升级就只能升级硬盘。以后买macbook要慎重选择版本,想好了再下手,要不就只能整机升级了。也就是说,我手上

2020-06-08 14:49:35 20121 2

原创 Failed to initialize component [org.apache.catalina.webresources.WarResourceSet@1552a862]解决

异常小项目直接打包成 war 包丢到 tomcat 运行,在发布的时候发生错误:Failed to initialize component [org.apache.catalina.webresources.WarResourceSet@1552a862]分析项目是用 maven 管理的,有代码改动,想部署多一个供另外一个项目访问,pom 文件中的 groupId 和 artifactId 没有改动,导致冲突。解决groupId 和 artifactId 组成 war 包的唯一识别标志,只要

2020-05-22 10:11:40 2189

原创 "The valid characters are defined in RFC 7230 and RFC 3986"解决

问题java.lang.IllegalArgumentException: Invalid character found in the requesttarget. The valid characters are defined in RFC 7230 and RFC 3986org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)org.apache.coyote.http1

2020-05-09 15:48:32 497

原创 git提交的时候出现异常“bad object HEAD”解决方案

问题发生在提交文件到 github 上时发现提交不上,查看 git status,报了bad object HEAD的错误,如下$git statusfatal: bad object HEAD解决方案这报错信息显示 head 损坏,可能是我误删了什么文件导致本地与远程分支导致,于是我运行git pull origin fenzhiming,问题解决。这次我没有做过多的试验,有遇到相...

2020-05-07 17:43:28 11783 2

原创 微信公众号获取管理素材列表的大坑-{errcode":40004,"errmsg":"invalid media type hint:"}

问题最近在做微信公众号的开发(前端后台都有),所以更新系列博文就得推迟了,不过遇到的一些问题还是可以跟大家分享一下,以免大家以后需要用到的时候跟我一样踩坑。像今天,我在微信公众号的后台-接口权限中看我的权限(个人号),看到个人号有个永久素材管理接口的权限,就想着拿这个接口来做点什么。那我拿到这个接口的第一件事,我肯定是先尝试获取素材列表啦~微信开放文档的使用说明如下:于是我马上上手调...

2020-04-29 14:48:39 4476 3

原创 保证分布式系统中 ID 的唯一性的 N 种方式

前言前面我在公众号提了一个问题,如何保证分布式系统中 ID 的唯一性,今天我就来给大家解答一下,如果有什么补充或者疑问的可以到我的公众号「6曦轩」留言,看到的话会尽快回复。系统唯一 ID 是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成 ID 的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个 ID 生成的策略。下面就介绍一些常见的 ID 生...

2020-04-03 17:45:49 2454 1

原创 【概述篇】分布式架构的演进过程

前言正文架构的本质一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。架构的本质就是对系统进行有序化重构,使系统不断进化。那架构是如何实现无序到有序的呢?基本的手段就是分和合,先把系统打散,然后重新组合。分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先...

2020-03-24 15:28:50 421

原创 MySQL相关(终结篇二)- SQL 语句分析与优化

前言正文优化器——SQL 语句分析与优化优化器就是对我们的 SQL 语句进行分析,生成执行计划。我们做项目的时候,有时会收到 DBA 的邮件,里面列出了我们项目上几个耗时比较长的查询语句,让我们去优化,这些语句是从哪里来的呢?我们的服务层每天执行了这么多 SQL 语句,它怎么知道哪些 SQL 语句比较慢呢?首先,我们要把 SQL 执行情况记录下来。慢查询日志 slow query lo...

2020-03-01 21:47:28 1006

原创 MySQL相关(终结篇一)- 性能优化(配置及架构)

“你对 MySQL 的性能优化有什么想法?”很多出去面试的朋友应该基本上都会被问到这个问题,但是可能能够回答得尽善尽美的比较少,看过我专题且能够消化成自己肚子里的东西的朋友应该可以吊打面试官了哈哈哈哈(针对中高级),希望今天这篇文章之后大家能够对自己脑海中零散知识点进行整合整理,我盼着你们能回来给我报喜(当然吐苦水也可以),也盼着能跟大家一起不断进步。回到正题,关于这次的 MySQL 性能优化的知识点,我会分成两篇幅的文章来输出,关于 SQL 语句的性能优化我会以单独的篇幅来进行编写,语句优化在实操中

2020-03-01 21:46:31 581 1

原创 MySQL相关(九)- 死锁的发生和避免

在我们使用锁的时候,有一个问题是需要注意和避免的,我们知道,排它锁有互斥的特性。一个事务或者说一个线程持有锁的时候,会阻止其他的线程获取锁,这个时候会造成**阻塞等待,如果循环等待**,会有可能造成**死锁**。

2020-02-26 14:10:17 502

原创 MySQL相关(八)- innodb行级锁深入剖析

当一个事务锁住了一行数据的时候,其他的事务不能操作这一行数据,那它到底是锁住了这一行数据,还是锁住了这一个字段,还是锁住了别的什么东西呢?

2020-02-25 14:35:32 476

原创 MySQL相关(七)- innodb 锁的介绍及使用

MySQL InnoDB 锁的基本类型https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html官网把锁分成了 8 类。所以我们把前面的两个行级别的锁(Shared and Exclusive Locks),和两个表级别的锁(Intention Locks)称为锁的基本模式。后面三个 Record Locks、Gap Locks、N...

2020-02-24 16:24:33 480

原创 Error:java: Compilation failed: internal java compiler error 解决方法

报错现象新导入项目,在编译的时候报了Error:java: Compilation failed: internal java compiler error 的错误信息:问题分析从里面的信息可以看出,应该是 jdk 版本的问题,那么 jdk 版本导致的原因可能有这两个,一个是编译版本不匹配,一个是当前项目jdk版本不支持。解决方案在 IDEA 中关于 jdk 的设置有三个,我们来一个个...

2020-02-20 15:21:21 1009

原创 MySQL相关(六)- 事务隔离级别的实现方案(MVCC)

上一篇文章我们介绍了MySQL 的四大事务特性 ACID,以及innodb 的事务隔离级别RU,RC,RR,可串行化,在结尾的时候我还卖了个关子,让大家思考一下 innodb 的事务隔离级别在 MySQL 中是如何实现的,不知道大家思考得咋样了,anyway,我们今天就在这里继续讲关于事务隔离级别的实现方案。

2020-02-17 15:54:49 706

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除