MatrixOne實戰系列回顧 | 導入導出項目場景實踐

本次分享主要介紹MatrixOne導入導出以及項目場景實踐。將從四個方向為大家演示MatrixOne的功能,分別是數據的導入、導出、對接數據集成工具,以及Java連接實戰。

數據導入會使用三種方式將數據導入至 MatrixOne中。分別是insert語句、load data語句還有source方式。特別注意的是load data支持從遠端S3文件系統上拉取文件導入。

對于json 文件,MatrixOne 也提供了導入方式,等下我們一起來嘗試下。

數據導出MatrixOne 也提供了多種方式,這里我們使用select into outfile的方式和mo_dump工具來實踐一下數據的導出。

作為一款HSTAP數據庫,MatrixOne從一定程度上也支持了市面上比較流行的一些數據集成工具和計算引擎。本次視頻會為大家演示Datax、Flink、Spark集成MatrixOne。

最后,以一個簡單SpringBoot項目,將MatrixOne作為業務數據庫進行CRUD功能。

我相信,通過這四部分的實踐,大家應該可以基本了解MatrixOne數據庫的強大功能。

接下來我們開始進入第一部分,MatrixOne 數據導入。

Part 1 數據導入

#1 insert into方式

這里需要在MatrixOne中創建一個客戶表,客戶表有由四個字段組成,分別是自增主鍵,客戶名、市、國家均為Varchar類型。我們先指定列導入,然后使用批量insert方式進行導入。最后我們在創建一個客戶表的備份表,采用insert into select 方式,將客戶表的數據備份至客戶備份表。

#2 load data方式

? 2.1 導入csv文件

下面我們來實踐一下load data功能。先將本地已經提前準備好的customer.csv文件導入。

先看一下這個csv文件,有3行測試數據,起始行就是數據,無需去除表頭,列分割符是英文逗號,行分隔符是換行符。

然后執行load data命令進行數據導入,需要注意地方就是文件的路徑,如果不太確定的話就寫絕對路徑。

注意:如果你的數據文件與 MatrixOne 服務器在不同的機器上,即數據文件在你所使用的客戶端機器上時,那么你連接 MatrixOne 服務主機需要使用Mysql Client命令需要增加一個 --local-infile 參數;并且導入的命令行需要使用 load data local infile 語法。

除此之外MatrixOne 支持使用 load data 命令從 S3 對象存儲服務批量導入 csv 文件、jsonline 文件。

我這里做了一個從阿里OSS文件系統中導入csv文件至MatrixOne的測試,由于時間問題我就不在演示了,我們一起看一下語法和效果。

首先需要我們提前在OSS中創建一個桶,然后獲取一下授權所需的Ak和sk以及region。

在load data 中我們依次配置OSS endpoint,ak,sk,桶名稱,region,壓縮格式,文件路徑,別的方式和本地導入一致。

? 2.2 導入json文件

演示了導入csv文件,我們一起來試下導入json文件。

首先我們創建一個新表用于接收導入數據。創建一個json_line_obj.jl文件新增幾條json測試數據。

然后使用使用load data命令進行導入,需要注意的是這個json文件里面的全部是object,非數組結構,字段名稱和類型需要和MatrixOne表中的字段名稱類型對應。

然后我們在創建一個新表t2,用來測試導入json數組的情況。

這里我們提前準備三個文件,第一個是普通的json.jl文件,第二個是一個壓縮格式為bz2壓縮包,解壓以后可以看到里面就是一個jl文件,第三個是一個壓縮格式為gz的。

我們依次執行三條導入命令,其中jsondata字段用于標識json結構,與之前區別就是這里不再是object而是填寫array。

第二條命令需要注意配置壓縮格式。

第三條命令再導入的時候忽略了第一行進行導入,我們執行后看下效果。

可以看到這里導入的時候沒有第一行數據。

#3 source命令

最后我們采用source命令將提前準備好的sql文件導入MatrixOne。

