主頁 > 軟體設計 > web服務集群之LNMP架構及部署

web服務集群之LNMP架構及部署

2021-02-05 13:57:48 軟體設計

文章目錄

    • 一、LNMP架構的部署
        • (一)、LNMP架構概念
        • (二)、MySQL安裝配置
        • (三)、PHP決議環境的安裝
        • (四)、配置Nginx支持PHP環境
    • 二、部署LNMP步驟與相關命令
        • (一)、安裝Nginx服務
        • (二)、安裝MySQL服務
        • (三)、安裝配置PHP決議環境
        • (四)、搭建Discuz論壇

眾所周知,LAMP平臺使目前使用最為廣泛的網站服務器架構,其中的“A”對應著Web服務軟體 Apache HTTP server ,隨著 Nginx 在企業中的使用越來越多,LNMP(或LEMP)架構也受到越來越多Linux系統工程師的青睞,其中的“E”就來自于 Nginx 的發音,
就像構建 LAMP 平臺一樣,構建 LNMP 平臺也需要LInux 服務器、MySQL資料庫和PHP決議環境,區別主要在 Nginx 與PHP 的協作配置上,

一、LNMP架構的部署

(一)、LNMP架構概念

1、LNMP平臺就是 Linux、 Ngnix、 MySQL、PHP的組合架構,需要 Linux服務器、MySQL資料庫、PHP決議環境

2、特點

  • Ngnix特長:高并發,低資源,處理靜態網路訪問請求非常強

  • Apache:靜態處理和動態處理都可以做,更適合做動態處理

  • Nginx:將動態資源請求交給PHP當中的fpm處理動態請求

  • PHP主組態檔:php.ini

  • Nginx將動態資源分配給FPM或Apache

一般來說,需要性能的web服務,用nginx ,
如果不需要性能只求穩定,更考慮apache

(二)、MySQL安裝配置

(1)為了與 Nginx、PHP環境保持一致,此處選擇采用源代碼編譯的方式安裝 MySQL組件
(2)MySQL部署的方法:

  • 編譯安裝 MySQL
  • 優化調整初始化資料庫
  • 啟動mysq服務并設定root資料庫賬號的密碼

(三)、PHP決議環境的安裝

(1)配置網頁動靜分離,決議PHP,有兩種方法可以選擇

  • 使用PHP的FPM模塊
  • 將訪問PHP頁面的Web請求轉交給 Apache服務器去處理

(2)較新版本的PHP已經自帶FPM模塊,用來對PHP決議實體進行管理、優化決議效率

  • FastCG將 Http Server和動態腳本語言分離開
  • Nginx專門處理靜態請求,轉發動態請求
  • PHP FPM專門決議PHP動態請求

(3)單服務器的LNMP架構通常使用FPM的方式來決議PHP

(4)PHP編譯安裝步驟

  • 編譯安裝PHP
  • 編譯選項時添加"- enable-fpm”以啟用此模塊
  • 安裝后的調整,主要是組態檔的建立與相應命令工具的路徑優化
  • 安裝 Zend Guardloader(提高PHP決議效率),并進行加載配置
  • CGI還有跨平臺的功能

(四)、配置Nginx支持PHP環境

(1)呼叫本機的php-fpm行程配置方法

  • 建立FPM組態檔php-fpm.conf,修改配置選項,如:PD檔案運行用戶、服務行程數等
  • 啟動php-fpm行程

(2)在Ngnx的組態檔中的 server {} 配置段配置將PHP的網頁請求轉給FPM模塊處理

(3)在Nginx的組態檔中的 Server {} 配置段配置將PHP的網頁請求轉給FPM模塊處理

二、部署LNMP步驟與相關命令

首先一定要關掉防火墻

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

(一)、安裝Nginx服務

(1)安裝依賴包

[root@localhost ~]#yum -y install gcc gcc-c++ pcre-devel zlib-devel make

(2)創建運行用戶

useradd -M -s /sbin/nologin nginx

(3)編譯安裝Nginx

cd /opt/
tar zxvf nginx-1.12.0.tar.gz

cd nginx-1.12.0/
./configure \
 --prefix=/usr/local/nginx \
 --user=nginx \
 --group=nginx \
 --with-http_stub_status_module

#-----配置命令解釋
--prefix=/usr/local/nginx      #指定nginx的安裝路徑
--user=nginx                   #指定用戶名
--group=nginx                  #指定組名
--with-http_stub_status_module #啟用 http_stub_status_module 模塊以支持狀態統計
#-----

