CX3324A是德科技CX3324A器件电流波形分析仪

181/2461/8938产品概述: 器件电流波形分析仪,1 GSa/s,14/16 位,4 通道 主机功能特性 为电流和差分传感器以及无源探头接口适配器提供 4 个模拟通道带宽选件:50 MHz、100 MHz、200 MHz存储器深度选件:4 Mpts/通道、16 Mpts/通道、64 Mpts/通道、256 Mpts/通道WXGA 14.1 英寸电容式多点触控屏 测量功能 14 位或 16 位动态范围经过优化,能够采集低噪声电流传感器的输出1 GSa/s 采样率和 200 MHz 最大带宽提供常见的触发类型和数学函数 可以使用的电流和差分传感器与适配器(可选附件产品) 电流传感器:CX1101A、CX1102A、CX1103A、CX1104A差分传感器:CX1105A适配器:CX1151A数字通道:CX1152A(仅适用于 CX3324) 分析功能 可以在“任意处”进行缩放,深入分析波形自动功率和电流分析工具统计分析:直方图、CCDF频谱分析(FFT) CX3324A 是一款 4 通道主机,支持工程师和研究人员用 2 个以上通道进行电流波形测量。 它使用一个无源探头接口(CX1151A)及一个电流传感器(CX1101A、CX1102A、CX1103A、CX1104A)或差分传感器(CX1105A),便能进行功率测量。 另外还提供多种带宽选件(50 MHz、100 MHz 和 200 MHz)和存储器深度选件(每通道 4 Mpts、16 Mpts、64 Mpts 和 256 Mpts)。 CX3300 用户如需更高性能,可以同时升级带宽和存储器深度。 8 通道数字通道(CX1152A)可以与这个 4 通道型号结合使用,让您获得更大的触发灵活性。

泰克Tektronix MDO3054混合域示波器

181/2461/8938产品概述: Tektronix MDO3054 示波器,混合域,500 MHz,4 通道,5 GS/s 泰克 MDO3054 混合域示波器是终极 6 合 1 集成示波器,包括可选的集成频谱分析仪、任意函数发生器、逻辑分析仪、协议分析仪和数字电压表/计数器。泰克 MDO3054 是完全定制且完全可升级的。泰克 MDO3054 是一款世界一流的示波器,提供全面的工具,可加速每个阶段的调试 - 从快速发现异常并捕获异常,到搜索波形记录中感兴趣的事件并分析其特征和设备的行为。 泰克 MDO3054 的特性和规格包括: 500 MHz,4 个模拟通道,16 个数字通道(可选)可升级带宽以保护您的投资2.5 GS/秒采样率所有通道 10 M 记录长度9 kHz 至 500 MHz 频谱分析仪(可选至 3 GHz)通过泰克购买后注册即可启用 5 位 DVM 选项FastAcq™ 高速波形捕获Wave Inspector® 控制装置33 种自动测量和波形直方图9 英寸 WVGA 宽屏彩色显示屏可选功能:50 MHz AFG、121.2 ps 时序分辨率逻辑分析仪、协议分析仪

德国FSV30罗德与施瓦茨频谱仪

