前面我们提到,在防止缓存穿透的情况(缓存穿透是指,缓存和数据库都没有的数据,被大量请求,比如订单号不可能为-1,但是用户请求了大量订单号为-1的数据,由于数据不存在,缓存就也不会存在该数据,所有的请求都会直接穿透到数据库。),我们可以考虑使用布隆过滤器,来过滤掉绝对不存于集合中的元素。 布隆过滤器(BloomFilter)是由布隆(BurtonHowardBloom)在1970年提出的,它实际上是由一个很长的二进制向量和一系列随机hash映射函数组成(说白了,就是用二进制数组存储数据的特征)。可以使用它来判断一个元素是否存在于集合中,它的优点在于查询效率高,空间小,缺点是存在一定的误差,以及我...

  7jPfnBIFtnum   2天前   5   0   0 过滤器

1、头文件源码,把涉及到的进程权限的常量值都添加进去 definePROCESS_TERMINATE(0x0001) //进程权限 definePROCESS_CREATE_THREAD(0x0002) definePROCESS_SET_SESSIONID(0x0004) definePROCESS_VM_OPERATION(0x0008) definePROCESS_VM_READ(0x0010) definePROCESS_VM_WRITE(0x0020) definePROCESS_DUP_HANDLE(0x0040) definePROCESS_CREATE_PROCESS(0x...

  7jPfnBIFtnum   2天前   4   0   0

一、在MFC中添加控制码,告诉驱动我们要进行的操作 include<winioctl.h>define写测试CTL_CODE(FILE_DEVICE_UNKNOWN,0x801,METHOD_BUFFERED,FILE_ANY_ACCESS)define读测试CTL_CODE(FILE_DEVICE_UNKNOWN,0x802,METHOD_BUFFERED,FILE_ANY_ACCESS)define读写测试CTL_CODE(FILE_DEVICE_UNKNOWN,0x803,METHOD_BUFFERED,FILE_ANY_ACCESS) 二、MFC代码实现 1、...

  7jPfnBIFtnum   2天前   5   0   0 缓存数据

