- Java八股文九:Redis
m78探索者
java八股文
文章目录九、Redis1、数据类型2、Redis如何实现key的过期删除?3、Redis的持久化机制4、如何解决Redis缓存雪崩和缓存穿透?5、如何使用Redis实现消息队列?九、Redis1、数据类型String常用命令:set,get,decr,incr,mget等。Hash常用命令:hget,hset,hgetall等List常用命令:lpush,rpush,lpop,rpop,lrang
- redis的两种持久化方式
kse_music
#DBredis数据库缓存
目录一、RDB模式二、AOF模式三、缓存穿透雪崩穿透四、接口幂等性一、RDB模式RDB机制的优势和略施RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照,下面是默认的快
- OLAP与OLTP:数据处理系统的两种核心架构
思静鱼
#Mysql-数据库架构
文章目录OLAP和OLTP的主要区别OLAP常见数据库和OLTP常见数据库OLAP是英文OnlineAnalyticalProcessing的缩写,中文称为联机分析处理。它是一种基于多维数据模型的分析处理技术,用于从不同的角度进行数据挖掘和分析,以帮助用户快速发现数据之间的相关性和趋势。OLAP技术通常涉及到预计算、缓存和查询优化等方面的技术,可用于构建在线分析系统(OLAP系统)。该系统将大量的
- PHP的模板引擎一共包含哪些部分?使用场景是什么?底层原理是什么?
快点好好学习吧
PHPphpjava开发语言
一、PHP模板引擎的组成部分1.核心定义模板引擎:模板引擎是一种工具,用于将动态数据嵌入到静态HTML模板中,生成最终的HTML输出。主要组件:模板文件:包含HTML和占位符(如{{variable}})的文件。解析器:将模板文件中的占位符替换为实际数据。渲染器:将解析后的模板内容输出为最终的HTML。缓存机制:缓存编译后的模板以提高性能。二、使用场景1.常见使用场景Web开发:动态生成网页内容(
- React基础之useMeno
青红光硫化黑
react.jsjavascript前端
作用:在组件每次重新渲染的时候缓存计算的结果import{useReducer,useState}from"react";functionfib(n){console.log('开始计算');if(nthisisapp,{setCount1(count1+1)}}>changecount1:{count1}{setCount2(count2+1)}}>changecount2:{count2}{r
- Vue3 中 Computed 用法
m0_61618849
vue.js前端javascript
Computed又被称作计算属性,用于动态的根据某个值或某些值的变化,来产生对应的变化,computed具有缓存性,当无关值变化时,不会引起computed声明值的变化。产生一个新的变量并挂载到vue实例上去。vue3中的computed的使用,由于vue3兼容vue2的选项式API,所以可以直接使用vue2的写法,以下是vue3中computed的写法和vue2中的写法的对比。组合式API中使用
- 基于Spring Boot的多级缓存架构实现
天才选手Yoke
springbootjavaspringboot缓存架构
基于SpringBoot的多级缓存架构实现以下是一个基于SpringBoot的多级缓存架构实现示例多级缓存架构实现方案1.依赖配置(pom.xml)org.springframework.bootspring-boot-starter-cachecom.github.ben-manes.caffeinecaffeineorg.springframework.bootspring-boot-star
- 第八课:性能优化与高并发处理方案
deming_su
Nodejs性能优化node.jsnginx
Node.js作为一种基于事件驱动、非阻塞I/O模型的JavaScript运行环境,广泛应用于高并发、实时性强的应用开发。然而,随着业务需求的不断增长,如何在Node.js中高效地处理大量并发请求、优化性能,成为了开发者必须面对的重要课题。本文将详细介绍Node.js性能优化与高并发处理的几种关键方案,包括使用Cluster模块多进程优化、Redis缓存加速数据查询、负载均衡与Nginx反向代理,
- Redis+Guava(二级缓存,Caffeine)
yan0219n
工具redisguava缓存
/***本地缓存*/privateCachelocalCache=CacheBuilder.newBuilder().concurrencyLevel(16)//并发级别.initialCapacity(1000)//初始容量.maximumSize(1000)//缓存最大长度.expireAfterAccess(1,TimeUnit.HOURS)//缓存1小时没被使用就过期.build();Ca
- Guava本地缓存的使用
肥肥肥柯
guavaredisjava
Guava和Redis实现二级缓存1、目的本地缓存为什么不使用hashMap或者concurrentHashMap?concurrentHahMap和hashMap一样,都是长期存在的缓存,除非调用remove方法,否则缓存中的数据无法主动释放。仅使用Guava本地缓存会有什么问题?作为API或者某种功能系统来用的话,无论单机/集群(集群其实就形成了近乎Guava副本的情况),Guava中的数据增
- linux文件io实训小结,linux学习之IO操作,文件IO总结
weixin_39743064
linux文件io实训小结
文件IO不带缓存,每个read和write都调用内核中的相应系统调用。文件IO常用函数:open,close,read,write,lseek对于内核而言,所有打开文件都有文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,你诶和向进程返回一个文件描述符。当读、写一个文件时,用open返回的文件描述符标识该文件,将其作为参数传给read或write。1.open(被打开
- Redis 的过期策略与内存淘汰机制
I~Lucky
redis数据库缓存
摘要:Redis作为高性能的键值存储系统,其过期策略和内存淘汰机制是保证数据时效性和内存高效利用的核心功能。一、Redis过期策略1.1过期策略的作用Redis允许为键设置过期时间(TTL,TimeToLive),过期策略用于在键过期后自动删除数据,确保缓存中的数据不会长期存在而过时。1.2过期策略的实现方式Redis通过以下两种方式实现过期键的删除:1.2.1定期删除(ActiveExpirat
- Spring Boot笔记
@卡卡-罗特
springboot笔记后端
01概要SpringBoot是Java领域最流行的快速开发框架,专为简化Spring应用的初始搭建和开发而设计。一、SpringBoot解决了什么问题?传统Spring痛点•繁琐的XML配置•需要手动管理依赖版本•部署依赖外部Web服务器(如Tomcat)SpringBoot的答案•约定优于配置:自动配置80%的默认设置•内嵌服务器:直接打包成可执行JAR•起步依赖:一键集成常用技术栈(如数据库、
- TongWeb和Tomcat的区别
encoding-console
java
TongWeb和Tomcat的区别东方通中间件TongWeb5.0为SOA实现提供了一个完善的企业级应用服务器|支持面向服务架构的开发和部署|通过可靠消息传递基础架构为业务提供事件平台|通过简化、可靠的管理功能降低客户的项目成本|为核心应用提供真正的“零宕机”服务性能:有良好的服务性能(tongweb5.0版本在4.6版本的基础上进行了性能的提升)规范支持:|TongWeb5.0全面支持J2EE5
- 深度学习-Android-图片加载框架-Glide-(二)-切入源码层深入分析-Glide-缓存策略
2401_84123077
程序员androidglide缓存
介绍在上一篇中,我们知道了Glide框架的最基本的执行流程,那么只知道基本执行流程,这显然是不够的,我们要深挖Glide框架的细节处理原理,比如缓存机制,图片处理等,这一篇我们就一起去探索Glide的缓存机制。Glide缓存机制可以说是设计的非常完美,考虑的非常周全,下面就以一张表格来说明下Glide缓存。缓存类型缓存代表说明活动缓存ActiveResources如果当前对应的图片资源是从内存缓存
- Android Glide 配置与初始化模块源码深度剖析
&有梦想的咸鱼&
Android开发大全androidglide
一、引言在Android开发中,图片加载是一个常见且重要的功能。Glide作为一款强大的图片加载库,因其高效、灵活和易于使用的特点,被广泛应用于各种Android应用中。Glide的配置与初始化模块是整个库的基础,它允许开发者根据不同的需求对Glide进行定制化设置,如缓存策略、图片解码格式、自定义组件等。本文将深入Glide源码,详细剖析其配置与初始化模块的实现原理和工作流程。二、配置与初始化模
- Android Glide 缓存模块源码深度解析
&有梦想的咸鱼&
androidglide缓存
一、引言在Android开发领域,图片加载是一个极为常见且关键的功能。Glide作为一款被广泛使用的图片加载库,其缓存模块是提升图片加载效率和性能的核心组件。合理的缓存机制能够显著减少网络请求,降低流量消耗,同时加快图片显示速度,为用户带来流畅的使用体验。本文将深入Glide缓存模块的源码,从整体架构到具体实现细节,全方位剖析其工作原理。二、Glide缓存模块概述2.1缓存的重要性在移动应用中,图
- Redis 架构师核心知识掌握概览
将臣三代
Redisredis数据库缓存
作为架构师,掌握Redis的核心知识点和学习内容是非常重要的,因为Redis是一个高性能的键值存储系统,广泛应用于缓存、会话管理、消息队列等场景。以下是关于Redis需要学习和掌握的核心知识点:核心知识点基础概念:数据结构:了解Redis支持的五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(SortedSet)。命令操作:熟悉常用的Redis
- 手写tomcat+servlet,浅析原理
小新的蜡笔不见了
Tomcattomactservlet
手写tomcat+servlet,浅析原理概念逻辑手写实现便于管理我就在资源文件夹新建property.properties文件,可以设置端口新建servlet之前可定要先定义Request和Response新建Myservlet,在这之前写一个servlet吧,毕竟有些方法每次都要用需要用到的工具类重头戏回顾最近回头看了servlet,写了一个简易版的tomcat+servlet。代码都上传到了
- 【vLLM 教程】使用 TPU 安装
vLLM是一款专为大语言模型推理加速而设计的框架,实现了KV缓存内存几乎零浪费,解决了内存管理瓶颈问题。更多vLLM中文文档及教程可访问→https://vllm.hyper.ai/vLLM使用PyTorchXLA支持GoogleCloudTPU。依赖环境GoogleCloudTPUVM(单主机和多主机)TPU版本:v5e、v5p、v4Python:3.10安装选项:href="https://v
- 从零手写Tomcat核心架构:构建简易Servlet容器实战指南
bigH2004
tomcat架构servlet
一、自研Tomcat的意义与核心目标在当今分布式架构盛行的时代,理解Web容器底层原理是突破中间件黑盒的关键。本文将基于HTTP协议与Servlet规范,实现一个具备基础Servlet动态请求处理能力的精简版Tomcat(命名为MiniCat),其核心架构目标包括:HTTP通信层:实现TCP连接管理和基础报文解析生命周期管理:支持Servlet的init-service-destroy流程请求分发
- Tomcat服务器
小布不吃竹
tomcat服务器java
目录一、bin目录二、conf目录三、lib目录四、logs目录五、temp目录六、webapps目录七、work目录Tomcat,作为JavaWeb应用的首选容器,其安装包内包含了一系列精心设计的目录和文件,这些组件共同协作,确保了Tomcat的稳定运行和高效管理。以下是Tomcat安装包目录结构的详细解析,以及各目录的功能扩展说明。一、bin目录位置:Tomcat安装包的根目录下功能:存放To
- 基于SpringBoot农产品智慧物流系统的设计与实现
四金学长
计算机毕业设计参考案例springboot后端java农产品智慧物流系统
1.引言在当今的软件开发领域,企业级应用的开发和部署速度直接影响着业务的竞争力。SpringBoot以其轻量级、快速启动和强大的集成能力,成为构建现代企业级应用的首选框架。本文将带您深入了解SpringBoot框架的核心特性,并展示如何利用它构建一个高效、可扩展的系统。2.开发环境开发语言:Java框架:springbootJD版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定
- 如何自定义协议
kshzhaohui
后端java
前言何为自定义协议,其实是相对标准协议来说的,这里主要针对的是应用层协议;常见的标准的应用层协议如http、ftp、smtp等,如果我们在网络通信的过程中不去使用这些标准协议,那就需要自定义协议,比如我们常用的RPC框架(dubbo,thrift),分布式缓存(redis,memcached)等都是自定义协议;本文就来讲讲如何去自定义私有协议,在此之前我们先考虑一下为什么要自定义协议。为什么要自定
- Cache在嵌入式处理器中的使用问题
zhtek
OperatingSystemcache嵌入式存储嵌入式操作系统出版工作
Cache在嵌入式处理器中的使用问题作者:西北工业大学王艳吴旭光赵勋峰随着嵌入式计算机应用的发展,嵌入式CPU的主频不断提高,这就造成了慢速系统存储器不能匹配高速CPU处理能力的情况。为了解决这个问题,许多高性能的嵌入式处理器内部集成了高速缓存Cache。其中,三星公司的S3C44B0X内部就集成了8KB空间统一的指令和数据Cache。Cache即高速缓冲存储器,是位于CPU与主存之间一种容量较小
- 解决 Redis 热 Key 问题的方法
阿贾克斯的黎明
javaredis
在Redis中,热Key是指被频繁访问的键。热Key问题可能会导致Redis性能下降,甚至影响整个系统的稳定性。以下是一些解决Redis热Key问题的方法:一、使用本地缓存1.原理-在客户端或应用服务器层面使用本地缓存,将热Key的值缓存到本地内存中。当再次访问该Key时,先从本地缓存中获取,如果本地缓存中没有,再从Redis中获取。-这样可以减少对Redis的访问次数,降低Redis的负载。2.
- HTTP协议详解(一)
凉菜凉凉
http网络协议网络
GET和POST的请求的区别Post和Get是HTTP请求的两种方法,其区别如下:应用场景:GET请求是一个幂等的请求,一般Get请求用于对服务器资源不会产生影响的场景,比如说请求一个网页的资源。而Post不是一个幂等的请求,一般用于对服务器资源会产生影响的情景,比如注册用户这一类的操作。是否缓存:因为两者应用场景不同,浏览器一般会对Get请求缓存,但很少对Post请求缓存。发送的报文格式:Get
- 深入理解CPU缓存:性能优化的关键
深度Linux
Linux内存管理C/C++全栈开发性能优化linuxC/C++
CPU作为计算机的核心部件,其缓存结构犹如一座高效的数据桥梁,在提升计算机性能方面发挥着关键作用。而原子操作,则以其独特的不可分割性,为程序的正确性和稳定性提供了坚实的保障。在接下来的时间里,我们将逐步揭开CPU缓存结构的神秘面纱,深入了解其工作原理和设计理念。同时,我们也将一同探寻原子操作的奥秘,明白它在多线程编程等场景中的重要意义。让我们共同开启这场充满智慧与挑战的科技之旅。一、初识CPU缓存
- 【Redis 系列】Redis 常问简单面试题
msbQQ
javaredis经验分享
咱们一起来看看redis常问常用的面试题Redis是个啥?http://www.redis.cn/redis中文网给了很明确且清晰的定义[图片上传失败...(image-ff92fa-1650460734395)]Redis是一个开源(BSD许可)的,内存中的数据结构存储系统Redis可以用作数据库、缓存和消息中间件支持的数据结构有8种字符串(strings),散列(hashes),列表(list
- Redis常问八股(一)
华东设计之美
java学习redis数据库缓存
1.什么是缓存穿透?怎么解决?答:缓存穿透是指查询一个一定不存在的数据,由于存储层查不到数据因此不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案的话,通常都会用布隆过滤器来解决它。2.你能介绍一下布隆过滤器吗?答:布隆过滤器主要是用于检索一个元素是否在一个集合中。可以使用Redisson实现的布隆过滤器。它的底层原理是,先初始化一
- jvm调优总结(从基本概念 到 深度优化)
oloz
javajvmjdk虚拟机应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
- 【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
- HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java更新swingJTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
- servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
- FineReport的公式编辑框的语法简介
老A不折腾
finereport公式总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
- linux mysql 数据库乱码的解决办法
墙头上一根草
linuxmysql数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
- 我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
- mysql 基准测试之sysbench
annan211
基准测试mysql基准测试MySQL测试sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
- sql的复杂查询使用案列与技巧
百合不是茶
oraclesql函数数据分页合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
- 深入学习Thread类
bijian1013
javathread多线程java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
- JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
javafastjsonnet.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
- 【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
- 【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
- nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
- java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtilsBeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
- [金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
- vi区段删除
Cwind
linuxvi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行