在CentOS6.2下安裝DNS服務軟件Bind并快速配置簡單實例

[實踐Ok]在CentOS6.2下安裝DNS并快速配置實例,共八步,心路歷程如下:
背景介紹:
在日常的開發中,往往會在測試機和外網的Http的Url實際接口是不一樣的,在測試機一個Url地址,在外網中又是一個地址。
這樣在我們在開發時,在上線時就會去修改一下接口,在線下測試時用線下的Url接口,最后的情況是,在SVN的管理中會變得
很混亂,也就是在上線上的版本和線下測試的版本在改動上來回切換,版本號不段的切換,為此,為了解決這個問題,必須引入
自己建立一套內網測試系統的DNS來實現其和外網一樣的環境,進而在實際開發中就不會出現因URL的接口包含的不同域名而導致
了代碼版本管理的版本號不段攀升。

實際操作:
在Linux下尤其是CentOS這樣的免費系統上有Yum這樣的包管理工具來安DNS服務器,但是我在實踐中發現其并不理想,可能是打出的Rpm包多少有些
不太讓人滿意,我試過用直接運行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后來在配置DNS時出現這樣那樣的問題.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么權限問題都試了,但就是搞不定,于是否,
改用源碼安裝,這樣來得更保險此些,操控性也強很多,有人問我,你的人生由誰來操盤:我操!

我的上手安裝和配置如下:
一:開始安裝DNS服務器Bind:
下載 bind??http://www.isc.org,解壓bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
進入 bind-9.9.1-P1.tar.gz文件夾
cd bind-9.9.1-P1
創建安裝目錄,我是安裝在 /usr/local/named
mkdir /usr/local/named
編譯,指定安裝目錄,指定man目錄,開啟多線程支持(測試環境也就沒有必要搞多線程了,要整看幫助。)
./configure --prefix=/usr/local/named
Make 大約需要幾分鐘,只要不報錯就繼續下去。
make
Make install 安裝
make install
沒有報錯,就表示安裝成功了。
創建以下目錄以備用
mkdir /usr/local/named/namedb

二:開始配置bind
創建 rndc.conf文件,用bind自帶程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf?? //一直死在這兒了,只得強制終止。
查原因,在網上搜索:linux安裝dns,rndc-confgen沒反應,哈,有一篇文章說到點上了,
Url:http://www.nginxs.com/linux/43.html,他說是,摘錄如下:
在官方網站上看到這么一條信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)

start typing:
rndc-confgen: generate key: out of entropy

大概意思就是服務器上沒有random產生器,這種情況下我們就手動偽造一個文件代替/dev/random的功能
###新建一個 random 文件隨即輸入一串數字“記得要長~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 幫助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
??-a:?????????? generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
??-b bits:??????from 1 through 512, default 128; total length of the secret
??-c keyfile:?? specify an alternate key file (requires -a)
??-k keyname:?? the name as it will be used??in named.conf and rndc.conf
??-p port:??????the port named will listen on and rndc will connect to
??-r randomfile: a file containing random data
??-s addr:??????the address to which rndc should connect
??-t chrootdir: write a keyfile in chrootdir as well (requires -a)
??-u user:??????set the keyfile owner to “user” (requires -a)
view plaincopy to clipboardprint?
  1. shell?$>?../sbin/rndc-confgen?-r?random?>?rndc.key ??
,上面這一句是核心,自己整個Random文件是橋梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把這個named.conf放在etc的文件夾子下:/usr/local/named/etc/named.conf。
ok 問題解決了,接下來我們配置 我們的 域名服務器吧。