LFU是一个著名的缓存算法,实现LFU中的set 和 get 样例:capacity = 3 set(2,2) set(1,1) get(2) >> 2 get(1) >> 1 get(2) >> 2 set(3,3) set(4,4) get(3) >> -1 get(2) >> 2 get(1) >> 1 get(4) >> 4     我们来看看LFU的百度解释: LFU(le...

  7jPfnBIFtnum   2天前   5   0   0 lintcode缓存

平时我们使用缓存的方案,一般是在数据库中存储一份,在缓存中同步存储一份。当请求过来的视乎,可以先从缓存中取数据,如果有数据,直接返回缓存中的结果。如果缓存中没有数据,那么去数据库中取出数据,同时更新到缓存中,返回结果。如果数据库中也没有数据,可以直接返回空。 关于缓存,一般会有以下几个常见的问题 缓存穿透是指,缓存和数据库都没有的数据,被大量请求,比如订单号不可能为-1,但是用户请求了大量订单号为-1的数据,由于数据不存在,缓存就也不会存在该数据,所有的请求都会直接穿透到数据库。如果被恶意用户利用,疯狂请求不存在的数据,就会导致数据库压力过大,甚至垮掉。 注意:穿透的意思是,都没有,直接一路打...

  7jPfnBIFtnum   2天前   6   0   0 数据库缓存

之前使用极简床图,但是后来好像挂了,真是一件悲伤的事,最近才发现了一个神器,开源的PicGo,已经有各个平台的版本了。 下载好之后怎么配置呢? 配置阿里云 之前是注册阿里云认证之后就送一个oss存储(免费的),不知道现在还有没有,如果有的话就可以按照这个步骤配置下去。打开oss之后,需要自己建立Bucket(存储空间名),存储区域(比如oss-cn-qingdao),除此之外还需要keyid和keysecret。(一定要打开公共读的权限,要不是访问不了的)点击自己的头像,选择accesskeys,新建一个可key就可以了,我是新建了公共的。安装PicGo之后,打开,选择阿里云,把上面的东西配置...

  7jPfnBIFtnum   2天前   5   0   0 存储

  开局还是那种图,各位客官往下看... 享元模式(​​FlyWeight​​),是结构型模式的一种,主要是为了减少创建对象的数量,减少内存占用以及提高性能。说到这里,不知道你是否会想到池技术,比如​​String​​常量池,数据库连接池,缓冲池等等,是的,这些都应用了享元模式。比如,有一些对象,创建时候需要资源比较多,创建成本比较高,内存开销比较大,如果我们一直创建,机器吃不消,那么我们就想到了池化技术,把创建好的对象放在里面,需要时,去池子里面取就可以了,也就是大家共享了池子里面的对象,这就是共享。听名字,就很共享单车: 享元模式的特点 一般而言,享元对象需要在不同的场景下...

  7jPfnBIFtnum   2天前   6   0   0 缓存享元模式java

何为存储过程? 存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样。 每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它学习的欲望,存储过程也不例外,那么存储过程有什么优点? 执行速度更快 允许模块化程序设计  提高系统安全性 减少网络流通量 看完优点之后,我们再来看看存储过程的分类有哪些,然后我们按照分类一个一个的写(演示)。 系统存储过程     系统存储过程的名称一般以“sp_”开头     由SQLServ...

  7jPfnBIFtnum   2天前   6   0   0 数据库存储

说明:记录一次JVM内存溢出的排查过程; 场景 项目开发完成后,首次提交到测试环境。测试、产品同事反馈页面先是操作响应慢,抛出超时异常,最后直接无法使用。查看日志后得知是内存溢出。 重启服务后,我对前端主要的几个长RT接口,使用Arthas进行了trace; 排查 Step1:SQL问题 锁定到了时间主要消耗在一次数据库操作,首先想到这段SQL是否有问题。 但我把SQL单独取出来,拼接参数执行,时长非常短,不应该啊。 Step2:拦截器 这期间,我做了很多尝试,看了很多JVM内存溢出的文章,但是基本没有帮助。于是,我换了一种思路,项目重启后,疯狂调用慢接口,然后使用Arthas的da...

  7jPfnBIFtnum   2天前   5   0   0 springJVMjava

说明:记录一次使用Redis的错误; 场景 在将验证码存入Redis时,发现存入的值前面有很多空格,导致在与前端传入的值比较时,一直是false,验证不通过。如下: 上面这些“□”是占位符,复制出来时空字符串; 解决 使用的Redis方法错了,我用的是下面这个API; redisTemplate.opsForValue().set(uuid,text,60); 后面这个60不代表过期时间,而是偏移量,指将数据偏移多少位,我上面这个方法表示将值偏移60位,所以前面出现了60个空字符 正确的方法如下,是四位参数,最后一位表示过期时间的单位; redisTemplate.opsForVa...

  7jPfnBIFtnum   2天前   6   0   0 redis缓存java

说明:单机的Redis存在许多的问题,如数据丢失问题、高并发问题、故障恢复问题、海量数据的存储能力问题,针对这四个问题,对应解决方式有:数据持久化、搭建主从集群、Redis哨兵和搭建分片集群; 本文介绍搭建Redis主从集群和哨兵,用以解决单机Redis的并发问题和故障恢复问题。操作系统是CentOS7,远程连接工具是WindTerm。 单机安装 首先,先安装单机的Redis 第一步:下载Redis压缩包 可在官网下载,下载完成后将压缩包复制到云服务器或者Linux虚拟机里; 我这里放在/tmp/essay目录下 第二步:安装Redis所需的依赖 我安装过了,首次安装需要一点时间 yu...

  7jPfnBIFtnum   2天前   6   0   0 数据库redis缓存

同一服务器部署多个tomcat时,存在端口号冲突的问题,所以需要修改tomcat配置文件server.xml,以tomcat7为例。 首先了解下tomcat的几个主要端口: <Connectorport="8080"protocol="HTTP/1.1" connectionTimeout="60000" redirectPort="8443"disableUploadTimeout="false" executor="tomcatThreadPool"URIEncoding="UTF-8"/> 其中8080为HTTP端口,8443为HTTPS...

  zNRyot8onCGb   2天前   6   0   0 服务器

一、ZooKeeper简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeepe提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchronization)、命名服务(NamingService)、集群维护(GroupMaintenance)等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。ZooK...

  zNRyot8onCGb   2天前   5   0   0 集群

