当前位置: 首页 > news >正文

【刷题】第三弹——二叉树篇(上)

文章目录

  • 一.相同的树
  • 二. 另一棵树的子树
  • 三. 翻转二叉树
  • 四. 对称二叉树
  • 五. 平衡二叉树
  • 六. 二叉搜索树
  • 七. 二叉树的遍历

一.相同的树

检查两棵树是否相同
在这里插入图片描述

思路:
1.先比较结构 结构不一样直接false
2.结构一样,在比较值

public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null && q==null){ //两个都是空一样return true;}if(p!=null && q==null || p==null && q!=null){//结构不一样return false;}if(p.val!=q.val){//到这里结构一样 开始判断值return false;}return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);//递归 判断左子树和右子树}

二. 另一棵树的子树

另一颗树的子树
在这里插入图片描述
在这里插入图片描述

关于检查root和subRoot是否具有相同的结构和节点值,这个思路和我们上道题是一样的
我们可以直接使用isSameTree()函数
不过后面的递归要注意,不能再用isSameTree(),后面的递归不知是需要isSameTree(),需要的是整个subTree()
首先:判断子树和根节点是否一样? 一开始就是14 和 4 比较就没必要继续向下比较了
再者:判断子树是否和当前root的左子树一样?
最后:判断子树是否和当前root的右子树一样?

public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root==null){return false;}if(isSameTree(root,subRoot)) return true;if(isSubtree(root.left,subRoot))  return true;if(isSubtree(root.right,subRoot))  return true;return false;}public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null && q==null){ //两个都是空一样return true;}if(p!=null && q==null || p==null && q!=null){//结构不一样return false;}if(p.val!=q.val){//到这里结构一样 开始判断值return false;}return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);//递归 判断左子树和右子树}

满足条件就返回true 确实是子树 所有条件都不满足,就不是子树
分析复杂度
时间复杂度:O(m*n),这里的m和n分别是主树root和子树subRoot的节点数量 最坏的情况root的每个节点都要判断才能确定是不是子树
空间复杂度:O(max(m,n)),递归的深度取决于树的高度,最坏情况下树退化为链表,递归深度为树的节点数

三. 翻转二叉树

翻转二叉树
在这里插入图片描述
在这里插入图片描述

思路:前序遍历使每一个root的左右节点都交换,临时变量tmp帮助完成交换 最后返回整颗树

正确代码:

public TreeNode invertTree(TreeNode root) {if(root==null){return null;}if(root.left==null && root.right==null){return root;//空了不用向后互换了 提升一点点效率}TreeNode tmp=root.left;root.left=root.right;root.right=tmp;invertTree(root.left);invertTree(root.right);return root;}

四. 对称二叉树

对称二叉树
在这里插入图片描述

结构不一样 肯定不是轴对称
要判断整棵树是不是轴对称 就要判断root.left 和 root,right 是不是轴对称
判断左子树和右子树结构一不一样,对应的值一不一样
1.再判断左子树的左树和右子树的右树,是否轴对称
2.左子树的右树和右子树的左树,是否轴对称

在这里插入图片描述
题目中给的函数只有一个参数,我们要左右子树一起对比才能知道对不对称,所以我们添加一个子函数,传入两个参数解决问题

//子函数
public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree) {if(leftTree == null && rightTree == null) {return true;}if(leftTree != null && rightTree == null || leftTree == null && rightTree != null) {return false;}if(leftTree.val != rightTree.val) {return false;}return isSymmetricChild(leftTree.left,rightTree.right)&& isSymmetricChild(leftTree.right,rightTree.left);}


完整代码:

public boolean isSymmetric(TreeNode root) {if(root==null){return true;}return isSymmetricChild(root.left,root.right);//利用子函数比较左子树右子树}public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree) {if(leftTree == null && rightTree == null) {return true;}if(leftTree != null && rightTree == null || leftTree == null && rightTree != null) {return false;}if(leftTree.val != rightTree.val) {return false;}return isSymmetricChild(leftTree.left,rightTree.right)&& isSymmetricChild(leftTree.right,rightTree.left);}

五. 平衡二叉树

平衡二叉树
在这里插入图片描述

平衡二叉树就是每一个节点的左右子树高度差不能超过1

在这里插入图片描述

思路:使用前序遍历 遍历树的所有节点,求每个节点的左右树的高度差,h>=2,返回false &&root的左树 && root的右树 也都要是平衡的
从这里我们可以想到一个改进的点 我们这里说的是 root的左树 和root的右树也要是平衡的 我们遍历的过程中 是不是发现不平衡可以直接返回false ,这样可以大大提高时间复杂度 ,这也是字节的面试原题

我们先用第一种方法:

public boolean isBalanced(TreeNode root) {if(root==null){return true;}//我们需要求绝对值 先判断左树的高度不为负 int leftH=getHeight(root.left);int rightH=getHeight(root.right);int h=Math.abs(leftH-rightH);// if(h>=2){//     return false;// }return Math.abs(leftH-rightH)<2 && isBalanced(root.left)&&isBalanced(root.right);}//求高度public int getHeight(TreeNode root){if(root==null){return 0;}int leftHeight=getHeight(root.left);int rightHeight=getHeight(root.right);return Math.max(leftHeight,rightHeight)+1;}

这就是我们思路中说的,利用前序遍历,求每个节点的左树右树的高度差其中会有很多的重复计算高度,h<=2,&&左树平衡,&&右树平衡
分析一下时间复杂度:已经达到了O(n^2)
如果我就规定必须在时间复杂度为O(n),完成判断是否是平衡二叉树
该怎么办,其实在**&&左树平衡,&&右树平衡 的过程中,就会发生不平衡**,没必要进行到计算高度差,也就是一旦不平衡我们高度上就返回 -1 标记一下 ,后面再加上一些判断就可以不用进行后面的递归了

 public boolean isBalanced(TreeNode root) {if(root==null){return true;}//我们需要求绝对值 先判断左树的高度不为负 int leftH=getHeight(root.left);int rightH=getHeight(root.right);int h=Math.abs(leftH-rightH);// if(h>=2){//     return false;// }if(leftH<0){return false;}//左树算高度时就已经不平衡了return Math.abs(leftH-rightH)<2 && isBalanced(root.left)&&isBalanced(root.right);}//求高度public int getHeight(TreeNode root){if(root==null){return 0;}int leftHeight=getHeight(root.left);int rightHeight=getHeight(root.right);if(leftHeight<0){return -1;}if(rightHeight>=0 && Math.abs(leftHeight-rightHeight) <= 1){//保证了不会因为右树的左子树返回-1而造成的 符合高度差return Math.max(leftHeight,rightHeight)+1;}else{return -1;}}

以上就是时间复杂度为O(n)的写法
我们放到IDEA中详细解释

在这里插入图片描述
完整代码:

public boolean isBalanced(TreeNode root) {if(root==null){return true;}//我们需要求绝对值 先判断左树的高度不为负 int leftH=getHeight(root.left);int rightH=getHeight(root.right);int h=Math.abs(leftH-rightH);// if(h>=2){//     return false;// }if(leftH<0){return false;}//左树算高度时就已经不平衡了return Math.abs(leftH-rightH)<2 && isBalanced(root.left)&&isBalanced(root.right);}//求高度public int getHeight(TreeNode root){if(root==null){return 0;}int leftHeight=getHeight(root.left);int rightHeight=getHeight(root.right);if(leftHeight<0){return -1; //}if(rightHeight>=0 && Math.abs(leftHeight-rightHeight) <= 1){ //保证了不会因为右树的左子树返回-1而造成的 符合高度差return Math.max(leftHeight,rightHeight)+1;}else{return -1;}}

六. 二叉搜索树

二叉搜索树与双向链表

二叉搜索树:二叉树的左子树每个节点都比根小, 右子树每个节点都比根大
所以转化成双向链表要使用中序遍历

思路:要中序遍历 改变每个节点的前驱后继 一直遍历到头结点的前驱为空(左树),那就是链表的头

public TreeNode Convert(TreeNode pRootOfTree) {if(pRootOfTree==null){return null;}ConvertChild(pRootOfTree);TreeNode head=pRootOfTree;while(head.left!=null){head=head.left;}return head;}TreeNode prev=null;public void  ConvertChild(TreeNode root){if(root==null){return ;}ConvertChild(root.left);root.left=prev;if(prev!=null){prev.right=root;}prev=root;ConvertChild(root.right);}

在这里插入图片描述

七. 二叉树的遍历

二叉树的遍历
在这里插入图片描述

首先创建一个二叉树,只用前序遍历能创建吗?–不可以
必须使用两种遍历才能创建一个二叉树
前序遍历和后序遍历可以确定一颗二叉树吗?–不可以
前序和后序都是确定的根,光知道根不可能确定一颗二叉树
所以确定二叉树时必须有中序遍历来确定左子树和右子树

但是这道题,只需要前序遍历是可以确定一颗二叉树的
为什么,不是说要两种遍历一起吗?
题目中已经告诉了我们他一定是前序遍历,并且说明了空树的位置,就能确定唯一的二叉树了

在这里插入图片描述

charAt()返回值为char字符类型
一个文件中只能有一个public修饰的类
静态类中不能使用非静态变量

class TreeNode{ //一个文件只能有一个public修饰的类public char val;public TreeNode left;public TreeNode right;public TreeNode(char val){this.val=val;}
}// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString str=in.nextLine();//接收用户输入//利用前序遍历 创建树TreeNode root=creatTree(str);inorderTree(root);}}
public static int i=0;public static TreeNode creatTree(String str){TreeNode root=null;if(str.charAt(i)!='#'){root=new TreeNode(str.charAt(i));i++;root.left=creatTree(str);root.right=creatTree(str);}else{i++;}return root;}//中序遍历public static void inorderTree(TreeNode root){if(root==null){return ;}inorderTree(root.left);System.out.print(root.val+" ");inorderTree(root.right);}

在这里插入图片描述

在这里插入图片描述

相关文章:

【刷题】第三弹——二叉树篇(上)

文章目录 一.相同的树二. 另一棵树的子树三. 翻转二叉树四. 对称二叉树五. 平衡二叉树六. 二叉搜索树七. 二叉树的遍历 一.相同的树 检查两棵树是否相同 思路: 1.先比较结构 结构不一样直接false 2.结构一样,在比较值 public boolean isSameTree(TreeNode p, TreeNode q) {if…...

【Canvas与标志】红黄渐变阴影太极图

【成图】 120*120的png图标 大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>红黄渐变阴影太极图 Draft1&l…...

express的中间件,全局中间件,路由中间件,静态资源中间件以及使用注意事项 , 获取请求体数据

Express 中间件系统 的详细讲解&#xff0c;包括全局中间件、路由中间件、静态资源中间件、请求体解析中间件&#xff0c;以及使用注意事项&#x1f447; &#x1f310; 一、什么是中间件&#xff08;Middleware&#xff09;&#xff1f; 中间件是 函数&#xff0c;在请求到达…...

大数据去重

实验4 大数据去重 1.实验目的 通过Hadoop数据去重实验&#xff0c;学生可以掌握准备数据、伪分布式文件系统配置方法&#xff0c;以及在集成开发环境Eclipse中实现Hadoop数据去重方法。 2.实验要求 了解基于Hadoop处理平台的大数据去重过程&#xff0c;理解其主要功能&…...

高功率激光输出稳定性不足?OAS 光学软件来攻克

法布里珀罗干涉仪设计案例 简介 法布里珀罗干涉仪作为一种高分辨率光学仪器&#xff0c;基于多光束干涉原理构建。其核心结构由两块高度平行的反射镜组成谐振腔&#xff0c;当光进入该谐振腔后&#xff0c;会在镜面间进行多次反射。在这一过程中&#xff0c;透射光会形成干涉条…...

基于大模型的结肠癌全病程预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、结肠癌概述 2.1 流行病学特征 2.2 发病机制与危险因素 2.3 临床症状与诊断方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用情况 3.3 在结肠癌预测中的潜力分析 四、术前…...

【Hive入门】Hive查询语言(DQL)完全指南:从基础查询到高级分析

目录 1 Hive查询执行架构全景 2 SELECT基础查询详解 2.1 基本查询结构 2.2 条件查询流程图 3 聚合函数与GROUP BY实战 3.1 聚合执行模型 3.2 GROUP BY数据流 4 排序操作深度解析 4.1 ORDER BY执行流程 4.2 排序算法对比 5 高级技巧与注意事项 5.1 嵌套查询与CTE 5.…...

【学习笔记】文件包含漏洞--相关习题

第一关 伪协议 用代码执行命令查看目录所含文件&#xff0c;发现flag.php 法一 题目代码含有include&#xff0c;写入文件包含指令&#xff1a; php://filter/readconvert.base64-encode/resourceflag.php 解码即可得到flag。 法二 法三 法二可以用php&#xff1a;//input&…...

蓝桥杯 20. 压缩变换

压缩变换 原题目链接 题目描述 小明最近在研究压缩算法。他知道&#xff0c;压缩时如果能够使数值很小&#xff0c;就能通过熵编码得到较高的压缩比。然而&#xff0c;要使数值变小是一个挑战。 最近&#xff0c;小明需要压缩一些正整数序列&#xff0c;这些序列的特点是&a…...

BY免费空间去掉?i=1

BY免费空间去掉?i1 使用说明 支持域名&#xff1a;tae.dpdns.org 前提绑定主机&#xff0c;申请主机–控制面板选择–子域名&#xff0c;绑定xxx.tae.dpdns.org子域名 默认开启DDoS防御&#xff0c;无防火墙规则&#xff0c;建议用.htaccess来防御 默认去掉访问统计?i1 …...

中篇:深入剖析 L2CAP 与 ATT 协议模块(约5000字)

引言 在 BLE 协议栈中,L2CAP 与 ATT 承担了关键的数据分发、协议复用与属性访问职责。对多协议并存和大数据场景的应用,深入理解这两层协议的分片重组、流控机制、MTU/MTU 协商和 ATT 操作流程,对于提升系统性能与稳定性至关重要。本篇将全面拆解 L2CAP 与 ATT 的原理与实战…...

【C语言】C语言结构体:从基础到高级特性

前言 在C语言的世界里&#xff0c;结构体是一种强大而灵活的自定义数据类型&#xff0c;它能够将不同类型的数据组合在一起&#xff0c;形成一个逻辑上的整体。从简单的数据聚合到复杂的内存对齐优化&#xff0c;再到高效的位段操作&#xff0c;结构体在系统编程、嵌入式开发和…...

电控---JTAG协议

一、物理层架构与信号特性 1. 引脚定义与电气规范 核心引脚&#xff1a; TCK&#xff08;测试时钟&#xff09;&#xff1a;频率范围0.1MHz至50MHz&#xff08;如Xilinx Spartan-6支持25MHz&#xff09;&#xff0c;上升沿采样数据。TMS&#xff08;测试模式选择&#xff09;…...

FreeRTOS【3】任务调度算法

重要概念 在运行的任务&#xff0c;被称为"正在使用处理器"&#xff0c;它处于运行状态。在单处理系统中&#xff0c;任何时间里只能有一个任务处于运行状态。 非运行状态的任务&#xff0c;它处于这 3 中状态之一&#xff1a;阻塞(Blocked)、暂停(Suspended)、就绪…...

高德地图API + three.js + Vue3基础使用与使用 + 标记不显示避坑

three.js小白的学习之路。 最近闲来无事&#xff0c;突然想起来之前好像项目有需求说是要将模型放在地图上。加上在浏览别的大佬写的博客时&#xff0c;也找到了一些大佬写的相关文章。基本上都是使用的高德地图开放平台的JS API。我也随之开启了自己的学习之路。 先简单学习…...

书籍推荐:《价值心法》一姜胡说

书名 &#xff1a;《价值心法》一姜胡说 摘录 每天问问自己&#xff0c;如果今天只做一件事&#xff0c;这件事是什么&#xff1f;找到它。拿出2—3个小时&#xff0c;专门处理这件事。其他所有事全部排在那2—3个小时之外。 集中一段时间用来做最重要的事。这段时…...

Linux GPIO驱动开发实战:Poll与异步通知双机制详解

1. 引言 在嵌入式Linux开发中&#xff0c;GPIO按键驱动是最基础也最典型的案例之一。本文将基于一个支持poll和异步通知双机制的GPIO驱动框架&#xff0c;深入剖析以下核心内容&#xff1a; GPIO中断与防抖处理环形缓冲区设计Poll机制实现异步通知(SIGIO)实现应用层交互方式 …...

x-cmd install | brows - 终端里的 GitHub Releases 浏览器,告别繁琐下载!

目录 核心功能与优势安装适用场景 还在为寻找 GitHub 项目的特定 Release 版本而苦恼吗&#xff1f;还在网页上翻来覆去地查找下载链接吗&#xff1f;现在&#xff0c;有了 brows&#xff0c;一切都将变得简单高效&#xff01; brows 是一款专为终端设计的 GitHub Releases 浏览…...

一天学完Servlet!!!(万字总结)

文章目录 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest对象常用api方法请求乱码问题请求转发request域对象 HttpServletResponse对象响应数据响应乱码问题请求重定向请求转发与重定向区别 Cookie对象Cookie的创建与获取Cookie设置到期时间Cookie注意点Cook…...

c#-命名和书写规范

文章目录 1. 接口名称以大写 I 开头2. 属性类型以单词 Attribute 结尾3. 枚举类型对非标记使用单数名词,对标记使用复数名词4. 标识符不应包含两个连续下划线(__)字符5. 对变量、方法和类使用有意义的描述性名称6. 将 PascalCase 用于类名和方法名称7. 对方法参数和局部变量…...

【双指针】和为s的两个数字

57. 和为target的两个数字 剑指 Offer 57. 和为s的两个数字 ​ 输入一个递增排序的数组和一个数字target&#xff0c;在数组中查找两个数&#xff0c;使得它们的和正好是target。如果有多对数字的和等于target&#xff0c;则输出任意一对即可。 示例 1&#xff1a; 输入&…...

【Vue】TypeScript与Vue3集成

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite&#xff08;推荐&#xff09;2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…...

win11中wsl在自定义位置安装ubuntu20.04 + ROS Noetic

wsl的安装 环境自定义位置安装指定ubuntu版本VsCodeROS备份与重载备份重新导入 常用命令参考文章 环境 搜索 启用或关闭 Windows 功能 勾选这2个功能&#xff0c;然后重启 自定义位置安装指定ubuntu版本 从网上找到你所需要的相关wsl ubuntu版本的安装包&#xff0c;一般直…...

【数据可视化-29】食物营养成分数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏

通过html实现legend的样式 提供调用echarts的api实现与echarts图表交互的效果 实现饼图element实现类似于legend与echartstu表交互效果 效果图 配置代码 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…...

C语言编程--16.删除链表的倒数第n个节点

题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a…...

centos7使用certbot完成nginx ssl证书续期

没有废话纯干货 yum源配置&#xff08;配置好的可以跳过&#xff09; #到/etc/yum.repos.d/下mkdir bak&#xff0c;将所用东西mv到bak下 cd /etc/yum.repos.d/ mkdir bak mv ./* bak/ wget https://mirrors.aliyun.com/repo/Centos-7.repo 没有安装nginx的话&#xff0c;配…...

ECharts学习之 toolbox 工具栏

toolbox: {show: true,feature: {//数据视图工具&#xff0c;可以展现当前图表所用的数据dataView: {title: "数据视图",readOnly: false, //是否不可编辑&#xff0c;即只读lang:[数据视图,关闭,刷新] //数据视图上有三个话术},magicType: {type: ["line"…...

修改el-select背景颜色

修改el-select背景颜色 /* 修改el-select样式--直接覆盖默认样式&#xff08;推荐&#xff09; */ ::v-deep .el-select .el-input__inner {background-color: #1d2b72 !important; /* 修改输入框背景色 */color: #fff; } ::v-deep .el-select .el-input__wrapper {background-…...

Qt 使用 MySQL 数据库的基本方法

在 Qt 中&#xff0c;使用 MySQL 数据库的基本方法主要是通过 QSqlDatabase、QSqlQuery 等类来进行数据库的连接、查询和数据操作。以下是 Qt 中连接和操作 MySQL 数据库的基本步骤。 1. 安装 MySQL 驱动 首先&#xff0c;确保您的 Qt 环境已经配置了 MySQL 驱动。通常&#…...

BLIP 系列论文(BLIP、BLIP-2、InstructBLIP)

BLIP BLIP 是 Salesforce 团队在多模态领域中的经典工作&#xff0c;影响力巨大&#xff0c;BLIP 系列包括&#xff1a;BLIP、BLIP-2、InstructBLIP。 BLIP 在多模态大模型之前&#xff0c;多模态领域中最流行的是视觉-语言预训练&#xff08;Vision-Language Pre-training,…...

【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI

目录 Inspira UI 介绍 配置环境 使用示例 效果&#xff1a; Inspira UI 学习视频&#xff1a; 华丽优雅 | Inspira UI快速上手_哔哩哔哩_bilibili 官网&#xff1a;https://inspira-ui.com/ Inspira UI 介绍 Inspira UI 是一个设计精美、功能丰富的用户界面库&#xff0c;专为…...

Java24新增特性

Java 24&#xff08;Oracle JDK 24&#xff09;作为Java生态的重要更新&#xff0c;聚焦AI开发支持、后量子安全、性能优化及开发者效率提升&#xff0c;带来20余项新特性和数千项改进。以下是核心特性的分类解析&#xff1a; 一、语言特性增强&#xff1a;简化代码与模式匹配 …...

Git多人协作与企业级开发模型

目录 1.多人协作一 2.多人协作二 3.远程分⽀删除后&#xff0c;本地gitbranch-a依然能看到的解决办法 4.企业级开发模型 4.1.Git的重要性 4.2.系统开发环境 4.3.Git 分⽀设计规范 1.多人协作一 ⽬前&#xff0c;我们所完成的⼯作如下&#xff1a; 基本完成Git的所有本…...

Android学习总结之扩展基础篇(一)

一、IdleHandler工作原理 1. IdleHandler 接口定义 IdleHandler 是 MessageQueue 类中的一个接口&#xff0c;定义如下&#xff1a; public static interface IdleHandler {/*** 当消息队列空闲时会调用此方法。* return 如果返回 true&#xff0c;则该 IdleHandler 会保留在…...

C语言教程(十六): C 语言字符串详解

一、字符串的表示 在C语言中&#xff0c;字符串是由一系列字符组成&#xff0c;并且以空字符 \0 作为结束标志。字符串通常用字符数组来表示。例如&#xff1a; char str[] {H, e, l, l, o, \0};也可以使用字符串字面量来初始化字符数组&#xff1a;char str[] "Hello&…...

Redis LFU 策略参数配置指南

一、基础配置步骤‌ 设置内存上限‌ 在 redis.conf 配置文件中添加以下指令&#xff0c;限制 Redis 最大内存使用量&#xff08;例如设置为 4GB&#xff09;&#xff1a; maxmemory 4gb选择 LFU 淘汰策略‌ 根据键的作用域选择策略&#xff1a; # 所有键参与淘汰 maxmemory-…...

Pikachu靶场-unsafe upfileupload

不安全的文件上传漏洞防御与对抗方式对照表 防御方式 防御实现 攻击者对抗方式 对抗原理 文件类型白名单验证 仅允许指定扩展名&#xff08;如 .jpg, .png&#xff09; if (!in_array($ext, [jpg, png])) { die(); } 伪造文件类型&#xff1a; 1. 修改文件头&#xff08;…...

Python基础语法:查看数据的类型type(),数据类型转换,可变和不可变类型

目录 查看数据类型type() 使用type()语句查看数据的类型 变量无类型而数据有类型 数据类型转换 在字符串&#xff0c;整型&#xff0c;浮点数之间相互转换 可变类型和不可变类型 查看数据类型type() 使用type()语句查看数据的类型 Python中使用type(被查看数据的类型)语…...

高防IP是如何防护DDoS攻击和CC攻击的

高防IP是一种针对网络攻击&#xff08;如DDoS和CC攻击&#xff09;设计的防护服务&#xff0c;其核心原理是通过流量调度、智能清洗和分布式防护节点等技术&#xff0c;将恶意流量拦截在目标服务器之外。以下是其防护DDoS和CC攻击的具体机制&#xff1a; 一、防御DDoS攻击的机制…...

从认证到透传:用 Nginx 为 EasySearch 构建一体化认证网关

在构建本地或云端搜索引擎系统时&#xff0c;EasySearch 凭借其轻量、高性能、易部署等优势&#xff0c;逐渐成为众多开发者和技术爱好者的首选。但在实际部署过程中&#xff0c;如何借助 Nginx 为 EasySearch 提供高效、稳定且安全的访问入口&#xff0c;尤其是在身份认证方面…...

利用deepseek快速生成甘特图

一、什么是甘特图 甘特图&#xff08;Gantt Chart&#xff09;是一种直观的项目管理工具&#xff0c;广泛应用于多个领域&#xff0c;主要用于​​时间规划、任务分配和进度跟踪​​。 直观性​​&#xff1a;时间轴清晰展示任务重叠或延迟。 ​​灵活性​​&#xff1a;支持…...

突破厚铜PCB阻抗控制难题:多级阻抗实现方法

随着电子技术的发展&#xff0c;电子设备对电路板的性能要求越来越高。其中&#xff0c;阻抗控制是电路板设计中的一个重要环节&#xff0c;尤其是对于高频、高速的电子设备。厚铜电路板由于其优良的导电性能和机械强度&#xff0c;被广泛应用于各种高端电子设备中。然而&#…...

JCP官方定义的Java技术体系组成部分详解

JCP官方定义的Java技术体系组成部分详解 1. Java平台规范&#xff08;Java Platform Specifications&#xff09; 定义&#xff1a;由JCP制定的Java平台核心规范&#xff0c;包括Java SE&#xff08;标准版&#xff09;、Java EE&#xff08;企业版&#xff0c;现为Jakarta EE…...

如何在 Windows上安装 Python 3.6.5?

Windows 系统安装步骤 下载安装包 安装包下载链接&#xff1a;https://pan.quark.cn/s/9294ca0fd46a 运行安装程序 双击下载的 .exe 文件&#xff08;如 python-3.6.5.exe&#xff09;。 勾选 Add Python 3.6 to PATH&#xff08;重要&#xff01;这将自动配置环境变量&…...

OpenHarmony 开源鸿蒙北向开发——hdc工具使用及常用命令(持续更新)

hdc&#xff08;OpenHarmony Device Connector&#xff09;是为开发人员提供的用于设备连接调试的命令行工具&#xff0c;该工具需支持部署在 Windows/Linux/Mac 等系统上与 OpenHarmony 设备&#xff08;或模拟器&#xff09;进行连接调试通信。简单来讲&#xff0c;hdc 是 Op…...

【C语言】C语言动态内存管理

前言 在C语言编程中&#xff0c;内存管理一直是程序员需要重点关注的领域。动态内存管理更是如此&#xff0c;它不仅涉及到内存的灵活分配和释放&#xff0c;还隐藏着许多潜在的陷阱。本文将从动态内存分配的基础讲起&#xff0c;逐步深入到常见的错误、经典笔试题分析&#x…...

Java 运算符:深度解析

前言 作为Java开发者&#xff0c;运算符是我们每天都会接触的基础元素。然而&#xff0c;很多开发者对运算符的理解仅停留在表面层次。本文将全面深入地剖析Java中的各类运算符&#xff0c;揭示其底层原理、使用技巧和最佳实践&#xff0c;帮助您成为真正的Java运算符专家。 …...

健康养生小窍门

健康养生是我们对美好生活的追求&#xff0c;掌握一些实用的小窍门&#xff0c;能让我们轻松拥抱健康。 在生活起居方面&#xff0c;要注重环境的营造。卧室的窗帘选择遮光性好的材质&#xff0c;保证睡眠时的黑暗环境&#xff0c;有助于提高睡眠质量。在室内放置一些绿植&…...

4月24号

网络编程: //IP的对象一台电脑的对象 InetAddress address InetAddress.getByName("DESKTOP-5OJJSAM"); System.out.println(address); String name address.getHostName(); System.out.println(name);//DESKTOP-5OJJSAM String ip address.getHostAddress(); Sys…...