make && make install

(4)路徑優化

#將應用程式nginx中可執行的命令做個軟鏈接到環境路徑變數中,讓系統識別nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

(5)添加 Nginx 系統服務

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd//system/nginx.service
systemctl start nginx.service 
systemctl enable nginx.service

在這里插入圖片描述

(二)、安裝MySQL服務

1、安裝Mysql環境依賴包

yum -y install  \
ncurses \
ncurses-devel \
bison \
cmake
#--------環境包解釋------------
ncurses				#字符終端下圖形互動功能的動態庫
ncurses-devel 		#ncurses開發包
bison 				#語法分析器
cmake				#mysql需要用cmake編譯安裝

在這里插入圖片描述
2、創建運行用戶

useradd -M -s /sbin/nologin  mysql

3、編譯安裝

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz

cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

make && make install

注意:如果在CMAKE的程序中有報錯,當報錯解決后,需要把原始碼目錄中的CMakeCache.txt檔案洗掉,然后再重新CMAKE,否則錯誤依舊

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql     	#指定mysql的安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock   #指定mysql行程監聽套接字檔案(資料庫連接檔案)的存盤路徑
-DSYSCONFDIR=/etc                               #指定組態檔的存盤路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql              #指定行程檔案的存盤路徑
-DDEFAULT_CHARSET=utf8                          #指定默認使用的字符集編碼,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci  			#指定默認使用的字符集校對規則
-DWITH_EXTRA_CHARSETS=all 						#指定支持其他字符集編碼
-DWITH_INNOBASE_STORAGE_ENGINE=1               #安裝INNOBASE存盤引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1                #安裝ARCHIVE存盤引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1              #安裝BLACKHOLE存盤引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1            #安裝FEDERATED存盤引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data         #指定資料庫檔案的存盤路徑
-DWITH_BOOST=boost           #指定boost的路徑,若使用mysql和boost集成包安裝則-DWITH_BOOST=/usr/local/boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的檔案

存盤引擎選項:
#MYISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,并不需要明確地安裝,
#靜態編譯一個存盤引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1
#可用的存盤引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
#常用的兩個存盤引擎是:MYISAM和INNOBASE(InnoDB).

4、修改mysql 組態檔

#洗掉原配置項,再重新添加下面內容
vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

--------------------------------------------解釋說明------------------------------------------------------
#客戶端設定
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock			

#服務全域設定
[mysqld]
#設定管理用戶
user = mysql
#指定資料庫的安裝目錄
basedir=/usr/local/mysql
#指定資料庫檔案的存盤路徑
datadir=/usr/local/mysql/data
#指定埠
port = 3306
#設定服務器字符集編碼格式為utf8
character-set-server=utf8
#指定pid 行程檔案路徑
pid-file = /usr/local/mysql/mysqld.pid
#指定資料庫連接檔案
socket=/usr/local/mysql/mysql.sock
#設定監聽地址,0.0.0.0代表允許所有,如允許多個IP需空格隔開
bind-address = 0.0.0.0
#禁用DNS決議
skip-name-resolve
#設定mysql的最大連接數
max_connections=2048
#指定默認存盤引擎
default-storage-engine=INNODB
#設定資料庫接收的資料包大小的最大值
max_allowed_packet=16M
#指定服務ID號
server-id = 1


sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存盤引擎被禁用或未編譯,那么拋出錯誤,不設定此值時,用默認的存盤引擎替代,并拋出一個例外

STRICT_TRANS_TABLES
在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制

NO_AUTO_CREATE_USER
禁止GRANT創建密碼為空的用戶

NO_AUTO_VALUE_ON_ZERO
mysql中的自增長列可以從0開始,默認情況下自增長列是從1開始的,如果你插入值為0的資料會報錯

NO_ZERO_IN_DATE
不允許日期和月份為零

NO_ZERO_DATE
mysql資料庫不允許插入零日期,插入零日期會拋出錯誤而不是警告

ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE程序中,如果資料被零除,則產生錯誤而非警告,默認情況下資料被零除時MySQL回傳NULL

PIPES_AS_CONCAT
將"||"視為字串的連接運算子而非或運算子,這和Oracle資料庫是一樣的,也和字串的拼接函式Concat相類似

ANSI_QUOTES
啟用ANSI_QUOTES后,不能用雙引號來參考字串,因為它被解釋為識別符

5、更改mysql安裝目錄和組態檔的屬主屬組

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

