datacleaner第四部分,11、12、13、14章

2024-02-21 18:58
文章标签 14 部分 13 第四 datacleaner

本文主要是介绍datacleaner第四部分,11、12、13、14章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第四部分,配置参考

表的内容

11。配置文件
XML模式 数据存储
数据库(JDBC)连接 逗号分隔值(CSV)文件 固定宽度值文件 Excel电子表格 XML文件数据存储 ElasticSearch指数 MongoDB数据库 CouchDB数据库 综合数据存储
参考数据
字典 同义词目录 字符串的模式
任务跑 存储提供商
12。分析工作文件
XML模式 源节
13。日志记录
日志配置文件 默认的日志配置 修改日志级别 选择日志输出
14。数据库驱动程序
安装在DataCleaner桌面数据库驱动程序 安装数据库驱动程序在DataCleaner监视器

第十一章。配置文件

文摘

在这一章里,我们通过一个配置文件的元素, conf.xml,这样就可以(虽然可选)改变DataCleaner的静态配置和配置环境。配置文件和相关的文件都存储在一个文件夹按照惯例 .datacleaner在用户的主目录。

DataCleaner监视web应用程序中,conf.xml文件是唯一的配置。该文件位于每个租户的存储库的根文件夹。存储库的更多信息,请参考章节。

在配置文件中大部分的元素也可编辑在桌面应用程序中。然而重要的是要注意,更改在GUI并不直接保存到配置文件,但到userpreferences.dat文件。您可以考虑两个文件之间的关系:配置文件定义了一个静态的,unmodifyable原型的应用程序环境。所有定制这个原型userpreferences保存在桌面应用程序。dat文件。

表的内容

XML模式 数据存储
数据库(JDBC)连接 逗号分隔值(CSV)文件 固定宽度值文件 Excel电子表格 XML文件数据存储 ElasticSearch指数 MongoDB数据库 CouchDB数据库 综合数据存储
参考数据
字典 同义词目录 字符串的模式
任务跑 存储提供商

XML模式

配置文件(conf.xml)是一个XML文件的XML名称空间“http://eobjects.org/analyzerbeans/configuration/1.0”。

XML-savvy读者,他们更喜欢使用XML schema意识到自己编辑器来编辑XML文件,你可以在这里找到这个名称空间的XML模式:https://github.com/datacleaner/DataCleaner/blob/master/engine/xml-config/src/main/resources/configuration.xsd .

数据存储

数据存储在配置文件中可以配置在< datastore-catalog >元素。以下部分将进入进一步的细节与特定类型的数据存储。

数据库(JDBC)连接

这里有一些常见的数据库类型的例子。

提示

DataCleaner用户界面使其更容易找出url(连接字符串)和驱动程序类连接属性的一部分。这是一个好的开始,如果你不知道这些属性了。

MySQL

<jdbc-datastore name="MySQL datastore"> <url>jdbc:mysql://hostname:3306/database?defaultFetchSize=-2147483648</url> <driver>com.mysql.jdbc.Driver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

甲骨文

<jdbc-datastore name="Oracle datastore"> <url>jdbc:oracle:thin:@hostname:1521:sid</url> <driver>oracle.jdbc.OracleDriver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

Microsoft SQL Server

一个典型的连接到Microsoft SQL server将看起来像这样:

<jdbc-datastore name="MS SQL Server datastore"> <url>jdbc:jtds:sqlserver://hostname/database;useUnicode=true;characterEncoding=UTF-8</url> <driver>net.sourceforge.jtds.jdbc.Driver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

然而,如果你想使用一个实例名建立连接,然后浏览器服务必须运行SQL Server,然后你可以包括实例参数:这里有一个例子为连接到SQLEXPRESS实例:

<url>jdbc:jtds:sqlserver://hostname/database;instance=SQLEXPRESS;useUnicode=true;characterEncoding=UTF-8</url>

逗号分隔值(CSV)文件

这是一个CSV文件数据存储的一个例子

<csv-datastore name="my_csv_file"> <filename>/path/to/file.csv</filename> <quote-char>"</quote-char> <separator-char>;</separator-char> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> <header-line-number>1</header-line-number> </csv-datastore>

固定宽度值文件

文件使用固定宽度值可以以两种方式注册,要么用一个固定宽度大小对所有列,或个人value-widths。

这里有一个例子,对所有列固定宽度规格:

<fixed-width-datastore name="My file"> <filename>foobar.txt</filename> <width-specification> <fixed-value-width>20</fixed-value-width> </width-specification> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> </fixed-width-datastore>

