第六周LINUX學習筆記

来源:https://www.cnblogs.com/gohrx/archive/2019/04/08/10670208.html
-Advertisement-
Play Games

DNS服務 DNS:Domain Name Service //協議 實現:BIND(Berkeley Internet Name Domain) 監聽埠: UDP:53 TCP:53 名稱解析:將一種格式的信息轉化為另外一種格式,以某關鍵字為標準查找某一資料庫的過程passwd <--> nss ...


                                                                                                                                  DNS服務

DNS:Domain Name Service //協議
     實現:BIND(Berkeley Internet Name Domain)
     監聽埠:
        UDP:53
        TCP:53

    名稱解析:將一種格式的信息轉化為另外一種格式,以某關鍵字為標準查找某一資料庫的過程

passwd <--> nsswitch轉換
login:nsswitch為login提供服務
nsswitch配置文件在/etc/nsswitch

hosts:存放的為主機與ip、別名


由於主機是在太多,所以將資料庫和伺服器進行分片管理。 分散式資料庫:將資料庫切割,放在不同的伺服器上。實際上還需要一個類似於"引路人"一般的放置著引導向各個分散式資料庫的資料庫的伺服器。當外部需要進行DNS功能變數名稱轉換時,便告訴他需要到哪個資料庫上進行名稱解析,再找到那個資料庫。實際上每個資料庫都要通過這個伺服器進行登記備案。否則將不承認,也無法找到你自己所建立的。實際上,由於數量過大,一些分散式資料庫需要再進行分佈。
其中的結構其實可以類比成Linux上的根文件系統,每個人都要通過根為入口來進行訪問文件和目錄,底下的目錄一層套著一層,最終才能找到自己需要的文件。

根域(.)-->一級域(ICCNA)-->二級域(組織域)  實際上我們平時輸入的功能變數名稱都是自下而上進行輸入的如(www.baidu.com)www是最小的域,由此自下而上。

namespace:名稱空間

一級域:
    組織域:.com,.org,.mil,.gov,.edu,
    國家域:.cn,.hk,.tw,.jp,.ir(伊朗),.iq(伊拉克),.us,.uk
    反向域:.in-addr.arpa
另外任何想要訪問其他主機信息的,都需要以跟作為入口去尋找,除非是在同一個伺服器管轄下的功能變數名稱,只需要找自己的伺服器就行。但是確又不會進行逐層的遞歸解析,否則根的工作量太大。每一次訪問的時候,都只會告訴其一個下一次要尋找的地址讓他自行去尋找。如找到根,根返回消息說讓他去找.com,於是.com再說你去找baidu 直到找到負責管轄的 再給以正確的IP地址信息。

遞歸:逐層解析
迭代:DNS才會迭代
根拒絕回答遞歸問題  所謂的遞歸和迭代在這邊通俗一點講,就是遞歸只需發出一次請求就能夠收到消息。而迭代則是發出好幾次請求。

客戶端指向的DNS伺服器,一定是允許給本地主機做遞歸的

資料庫每一個條叫一個資源記錄(Resource Record),資源記錄有類型 ,用於表示資源的功能
SOA:Start Of Authority,起始授權
NS:Name Server,功能變數名稱伺服器
MX:mail eXchanger:郵件交換器
A:Address,(FQDN-->IP)
PTR: PoiTeR,(IP-->FQDN)
AAAA:Address,FQDN-->IPv6
CNAME:Canonical Name,正式名稱(別名記錄)

DNS:FQDN --> IP

正反向解析技術不同,因此不應該存放於同一個資料庫文件中進行

域:Domain,邏輯概念
區域:zone,物理概念

DNS伺服器的類型
   主DNS伺服器
   輔助DNS伺服器  輔助伺服器不能夠自行的血區域數據文件,只能夠從主伺服器上讀取。該過程稱為區域傳送
   緩存名稱伺服器
     轉發器


