网站开发语言识别北京优秀的网站建设公司

web/2025/9/30 6:18:07/文章来源:
网站开发语言识别,北京优秀的网站建设公司,网络营销方式有,网站优化体验报告python缓冲区When people who speak different languages get together and talk, they try to use a language that everyone in the group understands. 当说不同语言的人聚在一起聊天时#xff0c;他们会尝试使用小组中每个人都能理解的语言。 To achieve this, everyone …python缓冲区When people who speak different languages get together and talk, they try to use a language that everyone in the group understands. 当说不同语言的人聚在一起聊天时他们会尝试使用小组中每个人都能理解的语言。 To achieve this, everyone has to translate their thoughts, which are usually in their native language, into the language of the group. This “encoding and decoding” of language, however, leads to a loss of efficiency, speed, and precision.The same concept is present in computer systems and their components. Why should we send data in XML, JSON, or any other human-readable format if there is no need for us to understand what they are talking about directly? As long as we can still translate it into a human-readable format if explicitly needed.Protocol Buffers are a way to encode data before transportation, which efficiently shrinks data blocks and therefore increases speed when sending it. It abstracts data into a language- and platform-neutral format. 为了实现这一目标每个人都必须将他们通常以其本国语言表达的思想翻译成小组的语言。 但是这种语言的“编码和解码”会导致效率速度和精度的损失。计算机系统及其组件中存在相同的概念。 如果不需要我们直接了解他们在说什么为什么我们应该以XMLJSON或任何其他人类可读格式发送数据 只要明确需要我们仍然可以将其转换为人类可读的格式。协议缓冲区是一种在传输之前对数据进行编码的方法它可以有效地缩小数据块从而提高发送数据时的速度。 它将数据抽象为与语言和平台无关的格式。 目录 (Table of Contents) Why do we need Protocol Buffers? 为什么我们需要协议缓冲区 What are Protocol Buffers and how do they work? 什么是协议缓冲区它们如何工作 Protocol Buffers in Python Python中的协议缓冲区 Final notes 最后的笔记 为什么要使用协议缓冲区 (Why Protocol Buffers?) The initial purpose of Protocol Buffers was to simplify the work with request/response protocols. Before ProtoBuf, Google used a different format which required additional handling of marshaling for the messages sent. 协议缓冲区的最初目的是简化请求/响应协议的工作。 在ProtoBuf之前Google使用了另一种格式该格式需要对发送的邮件进行其他封送处理。 In addition to that, new versions of the previous format required the developers to make sure that new versions are understood before replacing old ones, making it a hassle to work with. 除此之外以前格式的新版本要求开发人员在替换旧版本之前确保已理解新版本这使使用起来很麻烦。 This overhead motivated Google to design an interface that solves precisely those problems. 这项开销促使Google设计了一个可以准确解决这些问题的界面。 ProtoBuf allows changes to the protocol to be introduced without breaking compatibility. Also, servers can pass around the data and execute read operations on the data without modifying its content. ProtoBuf允许在不破坏兼容性的情况下对协议进行更改。 此外服务器可以传递数据并在不修改其内容的情况下对数据执行读取操作。 Since the format is somewhat self-describing, ProtoBuf is used as a base for automatic code generation for Serializers and Deserializers. 由于格式有些自描述因此ProtoBuf用作自动生成序列化器和反序列化器代码的基础。 Another interesting use case is how Google uses it for short-lived Remote Procedure Calls (RPC) and to persistently store data in Bigtable. Due to their specific use case, they integrated RPC interfaces into ProtoBuf. This allows for quick and straightforward code stub generation that can be used as starting points for the actual implementation. (More on ProtoBuf RPC.) 另一个有趣的用例是Google如何将其用于短暂的远程过程调用 (RPC)并将数据持久存储在Bigtable中。 由于其特定的用例他们将RPC接口集成到ProtoBuf中。 这允许快速直接的代码存根生成可用作实际实现的起点。 (有关ProtoBuf RPC的更多信息。) Other examples of where ProtoBuf can be useful are for IoT devices that are connected through mobile networks in which the amount of sent data has to be kept small or for applications in countries where high bandwidths are still rare. Sending payloads in optimized, binary formats can lead to noticeable differences in operation cost and speed. ProtoBuf有用的其他示例是通过移动网络连接的IoT设备其中必须将发送的数据量保持在很小的水平或者用于那些仍很少使用高带宽的国家/地区。 以优化的二进制格式发送有效载荷会导致操作成本和速度上的明显差异。 Using gzip compression in your HTTPS communication can further improve those metrics. 在HTTPS通信中使用gzip压缩可以进一步改善这些指标。 什么是协议缓冲区它们如何工作 (What are Protocol buffers and how do they work?) Generally speaking, Protocol Buffers are a defined interface for the serialization of structured data. It defines a normalized way to communicate, utterly independent of languages and platforms. 一般来说协议缓冲区是用于结构化数据序列化的已定义接口。 它定义了一种完全独立于语言和平台的标准化通信方式。 Google advertises its ProtoBuf like this: Google 像这样广告其ProtoBuf Protocol buffers are Googles language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once … 协议缓冲区是Google的与语言无关与平台无关可扩展的机制用于对结构化数据进行序列化(例如XML)但更小更快更简单。 您定义如何一次构造数据…… The ProtoBuf interface describes the structure of the data to be sent. Payload structures are defined as “messages” in what is called Proto-Files. Those files always end with a .proto extension.For example, the basic structure of a todolist.proto file looks like this. We will also look at a complete example in the next section. ProtoBuf接口描述了要发送的数据的结构。 有效载荷结构在所谓的“原始文件”中定义为“消息”。 这些文件始终以.proto 扩展名。例如 todolist.proto文件的基本结构如下所示。 我们还将在下一部分中查看一个完整的示例。 syntax proto3;// Not necessary for Python, should still be declared to avoid name collisions // in the Protocol Buffers namespace and non-Python languages package protoblog;message TodoList {// Elements of the todo list will be defined here... }Those files are then used to generate integration classes or stubs for the language of your choice using code generators within the protoc compiler. The current version, Proto3, already supports all the major programming languages. The community supports many more in third-party open-source implementations. 然后使用这些文件使用协议编译器中的代码生成器为您选择的语言生成集成类或存根。 当前版本Proto3已经支持所有主要的编程语言。 社区支持更多第三方开放源代码实施。 Generated classes are the core elements of Protocol Buffers. They allow the creation of elements by instantiating new messages, based on the .proto files, which are then used for serialization. We’ll look at how this is done with Python in detail in the next section. 生成的类是协议缓冲区的核心元素。 它们允许通过实例化基于.proto文件的新消息来创建元素然后将这些消息用于序列化。 在下一节中我们将详细介绍如何使用Python完成此操作。 Independent of the language for serialization, the messages are serialized into a non-self-describing, binary format that is pretty useless without the initial structure definition. 与用于序列化的语言无关消息被序列化为非自我描述的二进制格式如果没有初始结构定义该格式几乎没有用。 The binary data can then be stored, sent over the network, and used any other way human-readable data like JSON or XML is. After transmission or storage, the byte-stream can be deserialized and restored using any language-specific, compiled protobuf class we generate from the .proto file.Using Python as an example, the process could look something like this: 然后可以存储二进制数据通过网络发送和使用其他任何人类可读数据(如JSON或XML)的方式。 传输或存储后可以使用从.proto文件生成的任何特定于语言的已编译protobuf类对字节流进行反序列化和还原。以Python为例该过程看起来像这样 First, we create a new todo list and fill it with some tasks. This todo list is then serialized and sent over the network, saved in a file, or persistently stored in a database. 首先我们创建一个新的待办事项列表并执行一些任务。 然后此待办事项列表将被序列化并通过网络发送保存在文件中或永久存储在数据库中。 The sent byte stream is deserialized using the parse method of our language-specific, compiled class.Most current architectures and infrastructures, especially microservices, are based on REST, WebSockets, or GraphQL communication. However, when speed and efficiency are essential, low-level RPCs can make a huge difference. 使用特定于语言的已编译类的parse方法对发送的字节流进行反序列化。当前大多数体系结构和基础结构(尤其是微服务)都基于RESTWebSockets或GraphQL通信。 但是当速度和效率至关重要时低级RPC可能会产生很大的不同。 Instead of high overhead protocols, we can use a fast and compact way to move data between the different entities into our service without wasting many resources. 代替高开销协议我们可以使用快速而紧凑的方式在不同实体之间将数据移动到我们的服务中而不会浪费很多资源。 但是为什么还没有在所有地方使用它呢 (But why isn’t it used everywhere yet?) Protocol Buffers are a bit more complicated than other, human-readable formats. This makes them comparably harder to debug and integrate into your applications. 协议缓冲区比其他人类可读格式要复杂一些。 这使得它们很难进行调试和集成到您的应用程序中。 Iteration times in engineering also tend to increase since updates in the data require updating the proto files before usage. 工程中的迭代时间也往往会增加因为数据更新需要在使用前更新原型文件。 Careful considerations have to be made since ProtoBuf might be an over-engineered solution in many cases. 由于ProtoBuf在许多情况下可能是过度设计的解决方案因此必须谨慎考虑。 我有什么选择 (What alternatives do I have?) Several projects take a similar approach to Google’s Protocol Buffers. 一些项目对Google的协议缓冲区采用了类似的方法。 Google’s Flatbuffers and a third party implementation, called Cap’n Proto, are more focused on removing the parsing and unpacking step, which is necessary to access the actual data when using ProtoBufs. They have been designed explicitly for performance-critical applications, making them even faster and more memory efficient than ProtoBuf.When focusing on the RPC capabilities of ProtoBuf (used with gRPC), there are projects from other large companies like Facebook (Apache Thrift) or Microsoft (Bond protocols) that can offer alternatives. Google的Flatbuffers和称为Capn Proto的第三方实现更着重于消除解析和拆包步骤这是使用ProtoBufs时访问实际数据所必需的。 它们专为对性能至关重要的应用程序而设计使其比ProtoBuf更快内存效率更高。当专注于ProtoBuf(与gRPC结合使用)的RPC功能时Facebook等其他大型公司(Apache Thrift)或可以提供替代方案的Microsoft(债券协议)。 Python和协议缓冲区 (Python and Protocol Buffers) Python already provides some ways of data persistence using pickling. Pickling is useful in Python-only applications. Its not well suited for more complex scenarios where data sharing with other languages or changing schemas is involved.Protocol Buffers, in contrast, are developed for exactly those scenarios.The .proto files, we’ve quickly covered before, allow the user to generate code for many supported languages. Python已经使用酸洗提供了一些数据持久化的方法。 酸洗在仅Python的应用程序中很有用。 它不适用于涉及与其他语言共享数据或更改架构的更复杂的场景。相比之下 .proto正是针对这些场景而开发的.proto文件我们之前已经快速介绍过允许用户生成许多受支持语言的代码。 To compile the .proto file to the language class of our choice, we use protoc, the proto compiler.If you don’t have the protoc compiler installed, there are excellent guides on how to do that: 编译.proto 文件添加到我们选择的语言类中我们使用protoc(即proto编译器)。如果您未安装protoc编译器则有很好的指南来指导您 MacOS / Linux MacOS / Linux Windows 视窗 Once we’ve installed protoc on our system, we can use an extended example of our todo list structure from before and generate the Python integration class from it. 一旦在系统上安装了协议就可以使用之前的待办事项列表结构的扩展示例并从中生成Python集成类。 syntax proto3;// Not necessary for Python but should still be declared to avoid name collisions // in the Protocol Buffers namespace and non-Python languages package protoblog;// Style guide prefers prefixing enum values instead of surrounding // with an enclosing message enum TaskState {TASK_OPEN 0;TASK_IN_PROGRESS 1;TASK_POST_PONED 2;TASK_CLOSED 3;TASK_DONE 4; }message TodoList {int32 owner_id 1;string owner_name 2;message ListItems {TaskState state 1;string task 2;string due_date 3;}repeated ListItems todos 3; }Let’s take a more detailed look at the structure of the .proto file to understand it.In the first line of the proto file, we define whether we’re using Proto2 or 3. In this case, we’re using Proto3. 让我们更详细地了解.proto文件的结构以了解它。在proto文件的第一行中我们定义是使用Proto2还是3。在这种情况下我们使用Proto3 。 The most uncommon elements of proto files are the numbers assigned to each entity of a message. Those dedicated numbers make each attribute unique and are used to identify the assigned fields in the binary encoded output. 原始文件中最不常见的元素是分配给消息的每个实体的编号。 这些专用数字使每个属性都唯一并用于标识二进制编码输出中的分配字段。 One important concept to grasp is that only values 1-15 are encoded with one less byte (Hex), which is useful to understand so we can assign higher numbers to the less frequently used entities. The numbers define neither the order of encoding nor the position of the given attribute in the encoded message. 要掌握的一个重要概念是只有值1-15会用少一个字节(Hex)进行编码这对于理解很有用因此我们可以为使用频率较低的实体分配较高的数字。 数字既不定义编码顺序 也不定义给定属性在编码消息中的位置。 The package definition helps prevent name clashes. In Python, packages are defined by their directory. Therefore providing a package attribute doesn’t have any effect on the generated Python code. 程序包定义有助于防止名称冲突。 在Python中软件包由其目录定义。 因此提供包属性对生成的Python代码没有任何影响。 Please note that this should still be declared to avoid protocol buffer related name collisions and for other languages like Java. 请注意对于其他语言(例如Java)仍应声明该名称以避免协议缓冲区相关的名称冲突。 Enumerations are simple listings of possible values for a given variable.In this case, we define an Enum for the possible states of each task on the todo list.We’ll see how to use them in a bit when we look at the usage in Python.As we can see in the example, we can also nest messages inside messages.If we, for example, want to have a list of todos associated with a given todo list, we can use the repeated keyword, which is comparable to dynamically sized arrays. 枚举是给定变量可能值的简单列表。在这种情况下我们为待办事项列表中每个任务的可能状态定义了一个枚举我们将在后面的用法中看到如何使用它们。在示例中可以看到我们也可以将消息嵌套在消息中例如如果我们想要与给定的待办事项列表关联的待办事项列表则可以使用重复关键字该关键字与动态大小的数组。 To generate usable integration code, we use the proto compiler which compiles a given .proto file into language-specific integration classes. In our case we use the --python-out argument to generate Python-specific code. 为了生成可用的集成代码我们使用proto编译器该编译器将给定的.proto文件编译为特定于语言的集成类。 在我们的例子中我们使用--python-out参数生成特定于Python的代码。 protoc -I. --python_out. ./todolist.proto protoc -I. --python_out. ./todolist.proto In the terminal, we invoke the protocol compiler with three parameters: 在终端中我们使用三个参数调用协议编译器 -I: defines the directory where we search for any dependencies (we use . which is the current directory) -I 定义在其中搜索任何依赖项的目录(我们使用。作为当前目录) --python_out: defines the location we want to generate a Python integration class in (again we use . which is the current directory) --python_out 定义我们要在其中生成Python集成类的位置(再次使用。这是当前目录) The last unnamed parameter defines the .proto file that will be compiled (we use the todolist.proto file in the current directory) 最后一个未命名的参数定义将要编译的.proto文件(我们在当前目录中使用todolist.proto文件) This creates a new Python file called name_of_proto_file_pb2.py. In our case, it is todolist_pb2.py. When taking a closer look at this file, we won’t be able to understand much about its structure immediately. 这将创建一个名为name_of_proto_file _pb2.py的新Python文件。 在我们的例子中它是todolist_pb2.py。 当仔细查看此文件时我们将无法立即了解其结构。 This is because the generator doesn’t produce direct data access elements, but further abstracts away the complexity using metaclasses and descriptors for each attribute. They describe how a class behaves instead of each instance of that class.The more exciting part is how to use this generated code to create, build, and serialize data. A straightforward integration done with our recently generated class is seen in the following: 这是因为生成器不会产生直接的数据访问元素而是会使用元类和每个属性的描述符进一步简化复杂性。 它们描述了一个类的行为方式而不是该类的每个实例。更令人兴奋的部分是如何使用此生成的代码来创建构建和序列化数据。 以下是与我们最近生成的类进行的直接集成 import todolist_pb2 as TodoListmy_list TodoList.TodoList() my_list.owner_id 1234 my_list.owner_name Timfirst_item my_list.todos.add() first_item.state TodoList.TaskState.Value(TASK_DONE) first_item.task Test ProtoBuf for Python first_item.due_date 31.10.2019print(my_list)It merely creates a new todo list and adds one item to it. We then print the todo list element itself and can see the non-binary, non-serialized version of the data we just defined in our script. 它仅创建一个新的待办事项列表并向其中添加一个项目。 然后我们打印待办事项列表元素本身并可以看到我们刚刚在脚本中定义的数据的非二进制非序列化版本。 owner_id: 1234 owner_name: Tim todos {state: TASK_DONEtask: Test ProtoBuf for Pythondue_date: 31.10.2019 }Each Protocol Buffer class has methods for reading and writing messages using a Protocol Buffer-specific encoding, that encodes messages into binary format.Those two methods are SerializeToString() and ParseFromString(). 每个协议缓冲区类都有使用协议缓冲区特定的编码来读取和写入消息的方法该方法将消息编码为二进制格式。这两个方法是SerializeToString()和ParseFromString() 。 import todolist_pb2 as TodoListmy_list TodoList.TodoList() my_list.owner_id 1234# ...with open(./serializedFile, wb) as fd:fd.write(my_list.SerializeToString())my_list TodoList.TodoList() with open(./serializedFile, rb) as fd:my_list.ParseFromString(fd.read())print(my_list)In the code example above, we write the Serialized string of bytes into a file using the wb flags. 在上面的代码示例中我们使用wb标志将字节的序列化字符串写入文件。 Since we have already written the file, we can read back the content and Parse it using ParseFromString. ParseFromString calls on a new instance of our Serialized class using the rb flags and parses it. 由于已经编写了文件因此可以读回内容并使用ParseFromString对其进行解析。 ParseFromString使用rb标志调用序列化类的新实例并对其进行解析。 If we serialize this message and print it in the console, we get the byte representation which looks like this. 如果我们将此消息序列化并在控制台中打印我们将获得如下所示的字节表示形式。 b\x08\xd2\t\x12\x03Tim\x1a(\x08\x04\x12\x18Test ProtoBuf for Python\x1a\n31.10.2019 b\x08\xd2\t\x12\x03Tim\x1a(\x08\x04\x12\x18Test ProtoBuf for Python\x1a\n31.10.2019 Note the b in front of the quotes. This indicates that the following string is composed of byte octets in Python. 请注意引号前面的b。 这表明以下字符串由Python中的字节八位字节组成。 If we directly compare this to, e.g., XML, we can see the impact ProtoBuf serialization has on the size. 如果直接将其与XML进行比较我们可以看到ProtoBuf序列化对大小的影响。 todolistowner_id1234/owner_idowner_nameTim/owner_nametodostodostateTASK_DONE/statetaskTest ProtoBuf for Python/taskdue_date31.10.2019/due_date/todo/todos /todolistThe JSON representation, non-uglified, would look like this. 未丑化的JSON表示将如下所示。 {todoList: {ownerId: 1234,ownerName: Tim,todos: [{state: TASK_DONE,task: Test ProtoBuf for Python,dueDate: 31.10.2019}] } }Judging the different formats only by the total number of bytes used, ignoring the memory needed for the overhead of formatting it, we can of course see the difference.But in addition to the memory used for the data, we also have 12 extra bytes in ProtoBuf for formatting serialized data. Comparing that to XML, we have 171 extra bytes in XML for formatting serialized data. 仅通过使用的字节总数来判断不同的格式而忽略格式化所需的内存我们当然可以看到区别。但是除了用于数据的内存外我们还有12个额外的字节ProtoBuf用于格式化序列化数据。 与XML相比我们在XML中有171个额外的字节用于格式化序列化数据。 Without Schema, we need 136 extra bytes in JSON for formatting serialized data. 没有Schema我们需要JSON中的136个额外字节 格式化 序列化数据。 If we’re talking about several thousands of messages sent over the network or stored on disk, ProtoBuf can make a difference. 如果我们谈论的是通过网络发送或存储在磁盘上的数千条消息ProtoBuf可以有所作为。 However, there is a catch. The platform Auth0.com created an extensive comparison between ProtoBuf and JSON. It shows that, when compressed, the size difference between the two can be marginal (only around 9%). 但是有一个陷阱。 Auth0.com平台在ProtoBuf和JSON之间进行了广泛的比较。 它表明压缩后两者之间的大小差异可能很小(仅9左右)。 If you’re interested in the exact numbers, please refer to the full article, which gives a detailed analysis of several factors like size and speed. 如果您对确切的数字感兴趣请参阅整篇文章 其中详细分析了一些因素例如大小和速度。 An interesting side note is that each data type has a default value. If attributes are not assigned or changed, they will maintain the default values. In our case, if we don’t change the TaskState of a ListItem, it has the state of “TASK_OPEN” by default. The significant advantage of this is that non-set values are not serialized, saving additional space. 一个有趣的旁注是每种数据类型都有一个默认值。 如果未分配或更改属性则它们将保留默认值。 在我们的情况下如果我们不更改ListItem的TaskState则默认情况下其状态为“ TASK_OPEN”。 这样的显着优点是未设置的值不会被序列化从而节省了额外的空间。 If we, for example, change the state of our task from TASK_DONE to TASK_OPEN, it will not be serialized. 例如如果我们将任务的状态从TASK_DONE更改为TASK_OPEN它将不会被序列化。 owner_id: 1234 owner_name: Tim todos {task: Test ProtoBuf for Pythondue_date: 31.10.2019 }b\x08\xd2\t\x12\x03Tim\x1a\x12\x18Test ProtoBuf for Python\x1a\n31.10.2019 b\x08\xd2\t\x12\x03Tim\x1a\x12\x18Test ProtoBuf for Python\x1a\n31.10.2019 最后说明 (Final Notes) As we have seen, Protocol Buffers are quite handy when it comes to speed and efficiency when working with data. Due to its powerful nature, it can take some time to get used to the ProtoBuf system, even though the syntax for defining new messages is straightforward. 如我们所见在处理数据时在速度和效率方面协议缓冲区非常方便。 由于其强大的特性即使定义新消息的语法很简单也要花一些时间才能习惯ProtoBuf系统。 As a last note, I want to point out that there were/are discussions going on about whether Protocol Buffers are “useful” for regular applications. They were developed explicitly for problems Google had in mind.If you have any questions or feedback, feel free to reach out to me on any social media like twitter or email :) 最后一点我想指出的是关于协议缓冲区是否对常规应用程序“有用”的讨论正在进行中。 它们是专门针对Google遇到的问题而开发的。如果您有任何疑问或反馈请随时通过Twitter或电子邮件等任何社交媒体与我联系) 翻译自: https://www.freecodecamp.org/news/googles-protocol-buffers-in-python/python缓冲区

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合肥网站设计公司怎样让百度搜不到自己的网站

