基於raspberry搭建個人web server

来源:https://www.cnblogs.com/zliny/archive/2019/01/11/10254646.html
-Advertisement-
Play Games

1.1 項目介紹 1.2 硬體介紹 1.2.1 散熱片安裝 1.2.2 風扇安裝 附件1 1.2.3 屏幕安裝 1.3 系統介紹 目前很對公司或組織都為樹莓派開發了操作系統,常用的操作系統如下,可根據自己的具體需求燒錄安裝,下載地址:https://www.raspberrypi.org/downl ...


  1. 樹莓派系統介紹
  2. 安裝操作系統及網路\遠程式控制制配置
  3. 安裝常用軟體
  4. 構建web伺服器(nginx + php + sqlite)
  5. 構建web伺服器(appach+mysql+php)
  6. 構建NAS伺服器
  7. 其餘功能環境開發
  8. ……

 

  1. 樹莓派介紹

1.1    項目介紹

1.2    硬體介紹

1.2.1          散熱片安裝

1.2.2          風扇安裝 附件1

1.2.3          屏幕安裝

1.3    系統介紹

目前很對公司或組織都為樹莓派開發了操作系統,常用的操作系統如下,可根據自己的具體需求燒錄安裝,下載地址:https://www.raspberrypi.org/downloads/

第一類樹莓派原生操作系統:基於linux內核。有2種:raspbian官方的基礎版本操作系基於Debian系統。PIXEL是包含桌面的版本,LITE是單純的OS;NOOBS New Out of Box Software,是樹莓派官方發佈的工具可以拋開各種複雜的網路和鏡像安裝軟體,甚至可以拋開電腦就能讓你安裝上你想要的系統。NOOBS是離線安裝版,LITE是網路安裝版。

第二類第三方操作系統:包含了UBUNTU MATE;SNAPPY UBUNTU CORE;WINDOWS 10 IOT CORE;OSMC;RISC OS等等。

 

  1. 安裝操作系統及網路\遠程式控制制配置

2.1    系統安裝

2.1.1          下載系統的鏡像,根據需要選擇;我用的raspbin;下載到本地並用7zip解壓出img文件。

2.1.2          下載鏡像燒錄工具Win32DiskImager;並格式化tf卡

2.1.3          以管理員身份運行Win32DiskImager,找到解壓縮之後的系統img文件,寫入……

2.1.4          寫入完成之後取出tf卡,插入樹莓派卡槽,上電開機。

2.1.5          通常預設情況下樹莓派的系統是打開ssh的,因此在沒有安裝屏幕的情況下可以通過以下步驟連接上樹莓派進行操作:

  1. 樹莓派使用網線連上路由器
  2. 使用同一網段的PC段putty,直接連接樹莓派,預設用戶名:pi;密碼:raspberry;
  3. 如果能夠ping通,但是無法ssh連上,那有可能是預設系統沒有開啟ssh;下麵只需要在tf卡的boot目錄下(也就是tf卡根目錄)創建一個名稱為SSH的文件即可;重啟後就可以正常使用ssh了。

2.1.6          設置expand_rootfs 把整個系統的可用空間擴展到儲存卡的大小(樹莓派預設不使用SD卡的全部空間,有一部分保留,建議選中):

  1. sudo raspi-config
  2. 進入:

     

 

  1. 按tab鍵切換到:<Select> 選中後,sudo reboot;就可以了
  2. 附1:raspi-config的說明

2.1.7          開啟root賬戶:

  1. sudo passwd root
  2. 系統會提示輸入兩遍的root密碼
  3. 接著輸入下麵命令,用來解鎖root賬戶sudo passwd --unlock root
  4. 設置ssh遠程root登錄:sudo nano /etc/ssh/sshd_config ///Ctrl + W 快捷鍵 搜索 PermitRootLogin without-password ///修改 PermitRootLogin without-password 為 PermitRootLogin yes;reboot重啟