三:配置篇
編輯named.conf
# vi??/usr/local/named/etc/named.conf
寫入以下內容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,剛好倒過來。
view plaincopy to clipboardprint?
  1. key?"rndc-key"?{ ??
  2. ??algorithm?hmac-md5; ??
  3. ??secret?"SnK8Ph1zCAnnykZ07qt+TQ=="; ??
  4. }; ??
  5. ??
  6. controls?{ ??
  7. ??inet?127.0.0.1?port?953 ??
  8. ????allow?{?127.0.0.1;?}?keys?{?"rndc-key";?}; ??
  9. }; ??
  10. ??
  11. options?{ ??
  12. ??Directory?"/usr/local/named"; ??
  13. ??Pid-file?"named.pid"; ??
  14. ??Allow-query?{?any?;}; ??
  15. ??Dump-file?"/usr/local/named/data/cache_dump.db"; ??
  16. ??Statistics-file?"/usr/local/named/data/named_stats.txt"; ??
  17. }; ??
  18. Zone?"localhost"?in?{ ??
  19. ??Type?master; ??
  20. ??File?"localhost.zone"; ??
  21. }; ??
  22. Zone?"0.0.127.in-addr.arpa"?in?{ ??
  23. ??Type?master; ??
  24. ??File?"localhost.rev"; ??
  25. }; ??
  26. ??
  27. zone?"51test.com"?{ ??
  28. ??????type?master; ??
  29. ??????file?"51test.com.zone"; ??
  30. };zone?"225.168.192.in-add.arpa"?IN?{ ??
  31. ????????type?master; ??
  32. ?????????file?"225.168.192.in-add.arpa"; ??
  33. }; ??
  34. ??


退出,保存。
創建并編輯 localhost.zone 文件
vi??/usr/local/named/localhost.zone
寫入以下內容:
  1. $TTL?3600 ??
  2. $ORIGIN?127.0.0.1. ??
  3. @??1D?IN?SOA?localhost.?root.localhost.?( ??
  4. ?????????????????????42?????????; ??
  5. ?????????????????????3H?????????; ??
  6. ?????????????????????15M????????; ??
  7. ?????????????????????1W?????????; ??
  8. ?????????????????????3600); ??
  9. ???1D?IN?NS??127.0.0.1 ??
  10. ???1D?IN?A???127.0.0.1 ??
  11. ??


創建并編輯 localhost.rev 文件
# vi /usr/local/named/localhost.rev
  1. $TTL?3600 ??
  2. @??IN?SOA??localhost.??root.localhost.?( ??
  3. ??????????????1;?serial ??
  4. ??????????????3600;?refresh?every?hour ??
  5. ??????????????900;??retry?every?15?minutes ??
  6. ??????????????3600000;?expire?1000?hours ??
  7. ??????????????3600);?minimun?1?hour ??
  8. ???IN?NS?localhost. ??
  9. 1??IN?PTR?localhost. ??
  10. ??


因前面在,51test.com這個是在其他網頁上抄過來的簡單示例,于是也就順便把文件也貼上:
vi??/usr/local/named/51test.com.zone
  1. $TTL?86400 ??
  2. @????????IN????????SOA????????www.51test.com.??root.localhost?( ??
  3. ????????????????????????2?;?serial ??
  4. ????????????????????????28800?;?refresh ??
  5. ????????????????????????7200?;?retry ??
  6. ????????????????????????604800?;?expire ??
  7. ????????????????????????86400?;?ttl ??
  8. ????????????????????????) ??
  9. ????????IN??????NS??????www.51test.com. ??
  10. ??
  11. www??????IN??????A???????192.168.225.128 ??
  12. admin?????IN??????A??????192.168.225.128 ??
  13. ??


再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
  1. $TTL????86400 ??
  2. @???????IN??????SOA?????51test.com.??root.51test.com.??( ??
  3. ??????????????????????????????????????1997022700?;?Serial ??
  4. ??????????????????????????????????????28800??????;?Refresh ??
  5. ??????????????????????????????????????14400??????;?Retry ??
  6. ??????????????????????????????????????3600000????;?Expire ??
  7. ??????????????????????????????????????86400?)????;?Minimum ??
  8. @?????????IN??????NS??????51test.com. ??
  9. 128???????IN??????PTR????www.51test.com. ??
  10. 128???????IN??????PTR????admin.51test.com. ??
  11. ??