DNS的資料庫文件(區域數據文件,區域自身有名字):文本文件,只能包含資源記錄或巨集定義,每行一個

   資源記錄的格式:
      name [ttl(緩存時間)] IN 資源記錄類型(RRtype)  Value
    例子:
       www  600(單位s) IN A 1.2.3.4
       www.magedu.com.  600 IN A 1.2.3.4

 SOA:
        name:只能是區功能變數名稱稱,通常可以簡寫為@,例如:magedu.com.
        value:有n個數值,最主要的是主DNS伺服器的FQDN,點不可省略
        註意:SOA必須是區域資料庫文件第一條記錄

        例子:
         @ 600 IN SOA  na.magedu.com. 管理員郵箱(dnsadmin.magedu.com.)(
             序列號(serial number) ;註釋內容,十進位數據,不能超過10位,通常使用日期,例如2014031001 用以讓輔助伺服器知道數據發生了改變的,主伺服器上每次數據改變,序列號都會發生改變
             刷新時間(refresh time) ;即每隔多久到主伺服器檢查一次
             重試時間(retry time) ;應該小於refresh time
             過期時間(expire time)
             netgative answer ttl ;否定答案的ttl
         )
 
    NS:可以有多條
       name:區功能變數名稱稱,通常可以簡寫為@
       value:DNS伺服器的FQDN(可以使用相對名稱)
       例子:
       @ 600 IN NS na
 
    A:只能定義在正向區域數據文件中
       name:FQDN(可以使用相對名稱)
       value:IP

       例子:
       www  600(單位s) IN A 1.2.3.4
       www  600(單位s) IN A 1.2.3.5
       可做輪詢

       www  600(單位s) IN A 1.2.3.4
       ftp  600(單位s) IN A 1.2.3.4
    但凡以FQDN做為其值的記錄,應該給這個值做一條A記錄
AAAA:

 MX:可以有多個
       name:區功能變數名稱稱,用於標識smtp伺服器
       value:包含優先順序和FQDN
           優先順序:0-99,數字越小,級別越高,
       例子:
        @ 600 IN MX 10 mail
        @ 600 IN MX 20 mail2 先找優先順序高的,實在太過繁忙,則找第二個。並沒有在輪換工作


    PTR:IP --> FQDN,只能定義在反向區域數據文件中,反向區功能變數名稱稱為逆向網路地址加.in.addr.arpa.尾碼組成
     name:IP,逆向的主機地址,例如172.16.100.7的name為7.100,完全格式為7.100.16.172.in-addr-arpa.
     value:FQDN
         例子:
          4.3.2. 600 IN PTR www.magedu.com.

區域傳送:
   輔助DNS伺服器從主DNS伺服器或其他的輔助DNS伺服器請求數據傳輸過程

   完全區域傳送:傳送區域的所有數據,AXFR
   增量區域傳送:傳送區域中改變的數據部分,IXFR

輔助伺服器按時間段去跟主伺服器進行請求數據的跟新,如果多次主伺服器未能響應請求,則認為主伺服器癱瘓,不再與主伺服器進行通信(一般相關規定定義在SOA中了)。另外主伺服器如果有數據跟新,也會立刻通知輔助伺服器數據的跟新,以實現數據的同步


 BIND:組織維護者isc(www.isc.org) DHCP
     4:功能簡單,安全
     9:

    協議DNS,實現BIND,進程named

    chroot 為安全提供的機制 chroot假根,讓其以這個作為根,保證安全性

主配置文件:定義區域 /etc/named.conf
    至少有三個區域:
      根、
      locahost、
      127.0.0.1
區域數據文件:/var/named

   named
       用戶:named
       組:named   
 先由主配置文件聲明各種區域,然後再到/var/named 文件目錄下讀取相關的區域數據文件
主配置文件:
   options{
        //全局選項
   }
   zone "zone name" {
      //定於區域
   }
   logging{
       //日誌文件
   }
   include:載入別的文件

自定義
optins{
    directory "/var/named";
};
  zone "." IN{
   type{hint(根)|master(主)|slave(從)|forward(轉發)}
   file "named.ca"
  }

例子如果你申請到了功能變數名稱test.com
那麼你可以配置
 zone "test.com." IN{
   type{master(主)}
   file "test.com.zone"
  }
再在/var/named目錄下創建test.com.zone文件 文件內容
$TTL 600
@    IN    SOA   dns.test.com.   admin test.com.(
                              .
                              .
                              )
