源碼安裝MySQL

来源:https://www.cnblogs.com/qigs/archive/2019/04/16/10718550.html
-Advertisement-
Play Games

[TOC] 一、安裝單實例 1、升級openssl "openssl升級" 2、替換軟體源 3、root 用戶ssh遠程登錄 4、mysql需要安裝的包 5、navicate 連接虛擬機mysql 6、安裝mysql utilities ==最好源碼安裝== 二、安裝多實例 1、目錄結構 2、腳本語 ...


目錄

一、安裝單實例

1、升級openssl

#查看版本
openssl version
#openssl 安裝包 openssl-1.1.0j.tar.gz 
#下載地址https://www.openssl.org/source/
cd /usr/local/openssl-1.1.1
./config
make
make install
#受影響的文件夾
#/usr/local/bin
#/usr/local/include
#/usr/local/lib
#先查找 當前openssl的生效目錄
which openssl
#設置軟連接  路徑:/usr/bin/openssl
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/bin/openssl /usr/bin/openssl
openssl version
#報錯error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
 
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

openssl升級

2、替換軟體源

#替換軟體源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
#https://opsx.alibaba.com/mirror
#vim 粘貼的時候  :set paste  按下i時候 可直接粘貼
#用完後需:set nopaste
sudo apt-get update
sudo apt-get upgrade

3、root 用戶ssh遠程登錄

#新裝的系統,首先設置root密碼
sudo passwd
#編輯 SSH 的文件,將PermitRootLogin 的值改為yes
$ vim /etc/ssh/sshd_config
#重啟ssh服務
sudo service ssh restart

4、mysql需要安裝的包

#1.環境準備
apt-get install make cmake gcc g++ bison libncurses5-dev build-essential


#2.添加用戶和組
groupadd mysql
useradd -d /home/mysql -g mysql -m mysql
#查看mysql
id mysql
#創建密碼 sudo passwd mysql
#useradd
#-c:加上備註文字,備註文字保存在passwd的備註欄中。
#-d:指定用戶登入時的主目錄,替換系統預設值/home/<用戶名>
#-D:變更預設值。
#-e:指定賬號的失效日期,日期格式為MM/DD/YY,例如06/30/12。預設表示永久有效。
#-f:指定在密碼過期後多少天即關閉該賬號。如果為0賬號立即被停用;如果為-1則賬號一直可用。預設值為-1.
#-g:指定用戶所屬的群組。值可以使組名也可以是GID。用戶組必須已經存在的,期預設值為100,即users。
#-G:指定用戶所屬的附加群組。
#-m:自動建立用戶的登入目錄。
#-M:不要自動建立用戶的登入目錄。
#-n:取消建立以用戶名稱為名的群組。
#-r:建立系統賬號。
#-s:指定用戶登入後所使用的shell。預設值為/bin/bash。
#-u:指定用戶ID號。該值在系統中必須是唯一的。0~499預設是保留給系統用戶賬號使用的,所以該值必須大於499。

#3.cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/u01/my3306 \
-DINSTALL_DATADIR=/u01/my3306/data  \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_SSL=yes \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/u01/my3306/run/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=boost \
-DWITH_READLINE=on

#4.make
#5.make install
#6.目錄重新授權
chown -R mysql:mysql /u01/my3306
chmod 755 -R  /u01/my3306
#7.複製my.cnf 初始化
./mysqld --defaults-file=/u01/my3306/my.cnf --initialize --datadir=/u01/my330      6/data --user=mysql

./mysqld --defaults-file=/u01/my3306/my.cnf --initialize-insecure --datadir=/u01/my3306/data --user=mysql