2.1.8          更新軟體源及系統:

  1. cd /etc/apt/
  2. 備份原來的源:cp sources.list sources.list_back
  3. 編輯新源sudo nano sources.list
  4. 更改為:中國科技大學源,把wheezy 改成jessie這樣大部分源是在中國。網址末尾的raspbian重覆兩次是必須的。因為Raspbian的倉庫中除了APT軟體源還包含其他代碼。APT軟體源不在倉庫的根目錄,而在raspbian/子目錄下。

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi

deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi

  1. 更新:sudo apt-get update && sudo apt-get upgrade(# 更新軟體源sudo apt-get update/#更新軟體sudo apt-get upgrade)
  2. 附2:國內主要的源

2.2    網路及遠程式控制制配置

2.2.1          配置及使用VNC

A. 安裝sudo apt-get install tightvncserver

B. 設置密碼vncpasswd

C. 下載客戶端:https://www.realvnc.com/download/vnc/

D. 樹莓派開啟vnc server:vncserver :1 -geometry 800x600

E.  樹莓派關閉vnc server:vncserver -kill :1

F.  客戶端訪問桌面:vncviwer:192.168.1.***:1

G. 開機啟動vnc桌面: sudo nano /etc/init.d/tightvncserver 寫入附件2:

H. 設置支持中文:sudo apt-get install ttf-wqy-zenhei—不需要可以選擇不安裝,安裝之後要去setting裡面設置中文界面

2.2.2          配置自動登錄wifi

  1. lsusb #如果無效,查看驅動是否載入
  2. lsmod#如果未載入,進行載入 modprobe xxx
  3. sudo nano /etc/network/interfaces
  4. 修改並寫入附件4

2.2.3          配置固定IP

  1. 安裝常用軟體

3.1    安裝FTP server:

3.1.1          安裝vsftpd伺服器 (約400KB):sudo apt-get install vsftpd

3.1.2          啟動ftp服務:sudo service vsftpd start

3.1.3          編輯vsftdp的配置文件:sudo nano /etc/vsftpd.conf

配置:找到以下行,定義一下

anonymous_enable=NO 

表示:不允許匿名訪問

 

local_enable=YES  

設定本地用戶可以訪問。

 

write_enable=YES

設定可以進行寫操作

 

local_umask=022

設定上傳後文件的許可權掩碼。

存檔退出

3.1.4          重啟vsftpd服務:sudo service vsftpd restart

3.1.5          測試一下:通過ftp連接樹莓派系統,以用戶名pi登錄,密碼是raspberry

ftp的根目錄是/home/pi,即pi用戶的HOME目錄。可上傳或下載文件了

3.2    安裝ufw網路防火牆

3.2.1          安裝 :sudo apt-get install ufw

3.2.2          啟用(使用ssh登錄的請註意,請先開啟22埠,否則重啟機器後會導致ssh無法連接)

sudo ufw enable

    sudo ufw default deny

作用:開啟了防火牆並隨系統啟動同時關閉所有外部對本機的訪問(本機訪問外部正常)。

3.2.3          關閉:sudo ufw disable

3.2.4          查看防火牆狀態:sudo ufw status

3.2.5          開啟/禁用常用埠或服務:

sudo ufw allow 80 允許外部訪問80埠

 sudo ufw delete allow 80 禁止外部訪問80 埠

 sudo ufw allow from 192.168.1.1 允許此IP訪問所有的本機埠

 sudo ufw deny smtp 禁止外部訪問smtp服務

 sudo ufw delete allow smtp 刪除上面建立的某條規則

 sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒絕所有的TCP流量從10.0.0.0/8 到192.168.0.1地址的22埠

 可以允許所有RFC1918網路(區域網/無線區域網的)訪問這個主機(/8,/16,/12是一種網路分級):

sudo ufw allow from 10.0.0.0/8

sudo ufw allow from 172.16.0.0/12

sudo ufw allow from 192.168.0.0/16

3.2.6          常用埠:

21 :FTP

22 :ssh

25 :SMTP 發送郵件

80 :HTTP

110 :POP3 接收郵件

143 :IMAP 接收郵件

3306:SQL資料庫

3.3    安裝samba文件共用

3.3.1          安裝:

sudo apt-get update

sudo apt-get install samba samba-common-bin

3.3.2          配置samba:sudo nano /etc/samba/smb.conf  (去掉#的註釋,否則samba會啟動失敗)

修改:[share]         #共用文件的名稱,將在網路上以此名稱顯示

path = /home/pi/samba        #共用文件的路徑

valid users = root pi   #允許訪問的用戶,這裡我用的是root 和 pi 兩個用戶

browseable = yes                  #允許瀏覽

public = yes                      #共用開放

writable = yes                     #可寫

3.3.3          添加賬戶

3.3.3.1    啟用賬戶sudo smbpasswd -e pi

3.3.3.2    添加賬戶sudo smbpasswd -a pi

3.3.3.3    已添加賬戶 pi;密碼raspberry

3.3.4          重啟:sudo /etc/init.d/samba restart

 

 

  1. 構建web伺服器(nginx + php + sqlite)

4.1    安裝nginx  web伺服器 :sudo apt-get install nginx

nginx的www預設根目錄:/var/www/html

修改預設目錄:

  --sudo nano /etc/nginx/sites-available/default

--修改 root /var/www/html 和 fastcgi_param  SCRIPT_FILENAME  var/www/html$fastcgi_script_name;

            --sudo /etc/init.d/nginx reload

4.2    安裝php和sqlite: sudo apt-get install php5-fpm php5-sqlite

4.3    修改nginx的配置文件

--sudo nano /etc/nginx/sites-available/default

--找到listen行,將其前面的#號註釋去掉,修改後內容如下

        listen 80; ## listen for ipv4.

--找到index行,加入index.php,修改後內容如下

  index index.php index.html index.htm

--找到php的定義段,將這些行的註釋去掉 ,修改後內容如下

  location ~ \.php$ {

        fastcgi_pass unix:/var/run/php5-fpm.sock;

  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        fastcgi_index index.php;

        include fastcgi_params;

  }

--重新載入nginx的配置: sudo /etc/init.d/nginx reload

4.4    測試php網頁

                   <?PHP

                            phpinfo();

                   ?>

4.5    網頁訪問出現403錯誤,修改文件夾許可權;

  1. 構建web伺服器(appach+mysql+php)

5.1 安裝Apache(配置見附件)

Apache可以用下麵的命令來安裝

sudo apt-get install apache2

Apache預設路徑是/var/www/

其配置文件路徑為: /etc/apache2/

可以通過:sudo vi /etc/apache2/ports.conf修改監聽埠號

重啟服務生效:sudo service apache2 restart

5.2 安裝mysql(Sqlserver轉mysql方法:見附件5)

sudo apt-get install mysql-server

安裝過程中,會出現一個提示符讓你輸入一個密碼。

這個密碼是mysql root用戶的密碼。

連接MYSQL:

             格式: mysql -h主機地址 -u用戶名 -p用戶密

         5.2.1 mysql並開啟遠程訪問(開啟3306埠):

                   開啟mysql遠程訪問: 修改/etc/mysql/my.cnf文件

找到下麵這行,並用#註釋掉,

bind-address        = 127.0.0.1

或者修改為bind-address        = 0.0.0.0

登錄mysql,輸入下麵命令

mysql>grant all privileges on *.* to username@"%" identified by "password";(username一般是root,password是新的密碼)

mysql> FLUSH PRIVILEGES;

 

開啟3306埠遠程訪問

這裡的iptable命令和centos中命令不一樣,所以參考了一下文檔,使用 ufw軟體來開啟3306埠

5.3 安裝PHP

輸入下麵的命令,就可以安裝PHP 5,以及PHP訪問mysql資料庫所需要的庫。

sudo apt-get install php5

sudo apt-get install php5-mysql

sudo apt-get install php5-gd

sudo apt-get install libapache2-mod-php5

 

  1. 構建NAS伺服器

6.1    安裝samba(見3.3節)

6.2    安裝minidlna

sudo apt-get install minidlna

設置/etc/minidlna.conf文件,在文件尾部添加如下內容:

================================================================

media_dir=A,/home/pi/External_Disk/samba/DLNA/Music                #A表示這個目錄是存放音樂的,當minidlna讀到配置文件時,它會自動載入這個目錄下的音樂文件

media_dir=P,/home/pi/External_Disk/samba/DLNA/Picture                                              

media_dir=V,/home/pi/External_Disk/samba/DLNA/Video                                                

db_dir=/home/pi/External_Disk/samba/DLNA/db                       #配置minidlna的數庫數據的存放目錄

log_dir=/home/pi/External_Disk/samba/DLNA/log                     #配置日誌目錄

================================================================

重啟minidlna:/etc/init.d/minidlna restart

測試:/etc/init.d/minidlna status

6.3    掛載 usb移動硬碟

6.3.1          MiniTool格式化硬碟為ext4格式

6.3.2          df -h

umount /dev/sda5

mount  /dev/sda5 /home/pi/External_Disk/usbdisk

6.3.3          自動掛載:/etc/fstab  添加一行

第一列:磁碟分區名/捲標,一般是/dev/sdaN(N表示正整數)

第二列:掛載點,我們在這裡把/dev/sda1掛到/samba上。

第三列:預設設置,一般用defautls。

第四列:是否備份:0——表示不做 dump 備份;1——表示要將整個 <fie sysytem> 里的內容備份;2 也表示要做 dump 備份,但該分區的重要性比 1 小。

第五列:檢測順序:0——不進行檢測;根分區(/),必須填寫 1,其它的都不能填寫 1。如果有分區填寫大於 1 的話,則在檢查完根分區後,從小到大依次檢查下去。

 

 

 

*******************************************************************************

附件1

 

 

 

*******************************************************************************

附1:raspi-config的說明:***************************************************

1 Expand Filesystem  擴展文件系統(同舊版)。

2 Change User Password  改變預設pi用戶的密碼,按回車後輸入pi用戶的新密碼。

3 Enable Boot to Desktop/Scratch 啟動時進入的環境選擇

  Console Text console, requiring login(default)

    啟動時進入字元控制台,需要進行登錄(預設項)。

  Desktop log in as user 'pi' at the graphical desktop

    啟動時進入LXDE圖形界面的桌面。

  Scratch Start the Scratch programming environment upon boot

    啟動時進入Scratch編程環境。

4 Internationalisation Options  國際化選項,可以更改預設語言

  I1 Change Locale

     語言和區域設置,建議不要改,預設英文就好。想改中文,最好選安裝了中文字體再進行這步,安裝中文字體的方法:

     sudo apt-get update

     sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

     移動到屏幕底部,用空格鍵選中zh-CN GB2312,zh-CN GB18030,zh-CN UTF-8,然後按回車,然後預設語言選中zh-cn然後回車

  I2 Change Timezone

     設置時區,如果不進行設置,PI的時間就顯示不正常。選擇Asia(亞洲)再選擇Chongqing(重慶)即可。

  I3 Change Keyboard Layout

      改變鍵盤佈局

5 Enable Camera

      啟動PI的攝像頭模塊,如果想啟用,選擇Enable,禁用選擇Disable就行了

6 Add to Rastrack

      把你的PI的地理位置添加到一個全世界開啟此選項的地圖,建議還是不要開了,免得被跟蹤。

7 Overclock

  None 不超頻,運行在700Mhz,核心頻率250Mhz,記憶體頻率400Mhz,不增加電壓

  Modest 適度超頻,運行在800Mhz,核心頻率250Mhz,記憶體頻率400Mhz,不增加電壓

  Medium 中度超頻,運行在900Mhz,核心頻率250Mhz,記憶體頻率450Mhz,增加電壓2

  High 高度超頻,運行在950Mhz,核心頻率250Mhz,記憶體頻率450Mhz,增加電壓6

  Turbo 終極超頻,運行在1000Mhz,核心頻率500Mhz,記憶體頻率600Mhz,增加電壓6

8 Advanced Options  高級設置

  A1 Overscan   是否讓屏幕內容全屏顯示

  A2 Hostname   在網上鄰居或者路由器能看到的主機名稱

  A3 Memory Split 記憶體分配,選擇給GPU多少記憶體

  A4 SSH 是否運行SSH登錄,建議開戶此選項,以後操作PI方便,有網路就行,不用開屏幕了。

  A5 SPI 是否預設啟動SPI內核驅動,新手就不用管了。

  A6 Audio 選擇聲音預設輸出到模擬口還是HDMI口

    0 Auto 自動選擇

    1 Force 3.5mm ('headphone') jack強制輸出到3.5mm模擬口

    2 Force HDMI 強制輸出到HDMI

  A7 Update 把raspi-config這個工具自動升級到最新版本

9 About raspi-config 關於raspi-config的信息。

 

附2:國內主要的源

中山大學

Raspbian http://mirror.sysu.edu.cn/raspbian/raspbian/

 

中國科學技術大學

Raspbian http://mirrors.ustc.edu.cn/raspbian/raspbian/

 

清華大學

Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

 

華中科技大學

Raspbian http://mirrors.hustunique.com/raspbian/raspbian/

Arch Linux ARM http://mirrors.hustunique.com/archlinuxarm/

 

大連東軟信息學院源(北方用戶)

Raspbian http://mirrors.neusoft.edu.cn/raspbian/raspbian/

 

重慶大學源(中西部用戶)

Raspbian http://mirrors.cqu.edu.cn/Raspbian/raspbian/

 

新加坡國立大學

Raspbian http://mirror.nus.edu.sg/raspbian/raspbian

 

牛津大學

Raspbian http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/

 

南韓KAIST大學

Raspbian http://ftp.kaist.ac.kr/raspbian/raspbian/

 

附件3:

#!/bin/sh

 

### BEGIN INIT INFO

 

# Provides:          tightvncserver

 

# Required-Start:    $local_fs

 

# Required-Stop:     $local_fs

 

# Default-Start:     2 3 4 5

 

# Default-Stop:      0 1 6

 

# Short-Description: Start/stop tightvncserver

 

### END INIT INFO

 

# More details see:

 

# http://www.penguintutor.com/linux/tightvnc

 

### Customize this entry

 

# Set the USER variable to the name of the user to start tightvncserver under

 

export USER=’pi’

 

### End customization required

 

eval cd ~$USER

 

case ”$1” in

 

  start)

# 啟動命令行。此處自定義解析度、控制台號碼或其它參數。

 

    su $USER -c ’/usr/bin/tightvncserver -geometry 800x600 :1’

 

    echo ”Starting TightVNC server for $USER ”

 

    ;;

 

  stop)

 

    # 終止命令行。此處控制台號碼與啟動一致。

 

    su $USER -c ’/usr/bin/tightvncserver -kill :1’

 

    echo ”Tightvncserver stopped”

 

    ;;

 

  *)

 

    echo ”Usage: /etc/init.d/tightvncserver {start|stop}”

 

    exit 1

 

    ;;

 