@   IN NS   dns (這裡用了SOA上定義的相對名稱)
@   IN MX 10 mail
dns IN A    192.168.48.128
mail IN A  192.168.48.128
www IN A 192.168.48.128
pop IN CNAME mail
ftp IN CNAME www
之後改個屬組屬主和許可權

name-checkconf 檢查主配置文件
named -u named
name-checkzone "區域文件" 配置文件

定義監聽的地址

recursion 是否允許遞歸查詢

dig 命令
  dig [-t type] [-x addr] name @DNS伺服器
  +[no]trace [不]適用迭代
  +[no]tcp 是否使用tcp
  +[no]recurse:是否使用遞歸
host
  host[-t type] {name} [server]

nslookup
  nslookup>
  server DNS_SERVER_IP
  set q=TYPE
  {name}

反向解析區域資料庫文件:區功能變數名稱稱以逆向的網路地址,並以.in-addr.arpa為尾碼
   第一條必須SOA
   應該具有NS記錄,但不能出現MX和A記錄
   較常見的微PTR記錄
    名稱為逆向的主機名
$TTL 600
@    IN    SOA   dns.test.com.   admin test.com.(
                              .
                              .
                              )
@   IN NS   dns (這裡用了SOA上定義的相對名稱)
@   IN MX 10 mail
                 IN  NS  dns.test.com
7               IN  PTR dns.test.com
1               IN  PTR www.test.com

區域傳送:
  用dig模擬完全區域傳送
   dig -t axfr 區功能變數名稱稱 @server

   主從同步:

       /etc/resolv.conf
  主從:
    主:bind版本可以低於從的

    主從可以不再同一網段

   向區域中添加從伺服器的關鍵兩步
      在上級獲得授權
      在區域數據文件中為從伺服器添加一條NS記錄和對應的A或PTR記錄,另外SOA里的序列號也要加個1
配置從伺服器的步驟

zone"test.com" IN {
       type slave;
       masters {192.168.48.128; };
       file "slaves/test.com.zone" ; 註意這裡輔助伺服器的區域數據文件需要放在/var/named/slaves下
};

區域傳送安全控制
    allow-transfer{127.0.0.1;127.16.100.1}
    allow-transfer{none;}

rndc:Remote Name Domain Controller
      遠程管理BIND的工具

      rndc:密鑰
        rndc:持有一半密鑰,保存於rndc的配置文件中
        BIND:持有一般密鑰,保存在主配置文件中
     rndc的配置文件/etc/rndc.conf    現在好像已經沒有了
        生成密鑰 rndc-confgen   生產的密鑰文件中的一半用於BIND的文本複製到BIND的主配置文件中將註釋去掉 便可以使用rndc

 rndc
        reload
        reload zone
        reconfig:重讀配置文件並載入新增的區域

        querylog:關閉或開啟查詢日誌
        stop  關閉服務
        flush 清空伺服器的緩存
        flushname name:只清空指定名稱相關的緩存
        trace:打開debug,調試模式,debug有級別的概念,每執行一次提升一個等級
        trace LEVEL:指定debug的級別

        如果rndc無法正常工作,可嘗試使用rndc-confgen生成/etc/rndc。conf配置文件,並將配置文件中的後半部分複製到BIND的主配置文件中按指示啟用即可


BIND子域授權的實現:
   在父域的配置文件中添加如下項:
      授權的子區功能變數名稱稱
      子區域的名稱伺服器
      子區域的名稱伺服器的IP地址
 例子:
     

      tech.test.com IN NS  dns.tech.test.com
      dns.tech.test.com IN A 192.168.48.160  
      tech.test.com IN NS  ns2.tech.test.com
      ns2.tech.test.com IN A 192.168.48.161 另外子域伺服器需要副伺服器的話,也需要再主伺服器上進行標明

      接著子域伺服器,需要同主伺服器那樣配置屬於自己的DNS伺服器
    
      子域伺服器與主副伺服器最大的配置差別就是,子域伺服器的功能變數名稱和父伺服器的功能變數名稱是不同的,而主副伺服器的功能變數名稱是相同的

