組播python
㈠ 如何安裝ganglia監控hadoop單節點
Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁介面,通常被稱為ganglia-web。
Gmond :是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息 如果他是一個發送者(mute=no)他會收集基本指標,比如系統負載(load_one),CPU利用率。他同時也會發送用戶通過添加C/python模塊來自定義的指標。 如果他是一個接收者(deaf=no)他會聚合所有從別的主機上發來的指標,並把它們都保存在內存緩沖區中。
Gmetad:也是一個守護進程,他定期檢查gmonds,從那裡拉取數據,並將他們的指標存儲在RRD存儲引擎中。他可以查詢多個集群並聚合指標。他也被用於生成用戶界面的web前端。
Ganglia-web :顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。 集群是主機和度量數據的邏輯分組,比如資料庫伺服器,網頁伺服器,生產,測試,QA等,他們都是完全分開的,你需要為每個集群運行單獨的gmond實例。
㈡ 在Python中連接到多播伺服器問題,怎麼解決
你把redirect關閉就可以了。在send時,加上參數allow_redirects=False 通常每個瀏覽器都會設置redirect的次數。如果redirect太多會把CPU耗荊所以redirect幾次就會強制中止。
㈢ 給幾道編程題目吧!!(c++)難度不要太低
1.給點一個圖,判定它是否是歐拉圖,然後找出歐拉圈。
2.給定一個圖,判斷它是否是哈密頓圖,然後找出哈密頓圈。
3.實現python中的大數運算。
4.將外存儲器中的一個文件包2^32個int型數,至少找出一對重復的數。
5.寫一個組播的路由演算法。
6.寫一個操作系統內核
7.構造一個編譯器
8.寫一個可以分區,修改MBR,格式化分區的工具箱。
9.給我的路由器,寫一個ipv6轉發模塊
10.部署一個完整的應用:內核,中間件,編程語言支持,應用框架。
11.破解RSA
。。。
㈣ python 怎麼獲取mp4的解析度
獲得H.264視頻解析度的方法
From: http //www cnblogs.com/likwo/p/3531241.html
在使用ffmpeg解碼播放TS流的時候(例如之前寫過的UDP組播流),在連接時往往需要耗費大量時間。經過debug發現是av_find_stream_info(已拋棄,現在使用的是avformat_find_stream_info)這個方法十分耗時,而且是阻塞的。av_find_stream_info方法主要是獲得相應的流信息,其中對我的應用最有用的就是視頻的解析度。在av_find_stream_info中是要不斷的讀取數據包,解碼獲得相應的信息,而其中除了解析度信息以外的東西對我的應用中是無用的。所以,考慮自己手動從H.264碼流中解析出視頻的解析度信息。
以下內容主要參考了這篇文章:http //www myexception.cn/internet/586390.html
H.264碼流的流信息都存儲在了特殊的結構中,叫做SPS(Sequence Parameter Set)。要解析SPS就需要知道一些H.264碼流的格式信息。
在H.264碼流中,都是以0x00 0x00 0x01 或者 0x00 0x00 0x00 0x01為開始碼的(在我的應用中為後者),之後通過檢測開始碼後第一個位元組的後五位是否為7(00111)來判斷其是否為SPS。得到SPS之後,就可以解析出視頻的解析度。SPS中有兩個成員,pic_width_in_mbs_minus1和pic_height_in_map_units_minus_1,分別表示圖像的寬和高,但是要注意的是它們都是以16為單位(在面積上就是以16*16的塊為單位)再減1,所以實際的寬是(pic_width_in_mbs_minus1 + 1)*16,高為(pic_height_in_map_units_minus_1+1)*16。
歡迎轉載,轉載請註明出處:http //guoyb.com/Tech/34.html
以下是解析寬高的代碼:
轉載http //guoyb.com/Tech/34.html
以下部分 轉自 http //blog.csdn.NET/pkueecser/article/details/7367641
使用RTP傳輸H264的時候,需要用到sdp協議描述,其中有兩項:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那麼這兩項從哪裡獲取呢?答案是從H264碼流中獲取.在H264碼流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"為開始碼的,找到開始碼之後,使用開始碼之後的第一個位元組的低5位判斷是否為7(sps)或者8(pps), 及data[4] & 0x1f == 7 || data[4] & 0x1f == 8.然後對獲取的nal去掉開始碼之後進行base64編碼,得到的信息就可以用於sdp.sps和pps需要用逗號分隔開來.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如何解析SDP中包含的H.264的SPS和PPS串
http //www pernet.tv.sixxs.org/thread-109-1-1.html
SDP中的H.264的SPS和PPS串,包含了初始化H.264解碼器所需要的信息參數,包括編碼所用的profile,level,圖像的寬和高,deblock濾波器等。
由於SDP中的SPS和PPS都是BASE64編碼形式的,不容易理解,附件有一個工具軟體可以對SDP中的SPS和PPS進行解析。
用法是在命令行中輸入:
spsparser sps.txt pps.txt output.txt
例如sps.txt中的內容為:
Z0LgFNoFglE=
pps.txt中的內容為:
aM4wpIA=
最終解析的到的結果為:
Start mping SPS:
profile_idc = 66
constrained_set0_flag = 1
constrained_set1_flag = 1
constrained_set2_flag = 1
constrained_set3_flag = 0
level_idc = 20
seq_parameter_set_id = 0
chroma_format_idc = 1
bit_depth_luma_minus8 = 0
bit_depth_chroma_minus8 = 0
seq_scaling_matrix_present_flag = 0
log2_max_frame_num_minus4 = 0
pic_order_cnt_type = 2
log2_max_pic_order_cnt_lsb_minus4 = 0
delta_pic_order_always_zero_flag = 0
offset_for_non_ref_pic = 0
offset_for_top_to_bottom_field = 0
num_ref_frames_in_pic_order_cnt_cycle = 0
num_ref_frames = 1
gaps_in_frame_num_value_allowed_flag = 0
pic_width_in_mbs_minus1 = 21
pic_height_in_mbs_minus1 = 17
frame_mbs_only_flag = 1
mb_adaptive_frame_field_flag = 0
direct_8x8_interence_flag = 0
frame_cropping_flag = 0
frame_cropping_rect_left_offset = 0
frame_cropping_rect_right_offset = 0
frame_cropping_rect_top_offset = 0
frame_cropping_rect_bottom_offset = 0
vui_parameters_present_flag = 0
Start mping PPS:
pic_parameter_set_id = 0
seq_parameter_set_id = 0
entropy_coding_mode_flag = 0
pic_order_present_flag = 0
num_slice_groups_minus1 = 0
slice_group_map_type = 0
num_ref_idx_l0_active_minus1 = 0
num_ref_idx_l1_active_minus1 = 0
weighted_pref_flag = 0
weighted_bipred_idc = 0
pic_init_qp_minus26 = 0
pic_init_qs_minus26 = 0
chroma_qp_index_offset = 10
deblocking_filter_control_present_flag = 1
constrained_intra_pred_flag = 0
rendant_pic_cnt_present_flag = 0
transform_8x8_mode_flag = 0
pic_scaling_matrix_present_flag = 0
second_chroma_qp_index_offset = 10
/////////////////////////////////////////////////////////////////////////////////////////////////
這里需要特別提一下這兩個參數
pic_width_in_mbs_minus1 = 21
pic_height_in_mbs_minus1 = 17
分別表示圖像的寬和高,以宏塊(16x16)為單位的值減1
因此,實際的寬為 (21+1)*16 = 352
spsparser.rar
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
http //krdai.info.sixxs.org/blog/mp4-sps-pps-data.html
最近在做跟 h264 encode/decode 相關的研究,目標是希望可以從 Android 的 MediaRecorder 當中取出 h264 的資訊。目前問題是在於 SPS 以及 PPS 到底要怎樣得到。由於 MediaRecorder 是寫入 mp4 檔案中,所以不得已只好來去分析一下 mp4 的檔案格式,發現沒有想像中的困難. 主要是參照 ISO/IEC 14496-15 這部份. 在 mp4 的檔案之中, 找到 avcC 這個字串, 之後就是接上 AVCDecoderConfigurationRecord. AVCDecoderConfigurationRecord 的 format 如下:
aligned(8) class AVCDecoderConfigurationRecord {
unsigned int(8) configurationVersion = 1;
unsigned int(8) AVCProfileIndication;
unsigned int(8) profile_compatibility;
unsigned int(8) AVCLevelIndication;
bit(6) reserved = '111111'b;
unsigned int(2) lengthSizeMinusOne;
bit(3) reserved = '111'b;
unsigned int(5) numOfSequenceParameterSets;
for (i=0; i< numOfSequenceParameterSets; i++) {
unsigned int(16) sequenceParameterSetLength ;
bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit;
}
unsigned int(8) numOfPictureParameterSets;
for (i=0; i< numOfPictureParameterSets; i++) {
unsigned int(16) pictureParameterSetLength;
bit(8*pictureParameterSetLength) pictureParameterSetNALUnit;
}
}
對照一下這樣就可以找到 SPS 和 PPS
+++++++++++++++++++++++++++++++++++++++++++++
vlc沒有收到pps和sps
2010-10-08 16:16
問題 packetizer_h264 packetizer warning: waiting for SPS/PPS
是因為解碼器只是在第一次執行編碼的時候,才編碼出 SPS、PPS、和I_Frame;
h264 packetizer has set so, that it sends sps/pps only first keyframe,
I'm trying to figure what breaks if that is changed so sps/pps is written in every keyframe.
[出自| http //trac.videolan.org/vlc/ticket/1384]
解決辦法:
1、編碼器編碼出每個關鍵幀都加上SPS、PPS ,據說通常情況編碼器編出的 SPS、PPS是一樣的,所以這種方法耗費資源。
2、在伺服器接收到客戶端請求時,發送第一個package 加上 SPS、PPS。
具體如下:
1、在 VideoOpenFileSource 添加一個變數 isFirstFrame;
2、構造時初始化 isFirstFrame = true;
3、在int VideoOpenFileSource::readFromBufferChain() 修改如下:
1 if(isFirstFrame == true)
2 {
3 memcpy(fTo, h264_header, sizeof(h264_header)); /* h264_header = pps +sps*/
4 offset = sizeof(h264_header);
5 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
6 offset += framesize;
7 isFirstFrame = false;
8 printf("this is the first fime\n");
9 sleep(1);
10 }
11 else
12 {
13 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
14 offset += framesize;
15 }
1
[http //topic.csdn.net/u/20100801/17/ef35e664-92ff-4144-a35f-3984dcf11da3.html| 參考]
========================================================================
sdp 關於pps和sps的疑問:
packetization-mode 主要是定義包的模式,單一 NALU單元模式(0);非交錯(non-interleaved)封包模式(1);交錯(interleaved)封包模式(2)
sprop-parameter-sets 等於H.264 的序列參數集和圖像參數 NAL單元,base64轉換;(即= sps+pps)
profile-level-id 這個參數用於指示 H.264 流的 profile 類型和級別。這知道這個是啥東東
ffmpeg decode 關於pps sps問題:
stackoverflow.com/questions/3493742/problem-to-decode-h264-video-over-rtp-with-ffmpeg-libavcodec/3500432#3500432
如何用C語言取出H.264ES文件里的nal(sps,pps)信息。比如width, height, profile等等
請高手指點指點。。。 http //www oschina.net/question/225813_35707
解析sps,pps的代碼在ffmpeg裡面就有, 抄出來就行了, 我以前也自己寫過...
ffmpeg的libavcodec/h264_parser.c,
h264_ps.c
函數
ff_h264_decode_seq_parameter_set
ff_h264_decode_picture_parameter_set
自己可以看代碼.
H264參數語法文檔: SPS、PPS、IDR http //blog.csdn.net/heanyu/article/details/6205390
H.264碼流第一個 NALU 是 SPS(序列參數集Sequence Parameter Set)
對應H264標准文檔 7.3.2.1 序列參數集的語法進行解析
㈤ Python socket 如何實現廣播單播切換
#三個線程:#線程1:產生遞增的數字,轉成字元串放到隊列中#線程2:監聽埠,將產生的連接放到列表中#線程3:從隊列中取出數字,遍歷連接列表,發送到所有客戶端#線程1:產生遞增的數字,轉成字元串放到隊列中classProcer(threading.Thread):
def__init__(self,work_queue):
super().__init__()#必須調用
self.work_queue=work_queue
defrun(self):
#print("Beginproce...")
num=1
whileTrue:
self.work_queue.put(str(num))
num=num+1
time.sleep(1)#暫停1秒#線程2:監聽埠,將產生的連接放到列表中classSocketServer(threading.Thread):
def__init__(self,socket_list):
super().__init__()
self.socket_list=socket_list
defrun(self):
sock=socket.socket()
sock.bind(('',9090))
sock.listen(5)
print("Startlisten...")
whileTrue:
conn,addr=sock.accept()
print("Connectby",addr)
self.socket_list.append((conn,addr))#線程3:從隊列中取出數字,遍歷連接列表,發送到所有客戶端classPrinter(threading.Thread):
def__init__(self,work_queue,socket_list):
super().__init__()#必須調用
self.work_queue=work_queue
self.socket_list=socket_list
defrun(self):
whileTrue:
num=self.work_queue.get()#當隊列為空時,會阻塞,直到有數據
forsock,addrinself.socket_list:#遍歷保存連接的列表
print("Send",num,"To",addr)
try:
sock.sendall(bytes(num+' ','utf-8'))#把字元串轉換成位元組數組發送
except:
print("Disconnectby",addr)#如果連接斷開,發送會失敗
self.socket_list.remove((sock,addr))#從列表中刪除斷開的連接defmain():
work_queue=queue.Queue()
socket_list=[]#為了更安全可靠,從多線程訪問列表時應該加鎖,
#這里做了簡化,因為列表的增加刪除操作基本上可以認為是線程安全的
socket_server=SocketServer(socket_list)
socket_server.daemon=True
socket_server.start()
printer=Printer(work_queue,socket_list)
printer.daemon=True#當主線程退出時子線程也退出
printer.start()
procer=Procer(work_queue)
procer.daemon=True#當主線程退出時子線程也退出
procer.start()
time.sleep(1)#這里要暫停一下,否則執行下一條語句時,會因隊列為空而直接返回
work_queue.join()#主線程會停在這里,直到所有數字被get(),並且task_done(),因為沒有調用task_done(),所在這里會一直阻塞,直到用戶按^Cif__name__=='__main__':
main()
㈥ Python下怎麼搞組播編程
你首先要明白組播和廣播的定義:
組播(multicasting)是一種多點投遞的形式,它使用硬體技術,通過使用大量組播地址來通信.當某一組機器需要通信時,選擇一個組播地址,並配置好相應的網路介面硬體,識別組播地址,從而收到該組播地址上分組的拷貝.
廣播(broadcasting)是多點投遞的最普遍的形式,它向每一個目的站投遞一個分組的拷貝.它可以通過多個單次分組的投遞完成,也可以通過單獨的連接傳遞分組的拷貝,直到每個接收方均收到一個拷貝為止.
舉個例子:縣里開大會,只同時通知了A村、B村、C村參加就是組播;同時通知了所有的村子參加就是廣播了!
。應用舉例:如圖所示,在F單元格中輸入公式:=INDEX
㈦ 組播實驗中需要手動開啟內核里的IGMP協議嗎
最近剛剛接觸到RobotFramework,發現這個工具倒是可以滿足我的要求,而且可以結合seleniumLibrary,用來做web的自動化測試相當不錯。之前我也接觸過selenium,不過感覺那個工具更貼近開發人員使用,有了robotFramework之後,感覺這個工具相當強大,而且是貼近測試人員的。之所以說強大,主要是這些測試腳本都可以用文本格式保存(如txt/html等)
==安裝篇==
如果有想學的朋友可以自己下載以下文件安裝(Google-code里可以找到大部分的安裝文件):
這篇文章的內容比較舊了,最新的安裝指南請查看 更新篇
python-2.7.1.msi(首先要有python,請選擇將Python加入Path)
wxPython2.8-win32-unicode-2.8.11.0-py27.exe(wxPython,必須要的)
robotframework-2.6.0.win32.exe(然後裝robot的Framework)
robotframework-ride-0.38.1.win32.exe(robotFramework的IDE,很不錯)
robotframework-seleniumlibrary-2.8.win32.exe(seleniumLibrary)
安裝成功後
執行[PythonDir]\Scripts\ride.py
看到界面就是安裝成功了。
如果需要AutoIt支持就下載下面2個東東。
AutoItLibrary-1.1
pywin32-216.win32-py2.7.exe
==入門篇==
安裝完成了,這個框架可以說是基於keyword的操作,按F5可以看到所有載入的keyword。
首先新增一個project
然後新增suite
然後新增test case,接著在suite層級add library,把selenium library加進來,添加後按F5檢驗是否添加成功,如圖
OK,繼續在suite的setting里設置suite啟動和結束的keyword,即Start Selenium Server和Stop Selenium Server,他會在運行時幫助我們自動啟動seleniumserver。
接下來在test case里添加一個步驟,open browser(一般用selenium做web測試都要用這個方法來打開瀏覽器),添加後關鍵字變成藍色表示找到關鍵字了,否則可能是拼寫錯誤或者沒有載入相應的library。紅色表示有一個必選參數要給定輸入值,具體參數可以看F5里的keyword說明。
輸入參數,第二個參數默認是firefox,不過我沒裝,就用ie吧。
以上只是一個簡單的例子,沒有詳細說明每個步驟的操作,只是初步介紹。後續再詳細介紹。
㈧ python爬蟲,集群是如何實現節點的發現和管理
Ignite集群管理——基於Zookeeper的節點發現
Ignite支持基於組播,靜態IP,Zookeeper,JDBC等方式發現節點,本文主要介紹基於Zookeeper的節點發現。
環境准備,兩台筆記本電腦A,B。A筆記本上使用VMware虛擬機安裝了Ubuntu系統C。
1、 C安裝Zookeeper
由於主要測試Ignite,這里僅僅簡單安裝一個zookeeper節點,下載zookeeper解壓後,直接執行zookeeper目錄下的bin/zkServer.shstart命令則成功啟動zookeeper。
查看Ubuntu系統C的IP地址為192.168.1.104,zookeeper默認埠為12181。
package com.coshaho.learn.ignite.cluster;import org.apache.ignite.Ignite;import org.apache.ignite.IgniteCache;import org.apache.ignite.Ignition;import org.apache.ignite.cache.CacheMode;import org.apache.ignite.configuration.CacheConfiguration;import org.apache.ignite.configuration.IgniteConfiguration;import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;import org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;public class IgniteCluster02
{ public static void main(String[] args)
{
TcpDiscoverySpi spi = new TcpDiscoverySpi();
TcpDiscoveryZookeeperIpFinder ipFinder = new TcpDiscoveryZookeeperIpFinder(); // Specify ZooKeeper connection string.
ipFinder.setZkConnectionString("192.168.1.104:12181");
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration(); // Override default discovery SPI. cfg.setDiscoverySpi(spi); // Start Ignite node.
Ignite ignite =Ignition.start(cfg);
System.out.println("IgniteCluster2 start OK.");
CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
cacheCfg.setBackups(1);
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
cacheCfg.setName("myCache");
IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
cache.put(2, "ignite2");
System.out.println(cache.get(1));
System.out.println(cache.get(2));
}
}
可以看到,Ignite節點2可以成功訪問到Ignite節點1存入緩存的數據。
㈨ Python培訓課程哪家好
不同機構課程安排不同,每個人需求不一樣,選擇上也是存在差異,建議根據自身需求,實地體驗一下。
課程安排:
階段一:Python開發基礎
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
階段二:Python高級編程和資料庫開發
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
階段三:前端開發
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、javaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
階段四:WEB框架開發
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
階段五:爬蟲開發
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
階段六:全棧項目實戰
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:數據分析
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
階段八:人工智慧
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、圖形識別、無人機開發、無人駕駛等。
階段九:自動化運維&開發
Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
階段十:高並發語言GO開發
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。
㈩ 如何學習網路編程
具體到編程,用java來實現網路編程是很容易的,可以作為網路編程的入門。使用C++和winsock相對復雜一些。
總之看實際需要了。
你好初學網路編程者可以從以下幾個步驟開展:
1)下載一個可以互動的學習工具,通過這個與這個工具互動,我們可以及時的學到每個api的結果如果。
對於有c/c++或java基礎的朋友通過一兩個禮拜的時間就可以上手了,另外個人建議初學者可以學習dive into python。
2)掌握網路編程中會用到的幾個基本概念和內涵,比如IP地址,port號,socket等
3)記住和消化網路編程C/S模型,把server和client端編程的常用模式理解和消化
4)花幾天時間學習socket api集,api集可以分為下面幾大類:創建 socket bind listen accept收發 read/recv/recvfrom write/send/sendto關閉 close shutdown參數 getsockopt/setsockopt地址 gethostbyaddr getaddrbyhost,...在學習這些api時候,可以先關注在函數功能,參數意義上
5)結合python互動平台,實踐socket api的用法,比如socket函數怎麼使用,bind怎麼使用等等。在互動過程中,我們可以變換參數,看看調用結果如何。比如,創建一個tcp socket的語法如下:socket(AF_INET,SOCK_STREAM)創建一個udp socket的語法如下:socket(AF_INET,SOCK_DGRAM)
6)學習socket server端編程實現簡單規約比如echo,time等,然後通過cmd中的telnet來測試。
7)學習I/O模型,比如阻塞、非阻塞和反應式(select,poll,WaitForMultipleObject)等
8)學習Richard Stevens的《Unix網路編程》,深入學習其中的api原理以及服務端設計原理,並通過代碼編寫。
9)下載高性能網路編程框架twisted,筆者強烈推薦,它將使你的網路編程效率提高10倍以上。
10)學習設計模式、操作系統知識比如線程、進程、同步等。
要想真正掌握計算機技術,並在IT行業里干出一番事業來,有所作為,具有一定的編程能力是一個基本條件和要求。打好基礎學編程要具備一定的基礎,總結之有以下幾方面:
(1)數學基礎 從計算機發展和應用的歷史來看計算機的數學模型和體系結構等都是有數學家提出的,最早的計算機也是為數值計算而設計的。因此,要學好計算機就要有一定的數學基礎,出學者有高中水平就差不多了。
(2)邏輯思維能力的培養 學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要想成為一名優秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反復的實踐、觀察、分析、比較、總結中逐漸地積累。因此在學習編程過程中,我們不必等到什麼都完全明白了才去動手實踐,只要明白了大概,就要敢於自己動手去體驗。誰都有第一次。
有些問題只有通過實踐後才能明白,也只有實踐才能把老師和書上的知識變成自己的,高手都是這樣成材的。