esac

 

exit 0

 

附件4:

auto lo

iface lo inet loopback

iface eth0 inet dhcp

auto wlan0

allow-hotplug wlan0

iface wlan0 inet dhcp

wpa-ssid “你的wifi名稱”

wpa-psk “你的wifi密碼”

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf       #註釋掉這一行

iface default inet dhcp

 

auto lo //表示使用localhost

iface eth0 inet dhcp //表示如果有網卡ech0, 則用dhcp獲得IP地址 (這個網卡是本機的網卡,而不是WIFI網卡)

auto wlan0 //表示如果有wlan設備,使用wlan0設備名

allow-hotplug wlan0 //表示wlan設備可以熱插撥

iface wlan0 inet dhcp //表示如果有WLAN網卡wlan0 (就是WIFI網卡), 則用dhcp獲得IP地址

wpa-ssid “你的wifi名稱”//表示連接SSID名

wpa-psk “你的wifi密碼”//表示連接WIFI網路時,使用wpa-psk認證方式,認證密碼

 

附件5:

apache2 配置多埠多站點:

 

         1. 修改:apache2.conf,添加新根目錄訪問許可權:

 

    <Directory /home/pi/docpicroot/note/>

        Options Indexes Followsymlinks

        AllowOverride None

         Require all granted

    </Directory>

        

         2. 修改ports.conf,監聽新埠

         NameVirtualhost localhost:8080

         Listen 8080

 

         3. 修改sites-available/000-default.conf,添加虛擬埠

 

