1.委托揭秘 定义一个委托,编译器会生成一个继承自System.MulticastDelegate的类,所有的委托都继承自该类. 由于委托是类,所以能定义类的地方,都能定义委托. 委托内部有一个target字段,指向调用的实例,如果是静态方法,为null;_methodInfo指向调用的方法.invocationList包含所有定义的委托链. 在调用委托时,实际调用的是委托实例的Invoke方法.如:delegate a,a(value),实际是a.Invoke(value).  a实际是一个类…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第十八章:一元运算符 下一章 "全栈2019"Java第十九章:关系运算符.条件运算符和三元运算符 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&…
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分,我将在其中部署Microblog到Docker容器平台. 在第十七章中,你了解了传统部署,使用这种部署方式,你必须关注服务器配置的每个细节. 然后在第十八章我带你到另一个极端——Heroku ,这是一项完全掌控配置和部署任务的服务,使你能够全神贯注于应用程序. 在本章中,你将学习基于容器(尤其是在…
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userg…
第十八章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点. 一.准备开始 1.内和调试需要什么 一个bug(大部分bug通常都不是行为可靠而且定义明确的) 一个藏匿bug的内核版本(知道bug最早出现在哪个内核版本中) 相关内核代码的知识和运气(加深理解周围的代码) 如果错误总是能够重现的话,消除错误的机会会很大. 二.内核中的bug bug发作时可能的症状: 明白无误的错误代码(比如,没有把正确的值存放在恰当的位置) 同步时发生的错误(比如共享变量锁定不当) 错误地管理硬件(比如…
第十八章 调试 [学习时间:1小时 总结博客时间:1小时15分] [学习内容:出现bug的原因.内核调试器gdb.使用Git进行二分查找] 内核级开发的调试工作远比用户级开发艰难,它带来的风险比用户级别更高. 一.准备开始 1. 准备工作需要: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在用户级程序中bug常常表现得清晰(执行foo就会让程序立即产生核心信息转储)但是内核中的bug表现得不像用户级程序中那么清晰.因为内核.用户以及硬件之间的交互很微妙. 3. 调试的主…
第十八章    调试 18.1 准备开始 1.在用户级的程序里,bug表现比较直接:在内核中却不清晰. 2.内核级开发的调试工作远比用户级开发艰难的多. 3.准备工作需要的是: (1)一个bug (2)一个藏匿bug的内核版本 (3)相关内核代码的知识和运气 18.2 内核中的bug 1.内核中的bug多种多样. 2.引用空指针会产生一个oops:垃圾数据会导致系统崩溃. 3.定时限制和竞争条件都允许多个线程在内核中同时运行产生的结果. 18.3 通过打印来调试 一.健壮性 1.健壮性——在任何…
第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息 就有点像Wireshark那个工具一样,只不过是命令行的,这里不作详细分析,直接给个实例: 每行输出格式如下:  源 > 目的:标志 这里的标志就是TCP首部中6个标志比特中的4个,下面是标志中5个字符的含义: ack和urg将做特殊显示. 字段ack表示确认序号,只有在首部中ack标志…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第二十八章:公平锁与非公平锁详解 下一章 "全栈2019"Java多线程第二十九章:可重入锁与不可重入锁详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"J…
第十八章 调试 内核级开发的调试工作远比用户级开发艰难,它带来的风险比用户级别更高. 一.准备开始 1. 准备工作需要: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在用户级程序中bug常常表现得清晰(执行foo就会让程序立即产生核心信息转储)但是内核中的bug表现得不像用户级程序中那么清晰.因为内核.用户以及硬件之间的交互很微妙. 3. 调试的主要思想是让bug重现,但是在内核中这并不是很容易做到的.因此,在跟踪bug的时候,掌握的信息越多越好. 二.内核中的bug…