配置注意事項:
配置文件中的 "@" 符號前不能有任何空白字符
配置文件中的 "IN" 字符前必須有空格或TAB
到此,配置大功告成。

四:
下載一個named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,從這兒下載:
http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209
特別注意:bind的配置文檔是區分大小寫的,因現在那個FTP好像下載不了,于是我也貼下面。
vi /usr/local/named/named.ca
view plaincopy to clipboardprint?
  1. more?named.root ??
  2. ;?This?file?holds?the?information?on?root?name?servers?needed?to ??
  3. ;?initialize?cache?of?Internet?domain?name?servers ??
  4. ;?(e.g.?reference?this?file?in?the?"cache?.?<file>" ??
  5. ;?configuration?file?of?BIND?domain?name?servers). ??
  6. ; ??
  7. ;?This?file?is?made?available?by?InterNIC ??
  8. ;?under?anonymous?FTP?as ??
  9. ;?file?/domain/named.root ??
  10. ;?on?server?FTP.INTERNIC.NET ??
  11. ; ??
  12. ;?last?update:?Nov?5,?2002 ??
  13. ;?related?version?of?root?zone:?2002110501 ??
  14. ; ??
  15. ; ??
  16. ;?formerly?NS.INTERNIC.NET ??
  17. ; ??
  18. .?3600000?IN?NS?A.ROOT-SERVERS.NET. ??
  19. A.ROOT-SERVERS.NET.?3600000?A?198.41.0.4 ??
  20. ; ??
  21. ;?formerly?NS1.ISI.EDU ??
  22. ; ??
  23. .?3600000?NS?B.ROOT-SERVERS.NET. ??
  24. B.ROOT-SERVERS.NET.?3600000?A?128.9.0.107 ??
  25. ; ??
  26. ;?formerly?C.PSI.NET ??
  27. ; ??
  28. .?3600000?NS?C.ROOT-SERVERS.NET. ??
  29. C.ROOT-SERVERS.NET.?3600000?A?192.33.4.12 ??
  30. ; ??
  31. ;?formerly?TERP.UMD.EDU ??
  32. ; ??
  33. .?3600000?NS?D.ROOT-SERVERS.NET. ??
  34. D.ROOT-SERVERS.NET.?3600000?A?128.8.10.90 ??
  35. ; ??
  36. ;?formerly?NS.NASA.GOV ??
  37. ; ??
  38. .?3600000?NS?E.ROOT-SERVERS.NET. ??
  39. E.ROOT-SERVERS.NET.?3600000?A?192.203.230.10 ??
  40. ; ??
  41. ;?formerly?NS.ISC.ORG ??
  42. ; ??
  43. .?3600000?NS?F.ROOT-SERVERS.NET. ??
  44. F.ROOT-SERVERS.NET.?3600000?A?192.5.5.241 ??
  45. ; ??
  46. ;?formerly?NS.NIC.DDN.MIL ??
  47. ; ??
  48. .?3600000?NS?G.ROOT-SERVERS.NET. ??
  49. G.ROOT-SERVERS.NET.?3600000?A?192.112.36.4 ??
  50. ; ??
  51. ;?formerly?AOS.ARL.ARMY.MIL ??
  52. ; ??
  53. .?3600000?NS?H.ROOT-SERVERS.NET. ??
  54. H.ROOT-SERVERS.NET.?3600000?A?128.63.2.53 ??
  55. ; ??
  56. ;?formerly?NIC.NORDU.NET ??
  57. ; ??
  58. .?3600000?NS?I.ROOT-SERVERS.NET. ??
  59. I.ROOT-SERVERS.NET.?3600000?A?192.36.148.17 ??
  60. ; ??
  61. ;?operated?by?VeriSign,?Inc. ??
  62. ; ??
  63. .?3600000?NS?J.ROOT-SERVERS.NET. ??
  64. J.ROOT-SERVERS.NET.?3600000?A?192.58.128.30 ??
  65. ; ??
  66. ;?housed?in?LINX,?operated?by?RIPE?NCC ??
  67. ; ??
  68. .?3600000?NS?K.ROOT-SERVERS.NET. ??
  69. K.ROOT-SERVERS.NET.?3600000?A?193.0.14.129 ??
  70. ; ??
  71. ;?operated?by?IANA ??
  72. ; ??
  73. .?3600000?NS?L.ROOT-SERVERS.NET. ??
  74. L.ROOT-SERVERS.NET.?3600000?A?198.32.64.12 ??
  75. ; ??
  76. ;?housed?in?Japan,?operated?by?WIDE ??
  77. ; ??
  78. .?3600000?NS?M.ROOT-SERVERS.NET. ??
  79. M.ROOT-SERVERS.NET.?3600000?A?202.12.27.33 ??
  80. ;?End?of?File ??
  81. ??