#--initialize 會生成一個隨機密碼,而 -–initialize-insecure 不會生成密碼,在MySQL安全配置嚮導mysql_secure_installation設置密碼時,可自由選擇 mysql 密碼等級。
#--datadir目標目錄下不能有數據文件。
--重新初始化 需刪除data和log的所有文件
rm -fr /u01/my3306/log/binlog/*
rm -fr /u01/my3306/log/iblog/*
rm -fr /u01/my3306/data/*
#8.啟動mysql
./mysqld_safe --defaults-file=/u01/my3306/my.cnf --user=mysql &

#9.配置安全嚮導
#https://blog.csdn.net/harryxxxxx/article/details/81135222
mysql_secure_installation

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootroot' WITH GRANT OPTION;
FLUSH   PRIVILEGES;

6、安裝mysql utilities

==最好源碼安裝==

# wget -c http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-utilities-1.5.3.zip
# unzip mysql-utilities-1.5.3.zip
# cd mysql-utilities-1.5.3
# python ./setup.py build
# python ./setup.py install

二、安裝雙實例

1、目錄結構

#mysql@Fight:~$ tree  /home/mysql/新建腳本文件
.
├── m6
├── m7
├── shutdown3306.sh
├── shutdown3307.sh
├── start3306.sh
└── start3307.sh

#mysql@Fight:/u01$ tree -L 1  根目錄 /u01  其中tmp 為空用作安裝時的臨時目錄  mysql程式放在svr
.
├── conf
├── logs
├── mydata
├── mysql-5.7.24
├── mysql-boost-5.7.24.tar.gz
├── svr
└── tmp
#mysql@Fight:/u01/conf$ ls  
mysql
#mysql@Fight:/u01/conf$ cd mysql
#mysql@Fight:/u01/conf/mysql$ tree
.
├── my3306.cnf
└── my3307.cnf
#mysql@Fight:/u01/logs$ tree
.
├── my3306
│   ├── binlog
│   │   ├── binlog.000001
│   │   ├── binlog.000002
│   │   ├── binlog.000003
│   │   ├── binlog.000004
│   │   └── binlog.index
│   ├── error3306.log
│   ├── iblog
│   │   ├── ib_buffer_pool
│   │   ├── ibdata1
│   │   ├── ibdata2
│   │   ├── ib_logfile0
│   │   ├── ib_logfile1
│   │   ├── ib_logfile2
│   │   ├── ib_logfile3
│   │   └── ibtmp1
│   └── slow3306.log
└── my3307
    ├── binlog
    │   ├── mysql-bin.000001
    │   ├── mysql-bin.000002
    │   ├── mysql-bin.000003
    │   ├── mysql-bin.000004
    │   └── mysql-bin.index
    ├── error3307.log
    ├── iblog
    │   ├── ib_buffer_pool
    │   ├── ibdata1
    │   ├── ibdata2
    │   ├── ib_logfile0
    │   ├── ib_logfile1
    │   ├── ib_logfile2
    │   ├── ib_logfile3
    │   └── ibtmp1
    └── slow3307.log
    
#mysql@Fight:/u01/mydata$ tree -L 2
.
├── my3306
│   ├── auto.cnf
│   ├── ca-key.pem
│   ├── ca.pem
│   ├── client-cert.pem
│   ├── client-key.pem
│   ├── mysql
│   ├── mysqld.pid
│   ├── performance_schema
│   ├── private_key.pem
│   ├── public_key.pem
│   ├── server-cert.pem
│   ├── server-key.pem
│   └── sys
└── my3307
    ├── auto.cnf
    ├── ca-key.pem
    ├── ca.pem
    ├── client-cert.pem
    ├── client-key.pem
    ├── mysql
    ├── mysqld.pid
    ├── performance_schema
    ├── private_key.pem
    ├── public_key.pem
    ├── server-cert.pem
    ├── server-key.pem
    └── sys
#mysql@Fight:/u01/svr$ tree -L 2
.
└── mysql5.7
    ├── bin
    ├── COPYING
    ├── COPYING-test
    ├── docs
    ├── include
    ├── lib
    ├── man
    ├── mysql-test
    ├── README
    ├── README-test
    ├── share
    └── support-files
#mysql@Fight:/u01/tmp$ ls
#mysql@Fight:/u01/tmp$ tree

2、腳本語句

  • m6 ./m6
    • mysql --socket=/tmp/mysql3306.sock --port=3306
  • m7 ./m6
    • mysql --socket=/tmp/mysql3307.sock --port=3307
  • start3306.sh sh start3306.sh
    • mysqld_safe --defaults-file=/u01/conf/mysql/my3306.cnf --user=mysql &
  • start3307.sh sh start3307.sh -mysqld_safe --defaults-file=/u01/conf/mysql/my3307.cnf --user=mysql &`
  • shutdown3306.sh sh shutdown3306.sh -mysqladmin --socket=/tmp/mysql3306.sock --port=3306 shutdown &`
  • shutdown3307.sh sh shutdown3307.sh -mysqladmin --socket=/tmp/mysql3307.sock --port=3307 shutdown &`

  • 賦可執行許可權
  • chmod 777 -R m6,m7,start3306.sh,start3307.sh,shutdown3306.sh,shutdown3307.sh

2、修改環境變數

#配置環境變數
vim .profile
#修改後
#mysql@Fight:~$ cat .profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH:/u01/svr/mysql5.7/bin"

3、編譯

#1. cmake 
cmake \
-DCMAKE_INSTALL_PREFIX=/u01/svr/mysql5.7 \
-DINSTALL_DATADIR=/u01/svr/mysql5.7/data  \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_SSL=yes \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/u01/svr/mysql5.7/run/mysql.sock \
-DENABLED_LOCAL_INFILE=1 \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=boost \
-DWITH_READLINE=on

#2. make
#3. make install

4、初始化

#初始化
./mysqld --defaults-file=/u01/conf/mysql/my3306.cnf --initialize-insecure --datadir=/u01/mydata/my3306 --user=mysql
./mysqld --defaults-file=/u01/conf/mysql/my3307.cnf --initialize-insecure --datadir=/u01/mydata/my3307 --user=mysql

5、啟動

#啟動
./mysqld_safe --defaults-file=/u01/conf/mysql/my3306.cnf --user=mysql &
./mysqld_safe --defaults-file=/u01/conf/mysql/my3307.cnf --user=mysql &

6、進入

#mysql --socket=/tmp/mysql3306.sock --port=3306
./m6

#mysql --socket=/tmp/mysql3307.sock --port=3306
./m7

#遠程連接
./m6
#進入mysql
set password for root@localhost = password('rootroot');
#還不行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootroot' WITH GRANT OPTION;
FLUSH   PRIVILEGES;

7、配置資料庫密碼安全性

#3306
mysql_secure_installation -uroot -prootroot --socket=/tmp/mysql3306.sock
#3307
mysql_secure_installation -uroot -prootroot --socket=/tmp/mysql3307.sock
#取消密碼驗證

三、安裝5.6

升級OpenSSL

#Ubuntu 16.04.5 預設版本 OpenSSL 1.0.2g  1 Mar 2016 需更換為OpenSSL 1.0.2r  26 Feb 2019
#1、解壓
tar -zxvf openssl-1.0.2r.tar.gz
cd openssl-1.0.2r
./config --prefix=/usr/local --openssldir=/usr/local/openssl
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/bin/openssl /usr/bin/openssl
#2、查看版本 openssl version
#解決的問題
#In function ‘int my_aes_decrypt(const unsigned char*, uint32, unsigned char*, const #unsigned char*, uint32, my_aes_opmode, const unsigned char*)’:
#/u01/mysql-5.6.43/mysys_ssl/my_aes_openssl.cc:148:18: error: aggregate ‘EVP_CIPHER_CTX ctx’ has incomplete type and cannot be defined
#   EVP_CIPHER_CTX ctx;

#3、新問題
#[ 82%] Linking CXX shared library libmysqlclient.so
#/usr/local/lib/libssl.a: error adding symbols: Bad value
#https://www.cnblogs.com/yoyotl/p/7424967.html
#基本原理
#我們都知道在生成一個動態庫時需要指定-fPIC,這是創建動態庫所要求的,共用庫被載入是在記憶體中的位置是不固定的,是一個相對的位置。
#那麼在生成靜態庫時通常不指定-fPIC, 可是在64bit編譯使用靜態庫就會提示需要-fPIC重新編譯該庫。
#由於openssl編譯靜態庫時,沒有使用-fPIC選項,使得編譯出來的靜態庫沒有重定位能力。
#這樣在64bit機器上編譯出來的靜態庫如果不指定-fPIC選項幾乎全部不能使用。
#因此需要重新加上-fPIC從新編譯openssl

#4、刪除openssl-1.0.2l,重新解壓。
./config -fPIC --prefix=/usr/local --openssldir=/usr/local/openssl
make depend
make install

1、複製腳本並修改埠號3308

cp m6 m8
cp shutdown3306.sh shutdown3308.sh
cp start3306.sh start3308.sh

#賦許可權
chmod 777 m8
chmod 777 shutdown3308.sh
chmod 777 start3308.sh

2、創建目錄

mkdir -p /u01/logs/my3308/iblog
mkdir -p /u01/logs/my3308/binlog
mkdir -p /u01/logs/my3308/relaylog #主從複製需要
mkdir -p /u01/mydata/my3308
#mkdir -p /u01/mydata/my3308/tmp 從機需要
mkdir -p /u01/conf/mysql
mkdir -p /u01/svr/mysql5.6
mkdir -p /u01/tmp

3、修改配置文件my3308.cnf

#修改許可權
chown -R mysql:mysql /u01/conf/mysql/my3308.cnf
chmod 755 my3308.cnf

4、編譯

#1. cmake 
cmake \
-DCMAKE_INSTALL_PREFIX=/u01/svr/mysql5.6 \
-DINSTALL_DATADIR=/u01/svr/mysql5.6/data  \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/u01/svr/mysql5.6/run/mysql.sock \
-DENABLED_LOCAL_INFILE=1 \
-DSYSCONFDIR=/etc 
#5.6不需要-DWITH_BOOST=boost \

#2. make  報錯
#清楚make 緩存
#make clean
#rm CMakeCache.txt
#3. make install

5、初始化

#cd /u01/svr/mysql5.6/scripts
./mysql_install_db --defaults-file=/u01/conf/mysql/my3308.cnf --datadir=/u01/mydata/my3308 --user=mysql

#報錯
#FATAL ERROR: Could not find ./bin/my_print_defaults
#bin目錄有這個文件,
#. 當前目錄 ./bin 當前目錄下的bin文件夾  
./scripts/mysql_install_db --defaults-file=/u01/conf/mysql/my3308.cnf --datadir=/u01/mydata/my3308 --user=mysql

6、啟動

mysqld_safe --defaults-file=/u01/conf/mysql/my3308.cnf --user=mysql &

四、嘗試

1、密碼修改

#遠程連接密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootroot' WITH GRANT OPTION;
FLUSH   PRIVILEGES;

#dos 資料庫登錄密碼
set password for root@localhost = password('rootroot');
flush privileges;

2、validate_password

#最初 配置安全嚮導
mysql_security_install -uroot -prootroot --socket=/tmp/mysql3307.sock 
#.so 路徑 /u01/svr/mysql5.7/lib/plugin/
install plugin validate_password soname 'validate_password.so';
#禁用 不區分大小寫
validate_password=off 
validate-password=OFF
#查看插件列表
show plugins;

#查看系統中所有的表,可以查看那些Plugin是可以卸載的
select *from information_schema.`PLUGINS`;
#插件註冊表
#如果使用該--skip-grant-tables選項啟動伺服器 ,則不會查詢該mysql.plugin表,也不會載入其中列出的插件。
select *from mysql.`plugin`;

#卸載插件
uninstall plugin validate_password;
#1.內置插件不能卸載 information_schema.library 為null的
#2.select t.load_option from information_schema t; value為force_plus_permanent
#禁止在運行的時候卸載插件

#取消root用戶登錄時的密碼
set password for root@localhost=password('');

3、mysqld_multi

#不准,兩個實例明明結束了,仍然顯示正在運行
#j
/etc/my.cnf 配置文件出錯
mysqldadmin的路徑配置了

4、查看my.cnf配置文件查找順序

mysqld --verbose --help|grep my.cnf
#mysql@Fight:~$ mysqld --verbose --help|grep my.cnf
#/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
#                      my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一步:百度搜索 MySQL 點擊官網進入 或者複製鏈接進入下載頁面:https://downloads.mysql.com/archives/community/ 第二步:選擇自己需要的 版本和系統 下載 第三步:放入自己需要安裝的位置解壓 第四步:配置MySQL環境變數 註意解壓文件的路徑 第五 ...
  • 摘要:https://www.cnblogs.com/luoguixin/p/6291408.html 歡迎轉載,若需轉載請標明出處:https://www.cnblogs.com/luoguixin/p/6291408.html 如圖,如果通過一下代碼,添加服務後,使用 net start命令出現 ...
  • 前言 ​ 關於資料庫我們知道是通過記憶體對磁碟進行操作的,也知道數據會落實到磁碟上,但是數據在磁碟上的存儲結構可能大家還不是很清楚。 ​ MySQL伺服器上負責對錶中的數據的讀取和寫入的工作的部分是存儲引擎,而關於伺服器會支持不同類型的伺服器,如:InnoDB、MyISAM、Memory...... ...
  • 一、PreparedStatement 介面的使用 首先占位符我們可以使用 Statement 介面來操作數據, 但是這個介面存在兩個問題: 1、使用 Statement 介面對象發送的 sql 語句需要在資料庫中進行一次編譯之後成為指令才能執行,並且每條 sql 語句都需要編譯一次, 這樣效率是很 ...
  • 1.查看資料庫的基本語句:show databases; 2.選擇相應的資料庫進入語法:use 資料庫名; 3.查看資料庫中的表語法:show tables; 4.查看表的基本結構語句:desc 表名; 5.修改表名:alter table 舊表名 rename to 新表名; 6.修改欄位的數據類 ...
  • sqlplus /nolog 回車 conn / as sysdba 回車 startup 回車(如果被告知已啟動,應先執行 shutdown immediate 回車) ...
  • 一、事務概念 事務就是一個程式執行單元,裡面的操作要麼都做,要麼都不做。 二、事務特性 事務有四個非常重要的特性(ACID): 原子性(Atomicity):事務是不可分割的整體,所有操作要麼全做,要麼全不做;只要事務中有一個操作出錯,回滾到事務開始前狀態,即之前已執行的操作無效。 一致性(Cons ...
  • IDEA 安裝配置可視化 MongDB 插件 1、安裝MongoDB插件 打開 IDEA ,file --> settings --> plugins,在右邊搜索欄中輸入Mongo,點擊 Mongo Plugin 下的 Install ,安裝完後點擊重啟。 2、添加連接 第一步安裝好後,在idea右 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...