5 回答

TA貢獻2012條經驗 獲得超12個贊
在編程的過程中,經常會遇到許多阻塞的函數,好像read和網絡編程時使用的recv,recvfrom函數都是阻塞的函數,當函數不能成功執行的時候,程序就會一直阻塞在這里,無法執行下面的代碼。這是就需要用到非阻塞的編程方式,使用selcet函數就可以實現非阻塞編程。selcet函數是一個輪循函數,即當循環詢問文件節點,可設置超時時間,超時時間到了就跳過代碼繼續往下執行。Select的函數格式:intselect(intmaxfdp,fd_set*readfds,fd_set*writefds,fd_set*errorfds,structtimeval*timeout);select函數有5個參數第一個是所有文件節點的最大值加1,如果我有三個文件節點1、4、6,那第一個參數就為7(6+1)第二個是可讀文件節點集,類型為fd_set。通過FD_ZERO(&readfd);初始化節點集;然后通過FD_SET(fd,&readfd);把需要監聽是否可讀的節點加入節點集第三個是可寫文件節點集中,類型為fd_set。操作方法和第二個參數一樣。第四個參數是檢查節點錯誤集。第五個參數是超時參數,類型為structtimeval,然后可以設置超時時間,分別可設置

TA貢獻1884條經驗 獲得超4個贊
sql的語法就是這樣用的 as也是可以省略的
如select 老列名 新列名 from 表
如果只是一張表 通常直接就select 列名 from 表
起別名經常是多表聯合查詢的情況下用

TA貢獻1825條經驗 獲得超4個贊
as 別名 ,這邊的別名是你查詢出來時顯示的名字,并不是給數據庫中的表改名
as 表名時,可以這樣 select * from 表 a where a.字段=。。。
這樣的話如果表名比較長,不用每次都打一長串,直接用a就可以了
添加回答
舉報