五:運行Bind程序,如下方式加載配置文件啟動,加上調試信息參數:

如果運行結果最后一行顯示Running
表明安裝并啟動成功。

最后需要注意的內容是不要忘了是否真正的開啟服務器端口(以下是named.conf文件中端口的設置語句,可以看到端口號是 53:telnet x.x.x.x 53)
當然也可以用:nmap localhost ,沒有yum安裝,這種小工具問題不大用yum來做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT???? STATE SERVICE
22/tcp?? open??ssh
53/tcp?? open??domain
80/tcp?? open??http
111/tcp??open??rpcbind
3306/tcp open??mysql
9000/tcp open??cslistener

端口號是 53就是DNS Bind的端口。

六:停止及啟動:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root???? 19024??0.0??1.2??10624??6216 pts/0????T????03:00?? 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+??已殺死?????????????? /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf

七:本機測試,外部機器測試是否dns生效:
vi /etc/resolv.conf
加上,去掉注釋其他Dns的Ip值:
nameserver 192.168.225.128
啟動Dns后,清楚Bind服務器上的Dns緩存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush

root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms

八:將服務設置為開機自啟,把named 添加到啟動項,隨操作系統一起啟動即可:

但是,我們現在是源碼的安裝,So,得這樣子喔。
修改來自Apache里的啟動shell(參看一下自啟動的標準),也可以不用修改,直接如下也成,內容如下:

1)保存為/etc/init.d/dns
腳本執行權限添加:
2)chmod -R a+x /etc/init.d/dns??//env: /etc/init.d/dns: 權限不夠 ,必須給加上。
3)把腳本拷貝至/etc/init.d/目錄下,執行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再執行:
chkconfig --add dns??//解釋:相當于Windows下的自動啟動服務,特別要注意:chkconfig –add dns的時候,出現dns服務不支持chkconfig。
如果想讓服務支持chkconfig,必須定義服務的啟動級,啟動優先級,關閉優先級,還有描述,如上,必須得加上描述等。
chkconfig --levels dns345 on //也成
開機啟動設置完畢:
service dns start
-----------------------------------------------

下次一開機也就會運行這個腳本,以啟動自己定義的Dns服務器。
  1. reboot ??

啟動后,查看是否自己就啟動了呢?如下:
  1. root@192.168.225.128:~#?ps?aux|grep?named ??
  2. root??????1272??0.0??1.1??10232??5680??????????S????05:20???0:00?/usr/local/named/sbin/named?-gc?/usr/local/named/etc/named.conf ??
  3. root??????2039??0.0??0.1???5956???756?pts/0????S+???05:22???0:00?grep?named ??

果然,又啟動起來了,大功告成,整完收工。
Dns服務器從安裝到調試配置并測試完成,Eof。Write and Opt??By:jackxiang 2012/06/17 20:30:00


后來,我自己配置了一個新的域名:naimanqi.com.cn ,我的Linux機器IP是:192.168.1.105
修改配置文件:
1)共用如下:
view plaincopy to clipboardprint?
  1. options?{ ??
  2. ????????Directory?"/usr/local/named"; ??
  3. ????????Pid-file?"named.pid"; ??
  4. ????????Allow-query?{?any?;}; ??
  5. ????????Dump-file?"/usr/local/named/data/cache_dump.db"; ??
  6. ????????Statistics-file?"/usr/local/named/data/named_stats.txt"; ??
  7. }; ??
  8. 2)添加如下兩個正向解析和反向解析的配置文件: ??