这里有一个例子与个人(3列)宽度规格:

<fixed-width-datastore name="My file"> <filename>foobar.txt</filename> <width-specification> <value-width>4</value-width> <value-width>17</value-width> <value-width>19</value-width> </width-specification> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> </fixed-width-datastore>

Excel电子表格

这是一个Excel电子表格数据存储的例子

<excel-datastore name="my_excel_spreadsheet"> <filename>/path/to/file.xls</filename> </excel-datastore>

XML文件数据存储

定义XML数据存储都可以做一个简单的(自动映射)的方式,或一个先进的(和更多的性能和内存有效的方式)。

简单的方法是定义一个xml-datastore文件名,像这样:

<xml-datastore name="my_xml_datastore"> <filename>/path/to/file.xml</filename> </xml-datastore>

这种类型的XML数据存储工作找到当文件大小很小,层次结构不太复杂。它的缺点是,它试图自动检测表结构来表示XML内容相匹配(这是一个树结构,不是一个表)。

绕过这个问题您也可以定义您自己的表结构,你指定的xpath行和行中的值。这里有一个例子:

<xml-datastore name="my_xml_datastore"> <filename>/path/to/file.xml</filename> <table-def> <rowXpath>/greetings/greeting</rowXpath> <valueXpath>/greetings/greeting/how</valueXpath> <valueXpath>/greetings/greeting/what</valueXpath> </table-def> </xml-datastore>

数据存储定义了一个表,其中每个记录被定义为���素匹配XPath /问候问候。表有两列,所代表的“如何”,“什么”元素的子元素连续的路径。

更多细节的XPath表达式定义表的XML数据存储模式,请参考元模型对主题的教程(元模型是数据访问在DataCleaner库用于读取数据)。

ElasticSearch指数

这是ElasticSearch指数数据存储的一个例子

<elasticsearch-datastore name="my_elastic_search_index"> <hostname>localhost</hostname> <port>9300</port> <cluster-name>my_es_cluster</cluster-name> <index-name>my_index</index-name> </elasticsearch-datastore>

MongoDB数据库

这的一个例子是一个完全指定的MongoDB数据库,用一个示例表结构基于两个集合。

<mongodb-datastore name="my_mongodb_datastore"> <hostname>localhost</hostname> <port>27017</port> <database-name>my_database</database-name> <username>user</username> <password>pass</password> <table-def> <collection>company_collection</collection> <property> <name>company_name</name> <type>VARCHAR</type> </property> <property> <name>customer</name> <type>BOOLEAN</type> </property> <property> <name>num_employees</name> <type>INTEGER</type> </property> <property> <name>address_details</name> <type>MAP</type> </property> </table-def> <table-def> <collection>person_collection</collection> <property> <name>person_name</name> <type>VARCHAR</type> </property> <property> <name>birthdate</name> <type>DATE</type> </property> <property> <name>emails</name> <type>LIST</type> </property> </table-def> </mongodb-datastore>

如果主机名和端口元素排除,localhost:27017年将是假定。

如果用户名和密码元素,将一个匿名连接。

如果没有table-def元素,将检查数据库和表定义将自动根据第一每个收集的1000份文件。

CouchDB数据库

这是一个完全指定的CouchDB数据库,用一个例子基于两个CouchDB数据库的表结构。

<couchdb-datastore name="my_couchdb_datastore"> <hostname>localhost</hostname> <port>5984</port> <username>user</username> <password>pass</password> <ssl>true</ssl> <table-def> <database>company_collection</database> <field> <name>company_name</name> <type>VARCHAR</type> </field> <field> <name>customer</name> <type>BOOLEAN</type> </field> <field> <name>num_employees</name> <type>INTEGER</type> </field> <field> <name>address_details</name> <type>MAP</type> </field> </table-def> <table-def> <database>person_collection</database> <field> <name>person_name</name> <type>VARCHAR</type> </field> <field> <name>birthdate</name> <type>DATE</type> </field> <field> <name>emails</name> <type>LIST</type> </field> </table-def> </couchdb-datastore>

如果主机名和端口元素排除,localhost:5984年将是假定。

如果用户名和密码元素,将一个匿名连接。

如果“ssl”元素是错误或遗漏,将使用常规的HTTP连接。

如果没有table-def元素,将检查数据库和表定义将自动根据第一个1000文件的每个数据库。

综合数据存储

这是一个复合数据存储的一个例子。它包含数据从其他数据存储2:数据存储1和数据存储2。