配置區域轉發:轉發域
      解析某本機不負責的區域內的名稱時不轉發給根,而是轉給指定的主機:
   zone "ZONE NAME" IN{
    type forward;
    forwarders { DNS_SERVER; };
    forward only(僅轉發)|first(先轉發在找根)
   }
   配置轉發的方式
     轉發非本機負責解析的所有區域
      options{
        forward only|frist
        forwarders{ ip; }
       }  
      轉發某特定區域
       zone"特定區域" IN{
       type forward;
        forwarders{ ip; }
        forward only|frist
       }
       轉發必須對方伺服器支持對本伺服器的遞歸  
安全控制選項:
   allow-transfer{};通常都需要啟用,從伺服器
   allow-query{};此項僅用於伺服器是緩存名稱伺服器時,只開放查詢功能給本地客戶端
   allow-recursion{可以使用網段};允許遞歸的白名單
   allow-update{ none; }:允許動態更新數據文件的主機白名單

ACL:BIND支持使用訪問控制列表
    acl ACL_NAME{
      172.16.0.0/16
      192.168.0.0/24
      127.0.0.0/8
    }

  訪問控制列表只有定義後才能使用,通常acl要定義在named.conf的最上方
  BIND有四個內置的acl
    any:任何主機
    none:無一主機
    local:本機
    localnet:本機所在的網路
                     

                                                                          DNS編譯安裝,view視圖,LINUX完全定製內核

3月11



 view 視圖,邏輯的DNS伺服器,即能夠讓不同網路(如電信和網通)訪問同一個功能變數名稱時,使其指向不同的主機IP實現訪問速度的加快。能夠實現讓一個view實現多次
     acl telecom{
     1.2.0.0/16
     4.5.8.0
     }
     acl unicom{
     6.4.0.0/16
     4.5.3.0
     }
    view view_name {
        match-clients{ telecom; }
       zone"magelinux.com" IN{
       type master;
        file "magelinux.com.telcom";
       }

     }
    view view_name {
        match-clients{ unicom; }
       zone"magelinux.com" IN{
       type master;
        file "magelinux.com.unicom";
       }

     }
      view view_name {
        match-clients{ any; }
       zone"magelinux.com" IN{
       type master;
        file "magelinux.com.unicom";
       }

     }
     只要寫入view,所有的都應該寫在view中 包括將/etc/named.conf下的zone "."根也放在view中
     自上而下匹配

 /dev/random:自動生成
   熵池
 /dev/udandom:軟體生成


 

 bind dlz
 rndc reeconfig


 源碼安裝named
 thrads 線程
 epoll 時間庫
 --diabled-chroot               
 前提:配置好開發環境,安裝包組
 1.下載源代碼。編譯安裝
   tar xf bind-9.9.5.tar.gz
   cd bind-9.9.5
   ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/--enable-threads --enable-epoll --disabled--chroot
 make && make install
2配置主配置文件
3.創建區域數據文件
 3.1 name.ca
  dig -t NS @ >/var/named/named.ca
  3.2 name.localhost
  3.3 named.loopback
