首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏WD学习记录

    本地缓存和分布式缓存的比较 堆污染

    本地缓存和分布式缓存的比较: 分布式缓存一致性更好一点,本地缓存 每个实例都有自己的缓存,可能会存在不一致的情况。 本地缓存会占用堆内存,影响垃圾回收、影响系统性能。 分布式缓存两大开销会导致其慢于本地缓存,网络延迟和对象序列化 进程内缓存适用于较小且频率可见的访问场景,尤其适用于不变对象,对于较大且不可预见的访问,最好采用分布式缓存。 堆污染: java中,当一个可变泛型参数指向一个无泛型参数时,堆污染(Heap Pollution)就有可能发生。可能会导致ClassCastException 的发生。 协变(covariance) 2. 逆变(contravariance) 3.

    1.3K30发布于 2019-08-14
  • 来自专栏码农架构

    Redis缓存污染了,该怎么办?

    当这些数据服务完访问请求后,如果还继续留存在缓存中的话,就只会白白占用缓存空间。这种情况,就是缓存污染。 1.如何解决缓存污染问题? 要解决缓存污染,我们也能很容易想到解决方案,那就是得把不会再被访问的数据筛选出来并淘汰掉。这样就不用等到缓存被写满以后,再逐一淘汰旧数据之后,才能写入新数据了。 也正是因为只看数据的访问时间,使用 LRU 策略在处理扫描式单次查询操作时,无法解决缓存污染。 因此,LFU 策略会优先把这些访问次数低的数据淘汰出缓存。这样一来,LFU 策略就可以避免这些数据对缓存造成污染了。 2.小结 缓存污染问题指的是留存在缓存中的数据,实际不会被再次访问了,但是又占据了缓存空间。

    1.2K50发布于 2020-11-03
  • 来自专栏vivo互联网技术

    非侵入式入侵 —— Web缓存污染与请求走私

    Web缓存污染旨在通过攻击者向缓存服务器投递恶意缓存内容,使得用户返回响应结果而触发安全风险。 一、Web 缓存污染攻击原理与场景 1.1 什么是缓存缓存技术旨在通过减少延迟来加速页面加载,还可以减少应用程序服务器上的负载。 1.3 缓存污染具体是如何实现的? 二、Web缓存污染防御手段 2.1 禁用缓存配置 对缓存投毒的最强大防御办法就是禁用缓存。 使用HTTP/2在现在的网络条件下根本无法推广使用,哪怕支持HTTP/2协议的服务器也会兼容HTTP/1.1。从本质上来说,HTTP请求走私出现的原因并不是协议设计的问题,而是不同服务器实现的问题。

    87240编辑于 2023-03-14
  • 来自专栏PM吃瓜(公众号)

    缓存技术 2

    这是直接读取数据库的数据 array(10) { [0] => array(12) { ["id"] => string(1) "1" ["catid"] => string(2) ["ord"] => string(1) "2" ["hits"] => string(1) "1" ["status"] => string(1) "1" } 第二次访问 array(10) { [0] => array(12) { ["id"] => string(1) "1" ["catid"] => string(2) "13 "] => string(1) "2" ["hits"] => string(1) "1" ["status"] => string(1) "1" } 说明:第一次运行时 ('静态规则', '有效期', '附加规则'), // 定义格式2 字符串方式 '静态地址' => '静态规则', ) 定义格式1采用数组方式 便于单独为某个静态规则设置不同的有效期,定义格式2

    93320发布于 2019-08-13
  • 来自专栏架构精进之路

    Redis 经典缓存问题:一致性、穿透、击穿、雪崩与污染

    然而,使用 Redis 缓存时,可能会遇到一些经典问题,比如一致性问题、缓存穿击、缓存穿透、缓存雪崩,以及缓存污染等。这些问题如果不加以有效处理,可能导致系统性能下降,甚至引发服务不可用的严重后果。 当缓存库出现时,必须要考虑如下问题: 缓存穿透 缓存穿击 缓存雪崩 缓存污染 缓存和数据库一致性 2. 缓存空值对于不存在的键,也将其值设置为 null 并缓存一定时间,但需要注意避免缓存污染(详见后文)。 3. 解决方法: 缓存过期时间分布化为不同的缓存键设置随机过期时间,避免同一时间大批量缓存失效。 多级缓存在 Redis 缓存前增加本地缓存层,减轻数据库直接压力。 缓存污染 问题定义: 缓存污染是指缓存中存储了低命中率或无意义的数据,占用了大量内存资源,降低缓存效率。 解决方法: 设置缓存淘汰策略根据业务需求选择合适的淘汰策略(如 LRU、LFU)。

    42810编辑于 2025-01-11
  • 来自专栏JavaEdge

    大道缓存1 缓存特征2 缓存介质3 缓存分类和应用场景缓存实战

    2 Mtconfig实现图 这类缓存实现,优点是能直接在heap区内读写,最快也最方便;缺点同样是受heap区域影响,缓存的数据量非常有限,同时缓存时间受GC影响。 image 图4 缓存数据流转图(L1:本地内存层;L2:Terracotta服务节点层) Ehcache的配置使用如下: <ehcache> <! image 图13 域缓存处理图 如图13,按旧的方案,当cache0发送变化时,为了保持信息的实时更新,需要手动删除cache1、cache2、cache3等相关处的缓存数据。 增加域缓存概念,cache0、cache1、cache2、cache3是以账号ID为基础,相互存在影响约束的集合体,我们作为一个域集合,增加域缓存处理,当cache0发送变化时,整体的账号ID domain 域已发生更新,自动影响cache1、cache2、cache3等处的缓存数据。

    1K21发布于 2018-09-20
  • 来自专栏DannyHoo的专栏

    cell高度的缓存2——利用模型属性缓存

    article/details/53204196 之前的一篇文章(http://blog.csdn.net/u010105969/article/details/53203860)介绍了利用字典缓存 我们如果利用已有的模型进行cell高度的缓存会更简单些。 我们要利用的模型是与cell一一对应的模型。在该模型中增添一个cellHeight的属性用于记录cell的高度。

    64020发布于 2018-09-13
  • 来自专栏c++ 学习分享

    JavaScript变量污染

    JavaScript变量污染 定义全局变量有 3 种方式: 在任何函数体外直接使用 var 语句声明。var f = 'value1'; 直接添加属性到全局对象上。 f = 'value'; 全局变量在全局作用域内都是可见的,因此具有污染性。大量使用全局变量会降低程序的可靠性,用户应该避免使用全局变量。 示例2 使用函数体封装应用程序,这是最常用的一种方法。

    47620编辑于 2023-07-07
  • 来自专栏用户7873631的专栏

    yii2缓存Cache

    LoginForm; class IndexController extends \yii\web\Controller { public function actionSite() { //设置缓存 /*Yii::$app->cache->set("name",666); //获取缓存 echo Yii::$app->cache->get("name");*/ //删除缓存 Yii ::$app->cache->delete("name"); //获取缓存 echo Yii::$app->cache->get("name"); } }

    72210编辑于 2022-03-25
  • 来自专栏cultureSun学安全

    js原型链污染

    js原型链 前两天,做了一道CTF题目,遇到了js原型链污染。 js原型,我的理解,类似于java中的静态属性。 原型链污染 通过修改或者添加其原型链上的原型对象,使其当前对象可以访问到错误或者不具备的属性。 res.json({ msg: 'user created successfully', err: false }) }) JSON.parse()配合Object.assign()可以触发原型链污染 INVITE_CODE) { user.isAdmin = false } let newUser = Object.assign({}, baseUser, user) //触发原型链污染 所以造成了原型链污染

    66310编辑于 2023-12-22
  • 来自专栏hotarugaliの技术分享

    DNS污染和DNS劫持

    DNS 污染 DNS 污染又称 DNS 缓存投毒,通过制造一些虚假的域名服务器数据包,将域名指向不正确的 IP 地址。 image.png 不过由于缓存过期时间的限制,污染的域名不是一成不变的,若某个污染过的域名缓存记录过了缓存过期时间后没有对其进行再污染,则该域名的污染就会消失。 解决办法 绕过被污染的非权威 DNS 服务器,直接访问干净的公共 DNS 服务器。 在本机直接绑定 hosts,绕过 DNS 解析过程。 (该方法也可以绕过 IP 黑名单机制) 2. DNS 劫持 DNS 劫持指 DNS 服务器被控制,用户查询 DNS 时,服务器直接返回它想让你看到的结果(转到劫持者指定的网站)。 常用公共 DNS 服务器地址如下: 名称 DNS 服务器 IP 地址 OpenerDNS 42.120.21.30 阿里 AliDNS 223.5.5.5223.6.6.6 V2EX DNS 199.91.73.222178.79.131.110

    16.3K21编辑于 2022-02-28
  • 来自专栏架构师成长之路

    HTTP详解(2)-请求、响应、缓存

    使用这样的机制将提高网站的性能 例如: If-None-Match: "03f2b33c0bfcc1:0" Pragma: 作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control 所有内容都不会被缓存 2. 1xx:指示信息——表示请求已经接受,继续处理 2xx:成功——表示请求已经被成功接收、理解、接受。 浏览器缓存 浏览器缓存:包括页面html缓存和图片js,css等资源的缓存。如下图,浏览器缓存是基于把页面信息保存到用户本地电脑硬盘里。 2、关于图片,css,js,flash的缓存 这个主要通过服务器的配置来实现这个技术,如果使用apache服务器的话,可以使用mod_expires模块来实现: 编译mod_expires模块: Cd

    3K30编辑于 2022-04-15
  • 来自专栏PHP学习网

    Yii2开启Schema 缓存

    Schema缓存是一个比较特殊的缓存,只有当我们使用活动记录是这个缓存才会生效。 什么是活动记录 活动记录能智能检测数据库对象的集合(例如列名、列类型、约束)而不需要手动地描述它们。 通过启用 Schema 缓存,检索到的数据库对象的集合将被保存在缓存中并在将来的请求中重用。 Schema缓存开启的方法: 要开启Schema缓存,需要配置一个cache应用组件来储存Schema信息,并在配置中设置 yii\db\Connection::enableSchemaCache 为true 'cache' => [ 'class' => 'yii\caching\MemCache', //配置缓存组件,这里用了memcache ], 2、查询语句时若是使用了asArray(),schema缓存是无效的。

    66510编辑于 2022-08-03
  • 来自专栏LoRexxar's Blog

    pwnhub 被污染的Jade

    首先打开题目是比较简单粗暴的模板渲染,再结合题目不难发现题目是node+jade 因为我打开题目已经是下午了,所以基本上打开题目就一直都是报错,大概长这样: 基本也没什么好猜了,直接能看出来就是js原型链污染 ://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html 顺着这样的思路就可以翻翻看jade的代码看看 污染 jade 在之前文章中提到,我们可以通过污染object来影响js中没有设置的变量属性,首先我们就需要找一个没有被设置过但是却很重要的变量,形似与: if(x.xxxxx){ x.xxxxx } 这里是我的第一个思路,通过控制self,然后污染globals,globals会在addwith中直接被拼接进代码中。 不难发现出题人强行写了一个merge,把req.body和{}合并导致了原型链污染,所以传递的对象不能是name,这也是坑了我开始的一大个问题。

    98620编辑于 2023-02-21
  • 深入JavaScript原型链污染

    但是foo1和foo2本身是没有myName方法的,它们都只有一个name属性。 原型链污染 既然我们可以通过 foo.__proto__ 访问到 Foo.prototype ,同时,修改 Foo.prototype 就会影响到 foo. 原型链污染举例 哪些情况下我们可以设置 __proto__ 的值呢? = {a: 1, "__proto__": {b: 2}} merge(o1, o2) console.log(o1.a, o1.b) o3 = {} console.log(o3.b) 这里在赋值的过程中 __proto__.b = 2,但是并不成功 从图中可以看到,o2.__proto__ 已经被解析过一次了,导致不存在 o1.

    58310编辑于 2024-02-04
  • 来自专栏后端JavaEE

    Redis常见问题:1.缓存穿透2.缓存击穿

    1.解决方案(防止mysql宕机) 在Redis中放入 1.假数据 2.set集合,里面放入所有mysql中的id,再通过布隆过滤器过滤,没有这个id的请求就不在mysql中找了 二、缓存击穿 ? 1.解决方案 1.从Redis处理:一个请求,给这个热点数据加一点时间(避免热点数据过期) 2.分布式锁:Tomcat集群synchronized-Tomcat分布式锁-Redis(避免大量数据访问数据库 ) 三、缓存雪崩:MySql宕机 大量Redis中的缓存同时到期了,导致大量的请求透视访问数据库,导致数据库宕机 1.解决方案 同时到期原因:缓存预热,设置时间一样 1.在缓存预热时,设置不一样的生存时间 2.加锁 3.边访问边加生存时间 四、缓存倾斜:Redis宕机 ? 1.解决方案 1.花钱:在请求多的节点,搭建主从 2.将数据放在JVM中缓存中 五、双写一致性问题 ? 1.解决方案 1.双删:先删除Redis缓存,再删Redis缓存 ?

    39630发布于 2020-11-04
  • 来自专栏云原生实验室

    使用 CoreDNS 来应对 DNS 污染

    CoreDNS 除了支持 DNS 协议,也支持 TLS 和 gRPC,即 DNS-over-TLS 和 DNS-over-gRPC 模式: tls://example.org:1443 { #... } 2. 按照什么顺序溯源,由下面的 policy 指令决定; cache : 溯源得到的结果,缓存指定时间。类似 TTL 的概念; reload : 多久扫描配置文件一次。 raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf|awk -F "/" '{print $2} Corefile 的配置: $ /usr/local/bin/update_coredns.sh 然后通过 Crontab 制作定时任务,每隔两天下午两点更新域名列表: $ crontab -l 0 14 */2

    6.7K20发布于 2019-08-29
  • 来自专栏信安之路

    利用 AicLaunchAdminProcess 参数污染 bypass UAC

    AicLaunchAdminProcess 参数污染 先介绍第三十八种方法,该方法利用 mmc.exe 执行自定义的 msc 文件从而在本地或者远程执行任意代码(仅适用于 64 位系统)。 -24a96675f6e 我就简单的介绍一下大致流程,还是在 Appinfo.dll 中,对可信文件进行检查时可以被利用 检查逻辑大体上有三点: 1、清单文件中 autoElevate 为 True 2、 Win8 以上把该功能取消了 2、IFileOperation。动态 Patch PEB 通过 COM 接口实现越权复制文件 3、NTFS reparse point。

    1.9K10发布于 2019-01-23
  • 来自专栏数据科学和人工智能

    数据集 | 印度污染数据集

    下载数据集请登录爱数科(www.idatascience.cn) 数据集包含印度各州的污染数据。 1. 字段描述 2. 数据预览 3. 字段诊断信息 4. 数据来源 来源于Kaggle。

    1.3K20编辑于 2022-03-30
  • 来自专栏mySoul

    解释SpringBoot之Ehcache 2.x缓存

    介绍 这里介绍Ehcache 2.X 缓存 添加基本的web项目 [wp_editor_md_a364d1423e3bdfc4066b7266a02a2393.jpg] 添加Ehcache 依赖 <? diskPersistent="true" diskExpiryThreadIntervalSeconds="600"/> </ehcache> 注解上开启缓存 @CacheConfig(cacheNames = "book_cache") public class BookDao { // 对该方法进行缓存 @Cacheable public public Book updateBookById(Book book){ System.out.println("更新ById"); book.setName("ming2" import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) //导入spring测试框架[2]

    48000发布于 2020-06-20
领券