自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微信公众号网页开发调用扫一扫及苹果手机(iOS)无反应问题解决方案

微信网页开发调取扫一扫,在返回扫描结果模式下,安卓手机好使,但是苹果手机(iOS)总是一闪而过,到底如何解决

2023-08-23 16:32:38 1066 3

原创 idea配置,springboot热部署终极解决办法,解决热部署失效问题

1、添加maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional></dependency>2、添加插件

2020-07-14 10:33:51 420

原创 redis高级之持久化(四)---rdb与aof区别

上两篇文章我们详细介绍了rdb和aof,两种持久化方式我们在实际应用中该如何选择呢?他们各有什么优缺点,如下rdb与aof的选择之感对数据非常敏感,建议使用默认的aof持久化方案aof持久化策略使用everysecond,每秒种fsync一次,该策略redis扔可以保持很好的处理性能,当出现问题时,最多丢失0-1秒内的数据。 注意:由于aof文件存储体积较大,且回复速度较慢 数据呈现阶段有效性,建议使用rdb持久化方案 数据可以良好的做到阶段内无丢失(该阶段是开发者或者运维人员手

2020-06-28 11:24:37 289

原创 redis高级之持久化(三)---AOF方式

Rdb存储的弊端存储数据量较大,效率较低(基于快照思想,每次读写都是全部数据,当数据量巨大,效率非常低) 大数据量下的IO性能较低 基于fork创建子进程,内存产生额外消耗 宕机带来的数据丢失风险解决思路不写全数据,仅记录部分数据 改记录数据未记录操作过程 对所有操作均进行记录,排除丢失数据的风险AOF概念AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的,与rdb相比可以简单描述为记录数据为记录数据

2020-06-28 11:17:13 967

原创 redis高级之持久化(二)---RDB方式

RDB启动方式谁,什么时间,干什么事情命令执行谁:redis操作者(用户) 什么时间:即时(随时进行) 干什么事情:保存数据RDB启动方式---save指令命令save作用:手动执行一次保存操作RDB启动方式---save指令相关配置如下为配置文件:RDB启动方式---save指令工作原理RDB启动方式---bgsave指令数据量过大,单线程执行方式造成效率过低如何处理?后台执行谁:redis操作者(用户)发起指令:redis服务器控制

2020-06-28 10:27:19 264

原创 redis高级之持久化(一)---持久化简介

我们将从以下几个方面对redis持久化进行介绍,本篇介绍持久化的简介,先对持久化有一个感性的认识,然后介绍两种持久化方案,再分析一下这两种持久化有什么区别,最后介绍一下持久化的应用场景。持久化简介 RDB AOF RDB和AOF区别 持久化应用场景意外的断电自动备份什么是持久化?利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。为什么要进行持久化?防止数据的意外丢失,确保数据安全性持久化过程保存什么?将当前数据状态进行保

2020-06-28 09:22:08 206

原创 图解mysql索引---历史最详细、最清楚的讲解

我们先来列一个提纲,从以下几个方面介绍mysql索引1、索引的本质 2、索引结构及其详细解读(二叉树、红黑树、HASH、B-Tree、B+Tree) 3、非聚集索引(MyISAM)、聚集索引(InnoDB) 4、常见问题一、索引的本质索引是帮助mysql高效获取数据的排好序的数据结构 索引存储在文件里 索引结构 二叉树 Hash B树注意:索引起的作用是:排好序的快速查找数据结构!索引会影响where后面的查找,和o...

2020-06-18 18:02:58 922

原创 redis高级之锁---普通锁、分布式锁、分布式锁改良

基于特定条件的事务执行---锁业务场景天猫双11热卖过程中,对已经售罄的货物追加补货,4个业务员都有权限进行补货,补货的操作可能是一系列的操作,牵扯到多个连续操作,如何保障不会重复操作?业务分析多个客户端有可能同时操作同一组数据,并且该数据一旦被操作修改后,将不适用于继续操作在操作之前锁定要操作的数据,一旦发生变化,终止当前操作解决方案对key添加监视锁,在执行exec前如果key发生了变化,终止事务执行watch key1 [key2..]取消对所有key的监视unw

2020-06-15 11:21:52 239

原创 redis高级之事务

事务简介超市的收银员在盘账,一天下来收了一些零钱,然后一个一个数,在数的过程中来了一个儿童,这个儿童唱了一首歌:门前大桥下游过一群鸭,快来快来数一数二十六七八。然后这个收银员一脸难色地把数好的钱又放了回去。这里收银员在做连续的动作(数钱)时被打断了,或者被影响到了,那么数钱的结果肯定是不正确的。怎么解决这个问题,我们给她一个安静的环境让她数钱。什么是事务Redis执行指令过程中,多条连续执行的指令被干扰,打断,插队。图片站位Reids事务就是一个命令执行的队列,将一系列预定义命令包装

2020-06-15 10:59:18 172

原创 redis高级之常见问题解决方案---缓存预热、缓存雪崩、缓存击穿、缓存穿透

缓存预热问题排查请求数据较高 主从之间数据吞吐量较大,数据同步操作频度较高解决方案 前置准备工作日常例行统计数据访问记录,统计访问频度较高的热点数据 利用LRU数据删除策略,构建数据留存队列例如:storm与kafka配合准备工作将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据 利用分布式多服务器同时进行数据读取,提速数据加载过程实施:使用脚本程序固定触发数据预热过程 如果条件允许,使用了CDN(内容分发网络),效果会更好总结缓存预热就是系统启动前,

2020-06-09 10:14:05 453

原创 redis高级之集群---集群

今天我们正式讲解集群相关的一些知识,我们从以下三个方面进行讲解 集群简介 Redis集群结构设计 Cluster集群结构搭建 现状问题业务发展过程中遇到的峰值瓶颈Redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到20万/秒内存单机容量达到256G,当前业务需求内存容量1T使用集群的方式可以快速解决上述问题集群架构集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果集群作用...

2020-06-09 09:52:04 187

原创 redis高级之集群---哨兵模式

接下来我们就介绍一下哨兵模式,我们会从以下几个方面进行介绍:哨兵简介 启用哨兵模式 哨兵工作原理假如master主机“宕机”了,我们要做的就是把宕机的master干掉,然后从剩余的slave中选出一个master 下图是挑选出新的master 在主master宕机到选择出新的master,中间经历了什么。如下:将宕机的master下线 找一个slave作为master 通知所有的slave连接新的maste...

2020-06-08 09:24:48 193

原创 redis高级之集群---主从复制(四)---主从复制常见问题

频繁的全量复制(1)伴随着系统的运行,master的数据量会越来越大,一旦master重启,runid将发生变化,会导致全部slave的全量复制操作内部优化调整方案:master内部创建master_replid变量,使用runid相同的策略生成,长度41位,并发送给所有slave 在master关闭时执行命令shutdown save,进行RDB持久化,将runid与offset保存到RDB文件中Repl-id repl-offset 通过redis-check-rdb命令可以查看该信息

2020-06-03 16:14:50 202

原创 redis高级之集群---主从复制(三)---心跳机制

心跳机制进入命令传播阶段后,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线 master心跳 指令:PNG 周期:由repl-ping-slave-period决定,默认10秒 作用:判断slave是否在线 查询:INFO replication 获取slave最后一次连接时间间隔,lag项维持在0或1视为正常 slave心跳任务 指令:REPLCONF ACK(offset) 周期:1秒 作用1:汇报slave自己的复制偏移量,.

2020-06-03 16:07:46 873

原创 redis高级之集群---主从复制(二)---工作流程及名词解释

今天我们就详细讲解一下主从复制的工作流程主从复制工作流程主从复制过程大体可以分为3个阶段建立连接阶段(即准备阶段) 数据同步阶段 命令传播阶段连接图及过程如下图,是slave主动连接master。大部分时间是slave给master发送指令,大致了解了它的工作流程,接下来我们进行详细解说。 阶段一:建立连接阶段建立slave到master的连接,使master能够识别slave,并保存slave端口号建立连接阶段工作流程步骤一:设置maste...

2020-06-03 15:58:11 427

原创 redis高级之集群---主从复制(一)---简介和作用

今天我们就聊一下redis的高级知识,单台服务已经不能满足我们的需求,面对高并发、服务故障等问题,单台服务很显然力不从心。接下来我们先对主从复制有一个简单的了解,然后讲一下它的作用,为何会有主从复制,它到底解决了什么问题。首先看一下讲解目录什么是主从复制 主从复制的作用 主从复制工作流程 三个阶段 三个核心 心跳机制 4.常见问题主从复制简介主从复制即将master中的数据即时、有效的复制到slave中 特征:一个master可以拥有多个slave,一个s...

2020-06-03 13:53:14 180

原创 redis使用场景之GEO---应用于地理位置的计算

在我们日常生活中有好多软件都用到了地理位置计算,比如:火热的生活服务类软件微信/陌陌美团/饿了么携程/马蜂窝高德/百度...GEO类型的基本操作添加坐标点geoadd key longitude latitude member [longitude latitude member ...]获取坐标点geopos key member [member ...]计算坐标点距离geodist key membere1 member2 [unit]演示操作如下

2020-05-28 19:22:07 958

原创 redis使用场景之HyperLogLog---应用于独立信息统计

如果我们统计不重复数据的数量,比如统计独立UV,我们会有如下方案:原始方案:set存储每个用户的id(字符串)改进方案:bitmaps存储每个用户状态(bit)全新的方案:HyperLogLog基数首先我们来认识一下基数{1,3,5,7,5,7,8} 基数集{1,3,5,7,8} 基数:5Hyperloglog类型的基本操作添加数据pfadd key element [element...]统计数据pfcount k...

2020-05-28 18:36:36 186

原创 redis使用场景之Bitmaps---应用于信息统计状态

今天我们来学习一下bitmaps,bitmaps这个“数据结构”可以实现对位的操作。bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。Bitmaps类型的基础操作获取指定key对应偏移量上的bit值getbit key offset设置指定key对应偏移量上的bit值,value只能是1或0setbit key offset value注意:如果偏移量比较大,前面的位都是置0,所以我们可以减去一个公共数Bitmaps类型的扩展操作对指定ke

2020-05-28 09:01:24 357

原创 redis使用场景之sorted_set(二)---排行榜(计数器组合排序功能对应的排名)

业务场景票选广东十大杰出青年,各类综艺选秀海选投票各类咨询网站top10(电影、歌曲、文档、电商、游戏等)聊天室活跃度统计游戏好友亲密度业务分析为所有参与排名的资源建立排序依据解决方案获取数据对应的索引(排名)zrank key mumberzrevrank key memberscore值获取与修改zscore key memberzincrby key increment member接下来就进行实操一下redis数据库里的展示形.

2020-05-22 09:20:14 531

原创 redis使用场景之sorted_set(一)

今天我们来认识一种新的数据类型:sorted_set,首先我们对其存储类型有个简单的认识。新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式 需要的存储结构:新的存储模型,可以保存可排序的数据 Sorted_set类型:在set的存储结构基础上添加可排序字段 score为排序的,不是真实的数据添加数据zadd key score1 member1 [score2 member2]获取全部数据zrange key st...

2020-05-22 09:06:42 657

原创 redis使用场景之set(六)---黑名单与白名单设定的服务控制

业务场景黑名单资讯类信息类网站追求高访问量,但是由于其信息的价值,往往容易被不法分子利用,通过爬虫技术,快速获取信息,个别特种行业网站信息通过爬虫获取分析后,可以转换成商业机密进行出售,例如第三方火车票、机票、酒店刷屏代购软件、电商刷评论、刷好评。同时爬虫带来的伪流量也会给经营者带来错觉,产生错误的决策,有效避免网站被爬虫反复爬去成为每个网站都要考虑的基本问题。在基于技术层面区分出爬虫用户后,需要将此类用户进行有效屏蔽,这就是黑名单的典型应用。Ps:不是说爬虫一定做摧毁性的工作,有些小型网站需

2020-05-22 08:47:27 2369

原创 redis使用场景之set(五)---网站访问量统计PV、UV、IP(同类型数据的快速去重)

业务场景(实现网站访问量统计)公司对旗下的网站做推广,统计网站的PV(访问量)、UV(独立访客)、IP(独立IP)。PV:网站被访问次数,可通过刷新页面提高访问量UV:网站被不同用户访问的次数,可通过cookie统计访问量,相同用户切换ip地址,UV不变IP:网站被不同IP地址访问的总次数,可通过IP地址访问量,相同IP不同用户访问,IP不变解决方案利用set集合的数据去重特征,记录各种访问数据 建立string类型数据,利用incr统计日访问量(PV) 建立set模型,记录不同

2020-05-22 08:44:23 1085

原创 redis使用场景之set(四)---应用于不同类型不重复数据的合并操作,复杂交错的角色权限校验

业务场景集团公司共具有12000名员工,内部OA系统中具有700多个角色,3000多个业务操作,2300多种数据,每位员工具有一个或多个角色,如何快速进行业务操作的权限校验?解决方案依赖set集合数据不重复的特征,依赖set集合hash存储结构特征完成数据过滤与快速查询 根据用户id获取用户所有角色 根据用户所有角色获取用户所有操作权限放入set集合 根据用户所有角色获取用户所有数据全选放入set集合下面的命令,rid:**表示不同的角色,getall、getById等表示权限

2020-05-21 09:10:25 438 1

原创 redis使用场景之set(三)---交并差操作及应用场景

抖音、微博等软件经常给我们推荐一些可能认识的人,还有某个人是你哪些朋友共同的好友,昨天是520,有人跟我说昨天晚上刷抖音刷到了她的前男友,明明早已删除,为何系统还能推荐给她,这绝非偶然,今天我们就揭开这些功能的神秘面纱。业务场景脉脉为了促进用户间的交流,保障业务成单率的提升,需要让每位用户拥有大量的好友,事实上职场新人不具有更多的职场好友,如何快速让用户积累更多的好友?新浪微博为了增加用户热度,提高用户留存性,需要微博用户在关注更多的人,以此获得更多的信息或热门话题,如何提高用户关注他人的总量?

2020-05-21 08:53:59 469

原创 redis使用场景之set(二)---随机推荐类信息检索

在上一讲我们对set有了一个感性认识,明白了set存储空间,今天我们来讲解一下set类型数据的基本操作,然后再讲一个使用的业务场景从而引出并总结出set的使用场景之一。Set类型数据的基本操作添加数据sadd key member1 [member2]获取全部数据smembers key删除数据srem key member1 [member2]获取集合数据总量scard key判断集合中是否包含指定数据sismember key memberSet类型数据的

2020-05-21 08:44:38 489

原创 redis使用场景之set(一)

set介绍新的存储要求:存储大量的数据,在查询方法提供更高的效率 需要的存储结构,能够保存大量的数据,高效的内部存储机制,用于查询 Set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的通过上面我们已经对set有了一个感性的认识,并且对其存储机构有了一个简单的了解,接下来我们就会通过实际应用场景进行学习有关于set的知识。...

2020-05-19 15:09:52 299

原创 redis使用场景之list(二)---微信朋友圈点赞、日志消息队列

由于list自身的一些特性,所以我们可以将其应用于具有操作先后顺序的数据控制,比如微信朋友圈点赞,要求按点赞顺序显示好友信息。也可应用于最新消息的展示,下面我们就针对这它的特性分析一下它的使用场景。业务场景微信朋友圈点赞,要求按照点赞顺序显示点赞好友信息,还有需要满足中间的某个人取消了点赞,我们要能将其剔除解决方案:list自带移除指定数据操作lrem key count value业务场景Twitter、新浪微博、腾讯微博中个人用户的关注列表需要按照用户的关注顺序进行展示

2020-05-19 09:01:04 1577

原创 redis使用场景之list(一)

数据存储需求:存储多个数据,并对数据进行存储空间的顺序进行区分需要的存储结构:一个存储空间保存多个数据,且通过的数据可以体现进入顺序list类型:保存多个数据,底层使用双向链表存储结构实现List类型数据基本操作添加/修改数据lpush key value1 [value2] ...rpush key value1 [value2]...获取数据lrange key start stoplrange key indexllen key获取并移除数据lp

2020-05-19 08:41:32 454

原创 redis使用场景之hash(三)-- 抢购、限购、限量发放优惠券、激活码等业务

hash还可以用于抢购、限购、限量发放优惠券、激活码等业务,此处我们举一个例子来说明业务场景双十一活动日,销售手机充值卡的商家对移动、联通、电信的30元、50元、100元商品推出抢购活动,每种商品抢购上限为1000张。解决方案以商家id作为key 将参与抢购的商品id作为field 将参与抢购的商品数量作为对应的value 抢购时使用降值得方式控制产品数量 实际业务中还有超卖等实际问题,此处暂不考虑hmset p01 c30 1000 c50 1000 c100 1000

2020-05-14 14:46:52 1620

原创 redis使用场景之hash(二)--电商网站购物车设计与实现

电商网站购物车设计与实现业务分析分析购物车的redis存储模型 添加、浏览、更改数量、删除、清空购物车和数据库之间持久化同步(暂不考虑) 购物车与订单间关系(暂不考虑) 提交购物车:读取数据生成订单 商家临时价格调整:隶属于订单级别未登陆用户购物车信息存储(暂不考虑) cookie存储从上图我们可以分析得出最终解决方案以客户id作为key,每位客户创建一个hash存储结构存储对应的购物车信息 ...

2020-05-14 11:24:56 2118

原创 redis使用场景之hash(一)

在讲hash使用场景之前,我们先来认识一下它是什么,具有什么结构、怎么使用、以及在使用的时候有哪些注意事项hash介绍对一系列存储的数据进行编组,方便管理,典型应用存储对象信息。string类型也可以实现存对象,对这个对象进行json序列化,然后取的时候再进行反序列化,但是,每次修改的时候只能整体修改,不能单个修改某个属性,且必须有实体类型的支撑。序列化和反序列化也需要消耗服务器性能。 一个存储空间保存多个健值对数据。 底层使用哈希表结构实现数据存储。哈希存储结构优化如果field

2020-05-14 10:48:51 13310 1

原创 springboot打包jar部署怎么访问外部文件,微信支付证书文件apiclient_cert.p12、微信业务域名、JS接口安全域名、网页授权域名文件的验证

我们在jar部署的时候无法读取外部的文件,或者说很难读取到其他文件。还有就是根目录下无法读取并返回流文件。下面分别以微信支付证书文件和读取并返回微信业务域名、JS接口安全域名、网页授权域名文件的验证为例进行讲解。1、微信支付证书文件apiclient_cert.p12比如我们的apiclient_cert.p12在如下目录linux下:windows下:下面直接看程序...

2020-04-24 11:20:19 2096 1

原创 springboot处理异常终极解决方案,404、405等及其他异常捕捉

在很多业务场景中,会出现各种各样的异常,比如404,这在用户体验上非常不好,接口404前端无法捕捉是什么原因,对接口及用户很不友好,如果页面报404我们直接给接口返回json格式的错误,这样有利于前端去处理并展示相应的引导页面。1、首先在application.properties配置404页面的拦截#出现错误时, 直接抛出异常spring.mvc.throw-exception-if...

2020-04-24 10:43:37 1563

原创 强烈推荐:vue集成tinymce文本编辑器

先来对比一下各个编辑器UEditor:百度前端的开源项目,功能强大,基于 jQuery,但已经没有再维护,而且限定了后端代码,修改起来比较费劲bootstrap-wysiwyg:微型,易用,小而美,只是 Bootstrap + jQuery...kindEditor:功能强大,代码简洁,需要配置后台,而且好久没见更新了wangEditor:轻量、简洁、易用,但是升级到 3.x 之后...

2019-04-23 11:17:04 3668 2

原创 Idea打包jar到其他项目中

第一步:第二步:第三步:依次建立包目录结构第四步:添加文件:此处是添加编译后的.class文件。一般在target目录下找到对应的.class 文件添加即可第五步:点击确定第六步:注意输出文件:以上就导出成功了,我们在设置的目录中找到它导出之后我们用在其他文件中,如下:第一步:新建一个lib文件夹,然后...

2018-10-16 13:02:33 642

原创 吐血推荐cookie和session

吐血推荐cookie和session很多人对于cookie和session一知半解,今天我们就全面透彻的分析一下cookie和session的原理和使用以及注意事项。*写在前面我们的网页访问都是通过http协议实现,http是一个无状态协议,说白了就是一个用户请求一个页面后,再请求同一网站上的另外一个页面时,http协议并不认为两次请求是来自同一用户,也就是http协议没有

2017-03-06 11:20:03 612

原创 给定键或属性名称检索数组元素或对象属性的值

1、对于一个二维数组,如下,我们现在需要遍历所有的id和name,你会怎么做呢? 0 => array (size=15) 'id' => string '1' (length=1) 'parent_id' => string '0' (length=1) 'name' => string '手机' (length=6) 'br

2017-02-28 15:30:55 596

原创 Mongo操作教程之PHP扩展

#Mongo操作教程之PHP扩展接下来我们从命令行和PHP程序两个方面进行对PHP程序对mongodb的连接、增删改查进行详细的讲解与代码实例。1、首先进行数据库的连接与建立,比如我们默认连接主机和端口为:mongodb://localhost:27017的mongodb,然后创建数据库rision。### 程序如下:``` python$m = new MongoClient(); //

2017-02-21 15:14:58 711

原创 mongodb操作

本操作分为命令行操作和php程序操作,本节介绍命令行,下节介绍php程序打开cmd,然后在命令行输入命令mongod.exe --dbpath="F:\Program Files\MongoDB\Server\3.4\data" --logpath="F:\Program Files\MongoDB\Server\3.4\log\mongodb.log" --port=27017开启mongo

2017-02-21 10:19:21 439

空空如也

空空如也

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

TA关注的人

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