181/2461/8938产品概述: 罗德与施瓦茨 FSV30 是一款速度极快且多功能的信号和频谱分析仪,适用于从事射频系统开发、生产、安装和维修工作的注重性能、注重成本的用户。 在开发应用中,罗德与施瓦茨 FSV30 凭借其出色的射频特性、同类产品中无与伦比的 160 MHz 信号分析带宽(可选)以及适用于模拟调制方法以及无线和宽带的各种分析包而表现出色。通信标准。 罗德与施瓦茨 FSV30 的速度比同类信号和频谱分析仪快五倍,并提供针对速度和高数据吞吐量进行优化的测量例程。这是生产应用中的一个关键优势。 罗德与施瓦茨 FSV30 的触摸屏操作方便、尺寸紧凑、重量轻并直接支持功率传感器,是安装和维修工作的最佳选择。 罗德与施瓦茨 FSV30 的特性和规格包括: 频率范围高达 30 GHz高达 160 MHz 的信号分析带宽(可选)0.4 dB 电平测量不确定度 GSM/EDGE(包括 EDGE Evolution)、WCDMA/HSPA+、LTE、WiMAX™、WLAN、CDMA2000®、1xEV-DO、矢量信号分析的测量应用通过选项轻松进行现场升级10 kHz 频率偏移时相位噪声为 –110 dBc (1 Hz)+16 dBm 三阶截距 (TOI)1 Hz 带宽中显示的平均噪声电平 (DANL): –155 dBm(1 GHz 时)、-153 dBm(3 GHz 时)、-149 dBm(7 GHz 时)、-151 dBm(13 GHz 时)、-147 dBm(30 GHZ 时)(采用罗德与施瓦茨 FSV) -B24 前置放大器:10 GHz 时 –167 dBm,30 GHz 时 -162 dBm 可移动硬盘,适用于需要考虑安全性的应用频率范围高达 110 GHz,罗德与施瓦茨 FSV-B21 选件集成在罗德与施瓦茨 FSV30/40 和罗德与施瓦茨 FS-Z60/-Z75/-Z90/-Z110 谐波混频器中

Ubuntu镜像源的更改及其Petalinux的安装

在安装Petalinux之前, 需要安装一些必要的库,但是在安装的第一步,自己就遇到下面一些问题了! Failed to download repository information Check your Internet connection. Package **** is not available, but is referred to by another package. package has no installation candidate 这个是在Ubuntu设置中软件和更新这块设置下载的源,设置完成后需要加载,加载就出现了下面的问题。 使用apt-get安装插件时问题很多,网上说执行更新或者升级后就可以了。 sudo apt-get update sudo apt-get upgrade 但是很多人通过这样的方式问题根本得不到解决,归根结底还是要换下载源,这个文件就是根目录下的/etc/apt/sources.list,我分别尝试了阿里云和清华的镜像源,加到文件里面试了,更新的时候更新到一半就异常终止了,像下面这样。 注意,获取镜像源的时候一定要和自己安装的Ubuntu版本一致。 这个问题困扰了我好久一直得不到解决,最后试了文章Ubuntu安装软件出现 Check your internet connection 问题的解决办法中的镜像源就成功了,该镜像源的具体内容如下。 #deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse deb http://archive.

标准版IP地址证书

IP地址证书是一种网络安全工具,用于确保互联网通信中IP地址的所有权和真实性。它类似于为网站颁发的SSL/TLS证书,但专门针对IP地址。这种证书由受信任的第三方机构(如证书颁发机构)签发,包含公钥、所有者信息和有效期。 使用IP地址证书的好处包括增强数据传输的安全性,防止中间人攻击和网络钓鱼。在企业环境中,它有助于确保内部通信的完整性和机密性。此外,对于需要满足合规性要求的组织来说,IP地址证书是展示其安全姿态的重要证据。 部署时,通常需要在网络设备上安装证书,并配置相关服务以使用该证书进行加密通信。随着网络攻击的日益复杂,IP地址证书成为维护网络安全的关键组成部分。 IP地址证书申请地址https://www.joyssl.com/certificate/select/ip_certificate.html?nid=5

在Java项目中,日志的作用

