ysq5.7.44源代碼方式
下載安裝配置
官網文檔
https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html
打開mysql官網網站 https://www.mysql.com/,點擊download進入下載頁面。
在下載頁面中找到mysql社區服務器版本,點擊“MySQL Community (GPL) Downloads ?”進入社區服務器版的下載頁面。
點擊社區服務器版“MySQL Community Server”
點擊存檔“Archives”,選擇操作系統,操作系統版本,找到源碼。
yum install -y gcc-c++
CMake是一個跨平臺的開源構建工具,用于構建mysql軟件。他寫CMakeLists.txt文件來描述項目的結構,用cmake生成makefile文件,共make編譯使用。
yum install cmake
cmake官網下載 https://cmake.org/download/,源碼編譯見軟件包中的readme文件。
查看cmake版本
cmake --version
一般系統自帶這個編譯工具,可以通過make --version查看版本。
需要 SSL 庫來支持加密連接、隨機數生成。
yum install openssl-devel
Boost是一個由C++社區開發和維護的開源C++庫集合,旨在擴展C++語言的功能和性能。
構建 MySQL 需要 Boost C++ 庫,必須安裝Boost 1.59.0,安裝 Boost 后,根據調用WITH_BOOST在CMake 時為選項設置的值告訴構建系統 Boost 文件的放置位置。
見以下兩個選項:
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
ncurses庫是一個用于創建文本用戶界面(TUI)的開發庫。
yum install ncurses-devel
如果您打算運行測試腳本,則需要 Perl。
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
解壓
cd /soft
tar zxvf mysql-5.7.44.tar.gz
cd mysql-5.7.44
創建構建目錄
mkdir build
cd build
構建make編譯文件
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
說明:
-DCMAKE_INSTALL_PREFIX:配置安裝到特定路徑
-DMYSQL_DATADIR:配置數據目錄
-DSYSCONFDIR:配置選項文件的目錄
-DDEFAULT_CHARSET:配置mysql服務字符集,默認字符是latin1(cp1252西歐)字符集
-DDEFAULT_COLLATION:服務器排序規則。默認排序規則使用 latin1_swedish_ci。
-DMYSQL_TCP_PORT:服務器偵聽 TCP/IP 連接的端口號。默認值為 3306。
-DDOWNLOAD_BOOST:檢查是否有boost庫
重新構建時運行以下命令清楚歷史構建信息
make clean
rm -rf CMakeCache.txt
編譯&安裝
make
make install
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
echo $PATH
切換到mysql軟件根目錄
cd /usr/local/mysql
創建mysql-files目錄
mkdir mysql-files
chown mysql:mysql mysql-files
mysql-files目錄提供了一個方便的位置來用作系統變量的值 secure_file_priv,這將導入和導出操作限制到特定目錄。
創建mysql配置文件
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/home/mysql
MySQL安裝完成后,必須初始化數據目錄。
bin/mysqld --defaults-file=/etc/my.cnf \
--initialize \
--user=mysql
--defaults-file:指定初始化時的配置文件,必須在選項的第一位。(配置文件中只能有basedir和datadir,其他選項需要在初始化后才能加入)
--initialize:初始化
--user:指定mysql軟件運行用戶
注意:初始化數據庫目錄時,除了使用--basedir、--datadir、--user選項外,不應該使用其他選項。其他選項可以在初始化完成后再my.cnf中指定,然后重啟mysql服務。意思就是說初始化數據庫目錄時最多只能使用--basedir、--datadir、--user選項。
bin/mysql_ssl_rsa_setup
bin/mysqld_safe --user=mysql &
對于使用 RPM 包安裝 MySQL 的 Linux 系統,服務器啟動和關閉是使用 systemd 而不是mysqld_safe管理的,并且 不安裝mysqld_safe 。
cd support-files/
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
service mysql start
service mysql stop
service mysql restart
登錄mysql后運行如下命令修改密碼,登錄密碼在初始化數據目錄時有顯示。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Welcome123#';
查看默認存在的用戶
select user,host from mysql.user;
你需要在“/etc/systemd/system/”創建一個“mysql.service”的文件,告訴systemd如何管理MySQL服務。
文件內容如下:
[Unit]
Description=MySQL Server
After=network.target
[Service]
ExecStart=/usr/local/mysql/bin/mysqld_safe --user=mysql
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
User=mysql
Group=mysql
Restart=always
[Install]
WantedBy=multi-user.target
說明:
After=network.target 是systemd服務單元文件中的一個指令,它指定了服務單元所依賴的其他單元。具體來說,network.target 是一個systemd的單元,表示網絡服務已經啟動并可用。
Restart=always 意味著當服務意外退出(即非正常退出)時,systemd會自動嘗試重新啟動該服務。
WantedBy=multi-user.target 是systemd服務單元文件中的一個指令,它定義了服務的啟動級別(run level)。在systemd中,系統的啟動級別通過一個稱為 target 的單元來表示。multi-user.target 是系統的多用戶運行級別,通常用于大多數服務器環境,表示系統已經啟動到了可以提供多用戶登錄和運行多個服務的階段。WantedBy=multi-user.target 指定了MySQL服務的啟動級別,并告訴systemd在系統啟動到多用戶運行級別時啟動MySQL服務。
重新加載systemd管理器配置
創建完服務單元文件后,需要通知systemd重新加載它的配置,以便識別到新的MySQL服務單元。
systemctl daemon-reload
述 | 楊曉兵
編輯 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
編者前記:
編譯器是連接人類世界與機器世界之間的一座橋梁,它可將程序員理解的高級語言,轉換成程序高效執行的機器碼。在 C/C++ 編譯器里,有 VC、Borland C++、GCC、Watcom C/C++ 等國外熱門編譯器,但屬于國內自主研發的編譯器較少。
畢竟開發一款實用的編譯器不易,涉及前端詞法、語法分析、語意分析、大量的編譯優化等工作。而有一支團隊,不惜花費十余年精力完全自主研發出一款 YC 編譯器和 YC 瀏覽器內核。
為何他們不遺余力地自主研發編譯器和瀏覽器內核?這款編譯器有何優點呢?下面由 YC 編譯器的主要作者之一——楊曉兵,來講述這背后十多年來的漫漫研發路。
以下為楊曉兵自述:
初衷:“做一些對軟件行業進步有幫助的東西”
十多年前,我在中國科學院電子學研究所工作,參與設計一些硬件電路。當時我對硬件的興趣遠超軟件,后創業專門從事軟件工作。
我在創業的過程中發現,做此類軟件雖能賺錢,但無論做得怎樣,對軟件科學的進步都無絲毫作用。盡管付出很多,卻無成就感。
操作系統、數據庫、編譯器以及瀏覽器內核是不需要特殊專業知識的、開發難度非常大、最基礎的軟件產品。
我想從這幾種軟件中選擇其中一項來自主研發,雖然不能肯定做出什么成就,但我有希望能做出一些對軟件行業進步有所幫助的東西,使自己不枉踏入軟件這個行業。根據當時的情況,我發現可先從瀏覽器內核下手,于是我除了維護原有產品外,把主要精力都投入到瀏覽器的研發中。
創新將 C 代碼內嵌到 HTML
兩年后,我們研發完成瀏覽器內核的基本功能,如 HTML 的解析和顯示、JavaScript 腳本的執行等。
此時,我們發現 HTML 的標準越來越復雜,導致開發難度越來越大,如果按照這樣的發展,瀏覽器內核將無法走入市場。
于是我重新思考:如果把 C 語言處理成像 JavaScript 腳本嵌入到 HTML 中,用內嵌 C 代碼的 HTML 超文本做軟件的人機交互界面,這款內核應該會有點競爭優勢。
于是我們花費兩年半的時間將標準 C 語言以 JavaScript 相似的方式在 HTML 中執行,并擴展了一個 HTML 標簽:<user>,每個 user 標簽都可以用屬性 src 指定一個 C 源碼文件,user標簽的顯示界面和所有行為都由它的 C 代碼決定。
同時將 C 編譯器做成一個函數,用該函數編譯生成 C 程序的可執行代碼,執行代碼可被存入文件或直接執行。此時,我們將編譯器取名為 YC 編譯器,瀏覽器內核取名為 YC 瀏覽器。
三年又三年,漫漫研發路
隨后,我們繼續完善瀏覽器內核,將其中的一些內核代碼獨立出來用內嵌編譯器動態編譯執行,并將大部分內核源代碼開源。
與此同時,我們又遇到一個問題:YC 編譯器雖然編譯速度較快,生成的卻是字節碼,執行速度慢,而且與原生代碼相互調用(特別是回調函數)的處理相當繁瑣。因此用當時的 YC 編譯器難以勝任開源代碼的編譯工作。
為了解決自編譯瀏覽器內核代碼的問題,我們決定修改 YC 編譯器,使它的字節碼轉換為原生的執行碼,并擴展語法,使之具有少量的 C++ 語法。這個工作持續了三年。
三年后,YC 編譯器功能增多,它提供一個函數像調用動態鏈接庫一樣直接調用 C 源碼中的函數。此時,瀏覽器內核開源部分都可以用 YC 編譯器實時編譯執行了。
我們繼續改進瀏覽器內核,將速度很慢的 JavaScript 字節碼改為二進制原生代碼,使 JavaScript 的執行速度約提高約 100 多倍。同時將瀏覽器內核代碼全部模塊化并開源,每個模塊都用 YC 編譯器動態編譯執行,編譯器的部分源碼也開源(如內嵌匯編編譯器源碼、反匯編源碼、C/C++ 字節碼的執行源碼等),所有的開源代碼均由內嵌的 YC 編譯器自動檢測編譯,動態執行。這個工作大概耗時四年。
開發至此,我想起谷歌和火狐瀏覽器都已開源,為什么不去看看它們的源代碼呢?于是找到這兩個瀏覽器的源碼。
當時由于一些原因,我分析谷歌瀏覽器源碼沒有編譯通過,而火狐的源碼很順利就編譯成功了,于是我就走上了分析火狐源碼之路。
下載的火狐源碼由純 C 代碼和 C++ 代碼兩部分組成,經 Visual C++ 2013 編譯生成一個 xul.dll 文件和一個 firefox.exe 文件。
我首先分析了它的 C 代碼,將所有的輸出函數全部改為類接口,并讓 xul.dll 通過 YC 編譯器函數 YC_cppLoad 進行實時編譯,然后用類接口調用 C 源碼中的函數。這一步進行得很順利,若修改了火狐的 C 代碼,只要重新運行火狐瀏覽器便可生效,無需其它操作。
曾經的辦公桌
接下來開始分析火狐 C++ 代碼。YC 編譯器只實現了少數幾個 C++ 語法,不能編譯火狐 C++ 代碼,故分析起來非常困難。
為什么火狐 C 代碼容易分析,而它的 C++ 代碼難以分析呢?原來我用 YC 編譯器將它的 C 代碼生成匯編代碼文件、變量結構定義文件、宏定義文件和預編譯文件,通過這幾個文件,大大減少了分析難度。
因此我再次決定修改 YC 編譯器,使之完全支持 C++11 標準,因為火狐 C++ 代碼幾乎使用了所有的 C++11 語法特性。先使用 STL 標準模板庫代碼進行編譯器的修改和調試,出乎預料,這個過程竟用了三年時間!之后,我用 YC++ 編譯器開始調試火狐 C++ 代碼。原以為 STL 那么復雜的代碼都可以編譯通過并正確執行,火狐 C++ 代碼應該能很快就編譯通過。沒想到,很多語法細節 STL 沒有用到,而火狐 C++ 源碼用到了。于是又繼續修改 YC 編譯器,對火狐 C++ 的各個模塊進行編譯,這個過程持續了一年多。
雖然 YC 編譯器可以編譯全部火狐 C++ 代碼,但如何生成執行代碼呢?先從主程序 Firefox.cpp 入手,經整理,這個程序可用 YC 編譯器生成執行代碼 Firefox.exe,并能順利運行。
由于火狐 C++ 各模塊耦合緊密,很難拆分,經過一個多月的工作,仍未能將其拆成多個獨立的源碼模塊以便于用 YC 編譯器實時編譯,動態執行,這也許是我對火狐 C++ 源碼的整體結構還不甚清楚之故,只見其樹木不見其森林。
楊曉兵
當我準備對火狐 C++ 代碼進行再一次總體分析時,有個偶然的機會參與到一個學校管理系統的開發中,因原有的管理系統經常出故障,操作極其不方便。盡管沒有開發 Web 服務程序的經歷,但我做的軟件與 Web 服務器有極大關系。
經了解,要開發這種管理系統需要的軟件有:Apache 或 Nginx 服務器,數據庫 MySQL 或其它,編程工具 ASP 或 JSP 或 PHP 等,于是啟發我們自己研發這些工具。YC 的 C/C++ 和 JavaScript 編譯器和 HTML 解析器正好派上用場。
經過一段時間,一個穩定的、可任意擴展的、多線程高并發的 HTTP 服務器就完成了。該服務器處理 YSP 文件生成網頁傳給瀏覽器。
YSP 是我設計的與 ASP、JSP 和 PHP 功能相似的一種網頁編程語言。YC 服務器執行 YSP 文件中的內嵌 C/C++ 或 JavaScript 代碼,生成 HTML 超文本傳給終端設備。工具做好后,不久便做出了管理系統的雛形,這個雛形在發布的 YC 編譯器中可見到。
做了上述這些工作后,我想是時候該寫本書介紹一下 YC 編譯器了,經過一段時間編寫的《YC編譯器—多語言程序設計》(暫名)即將出版。
當我把書完成后,便立即投入64位的C/C++和JavaScript編譯器的開發,目前開發進展順利,已進入測試階段。
編者后記:
三年時間,可將一個呱呱落地的嬰兒變成蹦蹦跳跳的幼兒,可將一名懵懂的職場新人變成沉穩的老兵。而楊曉兵團隊沉下心,迎難而上,花費三年又三年、再一年、兩年、四年的時間只為突破一個個技術難點,最終自研出 YC 編譯器和 YC 瀏覽器內核。
在這過程中,楊曉兵坦言最大的挑戰不僅是技術,還有思維的高度。這期間不僅有大量的研發工作,還為了優化,多次重寫代碼,讓他堅持下來的是想為計算機軟件科學的發展做貢獻的匠心。
目前楊曉兵團隊正在開發 64 位 C/C++ 編譯器,談及未來,楊曉兵表示先在國內推廣,再走向海外。祝福楊曉兵。
YC編譯器傳送門:http://www.ycbro.com
TML編輯器是一種用于創建、編輯和預覽HTML(超文本標記語言)代碼的工具或應用程序。它提供了一個直觀的界面,使用戶能夠輕松地編寫和設計網頁內容。本文主要介紹HTML 常用編輯器(Visual Studio Code、Sublime Text、Atom、Notepad++和Dreamweaver)。
參考文檔:https://www.cjavapy.com/article/3299/
Visual Studio Code(簡稱VS Code)是一款由微軟開發的跨平臺源代碼編輯器,支持Windows、macOS和Linux等多種操作系統。它被廣泛用于Web開發,包括編輯HTML、CSS、JavaScript等前端技術。VS Code是一款輕量級的代碼編輯器,啟動迅速,占用資源少。VS Code提供了豐富的擴展和插件,可以根據需求安裝插件來增強編輯器功能。
1)安裝和配置
官網地址:Visual Studio Code - Code Editing. Redefined
根據操作系統下載并安裝相應版本的VS Code。打開VS Code后,可以根據自己的喜好配置編輯器設置,如主題、字體等。
2)新建HTML文件
在 VS Code 安裝完成后,選擇" 文件(F)->新建文件(N) ",在新建的文件中輸入以下代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>編程之路(cjavapy.com)</title>
</head>
<body>
<h1>我的第一個標題</h1>
<p>我的第一個段落。</p>
</body>
</html>
3)編輯HTML文件
在VS Code中,點擊左上角的"文件"菜單,選擇"打開文件",或者使用快捷鍵Ctrl+O(Windows)或Cmd+O(macOS)來打開HTML文件。
在編輯器中可以直接修改HTML文件的內容。VS Code會自動識別HTML標記,并提供代碼高亮和智能提示功能。編輯完成后,使用快捷鍵Ctrl+S(Windows)或Cmd+S(macOS)來保存HTML文件。
4)插件推薦
HTML CSS Support:提供對HTML和CSS的支持,包括代碼片段、自動補全等功能。
Live Server:啟動一個本地開發服務器,實時預覽HTML頁面的效果。
Prettier:格式化HTML代碼,使代碼結構更整潔。
Auto Close Tag:自動閉合HTML標簽,提高編碼效率。
Bracket Pair Colorizer:對成對的括號進行著色,方便識別代碼塊。
Sublime Text是一款流行的跨平臺源代碼編輯器,支持Windows、macOS和Linux等多種操作系統。它被廣泛用于Web開發,包括編輯HTML、CSS、JavaScript等前端技術。
Sublime Text的界面非常簡潔,沒有多余的菜單和工具欄,更便于專注于代碼編輯。Sublime Text支持多種編程語言,包括HTML、CSS、JavaScript、Python、Java等。Sublime Text擁有強大的插件系統,用戶可以根據需要安裝插件來擴展編輯器功能。用戶可以自定義快捷鍵、主題、顏色方案等,以滿足個性化需求。Sublime Text啟動迅速,響應快速,適合于快速編輯代碼。
1)安裝和配置
官網地址:Sublime Text - Text Editing, Done Right
根據操作系統下載并安裝相應版本的Sublime Text。打開Sublime Text后,可以根據自己的喜好進行編輯器設置,如字體、主題等。
2)新建HTML文件
在Sublime Text 安裝完成后,選擇" File->New File ",在新建的文件中輸入以下代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>編程之路(cjavapy.com)</title>
</head>
<body>
<h1>我的第一個標題</h1>
<p>我的第一個段落。</p>
</body>
</html>
3)編輯HTML文件
在Sublime Text中,點擊左上角的"File"菜單,選擇"Open File",或者使用快捷鍵Ctrl+O(Windows)或Cmd+O(macOS)來打開HTML文件。在編輯器中可以直接修改HTML文件的內容。Sublime Text會自動識別HTML標記,并提供代碼高亮和智能提示功能。編輯完成后,使用快捷鍵Ctrl+S(Windows)或Cmd+S(macOS)來保存HTML文件。
4)插件推薦
Emmet:提供HTML/CSS快速編寫和自動完成功能,可以大大提高編碼效率。
Sublime Linter:對代碼進行實時語法檢查,幫助發現潛在的錯誤和警告。
Color Highlighter:對CSS中的顏色進行高亮顯示,方便調試和修改樣式。
SideBarEnhancements:增強側邊欄功能,提供更多文件操作選項。
Dreamweaver是由Adobe公司開發的一款全球知名的網頁設計和開發工具。它為開發人員和設計師提供了一個可視化的界面,可以直觀地創建和編輯網頁內容,同時也支持手動編輯代碼。Dreamweaver提供可視化界面,可以直觀地拖拽和編輯網頁元素,無需手動編寫代碼。除了可視化界面,Dreamweaver也支持手動編輯代碼,適合于開發人員和設計師。Dreamweaver可在Windows和macOS等多個平臺上運行。Dreamweaver集成了代碼編輯器、預覽窗口、文件管理器等功能,提供全面的開發環境。
1)安裝和配置
官網地址:Website design software | Adobe Dreamweaver
根據操作系統下載并安裝相應版本的Dreamweaver。打開Dreamweaver后,,根據需要進行編輯器設置,如界面語言、字體、代碼顏色等。
2)編輯HTML文件
在Dreamweaver中,點擊左上角的"File"菜單,選擇"New",然后選擇"HTML",即可新建一個空白的HTML文件。內容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>編程之路(cjavapy.com)</title>
</head>
<body>
<h1>我的第一個標題</h1>
<p>我的第一個段落。</p>
</body>
</html>
使用可視化界面,可以直接拖拽頁面元素、調整布局、插入圖片等。若需要手動編輯HTML代碼,可以在下方的代碼編輯器中進行修改。Dreamweaver會自動提供代碼補全和語法高亮功能。在Dreamweaver中,可以實時預覽網頁效果,點擊右上角的"Live View"按鈕即可。
3)CSS和JavaScript支持
Dreamweaver也支持CSS和JavaScript的編輯和預覽,可以幫助創建更豐富的網頁效果。在編輯器中可以直接編輯CSS樣式和JavaScript代碼,并實時查看效果。
4)網頁上傳和發布
Dreamweaver集成了FTP功能,可以直接將編輯好的網頁上傳到服務器。點擊"Site"菜單,選擇"Manage Sites",配置好站點設置,即可進行上傳和發布。
5)Dreamweaver模板和庫
Dreamweaver提供模板和庫功能,可以保存和復用常用的網頁元素和樣式,提高開發效率。
參考文檔:https://www.cjavapy.com/article/3299/
*請認真填寫需求信息,我們會在24小時內與您取得聯系。