spring源码也有让人费解的地方

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012817635/article/details/85877013

不是很理解这句话

Object exposedObject = bean;

后面对exposedObject直接覆盖掉了,为毛还要在这里先赋值呢?

pring 5.1.3的源码,我看之前不是这么写的,这么写很费解啊 

---------------------

这里我比较迷的是,除了public,还有哪种情况是non-public access呢?

展开阅读全文

一个让人费解的C++ 执行流程问题

07-27

下面这段代码是EVC中编译通过的,但是执行的时候却出现了很奇怪的问题,比如说我要测试几个试验项目,按下面的流程来说是应该都走完每个试验项目了,但是现在却只是走了一个,而且后面的都不执行了。。。。具体看下面注释说明rn while(cur != NULL )rn rn switch(cur->ProTestType)rn rn case 0: rn case 1:rn case 2: rn case 3:rn TestFunctionEx_0123( cur , curRol );rn break;rn case 4:rn case 5:rn TestFunctionEx_45( cur ,curRol );rn break;rn //省略部分代码,一些跟上面一样判断试验项目的序号然后调用相关测试函数rn rn cur = cur->Next; //指向单链表下一个试验项目rnrnrn//这里有些代码rn//结束试验过程rn=================================================================================rn问题是:rn选择多个试验项目后,只执行一个试验项目(头节点上存储的试验项目),而后的都没有被执行包括上面while循环中的 cur = cur->Next都没有被执行到,不知道是不是我的switch存在问题,貌似没跳出switch一样,设置了很多调试语句发现while后的代码没有被执行,不管是几个试验项目,而且cur=cur->Next也不会被执行到,很纠结~ 按VC6.0编译运行后结果应该来说是一只执行下去,知道链表节点为空的rnrn请大牛制定哈,这段代码是从VC6.0中移植到EVC的(CE下执行),PC上可以正常执行但到了EVC中编译后在CE上执行就出现这种问题了 论坛

让人费解的多线程概念----念念碎

09-02

在windows下进行多线程编程,给人的第一印象就是高级,很好很强大。然后呢?然后就是让人琢磨不透,蛋疼费解,一头乱麻。多线程编程就好比登山,爬山之前,大家满心期待无限风光在险峰!可实际呢,大部分人都累死在半山腰上,我现在就是半死不活,等待神仙下凡。rnrn1、先从简单的说起,要是没有操作系统的帮忙,要同时运行两个函数,怎么做到?我很苦恼,微机原理明摆地说CPU只有一个IP指令寄存器指向下一条要执行的指令的内存地址。按照这种思路,两个没什么逻辑关系的函数要并行在一个CPU内核中是无法做到的,那怎么办? 我们可以把CPU的寄存器组统统保存在内存中,隔一小段时间,又将其恢复执行,如此往复,看上去就是两个函数都在运行,目的达到了。这就是操作系统线程调度的机制。问题来了,为什么操作系统可以保证上下文切换的时候不被抢占?rnrn2、临界域的问题,两个函数在并行着,没执行一会,被人抢占了,两个线程都往同一块内存地址写内容,数据完整性和一致性很难保证,于是我们必须额外开辟一块内存来对这块需要保护的内存进行保护。这块额外开辟的内存我们就叫它临界区吧。问题来了,额外开辟的临界域本质上也是共享的内存,线程调度如何保证对它的完整性?rnrn3、最让人纠结的是等待、唤醒机制。看起来,普通人都能理解,但是要让我们自己动手在现有CPU架构和内存模型中实现又是另外一回事。我能想到的就是线程一切换,线程函数就会先对一块全局数据里的某些标志位不断的轮询,如果条件不满足,就一直忙等待。就好比我们的函数中最先出现的语句就是EnterSemaphore()神马的。还有更妙的妙招吗?rnrn4、异步调用。这个理解起来好像也不难,关键是我都从函数中返回了,为什么函数还可以继续执行,这是为什么呢?rnrn单线程和多线程就好比男人和女人。粗枝大叶的的我在花枝招展的女人面前一筹莫展,欢迎各路高手畅所欲言! 论坛

