重庆哪里有做淘宝网站推广的,wordpress 4.8.2中文,直接打开,seo怎么做优化工作1.值传递和引用传递区别#xff1f;Java中为什么都是值传递#xff1f;
值传递#xff08;Pass by Value#xff09;#xff1a;
在值传递中#xff0c;函数或方法的参数是原始数据的拷贝#xff0c;而不是原始数据本身。当你将一个值传递给函数时#xff0c;函数内部…1.值传递和引用传递区别Java中为什么都是值传递
值传递Pass by Value
在值传递中函数或方法的参数是原始数据的拷贝而不是原始数据本身。当你将一个值传递给函数时函数内部对该值的任何修改不会影响原始值。Java 中的基本数据类型如int、float、char等都是通过值传递传递给方法的。
引用传递Pass by Reference
在引用传递中函数或方法的参数是原始数据的引用或地址而不是拷贝。当你将一个引用传递给函数时函数内部对该引用所指向的对象的任何修改都会影响原始对象。Java 中的对象除了基本数据类型之外是通过引用传递传递给方法的。
在Java中通常说Java是值传递是因为所有的参数传递都是按值传递的。但是需要注意的是对于对象类型的参数传递的是对象引用的值地址或者说指针而不是对象本身。这意味着虽然对象引用是通过值传递传递的但仍然可以在方法内部修改对象的状态。
2.优先队列和队列?
优先队列Priority Queue和普通队列Queue是两种不同的数据结构它们的主要区别在于元素的排列和取出顺序。
队列Queue
队列是一种基本的数据结构遵循先进先出FIFO的原则。这意味着先进入队列的元素将首先被取出。队列通常用于处理任务或数据按照顺序到达的情况例如打印队列中的文档或处理消息队列中的消息。常见的队列操作包括入队enqueue和出队dequeue。
优先队列Priority Queue
优先队列也是一种队列但它与普通队列不同因为元素在插入时具有优先级并且元素的取出顺序取决于它们的优先级而不是它们进入队列的顺序。具有较高优先级的元素会在具有较低优先级的元素之前被取出。优先队列通常用于需要根据某种规则或权重来处理元素的情况例如任务调度、最小堆或最大堆数据结构等。常见的操作包括插入元素insert和取出优先级最高的元素extract-min或extract-max取决于实现。
在Java中可以使用PriorityQueue类来实现优先队列而标准队列可以使用Queue接口的不同实现类来实现例如LinkedList或ArrayDeque。
3.git中的暂存区是什么有什么作用为什么要有它SVN都没有暂存区
Git中的暂存区Staging Area是一个关键的概念用于在提交更改到版本库之前存储和准备要包含在下一次提交中的文件。暂存区充当了临时缓冲区允许你选择性地添加、修改或删除文件以便更好地控制提交的内容。它的主要作用包括以下几点 分离工作目录和版本库暂存区允许你将工作目录中的更改分成多个步骤你可以先将一部分更改添加到暂存区然后在适当的时候提交这些更改。这使得你可以更灵活地控制提交的内容以确保只提交了你想要的更改。 检查更改暂存区允许你仔细检查你的更改确保它们符合你的期望然后再将它们提交。这有助于减少错误提交的风险。 分支工作暂存区有助于处理分支工作。你可以在不同分支上进行更改将它们分别添加到暂存区然后根据需要切换分支并提交相应的更改。 提交清晰度暂存区提供了更清晰的提交历史。你可以通过暂存区来构建逻辑上有序的提交将相关更改分组在一起以便更容易追踪和理解项目的发展历史。
相比之下SVNSubversion等传统版本控制系统通常不具备暂存区的概念。在这些系统中你必须一次性提交所有更改包括工作目录中的所有文件更改。这可能导致一些问题如无法选择性提交、更改未准备好提交等。Git引入了暂存区以解决这些问题并提供更多灵活性。
暂存区是Git的一个重要特性它使版本控制更加灵活允许开发人员更好地管理和控制他们的更改以便构建更可靠和清晰的版本历史。
4. 数组和arraylist区别 都能装什么类型的数据
数组Array
数组是一个固定大小的数据结构一旦创建其大小通常不能更改。数组可以包含基本数据类型如int、double、char等 和包装类以及对象类型如自定义类的对象。数组元素的类型必须是相同的即数组可以存储相同类型的数据。
ArrayList
ArrayList是Java集合框架中的一个类它实现了可变大小的动态数组。ArrayList可以包含对象类型而不限于基本数据类型。你可以存储任何对象包括基本数据类型的包装类。ArrayList可以自动增长以适应添加的元素因此不需要提前指定大小。ArrayList提供了丰富的方法来操作和管理列表例如添加、删除、查找、遍历等。ArrayList是泛型容器泛型参数需要是一个引用类型对象类型。基本数据类型不是引用类型而是值类型。
5.p2p 是什么
P2P或点对点Peer-to-Peer是一种网络架构其中每个节点或计算机在网络中扮演相同的角色与其他节点直接通信而不依赖于中央服务器或中心节点。在P2P网络中节点之间可以充当客户端和服务器允许它们相互交换数据、资源或服务。
主要特点和优点包括 去中心化P2P网络不需要中央服务器来协调节点之间的通信。每个节点都可以直接与其他节点通信从而减少单点故障的风险。 分布式数据和资源可以在网络中分布存储从而提高了数据冗余性和可靠性。这有助于降低网络中断的风险。 自扩展性P2P网络通常具有自扩展性允许新节点加入网络并贡献资源从而扩大网络的规模和性能。 隐私和安全P2P网络可以提供更好的隐私和安全因为数据不需要通过中央服务器传递而是在节点之间直接交换。 分担负载P2P网络分散了数据传输的负担因此可以减轻服务器的负载提高整体性能。
P2P网络在许多领域都有应用包括文件共享如BitTorrent、区块链、语音通信、在线游戏、视频流媒体等。然而P2P网络也可能面临一些挑战如安全性、管理、数据一致性等问题需要仔细考虑和处理。
6.堆排序实现过程时间复杂度 建立初始堆将待排序的数组视为一个完全二叉树并构建一个初始的最大堆或最小堆其中根节点的值大于或小于子节点的值。构建堆的过程可以从最后一个非叶子节点开始自底向上通过不断调整堆的结构来实现。这确保了根节点是最大或最小元素。 交换堆顶和末尾元素将堆顶元素根节点与数组的最后一个元素交换位置这将最大或最小元素移至数组的末尾。 调整堆将堆的大小减一然后对新的堆顶元素执行一次堆调整sift down操作将次大或次小元素移到堆顶。重复这个过程直到整个数组有序。 重复步骤2和3直到整个数组排序完成。
堆排序的时间复杂度是O(n * log n)其中n是要排序的元素数量。堆排序是不稳定的排序算法因为在交换堆顶元素的过程中相等元素的相对顺序可能会改变。堆排序在最坏、平均和最好情况下的时间复杂度都是一样的因此具有稳定的性能。尽管堆排序的时间复杂度相对较高但它具有原地排序的特点不需要额外的内存空间来存储数据因此对于大规模数据集来说它仍然是一个有效的排序算法。
为什么堆排序在最坏、平均和最好情况下的时间复杂度都是一样的
因为堆排序的主要时间消耗在两个方面建立初始堆和进行堆调整Heapify操作。不管数组的初始状态如何这两个过程都具有相同的时间复杂度。 建立初始堆在最坏、平均和最好情况下建立初始堆所需的时间都是O(n)因为我们可以通过从最后一个非叶子节点开始自底向上逐个进行堆调整操作以线性时间构建初始堆。 堆调整操作堆调整操作的时间复杂度是O(log n)因为在每次调整过程中我们将堆的高度减小1。
7.http和tcp关系
TCPTransmission Control Protocol
TCP是一种面向连接的、可靠的传输层协议它负责确保数据可靠地传输。它处理数据的分割、重组、流控制、错误检测和纠正等任务在进行数据通信时客户端和服务器之间首先建立TCP连接然后可以在连接上进行数据传输。TCP是一种基于字节流的协议它提供了有序的、可靠的数据传输并在通信结束时关闭连接。
HTTPHypertext Transfer Protocol
HTTP是一种应用层协议用于在Web上传输超文本文档如网页。它建立在TCP之上利用TCP的可靠性和连接功能。HTTP定义了客户端和服务器之间的请求和响应的消息格式以便获取和传递Web资源。HTTP是一种无状态协议每个HTTP请求都是独立的服务器不会保留关于之前请求的信息除非使用会话或Cookie等机制来维护状态信息。
HTTP使用TCP作为其传输层协议这是因为TCP提供了可靠的、面向连接的通信适合于需要确保数据完整性和可靠性的Web通信。在HTTP通信中客户端通常是Web浏览器向服务器发送HTTP请求服务器接收并处理请求然后返回HTTP响应。这些HTTP请求和响应都被封装在TCP连接中以便安全可靠地传输数据。
8.操作系统局部性原理是什么有什么作用
操作系统的局部性原理是一种关于计算机性能优化的原则它包括两个重要概念时间局部性Temporal Locality和空间局部性Spatial Locality。这些原理描述了在程序执行期间计算机系统访问数据和指令的方式以便更有效地利用计算机的存储系统和缓存从而提高性能。
时间局部性Temporal Locality
时间局部性指的是在短时间内如果程序访问了某个数据或指令那么在不久的将来它可能会再次访问相同的数据或指令。这意味着一旦数据被加载到计算机的高速缓存或寄存器中它在接下来的指令中可能会被多次使用从而减少了内存访问的开销。
空间局部性Spatial Locality
空间局部性指的是如果程序访问了某个数据或指令那么它可能会在附近的位置上访问其他数据或指令。这意味着程序往往在内存中访问一块连续的数据从而可以从内存中读取较大块的数据以满足未来的需求。
局部性原理的作用包括 提高性能局部性原理有助于减少内存访问的延迟从而提高计算机程序的性能。通过减少缓存未命中和内存访问次数可以大幅降低程序的执行时间。 更好地利用缓存局部性原理有助于更好地利用计算机的高速缓存。缓存是一种存储子系统可以加速数据访问而局部性原理可以最大限度地减少缓存的未命中率。 减少I/O开销对于磁盘和网络访问局部性原理同样适用。减少磁盘和网络访问次数可以显著减小I/O开销提高整体系统性能。
9.泛型是什么有什么作用
所谓泛型就是允许在定义类、接口时通过 一个标识 表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时确定。 泛型
10.Java序列化、serialVersionUID什么作用如果序列化时serialVersionUID不一致会怎么样
Java序列化是将对象转换为字节流以便在网络传输或保存到磁盘上。它允许对象的状态在不同应用程序和平台之间进行传输和重建。serialVersionUID 是一个序列化版本号用于标识类的不同版本。它在类的序列化和反序列化过程中用于检查类的版本是否匹配以确保反序列化的对象与序列化时的类版本兼容。如果版本不一致反序列化会失败并抛出 InvalidClassException。
11.Java泛型中的类型擦除
类型擦除是Java泛型的特性之一。它意味着在编译时泛型类型信息会被擦除编译后的字节码中不再包含泛型类型信息。这是为了保持Java的向后兼容性和减少运行时开销。例如List 和 List 在运行时都被视为 ListObjectgt泛型类型参数被擦除为它们的上界通常是 Object。
类型擦除的特征
所有泛型类的类型参数在编译时都会被擦除虚拟机运行时中没有泛型只有普通类和普通方法从这一点上来说Java中的泛型从某种程度上是一种语法糖Java泛型不支持基本类型 例如 short int double等在泛型代码内部无法获得任何有关泛型参数类型的信息如果传入的类型参数为T那么在泛型代码内部你不知道T有什么方法属性关于T的一切信息都丢失了创建泛型对象时请指明类型让编译器尽早的做参数检查不要忽略编译器的警告信息那意味着潜在的ClassCastException等着你Java的泛型类型不能用于new构建对象也不能用于初始化数组.泛型不能用于显性地引用运行时类型的操作之中例如转型instanceof和new操作包括new一个对象new一个数组因为所有关于参数的类型信息都在运行时丢失了所以任何在运行时需要获取类型信息的操作都无法进行工作。
12.MYSQL的时间类型
MySQL支持多种时间类型常见的有 DATE、TIME、DATETIME、TIMESTAMP、YEAR 等。选择哪种时间类型取决于需求一般建议使用 DATETIME 或 TIMESTAMP它们提供了日期和时间的完整信息。TIMESTAMP 和 DATETIME 都占用8字节的存储空间。TIMESTAMP 的优点是自动更新时间戳适合存储记录的创建和修改时间。缺点是其范围有限从1970年到2038年。DATETIME 不受时间戳范围限制但需要手动设置时间值。
13.MYSQL聚簇索引索引分类
在InnoDB存储引擎中根据索引的存储形式可以分为以下两种 二级索引细分 单列索引即一个索引只包含单个列。
联合索引即一个索引包含了多个列。
14.JPA和MyBatis的区别、优缺点
JPAJava Persistence API和 MyBatis 是两种不同的持久化框架。JPA 是一种ORM对象关系映射框架它将Java对象映射到数据库表提供了对象级的数据访问。它具有标准化的API例如Java EE标准中的JPA规范。MyBatis 是一种SQL映射框架它将SQL语句映射到Java方法并提供了更直接的数据库访问控制。JPA的优点包括标准化、面向对象、自动化查询生成等。MyBatis的优点包括更灵活的SQL控制、性能调优能力、SQL可读性。JPA适用于需要标准化和对象级别映射的应用MyBatis适用于需要更细粒度控制SQL的应用。
15.MYBATIS中#和除了预防SQL注入还有什么区别
#井号预编译参数
#用于预编译参数它将参数值安全地填充到SQL语句中并可以防止SQL注入攻击。#在传递参数值之前会将参数值转义使之成为SQL语句的一部分。#通常用于传递参数值如 SELECT * FROM table WHERE column #{value}。
和号直接替换参数 用于直接替换参数它将参数值不加处理地插入SQL语句中。 不会进行预编译因此需要小心防止SQL注入攻击应确保参数值是安全的。 通常用于传递SQL片段、表名、列名等不需要转义的部分如 SELECT * FROM t a b l e N a m e W H E R E c o l u m n ′ {tableName} WHERE column tableNameWHEREcolumn′{value}。
除了预防SQL注入之外这两种参数处理方式还有其他区别和使用场景
#适用于传递参数值如数字、字符串等。它可以确保参数值的安全性并且不需要手动处理引号等问题。 适用于传递SQL片段表名、列名等需要直接插入SQL语句的情况。在使用 时需要特别小心确保传递的内容是受信任且不会引发SQL注入问题。总的来说选择 # 还是 取决于你要传递的内容和是否需要防止SQL注入。通常建议尽量使用 # 来确保安全性只有在特殊情况下使用 并小心防范潜在的风险。
16.HTTP常见状态码、302和301的区别 1xx 信息
100 Continue 表明到目前为止都很正常客户端可以继续发送请求或者忽略这个响应。
2xx 成功
200 OK204 No Content 请求已经成功处理但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息而不需要返回数据时使用。206 Partial Content 表示客户端进行了范围请求响应报文包含由 Content-Range 指定范围的实体内容。
3xx 重定向 301 Moved Permanently 永久性重定向 302 Found 临时性重定向 当客户端发送一个请求后服务器可以返回 302 响应同时提供一个新的URL客户端会被重定向到新的URL来获取资源。302 是一种临时性重定向客户端应该继续使用原始URL。与 302 不同301 表示资源的重定向是永久的客户端应该将原始URL更新为新的URL并在以后的请求中使用新URL。301 对于搜索引擎优化SEO很重要因为它告诉搜索引擎新的URL是永久性的应该更新索引。 303 See Other 和 302 有着相同的功能但是 303 明确要求客户端应该采用 GET 方法获取资源。 304 Not Modified 如果请求报文首部包含一些条件例如If-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-Since如果不满足条件则服务器会返回 304 状态码。 307 Temporary Redirect 临时重定向与 302 的含义类似但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
4xx 客户端错误
400 Bad Request 请求报文中存在语法错误。401 Unauthorized 该状态码表示发送的请求需要有认证信息BASIC 认证、DIGEST 认证。如果之前已进行过一次请求则表示用户认证失败。403 Forbidden 请求被拒绝。404 Not Found
5xx 服务器错误
500 Internal Server Error 服务器正在执行请求时发生错误。503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护现在无法处理请求。