见 codebox/net/qdisk/xmit.log中保存了一份记录 调用关系 sch_direct_xmit --> dev_hard_start_xmit --> xmit_one --> netdev_start_xmit -->__netdev_start_xmit ---> ops->ndo_start_xmit --> e1000_xmit_frame 可以好好看看e1000_xmit_frame函数的实现,这是驱动的代码. 也就是时候从ip_fi…
缓存服务,还未创建完缓存时, 需要更改图层名称.服务名称.数据源位置.mxd名称等.已经创建好的缓存还可以再用吗? 测试后可以, 注意:新服务相对旧服务,符号样式没有改变,切片方案没有变化. 测试步骤. 如下图,某地图文档,发布服务,创建了一部分缓存. 在新发的服务上右键    ->   查看缓存状态,缓存创建了   25.6%. 服务的缓存方案如图所示, 更改了地图文档中的  图层名称.数据源位置.另外发布了服务,相对之前服务使用了新的 服务名称,切片方案相同. 将第一个服务的已经创建的切片拷…
skb_reserve() skb_reserve()在数据缓存区头部预留一定的空间,通常被用来在数据缓存区中插入协议首部或者在某个边界上对齐.它并没有把数据移出或移入数据缓存区,而只是简单地更新了数据缓存区的两个指针-分别指向负载起始和结尾的data和tail指针,图3-15 展示了调用skb_reserve()前后这两个指针的变化. 请注意:skb_reserve()只能用于空的SKB,通常会在分配SKB之后就调用该函数,此时data和tail指针还一同指向数据区的起始位置,如图3-15a所…
安卓开发使用 Gradle 插件管理依赖包确实非常方便,尤其是在解决一些依赖冲突的问题上.比如,重复依赖的问题,具体内容请我之前写的一篇文章: 有关 Android Studio 重复引入包的问题和解决方案 开发中,你可能还会遇到一种情况,就是项目所引用的 AAR .Library 等第三方库所包含的 Manifest 清单文件与主 Module (默认名为 app )中定义的 Manifest 内容合并时发生冲突. 举个例子.比如在项目中引用的某个 Library 的 AndroidManif…
Linux内部的时钟处理机制全面剖析 在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等.所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统的运作方式.本文分析了 Linux 2.6.25 内核的时钟处理机制,首先介绍了在计算机系统中的一些硬件计时器,然后重点介绍了 Linux 操作系统中的硬件时钟和软件时钟的处理过程以及软件时钟的应用.最后对全文进行了总结. ◆1.计算机系统中的计时器 在计算机系统中存在着许多硬件计时器,例如 …
ARP 实现 现在我们介绍一下arp的实现,内核版本2.6.24. [数据结构] 协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关 系都会保存在这个表中,以备下次与邻居通讯时使用, 同时,ARP模块自身也会提供一套相应的机制来更新和维护这个邻居表. struct neigh_table { struct neigh_table *next; //下一个邻居表 int family; //协议簇 int entry_size;//入口长度,也就是一个邻居结构的大小,初始化为…
主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 上一篇blog讲的是send().sendto().sendmsg()和sendmmsg()这些发送函数的系统调用和 Socket层实现,现在来看下它们的TCP层实现. TCP层实现 SOCK_STREAM类socket的TCP层操作函数集实例为tcp_prot,其中使用tcp_sendmsg()来发送数据. struct proto tcp_prot =…
来自:http://abcdxyzk.github.io/blog/2013/09/06/kernel-net-sack/ static int tcp_sacktag_write_queue(struct sock *sk, const struct sk_buff *ack_skb, u32 prior_snd_una, struct tcp_sacktag_state *state) { struct tcp_sock *tp = tcp_sk(sk); //ptr指向的就是SACK选项的…
转载自: http://www.cnhalo.net/2016/08/13/linux-tcp-nagle-cork/ http://abcdxyzk.github.io/blog/2018/07/08/kernel-nodelay_cork/ 糊涂窗口综合症(Silly Windw Syndrome) 发送方: 应用程序产生数据的速度很慢发送1字节需要40B(TCP头和IP头), 发送大量的小包会造成网络拥塞,发送窗口抖动,网络利用率低等特性.当年OTT(over the top)类应用(如微…
udp 发送ip段报文接口ip_append_data ip_append_data 函数主要用来udp 套接字以及raw套接字发送报文的接口.在tcp中发送ack 以及rest段的ip_send_unicast_reply也会调用:其主要作用是将收到的大数据报文拆分成多个等于小于MTU的SKB,为网络层实现ip分片做准备. ip_append_data 在udp tcp raw 套接字以及icmp 都有被调用到,因此复制数据时有时只需要复制传输层负载部分:此函数并不传输数据,只是将数据放在大小…
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户…
在并发编程过程中,我们大部分的焦点都放在如何控制共享变量的访问控制上(代码层面),但是很少人会关注系统硬件及 JVM 底层相关的影响因素.前段时间学习了一个牛X的高性能异步处理框架 Disruptor,它被誉为“最快的消息框架”,其 LMAX 架构能够在一个线程里每秒处理 6百万 订单!在讲到 Disruptor 为什么这么快时,接触到了一个概念——伪共享( false sharing ),其中提到:缓存行上的写竞争是运行在 SMP 系统中并行线程实现可伸缩性最重要的限制因素.由于从代码中很难看…
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方便查看. 学习笔记,纯手工码字,有错别字什么的请指出,觉得好的请点个赞小小的支持下.谢谢亲们. 本篇,我们将探索如何使用HTML5和Canvas API.Canvas API很酷,可以通过它来动态生成和展示图形.图表.图像以及动画. 本篇将使用渲染API(Rendering API)的基本功能来创建…
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 表单身份验证(Forms Authenticat…
前言     在前一篇随笔<大型网站系统架构的演化>中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践.所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去.系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节.实践部分会抽取一些技术做实践,将方法.解决问题过程分享出来. 本文将讲述大型网站中一个重要的要素,性能. 什么是性能…
前面的话 Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关内容 功能 总的来说,缓存有以下四个功能:缓存减少了冗余的数据传输,节省了网络费用:缓解了网络瓶颈的问题,不需要更多的带宽就能够更快地加载页面:降低了对原始服务器的要求,服务器可以更快地响应,避免过载的出现:降低了距离时延,因为从较远的地方加载页面会更慢一些 [冗余的数据传输] 有很多客户端访问一个流行的原始…
在之前的三篇文章中,我们还算简明扼要的学习了asp.net的整个生命周期,我们知道了一个Request进来以后先去ISAPI Filter,发现是asp.net程序后又ASPNET_ISAPI.dll这个ISAPI Extension来进行处理.在ASPNT_ISAPI创建了Worder Process后,在管道中经过HttpModule的处理来到HttpHander的手中. 我们知道P_Handler程序员使用“乾坤大挪移”对页面进行了处理后又通过管道中的HttpModule把response…
1.新的未跟踪文件 新创建的README文件没有进行任何跟踪 $ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track) 新建的…
Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题.Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只能通过程序员自己写代码时避免引入死锁的可能性来解决. 1. Java中导致死锁的原因 Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2永远被阻塞了.导致了死锁.这是最容易理解也是最简单的死锁的形式.但是实际环境中的死锁往往…
一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化底层,其对XenServer的调用必然使用XAPI.真正意义上的XAPI在XenServer中主要提供XenCenter以及资源池中各个XenServer主机的通信的接口. 首先,资源池中的所有XenServer主机的操作请求都是通过XAPI传递给Dom0的,同时在池中的所有XenServer主机间…
1.什么是redis? 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.MongoDB.BerkeleyDB和CouchDB等.由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面仅给出简单的说明:      1). BerkeleyDB是一种极为流行的开源嵌入式数据库,在更多情况下可用于存储引擎,比如BerkeleyDB在被Oracle收购之前曾作为…
1.概况 截至目前,Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0.前者主要有如下几种实现方式:1)社区版本基于Secondary namenode机制来定时备份HDFS metadata元数据信息:2)Avatar在Secondarynamenode的基础上实现了基于NFS共享存储方式的热备方案.3)Backup Node通过提供备用节点同步Namenode中的Matadata数据实现.后者基于NFS或者Jo…
转自:http://book.51cto.com/art/201206/345043.htm <Linux内核源码剖析:TCP/IP实现>本书详细论述了Linux内核2.6.20版本中TCP/IP的实现.书中给出了大量的源代码,通过对源代码的详细注释,帮助读者掌握TCP/IP的实现.本节为大家介绍数据预留和对齐. AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 3.4.4  数据预留和对齐 数据预留和对齐主要由skb_reserve().skb_put().skb_…
转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 英文原文:Introduction to Model-View-Presenter on Android 转载此译文需注明出处: http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 这是一篇观点比较激进的文章,完全否定了MVC模式在安卓开发的中的意义,认为…
Roslyn的PM(程序经理) Bill Chiles,Roslyn使用纯托管代码开发,但性能超过之前使用C++编写的原生实现,这有什么秘诀呢?他最近写了一篇文章叫做<Essential Performance Facts and .NET Framework Tips>里头推荐了一个性能分析工具<Improving Your App's Performance with PerfView>.PerfView能够收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这些程序…
TCPView是一个用来显示系统中所有的TCP和UDP端点(endpoint)列表的Windows程序,包括本地和远程的网络地址,以及TCP连接的状态.在Windows Server 2008.Vista.NT.2000和XP上,TCPView还会显示拥有端点的进程名.TCPView是Windows自带的netstat程序的一个子集,但是信息更加丰富且方便实用.随TCPView一起下载的还有一个功能相同的命令行版本Tcpvcon. Sysinternals网址:http://technet.mi…
mmap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系.实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数.相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享.如下图所示: 由上图可以看出,进程的虚拟地址空间,由多个虚拟内存区域构成.虚拟…
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql Server数据库 . 单就操作过程而言,Sql Server中数据库备份和恢复过程是相当简单的,可以通过Management Studio的图形界面进行操作,也可以使用几句T-SQL语句完成.但要明白备份恢复的整个过程,定制符合系统需求数据库备份方案,却需要知晓数据库的实现原理.备份和恢复是数据库…
参考:http://blog.csdn.net/jackfrued/article/details/44921941 说未经允许不转载,我只好参考了. 1.面向对象的特征有哪些方面? 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类称为父类(超累,基类):得到继承信息的类被称为子类(派生类).继承让变换中的软件系统有了一定的延续性.同…
在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的处理方式和微信提供的接口处理规则类似,也是通过向服务器获得访问令牌(AccessToken),然后传递给每个Web API接口,实现数据的交换处理.本篇随笔主要介绍混合框架中Winform对Web API访问的处理. 1.Web API接入方式介绍 <混合式开发框架>混合了Web API接口访问.…