一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向,也就是人们常说的「自然语言处理」,就是研究如何让计算机读懂人类语言,即将人的自然语言转换为计算机可以阅读的指令。它研…

盐城集团网站建设南通网站排名优化

大模型背后的范式 整个预训练语言模型的使用范式: 对于预训练模型,最核心的要素是从无标注的数据中去学习,通过自监督的一些任务去做预训练,得到丰富的知识。在具体的应用中,会引入一些任务相关的数据,去调…

米各庄网站建设遂宁模板建站公司

maven:编译出现Process terminated解决方法(超全) 一. 情况一:配置文件 settings. xml 出错(解决方法1)1.1 项目编译报错如下:1.2 点击【项目名】提示找到出错文件1.3 点击查看出错文件1.4 原因及解决办法 …

制作网页的网站有哪些建设银行网站连不上

今天又学会了一个知识,加油! 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

大学网页制作与网站建设开通网站需要什么手续

文章首发地址 为了解决在云原生环境中,Java应用启动慢的问题,出现了很多派系,如拯救派,让应用在原有基础上启动更快(一般都是用资源换时间),还有就是革命派,Java向Golang学习&#x…

三亚网站建设公司移动网站建设是什么意思

安卓工具箱专业版是款集所有功能于一身的工具箱!包括硬件和软件和工具,您的手机使用的信息。非常容易使用,具有非常用户友好的用户界面。 主要功能: 1。硬件信息:CPU核心,CPU类型,内存信息&…