在Java项目中,日志的作用 1:日志的作用 故障排查与调试:日志记录是排查和调试应用程序的主要工具。当应用程序发生错误或异常时,日志可以提供关键信息,帮助开发人员快速定位问题所在。性能监控与优化:通过记录关键操作的时间戳、耗时和资源消耗等信息,可以进行性能监控和优化。日志记录可以帮助识别系统中的性能瓶颈,并提供优化建议。安全审计:日志记录可以用于安全审计,跟踪用户的操作和系统事件。这对于识别潜在的安全漏洞、分析安全事件以及满足合规性要求非常重要。业务流程跟踪:通过记录关键业务流程的日志,可以跟踪业务流程的执行情况,了解系统中的业务活动。这有助于后续的业务分析、优化和决策。系统运行状态监控:日志记录可以用于监控系统的运行状态,包括系统启动、关闭、重启以及资源利用情况等。这有助于及时发现并处理系统中的异常情况。历史记录和审计跟踪:日志记录是系统中各种事件的历史记录,可以作为事实的凭据和审计跟踪的依据。这对于追溯数据修改、查找系统状态变更等具有重要意义。 2:常见日志实现方式 Java.util.logging(JUL): 这是Java平台自带的日志记录API,提供了基本的日志记录功能。使用java.util.logging.Logger类来创建日志记录器,并使用Handler来指定日志输出目标。Log4j: Log4j是Apache软件基金会的一个开源项目,提供了灵活的日志记录功能。通过配置文件(如log4j.properties或log4j.xml)来配置日志输出格式、级别、目标等。Logback: Logback是Log4j的继任者,也是由Apache软件基金会的成员开发的,是一个功能更强大、性能更优秀的日志框架。与Log4j相比,Logback支持更多的特性,包括条件日志、异步日志等。Slf4j: Slf4j(Simple Logging Facade for Java)是一个简单的日志门面框架,允许开发者在应用中使用统一的API来进行日志记录。Slf4j本身并不提供日志的实现,而是通过与其他日志框架(如Log4j、Logback)进行集成来实现日志记录。使用AOP进行日志记录: 使用面向切面编程(AOP)的方式来实现日志记录,可以通过在关键方法前后插入日志记录的代码来实现日志的记录。Spring Boot默认日志: 在Spring Boot应用中,默认使用Slf4j和Logback作为日志记录的框架。Spring Boot提供了默认的日志配置,开发者可以通过修改application.properties或application.yml文件来配置日志输出格式、级别等。

matlab安装第三方工具箱

1.下载工具箱,放到toolbox目录下 下载的第三方工具箱: 将上述文件按照如下规则放到Matlab安装目录下的toolbox文件夹中: 2.在matlab中设置路径,安装工具 

泰克Tektronix TCP0030A电流探头

181/2461/8938产品概述: TCP0030 是简便易用的高性能交流/直流探头,旨在用于通过 TekVPI™ 探头接口直接连接示波器。该交流/直流测量探头提供了超过 120 MHz 的带宽,选配择 5 A 和 30 A 测量量程。还提供了卓越的低电流测量能力和最低 1 mA 的电流精度,这对满足当前极具挑战性的电流测量 TCP0030交流/直流电流探头 特性和优点 简便易用,准确进行 AC/DC 电流测量 直接连接到具有 TekVPI™ 探头接口的示波器 在示波器画面上实现自动单位缩放和读数 分芯结构,简便地连接电路 直流到 >120 MHz 的带宽 30 A RMS 最大电流功能 50 A 峰值脉冲电流功能 精度高,DC 增益误差一般小于 1% 准确测量最低 1 mA 的电流 低噪声和 DC 漂移 消磁和自动清零控制,简便易用 设置控制和探头状态/诊断指示器均通过易于访问的示波器 UI 显示菜单在探头硬件上提供 通过示波器实现远程 GPIB/USB 探头控制 经过美国和加拿大安全认证 TCP0030交流/直流电流探头 应用 电源 半导体设备 逆电器/转换器 电子镇流装置 工业/消费电子 移动通信 马达驱动器 交通运输系统 TCP0030交流/直流电流探头 TCP0030 是简便易用的高性能交流/直流探头,旨在用于通过 TekVPI™ 探头接口直接连接示波器。该交流/直流测量探头提供了超过 120 MHz 的带宽,选配择 5 A 和 30 A 测量量程。这些探头还提供了卓越的低电流测量能力和最低 1 mA 的电流精度,这对满足当前极具挑战性的电流测量需求至关重要。

基础布局之ConstraintLayout约束布局