4創建用戶,並測試啟動
  groupadd -g 53 -r named
  useradd -g named-r named
  chown root:named /etc/named/* /var/named/*
  chmod 640 /etc/named/named.conf /var/named/*
  vim /etc/profile.d/nmaed.sh
export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH'
 
  named -u named -c /etc/named/named.conf
  5、rndc
  rndc -confgen -r /dev/
  6、準備啟動腳本DNS 編譯安裝 02 23分到53分
  7、性能測試
     banckmark
     queryperf
     dnstop

<DNS and BIND>



bash編程之變數
   1、bash的內置變數:
   PATH PS1 HOSTNAME UID HISTFILE HISTEILESIZE HISTCONTROL
   $BASH:bash二進位程式文件的路徑
   $BASH_SUBSHELL:子shell的層次
   $BASH_VERSION

   $EDITOR:預設編輯器

   $EUID:有效的用戶ID
   $UID:當前用戶的ID號

   $FUNCNAME:當前函數的名稱

   $GROUPS:當前用戶顯示的組

   $HOME:當前用戶的家目錄

   $HOSTTYPE:主機架構類型,用來識別系統硬體
   $MACHTYPE:平臺類型,系統平臺依賴的編譯平臺
   $OSTYPE:OS系統類型
   
   $IFS:輸入數據時的欄位分隔符,預設是空白符(空格、製表符、換行符)

   $OLDPWD:上次使用的目錄
   $PWD:當前目錄

   $PPID:父進程

   $PS1:主提示符
   $PS2:第二提示符,主要用於補充完全命令輸入時的提示符
   $PS3:第三提示符,用於select命令中
   $PS4:第四提示符,當使用-X選項調用腳本時,顯示的提示符,預設為+號

   $SECONDS:當前腳本已經運行的時長

   $SHLVL:shell的級別。bash別嵌入的深度

   2、特殊變數:
       $0:腳本名稱自身
       $1,$2。。。。:位置參數
       $#:命令行參數個數
       $*:所有的參數,被當作一個字元串
       $@:所有的參數,每個參數都是一個獨立的字元串
       $-:傳遞給腳本的標記
       $!:運行於後臺的最後一個作業的PID
       $_:上一條命令的最後一個參數的值
       $?:上一條命令狀態的返回值
       $$:腳本自身的PID

    操作變數:
        ${#var} :返回變數中字元串的長度
        ${var}:變數引用
        ${var:-default}:如果var沒有聲明或者為空,則返回default字串,否則返回var自身的值
        ${var:+default}:如果var沒有聲明或者為空,則返回空字串,否則返回default的值
        ${var:=default}:如果var沒有聲明或者為空,則返回default字串,並且將default賦值給var,否則返回var自身的值
        ${var:?default}:如果var沒有聲明或者為空,則以default為錯誤信息返回,否則

        zb 返回var自身的值

    字串消除
        ${var#*word}:查找var中自左而右第一個被word匹配到的串,並將此串及向左的所有內容都刪除
        ${var#*word}:查找var中自左而右最後一次被word匹配到的串,並將此串及向左的所有內容都刪除
        ${var%word*}:查找var中自右而左第一個被word匹配到的串,並將此串及向右的所有內容都刪除
        ${var%%word*}:查找var中自右而左最後一次被word匹配到的串,並將此串及向右的所有內容都刪除

    取字串:
      ${var:pos}:偏移pos個字元,取餘下的字串
       name=jerry,${name:2}結果為rry
      ${var:pos:num}偏移pos個字元,取num個字元長度的字串
        name='hello world' ${name:2:5}結果為llo w
    
    字串替換
      ${var/Pattern/Replaceplacement} :以Pattern為模式匹配var中的字串,將第一次匹配到的替換為Replaceplacement
      ${var// Pattern/Replaceplacement} :以Pattern為模式匹配var中的字串,將全部匹配到的替換為Replaceplacement6


   聲明變數:
      declare
         -i:整形
         -a:數值
         -x:環境變數
         -r:只讀變數,不能撤銷,不能修改,相當於readonly
         -f:聲明函數

OpenSSH:
  ssh OpenSSH
  安裝配置dropbear              
  1.編譯安裝
  tar
  cd
  ./configure
  make PROGRMS="dropbear dbclient dropberkey scp"
  make PROGRMS="dropbear dbclient dropberkey scp" install
  2.腳本
  3配置文件位置/etc/sysconfig/dropbear
  keysize=2048
  port=22022
  4後配置
  chmod +x /etc/rc.d/init.d/dropbear
  chkconfig -add dropbear


  定製Linux內核
    tar -xf -C /usr/src
    cd /usr/src/linux
    cp /boot/config-VERSION     /usr/src/linux/.config   自己選的可能會導致驅動的缺少,所以複製一份模板,再執行make menuconfig來增刪改查

    make menuconfig
    make
    make modules_install
    make install

    make clean
    make mrproper
    make distclean

    單內核:核心+ko模塊
     /lib/modules/VERSION

     make allnoconfig 自定義一個最小功能的內核,能夠讓系統正常運行。此時就需要完全配置
   第一步 給一個將要被新主機識別的裝有內核文件的磁碟不需要太大。
    fdisk  /dev/sdb 創建新分區,並添加2個分區 sdb1 50M sdb2 512M
   mke2fs  -t ext4 /dev/sdb1 /dev/sdb2 分區格式化
   mkdir  /mnt/{boot,sysroot}
   mount  /dev/sdb1 /mnt/boot
   mount  /dev/sdb2 /mnt/sysroot   創建兩個虛擬的根目錄,將磁碟掛在到上面
   grub-install -root-directory=/mnt  /dev/sdb  安裝grub
   第二步 下載一個內核版本 假設叫linux3.1
   tar xf linux3.1.tar.xz -C /usr/src  解壓內核文件
   cd /usr/src
   ln -sv linux.3 linux 軟連接一下(猜測應該是便於被系統識別)
   make allnoconfig   將.config文件中的絕大部分可以省略的內核功能給關閉
   make menuconfig  定製內核  這邊省略 較複雜,可以看視頻如何定製的,10-17分
   make bzI(大寫的i)mage  這個只編譯壓縮格式的內核核心,並不編譯內核模塊
   cp arch/x86/boot/bzImage /mnt/boot/
   vim /mnt/boot/grub/grub.conf  此處省略
   default=0
   timeout=3
  title Customzed Linux
   root (hd0,0)
   kernel  /bzImage ro root=/dev/sda2 init=/bin/bash

為什麼要將bash 軟連接成 sh ,難道識別的時候是識別sh嗎?


     PC Server CPU + men + i/o
     make bzImage 只編譯核心不編譯模塊

 


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

-Advertisement-
Play Games
更多相關文章
  • 想學會如何在STM8上使用ADC這個功能,我們先得瞭解單片機中ADC究竟是什麼。 ADC是模擬信號轉成數值信號,單片機只能識別TTL電平,其實就是 1 或者 0 ,但是如果我們給它一個3.3V電壓,單片機就無法識別,,若想使用單片機讀取出來得時候,它必須將模擬量變成數字量。 瞭解完後,我們就開始講解 ...
  • [TOC]     1. Linux啟動過程 Linux的啟動過程是在執行多級初始化過程中啟動一個Linux的安裝,它在許多方面類似於BSD和其他Unix風格的引導過程,從中衍生出來。   引導Linux安裝設計多個階段和軟體組成,包括固件初始化,引導載入程式的執行,L ...
  • 必要瞭解函數的功能和使用場景: fflush, setbuf, setvbuf 瞭解的操作: setbuf(stdout,NULL); // 關閉輸出緩衝區; 保持更新,轉載請註明出處。 ...
  • 現狀描述與需求描述 最近梳理系統功能的時候發現現在每個月處理完數據之後,需要給別的系統傳送批介面文件,介面文件的內容是來自於Oracle數據表中的數據。我每次都需要手工執行一下存儲過程,讓數據從正式表中插入到介面表中,然後再藉助plsql工具軟體sqlplus的spool工具導出介面文件,然後把導出 ...
  • 1、 Rsync 基礎概述 Rsync是一款開源的備份工具,可以在不同主機之間進行同步,可實現全量備份和增量備份,因此非常適合用於架構集中式備份或異地備份等應用。 Rsync官方地址:https://rsync.samba.org/ Rsync監聽埠:873 Rsync運行模式:C/S Rsync ...
  • 準備好mysql的離線安裝文件: MySql官網下載mysql-5.7.25-1.el7.x86_64.rpm-bundle,並複製到/usr/mysql文件夾中。 刪除CentOS自帶的MariaDB: rpm -qa|grep mariadb rpm -e --nodeps mariadb-li ...
  • 之前linux回滾了下,然後就連不上xshell和filezille了,後臺安全配置哪裡也都打開了埠號了,還是不行。然後我就想重啟下ssh服務 ,執行service sshd restart 提示139行地址錯誤,按照提示我打開sshd_config文件並找到139行,才發現 這裡多了一個Addr ...
  • 轉自:https://blog.csdn.net/u012993732/article/details/48626921 調用 Doskey.exe,它撤回 Windows XP 命令、編輯命令行並創建巨集。 MS-DOS命令語法 doskey {/reinstall | /listsize=size ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...