view plaincopy to clipboardprint?
  1. vi??/usr/local/named/etc/named.conf ??
  2. ??
  3. zone?"naimanqi.com.cn"?{ ??
  4. ??????type?master; ??
  5. ??????file?"naimanqi.com.cn.zone"; ??
  6. };zone?"1.168.192.in-add.arpa"?IN?{ ??
  7. ????????type?master; ??
  8. ?????????file?"1.168.192.in-add.arpa"; ??
  9. }; ??


3)反向解析文件:
view plaincopy to clipboardprint?
  1. vi?/usr/local/named/1.168.192.in-add.arpa ??
  2. $TTL????86400 ??
  3. @???????IN??????SOA?????naimanqi.com.cn.??root.naimanqi.com.cn.??( ??
  4. ??????????????????????????????????????1997022700?;?Serial ??
  5. ??????????????????????????????????????28800??????;?Refresh ??
  6. ??????????????????????????????????????14400??????;?Retry ??
  7. ??????????????????????????????????????3600000????;?Expire ??
  8. ??????????????????????????????????????86400?)????;?Minimum ??
  9. @?????????IN??????NS??????naimanqi.com.cn. ??
  10. 128???????IN??????PTR????www.naimanqi.com.cn. ??
  11. 128???????IN??????PTR????admin.naimanqi.com.cn. ??

4)正向解析的文件:
view plaincopy to clipboardprint?
  1. vi??/usr/local/named/naimanqi.com.cn.zone ??
  2. ??
  3. $TTL?86400 ??
  4. @????????IN????????SOA????????naimanqi.com.cn.??root.localhost?( ??
  5. ????????????????????????2?;?serial ??
  6. ????????????????????????28800?;?refresh ??
  7. ????????????????????????7200?;?retry ??
  8. ????????????????????????604800?;?expire???????? ??
  9. ????????????????????????86400?;?ttl ??
  10. ????????????????????????) ??
  11. ????????IN??????NS??????naimanqi.com.com. ??
  12. ??
  13. ?????????IN??????A???????192.168.1.105 ??
  14. www??????IN??????A???????192.168.1.105 ??
  15. admin?????IN??????A??????192.168.1.105 ??

注意這一行:??????????IN??????A?????? 192.168.1.105
這個目的是把瀏覽器訪問:naimanqi.com.cn這個域名也給解析到IP: 192.168.1.105上來,跟在后面的www??IN??????A?????? 192.168.1.105 這個是對www解析的,其實它是一個二級域名和admin 這種二級域名是一個意思:admin???? IN??????A??????192.168.1.105 。。。EOF。

最后,可以這樣玩這個DNS,這個CentOs6.3的Linux 不是建立在這個NAT下的嘛,后修改為Bridge(橋連),這樣后,反正是在一個網段內(路由器下),把自己外網的這臺Windows下的機器的DNS由192.168.1.1修改為:192.168.1.105,這樣既可以調試剛才配置的內部DNS進行調試,也可 以訪問外網,為什么呢?是因為:
view plaincopy to clipboardprint?
  1. C:\Documents?and?Settings\Administrator>nslookup?justwinit.cn ??
  2. DNS?request?timed?out. ??
  3. ????timeout?was?2?seconds. ??
  4. ***?Can't?find?server?name?for?address?192.168.1.105:?Timed?out ??
  5. ***?Default?servers?are?not?available ??
  6. Server:??UnKnown ??
  7. Address:??192.168.1.105 ??
  8. ??
  9. Non-authoritative?answer: ??
  10. Name:????justwinit.cn ??
  11. Address:??72.46.128.86 ??