如果數據量比較大的話,可以采用nohup配合 Mysql 客戶端 -e 參數進行后臺導入。

接下來給大家分享一下MatrixOne的數據導出。

首先采用select into outfile的方式。

我提前準備了一張sys_permission表,里面有一些測試數據。

我們使用SQL 進行導出。

導出完成后,可以在當前目錄下看到對應產生的sys_permission.csv文件。

另外,在導出SQL中還可以指定分割符,再使用豎線作為列分隔符導出一次。

導出完成后,可以看到對應的文件中,列的分割符已經變成了豎線。

Part 2 數據導出

#1 mo-dump工具


接下來給大家介紹一下mo-dump工具。它是 MatrixOne 的一個客戶端導出工具,與 mysqldump 一樣,它可以被用于通過導出 .sql 類型的文件來對 MatrixOne 數據庫進行備份,導出的sql文件還包含表結構創建語句。

其中可以配置這些參數:

  • -u 指定連接 MatrixOne 服務器的用戶名。只有具有數據庫和表讀取權限的用戶才能使用 mo-dump,默認值 root。
  • -p 指定MatrixOne 用戶的密碼。默認值:111。
  • -h 指定MatrixOne 服務器的主機 IP 地址。默認值:127.0.0.1
  • -P 指定MatrixOne 服務器的端口。默認值:6001
  • -db 指定必需參數。要備份的數據庫的名稱。
  • -net-buffer-length 指定數據包大小,即 SQL 語句字符的總大小。數據包是 SQL 導出數據的基本單位,如果不設置參數,則默認 1048576 Byte(1M),最大可設置 16777216 Byte(16M)。假如這里的參數設置為 16777216 Byte(16M),那么,當要導出大于 16M 的數據時,會把數據拆分成多個 16M 的數據包,除最后一個數據包之外,其它數據包大小都為 16M。
  • -tbl是可選參數。如果參數為空,則導出整個數據庫。如果要備份指定表,則可以在命令中指定多個 -tbl 和表名。

mo-dump工具需要從git上下載源碼進行編譯,這里由于時間原因,我就不在演示編譯過程了,直接用我提前編譯好的二進制包進行演示。

通過mo-dump命令將我們之前創建的test_json_load表導出。

可以看到導出的結果就是一個.sql的文件,我們查看下這個sql文件。

Part 3?對接數據集成工具

我們先通過Datax將數據從Mysql中導入至MatrixOne。這里我們用到的 Mysql 版本為8.0.32,我已經提前準備好了測試庫表作為源數據。

MatrixOne 與 MySQL 8.0 高度兼容,由于 DataX 自帶的 MySQL Writer 中適配的為 5.1 的 JDBC 驅動,為提升程序的兼容性,社區單獨改造出基于 8.0 驅動的 MatrixOne Writer 插件。

另外注意這一句:在底層實現上, MatrixOneWriter 通過 JDBC 連接遠程 MatrixOne 數據庫,并執行相應的 insert into ... 的 sql 語句將數據寫入MatrixOne(內部會分批次提交入庫)。

Datax的部署和介紹就不在多說了。我們可以先看一下Datax 作業配置文件,這個是我們需要自己編寫的。

我們配置信息全部在job這個對象里面。job對象有2個屬性,分別是settingcontent

  • setting中可以配一些Datax的任務參數,如這個地方的speed,表示導入速度,也就是設置的并行度。
  • content中配置數據源和目標源信息,數據源信息配置在reader對象中,目標源配置在writer中,具體reader和writer的配置在后面做導入的時候根據我們自己編寫的文件進行分析。

我提前準備好了Datax,并且已經把matrixOneWriter 放到了對應的plugin目錄下。

接下來我們看一下自己編寫的作業文件,習慣把這個文件放到Datax的job目錄下。

先說一下我們的目標是從Mysql中讀取數據寫入MatrixOne,所以這里的reader就用Datax自帶的mysqlreader就行。writer使用我們導入的matrixonewriter。

