计算机网络
网络基础TCP/IP模型应用层:HTTP,规定请求和响应的格式,例如 GET /users/1。 传输层:TCP,通过端口区分应用的通信端点,并提供可靠、有序的字节流传输。 网络层:IP,提供地址,让路由器能把数据逐步转发到目标。 网络接口层:以太网、Wi-Fi 等,负责在当前链路上传输数据。 IP 和端口的区别一台服务器上可能同时运行多个程序,比如 Java 后端、MySQL、Redis。请求到达服务器后,还要知道交给哪个程序。 标识 作用 例子 IP 地址 定位目标主机的网络地址 192.168.1.10 端口号 区分主机上的通信端点 Java 服务监听 8080,MySQL 监听 3306 应用层HTTP 是什么?HTTP 是一种应用层协议,规定浏览器和服务器之间,请求与响应应该怎么表达。 比如浏览器发送: 1GET /users/1 HTTP/1.1 这句话表达三个信息: GET:我要获取资源。 /users/1:我要获取编号为 1 的用户。 HTTP/1.1:使用的协议版本。 服务器收到后,按照 HTTP 的规则回复状态码、响应头和用...
前K个高频元素
前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 https://leetcode.cn/problems/top-k-frequent-elements/description/ 思路1:先建立 value —> frequent 映射 2:按照frequent给value排序 3:取前 k 个高频元素放进结果数组返回 12345678910111213141516171819202122232425class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { if (map.containsKey(num)) { ...
场景题
登录认证和权限校验怎么实现?Spring Security + JWT + Redis为例,登录时核实身份,之后每次请求检查登录状态,访问具体接口时再检查权限。 登录1. 用户输入账号、密码、验证码 前端把它们提交给后端的 /login 接口。 2. 后端检查账号密码 先校验验证码,再通过 Spring Security 查询数据库中的用户,检查账号状态,并校验密码。 验证成功后,得到一个 LoginUser,里面包含用户信息和权限。 3. 把登录信息存入 Redis 后端生成一个随机 UUID,作为这次登录的唯一标识,例如 abc123。 Redis 中保存的内容可以理解成: 1login_tokens:abc123 → LoginUser(用户信息、权限等) 同时设置过期时间。 4. 生成 JWT,返回给前端 后端把 abc123 这个登录标识放进 JWT,再签名,返回给前端。 注意区分: JWT:前端拿着的登录凭证。 UUID:JWT 里面的登录标识,用来查 Redis。 LoginUser:Redis 中保存的实际登录信息。 5. 后续请求,前端携带 JWT 比如查...
两数之和,三数之和
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 https://leetcode.cn/problems/two-sum/description/ HashMap 遍历数组,用 HashMap:key = 数组值,value = 下标 对当前元素 nums[i],需要找 c = target - nums[i] 如果 c在 map 里:找到答案,返回 [map.get(c), i] 不在 map:把 nums[i],i 放入 map,继续遍历 12345678910111213141516import java.util.HashMap;import java.util.Map;class Solution { public int[] twoSum(int[] nums, int target) { Map<I...
Spring Cloud
微服务基础与核心概念分布式与微服务的区别? 分布式是一种架构思想(把系统拆分到多台机器);微服务是分布式架构的一种具体实现方案:解耦,一个服务只负责单一业务。微服务一定是分布式,但分布式不一定是微服务。 微服务 vs 单体架构单体架构:所有功能(用户、订单、支付等)打包在一个部署单元中运行。 痛点:代码耦合度极高;只能整体扩容,资源利用率低;一个内存泄漏可能导致整个服务崩溃。 微服务架构:按业务边界拆分为多个独立进程,通过网络通信。 优势:独立部署(发版快)、按需扩容(例如大促时只给订单服务加机器)、技术异构(不同服务可选不同语言)、故障隔离。 劣势:网络延迟与不可靠性、分布式事务一致性问题、链路排查困难、运维成本剧增。 Boot vs Cloud vs Alibaba 技术栈 核心定位 解决的问题 Spring Boot 快速构建单个后端应用 通过“约定大于配置”消除繁琐的 XML,帮你快速启动一个独立的 Java Web 服务。 Spring Cloud 微服务全局治理“全家桶” 定义了服务发现、网关、负载均衡等一整套标准和接口,它依赖 Spring B...
