solr的原理是什么

1 Java程序里如果有无限for循环的代码导致CPU负载超高,如何排查?

排查Java程序中由于无限循环导致的CPU负载过高的问题,可以按照以下步骤进行:

  1. 资源监控

    • 使用系统命令行工具(如Linux上的tophtop,Windows上的Task Manager)实时查看进程ID和线程占用CPU的情况。
    • 对于Java进程,可以使用jps命令找到Java应用的进程ID,然后用jstack <pid>命令获取线程堆栈信息,分析哪些线程正在执行循环操作。
  2. 分析线程堆栈

    • 通过jstack输出的结果,查找CPU占用率较高的线程,观察其调用栈。如果发现某个线程一直在执行循环相关的代码且没有退出条件,那么这很可能是问题所在。
  3. 定位代码逻辑

    • 根据堆栈信息定位到具体的类名和方法,结合代码审查来找出可能陷入死循环或者执行过于频繁的代码段。
  4. 日志分析

    • 检查应用的日志输出,尤其是错误日志和调试日志,看看是否有与循环相关的问题提示。
  5. 性能分析工具

    • 使用Java性能分析工具,如JDK自带的VisualVM或更专业的JProfiler等,它们能够显示线程状态、CPU热点以及内存消耗等详细信息,帮助定位具体耗时的操作。
  6. 优化与修复

    • 找到有问题的循环后,检查并确保有正确的退出条件,并对循环体内的逻辑进行优化,比如减少不必要的计算、避免锁竞争等。
  7. 测试验证

    • 在修复了疑似问题之后,重新部署并运行程序,观察CPU负载是否恢复正常,同时通过性能测试确保修复方案有效。
  8. 预防措施

    • 建立健全的代码规范和单元测试,确保涉及到循环的代码都有限制条件并且不会无限制执行下去。

总结起来,解决这类问题的关键在于及时获取系统的实时资源使用情况、利用工具分析Java应用程序内部的线程行为,并通过对代码逻辑的深入理解找到问题源头,最后采取相应的修复策略降低CPU负载。

2 solr的原理是什么?是怎么保证排序的?

Solr 是一个基于 Apache Lucene 构建的高性能、可伸缩的全文搜索引擎。其主要原理包括以下几个方面:

  1. 索引构建

    • Solr 使用 Lucene 的倒排索引(Inverted Index)机制。在倒排索引中,每个文档中的单词会被解析并存储在一个与该单词关联的列表中,列表包含了所有包含这个单词的文档ID及其相关元数据(如词频、位置信息等)。这样,在搜索时,可以快速定位到包含查询词的文档集合。
  2. 分词处理

    • 文档在被索引前会经过分析器(Analyzer)处理,对文本进行分词、过滤和标准化操作,确保索引的质量和准确性。
  3. 文档存储

    • Solr 除了存储文档的关键字索引外,还支持存储各种类型的字段,并且这些字段可以有不同的属性,例如是否可检索、是否排序、是否存储等。
  4. 排序保证

    • 在 Solr 中,用户可以通过sort参数指定排序字段及顺序。当需要对结果集进行排序时,Solr 根据索引中预先计算好的排序值来完成。对于数值型和日期型字段,可以直接利用索引中的原始值;对于文本型字段,一般会使用 TF-IDF 等算法计算出相关性得分来进行排序。
  5. 分布式搜索

    • 对于大规模数据集,Solr 支持分布式索引和查询,通过将索引拆分成多个分片(Shard),在多台服务器上分散存储,并通过路由规则合并各个分片返回的结果,再按照指定的排序策略返回最终有序的结果集。

总结来说,Solr 通过建立高效的倒排索引结构、灵活的字段类型定义以及分布式架构的支持,不仅实现了高效检索,也能够保证对检索结果进行精确或复杂条件的排序。

3 MyBatis里${}和#{}的区别是什么?发生SQL注入的原理是什么?