胡芦娃app软件下载网站前端开发工具哪个好

Linux——权限的理解 文章目录 Linux——权限的理解一、shell命令以及运行原理二、Linux权限的概念切换用户对指令提权 三、Linux权限管理1. 文件访问者的分类(人)2. 文件类型和访问权限(事物属性)文件类型基本权限文件权限值的表…

手机网站开发步骤网站建设的基本技术

泛型 基本概念为什么我们需要泛型泛型类型泛型类简单泛型类多元泛型类 泛型接口泛型方法为什么要使用泛型方法呢?使用方法 泛型的上下限上限下限加点难度的例子例子一例子二例子三 泛型数组深入理解泛型什么是泛型擦除后保留的原始类型泛型类型擦除原则如何进行擦除的?怎么证…

网站建设教程培训中国十大经典广告

1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自江西九江,就读专业是电子商务,毕…

素材网站下载专做智能化施工的网站

背景 随着酒店业务的高速发展,我们为用户、商家提供的服务越来越精细,系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题,但也有副作用,比如,问题定位。 每次问题定位都需要从源头开始找同事帮我人肉…

各大网站网址奉贤做网站的

apache shiro 反序列化漏洞解决方案 反序列化漏洞解决方案产生原因解决方案1:1.升级shiro至最新版本1.7.1解决方案2:修改rememberMe默认密钥,生成随机密钥。 反序列化漏洞解决方案 反序列化漏洞介绍 序列化:把对象转换为字符串或…