注意這個地方reader、writer名稱是嚴格區分大小寫的。

除了需要配置name,還需要在parameter中配置導入的行column,Mysql的連接信息connection,用戶名,密碼這些。

同理writer除了配置name,也需要在parameter中配置column,MatrixOne連接信息,用戶名,密碼。

除了這個,可以Datax在做導出的時候提供了preSql字段用來實現ETL。這個地方的ETL

SQL會在導入前先執行。

當配置文件編寫完以后執行Datax命令,指定作業文件。這里注意作業文件的路徑。

執行成功后可以看到數據已經寫入到MatrixOne中了。

Part 4?Java 連接實戰

接下來給大家演示一下通過Flink引擎,分別將Mysql和Kafka中的數據導入至MatrixOne。

Apache Flink 是一個分布式處理引擎,用于在無邊界和有邊界數據流上進行有狀態的計算。Flink 能在所有常見集群環境中運行,并能以內存速度和任意規模進行計算。

Flink的概念我就不在過多介紹了,我們直接開始實踐。

這里在多說一句,本次分享視頻中使用的MatrixOne的版本均是1.0.0 RC2。

#1 Mysql

我們先將 Mysql 作為數據源,將 Mysql 中的數據通過Flink JDBC的方式導入到 MatrixOne。可以看到這里我使用的 Mysql 版本為8.0.32。

接下來,我們分別在Mysql 中創建數據源表,并新增一些數據。再到MatrixOne 中創建目標表用于接收從Mysql 中導出的數據。

在Mysql 中創建 test 數據庫,并在這個數據庫下面創建一個person表。通過 insert 方式新增3條數據用于演示。

同理在MatrixOne 中創建一個 motest庫,在該庫下創建一個與 Mysql 對應的person 表,這里注意保持數據類型一致,否則會出現問題。

然后,需要在本地創建一個Flink 項目。首先需要創建一個Maven 項目,把我們需要用到相關依賴配置進來。這個項目我也提前創建好了。

先看一下pom文件,需要注意的是Flink 的版本這里使用的是1.17.0,JDK的版本為1.8,還需要引入flink-connector-jdbc和mysql-connector-java,Mysql驅動版本與Mysql的版本需要兼容。

還需要編寫一個實體類Person 用于映射數據庫對應的數據。

當前面工作準備好以后,我們就可以編寫Flink 主程序了。

創建一個叫做Mysql2Mo 的類,在 main 函數中編寫Flink 程序。

總結一下編寫一個Flink程序大致需要幾個步驟:

  1. 獲取執行環境。
  2. 設置并行度,這里我設置1表示采用一個線程去執行。
  3. 然后設置查詢的字段類型和字段名。
  4. 添加Source,就是數據源,這里配置的就是Mysql 的連接信息,通過query中配置的SQL將數據查出來。
  5. 拿到數據源以后,可以通過Flink 程序做ETL,這里舉了個簡單的例子,把拿到的結果封裝成Person對象。
  6. 配置Sink,就是數據最終寫入的地址,也就是我們這里MatrixOne,配置相關參數。
  7. 執行 Flink 程序。

執行成功以后,我們到MatrixOne中查看到之前新增到Mysql 中的數據已經導入進來了。

#2 Kafka

然后我們將Kafka作為數據源,從Kafka中同步數據至MatrixOne。

我本地已經安裝好了Kafka,用到的Kafka版本為3.0.0。

我們繼續用之前的MatrixOne 創建的person表,為了更清晰的看見效果使用truncate 命令先把之前的測試數據給清理掉。

然后使用Kafka命令行腳本創建一個主題。主題名稱是matrixone。

接下來我們需要編寫Flink程序,主要步驟和之前一致。

我們主要看下最關鍵的Source和Sink。

Source這里配置的為Kafka的連接信息,包含消費者組和消費策略,然后自定義了一個序列化器,將字符串轉為Person對象。

