3A网络 3A网络
2年前
缓存三大问题及解决方案
1.缓存来由随着互联网系统发展的逐步完善,提高系统的qps,目前的绝大部分系统都增加了缓存机制从而避免请求过多的直接与数据库操作从而造成系统瓶颈,极大的提升了用户体验和系统稳定性。2.缓存问题虽然使用缓存给系统带来了一定的质的提升,但同时也带来了一些需要注意的问题。2.1缓存穿透缓存穿透是指查询一个一定不存在的数据,因为缓存中也无该数据的信息,则会
九章 九章
3年前
一 java线程的等待/通知模型
java中线程之间的通信问题,有这么一个模型:一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行相应的操作,整个过程开始于一个线程,而最终执行又是另一个线程。前者是生产者,后者就是消费者,也可以叫做生产者消费者问题生产者生产了产品,如何通知消费者?下面就介绍下java线程中的等待通知机制。其它语言类似,自行研究。代码附上下面是以买小
专注IP定位 专注IP定位
3年前
“挂图作战”技术篇之网络测量
随着互联网的不断发展,网络由最初的单纯数据传送发展到多媒体信息传送。这一演变过程就使得网络流量的形式发生了极大的变化。许多专家提出应当更加深入地认识现有互联网的内在机制,而认识事物的第一步就是要测量它,并用数字表示出来。由此,“网络测量”这个研究领域应运而生。网络测量的概念人们对网络进行研究的最终目的是为了建立高效、稳定、安全、互操作性强、可预测以及可控制
Tommy744 Tommy744
3年前
你的远程仓库总是拉不到包,一个小妙招教你解决
Artifactory作为外网代理仓库时,用户有时候是否会有经常拉不到包最新版本的包?或者拉包失败后一段时间内始终是失败,找不到原因,过了一会自己又恢复了?这篇文档带你详细了解一下代理仓库一些策略配置,让你更好的了解仓库的机制。场景1:拉包失败后一直重复同样的错误有一种情况是当你去请求一个不再缓存中的包时候,由于当时可能不确定的原因出现了失败的情况,
Wesley13 Wesley13
3年前
U盘拷贝者MBR勒索木马分析
去年7月左右,一个著名安全媒体发布了一篇关于U盘拷贝者MBR勒索木马的分析报告,传播和影响较大。出于技术的探索欲以及内心的责任感,我们也分析了该木马样本。在原分析的基础上,我们纠正了一些关于勒索解密机制的错误。更有趣的是,我们发现该样本暴露了不少情报线索。进而通过层层深挖,可以对犯罪嫌疑人进行有效溯源。目前犯罪嫌疑人已经被江西九江警方缉拿归案
Stella981 Stella981
3年前
Spring Cloud分布式微服务云架构源码分析 — Eureka
在看具体源码前,我们先回顾一下之前我们所实现的内容,从而找一个合适的切入口去分析。首先,服务注册中心、服务提供者、服务消费者这三个主要元素来说,后两者(也就是Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者,而注册中心主要是处理请求的接收者。所以,我们可以从Eureka的客户端作为入口看看它是如何完成这些主动通信行为的。我们在将一个普通的
Wesley13 Wesley13
3年前
Java并发系列3
考虑这样的场景:我司出了一款新游戏,因模式新颖、宣传到位,导致游戏开服火爆,每次新开一个服务器就会一下涌入大量玩家。假如一个线路服务器的承载力上限是5000,那么我们该通过什么机制进行资源调配呢?比较容易想到的方法就是给每个玩家发许可证,同时一个服务器的许可证上限为5000,这样的话,许可证超出上限则玩家需要排队。今天我们讲的并发工具就如同代码层
Wesley13 Wesley13
3年前
C++多态性与虚函数
  派生一个类的原因并非总是为了继承或是添加新的成员,有时是为了重新定义基类的成员,使得基类成员“获得新生”。面向对象的程序设计真正的力量不仅仅是继承,而且还在于允许派生类对象像基类对象一样处理,其核心机制就是多态和动态联编。(一)多态性  多态是指同样的消息被不同的对象接收时导致不同的行为。所谓消息是指对类成员函数的调用,不同的行为是指的不同的实现
Stella981 Stella981
3年前
GOT段在linux系统中实现代码动态加载的作用和其他段的说明
上一节我们看到,当程序想调用系统函数时,在编译阶段无法确认被调用函数所在的虚拟地址。因此必须有机制让程序在运行过程中,在调用系统API的时候有办法去确定所调用的系统函数对应的入口地址,这就是代码运行时对应动态加载的过程。动态加载,也就是在调用系统函数时再去确认所调用的函数地址的技术需要使用两个段,一个是.plt段,一个是.got.plt段。后者其实是.g
Stella981 Stella981
3年前
MariaDB自动分区维护
最近遇到一个问题,就是如何自动删除6个月之前的旧的分区。就MariaDB而言,并没有类似机制,可以让我们开箱即用,去完成这件事情。所以我们需要换一种思路,或许问题就可以很简单的被解决。我们可以创建一个存储过程和一个事件,然后按照预定的时间表来调用这个存储过程。实际上,我们还可以进一步创建一个存储过程,让该过程自动添加新的分区。在本篇文章中,我们将展示如何