在MyBatis中,${} 和 #{} 是两种不同的动态SQL标签,它们主要区别在于参数传递和预编译处理的方式不同:

  1. #{}

    • 用法:#{paramName}
    • 工作原理:使用#{}时,MyBatis会将参数替换为预编译的占位符(PreparedStatement),即在执行SQL语句前先进行预编译,实际传入的是一个问号(?)作为参数标记,并且在执行时会自动对传入的参数值进行类型检查和安全转义,因此可以防止SQL注入。
    • 示例:SELECT * FROM users WHERE id = #{id}
  2. ${}

    • 用法:${paramName}
    • 工作原理:使用${}时,MyBatis会直接将参数值插入到SQL语句中,不做任何预编译处理,因此无法防御SQL注入攻击。这种写法适合于字符串拼接或需要原生数据库特定语法支持的情况,但通常不推荐用于可能包含用户输入的数据。
    • 示例:SELECT * FROM users WHERE name = '${name}' (此情况下若name变量来自用户输入,则存在SQL注入风险)

SQL注入的原理: SQL注入是一种常见的网络安全漏洞,它允许恶意用户通过在输入字段中插入精心构造的SQL代码来改变原本SQL查询的行为。

例如,在没有预防措施的情况下,假设一个登录系统使用了如下SQL查询:

 

Sql

1String sql = "SELECT * FROM users WHERE username = '" + userInput + "' AND password = '" + userPassword + "'";

如果用户输入用户名为 ' OR '1'='1,密码任意,那么生成的实际执行的SQL语句将会变成:

 

Sql

1SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'somepassword';

由于 '1'='1 永远为真,这会导致查询返回所有用户的信息,而非仅仅匹配指定用户名和密码的用户信息,从而实现了SQL注入攻击。

在MyBatis中,使用#{}参数化查询可以避免此类问题,因为即使用户输入包含SQL关键字或特殊字符,也会被正确转义并作为预编译参数处理,确保不会影响SQL语句的整体结构和意图。

4 MyBatis里可以返回哪些对象?

在MyBatis中,可以根据SQL查询的结果映射到多种类型的Java对象。以下是一些常见的返回类型:

  1. 单个Java Bean

    • 当查询结果只有一条记录时,可以通过resultType属性指定一个具体的Java Bean类,MyBatis会将查询结果自动映射到该Bean的属性上。
  2. 集合类型的Java Bean

    • 当查询结果有多条记录时,可以将结果映射到Java Bean的集合上,如List、ArrayList等。例如:
       Xml 
      1<select id="selectAllUsers" resultType="com.example.User">
      2    SELECT * FROM users
      3</select>
    • 这里返回的是User对象的一个列表。
  3. Map类型

    • 查询结果可以映射为Map对象,其中键是列名或自定义键名(通过resultMap中的propertycolumn映射),值是对应的列值。
       Xml 
      1<select id="selectUserDetails" resultType="java.util.Map">
      2    SELECT id as userId, name as userName FROM users WHERE id = #{id}
      3</select>
    • 这里返回的是一个Map对象,键为"userId"和"userName",对应数据库中的"id"和"name"字段。
  4. 简单类型

    • 如果查询结果仅包含一个简单的值(比如整数、字符串或其他基本数据类型),可以指定相应的Java简单类型作为resultType
       Xml 
      1<select id="countAllUsers" resultType="int">
      2    SELECT COUNT(*) FROM users
      3</select>
    • 此处返回的是一个整数值。
  5. 自定义复杂类型

    • MyBatis还可以处理更为复杂的返回类型,包括嵌套的对象结构或者联合查询结果映射到用户自定义的复杂类型。
  6. 多个结果集

    • 通过使用<resultMap>配合<collection><association>元素,可以处理多表关联查询并映射成复杂的对象关系模型。

总之,在MyBatis中,只要能够根据SQL查询结果正确地映射到Java对象的属性上,几乎可以返回任何Java类型的数据结构。

4 MyBatis在开发中什么情况下回用到${}符号?