是因,內部DNS沒有找到那個地址后,它自動轉給上一級DNS去了,后得到那個外部網站的IP地址了。但修改為NAT后,好像啟動Centos里的DNS后,再在Windows上修改IP為橋連后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建議用橋連方式來開發,少用NAT方式,這樣可以在一個路由器下的電腦都可以配置上這個Dns來訪問該網站和開發網部(samba),很是方便,而DNS設置后,如果沒有這個網站在內網,它便會訪問外網,這種機制也是很好的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445093.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模擬動態分區分配

介紹 list.h #ifndef _List_h_ #define _List_h_#include "Data.h"//******* 鏈表 *******// Status InitLinkList(LinkList *L); void PCBAssign(PCBType *e1, PCBType e2); Status GetElemt_L(LinkList L,int i,PCBType *e); Status ListIn…

python模塊(4)-Collections

collections1.collection.counter(list)2.collections.defaultdict()3.collection.dequecollections是Python內建的一個集合模塊&#xff0c;提供了許多有用的集合類。collections在python官方文檔中的解釋是High-performance container datatypes1.collection.counter(list) …

js知識點匯總

1.本門課的作用&#xff08;JavaScript的作用&#xff09;所有基于Web的程序開發基礎 2.一種計算機客戶端腳本語言&#xff0c;主要在Web瀏覽器解釋執行。 3.瀏覽器中Javascript&#xff0c;用于與用戶交互&#xff0c;以及實現頁面中各種動態特效 4.在HTML文件中&#xff0…

redis——內存概述

Redis通過自己的方法管理內存,&#xff0c;主要方法有zmalloc(),zrealloc()&#xff0c; zcalloc()和zfree(), 分別對應C中的malloc(), realloc()、 calloc()和free()。相關代碼在zmalloc.h和zmalloc.c中。 Redis自己管理內存的好處主要有兩個&#xff1a;可以利用內存池等手段…

Windows下如何用C語言清空特定文件夾中的所有文件

#include "iostream.h" //由于該博客系統發布是不能顯示正常&#xff0c;代碼如需調試&#xff0c;只需將改成""即可 #include "string.h" #include "stdlib.h" #include "time.h" #include "math.h" #include…

MachineLearning(5)-去量綱:歸一化、標準化

去量綱&#xff1a;歸一化、標準化1.歸一化(Normalization)1.1 Min-Max Normalization1.2 非線性Normalization2.標準化(Standardlization)2.1 Z-score Normalization3.標準化在梯度下降算法中的重要性本博文為葫蘆書《百面機器學習》閱讀筆記。去量綱化 可以消除特征之間量綱的…

GDB調試技術(一)

啟動GDB的方法有以下幾種: 1、gdb <program> program也就是你的執行文件,一般在當然目錄下。 2、gdb <program> core 用gdb同時調試一個運行程序和core文件,core是程序非法執行后core dump后產生的文件。 3、

GDB調試技術(二)

1) 恢復程序運行和單步調試 當程序被停住了,你可以用continue命令恢復程序的運行直到程序結束,或下一個斷點到來。也可以使用step或next命令單步跟蹤程序。 continue [ignore-count] c [ignore-count] fg [ignore-count] 恢復程序運行,直到程序結束,或是下一個斷點到…

關于Java中String的問題

String 對象的兩種創建方式&#xff1a; String str1 "abcd";//先檢查字符串常量池中有沒有"abcd"&#xff0c;如果字符串常量池中沒有&#xff0c;則創建一個&#xff0c;然后 str1 指向字符串常量池中的對象&#xff0c;如果有&#xff0c;則直接將 st…

學點數學(3)-函數空間

函數空間1.距離&#xff1a;從具體到抽象2.范數3.內積4.拓撲本博文為觀看《上海交通大學公開課-數學之旅-函數空間 》所整理筆記&#xff0c;公開課視頻連接&#xff1a;http://open.163.com/newview/movie/free?pidM8PTB0GHI&midM8PTBUHT0數學中的空間 是 大家研究工作的…

Makefile編寫詳解--項目開發