<composite-datastore name="my composite"> <datastore-name>Datastore 1</datastore-name> <datastore-name>Datastore 2</datastore-name> </composite-datastore>

参考数据

参考数据项(字典、同义词目录和字符串模式)在配置文件中定义的< reference-data-catalog >元素。下面的一些例子:

字典

字典中存储在<字典>元素引用数据部分。三种类型的字典可以添加。

数据存储的字典

<reference-data-catalog> <dictionaries> ... <datastore-dictionary name="Lastnames" description="My datastore based dictionary"> <datastore-name>orderdb</datastore-name> <column-path>EMPLOYEES.LASTNAME</column-path> </datastore-dictionary> ... </dictionaries> </reference-data-catalog>

文本文件字典

<reference-data-catalog> <dictionaries> ... <text-file-dictionary name="Firstnames" description="My file based dictionary"> <filename>/path/to/first.txt</filename> <encoding>UTF-8</encoding> </text-file-dictionary> ... </dictionaries> </reference-data-catalog>

值列表字典

<reference-data-catalog> <dictionaries> ... <value-list-dictionary name="Greetings" description="My simple value list"> <value>hello</value> <value>hi</value>	<value>greetings</value> <value>godday</value> </value-list-dictionary> ... </dictionaries> </reference-data-catalog>

同义词目录

同义词目录中存储在< synonym-catalogs >元素引用数据部分。两种类型的字典可以添加。

同义词的文本文件目录

<reference-data-catalog> <synonym-catalogs> ... <text-file-synonym-catalog name="textfile_syn" description="My text file synonyms"> <filename>/path/to/synonyms.txt</filename> <encoding>UTF-8</encoding> <case-sensitive>false</case-sensitive> </text-file-synonym-catalog> ... </synonym-catalogs> </reference-data-catalog>

数据存储同义词目录

<reference-data-catalog> <synonym-catalogs> ... <datastore-synonym-catalog name="datastore_syn" description="My datastore synonyms"> <datastore-name>orderdb</datastore-name> <master-term-column-path>CUSTOMERS.CUSTOMERNAME</master-term-column-path> <synonym-column-path>CUSTOMERS.CUSTOMERNUMBER</synonym-column-path> <synonym-column-path>CUSTOMERS.PHONE</synonym-column-path> </datastore-synonym-catalog> ... </synonym-catalogs> </reference-data-catalog>

字符串的模式

字典中存储在<的字符串模式>元素引用数据部分。两种类型的字符串模式可以添加。

正则表达式(regex)字符串模式

<reference-data-catalog> <string-patterns> ... <regex-pattern name="regex danish email" description="Danish email addresses"> <expression>[a-z]+@[a-z]+\.dk</expression> <match-entire-string>true</match-entire-string> </regex-pattern> ... </string-patterns> </reference-data-catalog>

简单的字符串模式

<reference-data-catalog> <string-patterns> ... <simple-pattern name="simple email" description="Simple email pattern"> <expression>aaaa@aaaaa.aa</expression> </simple-pattern> ... </string-patterns> </reference-data-catalog>

任务跑

跑步者的任务定义如何DataCleaner的引擎将执行的任务分析工作。通常你不应该编辑这个元素。然而,这里有两个选择:

<multithreaded-taskrunner max-threads="30" />

定义了一个30多螺纹跑任务的线程池线程可用。小心,虽然30看似大量太小的线程池可能会引起问题,因为一些任务安排额外的任务,因此有死锁的风险当线程数量非常低。

<singlethreaded-taskrunner />

定义一个单线程任务跑。在遗留硬件或操作系统这个设置会更好,但是它不会利用现代建筑的多重线程功能。

存储提供商

存储提供程序是用于存储临时数据使用在执行分析工作。有两种类型的存储:大的集合(单一)价值观和“注释行”,即。行采样或标有一个特定类别将感兴趣的用户检查。

解释存储提供程序配置让我们看看默认的元素:

<storage-provider> <combined> <collections-storage> <berkeley-db/> </collections-storage> <row-annotation-storage> <in-memory max-rows-threshold="1000" max-sets-threshold="200"/> </row-annotation-storage> </combined> </storage-provider>

元素定义了一个存储策略相结合。

集合存储使用berkeley db,嵌入式数据库Oracle。这是推荐的策略集合。

行注释存储在内存中。有1000行200年最大的一个阈值集。这意味着,如果超过1000条记录注释与同一类别额外的记录不会得救(因此用户是不可见的)。而且它只意味着直到200年样本集将被保存。进一步注释不会采样,但仍指标计算。大多数用户场景不需要超过马克斯。1000注释记录进行检查,但如果这是真的必要可以采取不同的策略:

使用MongoDB注释行

如果你有一个地方MongoDB实例,您可以使用此存储为注释行。这就是配置的样子:

<row-annotation-storage> <custom-storage-provider class-name="org.datacleaner.storage.MongoDbStorageProvider"/> </row-annotation-storage>

MongoDB的存储解决方案提供商已经显示出很好的性能指标,但是在安装添加更多的复杂性,这就是为什么它仍然被认为是实验,只有精明的用户。

第十二章。分析工作文件

文摘

工作文件包含的信息DataCleaner工作的执行。通常,这些文件的文件扩展名 .analysis.xml在这个文件,我们将解释这个文件格式,这是基于XML的,说明它与DataCleaner做什么。

工作总是引用项配置,如数据存储、参考数据等等。因此不足以执行工作。但多个作业可以使用相同的配置。有关配置的更多信息,请参阅配置文件一章。

表的内容

XML模式 源节

XML模式

分析相关的工作文件都写在一个XML格式的XML名称空间“http://eobjects.org/analyzerbeans/job/1.0”。

XML-savvy读者,他们更喜欢使用XML schema意识到自己编辑器来编辑XML文件,你可以在这里找到这个名称空间的XML模式:https://github.com/datacleaner/DataCleaner/blob/master/engine/xml-config/src/main/resources/job.xsd .

阅读本章的笔记各个部分的工作文件格式。

源节

源部分工作的文件格式可能是最有趣的一个手动编辑或审核。这里有一个例子源部分:

<source> <data-context ref="orderdb" /> <columns> <column path="PUBLIC.EMPLOYEES.EMPLOYEENUMBER" id="col_0" type="INTEGER" /> <column path="PUBLIC.EMPLOYEES.LASTNAME" id="col_1" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.FIRSTNAME" id="col_2" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.EXTENSION" id="col_3" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.EMAIL" id="col_4" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.OFFICECODE" id="col_5" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.REPORTSTO" id="col_6" type="INTEGER" /> <column path="PUBLIC.EMPLOYEES.JOBTITLE" id="col_7" type="VARCHAR" /> </columns> <variables> <variable id="employee type" value="Sales Rep" /> </variables> </source>

从这个来源的部分中,我们可以得到这些有趣的事实:

  1. 使用数据存储的工作是叫“orderdb”。这个数据存储是如何配置,工作不知道,因为它是定义在吗 配置可能这份工作可以有多个类似的数据存储,只要他们的名字叫“orderdb”。

  2. 定义的列组成的基础来源查询作业将火。每一列被分配一个人工ID和一个提示提供的数据类型。这些信息能够分离或一列替换为一个新的定义。这意味着如果你花费很长时间建立完美的工作,但要把它应用到一个不同的列,你可能“只是”改变这里的列定义和保留原列ID。

  3. 在这个部分中,我们还看到一些变量来源。这是一个可选的小节,不常见的。变量的属性值可以在运行时用新值替换。看到这一章可参数化的工作的更多信息和示例。

第13章。日志记录

文摘

登录DataCleaner是可配置提供一个XML文件或属性文件。在这一章里,我们探索日志配置以及如何调整日志记录您的需求。

表的内容

日志配置文件 默认的日志配置 修改日志级别 选择日志输出

日志配置文件

登录DataCleaner基于Log4j,开放源码Apache日志框架的基础。与log4j您可以配置日志记录非常详细的水平,同时保持一个集中的配置。

有三个方法来配置登录DataCleaner:

  1. 默认的日志配置这个不需要更改标准DataCleaner的分布。日志文件将生成的日志/ datacleaner。日志文件。

  2. 指定您自己的XML日志配置这需要你把一个名为log4j的文件。xml的根目录DataCleaner。

  3. 指定您自己的日志配置属性文件这需要你把一个名为log4j的文件。DataCleaner根目录的属性。

推荐的方式自定义配置DataCleaner日志是使用XML格式。在下面几个部分中,我们将解释这种方法使用的例子。对于Log4j配置更详细的文档,请参考Log4j网站 .

默认的日志配置

这是一个默认的日志配置清单,以XML格式:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{HH:mm:ss} %c{1} - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="WARN"/> </filter> </appender> <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${user.home}/.datacleaner/log/datacleaner.log"/> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{HH:mm:ss.SSS} %c{1} - %m%n"/> </layout> </appender> <logger name="org.apache.metamodel"> <level value="info"/> </logger> <logger name="org.datacleaner"> <level value="info"/> </logger> <root> <priority value="warn"/> <appender-ref ref="consoleAppender"/> <appender-ref ref="fileAppender"/> </root> </log4j:configuration>