在MyBatis开发中,使用 ${} 符号的主要情况通常包括以下几点:

  1. 动态SQL拼接: 当需要在SQL语句中进行字符串拼接时,比如构建一个包含动态部分的表名、列名或者条件等,可以使用${}。但是需要注意的是,使用${} 时要确保传递进来的变量值是安全可靠的,因为这样直接插入到SQL中不会进行预编译和参数化处理,存在SQL注入的风险。

    示例:

     Xml 
    1<select id="selectByTableName" resultType="com.example.MyEntity">
    2    SELECT * FROM ${tableName}
    3</select>
  2. 特殊数据库函数或操作符: 对于某些特定数据库提供的函数或操作符,如果它们不支持预编译参数化的占位符(例如Oracle中的序列生成器nextval()),则可能需要使用${}来直接嵌入这些特殊的表达式。

    示例(Oracle序列):

     Xml 
    1<insert id="insertEntity">
    2    INSERT INTO my_table (id, name)
    3    VALUES (${seq.nextval()}, #{name})
    4</insert>
  3. 自定义动态片段: 在编写动态SQL时,通过 <sql> 标签定义的可复用片段内的变量引用也可能会用到 ${}

    示例:

     Xml 
    1<sql id="columnList">${customColumnList}</sql>
    2...
    3<select id="selectWithCustomColumns" resultType="com.example.MyEntity">
    4    SELECT 
    5        <include refid="columnList"/>
    6    FROM my_table
    7</select>

总之,在实际应用中,虽然${}能够提供一定的灵活性,但因其安全性较低,推荐尽量避免在用户输入可控的情况下使用${},而优先选择更安全的#{}方式以防止SQL注入攻击。在确实需要使用${}的场景下,应确保传入的变量已做过严格的验证和转义处理。

5 常用的linux命令,并阐述作用

以下是一些Linux系统中常用的命令及其作用:

  1. ls

    • 用途:列出当前目录下的文件和子目录信息。
    • 示例:ls 列出当前目录的文件列表;ls -l 以详细格式(长格式)列出,包括权限、大小、所有者、组、修改日期等。
  2. cd

    • 用途:切换工作目录。
    • 示例:cd /path/to/directory 进入指定目录;cd .. 返回上一级目录;cd ~ 回到用户的家目录。
  3. mkdir

    • 用途:创建新目录。
    • 示例:mkdir directory_name 创建名为directory_name的新目录。
  4. touch

    • 用途:创建新的空文件或更新已存在文件的时间戳。
    • 示例:touch file.txt 创建一个名为file.txt的新文件或更新其最后访问/修改时间。
  5. rm

    • 用途:删除文件或目录。
    • 示例:rm file.txt 删除单个文件;rm -r directory 删除目录及其内容(递归删除)。
  6. cp

    • 用途:复制文件或目录。
    • 示例:cp file1 file2 复制文件1为文件2;cp -r dir1 dir2 递归复制目录dir1到dir2。
  7. mv

    • 用途:移动或重命名文件与目录。
    • 示例:mv file oldname newname 重命名文件;mv file directory 将文件移动到指定目录内。
  8. cat 或 less 或 more

    • 用途:查看文件内容。
    • 示例:cat file.txt 直接显示文件内容;less file.txt 或 more file.txt 分页查看文件内容。
  9. echo

    • 用途:输出文本到终端或写入文件。
    • 示例:echo "Hello World" 在终端打印字符串;echo "text" > file.txt 将文本写入到file.txt。
  10. grep

    • 用途:在文件或标准输入中搜索匹配特定模式的行。
    • 示例:grep 'pattern' file.txt 在file.txt中查找包含pattern的行。
  11. find

    • 用途:在指定目录下按照条件查找文件。
    • 示例:find . -name "*.txt" 在当前目录及其子目录下查找扩展名为.txt的所有文件。
  12. pwd

    • 用途:显示当前工作目录的绝对路径。
    • 示例:pwd
  13. chmod

    • 用途:更改文件或目录的权限。
    • 示例:chmod 755 script.sh 更改script.sh文件权限为rwxr-xr-x。
  14. chown 和 chgrp

    • 用途:更改文件或目录的所有者和所属组。
    • 示例:chown user:group file.txt 更改file.txt的所有者为user,所属组为group。
  15. apt-get(Debian/Ubuntu系列)或 yum(RHEL/CentOS系列):

    • 用途:管理软件包,包括安装、升级、卸载等操作。
    • 示例:apt-get install package 安装指定软件包;yum install package 同样用于安装指定软件包。
  16. vi/vim 或 nano 或 emacs

    • 用途:文本编辑器,用于创建和编辑文本文件。
    • 示例:vim file.txt 打开或新建并编辑file.txt文件。

以上列举了一些Linux中最基本且常用的命令,实际使用时可能还有其他众多命令根据具体需求进行选择。

 6 当你请求了一个url地址后,它的后面都发生了什么?

当你在浏览器或其他客户端请求一个URL地址后,发生了一系列的步骤和交互过程。以下是这个过程中涉及的主要阶段:

  1. 域名解析

    • 首先,浏览器需要将URL中的域名转换为服务器的IP地址。这个过程通过DNS(Domain Name System)进行,即查询本地缓存、系统缓存、路由器缓存以及递归查询DNS服务器来获取目标服务器的IP地址。
  2. 建立TCP连接

    • 获取到服务器的IP地址后,浏览器使用HTTP协议(通常是HTTP/1.x或HTTP/2)发起连接请求,与服务器建立一个TCP连接(通常端口是80对于HTTP或者443对于HTTPS)。
  3. SSL/TLS握手(仅限HTTPS)

    • 如果是HTTPS请求,会先执行TLS/SSL握手以加密通信。客户端验证服务器证书的有效性,双方协商加密套件并交换密钥,从而确保数据传输的安全性。
  4. 发送HTTP请求

    • 客户端构建一个HTTP请求报文,并将其发送给服务器。请求报文中包含方法(如GET、POST等)、URL路径、HTTP版本号、请求头(包括Cookie、User-Agent等信息)以及可能的请求体。
  5. 服务器处理请求

    • 服务器接收到请求后,根据请求方法和URL路径找到相应的资源处理器进行处理。如果是动态内容,可能涉及到Web服务器(如Apache、Nginx)将请求转发给应用服务器(如Tomcat、Node.js),由应用程序生成响应内容。
  6. 生成HTTP响应

    • 服务器处理完请求后,创建一个HTTP响应报文,其中包含状态码(如200表示成功)、响应头部(Content-Type、Set-Cookie等)、以及响应体(HTML页面、JSON数据、图片等)。
  7. 发送响应

    • 服务器通过已建立的TCP连接将HTTP响应报文发回给客户端。
  8. 浏览器接收响应并渲染页面

    • 浏览器接收到响应后,解析响应头和响应体。对于HTML文档,它会开始解析HTML结构,并发出对CSS、JavaScript文件和图片等资源的额外HTTP请求(这称为“瀑布流”或“并行下载”)。同时,浏览器按照HTML标签和CSS样式构建DOM树,并执行JavaScript代码来进一步丰富页面功能和交互。
  9. 关闭连接

    • 根据HTTP协议(持久连接或多路复用技术)决定是否保持连接打开供后续请求重用,否则关闭TCP连接。

整个过程涉及了网络层、传输层、应用层等多个层面的交互,确保用户能够顺利访问和查看网页内容。

7 maven的生命周期有哪些?

Maven的生命周期主要包括三大核心构建周期:

  1. clean 生命周期:

    • 这个生命周期主要用于清理项目,包含一个单独的阶段,即 mvn clean。该命令会删除项目构建过程中生成的目标文件夹(默认是target目录),包括编译输出、测试结果、打包后的JAR或WAR文件等。
  2. default 或者也称为 default build lifecycle

    • 这是Maven中最常用的生命周期,涵盖了构建项目的大部分常见过程,包括以下阶段(顺序执行):
      • validate: 验证项目是否正确且所有必要的信息都可用。
      • initialize: 初始化构建状态,例如设置属性。
      • generate-sources: 生成额外的源代码。
      • process-sources: 处理源代码资源,如过滤等。
      • compile: 编译项目的主源代码。
      • process-classes: 对已编译的类进行后期处理操作。
      • generate-test-sources: 生成测试相关的源代码。
      • process-test-sources: 处理测试源代码资源。
      • test-compile: 编译测试源代码到相应的目录。
      • process-test-classes: 后期处理和归档测试类文件。
      • test: 使用合适的单元测试框架运行测试。
      • prepare-package: 在最终打包之前进行任何必要的准备。
      • package: 打包编译好的代码为可发布的格式(如JAR、WAR、EAR等)。
      • pre-integration-test: 在集成测试前执行的动作。
      • integration-test: 如果存在,执行集成测试。
      • post-integration-test: 在集成测试后执行的动作,可能包括清理工作目录等。
      • verify: 验证集成测试的结果以确认构建质量。
      • install: 将包安装到本地仓库中,可供本地其他Maven项目作为依赖使用。
      • deploy: 将最终的包部署到远程仓库中,供其他开发人员或构建系统共享。
  3. site 生命周期:

    • 此生命周期用于生成项目的站点文档,包括项目报告、API文档等。主要阶段包括:
      • pre-site: 站点生成前的准备工作。
      • site: 生成项目站点文档。
      • post-site: 站点生成后的附加操作。
      • site-deploy: 将生成的站点发布到实际的站点服务器上。

每个生命周期中的阶段都是有序的,并且可以单独指定要执行的某个阶段,Maven会自动执行这个阶段之前的所有必要阶段。通过这些生命周期,Maven确保了项目构建过程的标准化和一致性。

http2

HTTP/2 是超文本传输协议(HTTP, HyperText Transfer Protocol)的第二个主要版本,由互联网工程任务组(IETF)于2015年发布。它是 HTTP/1.1 的继任者,并且设计用于提高网页性能、减少延迟并优化带宽使用。以下是HTTP/2的一些关键特性:

  1. 多路复用: 在HTTP/1.x中,每个请求都需要一个单独的TCP连接,这可能导致“队头阻塞”问题,即浏览器在等待一个请求完成时无法处理其他请求。HTTP/2通过在一个TCP连接上同时发送多个请求和响应来解决这个问题,从而显著提升并发性能。

  2. 二进制分帧层: HTTP/2引入了二进制分帧层,它将HTTP消息分解为更小的帧,允许交错发送和优先级排序。每一个帧都有自己的标识符,服务端和客户端可以独立地对这些帧进行解析和处理。

  3. 头部压缩: HTTP/2使用HPACK压缩算法来压缩请求和响应头部,大大减少了数据传输量,特别是对于包含大量重复头部的场景。

  4. 服务器推送: 服务器能够主动向客户端推送资源,而无需客户端显式发起请求。这意味着当客户端请求某个资源时,服务器可以根据上下文判断并提前推送可能需要的其他资源,如CSS或JavaScript文件。

  5. 流量控制: HTTP/2支持流级别的流量控制,允许两端点根据自身处理能力调整数据流的速度,以防止缓冲区溢出等问题。

  6. 请求优先级: 客户端可以通过设置请求的优先级,指导服务器按照重要性顺序发送内容,提高了页面加载速度和用户体验。

HTTP/2的设计极大地改善了Web应用的性能,使得网页加载更快、更有效率。大多数现代浏览器和许多服务器都已支持HTTP/2协议

HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。它定义了客户端(如Web浏览器)与服务器端(如Web服务器)之间的通信格式和数据交互规则,是互联网上应用最为广泛的一种网络协议。

HTTP协议的主要特点包括:

  1. 请求/响应模型: HTTP采用的是客户端发起请求、服务器处理请求并返回响应的模式。

  2. 无状态: 除非使用Cookie或Session等技术进行扩展,否则HTTP协议本身是无状态的,这意味着每次请求都是独立的,服务器不保留任何关于客户端上下文的信息。

  3. 方法: 定义了多种请求方法,如GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。

  4. 报文结构

    • 请求报文包含:请求行(方法、URL、协议版本)、请求头部、空行和可选的请求主体。
    • 响应报文包含:状态行(协议版本、状态码、状态描述)、响应头部、空行和可选的响应主体。
  5. 缓存机制: HTTP协议支持缓存功能,通过Cache-Control、Expires等头部字段控制资源是否可以被缓存及缓存的有效期。

  6. 连接管理: 在HTTP/1.x中,为了复用TCP连接以减少延迟,引入了持久连接(Keep-Alive),而在HTTP/2中则进一步改进为多路复用技术。

  7. 安全性: HTTP可以通过HTTPS(HTTP Secure)提供安全保护,HTTPS是HTTP协议在SSL/TLS协议之上的封装,提供了数据加密、服务器身份验证以及消息完整性校验等功能。

  8. 版本演进

    • HTTP/1.0:最早的HTTP版本,存在一些性能问题,比如队头阻塞现象。
    • HTTP/1.1:成为事实上的标准,引入了持久连接、管道化、分块传输编码等特性,改善了性能。
    • HTTP/2:大幅提升了性能,增加了二进制分帧、多路复用、头部压缩等新特性。
    • HTTP/3:基于QUIC协议,进一步优化了传输效率,特别是针对高延迟网络环境下的性能表现。

HTTP协议广泛应用于Web服务、API调用、文件下载等多种场景,是现代互联网体系结构中的基础组成部分。

在计算机网络中,通常提到的“IP 7层”是指OSI(Open Systems Interconnection)七层模型。但实际上,IP协议属于TCP/IP四层或五层模型中的网络层。为了帮助您理解,我将分别介绍OSI七层模型和TCP/IP模型,并指出IP所处的位置:

OSI七层模型:

  1. 应用层(Application Layer):直接与应用程序交互,定义了各种应用服务的接口标准。
  2. 表示层(Presentation Layer):负责数据格式转换、加密解密等处理。
  3. 会话层(Session Layer):管理不同主机之间的会话连接和同步。
  4. 传输层(Transport Layer):确保数据可靠传输,如TCP(传输控制协议)、UDP(用户数据报协议)。
  5. 网络层(Network Layer):负责路径选择和数据包转发,IP协议就位于这一层,它为数据包提供逻辑地址并进行路由选择。
  6. 数据链路层(Data Link Layer):封装帧并在物理链路上进行传输,例如以太网协议(Ethernet)和点对点协议(PPP)。
  7. 物理层(Physical Layer):定义了网络设备如何发送和接收比特流,包括电压、线缆规格、信号速率等。

TCP/IP模型(五层模型时,合并了OSI模型的数据链路层和物理层):

  1. 应用层(Application Layer):与OSI模型的应用层类似。
  2. 传输层(Transport Layer):与OSI模型的传输层相同,包含TCP和UDP。
  3. 网络层(Internet Layer):对应于OSI模型的网络层,IP协议在此层工作,负责数据包的寻址和路由。
  4. 数据链路层(Link Layer 或 Network Interface Layer):融合了OSI模型的数据链路层和物理层的功能,处理与物理介质直接交互的细节。

所以,在谈论“IP 7层”的时候,实际上应该指的是IP协议所在的网络层在OSI七层模型中的位置。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/357340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytest 识别case规则

一、Python测试框架&#xff0c;主要特点有以下几点&#xff1a; 简单灵活&#xff0c;容易上手&#xff1b;支持参数化&#xff1b;能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/appnium等自动化测试、接口自动化测试&#xff08;pytestrequests…

JavaWeb中的Filter(过滤器)和 Listener(监听器)

提示&#xff1a;这两个东西听起来似乎很难&#xff0c;实际上是非常简单的&#xff0c;按照要求写就行了&#xff0c;一定不要被新名词给吓到了。 JavaWeb中的Filter&#xff08;过滤器&#xff09; 一、Filter&#xff08;过滤器&#xff09;1.如何编写 Filter2.Filter 中的细…

翻译: GPT-4 Vision征服LLM幻觉hallucinations 升级Streamlit六

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

探索Pyecharts:绘制多彩日历图的艺术与技巧

Pyecharts绘制多种炫酷日历图参数说明代码实战 导言 在数据可视化领域&#xff0c;日历图是一种直观展示时间和数据关系的方式。Pyecharts是一个基于Echarts的Python库&#xff0c;可以方便地绘制各种图表&#xff0c;包括炫酷的日历图。本篇博客将介绍Pyecharts中绘制多种炫…

Maya---补洞 桥接 连接

14.maya常用命令4.补洞 桥接 连接_哔哩哔哩_bilibili 边模式下&#xff1a; shift右键--->填充洞 对象模式下&#xff0c;可一次填充多个洞 桥接 连接工具 ctrlshift右键

SNP干货分享:SAP数据脱敏的具体实施步骤

随着信息技术的飞速发展&#xff0c;大数据时代的到来使得数据成为国家经济、企业竞争力和个人隐私的重要载体。在这种背景下&#xff0c;数据安全问题日益凸显&#xff0c;各国政府纷纷出台相关法规以保护数据安全。我国也不断完善数据安全法规体系&#xff0c;以确保国家利益…

HCIA-Datacom实验指导手册:4.1 实验一:访问控制列表配置实验,fragment分片acl演示。

HCIA-Datacom实验指导手册:4.1 实验一:访问控制列表配置实验 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握ACL的配置方法 配置方法步骤 2 掌握 ACL在接口下应用方法步骤 3 掌握 流量过滤 的基本方式步骤 4 掌握 禁止分片报文通过的方法验证五、结果…

Git怎样用?(下载到本地,和在本地初始化)

全局设置&#xff1a; 点击第二个 输入&#xff1a; 例如&#xff1b;邮箱是随意地 git config --global user.name "名字" git config --global user.email "邮箱" 获取git仓库 本地初始化&#xff1a; 创建仓库 右键第二个 输入 git init 克隆&#…

Redis(九)集群(cluster)

文章目录 概述作用1. redis集群的槽位slot2. redis集群的分片3. 第1,2点的优势&#xff1a;**最大优势&#xff0c;方便扩缩容和数据分派查找**4. slot槽位映射&#xff0c;一般业界有3种解决方案第一种&#xff1a;哈希取余分区第二种&#xff1a;一致性哈希算法分区第三种&am…

U-Boot学习(6):初始化之_main函数源码分析

在上一节系统初始化之start.S源码分析详解中&#xff0c;我们分析了上电后的代码执行流程&#xff0c;实际上就是对系统特权模式、CP15、向量表等进行配置。最后一步就是进入_main函数了&#xff0c;这个就是U-Boot的主程序了&#xff0c;它完成了对系统内存、堆栈、全局结构体…

TensorFlow2实战-系列教程7:TFRecords数据源制作1

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、TFRecords 在训练过程中&#xff0c;基本都是使用GPU来计算&#xff0c;但是取一个…

防火墙知识普及详解,使用TOR Router把TOR作为默认网关,增加隐私/匿名性

防火墙知识普及详解,使用TOR Router把TOR作为默认网关,增加隐私/匿名性。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者…

【ArcGIS微课1000例】0099:土地利用变化分析

本实验讲述在ArcGIS软件中基于两期土地利用数据,做土地利用变化分析。 文章目录 一、实验描述二、实验过程三、注意事项一、实验描述 对城市土地利用情况进行分析时,需要考虑不同时期土地利用图层在空间上的差异性,如农用地转建筑用地的空间变化。而该变化过程表现为各时期…

Glide完全解读

一&#xff0c;概述 glide作为android流行的图片加载框架&#xff0c;笔者认为有必要对此完全解读。glide提供了三级缓存、生命周期Destroy后自动移除缓存、自动适配ImageView&#xff0c;以及提供了各种对图片修饰的操作&#xff0c;如剪裁等。本文通过最简单的使用&#xff…

Spring Boot通过配置文件支持数据库自定义表名

直接上干货&#xff1a; 例如一个叫xxx的项目&#xff0c;yml文件里加上这段 xxxproject:db:xxxTable: xxx_dbname #自定义的数据库表名创一个Configuration类放表名和Mapper // XxxProjectAutoConfiguration.javaConfiguration MapperScan(basePackages "cn.com.xxxp…

PageHelper分页插件-以三层架构模型开发为例

文章目录 1、简介2、使用2.1、导入2.1.1、SpringBoot2.1.2、非SpringBoot 2.2、controller2.3、service2.4、mapper ​&#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、…

Spring Boot导出EXCEL 文件

主要功能:实现java导出excel到本地 JDK版本&#xff1a;openJDK 20.0.1 依赖pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

详细讲解Java中的Properties类

目录 前言1. 基本知识2. 代码示例3. Demo 前言 使用Properties出现中文乱码可看我这篇文章&#xff1a;properties出现中文乱码解决方法&#xff08;万能&#xff09; 1. 基本知识 Properties 类是 Java 中用于处理配置文件的工具类&#xff0c;它继承自 Hashtable 类&#…

计算机网络——IP协议

前言 网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。 IPv4报文组成&#xff08;了解&#xff09; IPv4首部&#xff1a;IPv4首部包含了用于路由和传输数据的控制信息&#xff0c;其长度为20个字节&#xff08;固定长度&#xff09;。 版本&#…

Mysql 插入数据

1 为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值。基本语法格式为&#xff1a; INSERT INTO table_name (column_list) VALUES (value_list); 使用INSERT插入数据时&#xff0c;允许列名称列表column_list为空&#xff0c;此时&…