avatar
文章
491
标签
109
分类
29
首页
归档
分类
标签
关于
xhj的博客
首页
归档
分类
标签
关于

xhj的博客

Caching
发表于2025-01-03|Backend Dev
什么是缓存?缓存是一种机制,旨在通过在高速存储层中存储数据子集来减少延迟和计算开销。这使得对该数据的后续请求的处理速度比从其主要(且速度较慢)源获取数据的速度快得多。 现实世界的例子 平台 使用案例 效益 谷歌搜索 缓存常见查询的结果(例如“天气”) 避免为每次搜索重新运行昂贵的排名算法 Netflix 边缘站点的 CDN(内容交付网络) 通过从最近的服务器提供视频来最大限度地减少缓冲 X(推特) 将“热门话题”存储在 Redis 等内存存储中 避免实时分析数十亿条推文 🌦 缓存 Google 天气数据此示例演示了用于处理缓慢变化数据的高频请求的**Cache-Aside(延迟加载)**策略。 🛠 工作流程 用户请求: 用户搜索“伦敦天气” 缓存查找: 后端检查 Redis(内存存储) 是否有键 weather_london 缓存命中:找到数据→在<1ms内返回 **缓存未命中:**数据丢失/过期 → 转到步骤 3 Heavy Lift: 从 外部天气 API(例如 OpenWeather)获取新数据 慢(~500ms) 每...
Benefits
发表于2025-01-02|Backend Dev
从第一原理学习后端工程的好处假设您是一名软件工程师,并且您被分配到修复大型生产代码库中后端错误的任务。 您可能会面临几个挑战: 后端语言或框架可能不熟悉 代码库可能庞大且复杂 可能没有明确的起点 您必须遵循现有的架构和标准 你无法承担破坏生产系统的后果 或者想象一下您被要求从头开始构建一个 API。问题立即出现: 我应该从哪里开始? 我应该如何构建代码? 我如何遵守公司标准? 我如何设计它以实现可扩展性和可维护性? 现在考虑另一种情况:您主要使用 TypeScript 或 Go,但是您需要修复的错误是用 FastAPI 或其他不熟悉的堆栈编写的。逐行阅读文档既缓慢又低效。 这就是从第一原理学习后端变得强大的地方。 从第一原理学习意味着什么?从第一原理学习意味着理解后端系统的核心是如何工作的,而不是记住语法、框架或库。 它的重点是: 请求如何流经系统 数据如何验证、处理和存储 不同后端组件如何交互 为什么系统以某种方式设计 主要优点1. 纵观全局的能力而不是迷失在复杂的代码库中,您可以在心里将系统分解为以下组件: 路由 控制器 服务 中间件 数据库层 您开始识别模式...
AuthenticationAndAuthorization
发表于2025-01-01|Backend Dev
基础 身份验证(AuthN):“你是谁?” (身份)。 授权 (AuthZ): “你可以做什么?” (权限)。 📦 关键技术1. 会话(有状态) 它是什么:会话是一种服务器端机制,用于在无状态协议中跨多个 HTTP 请求记住用户。 它是如何工作的: 用户使用凭据登录。 服务器验证凭据并创建会话。 服务器将会话数据(例如,用户 ID、角色、登录状态)存储在 Redis/DB/内存中。 服务器通过 cookie 向客户端发送 session_id。 对于每个后续请求(例如,/profile),浏览器会自动通过 cookie 将 session_id 发送回服务器。 服务器验证 session_id、检索会话数据并授权用户。 机制:服务器将会话数据存储在Redis/DB/内存中;客户端仅将 session_id 存储在 cookie 中。 用例:需要高安全性、服务器端控制和即时会话撤销的 Web 应用程序(例如登录系统、管理面板、仪表板)。 优点: 安全(敏感数据保留在服务器上) 易于使会话失效(...
为什么动态代理对象proxy的System.out.println(proxy)与System.out.println(proxy.getClass)的输出结果不同
发表于2024-12-25|Java
为什么动态代理对象proxy的System.out.println(proxy)与System.out.println(proxy.getClass)的输出结果不同起因在学习Spring的AOP面向切面编程时,有这么一个例子 Calculator接口 123456public interface Calculator { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b);} Calculator的实现类 123456789101112131415@Servicepublic class CalculatorImpl implements Calculator { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { re...
tomcat-note
发表于2024-12-24|Java
Tomcat NoteServlet 容器和 Spring/SpringMVC 容器之间的关系Tomcat&Jetty 在启动时给每个 Web 应用创建一个全局的上下文环境,这个上下文就是 ServletContext,其为后面的 Spring 容器提供宿主环境。 Tomcat&Jetty 在启动过程中触发容器初始化事件,Spring 的 ContextLoaderListener 会监听到这个事件,它的 contextInitialized 方法会被调用,在这个方法中,Spring 会初始化全局的 Spring 根容器,这个就是 Spring 的 IoC 容器,IoC 容器初始化完毕后,Spring 将其存储到 ServletContext 中,便于以后来获取。 Tomcat&Jetty 在启动过程中还会扫描 Servlet,一个 Web 应用中的 Servlet 可以有多个,以 SpringMVC 中的 DispatcherServlet 为例,这个 Servlet 实际上是一个标准的前端控制器,用以转发、匹配、处理每个 Servlet 请求...
ssm-code
发表于2024-12-23|Java
SSM整合复用代码片段pom.xml12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&q...
springmvc-notes
发表于2024-12-22|Java
SpringMVC笔记SpringMVC简介Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的 MVC 框架之一 SpringMVC属于Spring框架中的web模块 HelloWorld流程:1 导包 1234567891011121314日志记录commons-logging-1.1.3.jar支持注解spring-aop-4.0.0.RELEASE.jarSpring核心容器模块spring-beans-4.0.0.RELEASE.jarspring-context-4.0.0.RELEASE.jarspring-core-4.0.0.RELEASE.jarspring-expression-4.0.0.RELEASE.jarSpring Web模块spring-web-4.0.0.RELEASE.jarspring-webmvc-4.0.0.RELEASE.jar 2 写配置 配置springmvc的前端控制器,指定springmvc配置文件位置 WEB-INF/web.xml: 12345678910111213141...
springcloud-note
发表于2024-12-21|Java
Spring Cloud NoteEurekaEureka ServerEureka Server Startup Class1234567@SpringBootApplication@EnableEurekaServerpublic class EurekaMain7002 { public static void main(String[] args) { SpringApplication.run(EurekaMain7002.class, args); }} Eureka Server POM1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency> Eureka Server applicatio...
spring-notes
发表于2024-12-20|Java
Spring 笔记Spring模块 pom配置1234567<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.4.RELEASE</version> </dependency></dependencies> IOC/DIIOC:(Inversion(反转) Of Control) 控制反转 控制: 资源的获取方式:主动式:创建需要的对象 1Person person = new Person(); 被动式:资源的获取不是我们自己创建,而是交给一个容器来创建和设置 123456BookServlet{ BookService bs; public void test0...
mybatis-plus-notes
发表于2024-12-19|Java
Mybatis Plus 笔记Mybatis Plus 介绍框架结构 特性 无入侵、损耗小、强大的 CRUD 操作 支持Lambda形式调用、支持多种数据库(MySQL、Oracle) 支持主键自动生成、支持 ActiveRecord 模式 支持自定义全局通用操作、支持关键词自动转义 内置代码生成器、内置分页插件、内置性能分析插件 内置全局拦截插件、内置 SQL 注入剥离器 HelloWorld 执行建表 SQL 12345678910111213141516171819# 创建用户表CREATE TABLE user ( id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键', name VARCHAR(30) DEFAULT NULL COMMENT '姓名', age INT(11) DEFAULT NULL COMMENT '年龄', email VARCHAR(50) DEFAULT NULL COMMENT '邮箱', ...
1…313233…50
avatar
xhj
相关学习笔记
文章
491
标签
109
分类
29
Follow Me
公告
欢迎来到我的博客
最新文章
Multi-Agent2026-06-03
Multi-Agent vs Single-Agent2026-06-02
Harness Engineering2026-06-01
25-架构模式总结2026-05-25
24-Skill-Plugin开发实战2026-05-24
分类
  • AI Agent40
  • Algorithm20
  • Backend Dev74
  • Big Data2
  • C/C++2
  • Claude Code71
  • Computer Basics18
  • Computer Network2
标签
Netty PyG Stacking Pandas Neural Networks PCA Maven Tornado PCV RabbitMQ Claude Code Heap Memory Tree dijkstra Redis GAT MySQL Computer Basics JVM Architecture Linear Regression List Kruskal Algorithm Object Identification Message Queue Gradient descent HBOS LOF Grid search OSI Embedding OLSE Prim NMF DataFrame AI Agent Kafka GNN Thread Compilation
归档
  • 六月 2026 3
  • 五月 2026 25
  • 四月 2026 16
  • 三月 2026 20
  • 二月 2026 10
  • 一月 2026 22
  • 十二月 2025 15
  • 十一月 2025 19
网站信息
文章数目 :
491
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By xhj框架 Hexo 8.1.2|主题 Butterfly 5.5.4