目录 一、简介1.1 概述1.2 优点 二、属性大全2.1 相对定位2.2 角度定位2.3 边距2.4 居中和偏移2.5 尺寸约束2.6 链 三、使用3.1 相对定位示例3.2 角度定位示例3.3 边距示例3.4 局中和偏移示例3.5 尺寸约束示例3.6 链使用3.7 辅助工具使用3.7.1 Optimizer3.7.2 Barrier3.7.3 Group3.7.4 Placeholder3.7.5 Guideline 一、简介 1.1 概述 约束布局(ConstraintLayout)是安卓中强大的布局管理器,可以通过相对定位和约束关系来实现灵活的界面布局。 约束布局允许使用者通过设置控件之间的约束关系来定义它们的位置和大小,而不需要嵌套多层布局。 控件可以相对于父容器或其他控件进行定位,并且可以根据屏幕尺寸和方向进行适配。 约束布局支持链式布局(Chains),可以轻松地创建水平或垂直方向上的控件链。 1.2 优点 灵活性:约束布局提供了丰富的属性和约束关系,可以实现各种复杂的界面布局效果。性能:相比传统的嵌套布局,约束布局通常具有更好的性能,因为它减少了层级的嵌套。适配性:约束布局可以根据屏幕尺寸和方向进行适配,使得应用在不同设备上都能有良好的显示效果。可视化编辑器支持:Android Studio提供了可视化的布局编辑器,可以直观地拖拽控件并设置约束,方便开发者进行界面设计。减少布局层级:约束布局可以减少布局的嵌套层级,使得布局结构更清晰,维护更容易。 二、属性大全 2.1 相对定位 属性作用layout_constraintTop_toTopOf将控件的顶部与另一个控件的顶部对齐。layout_constraintTop_toBottomOf将控件的顶部与另一个控件的底部对齐。layout_constraintBottom_toBottomOf将控件的底部与另一个控件的底部对齐。layout_constraintBottom_toTopOf将控件的底部与另一个控件的顶部对齐。layout_constraintLeft_toLeftOf将控件的左边与另一个控件的左边对齐。layout_constraintLeft_toRightOf将控件的左边与另一个控件的右边对齐。layout_constraintRight_toRightOf将控件的右边与另一个控件的右边对齐。layout_constraintRight_toLeftOf将控件的右边与另一个控件的左边对齐。layout_constraintStart_toStartOf将控件的开始边与另一个控件的开始边对齐。layout_constraintStart_toEndOf将控件的开始边与另一个控件的结束边对齐。layout_constraintEnd_toEndOf:将控件的结束边与另一个控件的结束边对齐。layout_constraintEnd_toStartOf将控件的结束边与另一个控件的开始边对齐。layout_constraintBaseline_toBaselineOf将一个控件的基线(baseline)与另一个控件的基线对齐 2.2 角度定位 属性作用layout_constraintCircle指定控件相对于另一个控件的圆形路径进行定位。layout_constraintCircleAngle指定控件在圆形路径上的角度位置。layout_constraintCircleRadius指定控件相对于圆形路径的半径。 layout_constraintCircle:指定控件相对于另一个控件的圆形路径进行定位。 使用方法:app:layout_constraintCircle=“@+id/anotherViewId, angle, radius” 示例:app:layout_constraintCircle=“@+id/centerView, 45, 100dp” 表示当前控件相对于 ID 为 centerView 的控件,以 45 度角度,半径为 100dp 的圆形路径进行定位。layout_constraintCircleAngle:指定控件在圆形路径上的角度位置。 使用方法:app:layout_constraintCircleAngle=“angle” 示例:app:layout_constraintCircleAngle=“90” 表示当前控件在圆形路径上的角度位置为 90 度。layout_constraintCircleRadius:指定控件相对于圆形路径的半径。 使用方法:app:layout_constraintCircleRadius=“radius” 示例:app:layout_constraintCircleRadius=“150dp” 表示当前控件相对于圆形路径的半径为 150dp。 2.3 边距 常见margin:

基础布局之RelativeLayout相对布局