這里可以打印一下獲取到的Source數據。

Sink這里配置MatrixOne的連接信息,使用JDBC connector。

然后我們啟動項目,Flink程序會阻塞在這里,等待我們往Kafka中生產數據。

我們使用命令行工具,模擬一個Kafka生產者,往Kafka中寫入3條數據。

然后觀察MatrixOne 也會同步這3條數據。

演示完適用于流處理的Flink引擎,接下來給大家演示一下批處理引擎Spark集成MatrixOne,通過Spark將Mysql數據寫入MatrixOne。

這里使用的 MatrixOne 版本為 1.0.0 RC2 這個版本。是通過mo_ctl 工具搭建的單機版本。

我們先將 Mysql 作為數據源,將 Mysql 中的數據通過Flink JDBC的方式導入到 MatrixOne。可以看到這里我使用的 Mysql 版本為8.0.32。

接下來,我們分別在Mysql 中創建數據源表,并新增一些數據。再到MatrixOne 中創建目標表用于接收從Mysql 中導出的數據。

在Mysql 中創建 test 數據庫,并在這個數據庫下面創建一個person表。通過 insert 方式新增3條數據用于演示。

同理在MatrixOne 中創建一個 motest庫,在該庫下創建一個與 Mysql 對應的person 表,這里注意保持數據類型一致,否則會出現問題。

然后,需要在本地創建一個Spark 項目。首先需要創建一個Maven 項目,把我們需要用到相關依賴配置進來。這個項目我也提前創建好了。

先看一下pom文件,需要注意的是Spark的版本這里使用的是3.2.1,JDK的版本為1.8,額外注意Mysql驅動的版本與Mysql需要兼容。

還需要編寫一個實體類Person 用于映射數據庫對應的數據。

當前面工作準備好以后,我們就可以編寫Spark主程序了。

創建一個叫做Mysql2Mo 的類,在 main 函數中編寫Spark程序。

這里總結一下編寫一個Spark程序大致需要幾個步驟:

  1. 獲取Session對象,通過Session拿到Spark上下文對象。
  2. 設置Mysql連接信息,包含用戶名、密碼、驅動類。
  3. 使用上下文對象配置Mysql 連接URL進行數據讀取。
  4. 4、將讀取結果封裝成DataSet對象。
  5. 通過DataSet Stream 方式進行ETL,這里篩選出id大于2的數據。
  6. 配置MatrixOne連接信息,將數據寫入目標庫。

執行成功以后,我們到MatrixOne中查看到之前新增到Mysql 中的數據已經導入進來了。


#3 SpringBoot

最后一部分,我們將以一個SpringBoot項目,用MatrixOne作為業務數據庫進行CRUD功能。

首先在MatrixOne中創建用戶表并新增數據。

然后在本地搭建一個Springboot和Mybatis-plus的項目。

這里需要把用到的jar包通過Maven配置進來。

接下來在Springboot的配置文件中配置一下datasource,這里的配置和配置Mysql一致。

然后編譯一個mapper,繼承Myabtis-plus根接口BaseMapper,就可以使用自帶的基礎的增刪改查功能,無需自己編寫。

這里我沒有編寫Service層,方便起見直接在controller層調用mapper。

最后編寫一下controller層,對外提供四個接口,分別是查詢用戶列表接口、新增用戶接口、修改用戶接口、刪除用戶接口。

然后我們啟動項目,通過Http測試工具直接訪問。

分享到此結束,感謝大家觀看。

Q&A環節

感謝大家和我一起學習導入導出項目場景實踐的相關知識,下面進入Q&A環節。

Q:請問我想通過mo-dump工具只導出表結構,而不要數據,怎么導呢?

A:可以在導出命令后跟-no-data參數,指定不導出數據。

Q:使用load data導入的json 對象中缺少某些字段,導入會報錯嗎?