預備知識&#xff1a; gcc 的3個參數&#xff1a; 1. -o 指定目標文件 gcc sources/main.c -o bin/main 2. -c 編譯的時候只生產目標文件不鏈接 gcc -c sources/main.c -o obj/main.o 3. -I 主要指定頭文件的搜索路徑 gcc -I headers -c main.c -o main.o 4. -l 指定靜…

如何判斷對象已經死亡

引用計數 給對象中添加一個引用計數器&#xff0c;每當有一個地方引用它&#xff0c;計數器就加 1&#xff1b;當引用失效&#xff0c;計數器就減 1&#xff1b;任何時候計數器為 0 的對象就是不可能再被使用的。 這個方法實現簡單&#xff0c;效率高&#xff0c;但是目前主流…

XML常見的操作

1. 創建XML文檔 &#xff08;1&#xff09;創建一個XML文檔非常簡單&#xff0c;其流程如下&#xff1a; ① 用xmlNewDoc函數創建一個文檔指針doc。 ② 用xmlNewNode函數創建一個節點指針root_node。 ③ 用xmlDocSetRootElement將root_node設置為doc的根結點。…

算法(2)-二叉樹的遍歷(遞歸/迭代)python實現

二叉樹的遍歷1.深度優先DFS1.1 DFS 遞歸解法1.1.1先序遍歷1.1.2中序遍歷1.1.3后序遍歷1.2 DFS迭代解法1.2.1先序遍歷1.2.2中序遍歷1.2.3后序遍歷2.廣度優先BFS3.二叉樹的最大深度3.1遞歸3.2迭代4.翻轉二叉樹4.1遞歸4.1迭代5.合并兩棵二叉樹5.1遞歸5.2迭代有兩種通用的遍歷樹的策…

libxml的安裝和相關數據結構詳解

1安裝 一般如果在安裝系統的時候選中了libxml開發庫的話&#xff0c;系統會默認安裝。如果沒有安裝&#xff0c;可以按如下步驟進行手工安裝。 ① 從xmlsoft站點或ftp(ftp.xmlsoft.org)站點下載libxml壓縮包 (libxml2-xxxx.tar.gz) ② 對壓縮包進行解壓縮 tar xvzf …

內核中的 likely() 與 unlikely()

在 2.6 內核中&#xff0c;隨處可以見到 likely() 和 unlikely() 的身影&#xff0c;那么為什么要用它們&#xff1f;它們之間有什么區別&#xff1f; 首先要明確&#xff1a; if(likely(value)) 等價于 if(value) if(unlikely(value)) 也等價于 if(value) 也就是說 likely()…

python外卷(12)-sort(),sorted(),ord(),chr()

Python內置函數1.sort()&#xff0c;sorted()2.ord(), chr()1.sort()&#xff0c;sorted() sort() 是list的方法&#xff0c;對已經存在的列表進行操作&#xff0c;無返回值 a[3,2,4,1] b["c","a","b"] print (a.sort(),b.sort()) # 輸出 (Non…

利用posix_fadvise清理系統中的文件緩存

利用posix_fadvise清理系統中的文件緩存leoncom c/c,unix2011-08-03當我們需要對某段讀寫文件并進行處理的程序進行性能測試時&#xff0c;文件會被系統cache住從而影響I/O的效率&#xff0c;必須清理cache中的對應文件的才能正確的進行性能測試。通常清理內存可以采用下面的這…

空間分配

目前主流的垃圾收集器都會采用分代回收算法&#xff0c;因此需要將堆內存分為新生代和老年代&#xff0c;這樣我們就可以根據各個年代的特點選擇合適的垃圾收集算法。 大多數情況下&#xff0c;對象在新生代中 eden 區分配。當 eden 區沒有足夠空間進行分配時&#xff0c;虛擬…

關于uint32_t uint8_t uint64_t 的問題

怎么又是u又是_t的?u代表的是unsigned相信大家都知道,那么_t又是什么呢?我認為它就是一個結構的標注,可以理解為type/typedef的縮寫,表示它是通過typedef定義的,而不是其它數據類型。 uint8_t,uint16_t,uint32_t等都不是什么新的數據類型,它們只是使用typedef給類型起…