6、設定路徑環境變數

echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile
source /etc/profile

7、初始化資料庫

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

在這里插入圖片描述
8、添加mysqld系統服務

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306

9、修改mysql 的登錄密碼

mysqladmin -u root -p password "123456"

(三)、安裝配置PHP決議環境

(1)安裝環境依賴包

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

(2)編譯安裝PHP

首先將 php-7.1.10.tar.bz2壓縮包上傳到/opt目錄下

cd /opt
tar jxvf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/

./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make && make install

相關解釋:
--prefix=/usr/local/php 				#指定將 PHP 程式的安裝路徑
--with-mysql-sock=/usr/local/mysql/mysql.sock  #指定mysql 資料庫連接檔案的存盤路徑
--with-mysqli   #添加 MySQL 擴展支持 #mysqli擴展技術不僅可以呼叫MySQL的存盤程序、處理MySQL事務,而且還可以使訪問資料庫作業變得更加穩定
--with-zlib     #支持zlib功能,提供資料壓縮
--with-curl     #開啟curl擴展功能,實作HTTP的Get下載和Post請求的方法
--with-gd       #激活gd 庫的支持
--with-jpeg-dir #激活jpeg 的支持
--with-png-dir  #激活png 的支持
--with-freetype-dir
--with-openssl
--enable-fpm
--enable-mbstring  #啟用多位元組字串功能,以便支持中文等代碼
--enable-xml       #開啟擴展性標記語言模塊
--enable-session   #會話
--enable-ftp       #文本傳輸協議
--enable-pdo       #函式庫
--enable-tokenizer #令牌解釋器
--enable-zip       #ZIP壓縮格式

(3)路徑優化

ln -s /usr/local/php/bin/* /usr/local/bin/

(4)修改PHP組態檔

PHP有三個組態檔

 php.ini        主組態檔 
 php-fpm.conf   行程服務組態檔
 www.conf       擴展組態檔

修改主組態檔

cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
#939行;取消注釋,修改
date.timezone = Asia/Shanghai
#1170行;修改
mysqli.default_socket = /usr/local/mysql/mysql.sock

php -m  #驗證安裝的模塊

修改行程服務組態檔

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#17行;去掉注釋符“;”
pid = run/php-fpm.pid

修改擴展組態檔

cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

(5)啟動php-fpm

#PHP-FPM(FastCGI Process Manager:FastCGI行程管理器),是一個PHPFastCGI管理器,由于Nginx服務器不能處理動態頁面,需要把Nginx把動態請求交給php-fpm行程繼續決議,
/usr/local/php/sbin/php-fpm  -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

在這里插入圖片描述
(6)配置 Nginx 支持php決議

vim /usr/local/nginx/conf/nginx.conf
        #65行;取消注釋并修改
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #將/scripts修改成nginx的作業目錄
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
        
systemctl restart nginx.service

在這里插入圖片描述
(7)驗證PHP測驗頁

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

#使用瀏覽器訪問
http://192.168.182.11/index.php

在這里插入圖片描述
(8)驗證資料庫作業是否正常

mysql -u root -p
#創建一個資料庫
CREATE DATABASE bbs;
#把bbs資料庫里面所有表的權限授予給bbsuser,并設定密碼123456
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '123456';
#重繪資料庫
flush privileges;
#查看有哪些資料庫
show databases;

vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.163.10','bbsuser','123456');
if($link) 
echo "<h1>Success!!</h1>";
else
echo "Fail!";
?>

在這里插入圖片描述

在這里插入圖片描述

(四)、搭建Discuz論壇

1、解壓論壇壓縮包

cd /opt
unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
#上傳站點更新包
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs

2、更改論壇目錄的屬主

cd /usr/local/nginx/html/bbs
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/

chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

3、瀏覽器訪問驗證

論壇頁面訪問
http://192.168.182.11/bbs/install/index.php

#填寫資料庫資訊
資料庫服務器:localhost     ###本地架設就用localhost,如何不是在在本機上就要填寫IP地址和埠號
資料庫名字:bbs
資料庫用戶名:bbsuser
資料庫密碼:123456
管理員賬號:admin
管理員密碼:admin123
#結束

#論壇內部頁面
http://192.168.182.11/bbs/index.php
#論壇后臺管理員頁面
http://192.168.182.11/bbs/admin.php

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256774.html

標籤:其他

上一篇:什么是無服務器(serveless)?

下一篇:springBoot入門

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more