考虑到只要有5,或者因子为5的数,就可以产生0的尾部。假如1234...250,那么250/5=50可以知道,有50个为5的倍数,但是里面有多少个为25的倍数,125的倍数..., 50/5=10,可知25的倍数有10个,10/5=2,可知125的倍数有两个,以此类推,代码如下: class Solution {  public:     // param n : description of n     // re...

  zNRyot8onCGb   2天前   4   0   0 结构算法

样例例如 n=12,k=1,在[0,1,2,3,4,5,6,7,8,9,10,11,12],我们发现1出现了5次(1,10,11,12) 代码如下: class Solution { public:     /       param k : As description.       param n : As description. ...

  zNRyot8onCGb   2天前   6   0   0 编程开发

SpringBoot其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。 项目构建我们使用Maven或Gradle,这将使项目依赖、jar包管理、以及打包部署变的非常方便。 一、内嵌Server配置 SpringBoot将容器内置后,它通过配置文件的方式类修改相关server配置。  其中常用的配置只有少数几个,已经用紫色标记起来。红框圈起来...

  zNRyot8onCGb   2天前   6   0   0 springboot

>SeleniumWebdriver 3.X源码分析系列第7篇,该系列原则上会将整个源码分享一遍 在大家的实践当中,经常需要在不同的环境(浏览器)中执行测试,在seleniumwebdriver中如何来实现在不同的环境中执行测试脚本呢? 在seleniumwebdriverpython驱动代码中提供了DesiredCapabilities类提供了相应的解决方案。 我们先看下DesiredCapabilities类定义中的文档说明 简单一句话:         基于seleniumgrid构建分布...

  zNRyot8onCGb   2天前   4   0   0 springbootjava

说明:之前有介绍过如何在项目中使用MinIO及整合成起步依赖在项目中使用,本文介绍如何使用Docker部署MinIO服务器。 安装Docker 首先,需要在服务器上安装Docker,参考Docker安装&卸载,Docker常用命令。 安装完之后,敲下面的命令查看Docker版本; docker-v 拉取MinIO镜像 输入下面的命令,拉取MinIO的镜像,不加版本号默认拉取最新的。 dockerpullminio/minio 启动容器 输入下面的命令,启动MinIO容器 dockerrun\ -d-p9000:9000-p9001:9001\ --nameminio\ ...

  zNRyot8onCGb   2天前   5   0   0 容器docker服务器

说明:RabbitMQ是一门异步通讯技术,使用异步通讯技术,可解决同步通讯的一些问题。 安装 本文介绍在云服务器上安装RabbitMQ,操作系统是CentOS7,远程连接工具是WindTerm; 第一步:拉取镜像 镜像版本选择,3.8-management dockerpullrabbitmq:3.8-management 我这里显示已经安装过,首次安装会下载一些文件,等下载完成即可; 第二步:运行容器 输入下面命令,运行RabbitMQ容器,设置登录账号为:root,密码:123456 dockerrun\ -eRABBITMQ_DEFAULT_USER=root\ -eRABBITM...

  zNRyot8onCGb   2天前   6   0   0 分布式rabbitmq

说明:记录一次对请求分发,无法登录系统的问题。 场景 如下,在此结构下,如何判断该用户是已登录的用户; 常规操作,用户登录后给用户发Token,同时将发放的Token存入到Redis中。要求用户后续请求需要用户携带Token访问。后端接口在处理请求之前,鉴别用户的Token(合法有效),通过校验才处理请求,不然返回对应的错误信息(未登录、已过期)。 在此之上,只需要后端服务器连接同一台Redis即可。 问题 我现在面临的问题是,两台后端服务器连接的Redis就是同一台。Nginx分发请求,策略是轮询,登录时访问的是后端服务器A,登录完成后接口访问后端服务器B,报“用户未登录或登录过期”信...

  zNRyot8onCGb   2天前   4   0   0 springcloudnginxjava
推荐作者 更多

2023-11-08

2023-11-12

2023-11-21

2023-11-01

2023-11-02

2023-11-02

2023-11-02

2023-11-01

2023-11-02

2023-11-01