C T 直 播用版本较低的直播浏览器器登录有什么危险?

您好!请&&或&
共14个车系209款车型&|&轿车:
级&&别:紧凑型车车身结构: 发动机: 变&速&箱: 外观颜色:更多颜色 更多颜色指导价:26.90-34.80万用户评分:1.8升
99马力关注度指导价经销商参考价相关信息
级&&别:中型车车身结构: 发动机: 变&速&箱: 外观颜色:更多颜色 更多颜色指导价:36.90-48.00万用户评分:2.0升 涡轮增压 245马力关注度指导价经销商参考价相关信息
级&&别:中大型车车身结构: 发动机:
变&速&箱:
外观颜色:更多颜色 更多颜色指导价:29.80-49.80万用户评分:2.5升
160马力关注度指导价经销商参考价相关信息
167马力关注度指导价经销商参考价相关信息
184马力关注度指导价经销商参考价相关信息
级&&别:中大型车车身结构: 发动机:
变&速&箱:
外观颜色:更多颜色 更多颜色指导价:45.90-79.90万用户评分:2.5升
181马力关注度指导价经销商参考价相关信息
2.0升 涡轮增压 245马力关注度指导价经销商参考价相关信息
292马力关注度指导价经销商参考价相关信息
级&&别:大型车车身结构: 发动机:
变&速&箱:
外观颜色:更多颜色 更多颜色指导价:149.00-238.80万用户评分 :暂无4.6升
370马力关注度指导价经销商参考价相关信息
388马力关注度指导价经销商参考价相关信息
394马力关注度指导价经销商参考价相关信息
级&&别:中型SUV车身结构: 发动机:
变&速&箱:
外观颜色:更多颜色 更多颜色指导价:31.80-59.90万用户评分:2.0升
150马力关注度指导价经销商参考价相关信息
155马力关注度指导价经销商参考价相关信息
2.0升 涡轮增压 238马力关注度指导价经销商参考价相关信息
级&&别:中大型SUV车身结构: 发动机: 变&速&箱: 外观颜色:更多颜色 更多颜色指导价:84.80-94.68万用户评分:4.0升
275马力关注度指导价经销商参考价相关信息
级&&别:中大型SUV车身结构: 发动机:
变&速&箱:
外观颜色:更多颜色 更多颜色指导价:41.80-86.90万用户评分:2.0升 涡轮增压 238马力关注度指导价经销商参考价相关信息
262马力关注度指导价经销商参考价相关信息
级&&别:大型SUV车身结构: 发动机: 变&速&箱: 外观颜色:指导价:138.60-143.80万用户评分:5.7升
367马力关注度指导价经销商参考价相关信息
级&&别:跑车车身结构: 发动机: 变&速&箱: 外观颜色:更多颜色 更多颜色指导价:48.80-58.60万用户评分 :暂无2.0升 涡轮增压 245马力关注度指导价经销商参考价相关信息
级&&别:跑车车身结构: 发动机: 变&速&箱: 外观颜色:更多颜色 更多颜色指导价:109.80-126.80万用户评分 :暂无5.0升
477马力关注度指导价经销商参考价相关信息
汽车之家客户端
精彩车讯随时看暴风影音免费下载
资源大小:22.4M
周下载量:15,604次
软件属性:简体中文 免费软件
更新时间:
系统平台:
Win7/WinVista/WinXP/Win8兼容软件
官方网站:
用户推荐:
用户评分:
相关软件:
相关合集:相关热搜:
暴风影音5的“左眼键”高清效果,媲美世界级专业播放器。暴风影音5最明显的特点是,通过“左眼技术”能显著提升画质。据了解,一般的播放器是将整部电影作为对象处理,而“左眼技术”则是在画面出现的一瞬间对每一帧画面进行优化处理。简单地说,对每个画面的处理,都将增加高达370亿次的运算。
暴风影音5的“左眼键”高清效果,媲美世界级专业播放器。暴风影音5最明显的特点是,通过“左眼技术”能显著提升画质。据了解,一般的播放器是将整部电影作为对象处理,而“左眼技术”则是在画面出现的一瞬间对每一帧画面进行优化处理。简单地说,对每个画面的处理,都将增加高达370亿次的运算。暴风影音5是暴风影音公司全新推出的暴风影音5版本,目前暴风影音5是正式版,暴风影音5在播放速度和启动速度上大幅提升……暴风影音5特色1.“左眼键”服务安全免费!而其他提供同样功能的专业播放器都是收费的,最低价格在300元以上。2.“左眼键”功能无需配备高贵的高性能显卡,普通配置电脑即可使用!3.新皮肤: 超酷电影皮肤,整个界面就是一幅置身其中的电影大海报,还可以选择您喜欢的颜色。4.新列表: 播放时列表放大,查看信息一目了然;在线影视剧以合集方式呈现,查找更方便。5.新体验: 改进80多处播放器功能体验,新增支持:AB段重复播放、双字幕对照显示&&&&暴风影音5版更新日志暴风影音 5.61.【更新时间:】【本次更新】客户端界面换新装弹幕显示优化,降低cpu耗能【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.54.【更新时间:】【本次更新】性能优化,播放兼容性提升【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.53.【更新时间:】【本次更新】Vip系统优化【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.52.【本次更新】新增扫码下载功能,PC视频手机随身看【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.51.【更新时间:】【本次更新】Vip系统全面优化在线字幕功能优化【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.50.【更新时间:】【本次更新】左眼功能BUG修正【左眼技术】"左眼"技术,全面提升本地和在线视频画质暴风影音 5.49.【更新时间:】【本次更新】优化镜像文件解析播放优化弹幕显示逻辑【左眼技术】"左眼"技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.47.【更新时间:】【本次更新】dlna功能优化【左眼技术】"左眼"技术,全面提升本地和在线视频画质暴风影音 5.32.【更新时间:】【本次更新】支持用户自定义心爱的暴风皮肤。升级优化了7种常用解码器。【左眼技术】“左眼”技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.27.【更新时间:】下载列表增加关闭后自动记忆功能。新增在线影视列表搜索排重功能。暴风影音 5.25.【更新时间:】优化了本地播放体验,支持更多种播放格式。全能左眼功能优化,减少性能消耗。暴风影音 5.24.优化了“极速”功能。优化了在线播放列表使用体验。【左眼技术】“左眼”技术,全面提升本地和在线视频画质【清晰顺畅】提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验【极致万能】万能播放服务每日为1.8亿用户提供1.5亿次播放服务暴风影音 5.20.
更新日志:新增直播功能优化视频搜索功能左眼技术“左眼”技术,全面提升本地和在线视频画质清晰顺畅提供720P、1080P真高清在线视频1M带宽流畅播放720P在线高清视频暴风皮肤,赏心悦目的观赏体验极致万能万能播放服务升级每日为1.8亿用户提供1.5亿次播放服务2012年12月更新日志暴风影音 5.19.【更新时间:】【本次更新】新增在线视频自动更新,紧追最新影视动态新增环绕声技术,体验影院级音效暴风影音 5.19.【本次更新】新增视频筛选功能,精准定位你的最爱新增环绕声技术,体验最真实的环绕立体声暴风影音 5.18.【更新时间:】新增智能3D技术,完美支持3D播放优化在线字幕功能暴风影音 5.16.【更新时间:】新增将影视资源添加至桌面功能优化安装逻辑,提高安装速度暴风影音 5.15.本次更新:新增DVD文件支持开启左眼键暴高清在线视频支持手动加载字幕暴风影音5.14.本次更新:优化暴风影视库逻辑,提高稳定性优化播放机制,提高合作方视频播放流畅性暴风影音 5.14.本次更新优化暴风转码,提升BHD转码成功率解决BHD转码时间不准确的问题暴风影音 5.13.本次更新优化播放视频时关闭逻辑,提升播放稳定性解决部分用户右键菜单出现黑框的问题暴风影音 5.13.本次更新增加多种字幕预设样式新增字幕调节记忆功能暴风影音 5.13.本次更新本地左眼键支持BHD格式提升全屏时使用左眼播放的流畅度暴风影音 5.13.本次更新新增本地左眼键功能,全面支持本地671种视频新增画质评分功能暴风影音 5.12.本次更新支持播放时字幕压缩文件自动解压和添加在下载管理列表加入上移/下移/清空列表按钮暴风影音 5.12.更新日志新增对.ofr和.tak格式的支持暴风下载管理新增下载完成自动关机功能修复若干bug暴风影音 5.12.更新日志本次更新暴风下载管理全新改版,更爽的下载体验目录树新增智能搜索功能修复一些bug暴风影音55.12.更新日志:暴风下载管理全新改版,更爽的下载体验目录树新增智能搜索功能修复一些bug暴风影音 5.11.极致万能万能播放服务升级每日为1.8亿用户提供1.5亿次播放服务新增对ass、ssa特效字幕格式的支持dcBass等音频解码器更新,音频支持更完美修复一些bug暴风影音 5.11.:新增对10bit编码压制的高清视频支持优化高级选项逻辑,提升使用体验修复一些bug暴风影音 5.11.在线视频目录树增加详情提示暴风影视库新增针对影片名称,观众热度,评分和评论数排序功能修复一些bug暴风影音 5.10.:推出新皮肤时增加提醒功能更新ffdshow解码器版本,对MP3、WMA、AAC等音频编码的支持更加出色修复一些bug暴风影音 5.10.:根据屏幕分辨率自动调整在线列表区文字大小优化在线列表刷新机制修复一些bug暴风影音 5.10.:优化视频下载速度新增清空播放列表弹出确认提醒功能修复一些bug暴风影音 5.10.:在线视频支持快进快退功能优化在线视频播放机制,使在线视频播放更加流畅修复一些bug暴风影音 5.09.:在线视频支持快进快退功能对在线视频播放机制进行优化,使在线视频播放更加流畅修复一些bug暴风影音 5.09.:优化合作方视频播放,使播放更流畅在屏幕分辨率高的情况下,增大目录树及盒子内容字号显示修复一些bug暴风影音 5.09.: 新增目录树订阅功能,丰富视频资源 解决连续播放多张DVD碟片容易失败的问题 修复一些bug 暴风影音 5.09.新春版: 新增目录树订阅功能,丰富视频资源 新增春节皮肤,修正皮肤放大时出现锯齿的问题,提升皮肤体验 优化其他功能使用体验 修复一些bug 暴风影音 5.08. 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能全新在线皮肤,支持电影海报多图体验 转码支持intel,cuda核芯显卡硬件加速 优化左眼使用体验 修复一些bug
暴风影音 5.07. 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能 优化左眼使用体验 修复了一些bug 暴风影音 5.07. 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能
优化左眼使用体验 修复了一些bug 暴风影音 5.07. 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能 优化左眼使用体验 修复了一些bug 暴风影音 5.07. 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能 提升服务稳定性,优化网络状况不稳定时的在线内容展现策略 修复了一些bug 暴风影音 5.07. 极致万能:万能播放服务升级每日为1.8亿用户提供1.5亿次播放服务清晰在线:提供720P真高清视频 新增“左眼”键,在线高清视频画质大幅提升 增加暴风影视库、在线视频下载等功能 顺畅体验:调整开启左眼显示模式 优化左眼使用体验,新增“左眼截图分享”功能 优化480P片源下左眼开启效果 修复个别安装过程中提示VC2010问题 暴风影音5正式版新版特性: 体验优化:新增神奇“左眼键”!带来革命性视觉体验!新增支持在线高清视频下载功能!新增支持暴风盒子页面换色功能!新增连拍、截图功能!BUG修正:修正多进程导致无响应问题;修正无法屏蔽屏保,进入省电模式,待机等问题;修正全屏鼠标不隐藏问题;修正在线二级列表无法展开问题;修正文件大小显示错误问题;修正下载提示磁盘空间已满问题修正部分在线列表提示更新失败问题;解决部分崩溃问题,提升暴风稳定性;暴风影音5Beta2更新日志 体验优化: 全屏状态下,浮动栏右上角增加关闭播放器按钮,方便快速退出优化本地文件的播放记忆功能,继承使用习惯 全屏状态时,暴风资讯不再弹出,减少观影打扰BUG修正: 修正老板键ALT+S与QQ发送快捷键冲突的问题 修正某些全屏播放状态下,鼠标不能隐藏的问题 修正部分用户在播放时,不能屏蔽待机模式的问题 修正部分操作系统下,安装失败的问题 修正右键黏贴关键词到搜索框后,不能正确搜索的问题 修正在盒子搜索框中,点击退格键所有文字被清空的问题 暴风影音 5Beta版更新日志: 【新增】:-增加了皮肤管理功能,用户可以选择自己喜欢的皮肤及颜色。我们着力为您推荐极速皮肤,更能为您的播放速度增添一抹重彩。-在线视频播放列表增加二级列表,同时改变了播放列表的长宽比,采用了明暗交替的斑马线式的文件名显示方式,使看起来更加舒适。-开放了高级解码器调节接口,供设备需求较高的用户使用。用于可多选择的切换视频和音频解码器,以收到最好的播放效果。-盒子添加最大化功能,可扩大可视范围。-增加90度旋转,视频位置移动功能,解决了很多用户录制视频的视频旋转问题。-增加双字幕功能-支持在线视频的音频调节和视频调节功能,声音设置精度改为毫秒。-支持了在线视频的设置片头片尾功能,以及A-B复读功能,更多地满足了用户对在线视频的设置需求。设置位置在播放进度处,右键设置即可,非常方便。-添加了快进快退、加速播放的时间间隔设置的功能,使用户通过自由设置可以达到自己需求的快播效果,实现自由播放~-新增定时关机功能【优化和修改】:-原来位于右侧的主菜单移到了左边,与暴风LOGO合并在了一起,标记较易理解且较易找到。同时下拉菜单增加了形象的图标说明,界面更新颖。-高级选项设置控制分栏优化成可收缩菜单,而且将原高清播放设置单独设置成控制列表选项,方便用户选择高清加速方案。-播放列表颜色由深变浅,解决了滚动条查看不清问题;同时对播放列表右键菜单进行了功能归类,使播放列表看起来更加的舒适整洁。-缓存文件设置放置高级选项中,更易找到。-暴风热键的修改方式改为由键盘直接修改,使灵活性增大了,相比暴风3更加简单。-暴风工具箱变为大图标,使用户更好更清晰的进行设置操作,简单易懂。-最小界面可缩放到邮票大小。-升级后用户设置会自动保存。&&&&nbsp
下载错误请点击举报
用户评分:
请打个分吧
请发表评论,字数不要少于10个哦~
小提示:您的评论对其他用户具有很重要的参考价值,请勿输入没有营养的点评内容,遇到问题请举报以方便我们及时处理。
ZOL安徽合肥网友
12345678910
12345678910
12345678910JAVA(57)
所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回。所以异步的同义语是非阻塞(None Blocking)。
网上有很多网友用很通俗的比喻 &把同步和异步讲解的很透彻 转过来
举个例子:普通B/S模式(同步)AJAX技术(异步)&
& & & & & 同步:提交请求-&等待服务器处理-&处理完毕返回 这个期间客户端浏览器不能干任何事&
& & & & & 异步: &请求通过事件触发-&服务器处理(这是浏览器仍然可以作其他事情)-&处理完毕
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。&
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。&
所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
以通讯为例&
& & & & & 同步:发送一个请求,等待返回,然后再发送下一个请求&
& & & & & 异步:发送一个请求,不等待返回,随时可以再发送下一个请求&
& & & & & 并发:同时发送多个请求
下面再转一段关于java异步应用的文章
& & & &用异步输入输出流编写Socket进程通信程序
& & 在Merlin中加入了用于实现异步输入输出机制的应用程序接口包:java.nio(新的输入输出包,定义了很多基本类型缓冲(Buffer)),java.nio.channels(通道及选择器等,用于异步输入输出),java.nio.charset(字符的编码解码)。通道(Channel)首先在选择器(Selector)中注册自己感兴趣的事件,当相应的事件发生时,选择器便通过选择键(SelectionKey)通知已注册的通道。然后通道将需要处理的信息,通过缓冲(Buffer)打包,编码/解码,完成输入输出控制。
& & & & & 通道介绍:
& & 这里主要介绍ServerSocketChannel和SocketChannel.它们都是可选择的(selectable)通道,分别可以工作在同步和异步两种方式下(注意,这里的可选择不是指可以选择两种工作方式,而是指可以有选择的注册自己感兴趣的事件)。可以用channel.configureBlocking(Boolean )来设置其工作方式。与以前版本的API相比较,ServerSocketChannel就相当于ServerSocket (ServerSocketChannel封装了ServerSocket),而SocketChannel就相当于Socket(SocketChannel封装了Socket)。当通道工作在同步方式时,编程方法与以前的基本相似,这里主要介绍异步工作方式。
所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回。所以异步的同义语是非阻塞(None Blocking)。在服务器端,ServerSocketChannel通过静态函数open()返回一个实例serverChl。然后该通道调用serverChl.socket().bind()绑定到服务器某端口,并调用register(Selector sel, SelectionKey.OP_ACCEPT)注册OP_ACCEPT事件到一个选择器中(ServerSocketChannel只可以注册OP_ACCEPT事件)。当有客户请求连接时,选择器就会通知该通道有客户连接请求,就可以进行相应的输入输出控制了;在客户端,clientChl实例注册自己感兴趣的事件后(可以是OP_CONNECT,OP_READ,OP_WRITE的组合),调用clientChl.connect
(InetSocketAddress )连接服务器然后进行相应处理。注意,这里的连接是异步的,即会立即返回而继续执行后面的代码。
& & & & & 选择器和选择键介绍:
& & 选择器(Selector)的作用是:将通道感兴趣的事件放入队列中,而不是马上提交给应用程序,等已注册的通道自己来请求处理这些事件。换句话说,就是选择器将会随时报告已经准备好了的通道,而且是按照先进先出的顺序。那么,选择器是通过什么来报告的呢?选择键(SelectionKey)。选择键的作用就是表明哪个通道已经做好了准备,准备干什么。你也许马上会想到,那一定是已注册的通道感兴趣的事件。不错,例如对于服务器端serverChl来说,可以调用key.isAcceptable()来通知serverChl有客户端连接请求。相应的函数还有:SelectionKey.isReadable(),SelectionKey.isWritable()。一般的,在一个循环中轮询感兴趣的事件(具体可参照下面的代码)。如果选择器中尚无通道已注册事件发生,调用Selector.select()将阻塞,直到有事件发生为止。另外,可以调用selectNow()或者select(long
timeout)。前者立即返回,没有事件时返回0值;后者等待timeout时间后返回。一个选择器最多可以同时被63个通道一起注册使用。
& & & & & &应用实例:
& & 下面是用异步输入输出机制实现的客户/服务器实例程序?D?D程序清单1(限于篇幅,只给出了服务器端实现,读者可以参照着实现客户端代码):
public class NBlockingServer {
& & int port = 8000;
& & int BUFFERSIZE = 1024;
& & Selector selector =
& & ServerSocketChannel serverChannel =
& & HashMap clientChannelMap =//用来存放每一个客户连接对应的套接字和通道
& & public NBlockingServer( int port ) {
& & & & this.clientChannelMap = new HashMap();
& & & & this.port =
& & public void initialize() throws IOException {
& & & //初始化,分别实例化一个选择器,一个服务器端可选择通道
& & & this.selector = Selector.open();
& & & this.serverChannel = ServerSocketChannel.open();
& & & this.serverChannel.configureBlocking(false);
& & & InetAddress localhost = InetAddress.getLocalHost();
& & & InetSocketAddress isa = new InetSocketAddress(localhost, this.port );
& & & this.serverChannel.socket().bind(isa);//将该套接字绑定到服务器某一可用端口
& & //结束时释放资源
& & public void finalize() throws IOException {
& & & & this.serverChannel.close();
& & & & this.selector.close();
& & //将读入字节缓冲的信息解码
& & public String decode( ByteBuffer byteBuffer ) throws&
CharacterCodingException {
& & & & Charset charset = Charset.forName( &ISO-8859-1& );
& & & & CharsetDecoder decoder = charset.newDecoder();
& & & & CharBuffer charBuffer = decoder.decode( byteBuffer );
& & & & String result = charBuffer.toString();
& & //监听端口,当通道准备好时进行相应操作
& & public void portListening() throws IOException, InterruptedException {
& & & //服务器端通道注册OP_ACCEPT事件
& & & SelectionKey acceptKey =this.serverChannel.register( this.selector,
& & & & & & & & & & & & & & & & & & & & & &SelectionKey.OP_ACCEPT );
& & & & //当有已注册的事件发生时,select()返回值将大于0
& & & & while (acceptKey.selector().select() & 0 ) {
& & & & & & System.out.println(&event happened&);
& & & & & & //取得所有已经准备好的所有选择键
& & & & & & Set readyKeys = this.selector.selectedKeys();
& & & & & & //使用迭代器对选择键进行轮询
& & & & & & Iterator i = readyKeys.iterator();
& & & & & & while (i.hasNext()) {
& & & & & & & & SelectionKey key = (SelectionKey)i.next();
& & & & & & & & i.remove();//删除当前将要处理的选择键
& & & & & & & & if ( key.isAcceptable() ) {//如果是有客户端连接请求
& & & & & & & & & & System.out.println(&more client connect in!&);
& & & & & & & & & & ServerSocketChannel nextReady =
& & & & & & & & & & & & (ServerSocketChannel)key.channel();
& & & & & & & & & & //获取客户端套接字
& & & & & & & & & & Socket s = nextReady.accept();
& & & & & & & & & & //设置对应的通道为异步方式并注册感兴趣事件
& & & & & & & & & & s.getChannel().configureBlocking( false );
& & & & & & & & & & SelectionKey readWriteKey =
& & & & & & & & & & & & s.getChannel().register( this.selector,
& & & & & & & & & & & & & & SelectionKey.OP_READ|SelectionKey.OP_WRITE &);
& & & & & & & & & & //将注册的事件与该套接字联系起来
readWriteKey.attach( s );
//将当前建立连接的客户端套接字及对应的通道存放在哈希表//clientChannelMap中
& & & & & & & & & & this.clientChannelMap.put( s, new&
ClientChInstance( s.getChannel() ) );
& & & & & & & & & & }
& & & & & & & & else if ( key.isReadable() ) {//如果是通道读准备好事件
& & & & & & & & & & System.out.println(&Readable&);
& & & & & & & & & & //取得选择键对应的通道和套接字
& & & & & & & & & & SelectableChannel nextReady =
& & & & & & & & & & & & (SelectableChannel) key.channel();
& & & & & & & & & & Socket socket = (Socket) key.attachment();
& & & & & & & & & & //处理该事件,处理方法已封装在类ClientChInstance中
& & & & & & & & & & this.readFromChannel( socket.getChannel(),
& & & & & & & & & & (ClientChInstance)
this.clientChannelMap.get( socket ) );
& & & & & & & & }
& & & & & & & & else if ( key.isWritable() ) {//如果是通道写准备好事件
& & & & & & & & & & System.out.println(&writeable&);
& & & & & & & & & & //取得套接字后处理,方法同上
& & & & & & & & & & Socket socket = (Socket) key.attachment();
& & & & & & & & & & SocketChannel channel = (SocketChannel)&
socket.getChannel();
& & & & & & & & & & this.writeToChannel( channel,&This is from server!&);
& & & & & & & & }
& & & & & & }
& & //对通道的写操作
& & public void writeToChannel( SocketChannel channel, String message )&
throws IOException {
& & & & ByteBuffer buf = ByteBuffer.wrap( message.getBytes() &);
& & & & int nbytes = channel.write( buf );
& & &//对通道的读操作
& & public void readFromChannel( SocketChannel channel, ClientChInstance clientInstance )
& & throws IOException, InterruptedException {
& & & & ByteBuffer byteBuffer = ByteBuffer.allocate( BUFFERSIZE );
& & & & int nbytes = channel.read( byteBuffer );
& & & & byteBuffer.flip();
& & & & String result = this.decode( byteBuffer );
& & & & //当客户端发出”@exit”退出命令时,关闭其通道
& & & & if ( result.indexOf( &@exit& ) &= 0 ) {
& & & & & & channel.close();
& & & & else {
& & & & & & & & clientInstance.append( result.toString() );
& & & & & & & & //读入一行完毕,执行相应操作
& & & & & & & & if ( result.indexOf( &\n& ) &= 0 ){
& & & & & & & & System.out.println(&client input&+result);
& & & & & & & & clientInstance.execute();
& & & & & & & & }
& & //该类封装了怎样对客户端的通道进行操作,具体实现可以通过重载execute()方法
& & public class ClientChInstance {
& & & & SocketC
& & & & StringBuffer buffer=new StringBuffer();
& & & & public ClientChInstance( SocketChannel channel ) {
& & & & & & this.channel =
& & & & public void execute() throws IOException {
& & & & & & String message = &This is response after reading from channel!&;
& & & & & & writeToChannel( this.channel, message );
& & & & & & buffer = new StringBuffer();
& & & & //当一行没有结束时,将当前字窜置于缓冲尾
& & & & public void append( String values ) {
& & & & & & buffer.append( values );
& & //主程序
& & public static void main( String[] args ) {
& & & & NBlockingServer nbServer = new NBlockingServer(8000);
& & & & try {
& & & & & & nbServer.initialize();
& & & & } catch ( Exception e ) {
& & & & & & e.printStackTrace();
& & & & & & System.exit( -1 );
& & & & try {
& & & & & & nbServer.portListening();
& & & & catch ( Exception e ) {
& & & & & & e.printStackTrace();
从以上程序段可以看出,服务器端没有引入多余线程就完成了多客户的客户/服务器模式。该程序中使用了回调模式(CALLBACK),细心的读者应该早就看出来了。需要注意的是,请不要将原来的输入输出包与新加入的输入输出包混用,因为出于一些原因的考虑,这两个包并不兼容。即使用通道时请使用缓冲完成输入输出控制。该程序在Windows.4下,用telnet测试成功。
--------------------------------------分-------------------割---------------------------线--------------------------------------------------
如果数据将在线程间共享.例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取.
&&& 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率.
&&& Java同步:
&&& 基本概念:
&&& 每个Object都会有1个锁.
&&& 同步就是串行使用一些资源.
&&& (说明:以下有些例子为了突出重点,省略了不必要的代码.非凡是省掉了一些成员变量,就是需要同步的对象.)
&&& 1. 多线程中对共享、可变的数据进行同步.
&&& 对于函数中的局部变量没必要进行同步.
&&& 对于不可变数据,也没必要进行同步.
&&& 多线程中访问共享可变数据才有必要.
&&& 2. 单个线程中可以使用synchronized,而且可以嵌套,但无意义.
&&& class Test {
&&& public static void main(String[] args) {
&&& Test t = new Test();
&&& synchronized(t) {
&&& synchronized(t) {
&&& System.out.println(&ok!&);
&&& 3. 对象实例的锁
&&& class Test{
&&& public synchronized void f1(){
&&& //do something here
&&& public void f2(){
&&& synchronized(this){
&&& //do something here
&&& 上面的f1()和f2()效果一致, synchronized取得的锁都是Test某个实列(this)的锁.
&&& 比如: Test t = new Test();
&&& 线程A调用t.f2()时, 线程B无法进入t.f1(),直到t.f2()结束.
&&& 作用: 多线程中访问Test的同一个实例的同步方法时会进行同步.
&&& 4. class的锁
&&& class Test{
&&& final static Object o= new Object();
&&& public static synchronized void f1(){
&&& //do something here
&&& public static void f2(){
&&& synchronized(Test.class){
&&& //do something here
&&& public static void f3(){
&&& synchronized (Class.forName(&Test&)) {
&&& //do something here
&&& catch (ClassNotFoundException ex) {
&&& public static void g(){
&&& synchronized(o){
&&& //do something here
&&& 上面f1(),f2(),f3(),g()效果一致
&&& f1(),f2(),f3()中synchronized取得的锁都是Test.class的锁.
&&& g()是自己产生一个对象o,利用o的锁做同步
&&& 作用: 多线程中访问此类或此类任一个实例的同步方法时都会同步. singleton模式lazily initializing属于此类.
&&& 5. static method
&&& class Test{
&&& private static int v = 0;
&&& public static void f1(){
&&& //do something, 但函数中没用用到v
&&& public synchronized static void f2(){
&&& //do something, 函数中对v进行了读/写.
&&& 多线程中使用Test的某个实列时,
&&& (1) f1()是线程安全的,不需要同步
&&& (2) f2()这个静态方法中使用了函数外静态变量,所以需要同步.
&&&& Java异步:
&&& 一.&&& 它要能适应不同类型的请求:
&&& 本节用 makeString来说明要求有返回值的请求.用displayString来说明不需要返回值的请求.
&&& 二.&&& 要能同时并发处理多个请求,并能按一定机制调度:
&&& 本节将用一个队列来存放请求,所以只能按FIFO机制调度,你可以改用LinkedList,就可以简单实现一个优先级(优先级高的addFirst,低的addLast).
&&& 三.&&& 有能力将调用的边界从线程扩展到机器间(RMI)
&&& 四.&&& 分离过度耦合,如分离调用句柄(取货凭证)和真实数据的实现.分离调用和执行的过程,可以尽快地将调返回.
&&& 现在看具体的实现:
&&& public interface Axman {
&&& Result resultTest(int count,char c);
&&& void noResultTest(String str);
&&& 这个接口有两个方法要实现,就是有返回值的调用resultTest和不需要返回值的调用
&&& noResultTest, 我们把这个接口用一个代理类来实现,目的是将方法调用转化为对象,这样就可以将多个请求(多个方法调)放到一个容器中缓存起来,然后统一处理,因为 Java不支持方法指针,所以把方法调用转换为对象,然后在这个对象上统一执行它们的方法,不仅可以做到异步处理,而且可以将代表方法调用的请求对象序列化后通过网络传递到另一个机器上执行(RMI).这也是Java回调机制最有力的实现.
&&& 一个简单的例子.
&&& 如果 1: 做A
&&& 如果 2: 做B
&&& 如果 3: 做C
&&& 如果有1000个情况,你不至于用1000个case吧?以后再增加呢?
&&& 所以如果C/C++程序员,会这样实现: (c和c++定义结构不同)
&&& type define struct MyStruct{
&&& (*fn) ();
&&& 然后你可以声明这个结构数据:
&&& 做一个循环:
&&& for(i=0;i&i++) {
&&& if(数据组[i].mark == 传入的值) (数据组[i].*fn)();
&&& 简单说c/c++中将要被调用的涵数可以被保存起来,然后去访问,调用,而Java中,我们无法将一个方法保存,除了直接调用,所以将要调用的方法用子类来实现,然后把这些子类实例保存起来,然后在这些子类的实现上调用方法:
&&& interface My{
&&& void test();
--------------------------------------分-------------------割---------------------------线--------------------------------------------------
同步与异步传输的区别
同步与异步传输的区别.txt6宽容润滑了彼此的关系,消除了彼此的隔阂,扫清了彼此的顾忌,增进了彼此的了解。
在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。
1. 异步传输(Asynchronous Transmission):异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。
异步传输存在一个潜在的问题,即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,第一个比特已经过去了。这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位表示该次传输信息的终止。按照惯例,空闲(没有传送数据)的线路实际携带着一个代表二进制1的信号,异步传输的开始位使信号变成0,其他的比特位使信号随传输的数据信息而变化。最后,停止位使信号重新变回1,该信号一直保持到下一个开始位到达。例如在键盘上数字“1”,按照8比特位的扩展ASCII编码,将发送“”,同时需要在8比特位的前面加一个起始位,后面一个停止位。
异步传输的实现比较容易,由于每个信息都加上了“同步”信息,因此计时的漂移不会产生大的积累,但却产生了较多的开销。在上面的例子,每8个比特要多传送两个比特,总的传输负载就增加25%。对于数据传输量很小的低速设备来说问题不大,但对于那些数据传输量很大的高速设备来说,25%的负载增值就相当严重了。因此,异步传输常用于低速设备。
2. 同步传输(Synchronous Transmission):同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。我们将这些组合称为数据帧,或简称为帧。
数据帧的第一部分包含一组同步字符,它是一个独特的比特组合,类似于前面提到的起始位,用于通知接收方一个帧已经到达,但它同时还能确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。
帧的最后一部分是一个帧结束标记。与同步字符一样,它也是一个独特的比特串,类似于前面提到的停止位,用于表示在下一帧开始之前没有别的即将到达的数据了。
同步传输通常要比异步传输快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。另外,同步传输的开销也比较少。例如,一个典型的帧可能有500字节(即4000比特)的数据,其中可能只包含100比特的开销。这时,增加的比特位使传输的比特总数增加2.5%,这与异步传输中25 %的增值要小得多。随着数据帧中实际数据比特位的增加,开销比特所占的百分比将相应地减少。但是,数据比特位越长,缓存数据所需要的缓冲区也越大,这就限制了一个帧的大小。另外,帧越大,它占据传输媒体的连续时间也越长。在极端的情况下,这将导致其他用户等得太久。
同步传输方式中发送方和接收方的时钟是统一的、字符与字符间的传输是同步无间隔的。
异步传输方式并不要求发送方和接收方的时钟完全一样,字符与字符间的传输是异步的。
同步与异步传输的区别
1,异步传输是面向字符的传输,而同步传输是面向比特的传输。
2,异步传输的单位是字符而同步传输的单位是桢。
3,异步传输通过字符起止的开始和停止码抓住再同步的机会,而同步传输则是以数据中抽取同步信息。
4,异步传输对时序的要求较低,同步传输往往通过特定的时钟线路协调时序。
5,异步传输相对于同步传输效率较低。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:396次
排名:千里之外
转载:80篇

我要回帖

更多关于 uc浏览器提示网站危险 的文章

 

随机推荐