目录 概述一、属性分类二、父容器定位属性2.1 示例12.2 示例2 三、相对定位属性3.1 示例13.2 示例23.3 示例3 概述 相对布局(RelativeLayout)是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。 使用相对布局,需要将布局节点改成RelativeLayout,基本格式如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> 一、属性分类 线性布局和相对布局是兼容的,在线性布局常用的属性外,最常用的属性如下: 与父容器定位相关属性 属性作用android:layout_alignParentTop控件顶部与父布局的顶部对齐。android:layout_alignParentBottom控件底部与父布局的底部对齐。android:layout_alignParentLeft控件左边与父布局的左边对齐。android:layout_alignParentRight控件右边与父布局的右边对齐。android:layout_alignParentStart将控件的起始边(根据布局方向,可能是左边或右边)与父容器的起始边对齐。android:layout_alignParentEnd将控件的结束边(根据布局方向,可能是右边或左边)与父容器的结束边对齐。android:layout_centerHorizontal将控件水平居中对齐。android:layout_centerVertical将控件垂直居中对齐。android:layout_centerInParent水平垂直都居中 相对定位属性: 属性作用android:layout_above控件放置在指定控件的上方。android:layout_below控件放置在指定控件的下方。android:layout_toLeftOf控件放置在指定控件的左边。android:layout_toRightOf控件放置在指定控件的右边。android:layout_alignTop控件的顶部与指定控件的顶部对齐。android:layout_alignBottom控件的底部与指定控件的底部对齐。android:layout_alignLeft控件的左边与指定控件的左边对齐。android:layout_alignRight控件的右边与指定控件的右边对齐。android:layout_alignStart将控件的起始边(根据布局方向,可能是左边或右边)与指定控件的起始边对齐。android:layout_alignEnd将控件的结束边(根据布局方向,可能是右边或左边)与指定控件的结束边对齐。android:layout_alignBaseline控件的基线与指定控件的基线对齐。 其中start、end相关的两个属性通常用于支持不同语言的布局需求,例如从右到左的阿拉伯语布局。在安卓开发中,可以通过设置这两个属性来实现适应不同语言布局方向的界面设计。 二、父容器定位属性 2.1 示例1 简单举例一下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="150dp" android:layout_height="150dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@color/green" /> </RelativeLayout> 与父布局右边对齐,垂直居中 2.2 示例2 看一下 android:layout_centerInParent=“true” 在父布局中垂直、水平方向都居中。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="150dp" android:layout_height="150dp" android:layout_centerInParent="true" android:background="@color/green" /> </RelativeLayout> 三、相对定位属性 3.1 示例1 看一下

Linux进程间通信

文章目录 进程通信管道无名管道有名管道 信号通信kill、raise、alarmsignal 处理信号采用信号方式的进程间通信 共享内存shmget 创建ftok 创建key值shmat 映射地址shmdt/shmctl 删除采用共享内存方式的进程间通信 消息队列msgget 创建msgctl 删除msgsnd 发送消息msgrcv 接收消息采用消息队列方式的进程间通信 信号灯semget 创建semctl 设置/删除semop 执行p/v操作采用信号灯方式的进程间通信 进程通信 进程通信在用户空间无法实现,可以通过Linux内核进行通信。线程间通信在用户空间使用全局变量就可以实现。 像下面这样的例子在进程间实现通信是不可行的,子进程中会一直执行while循环而不向下执行,即使父进程中已经改变了全局变量的值。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int global = 0; int main() { pid_t pid = fork(); if(pid < 0) perror("fork error"); else if(pid == 0) { while(global == 0); printf("子进程ID: %d\n",getpid()); } else { printf("父进程ID: %d\n",getpid()); global = 1; } return 0; } 进程间的通信可以依靠Linux内核来实现,像下面图示这样,一个进程往里面写,一个进程往外面读,这样就实现了进程间通信。 只有一个Linux内核,进程间的通信方式包括管道通信(有名管道和无名管道)、信号通信、IPC(Inter-Process Communication)通信(共享内存、消息队列、信号灯/量)。Socket通信存在于一个网络中两个进程之间的通信。 每一种通信方式都是基于文件IO的思想。

基于Springboot+vue的茶叶销售商城网站

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,茶叶销售商城当然也不能排除在外。茶叶销售商城是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结,得出系统中存在的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为今后开发类似系统提供了借鉴和帮助。这种个性化的网上管理系统特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对茶叶销售商城而言非常有利。 本茶叶销售商城采用的数据库是Mysql,使用springboot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 关键词:茶叶销售商城,springboot框架 Mysql数据库 Java技术 ABSTRACT With the rapid development of science and technology, all aspects of society, all walks of life are trying to integrate with modern advanced technology, through scientific and technological means to improve their own advantages, online shopping system of course can not be excluded. Online shopping mall system is a management system based on the practical application, using software engineering principles and development methods, using springboot framework.

(K,V)集合类的几种遍历方式