网站照片要求南阳企业网站推广方法

一:Settings一级菜单 1、AndroidManifest.xml 每个APP对应都有一个AndroidManifest.xml,从该文件入手分析最为合适。 packages/apps/Settings/AndroidManifest.xml 根据<category android:name="android.intent.category.LAUNCHER" />可找到当前当前APP a…

聊城网站建设公司电话商城购物网站开发意义

前言 在上一章节中我们用W5500-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解析…

密云做网站的中国建行官网首页

Kafka_04_Topic和日志 Topic/PartitionTopicPartition 日志存储存储格式日志清理删除压缩 Topic/Partition Topic/Partition: Kafka中消息管理的基础单位 Topic和Partition并不实际存在(仅逻辑上的概念) 如: Topic和Partition关系 // 每个日志文件可对应多个日志分段, 其还可…

建立个人网站主题新中式装修风格效果图

最近遇到一个python的小数的问题&#xff0c;本来应该很简单的小于判断&#xff0c;无论如何都不正确&#xff0c;而且浮点小数都没问题&#xff0c;但decimal小数有问题&#xff0c;给我整蒙了&#xff0c;后来才发现是对decimal不了解所致&#xff0c;如果你还用float转decim…

网站管理建设落实报告wordpress register

问题描述&#xff1a;vue3项目的页面A跳转到页面B时&#xff0c;页面B页面是空白的&#xff0c;需要手动刷新一下才能恢复正常&#xff0c;在页面A中用iframe引入了别的网站&#xff08;后续事实证明&#xff0c;跟iframe没一毛钱的关系&#xff09;。着急的童鞋可以直接拉到底…