这个日志配置指定的信息水平作为默认的日志级别。附加(输出)日志消息到控制台(如果可用)和一个文件路径:$ { user.home } .datacleaner /日志/ datacleaner.log

我们建议使用这个默认配置作为模板自定义日志配置。接下来我们将探讨如何修改配置和创建新的日志输出。

修改日志级别

这些是可用的日志记录级别DataCleaner Log4j,按优先级(最高优先级):

  1. 错误
  2. 警告
  3. 信息
  4. 调试
  5. 跟踪

通常下面两个日志级别(调试和跟踪)不习惯除非意想不到的情况下必须由开发人员进行。

修改日志级别可以在全球范围内或以分层的方式:

  1. 如果你改变<优先>元素的价值属性,你改变了全球对日志消息的阈值。

  2. 如果你改变<记录器>元素的水平,你改变日志优先级日志消息属于一个特定的伐木工的层次结构。

选择日志输出

日志消息输出到一个输出,通常是一个文件或控制台。在配置文件中配置在< appender >元素。这里有几个例子替代输出源可以使用。更多的例子和文档,请参考Log4j网站 .

登录一个PostgreSQL数据库:

<appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:postgresql:db"/> <param name="Driver" value="org.postgresql.Driver"/> <param name="User" value="user"/> <param name="Password" value="password"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO log4j (log_date,log_level,log_location,log_message) VALUES ('%d{yyyy-MM-dd}','%p','%C;%L','%m')"/> </layout> </appender>

第14章。数据库驱动程序

文摘

DataCleaner附带一组标准的数据库驱动程序,使您连接到PostgreSQL等常见的数据库MySQL,Microsoft SQL Server或Oracle。

也经常希望安装其他驱动程序其他数据库品牌。DataCleaner使用JDBC标准来管理数据库驱动程序和连接。在这一章里,我们覆盖安装额外的数据库驱动程序的过程。

表的内容

安装在DataCleaner桌面数据库驱动程序 安装数据库驱动程序在DataCleaner监视器

安装在DataCleaner桌面数据库驱动程序

在DataCleaner桌面安装数据库驱动程序在运行时应用程序本身。

首先,进入选项菜单:

然后选择“数据库驱动程序”选项卡。在该选项卡中您将看到一个清单你当前安装的数据库驱动程序(我们知道的):

如果你点击“添加数据库驱动程序”按钮,然后选择“本地JAR文件(s)”选项,您将看到这个对话框:

在这个对话框中,选择驱动程序类名称和文件包含数据库驱动程序。如果你不知道这是什么请参考数据库供应商的文档在JDBC数据库驱动程序。

在上面的例子中我们可以看到IBM DB2驱动程序包括安装软件许可以来两个文件也要包括在内。

安装数据库驱动程序在DataCleaner监视器

如果你想安装的数据库驱动程序DataCleaner监视的web应用程序,您应该首先考虑如果你想要安装的驱动程序仅作为单一的web应用程序的一部分,或如果它应该在全球范围内注册在您的web服务器/容器。

  1. 数据库驱动程序安装在容器中:指容器的文档。过程通常是一个简单的驱动程序JAR文件复制到一个文件夹在web容器的工作区。例如,如果您正在使用Apache Tomcat,将驱动程序JAR文件(s)复制到Tomcat的“自由”文件夹。

  2. 安装数据库驱动程序的web应用程序:首先,定位DataCleaner监控。war文件部署和“爆炸”到一个目录中。你会发现在这个目录的web - inf / lib文件夹。数据库驱动程序文件(s)复制到这个目录中。

我们建议安装驱动程序的容器。这使您的web应用程序更容易升级和管理。

这篇关于datacleaner第四部分,11、12、13、14章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732751

相关文章

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

项目实战系列三: 家居购项目 第四部分

购物车 🌳购物车🍆显示购物车🍆更改商品数量🍆清空购物车&&删除商品 🌳生成订单 🌳购物车 需求分析 1.会员登陆后, 可以添加家居到购物车 2.完成购物车的设计和实现 3.每添加一个家居,购物车的数量+1, 并显示 程序框架图 1.新建src/com/zzw/furns/entity/CartItem.java, CartItem-家居项模型 /***

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

13 transition数组的动画使用

划重点 动画:transitiontransition-group :数组动画数组的 添加 / 删除 豆腐粉丝汤 清淡又健康 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><me

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build