<virtualhost *:8383>

    serveradmin webmaster@localhost

 

    documentroot /home/pi/docpicroot/note-tmp

    <directory />

        options followsymlinks

        allowoverride none

    </directory>

    <directory /home/pi/docpicroot/note-tmp/>

        options indexes followsymlinks multiviews

        allowoverride none

        order allow,deny

        allow from all

    </directory>

 

 

    errorlog /home/pi/docpicroot/note-tmp/logs/error.log

 

    # possible values include: debug, info, notice, warn, error, crit,

    # alert, emerg.

    loglevel warn

 

    customlog /home/pi/docpicroot/note-tmp/logs/access.log combined

</virtualhost>

 


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

-Advertisement-
Play Games
更多相關文章
  • 1.JavaScript 語法 JavaScript 是一個腳本語言。 它是一個輕量級,但功能強大的編程語言 2.JavaScript 字面量 在編程語言中,一般固定值稱為字面量,如 3.14。 數字(Number)字面量 可以是整數或者是小數,或者是科學計數(e); 字元串(String)字面量 ...
  • 註:本人小白一個,目前還在校學習,這次老師讓做的項目需要用到這個功能,所以花了一些時間搞了一下,本次案列實現功能為 用戶註冊信息,如果資料庫對應表中存在部分信息,點擊已有的用戶的用戶名,自動補全其它已有的基本信息 實現思路:通過AutoComplete提示,非同步通過用戶名查詢全表,充當AutoCom ...
  • js中this指向是一個難點,花了很長時間來整理和學習相關的知識點。 一、 this this是JS中的關鍵字, 它始終指向了一個對象, this是一個指針; 參考博文: 1. "JavaScript函數中的this四種綁定形式" 2. "this指向及改變this指向的方法" 二、 this顯示綁 ...
  • 為input 添加 readonly=”readonly” UNSELECTABLE="on" 屬性。 IE中設置了readonly=”readonly”,點擊使用日期選擇器時input框中仍然出現了游標,添加 UNSELECTABLE=”on”後,消失。 ...
  • JS實現下拉菜單的功能,實際使用中記得用CSS,性能和代碼都好 ...
  • Datatables是一款jquery表格插件。它是一個高度靈活的工具,可以將任何HTML表格添加高級的交互功能。 官網地址:https://datatables.net/ 中文說明地址:http://www.datatables.club/ 功能說明 分頁,即時搜索和排序幾乎支持任何數據源:DOM ...
  • 界面如圖所示: 要求:在“信息註冊”欄,按下滑鼠,然後滑鼠在頁面移動,在滑鼠移動過程中,該視窗跟著滑鼠移動,當滑鼠鬆開的時候,視窗停止移動。點擊“關閉”,該視窗隱藏。 實現思路: 1.頁面結構分析:一個大盒子d-box來確定位置,裡面放一個小盒子drop(存放“註冊信息(可以拖拽”文字和span標簽 ...
  • CMDB在企業中,一般用於存放與機器設備、應用、服務等相關的元數據。當企業的機器及應用達到一定規模後就需要這樣一個系統來存儲和管理它們的元數據。有一些廣泛使用的屬性,例如機器的IP、主機名、機房、應用、region等,這些數據一般會在機器部署時錄入到CMDB,運維或者監控平臺會使用這些數據進行展示或 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...