2018.8.5 复习笔记
2018.8.5 復習筆記
1,"a" + "b" + 3 strcat
double d = 3
object obj = d
int i = (int)obj --異常
測試下裝箱拆箱的時間,似乎很慢
拆裝箱的本質??
看IL代碼
"abbcd"是個引用?
s = "a" 有裝箱嗎?
s + "b" 有裝箱嗎?
where T :struct
where R :class
where V : ICompareable
where w : CAnimal
where x : class, new()
new必須是最后一個
IEnumerator實現枚舉
顯式實現
繼承兩個接口,中有同名方法
類型推斷
hashtable dirtionary
yield方式的
IEnumerator
IEnumerable
IEnumerator<T>泛型實現 ?
------------------------------
索引器重載: 多維數組,string類型索引
可為空類型,object ?
什么叫類型安全?
委托接收實例的方法: dfun = obj.func
多播委托的加減順序?
委托列表為空時可以繼續減,但調用異常
線程t1調用t2.abort終止t2
t2在自己的線程中使用異常捕獲,并輸出t1傳過來的信息
當前路徑用 . 表示
GetType 可以用類名調用 ?
GetType("System.string") ?
---------------------
用UDP 做聊天室
一個電腦可能有多個IP
UDP:收數據需要綁定IP和端口,
只發送數據不需要綁定IP和端口
字符串轉成字節數組后
字節數組如何轉字符串
byte[] data
tcp.Receive(data)
這個數組應該多大?
底層數據包粘包后最大多大?
UDP的雙端通訊可以使用TCP同樣的思路
發送端自己不需要指定I自己的IP和端口
而只指定要連接的服務器的IP和端口
服務端接收連接后(TCP)
對UDP而言就是服務器REVICE后,會有一個IPENDPOINT返回,
這就是客戶端的IP和端口,利用這個就可以與客戶端通訊
c++線程
----------------------
unsigned int i = 0
int j = 1
i - 1 ?
-2147483648 < 2147483647 ? false
int i = -2147483648
i <2147483648 ? true
-2147483648 - 1 < 2147483648 ?
sum(int a[], unsigned len){
int i, sum = 0;
for(i=0; i<=len-1; i++)
sum += a[i];
return sum;
}
a[10] = {0};
sum(a, 0) ;
int x = 65536
int y = x * x;
x> y 等價于 -x < -y ?
x = -2147483648時不成立
main.c
int d= 100;
int x = 200;
int main(){
p1();
printf("d=%d, x]%d\n", d, x)
return 0;
}
p1.c
double d;
void p1(){
d = 1.0;
}
打印結果:
d=0, x=1072693248 ?
int copy_array(int* array, int coutn){
int i;
int *myarray = (int*)malloc(count*sizeof(int))
if(myarray == null)
return -1;
for(int i=0; i<count; i++)
myarray[i] = array[i]
}
int a = 0x80000000
int b = a/-1;
printf("%d\n", b);
int a = 0x80000000
int b = -1;
int c = a/b;
printf("%d\n", c);
除法錯異常? 溢出
main(){
double a = 10;
printf("a = %d\n", a);
}
double func(int i){
volatile double d[1] = {3.14}
volatile long int a[2];
a[i] = 1073741824;
return d[0];
}
func(0)
func(1)
func(2)
func(3)
func(4)
二維數據間拷貝
行優先拷貝與列優先拷貝
double f(int x){
return 1.0/x;
}
void main(){
double a, b;
int i;
a = f(10);
b = f(10);
c = f(10); //試著去除這句看有什么不同
i = a == b;
printf("%d\n", i);
}
int main(int argc, char*argv[]){
int a= 10;
double *p=(double*)&a;
printf("%f\n", *p) //0.000000
printf("%f\n", (double(a)));//10.000000
return 0;
}
new()的多重重載使用
new 與 new()的區別
--------------------------
x86 包含 i386 ,i386 僅僅是 x86 的一部分。
x86 這里的 x 本來就是一個未知數性質的,他可以是 3、4、5、6、7 。
x86 是 Intel 建立起來的 CPU 架構。
他的 8086、8088、80286、80386、80486、Pentium 、Pentium Pro 、Pentium MMX ,Pentium 2 ,還有后面的 P3、P4 、PD 、Core 全系列,Xeon 的 x86 系列。以及 AMD 的 Intel 架構兼容全系列(樓主的 AMD 肯定也是啦,非 x86 架構如果樓主作為桌面計算機用上了,肯定不會來這里問這個問題了)。當然還有最近重新崛起的 VIA 的 C7 系列。
他們都是 x86 架構。
更多的 x86 代表的是 32 位的 Intel CPU 架構體系。
但其中分成很多代。i386 就是 80386 的那代 CPU 的標準,主要是支持 32 位的保護模式和實模式兩種工作環境。這個功能很好很強大,一直沿用至今,而且系統對于這個功能是必須支持的。386 之后的 cpu 是完全兼容 i386 體系的。
i486 加入了新的一個功能,i586 (奔騰 1 代系列)又加入了新功能,i686 (奔騰 Pro 系列以后)又加入了新的功能體系。
i386 的軟件可以運行在 i686 系統,但是 i686 的軟件不能運行在之前的架構上。
舊 CPU 不能運行新軟件主要是不能使用新的特性導致不能運行,但是舊的架構軟件在新的架構上運行,僅僅是不能用新的功能體系,運行效率是沒有減少的。
而且這個功能架構主要是 Linux 內核在使用。
所以樓主不要考慮 i386 和 x86 的關系。只要看到 i 什么 86 ,基本都能用。
如果有 i686 ,樓主的 CPU 只要不是 K6 系列,而是 Athlon 系列,最好選擇 i686 ,但如果只有 i386 的,樓主注意安裝后看看你的內核是不是 i686 體系的,如果是,性能不受影響。
題外:
i786 是一個隱藏的新體系,聽說只能用在 P4 以后的 Intel CPU 上面。但是很多軟件沒有針對這個架構編寫,所以除非自己基于 i786 編譯,不然網上沒有 i786 的軟件。
這里還要說 x86_64 體系,這個是 AMD 提出并且最先使用的 x86 新的架構體系。他把 32 位的 i686 架構體系,擴展為 64 位。
但是因為變動很大的原因,64 位的系統軟件要兼容 32 位的軟件,需要在內核里打開支持,并且安裝 32 位的兼容庫才行。其實如果你有源代碼,32位系統的源代碼基本上可以直接在 64 位的系統上面編譯成為 64 位架構可運行的軟件(新的技術還是用不上)。
同樣 64 位的 CPU 兼容上一代的 i686 架構,i686 CPU 不支持 x86_64 的軟件。
如果樓主的 AMD CPU 是 Athlon 64 及其以后的 cpu 可以裝 x86_64 的系統玩玩,不過注意,很多 32 位特有的軟件,而且沒有源代碼的要么不能用,要么需要 32 位兼容庫,Flash 的瀏覽器插件就是一個例子。64位的 Firefox 需要 32 位兼容庫才能借助 Flash 插件顯示 Flash 動畫。Adobe 沒有放出 64 位的插件,也沒有提供源代碼。
AMD 總是有新的點子,新的技術,卻總是拼不過 Intel 的緩慢的技術革新。
------------------
10000x3 與 3x10000的效率差別?
UI適應分辨率
https://blog.csdn.net/wkhabc/article/details/52527202
智能指針 不能用于數組??? 智能指針的使用及reset 注意事項?? p1 = p2 p1 = new(p2) p1.reset(p2) p1.reset(){A*p = new A()shared_ptr<A> ptr(p);shared_ptr<A> ptr2;ptr2.reset(p); }int ary[] = {1, 2, 3, 4, 5} for(int& e:ary)e*=10;struct A{int n; A(int i):n(i){}}vector<A> st(ary, ary +5)//類型轉換構造函數?
posted on 2018-08-05 08:18 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的2018.8.5 复习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#抽象类与接口的区别【转】
- 下一篇: 【转】Unity Scene场景自定义坐