关于使用InternetCrackUrl(...)分解url代码让人费解地方,前辈请进

12-12

关于使用InternetCrackUrl(...)分解url的代码小弟有些地方看不懂,请教各位前辈。谢谢您的帮助:)rnrn完整代码如下:rn[code=c]void CrackUrl()rnrn URL_COMPONENTS uc;rn char Scheme[1000];rn char HostName[1000];rn char UserName[1000];rn char Password[1000];rn char UrlPath[1000];rn char ExtraInfo[1000];rnrn uc.dwStructSize = sizeof(uc);rn uc.lpszScheme = Scheme;rn uc.lpszHostName = HostName;rn uc.lpszUserName = UserName;rn uc.lpszPassword = Password;rn uc.lpszUrlPath = UrlPath;rn uc.lpszExtraInfo = ExtraInfo;rnrn uc.dwSchemeLength = 1000;rn uc.dwHostNameLength = 1000;rn uc.dwUserNameLength = 1000;rn uc.dwPasswordLength = 1000;rn uc.dwUrlPathLength = 1000;rn uc.dwExtraInfoLength = 1000;rnrn InternetCrackUrl("http://hoge:henyo@www.cool.ne.jp:8080/masapico/api_sample.index", 0, 0, &uc);rnrn printf("scheme: '%s'\n", uc.lpszScheme);rn printf("host name: '%s'\n", uc.lpszHostName);rn printf("port: %d\n", uc.nPort);rn printf("user name: '%s'\n", uc.lpszUserName);rn printf("password: '%s'\n", uc.lpszPassword);rn printf("url path: '%s'\n", uc.lpszUrlPath);rn printf("extra info: '%s'\n", uc.lpszExtraInfo);rnrn printf("scheme type: ");rn switch(uc.nScheme)rn rn case INTERNET_SCHEME_PARTIAL:rn printf("partial.\n");rn break;rn case INTERNET_SCHEME_UNKNOWN:rn printf("unknown.\n");rn break;rn case INTERNET_SCHEME_DEFAULT:rn printf("default.\n");rn break;rn case INTERNET_SCHEME_FTP:rn printf("FTP.\n");rn break;rn case INTERNET_SCHEME_GOPHER:rn printf("GOPHER.\n");rn break;rn case INTERNET_SCHEME_HTTP:rn printf("HTTP.\n");rn break;rn case INTERNET_SCHEME_HTTPS:rn printf("HTTPS.\n");rn break;rn case INTERNET_SCHEME_FILE:rn printf("FILE.\n");rn break;rn case INTERNET_SCHEME_NEWS:rn printf("NEWS.\n");rn break;rn case INTERNET_SCHEME_MAILTO:rn printf("MAILTO.\n");rn break;rn default:rn printf("%d\n", uc.nScheme);rn rn[/code]rnrn其中以下部分代码的含义很不懂:rn [code=c]rn uc.lpszScheme = Scheme;rn uc.lpszHostName = HostName;rn uc.lpszUserName = UserName;rn uc.lpszPassword = Password;rn uc.lpszUrlPath = UrlPath;rn uc.lpszExtraInfo = ExtraInfo;[/code]rnrn用InternetCrackUrl(...)分解url以后,既然可以通过uc.lpszHostName的方式访问“主机名”,为什么还要:rnrn uc.lpszHostName = HostName;rn uc.lpszUserName = UserName;rn uc.lpszPassword = Password;rn uc.lpszUrlPath = UrlPath;rn uc.lpszExtraInfo = ExtraInfo;rnrn这样做呢?有什么意义呢?是不是以上这5句代码不写对程序也没什么影响呀?很不解,请各位前辈多多指点,再次感谢各位的帮助。 论坛

没有更多推荐了,返回首页