工信部网站备案查询步骤详解五合一免费建站

1 赛题思路 (赛题出来以后第一时间在群内分享&#xff0c;点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间&#xff1a;2024年4月11日&#xff08;周四&#xff09;12:00 比赛开始时间&#xff1a;2024年4月12日&#xff08;周五&#xff09;8:00 比赛结束时间&…

山西长治做网站公司又拍网站怎么做的

1&#xff09;控制标签体内容是否输出 2&#xff09;控制标签余下内容是否输出 3&#xff09;控制重复输出标签体内容 4&#xff09;改变标签体内容 5&#xff09;带属性的标签 package com.loaderman.demo.a_tag;import java.io.IOException; import java.io.StringWriter;imp…

杭州网站建设有限公司凡科网站登录入

考点介绍&#xff1a; HashMap是大中小厂面试的高频考点&#xff0c;主要从底层结构&#xff0c;和线程安全等角度来进行考察&#xff0c;考察点比较集中&#xff0c;但是有一定难度。 分为初级和高级两种&#xff1a;初级一般集中在中小公司的map的key-value的可重复和可空问题…

游戏网站建设的策划书深圳网站设计 深圳信科

企业知识库是一种特殊的在线协同文档工具&#xff0c;支持包括FAQ、文档、视频、知识图谱等。从本质上讲&#xff0c;它是基于企业知识库软件从而实现内部或外部知识的沉淀、集合、更新、共享等&#xff0c;能为员工或客户提供常见问题的标准回答。 今天我就基于HelpLook &…