A:導入會報錯,導入json中字段多余表中字段,可以正常導入不過多出字段會被忽略,如果少于的話,則無法導入。

Q:我在執行source導入的時候導入文件是否可以寫相對路徑?

A:可以寫相對路徑,是相對于您使用mysql客戶端的當前路徑的,這里還是建議寫全路徑,防止出錯,另外注意文件權限問題。

Q:使用load data命令導入一個大文件時比較耗時,有時候就會斷掉又得重新來一遍,能否優化呢?

A:您可以在導入時候指定PARALLEL為true開啟并行導入,例如,對于 2 個 G 的大文件,使用兩個線程去進行加載,第 2 個線程先拆分定位到 1G 的位置,然后一直往后讀取并進行加載。這樣就可以做到兩個線程同時讀取大文件,每個線程讀取 1G 的數據。也可以自己切分數據文件。

Q:Load data導入有事務嗎?

A:所有的load語句都是有事務的。

Q:source導入sql時涉及觸發器和存儲過程會執行生效嗎?

A:目前如果sql中存在不兼容的數據類型、觸發器、函數或存儲過程,仍需要手動修改否則執行會報錯。

Q:mo-dump支持批量導出多個數據庫嗎?

A:僅支持導出單個數據庫的備份,如果你有多個數據庫需要備份,需要手動運行 mo-dump 多次。

Q:MatrixOne支持從Minio導入數據嗎?

A:是支持的,load data 命令支持從本地文件、S3 對象存儲服務以及S3 兼容的對象存儲服務中導入數據到matrixone中,

而Minio也是基于S3協議的,所以也是支持的,具體參考文檔:https://docs.matrixorigin.cn/1.0.0/MatrixOne/Deploy/import-data-from-minio-to-mo/

Q:MatrixOne 導入導出數據時,如果出現編碼問題,導致數據亂碼,我們一般是怎么解決的?

A:由于matrixone默認只支持UTF8這一種編碼且無法更改;所以在導入數據時如果出現了亂碼,我們就不能通過修改數據庫和表的字符集來解決,可以試著轉換數據編碼為UTF8。常見的轉換工具有 iconv 和 recode,比如:將 GBK 編碼的數據轉換為 UTF-8 編碼:iconv -f GBK -t UTF8 t1.sql > t1_utf8.sql。

Q:MatrixOne導入導出時 ,需要哪些權限?

A:租戶管理員的話,通過默認角色可以直接進行導入、導出操作。普通用戶的話,導入時,需要導入表的'insert'權限;select...into outfile方式導出時,需要導出表的'select'權限;mo-dump導出時,需要所有表(table *.*)的'select'權限和所有庫(database *.*)的'show tables'權限。


關于MatrixOne
MatrixOne 是一款基于云原生技術,可同時在公有云和私有云部署的多模數據庫。該產品使用存算分離、讀寫分離、冷熱分離的原創技術架構,能夠在一套存儲和計算系統下同時支持事務、分析、流、時序和向量等多種負載,并能夠實時、按需的隔離或共享存儲和計算資源。云原生數據庫MatrixOne能夠幫助用戶大幅簡化日益復雜的IT架構,提供極簡、極靈活、高性價比和高性能的數據服務。

MatrixOne企業版和MatrixOne云服務自發布以來,已經在互聯網、金融、能源、制造、教育、醫療等多個行業得到應用。得益于其獨特的架構設計,用戶可以降低多達70%的硬件和運維成本,增加3-5倍的開發效率,同時更加靈活的響應市場需求變化和更加高效的抓住創新機會。在相同硬件投入時,MatrixOne可獲得數倍以上的性能提升。
MatrixOne秉持開源開放、生態共建的理念,核心代碼全部開源,全面兼容MySQL協議,并與合作伙伴打造了多個端到端解決方案,大幅降低用戶的遷移和使用成本,也幫助用戶避免了供應商鎖定風險。