这里提到的是以键值对存储的结合类的几种遍历方式,以treeMap为例 1.keyset 就是用一个set接一下treeMap.keySet(); 这是一个键的集合,然后遍历一下这个集合 迭代器/增强for treeMap.get 键的内容 2.Collection treeMap.values 同样,迭代器/增强for 不过这个方法输出就行,比较快,缺点是没有key的信息 3.entrySet 几个Map类在底层实现了entry接口 所以获取一下treeMap的entry集合 迭代/增强for一下这个集合 用迭代器的话要注意迭代器类型是Obj,需要转一下型。 示例 public class TreeMapDemo { public static void main(String[] args) { TreeMap treeMap = new TreeMap( new Comparator() { @Override public int compare(Object o1, Object o2) { return ((String) o2).length() - ((String) o1).length(); } } ); treeMap.put("abc",1); treeMap.put("ab",2); System.out.println(treeMap); //六大遍历 //key set Set set = treeMap.keySet(); for(Object key:set){ System.out.println(key + "-" + treeMap.get(key)); } // itit Iterator iterator = set.

bugku-web-eval

页面源码 <code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #DD0000">"flag.php"</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;@</span><span style="color: #0000BB">$_REQUEST</span><span style="color: #007700">[</span><span style="color: #DD0000">'hello'</span><span style="color: #007700">]; <br />&nbsp;&nbsp;&nbsp;&nbsp;eval(&nbsp;</span><span style="color: #DD0000">"var_dump(</span><span style="color: #0000BB">$a</span><span style="color: #DD0000">);"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">show_source</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span> </span> </code> 这里考察基础php语法 ?hello=show_source(%27flag.php%27)

代码随想录阅读笔记-二叉树【对称二叉树】

题目 给定一个二叉树,检查它是否是镜像对称的。 思路 首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点! 对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了其实我们要比较的是两个树(这两个树是根节点的左右子树),所以在递归遍历的过程中,也是要同时遍历两棵树。 那么如何比较呢? 比较的是两个子树的里侧和外侧的元素是否相等。如图所示: 那么遍历的顺序应该是什么样的呢? 本题遍历只能是“后序遍历”,因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等。 正是因为要遍历两棵树而且要比较内侧和外侧节点,所以准确的来说是一个树的遍历顺序是左右中,一个树的遍历顺序是右左中。 但都可以理解算是后序遍历,尽管已经不是严格上在一个树上进行遍历的后序遍历了。 其实后序也可以理解为是一种回溯,当然这是题外话,讲回溯的时候会重点讲的。 说到这大家可能感觉我有点啰嗦,哪有这么多道理,上来就干就完事了。别急,我说的这些在下面的代码讲解中都有身影。 那么我们先来看看递归法的代码应该怎么写。 递归法 1、确定递归函数的参数和返回值 因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。 返回值自然是bool类型。 代码如下: bool compare(TreeNode* left, TreeNode* right) 2、确定终止条件 要比较两个节点数值相不相同,首先要把两个节点为空的情况弄清楚,否则后面比较数值的时候就会操作空指针了。 节点为空的情况有:(注意我们比较的其实不是左孩子和右孩子,所以如下我称之为左节点右节点) 左节点为空,右节点不为空,不对称,return false左不为空,右为空,不对称 return false左右都为空,对称,返回true 此时已经排除掉了节点为空的情况,那么剩下的就是左右节点不为空: 左右都不为空,比较节点数值,不相同就return false 此时左右节点不为空,且数值也不相同的情况我们也处理了。 代码如下: if (left == NULL && right != NULL) return false; else if (left != NULL && right == NULL) return false; else if (left == NULL && right == NULL) return true; else if (left->val !

C#属性显示

功能: 显示对象的属性,包括可显示属性、可编辑属性、及不可编辑属性。 1、MainWindow.xaml <Window x:Class="FlowChart.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:FlowChart" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <DockPanel> <StackPanel DockPanel.Dock="Left" Width="300" Margin="0 0 10 0"> <StackPanel Margin="0 10 0 10"> <TextBlock Text="属性" FontWeight="Bold" Margin="0 0 0 10"/> <local:PropertiesView x:Name="_propertiesView" Height="200"/> </StackPanel> </StackPanel> <Border BorderBrush="Black" BorderThickness="1"></Border> </DockPanel> </Window> 2、MainWindow.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.

mac系统使用经验

mac安装brew brew是macos下的一个包管理工具,类似与centos的yum,ubuntu的apt-get等。 自动脚本(全部国内地址)(在Mac os终端中复制粘贴回车下面这句话) /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 即可按照提示,自动安装。安装完成后,重新启动终端,就可以运行brew。 mac安装openjdk 以安装openjdk17为例。 安装openjdk17 brew install openjdk@17 把homebrew安装的openjdk17软链接到系统目录 sudo ln -sfn $(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk 检查版本 java --version 配置环境变量 vim ~/.zshrc 在该文件下添加以下配置: JAVA_HOME="/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home" export JAVA_HOME CLASS_PATH="$JAVA_HOME/lib" PATH=".$PATH:$JAVA_HOME/bin" 完成配置 source ~/.zshrc mac安装Elasticsearch 官方文档:Install Elasticsearch from archive on Linux or MacOS | Elasticsearch Guide [8.13] | Elastic 1. 下载解压到~/app下 tar -xzf elasticsearch-8.13.0-linux-x86_64.tar.gz cd elasticsearch-8.13.0/ 目录结构如下: Elasticsearch是java开发,这里面包含一个赠送的jdk。 2. 命令行启动es ./bin/elasticsearch 出现以下提示: 输入以下命令,即可解决。 sudo spctl --master-disable 启动成功:

maven安装jar包到本地

命令 mvn install:install-file -Dfile=/path/to/your/artifact.jar -DgroupId=your.group.id -DartifactId=your-artifact-id -Dversion=version -Dpackaging=jar 这里需要替换以下内容: /path/to/your/artifact.jar:指向你的 JAR 文件的路径。your.group.id:你的项目的 Group ID。your-artifact-id:你的项目的 Artifact ID。version:你的项目的版本号。jar:你的 JAR 文件的打包类型(例如:jar、war、pom 等)。 执行该命令后,Maven 会将该 JAR 文件安装到你本地 Maven 仓库中。 ## 例1 mvn install:install-file -Dfile=C:\Users\li\Desktop\远程监测管理平台\jar\jna.jar -DgroupId=com.sun.jna -DartifactId=jna -Dversion=3.1 -Dpackaging=jar ## 例2 mvn install:install-file -Dfile=C:\Users\li\Desktop\远程监测管理平台\jar\examples.jar -DgroupId=com.sun.examples -DartifactId=examples -Dversion=3.1 -Dpackaging=jar

基于ssm助学贷款网站论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本助学贷款管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此助学贷款管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发.助学贷款管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:助学贷款管理系统;SSM框架;Mysql;自动化 Abstract The fast-paced development of the modern economy and the continuous improvement and upgrading of information technology have allowed the management of traditional data information to be upgraded to software storage, induction, and centralized management of data information. This book lending system was born in such a large environment, which can help managers to process huge data information in a short time. Using this software tool can help managers improve transaction processing efficiency and achieve double the result with half the effort.

web CSS笔记1

CSS(Cascading Style Sheets) 美化样式 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。 引入CSS样式表(书写位置) 1、内部样式表 内嵌式是将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义,其基本语法格式如下:style标签一般位于head标签中title标签之后,也可以把他放在HTML文档的任何地方。 <head> <meta charset="UTF-8"> <title>Document</title> <style> /* 选择器{ 属性名:属性值; 属性名:属性值; } */ div { width: 300px; height: 300px; background-color: pink; } </style> </head> 2、行内式(内联样式) 是通过标签的style属性来设置元素的样式 <标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 </标签名> 3、外部样式表(外链式) 链入式是将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中 <head> <link href="CSS文件的路径" rel="stylesheet" /> </head> 一个CSS文件可以什么都不写,引用其他CSS文件 @import url(xxx.css的路径) 选择器 1、类选择器(基本选择器) .类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; } 标签调用的时候用 class=“类名” 即可。 <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>Document</title> <style> .box1 { width: 100px; height: 100px; background-color: pink; } </style> </head> <body> <div class="