【计算机网络】可靠传输
1.基本概念
2.三种可靠传输的实现机制
2.1停止-等待协议SW
2.1.1 错误状况
2.1.1.1确认与否认
2.1.1.2 超时重传
2.1.1.3 确认丢失
2.1.1.4 确认迟到
2.1.2 停止-等待协议的信道利用率
2.1.3 总结
2.2 回退N帧协议GBN
2.2.1 无差错情况
2.2.2 累计确认
2.2.3 有差错情况
2.2.4 发送窗口尺寸问题
2.2.5 总结
2.3 选择重传协议SR
1.基本概念
使用差错检测技术
(例如循环冗余校验CRC),接收方的数据链路层用过帧尾中的帧检验序列FCS字段的值就可检测出帧在传输过程中是否产生了误码
(比特错误)。 当产生误码时接收方的数据链路层是否丢弃帧取决于数据链路层向上层提供的服务类型:
不可靠传输服务
:仅仅丢弃有误码的帧 ,其他什么也不做;
可靠传输服务
:想办法实现发送端发送什么,接收端就收到什么 。
一般情况下,有线链路
的误码率比较低,为了减小开销,并不要求数据链路层 向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。 无线链路
易受干扰,误码率比较高,因此要求数据链路层 必须向上层提供可靠 传输服务。 比特差错
只是传输差错中的一种。 从整个计算机网络体系结构来看,传输差错还包括分组丢失
、分组失序
以及分组重复
。 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。 可靠传输服务并不仅局限于数据链路层 ,其他各层均可选择实现可靠传输。(如传输层的UDP和TCP)
因为传输差错并不仅仅局限于数据链路层的比特差错,所以上述定义中传输差错中的称呼为分组。
2.三种可靠传输的实现机制
停止-等待协议SW
回退N帧协议GBN
选择重传协议SR
这三种可靠传输实现机制的基本原理并不仅限于数据链路可以应用到计算机网络体系结构的各层协议中。
2.1停止-等待协议SW
数据分组DATA,确认分组ACK,否认分组NAK
2.1.1 错误状况
2.1.1.1确认与否认
发送方每发送完一个数据后,并不能将该数据分组从缓存中删除,只有收到针对该数据分组的确认分组后,才能将其从缓存中删除(因为此分组可能会出现误码 ) 发送方每发送完一个后,就停止发送下一个数据分组,等待来自接收方的确认分组或否认分组,若收到确认分组,则可继续发送下一个数据分组;若收到否认分组,则重发之前发送的那个数据分组。
2.1.1.2 超时重传
2.1.1.3 确认丢失
因为是回答丢失,数据其实已经传过一遍了,通过序号接收方确定是否为重复分组,如果为重复分组则进行丢弃,并返回确认分组(避免超时重传),发送方收到确认分组后就可以发送下一个分组了。
2.1.1.4 确认迟到
接收方的回答可能会出现迟到状态,当这个时候发送发误认为超时进行超时重传,在他重传后,接收方的回答回应了它的重传操作,同时接收方收到了发送方的重传将其丢弃并返回了确认分组,如下图所示: 为防止遇到这种情况,我们将确认分组也进行编号操作,如下图: 注意,下方的DATA0和上方的DATA0是同一分组,由于下一个分组必须等待上一个分组ack后才能继续传递,所以用序号01确定即可,不需要额外的序号。
小结:
2.1.2 停止-等待协议的信道利用率
图中忽略了接收方对数据分组的处理时延以及发送发对确认分组的处理时延,最下方黑色字体的式子为使用停-等待协议的发送方从发送一个数据分组开始,到可以发送下一个数据分组为止需要耗费的总时间 一般Ta<
当RTT>>TD,信道利用率会非常低
例题
2.1.3 总结
像停止-等待协议SW这种自动发送重传的协议我们称它为自动请求重传
简称为ARQ
2.2 回退N帧协议GBN
回退N帧协议GBN在采用流水线传输发送分组的基础上利用发送窗口限制发送发可连续发送数据分组的个数。(此处是假设采用3比特给分组编序号,并不是值所有的GBN都是只有3bit的分组 )
发送窗口的尺寸记为WT,序号发送窗口内的数据可以连续发送,在窗口外的数据不可以发送,当WT=1,则为停止等待协议,WT的值超过取值范围的上限,则会出现严重错误;
接收窗口的尺寸记为WR,回退N帧协议的Wr只能取1,同停止-等待协议相同,序号落在接收窗口内的数据可以接收,数据落在接收窗口外的数据不能够接收;
2.2.1 无差错情况
发送方将序号落在发送窗口内的0~4号数据分组依次连续发送出去,成功到达接收方,每接收一个,接收窗口就向前滑动一个位置,并给发送发针对所接收分组的确认分组。 当发送方收到确认分组,则可将收到确认的数据分组从缓存中删除; 接收方则将接收到的分组交付给上层处理。
2.2.2 累计确认
下图当接收方接收到序号为0和1的数据分组后给发送方发送一个累计确认ACK1,接收完成2~4后给发送发发送一个累计确认ACK4 若在传输过程中ACK1丢失,则接收方知道,序号为4及之前的数据分组被接收方正确接收了,于是将发送窗口向前滑动5个位置 所以采用累计确认的优点为:
即使确认分组丢失,发送法也可能不必重传
减少接收方开销
减少对网络资源的占用
如果ACK4丢失,则同停止-等待协议中一样有超时重传操作。
2.2.3 有差错情况
五号出现误码,则接收方丢弃该分组 后续到达的四个分组的序号和接收方的接收窗口序号不匹配,接收方同样不能接受他们,将它们丢弃,并对之前按需接收的最后一个数据分组进行确认,也就是发送ACK4 每丢弃一个分组就发送一个ACK4 发送发这次发送了5~1号帧,由于5号帧出现误码,后面的帧都没有收到,所以这次直接重传这5帧; 如果7号帧出现误码,则这次要重传7~1号帧
2.2.4 发送窗口尺寸问题
若Wt超过取值范围,例如Wt=8,会出现分组重复传输差错。
例题
2.2.5 总结
2.3 选择重传协议SR
不同于GBN的是,SR中发送窗口的尺寸是在二的三减一次方以内(而不是二的三次方减一),且SR的接收窗口的取值同发送窗口一致。 发送方将发送窗口内数据分组依次连续发出,它们经过互联网到达接收方,但其中二号数据丢失,只要序号落入接收窗口内且无误码的数据分组,接收方都会接收(接收方机能接收按序到达无误码的,又能接收失序到达无误码的 ) 接收方接收0、1号分组并发送确认分组,接收窗口向前滑动; 接收方接收3号分组并发送3号确认分组,但接收窗口不能向前滑动,因为3号数据分组是未按序到达的数据分组; 发送发每收到一个确认分组,就向前滑动一个位置,发送发接收0、1号确认分组,向前滑动,由于不存在2号确认分组,所以发送窗口停止在2,然后将0、1号数据分组的缓存删除,接收方也将0、1号分组交给上层处理; 发送方接收3号确认分组,但发送窗口不能向前滑动,发送方还未收到2号确认分组,不过需要记录3号数据分组已收到确认,这样3号分组不会超时重发 4号5号分组达到接收方,接收方发送4号5号确认分组,但接收窗口不能向前滑动,因为它们是未能按序到达的分组,接收方还未收到2号数据分组 如果在4号和5号确认分组传输过程中 ,发送发进行2号超时重传 4号5号确认分组到达,因为2号确认分组没有到达,发送窗口依旧不能向前滑动,不过可以记录4、5号数据分组已收到确认,发送窗口外的数据无法发送,发送窗口等待2号确认分组 当2号到达接收方,滑动窗口向前滑动4个位置,接收方发送2号确认分组 2号确认分组到达发送方,发送窗口前移4个位置
2.3.1 发送窗口尺寸问题
可以看见,下图中接收窗口已经向前移动5,并包含新的序号为0的接收窗口 同样的,也会出现分组重复传输差错
例题
2.3.2 总结
链接: 湖科大教书匠:计算机网络微课堂 本文是湖科大教书匠的计算机网络笔记,感谢大家的观看,求点赞求收藏求评论 欢迎大家关注我的账号:黑城笑 更多技术分享等待大家
你可能感兴趣的:(#,计算机网络,网络,网络协议)
golang - context包使用示例 以及 底层实现
切尔诺贝尔
golang go 上下文 context 并发
文章目录1.context常用方法,以及各种适用于什么场景1.1context含有的方法1.2方法适用场景和伪代码示例1.2.1值传递:比如gin框架中用来传递key,value的值,自己简单示例如下1.2.2超时控制-timeout:http请求设置超时时间1.2.3,超时控制-deadline:比如文件io或者网络io等耗时操作,可以查看剩余的时间是否充足,决定是否进行下一步操作1.2.4.取
【linux问题】Linux命令行终端窗口的输出,显示不全问题
Thenunaoer
开发过程中遇到的问题 Linux linux
Linux命令行终端窗口的输出,显示不全问题问题:图中显示的是一个Linux命令行终端窗口,nmclidevwifi是一个命令——列出所有能用的Wi-Fi。执行命令后,窗口输出了显示了所有能用的Wi-Fi网络列表。但是在每一行末尾有一个“>”符号,这个符号是什么意思?是输出的内容没显示完全的意思吗,那怎么解决?答:图中每行末尾的“>”符号确实表示输出内容被截断,显示的行无法完全显示出所有信息。这种
关于go-context包
敖光 SRE
go基础知识 golang 数据库 开发语言
思维导图目的为了在不同的goroutine之间或跨API边界传递超时、取消信号和其他请求范围内的值(与该请求相关的值。这些值可能包括用户身份信息、请求处理日志、跟踪信息等等)。常用场景数据操作网络请求RPC操作context接口context包在提供了一个用于跨API边界传递超时、取消信号和其他请求范围值的通用数据结构。用于在多个Goroutine和函数之间传递请求范围内的信息。核心方法:Dead
AI大模型的技术突破与传媒行业变革
AIQL
行业分析 人工智能 传媒
性能与成本:AI大模型的“双轮驱动”过去几年,AI大模型的发展经历了从实验室到产业化的关键转折。2025年初,以DeepSeekR1为代表的模型在数学推理、代码生成等任务中表现超越国际头部产品,而训练成本仅为传统模型的几十分之一。这一突破的核心在于三大技术创新:MoE架构升级:通过部署256个细粒度专家网络,减少知识冗余,提升模型效率;MLA注意力机制:动态压缩推理过程中的缓存需求,降低GPU内存
信息安全之网络安全
黑客Jack
web安全 安全
网络安全技术是一类包含内容极其广泛的技术,广义上说任何检测、防御和抵制网络攻击的技术都属于网络安全技术,而且很多网络安全技术都是攻击驱动型的。网络安全大致包含的内容主要有防火墙,入侵检测,漏洞扫描与网络隔离,拒绝服务攻击检测与防御,计算机病毒防治以及×××技术的概念、原理、应用部署等方面。防火墙防火墙是设置在内部网络与外部网络(如互联网)之间,实施访问控制策略的一个或者一组系统,是访问控制机制在网
网络安全清单
黑客Jack
web安全 网络 安全
自主访问控(DAC:DiscretionaryAccessControl)自主访问控制(DAC)是一个访问控制服务,其执行一个基于系统实体身份的安全政策和它们的授权来访问系统资源。双附接集线器(DAC:Dual-attachedConcentrator)双附接集线器(DAC)是FDDI或CDDI集线器有能力接入到一个FDDI或CDDI网络的两个环。它也能够是来自其它FDDI或CDDI集线器的主机端
工控网络安全学习路线
206333308
安全
一、基础技能编程语言:从汇编语言开始学习,了解底层机器指令和内存管理等基础知识。接着学习C/C++,掌握面向过程和面向对象编程的基本概念和技术,为后续的漏洞挖掘和底层分析打下基础。最后学习Python,它在安全领域应用广泛,可用于自动化脚本编写、漏洞扫描和数据分析等。《计算机网络原理》:掌握网络通信的基本原理,包括OSI七层模型、TCP/IP协议栈、IP地址分配、子网掩码等。了解网络拓扑结构、路由
2024年最全工控网络安全学习路线_工控网络安全专业,零基础学网络安全开发
2401_84545213
程序员 web安全 学习 安全
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化资料的朋友,可以点击这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!工业背景对于我国而言,工业控制系统安全所面临的重要问
2025年——【寒假】自学黑客计划(网络安全)
网安CILLE
web安全 网络 安全 网络安全 linux
CSDN大礼包:基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包前言什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。如何成为一名黑客很多朋友在学习安全方面都会半路转行,因为不知如何去学,在这里,我将这个整份答案分为黑客(网络安全)入门必备、黑客(网络安全)职业指南、黑客
工控网络安全架构
黑客Jack
web安全 架构 安全
工控网络安全架构概述随着工业4.0的快速发展,工控系统(IndustrialControlSystems,ICS)在现代工业生产中扮演着越来越重要的角色。然而,工控系统的安全性问题已成为普遍关注的焦点。本文将介绍工控网络安全架构的基本概念和构成,并通过代码示例、类图和序列图进行详细说明,以帮助理解如何实现在这一领域的安全性。1.工控网络安全架构的组成工控网络安全架构通常由多个层次和组件构成,主要包
【K8S系列】Kubernetes 集群中的网络常见面试题
颜淡慕潇
K8S系列 深入解析K8S 网络 kubernetes 云原生 集群网络
在Kubernetes面试中,网络是一个重要的主题。理解Kubernetes网络模型、服务发现、网络策略等概念对候选人来说至关重要。以下是一些常见的Kubernetes网络面试题及其答案,帮助你准备面试。1.Kubernetes的网络模型是什么样的?问题:Kubernetes的网络模型是怎样的?答案:Kubernetes网络模型遵循“每个Pod都有一个唯一的IP地址”的原则。每个Pod都可以直接通
【6】Underlay&Overlay
剪刀石头布Cheers
Cisco SDWAN Learning 网络 思科 SDWAN
1.Underlay和Overlay路由在SD-WAN架构中,路由分为Underlay(基础网络)和Overlay(叠加网络)两个层次。(1)Underlay路由Underlay是SD-WAN设备运行的底层物理网络,负责在不同站点之间建立基本的IP连接。特性:依赖MPLS、互联网、4G/5G或卫星链路等物理传输介质。使用传统路由协议(如BGP、OSPF、EIGRP)在物理网络上进行路径选择。不能提
【Linux】【进程】epoll内核实现总结+ET和LT模式内核实现方式
钟离墨笺
Linux linux 网络 运维
【Linux】【网络】epoll内核实现总结+ET和LT模式内核实现方式1.epoll的工作原理eventpoll结构当某一进程调用epoll_create方法时,Linux内核会创建一个eventpoll结构体,这个结构体中有两个成员与epoll的使用方式密切相关.structeventpoll{..../*红黑树的根节点,这颗树中存储着所有添加到epoll中的需要监控的事件*/structrb
【网络安全】Snort中文查询手册
Walter_Jia
Network Security
Snort中文手册摘要snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。(2003-12-1116:39:12)Snort用户手册第一章snort
Python爬取小说保存为Excel
不知所云975
python
本代码以实际案例介绍,爬取‘笔趣阁最新小说‘列表保存为表格文件。类封装以及网络爬虫以及openpyxl模块可以参考学习。#更新小说目录importrequestsfromlxmlimportetreeimportopenpyxlfromopenpyxl.stylesimportFont,Alignment,Side,Border,PatternFill#定义下载表格的类classDown_exce
node js怎么进行打包发布linux,Node.js JXcore 打包
weixin_39851457
node js怎么进行打包发布linux
Node.jsJXcore打包Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。JXcore是一个支持多线程的Node.js发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。这篇文章主要是要向大家介绍JXcore的打包功能。JXcore安装下载JXcore安装包,并解压,在解压的的目录下提供了jx二进制文件命令,接下来我们主要使用这个命令。步骤
Java API文档使用指南与详解
Kay Lam
本文还有配套的精品资源,点击获取简介:JavaAPI文档是Java开发者的权威参考资料,详细描述了Java标准库中的所有公开组件,涵盖了I/O、网络编程、多线程、集合框架、数据库连接(JDBC)、XML处理、图形用户界面(GUI)等多个领域。文档提供清晰的指南帮助理解并使用Java的功能,包含每个类或接口的详细注释、使用示例和常见用途。此外,还介绍了JDK6版本的中文离线文档CHM文件及其下载方式
工业物联网远程监控系统优化方案,基于巨控GRM553Y-CHE
何工13763355074
物联网 巨控GRM553Y-C 巨控GRM552Y-C
工业物联网远程监控系统优化方案——基于巨控GRM553Y-CHE的西门子S7-1500PLC多站点无线集成方案1.项目背景与概述巨控科技作为工业物联网解决方案提供商,专注于PLC无线通信与远程监控技术研发,其YunPLC安全平台已服务超30,000+工业终端,覆盖智能制造、智慧能源、环保监测等20余个行业,累计稳定运行超10亿小时。平台通过信息安全管理体系认证及工业网络安全认证,确保数据全程加密与
以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案:
何工13763355074
巨控GRM231Q 无线通讯 巨控GRM241
以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案:一、系统概述本系统采用双巨控GRM241Q模块构建4G无线物联网络,实现山上液位数据实时传输至山下水泵站,通过预设逻辑自动控制水泵启停,同时支持APP远程监控及人工干预。二、系统组成监测端(山上)液位传感器:投入式/超声波液位计(4-20mA模拟量输出)GRM241Q模块:直接接入液位信号(AI通道)供电:AC220V或
6.1 理解API的概念
programmer120986
api java 平台 class 虚拟机 网络应用
JavaAPI通过支持平台无关性和安全性,使得Java适应于网络应用。JavaAPI是运行库的集合,它提供了一套访问主机系统资源的标准方法。运行Java程序时,虚拟机装载程序的class文件所使用的JavaAPIclass文件。所有被装载的class文件(包括从应用程序中和从JavaAPI中提取的)和所有已经装载的动态库(包含本地方法)共同组成了再Java虚拟机上运行的整个程序。在一个平台能够支持
神经网络常见激活函数 12-Swish函数
亲持红叶
神经网络常见激活函数 神经网络 机器学习 人工智能
Swish函数+导函数Swish函数Swish(x)=x⋅σ(βx)=x1+e−βx\begin{aligned}\rmSwish(x)&=x\cdot\sigma(\betax)\\&=\frac{x}{1+e^{-\betax}}\end{aligned}Swish(x)=x⋅σ(βx)=1+e−βxxSwish函数导数ddxSwish=(x⋅σ(βx))′=σ(βx)+x⋅(σ(βx))′∵
编译安装nginx并使用systemctl管理
Mr_Black0_0
nginx linux 服务器
1、编译安装nginxcd/optwgethttp://nginx.org/download/nginx-1.18.0.tar.gz#通过网络下载nginx压缩包tarxfnginx-1.18.0.tar.gz#解压nginx-1.18.0.tar.gzcdnginx-1.18.0yum-yinstallgccpcre-developenssl-develzlib-developensslopen
来看看爬虫合不合法
度假的小鱼
Python基础 爬虫 搜索引擎 python
活动地址:CSDN21天学习挑战赛文章目录一、爬虫合不合法二、什么是爬虫三、爬虫的分类四、为什么学网络爬虫一、爬虫合不合法随着Python在最近几年的流行,Python中的爬虫也逐渐进入到大家的视野中,但是很多小伙伴,还是在担心爬虫的合法性。今天就来和大家一起讨论一下爬虫的合法性。大家可能在网上看到很多有关程序员写爬虫被抓这样的新闻只因写了一段爬虫,公司200多人被抓!爬虫的本身是合法的,但是如何
Linux上Scapy完全指南:从入门到实战攻防
和舒貌
linux 信息与通信 网络安全 安全
Linux上Scapy完全指南:从入门到实战攻防目录Scapy简介与核心优势Linux环境安装与配置Scapy基础操作高级功能与协议分析实战案例:网络诊断与安全审计性能优化与调试技巧常见问题解答一、Scapy简介与核心优势1.1什么是Scapy?Scapy是一款基于Python的交互式数据包操作工具,能够构造、发送、捕获和分析网络协议数据包。其核心特点包括:支持超过800种协议(如TCP/IP、H
qt实现网络聊天室
yaofei2006
服务器 qt
1.功能需求服务器:监听客户端连接。接收客户端消息并广播给所有连接的客户端。处理客户端断开连接。客户端:连接到服务器。发送消息到服务器。接收并显示来自其他客户端的消息。2.技术栈Qt网络模块:QTcpServer和QTcpSocket用于实现网络通信。多线程:使用QThread或Qt的事件循环处理并发连接。信号与槽机制:用于处理网络事件和UI更新。QtWidgets:用于构建用户界面。3.项目结构
土星云NAS企业网盘:AI引领的未来办公新纪元
土星云SaturnCloud
产品 人工智能 计算机外设 图像处理 机器学习
网络存储服务器(NAS)是一种通过局域网提供文件级别数据存储的系统设备方案,不仅为个人家庭的影音娱乐所用,也可以作为企业的数据文件存储平台。但是传统NAS设备并非专为企业应用所设计,硬件可靠性不足,软件操作复杂更难言数据安全管理,如何在满足数据存储需求的基础上更进一步高效协同智慧办公成了待解的难题。土星云NAS企业网盘为企业用户带来了全新的最优答案,它是由北京国科环宇科技股份有限公司和杭州可道云网
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
web13508588635
linux 网络 服务器
1、更新于2024/5/13,新增VethPair配置2、更新于2024/5/19,修复NetworkManager接管网络配置无效的错误3、更新于2024/5/20,新增Ubuntu两种版本下NetworkManager接管网络的配置目录一、配置NetworkManager接管网络(选)安装Network-Manager并启动netplan管理网络的系统ifupdown管理网络的系统二、nmcl
【kafka系列】broker
漫步者TZ
kafka 数据库 分布式 kafka
目录Broker接收生产者消息和返回消息给消费者的流程逻辑分析Broker处理生产者消息的核心流程Broker处理消费者消息的核心流程关键点总结Broker接收生产者消息和返回消息给消费者的流程逻辑分析Broker处理生产者消息的核心流程接收请求Broker的SocketServer接收来自生产者的ProduceRequest(基于Reactor网络模型)。请求解析与验证解析请求头(Topic、P
006-Docker 镜像加速
小宝哥Code
Docker docker 容器 运维
在中国,由于网络限制,DockerHub的镜像拉取速度可能会非常慢。为了解决这个问题,可以通过配置Docker使用国内镜像加速器来提高镜像下载速度。1.使用国内镜像加速器以下是一些常用的Docker镜像加速器,你可以根据自己的需求选择使用:阿里云镜像加速器:https://.mirror.aliyuncs.com网易云镜像加速器:https://hub-mirror.c.163.comDaoClo
【kafka系列】如何选择消息语义?
漫步者TZ
kafka kafka 分布式 数据库 大数据
目录业务权衡如何选择消息语义?业务权衡维度At-Most-OnceAt-Least-OnceExactly-Once消息丢失风险高低无消息重复风险无高无网络开销最低(无重试)中等(可能重试)最高(事务+协调)适用场景可容忍丢失的实时数据流不允许丢失的日志采集金融交易、精准统计如何选择消息语义?At-Most-Once:优先性能与低延迟,接受数据丢失(如实时监控)。At-Least-Once:优先可
Linux的Initrd机制
被触发
linux
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin
maven本地仓库路径修改
bitcarter
maven
默认maven本地仓库路径:C:\Users\Administrator\.m2
修改maven本地仓库路径方法:
1.打开E:\maven\apache-maven-2.2.1\conf\settings.xml
2.找到
 
XSD和XML中的命名空间
darrenzhu
xml xsd schema namespace 命名空间
http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml
http://blog.csdn.net/wanghuan203/article/details/9203621
http://blog.csdn.net/wanghuan203/article/details/9204337
http://www.cn
Java 求素数运算
周凡杨
java 算法 素数
网络上对求素数之解数不胜数,我在此总结归纳一下,同时对一些编码,加以改进,效率有成倍热提高。
第一种:
原理: 6N(+-)1法 任何一个自然数,总可以表示成为如下的形式之一: 6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2,…)
java 单例模式
g21121
java
想必单例模式大家都不会陌生,有如下两种方式来实现单例模式:
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
Linux下Mysql源码安装
510888780
mysql
1.假设已经有mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
(1)创建mysql的安装目录及数据库存放目录
解压缩下载的源码包,目录结构,特殊指定的目录除外:
32位和64位操作系统
墙头上一根草
32位和64位操作系统
32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。现在市场上的CPU一般都是64位的,但是这些CPU并不是真正意义上的64 位CPU,里面依然保留了大部分32位的技术,只是进行了部分64位的改进。32位和64位的区别还涉及了内存的寻址方面,32位系统的最大寻址空间是2 的32次方= 4294967296(bit)= 4(GB)左右,而64位系统的最大寻址空间的寻址空间则达到了
我的spring学习笔记10-轻量级_Spring框架
aijuans
Spring 3
一、问题提问:
→ 请简单介绍一下什么是轻量级?
轻量级(Leightweight)是相对于一些重量级的容器来说的,比如Spring的核心是一个轻量级的容器,Spring的核心包在文件容量上只有不到1M大小,使用Spring核心包所需要的资源也是很少的,您甚至可以在小型设备中使用Spring。
 
mongodb 环境搭建及简单CURD
antlove
Web Install curd NoSQL mongo
一 搭建mongodb环境
1. 在mongo官网下载mongodb
2. 在本地创建目录 "D:\Program Files\mongodb-win32-i386-2.6.4\data\db"
3. 运行mongodb服务 [mongod.exe --dbpath "D:\Program Files\mongodb-win32-i386-2.6.4\data\
数据字典和动态视图
百合不是茶
oracle 数据字典 动态视图 系统和对象权限
数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭 数据字典中包含
数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
数据库为一
多线程编程一般规则
bijian1013
java thread 多线程 java多线程
如果两个工两个以上的线程都修改一个对象,那么把执行修改的方法定义为被同步的,如果对象更新影响到只读方法,那么只读方法也要定义成同步的。
不要滥用同步。如果在一个对象内的不同的方法访问的不是同一个数据,就不要将方法设置为synchronized的。
将文件或目录拷贝到另一个Linux系统的命令scp
bijian1013
linux unix scp
一.功能说明 scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP地址:文件的绝对路径
【持久化框架MyBatis3五】MyBatis3一对多关联查询
bit1129
Mybatis3
以教员和课程为例介绍一对多关联关系,在这里认为一个教员可以叫多门课程,而一门课程只有1个教员教,这种关系在实际中不太常见,通过教员和课程是多对多的关系。
示例数据:
地址表:
CREATE TABLE ADDRESSES
(
ADDR_ID INT(11) NOT NULL AUTO_INCREMENT,
STREET VAR
cookie状态判断引发的查找问题
bitcarter
form cgi
先说一下我们的业务背景:
1.前台将图片和文本通过form表单提交到后台,图片我们都做了base64的编码,并且前台图片进行了压缩
2.form中action是一个cgi服务
3.后台cgi服务同时供PC,H5,APP
4.后台cgi中调用公共的cookie状态判断方法(公共的,大家都用,几年了没有问题)
问题:(折腾两天。。。。)
1.PC端cgi服务正常调用,cookie判断没
通过Nginx,Tomcat访问日志(access log)记录请求耗时
ronin47
一、Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间
nginx.conf使用配置方式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_r
java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
bylijinnan
java
public class ProbabilityOfDice {
/**
* Q67 n个骰子的点数
* 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
* 在以下求解过程中,我们把骰子看作是有序的。
* 例如当n=2时,我们认为(1,2)和(2,1)是两种不同的情况
*/
private stati
看别人的博客,觉得心情很好
Cb123456
博客 心情
以为写博客,就是总结,就和日记一样吧,同时也在督促自己。今天看了好长时间博客:
职业规划:
http://www.iteye.com/blogs/subjects/zhiyeguihua
android学习:
1.http://byandby.i
[JWFD开源工作流]尝试用原生代码引擎实现循环反馈拓扑分析
comsci
工作流
我们已经不满足于仅仅跳跃一次,通过对引擎的升级,今天我测试了一下循环反馈模式,大概跑了200圈,引擎报一个溢出错误
在一个流程图的结束节点中嵌入一段方程,每次引擎运行到这个节点的时候,通过实时编译器GM模块,计算这个方程,计算结果与预设值进行比较,符合条件则跳跃到开始节点,继续新一轮拓扑分析,直到遇到
JS常用的事件及方法
cwqcwqmax9
js
事件 描述
onactivate 当对象设置为活动元素时触发。
onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。
onbeforeactivate 对象要被设置为当前元素前立即触发。
onbeforecut 当选中区从文档中删除之前在源对象触发。
onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即
正则表达式验证日期格式
dashuaifu
正则表达式 IT其它 java其它
正则表达式验证日期格式
function isDate(d){
var v = d.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/i);
if(!v) {
this.focus();
return false;
}
}
<input value="2000-8-8" onblu
Yii CModel.rules() 方法 、validate预定义完整列表、以及说说验证
dcj3sjt126com
yii
public array rules () {return} array 要调用 validate() 时应用的有效性规则。 返回属性的有效性规则。声明验证规则,应重写此方法。 每个规则是数组具有以下结构:array('attribute list', 'validator name', 'on'=>'scenario name', ...validation
UITextAttributeTextColor = deprecated in iOS 7.0
dcj3sjt126com
ios
In this lesson we used the key "UITextAttributeTextColor" to change the color of the UINavigationBar appearance to white. This prompts a warning "first deprecated in iOS 7.0."
Ins
判断一个数是质数的几种方法
EmmaZhao
Math python
质数也叫素数,是只能被1和它本身整除的正整数,最小的质数是2,目前发现的最大的质数是p=2^57885161-1【注1】。
判断一个数是质数的最简单的方法如下:
def isPrime1(n):
for i in range(2, n):
if n % i == 0:
return False
return True
但是在上面的方法中有一些冗余的计算,所以
SpringSecurity工作原理小解读
坏我一锅粥
SpringSecurity
SecurityContextPersistenceFilter
ConcurrentSessionFilter
WebAsyncManagerIntegrationFilter
HeaderWriterFilter
CsrfFilter
LogoutFilter
Use
JS实现自适应宽度的Tag切换
ini
JavaScript html Web css html5
效果体验:http://hovertree.com/texiao/js/3.htm
该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页。
HTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
Hbase Rest API : 数据查询
kane_xie
REST hbase
hbase(hadoop)是用java编写的,有些语言(例如python)能够对它提供良好的支持,但也有很多语言使用起来并不是那么方便,比如c#只能通过thrift访问。Rest就能很好的解决这个问题。Hbase的org.apache.hadoop.hbase.rest包提供了rest接口,它内嵌了jetty作为servlet容器。
启动命令:./bin/hbase rest s
JQuery实现鼠标拖动元素移动位置(源码+注释)
明子健
jquery js 源码 拖动 鼠标
欢迎讨论指正!
print.html代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>发票打印</title>
&l
Postgresql 连表更新字段语法 update
qifeifei
PostgreSQL
下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下:
UPDATE tops_visa.visa_order
SET op_audit_abort_pass_date = now()
FROM
tops_visa.visa_order as t1
INNER JOIN tops_visa.visa_visitor as t2
ON t1.
将redis,memcache结合使用的方案?
tcrct
redis cache
公司架构上使用了阿里云的服务,由于阿里的kvstore收费相当高,打算自建,自建后就需要自己维护,所以就有了一个想法,针对kvstore(redis)及ocs(memcache)的特点,想自己开发一个cache层,将需要用到list,set,map等redis方法的继续使用redis来完成,将整条记录放在memcache下,即findbyid,save等时就memcache,其它就对应使用redi
开发中遇到的诡异的bug
wudixiaotie
bug
今天我们服务器组遇到个问题:
我们的服务是从Kafka里面取出数据,然后把offset存储到ssdb中,每个topic和partition都对应ssdb中不同的key,服务启动之后,每次kafka数据更新我们这边收到消息,然后存储之后就发现ssdb的值偶尔是-2,这就奇怪了,最开始我们是在代码中打印存储的日志,发现没什么问题,后来去查看ssdb的日志,才发现里面每次set的时候都会对同一个key