¸üÐÂʱ¼ä:2016Äê03ÔÂ02ÈÕ17ʱ20·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
¡¡¡¡
¡¡¡¡![]()
![]()
¡¡¡¡1¡¢ÍøÂç¶àÏß³Ì(¡ï¡ï¡ï)
¡¡¡¡Ò»¡¢¶àÏ̵߳ĵײãʵÏÖ
¡¡¡¡1> Ê×ÏȸãÇå³þʲôÊÇÏ̡߳¢Ê²Ã´ÊǶàÏß³Ì
¡¡¡¡2> MachÊǵÚÒ»¸öÒÔ¶àÏ̷߳½Ê½´¦ÀíÈÎÎñµÄϵͳ£¬Òò´Ë¶àÏ̵߳ĵײãʵÏÖ»úÖÆÊÇ»ùÓÚMachµÄÏß³Ì
¡¡¡¡3> ¿ª·¢ÖкÜÉÙÓÃMach¼¶µÄỊ̈߳¬ÒòΪMach¼¶µÄÏß³ÌûÓÐÌṩ¶àÏ̵߳Ļù±¾ÌØÕ÷£¬Ïß³ÌÖ®¼äÊǶÀÁ¢µÄ
¡¡¡¡4> ¿ª·¢ÖÐʵÏÖ¶àÏ̵߳ķ½°¸
¡¡¡¡• CÓïÑÔµÄPOSIX½Ó¿Ú£º#include?
¡¡¡¡• OCµÄNSThread?
¡¡¡¡• CÓïÑÔµÄGCD½Ó¿Ú(ÐÔÄÜ×îºÃ£¬´úÂë¸ü¾«¼ò)?
¡¡¡¡OCµÄNSOperationºÍNSOperationQueue(»ùÓÚGCD)
¡¡¡¡¶þ¡¢Ï̼߳äÔõôͨÐÅ£¿
¡¡¡¡http://blog.csdn.net/bawangxx/article/details/50546314
¡¡¡¡Èý¡¢ÍøÂçͼƬ´¦ÀíÎÊÌâÖÐÔõô½â¾öÒ»¸öÏàͬµÄÍøÂçµØÖ·ÖØ¸´ÇëÇóµÄÎÊÌ⣿
¡¡¡¡ÀûÓÃ×Öµä(ͼƬµØÖ·Îªkey£¬ÏÂÔØ²Ù×÷Ϊvalue)
¡¡¡¡ËÄ¡¢ÓÃNSOpertionºÍNSOpertionQueue´¦ÀíA,B,CÈý¸öÏß³Ì,ÒªÇóÖ´ÐÐÍêA,Bºó²ÅÄÜÖ´ÐÐC,Ôõô×ö£¿
¡¡¡¡// ´´½¨¶ÓÁÐ
¡¡¡¡NSOperationQueue *queue = [[NSOperationQueue alloc] init];
¡¡¡¡// ´´½¨3¸ö²Ù×÷
¡¡¡¡NSOperation *a = [NSBlockOperation blockOperationWithBlock:^{
¡¡¡¡NSLog(@”operationA---“);
¡¡¡¡}];
¡¡¡¡NSOperation *b = [NSBlockOperation blockOperationWithBlock:^{
¡¡¡¡NSLog(@”operationB---“);
¡¡¡¡}];
¡¡¡¡NSOperation *c = [NSBlockOperation blockOperationWithBlock:^{
¡¡¡¡NSLog(@”operationC---“);
¡¡¡¡}];
¡¡¡¡// Ìí¼ÓÒÀÀµ
¡¡¡¡[c addDependency:a];
¡¡¡¡[c addDependency:b];
¡¡¡¡// Ö´ÐвÙ×÷
¡¡¡¡[queue addOperation:a];
¡¡¡¡[queue addOperation:b];
¡¡¡¡[queue addOperation:c];
¡¡¡¡Îå¡¢ÁоÙcocoaÖг£¼û¶Ô¼¸ÖÖ¶àÏ̵߳ÄʵÏÖ£¬²¢Ì¸Ì¸¶àḬ̈߳²È«µÄ¼¸ÖÖ½â¾ö°ì·¨¼°¶àḬ̈߳²È«Ôõô¿ØÖÆ£¿
¡¡¡¡1> Ö»ÔÚÖ÷Ïß³ÌˢзÃÎÊUI
¡¡¡¡2> Èç¹ûÒª·ÀÖ¹×ÊÔ´ÇÀ¶á£¬µÃÓÃsynchronized½øÐмÓËø±£»¤
¡¡¡¡3> Èç¹ûÒì²½²Ù×÷Òª±£Ö¤Ḭ̈߳²È«µÈÎÊÌâ, ¾¡Á¿Ê¹ÓÃGCD(ÓÐЩº¯ÊýĬÈϾÍÊǰ²È«µÄ)
¡¡¡¡Áù¡¢GCDÄÚ²¿ÔõôʵÏÖ?
¡¡¡¡1> iOSºÍOS XµÄºËÐÄÊÇXNUÄںˣ¬GCDÊÇ»ùÓÚXNUÄÚºËʵÏÖµÄ
¡¡¡¡2> GCDµÄAPIÈ«²¿ÔÚlibdispatch¿âÖÐ
¡¡¡¡3> GCDµÄµ×²ãʵÏÖÖ÷ÒªÓÐDispatch QueueºÍDispatch Source
¡¡¡¡Dispatch Queue £º¹ÜÀíblock(²Ù×÷) ?
¡¡¡¡DispatchSource £º´¦Àíʼþ
¡¡¡¡Æß¡¢ÄãÓùýNSOperationQueueô?Èç¹ûÓùý»òÕßÁ˽âµÄ»°£¬ÄãΪʲôҪʹÓÃNSOperationQueue£¬ÊµÏÖÁËʲô?ÇëÃèÊöËüºÍGCDµÄÇø±ðºÍÀàËÆµÄµØ·½(Ìáʾ£º¿ÉÒÔ´ÓÁ½ÕßµÄʵÏÖ»úÖÆºÍÊÊÓ÷¶Î§À´ÃèÊö)
¡¡¡¡1> GCDÊÇ´¿CÓïÑÔµÄAPI£¬NSOperationQueueÊÇ»ùÓÚGCDµÄOC°æ±¾·â×°
¡¡¡¡2> GCDÖ»Ö§³ÖFIFOµÄ¶ÓÁУ¬NSOperationQueue¿ÉÒԺܷ½±ãµØµ÷ÕûÖ´ÐÐ˳Ðò¡¢ÉèÖÃ×î´ó²¢·¢ÊýÁ¿
¡¡¡¡3> NSOperationQueue¿ÉÒÔÔÚÇáËÉÔÚOperation¼äÉèÖÃÒÀÀµ¹ØÏµ£¬¶øGCDÐèҪдºÜ¶àµÄ´úÂë²ÅÄÜʵÏÖ
¡¡¡¡4> NSOperationQueueÖ§³ÖKVO£¬¿ÉÒÔ¼à²âoperationÊÇ·ñÕýÔÚÖ´ÐÐ(isExecuted)¡¢ÊÇ·ñ½áÊø(isFinished)£¬ÊÇ·ñÈ¡Ïû(isCanceld)
¡¡¡¡5> GCDµÄÖ´ÐÐËٶȱÈNSOperationQueue¿ì
¡¡¡¡ÈÎÎñÖ®¼ä²»Ì«»¥ÏàÒÀÀµ£ºGCD
¡¡¡¡ÈÎÎñÖ®¼äÓÐÒÀÀµ\»òÕßÒª¼àÌýÈÎÎñµÄÖ´ÐÐÇé¿ö£ºNSOperationQueue
¡¡¡¡°Ë¡¢ ¼ÈÈ»Ìáµ½GCD£¬ÄÇôÎÊÒ»ÏÂÔÚʹÓÃGCDÒÔ¼°blockʱҪעÒâЩʲô?ËüÃÇÁ½ÊÇÒ»»ØÊ¶ùô?blockÔÚARCÖкʹ«Í³µÄMRCÖеÄÐÐΪºÍÓ÷¨ÓÐûÓÐÊ²Ã´Çø±ð£¬ÐèҪעÒâЩʲô?
¡¡¡¡BlockµÄʹÓÃ×¢Ò⣺
¡¡¡¡1. blockµÄÄÚ´æ¹ÜÀí?
¡¡¡¡2. ·Àֹѻ·retian?
¡¡¡¡·ÇARC(MRC)£º__block?
¡¡¡¡ARC£º__weak\__unsafe_unretained
¡¡¡¡¾Å¡¢ÔÚÒì²½Ïß³ÌÖÐÏÂÔØºÜ¶àͼƬ,Èç¹ûʧ°ÜÁË,¸ÃÈçºÎ´¦Àí?Çë½áºÏRunLoopÀ´Ì¸Ì¸½â¾ö·½°¸.(Ìáʾ:ÔÚÒì²½Ïß³ÌÖÐÆô¶¯Ò»¸öRunLoopÖØÐ·¢ËÍÍøÂçÇëÇó,ÏÂÔØÍ¼Æ¬)
¡¡¡¡1> ÖØÐÂÏÂÔØÍ¼Æ¬
¡¡¡¡2> ÏÂÔØÍê±Ï, ÀûÓÃRunLoopµÄÊäÈëÔ´»Øµ½Ö÷Ïß³ÌË¢ÐÂUIImageVIUew
¡¡¡¡Ê®¡¢SocketµÄʵÏÖÔÀí¼°SocketÖ®¼äÊÇÈçºÎͨÐŵÄ
¡¡¡¡http://blog.csdn.net/jiajia4336/article/details/8798421
¡¡¡¡http://no001.blog.51cto.com/1142339/555344/
¡¡¡¡Ê®Ò»¡¢ httpÐÒéµÄʵÏÖ
¡¡¡¡http://www.blogjava.net/crespochen/archive/2008/10/22/235948.html
¡¡¡¡Ê®¶þ¡¢Ê²Ã´ÊÇTCPÁ¬½ÓµÄÈý´ÎÎÕÊÖ
¡¡¡¡µÚÒ»´ÎÎÕÊÖ£º¿Í»§¶Ë·¢ËÍsyn°ü(syn=j)µ½·þÎñÆ÷£¬²¢½øÈëSYN_SEND״̬£¬µÈ´ý·þÎñÆ÷È·ÈÏ£»
¡¡¡¡µÚ¶þ´ÎÎÕÊÖ£º·þÎñÆ÷ÊÕµ½syn°ü£¬±ØÐëÈ·ÈϿͻ§µÄSYN(ack=j+1)£¬Í¬Ê±×Ô¼ºÒ²·¢ËÍÒ»¸öSYN°ü(syn=k)£¬¼´SYN+ACK°ü£¬´Ëʱ·þÎñÆ÷½øÈëSYN_RECV״̬£»
¡¡¡¡µÚÈý´ÎÎÕÊÖ£º¿Í»§¶ËÊÕµ½·þÎñÆ÷µÄSYN+ACK°ü£¬Ïò·þÎñÆ÷·¢ËÍÈ·ÈϰüACK(ack=k+1)£¬´Ë°ü·¢ËÍÍê±Ï£¬¿Í»§¶ËºÍ·þÎñÆ÷½øÈëESTABLISHED״̬£¬Íê³ÉÈý´ÎÎÕÊÖ¡£
¡¡¡¡ÎÕÊÖ¹ý³ÌÖд«Ë͵İüÀï²»°üº¬Êý¾Ý£¬Èý´ÎÎÕÊÖÍê±Ïºó£¬¿Í»§¶ËÓë·þÎñÆ÷²ÅÕýʽ¿ªÊ¼´«ËÍÊý¾Ý¡£ÀíÏë״̬Ï£¬TCPÁ¬½ÓÒ»µ©½¨Á¢£¬ÔÚͨÐÅË«·½ÖеÄÈκÎÒ»·½Ö÷¶¯¹Ø±ÕÁ¬½Ó֮ǰ£¬TCP Á¬½Ó¶¼½«±»Ò»Ö±±£³ÖÏÂÈ¥¡£¶Ï¿ªÁ¬½Óʱ·þÎñÆ÷ºÍ¿Í»§¶Ë¾ù¿ÉÒÔÖ÷¶¯·¢Æð¶Ï¿ªTCPÁ¬½ÓµÄÇëÇ󣬶Ͽª¹ý³ÌÐèÒª¾¹ý“ËÄ´ÎÎÕÊÖ”(¹ý³Ì¾Í²»Ï¸Ð´ÁË£¬¾ÍÊÇ·þÎñÆ÷ºÍ¿Í»§¶Ë½»»¥£¬×îÖÕÈ·¶¨¶Ï¿ª)
¡¡¡¡Ê®Èý¡¢httpÐÒéµÄ×é³ÉºÍÌØÐÔ
¡¡¡¡×é³É£ºhttpÇëÇóÓÉÈý²¿·Ö×é³É£¬·Ö±ðÊÇ£ºÇëÇóÐС¢ÏûÏ¢±¨Í·¡¢ÇëÇóÕýÎÄÌØÐÔ£ºHTTPÐÒéµÄÖ÷ÒªÌØµã¿É¸ÅÀ¨ÈçÏ£º1.Ö§³Ö¿Í»§/·þÎñÆ÷ģʽ¡£2.¼òµ¥¿ìËÙ£º¿Í»§Ïò·þÎñÆ÷ÇëÇó·þÎñʱ£¬Ö»Ðè´«ËÍÇëÇó·½·¨ºÍ·¾¶¡£ÇëÇó·½·¨³£ÓõÄÓÐGET¡¢HEAD¡¢POST¡£Ã¿ÖÖ·½·¨¹æ¶¨Á˿ͻ§Óë·þÎñÆ÷ÁªÏµµÄÀàÐͲ»Í¬¡£ÓÉÓÚHTTPÐÒé¼òµ¥£¬Ê¹µÃHTTP·þÎñÆ÷µÄ³ÌÐò¹æÄ£Ð¡£¬Òò¶øÍ¨ÐÅËٶȺܿ졣3.Áé»î£ºHTTPÔÊÐí´«ÊäÈÎÒâÀàÐ͵ÄÊý¾Ý¶ÔÏó¡£ÕýÔÚ´«ÊäµÄÀàÐÍÓÉContent-Type¼ÓÒÔ±ê¼Ç¡£4.ÎÞÁ¬½Ó£ºÎÞÁ¬½ÓµÄº¬ÒåÊÇÏÞÖÆÃ¿´ÎÁ¬½ÓÖ»´¦ÀíÒ»¸öÇëÇó¡£·þÎñÆ÷´¦ÀíÍê¿Í»§µÄÇëÇ󣬲¢ÊÕµ½¿Í»§µÄÓ¦´ðºó£¬¼´¶Ï¿ªÁ¬½Ó¡£²ÉÓÃÕâÖÖ·½Ê½¿ÉÒÔ½ÚÊ¡´«Êäʱ¼ä¡£5.ÎÞ״̬£ºHTTPÐÒéÊÇÎÞ״̬ÐÒé¡£ÎÞ״̬ÊÇÖ¸ÐÒé¶ÔÓÚÊÂÎñ´¦ÀíûÓмÇÒäÄÜÁ¦¡£È±ÉÙ״̬Òâζ×ÅÈç¹ûºóÐø´¦ÀíÐè񻂡̾µÄÐÅÏ¢£¬ÔòËü±ØÐëÖØ´«£¬ÕâÑù¿ÉÄܵ¼ÖÂÿ´ÎÁ¬½Ó´«Ë͵ÄÊý¾ÝÁ¿Ôö´ó¡£ÁíÒ»·½Ã棬ÔÚ·þÎñÆ÷²»ÐèÒªÏÈǰÐÅϢʱËüµÄÓ¦´ð¾Í½Ï¿ì¡£
¡¡¡¡Ê®ËÄ¡¢ÔÚÏîĿʲôʱºòÑ¡ÔñʹÓÃGCD£¬Ê²Ã´Ê±ºòÑ¡ÔñNSOperation?
¡¡¡¡ÏîÄ¿ÖÐʹÓÃNSOperationµÄÓŵãÊÇNSOperationÊǶÔÏ̵߳ĸ߶ȳéÏó£¬ÔÚÏîÄ¿ÖÐʹÓÃËü£¬»áʹÏîÄ¿µÄ³ÌÐò½á¹¹¸üºÃ£¬×ÓÀ໯NSOperationµÄÉè¼ÆË¼Â·£¬ÊǾßÓÐÃæÏò¶ÔÏóµÄÓŵã(¸´Óᢷâ×°)£¬Ê¹µÃʵÏÖÊǶàÏß³ÌÖ§³Ö£¬¶ø½Ó¿Ú¼òµ¥£¬½¨ÒéÔÚ¸´ÔÓÏîÄ¿ÖÐʹÓá£ÏîÄ¿ÖÐʹÓÃGCDµÄÓŵãÊÇGCD±¾Éí·Ç³£¼òµ¥¡¢Ò×Ó㬶ÔÓÚ²»¸´ÔӵĶàÏ̲߳Ù×÷£¬»á½ÚÊ¡´úÂëÁ¿£¬¶øBlock²ÎÊýµÄʹÓ㬻áÊÇ´úÂë¸üΪÒ×¶Á£¬½¨ÒéÔÚ¼òµ¥ÏîÄ¿ÖÐʹÓá£
¡¡¡¡Ê®Îå¡¢OCÖеÄÐÒéºÍjavaÖеĽӿڸÅÄîÓкβ»Í¬?
¡¡¡¡OBCÖеĴúÀíÓÐ2²ãº¬Ò壬¹Ù·½¶¨ÒåΪ formalºÍinformal protocol¡£Ç°ÕߺÍJava½Ó¿ÚÒ»Ñù¡£?informal protocolÖеķ½·¨ÊôÓÚÉè¼ÆÄ£Ê½¿¼ÂÇ·¶³ë£¬²»ÊDZØÐëʵÏֵ쬵«ÊÇÈç¹ûÓÐʵÏÖ£¬¾Í»á¸Ä±äÀàµÄÊôÐÔ¡£?Æäʵ¹ØÓÚÕýʽÐÒ飬Àà±ðºÍ·ÇÕýʽÐÒéÎÒºÜÔçǰѧϰµÄʱºò´óÖ¿´¹ý£¬Ò²Ð´ÔÚÁËѧϰ½Ì³ÌÀï?“·ÇÕýʽÐÒé¸ÅÄîÆäʵ¾ÍÊÇÀà±ðµÄÁíÒ»ÖÖ±í´ï·½Ê½“ÕâÀïÓÐһЩÄã¿ÉÄÜÏ£ÍûʵÏֵķ½·¨£¬Äã¿ÉÒÔʹÓÃËûÃǸüºÃµÄÍê³É¹¤×÷”¡£?Õâ¸öÒâ˼ÊÇ£¬ÕâЩÊÇ¿ÉÑ¡µÄ¡£±ÈÈçÎÒÃÅÒªÒ»¸ö¸üºÃµÄ·½·¨£¬ÎÒÃǾͻáÉêÃ÷Ò»¸öÕâÑùµÄÀà±ðȥʵÏÖ¡£È»ºóÄãÔÚºóÆÚ¿ÉÒÔÖ±½ÓʹÓÃÕâЩ¸üºÃµÄ·½·¨¡£?Õâô¿´£¬×ܾõµÃÀà±ðÕâÍæÒâ¶ùÓеãÏñÐÒéµÄ¿ÉÑ¡ÐÒé¡£"?ÏÖÔÚÀ´¿´£¬ÆäʵprotocalÒѾ¿ªÊ¼¶ÔÁ½Õß¶¼Í³Ò»ºÍ¹æ·¶ÆðÀ´²Ù×÷£¬ÒòΪ×ÊÁÏÖÐ˵“·ÇÕýʽÐÒéʹÓÃinterfaceÐÞÊΓ£¬?ÏÖÔÚÎÒÃÇ¿´µ½ÐÒéÖÐÁ½¸öÐÞÊδʣº“±ØÐëʵÏÖ(@requied)”ºÍ“¿ÉѡʵÏÖ(@optional)”¡£
±±¾©Ð£Çø