MatrixOrigin 官網:新一代超融合異構開源數據庫-矩陣起源(深圳)信息科技有限公司 MatrixOne
Github 倉庫:GitHub - matrixorigin/matrixone: Hyperconverged cloud-edge native database
關鍵詞超融合數據庫、多模數據庫、云原生數據庫、國產數據庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習Opencv(蝴蝶書/C++)——3. OpenCV的數據類型

文章目錄 1. 總覽2. 基礎類型2.0 基礎類型總覽2.1 cv::Vec<>類2.2 cv::Matx<>類2.3 cv::Point類(cv::Point3_< >和cv::Point_< >)2.4 cv::Scalar(cv::Scalar_)類2.5 cv::Size(cv::Size_)類、cv::Rect(cv::Rect_)類和cv::RotatedRect 類2.6 基礎類型…

常見面試題-Redis 主從復制原理以及痛點

Redis 主從復制如何同步數據呢&#xff1f; 參考文章&#xff1a;https://blog.csdn.net/Seky_fei/article/details/106877329 https://zhuanlan.zhihu.com/p/55532249 https://cloud.tencent.com/developer/article/2063597 https://xie.infoq.cn/article/4cffee02a2a12c2…

LongAccumulator

原子操作之LongAccumulator 和LongAdder的區別在于&#xff0c;LongAdder是在Cell里面只能做加減操作&#xff0c;不能乘除&#xff0c;而LongAccumulator就可以定義乘除操作。原理和LongAdder都是一樣的&#xff0c;一個Base和一個Cells數組。 原文跳轉地址

pyqt5的組合式部件制作(四)

對組合式部件的制作又改進了一版&#xff0c;組合式部件的子部件不再需要單獨“提升為”&#xff0c;如果在模板文件的提升部件窗口內選擇了“全局包含”&#xff0c;那么只需要在模板文件和應用文件中直接復制粘貼即可&#xff0c;部件的應用更為簡便。如下圖&#xff1a;按住…

2023秋招上岸必備軟件測試面試題

1、請結合你熟悉的項目&#xff0c;介紹一下你是怎么做測試的&#xff1f; -首先要自己熟悉項目&#xff0c;熟悉項目的需求、項目組織架構、項目研發接口等 -功能 接口 自動化 性能 是怎么處理的&#xff1f; -第一步&#xff1a; 進行需求分析&#xff0c;需求評審&#…

【Delphi】開發IOS 程序,TLabel 中英文字對齊(水平),一行代碼解決顯示對齊問題!

目錄 一、問題現象&#xff1a; 二、解決方案&#xff08;一行代碼解決ios對齊問題&#xff09;&#xff1a; 三、解決后效果&#xff1a; 四、后記&#xff1a; 一、問題現象&#xff1a; 在用 Delphi 開發ios程序時&#xff0c;使用TLabel控件顯示&#xff0c;會出現中英…

WiFi 6的數據在發送端分片和在接收端重組的理解

802.11ax是WiFi 6標準&#xff0c;其引入了一些新的特性和技術來提升無線網絡的性能&#xff0c;其中包括幀聚合和幀分片。以下是它們的詳細處理流程&#xff1a; 1. 幀聚合 幀聚合是一種提高傳輸效率的技術&#xff0c;它允許多個數據幀被聚合到一起&#xff0c;然后作為一個…

layui(2.8.18)生成驗證碼

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>登入</title><meta name"renderer" content"webkit"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1&quo…

Go 工具鏈詳解(七):模塊緩存清理工具

go mod 緩存 在 Golang 中&#xff0c;模塊是對一組版本化的包的集合的描述。Go 1.11 版本引入了模塊支持&#xff0c;通過 go mod 命令提供了對模塊的管理。Go 模塊的一個重要特性是依賴管理&#xff0c;可以清晰地定義項目所依賴的模塊及對應的版本&#xff0c;并確保代碼使…

電磁優化的并行空間映射方法

空間映射(SM)是一種公認的加速電磁優化的方法。現有的SM方法大多基于順序計算機制。本文提出了一種用于電磁優化的并行SM方法。在該方法中&#xff0c;每次迭代開發的代理模型被訓練以同時匹配多個點的精細模型。多點訓練和SM使代理模型在比標準SM更大的鄰域內有效。本文提出的…

[補題記錄] Complete the Permutation(貪心、set)

URL&#xff1a;https://codeforces.com/group/OcmZ7weh45/contest/487583/problem/J 目錄 Problem/題意 Thought/思路 Code/代碼 Problem/題意 給出一個長度為 N 的序列&#xff0c;其中的元素都是奇數。 現在要求在兩個奇數之間插入一個偶數&#xff0c;使得這三個數遞增…

信息壓縮模型在自然語言處理中的應用和探討

信息壓縮模型在自然語言處理中的應用和探討 摘要:正文:結論:附錄:摘要: 隨著人工智能和深度學習的發展,自然語言處理(NLP)在信息處理中的角色變得越來越重要。然而,海量的自然語言數據為信息處理帶來了挑戰——更多的信息通常意味著更高的處理成本,并可能導致效率降低。為…

一個工具讓你明白“萬丈高樓平地起”,拒絕重復造輪子!

大家在公司工作當中是不是很多時間裝環境很麻煩&#xff0c;一個項目要上線了&#xff0c;開始網上搜了一邊又一遍的環境搭建教程&#xff1f;等到下一個項目要上線了&#xff0c;又上網上搜了一邊又一遍的環境搭建教程。關鍵天花亂墜的互聯網&#xff0c;找不到很靠譜的呀。有…

數組的移動

設計程序&#xff0c;給定包含N個整數的數組array&#xff0c;實現操作&#xff1a;前面各個整數順序向后移動m個位置&#xff0c;最后的m個整數移動到最前面。方法&#xff1a;void move(int array[], int n,int m ) 輸入要求 第一行輸入兩個整數N(1<N<1e6)和m(0<m&…

webpack 配置

1、基礎配置 // node js核心模塊 const path require(path) // 插件是需要引入使用的 const ESLintPlugin require(eslint-webpack-plugin) // 自動生成index.html const HtmlWebpackPlugin require(html-webpack-plugin); // 將css文件單獨打包&#xff0c;在index.html中…

如何做好項目管理?年薪百萬項目大佬一直在用這11張圖

大家好&#xff0c;我是老原。 日常工作中&#xff0c;我們會遇到各種大大小小的工作項目&#xff0c;如何能讓項目保質保量的完成&#xff0c;是我們項目經理的目標。 項目管理的流程可以說是由一系列的子過程組成的&#xff0c;它是一個循序漸進的過程&#xff0c;所以不能…

python數字

目錄 整數&#xff08;如&#xff0c;2、4、20 &#xff09;的類型是 int&#xff0c;帶小數&#xff08;如&#xff0c;5.0、1.6 &#xff09;的類型是 float。 Python 用 ** 運算符計算乘方 1&#xff1a; 等號&#xff08;&#xff09;用于給變量賦值。 解釋器像一個簡單…

進程API

linux下進程的api forkwaitexec fork #include <stdio.h> #include <stdlib.h> #include <unistd.h>/* linux環境運行 子進程并不是完全拷貝了父進程。具體來說&#xff0c;雖然它擁有自己的 地址空間&#xff08;即擁有自己的私有內存&#xff09;、寄存器…

【Delphi】使用TWebBrowser執行JavaScript命令傳入JSON參數執行出錯解決方案

目錄 一、問題背景&#xff1a; 二、實際示例&#xff1a; 三、解決方案&#xff1a; 1. Delphi 代碼&#xff1a; 2. javaScript代碼&#xff1a; 一、問題背景&#xff1a; 在用Delphi開發程序&#xff0c;無論是移動端還是PC端&#xff0c;都可以很方便的使用TWebBrows…