meego兼容层
曾经,诺基亚对MeeGo系统抱有厚望,希望通过N9手机在市场中取得突破。然而,现实并未如愿,诺基亚最终选择转向微软的thinkphp论坛带门户源码WP系统。对于N9用户来说,这意味着应用商店的封闭和软件更新的缺乏,他们不得不考虑放弃这款设备。 然而,对于N9的爱好者来说,好消息传来:一个安卓兼容层的出现为MeeGo系统带来了新的可能。通过这个兼容层,用户可以直接在诺基亚N9上安装安卓游戏,让原本的设备也能享受到安卓游戏的乐趣。 这个兼容层的初衷是简化应用程序在不同平台间的兼容性,但使用时需谨慎。只对拥有合法使用权的应用进行尝试,并确保使用Nitdroid,它能在特定设备上运行.apk文件。具体步骤如下:下载apkenv-qml程序
在菜单中选择apkenv-qml,点击“+”安装程序,接着选择.apk文件并设置图标
安装完成后,新应用会出现在apkenv-qml的菜单中,点击即可运行
长按图标5秒,可以卸载已安装的应用
目前,兼容层仅成功测试了"愤怒的小鸟",其他应用的兼容性还有待验证。虽然存在局限性,但这为N9用户带来了一线生机,让他们在自己的设备上体验到更多可能性。扩展资料
MeeGo是一种基于Linux的自由及开放源代码的便携设备操作系统。它于年2月的全球移动通信大会中宣布 ,主要推动者为诺基亚与英特尔。MeeGo融合了诺基亚的Maemo及英特尔的Moblin平台,并由Linux基金会主导。MeeGo主要定位在移动设备、家电数码等消费类电子产品市场,可用于智能手机、平板电脑、上网本、智能电视和车载系统等平台。年9月日,继诺基亚宣布放弃开发meego之后,英特尔也正式宣布将MeeGo与LiMo合并成为新的系统:Tizen。年7月,在诺基亚的支持下,Jolla Mobile公司成立MeeGo系统重生,将在华发布新一代MeeGo手机。触屏智能手机发展史触屏手机的发展
触屏智能手机发展史_触屏手机的发展
大家好,今天我要和大家探讨一下关于触屏智能手机发展史的问题。为了让大家更容易理解,我将这个问题进行了归纳整理,现在就让我们一起来看看吧。
1.国产手机发展史:你知道魅族以前有多牛吗?
2.小米的发展史是什么?
3.智能手机谁先发明的?
4.智能手机发展史——经典机型回顾 上
5.触摸屏发展历史
国产手机发展史:你知道魅族以前有多牛吗?
你知道魅族以前有多牛吗?如今沦为珠海小厂的魅族,曾经是国产智能手机的先驱。魅族创立于年,位于中国广东省珠海市,是国内一家知名手机厂商。
早期的魅族 科技 是做MP3起家的,从一文不名,到成为国内MP3随身听领域的第一品牌,魅族只用了3年时间。
年魅族发布了中国第一款大屏幕全触屏智能手机--魅族M8,口碑能媲美当时的iPhone 3GS,还被微软公司收藏在公司展厅,可谓是出道即巅峰。
第二款手机魅族M9被称为国产机皇,火爆到消费者在专卖店门前排起了长龙,一时风头无两,而这对于魅族来说才刚刚开始。
魅族MX系列曾连续四年蝉联世界第一窄边框,其中MX4 Pro是中国第一部前置指纹识别的手机。
魅族还是中国最早有粉丝文化的手机公司,并且也是国内最早做性价比的手机厂商。魅族创始人黄章对于手机行业的额理念在很大程度上影响到了雷军,雷军在创立小米之前,曾一度想要投资魅族。
在中(兴)华(为)酷(派)联(想)还在做低端补贴机时,魅族手机已经凭借其精美的设计、极致的性价比扬名海内外。
年是xp源码 赠送中国魅族的巅峰时期,手机销量达到万部。在中国智能机时代最初的那几年,魅族已经走在了国产手机的前列。
魅族早期积累了大量的粉丝,也就是我们所说的“魅友”。截止到年,魅族Flyme OS累计用户量突破1亿。
国产手机品牌都是请代言人的,唯独魅族例外,因为它始终相信用户才是品牌最好的代言人,所以一直被行业人士称为手机圈的一股“清流”。
你用过魅族手机吗? 单选 0 人 0% 从来没用过 0 人 0% 以前用过 0 人 0% 现在还在用 投票
小米的发展史是什么?
手机,是现代社会极其重要的通讯工具,曾被誉为世纪最伟大的发明之一。手机历史可追溯到年,年,苏联工程师列昂尼德.库普里扬诺维奇发明了ЛК-1型移动电话,这就是最早的移动电话。
手机的前身是座机电话,英国物理学家麦克斯韦提出电磁波理论后,终于在数十年后得到验证。座机电话由美国科学家贝尔发明(年),此后,电话的方便传遍了整个世界。
手机在早期体积非常大,大小与砖头差不多,因此又被称为“板砖电话”,“水壶电话”等。早期手机的著名代表诺基亚,摩托罗拉等,尔后有更多的牌子出现,两大老牌逐渐淡出市场。
2年,触摸屏技术发生飞跃性的突破,原本只属于国家拥有的触摸屏开始广泛进入民间,年,全世界将近%的手机都使用了触摸屏技术。年后,世界范围内%的手机和智能产品都实现了触控智能化。
现今手机的著名代表:
外国品牌:iphone,三星电子,黑莓。
中国品牌:华为,魅族,小米,oppo,vivo,TCL,联想,步步高。
智能手机谁先发明的?
小米1是小米公司专为发烧友级手机控打造的一款高品质智能手机。手机ID设计全部由小米内部来自摩托罗拉的硬件团队完成,手机生产由富士康和英华达代工。手机操作系统采用小米自主研发的MIUI操作系统。第一代小米手机于年月正式发布,售价元.小米2于年8月日在北京艺术中心正式发布;小米2采用4.3英寸超高PPI 触摸屏,处理器采用全球首款采用纳米四核1.5GHz处理器的高端智能手机,被媒体称为“性能之王”、“性能怪兽”!配备2GB RAM和GB机身内存,新一代背照式万像素主摄像头,万像素前置摄像头,硬件配置震撼。
小米2A是小米公司于年4月9日米粉节上推出的新款机型。其作为小米2S的青春版,硬件配置较比小米2S有所缩水,同时价格也较比小米2S低。配置方面,该机搭载了一颗主频为1.7GHz的骁龙MSMA Pro双核处理器,该处理器采用nm技术,在功耗和性能上达到了较好的平衡。
年4月9日下午小米科技在北京米粉节上发布了两款新品——小米2S和小米2A。小米2S外观与前作小米2并无区别,主要针对处理器及摄像头(GB版)进行了升级。
年9月5日下午2点,小米公司在北京国家会议中心举行新品发布会,正式发布其产品小米3。采用了全球首发的NVIDIA Tegra 4和高通骁龙最新版“8×AB系列”中的 AB(联通制式) 和 AB(电信制式)顶级四核处理器
小米4是小米公司于年7月日下午2点,在北京发布的第四代小米手机,小米4搭载高通骁龙(V3)2.5GHz处理器,提供前万和后万像素索尼f/1.8摄像头。活动管理页面源码运行基于Android 4.4的MIUI 6系统。相较于前代小米手机来说,工艺方面有了较大的进步。
小米4C是小米4i的国行版本,自称为“安卓小王子”,于年9月日发布。小米4C采用5英寸p屏幕,采用一体化聚碳酸酯材质机身(不可拆卸),搭载骁龙六核处理器,配置与小米4i相比更加强大。拥有多彩配色可选。
小米4S,于年2月日发布小米4升级版小米4S,售价元.配备位骁龙处理器、采用金属与双面玻璃的经典设计,加入时尚的线条与纹理,同时还拥有简洁、轻薄的外观。全网通2.0以及搭载指纹识别的时尚5英寸屏幕手机
小米note 发布于年1月日,分为两个版本即小米Note标配版和小米Note顶配版,小米Note售价分别为元起和元.小米Note作为旗舰机型不仅拥有双卡双待功能,同时还支持移动/联通双4G,其所支持网络制式为5种,频段覆盖更是达到了个之广。
小米公司于年2月日正式发布的年度旗舰手机第五代小米手机,也是年小米最为重要的产品之一。小米5搭载骁龙处理器,采用了微晶锆纳米3D陶瓷机身,相比玻璃材质成本贵%,高达8莫氏硬度,坚固耐磨,道工序精工打造,带来天然温润。
小米Max是在MIUI8发布会上发布的,这也是小米历史上首次采用6.英寸的大屏,是一次努力的尝试,但是发布之后备受大屏手机用户的欢迎。该机采用了/的处理器,在性能方面做的非常出色。也同时搭载了mAh的大电池,续航都不是问题
小米5s在年9月日正式发布,采用定制高亮屏以及骁龙旗舰处理器,首创无孔式超声波指纹识别,“暗夜之眼”超感光相机。配备能刷卡的NFC 功能,更快的4G+网络、高达nit 高亮度压感屏。众多黑科技,正在改变着手机体验的一点一滴。
小米5s Plus搭载了骁龙处理器,最高主频可达到2.GHz,采用了5.7寸的大屏,后置的指纹识别。全新的黑白方案双摄。该机目前售价元起
小米5c是在今年的2月份澎湃芯片发布会上发布的,该机摄像头采用了和小米5s差不多的暗夜之眼相机。前置的指纹识别。流行的外观设计。澎湃快充。目前,该机售价元。
小米MIX是北京时间年月日小米新品发布会上,发布的一款概念手机。硬件方面,小米MIX采用6.4英寸屏幕,骁龙,4+GB,万像素PDAF相机,mAh电池,支持QC3.0,支持高精度SAP辅助定位,支持HD高清音质。并且MIX还有尊享版,搭配6+GB内存,配有专享定制真皮保护套。售价方面,小米MIX售价/。
小米Max 2是小米公司年5月日发布了一款电池容量达毫安的手机,该机将主打大屏大电量。小米Max 2搭载高通骁龙处理器,辅以4GB RAM+GB/GB机身存储,趋势头皮源码配备双功放扬声器。增加了分屏功能,小米Max 2 4+GB版售价元;4+GB版售价元,年6月1日线上线下现货发售。
小米Note 2是小米公司年月日在北京大学体育馆举办了发布会,会上带来了其最新旗舰产品。该机拥有双曲面屏幕,在时尚而富有科技感的外观下,该机的定位自然是年青一代的用户群体。颜色方面,小米Note2拥有亮黑色以及冰川银配色。
小米手机6是小米公司在年4月日正式发布旗舰机,成为国内首款配备骁龙处理器的手机。 相关售价为:小米6+GB版售价元,GB版为元,陶瓷尊享版为元。
小米5X是同期MIUI9发布会上发布的,该机最大的亮点就是变焦双摄,采用了和小米6旗舰手机同样的双摄方案,隐藏式的天线。外观方面采用了最流行的外观。另外,还有小鲜肉吴亦凡的加持,更让这款机型在线下更具有竞争力。
智能手机发展史——经典机型回顾 上
IBM公司和BellSouth合作制造的Simon (西蒙个人通讯设备)是世界公认的第一部智能手机。品牌:IBM,运营商:CenturyTel,Simon于年上市,最初的售价高达美元,按今天的标准来看,Simon就显得有些笨重了,厘米长的机身有半公斤重。但是千万不要小瞧它,在年前,它算是开了智能手机的先河。Simon没有实体按键,搭载了一块LCD触控屏。这样的配置在那个年代堪称奇迹。为了庆祝此款手机的生日,伦敦科学博物馆将在新设立的“信息时代”展馆中展示这部设备。
扩展资料:
智能手机,是指像个人电脑一样,具有独立的操作系统,独立的运行空间,可以由用户自行安装软件、游戏、导航等第三方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入手机类型的总称。
智能手机具有优秀的操作系统、可自由安装各类软件(仅安卓系统)、完全大屏的全触屏式操作感这三大特性,其中Google(谷歌)、 苹果、三星、诺基亚、HTC(宏达电) 这五大品牌在全世界最广为皆知,而小米(Mi)、华为(HUAWEI)、魅族(MEIZU)、联想(Lenovo)、中兴(ZTE)、酷派(Coolpad)、一加手机(oneplus)、金立(GIONEE)、天宇(天语,K-Touch)等品牌在中国备受关注。
智能手机的诞生,是掌上电脑(PocketPC)演变而来的。最早的掌上电脑并不具备手机通话功能,但是随着用户对于掌上电脑的个人信息处理方面功能的依赖的提升,又不习惯于随时都携带手机和PC两个设备,所以厂商将掌上电脑的系统移植到了手机中,于是才出现了智能手机这个概念。智能手机比传统的手机具有更多的综合性处理能力功能。
参考资料:
触摸屏发展历史
年 4月,在经历了超过十年的研发后,摩托罗拉发布了全球第一台手机——DynaTACX。自此开始,手机正式进入了我们的生活。而后随着时代的mob短信接口源码发展, 科技 的进步,手机又进行了一次大改革,那就是从功能机到智能手机的转变。在智能手机登场后,手机行业的发展也是进入到了一个高潮,各大手机厂商不断发力,各式各样的智能手机纷纷上市,让我们眼花缭乱,其中的优秀机型众多。今天,就让我们一起来回顾一下自智能手机兴起后各大手机厂商推出的经典机型吧。
一、iphone 2G
年1月9日,苹果公司在美国旧金山马士孔尼会展中心召开了Macworld大会,会上苹果公司的首席执行官史蒂夫·乔布斯在舞台上发布了一款自PC以来最具变革性的产品——iphone 2G。
初代iPhone采用的是一款3.5英寸LCD屏幕,分辨率为 像素,ppi,支持多点触控。相比较当时的手机最大的变化就是它抛弃了物理键盘和手写笔,大部分操作都将由用户触控屏幕实现,这在黑莓、Palm Pilots 以及翻盖手机主导的市场上闻所未闻。
在会上乔布斯一一介绍了多点触控界面的功能,让 iPhone 可以流畅地缩放,以及多任务处理功能,实现从音乐到网络、再到电子邮件的无缝切换,其中最为经典的是滑动解锁功能,当时乔布斯的轻轻一划解锁屏幕引发台下雷霆般的掌声。这些技术现在看来是理所当然的操作,但在当时看起来就像是科幻小说中的一般。
二、魅族M8
年2月日,在经历了重重困难后,魅族的第一款智能手机M8正式登场,魅族M8可以说是一款具有里程碑意义式的智能手机,它不但是魅族的第一款智能手机,更是第一部国产智能手机。
手机的设计十分简洁,屏幕上面有一个三孔式听筒,下面则是功能按键,并且有个“M”logo。背面也同样的简单,摄像头被安排到了左上角,后盖为分体式,下半部分才是电池后盖,拆卸也能够比较方便。手机四周的接口和按键都不多,每一个安排和设计都不是多余的,比如电源、耳机孔、usb数据接口等,其精美的设计更是被微软总部纳入永久收藏。
推出仅仅两个月,销量就已达到万部,短短5个月,销售额就已突破5亿元。当时人们为了购买M8更是在魅族门店排起了长队,这样的盛况,只在iPhone手机上市时才看得到。在年其他的国产手机厂商几乎全线亏损、哀鸿遍地的背景下,魅族M8的逆市崛起,可以说是一个天大的奇迹。
三、 HTC Touch HD2
HTC TouchHD系列可以说是HTC 旗舰 中的旗舰,拥有4.3寸超大屏幕和强悍的硬件配置。 年,第二代 TouchHD系列登场了。作为HD的升级版,HD2在各方面都全面超越了它的上一代。搭载Windows Mobile 6.5系统,采用4.3寸电容触摸屏,分辨率也保持在WVGA( x像素 )。
核心硬件方面,搭载当时主频最高的高通 Snapdragon QSD 的1GHz处理器,匹配MB RAM+MB ROM的内存组合( RAM可经解锁从MB提升至MB,ROM不变 ),支持 MicroSD卡 扩展,内置WiFi、蓝牙2.1模块,GPS芯片,3.5mm耳机接口,MiniUSB数据线接口,FM收音机,以及多款应用程序等等。
超大的屏幕带来超乎寻常的视觉体验,以及顶尖的硬件性能都注定它必受万人瞩目。然而,这还不是最让用户惊喜的事,最让机油们欣喜的是HD2在系统兼容性方面的强悍。
据各大刷机网站放出的刷机资料显示,HD2除了它的自带系统 Windows Mobile 6.5之外,已经可以直刷安卓4.2以及4.3,而且这台老家伙又吃上了安卓4.4(Bug较多),HTCHD2还能运行Android 7.0。上一代 Windows Phone 7系统的刷机教程也早已成熟。而Firefox OS,也已经可以被HD2支持了,虽然还有一点小bug。
拥有如此出色的功能加上华丽的外观,HD2可谓内外兼修,不愧其“刷机之王”的称号!
四、三星 Galaxy S
年 3月份,三星的Galaxy系列又发布了一款旗舰手机——Galaxy S,型号为i。
三星i采用了大屏幕触摸的设计,机身三围达到了.4 .2 9.9mm。虽然尺寸很大,但i的机身重量却只有克,在同等级的机型中绝对算得上是最轻的。
屏幕的底部只有一个方块状的实体按键,左右两侧分别是虚拟功能键和返回键。机身背面是一整块塑料材质的电池后盖,背面的亮面材料加上星星点缀非常漂亮。单就从外观方面来看i就具有旗舰气质,拿在手中非常的大气。
i最出色的地方就是屏幕了,其搭载一块4.0英寸的超大电容显示屏,屏幕色彩为万色,分辨率达到了WVGA( 像素 )。更值得一提的是i是继S之后又一款配备了Super Amoled屏幕的手机,在显示效果上绝对达到了世界顶级,即使iPhone也不是对手。
当然,除了屏幕外, i的其余硬件方面也丝毫不弱, 内置MB RAM+GB ROM的存储空间组合,后置万像素( P摄像 )摄像头,支持触点对焦,无论是拍摄模式还是拍摄场景上都有非常丰富的选项,出厂运行Android 2.3操作系统。
五、iPhone 4
年 6月 8日(北京时间),苹果公司在美国旧金山发布了新一代手机产品——iPhone 4。
自初代iPhone登场后,虽然每代iPhone都进行了很大的升级改变,但在外观方面,连续三代iPhone都没有什么变化,这也不免让人审美疲劳了。而现在,iPhone 4的登场打破了这个局面。
较于前几代iPhone,iPhone 4的改变可以说是翻天覆地般的。外观方面前后机身采用铝矽酸盐玻璃制造,还具有防油脂涂层,而环绕iPhone 4外壳的是由定制合金锻造而成的高精致不锈钢带。双面玻璃加金属中框的设计,让iPhone 4看起来十分精美,宛如一个艺术品。会上,乔布斯盛赞了iPhone4的设计。
而在硬件方面,屏幕尺寸虽然不变,但显示效果有了很大的增强,分辨率为x,屏幕PPI高达像素。
处理器采用自家研发的A4芯片,虽然A4处理器与三星S5PC的核心布局是相似的,不过苹果在A4上进行了极大程度的优化和定制,摒弃了iphone4或iPad所不需要的模块,并加大了二级缓存以提高性能。置了三轴陀螺仪,可与方向感应器配合提供六轴动作感应 ,还加入了一颗万像素的前置摄像头。
六、小米M1
在 小米公司成立之初,就将“为发烧而生”作为其产品概念。在这样的环境下,小米M1应运而生。 年 8月日,小米公司正式推出了其旗下的第一款智能手机,这款手机 是 小米公司 专为发烧友级手机控打造的一款高品质智能手机。
小米M1采用一块 直板全触屏,屏幕尺寸为夏普4.0英寸液晶屏,分辨率为x。搭载主频1.5GH高通骁龙QSD双核处理器,运行内存1G,机身内存4G并支持最高G的MicroSD存储卡扩展,后置万像素主摄像头,mAh可更换电池。综合来看,小米M1的硬件配置在当时确实算得上是一部非常顶级的“水桶机”配置。
除此之外,小米M1的 操作系统采用的是小米根据google开源 android系统 源码修改后的MIUI操作系统,相比原版的安卓系统,MIUI不仅更为流畅,功能性方面也更加完善。
然而最让用户惊喜的是其价格, 采用旗舰硬件配置的小米M1发售价格仅为元,这在当时的高端智能机市场无疑是投下了一颗重磅炸弹,也真正意义上重新定义了“性价比”这个普通消费者耳熟能详的概念,让大家知道了,原来低价格也可以买到高配置的智能手机产品。
1.谈谈触屏历史是怎么样的
年,在美国一所大学当讲师的自家小作坊里制作出最早的触摸屏。
当年,山姆因工作关系每天要处理大量图形数据,因而不胜其烦,他想发明一种能提高工作效率的设备,通过把图形放在平板上或者用笔在平板上施加压力就能将图像数据保存起来。于是就有了最早的触摸屏"AccuTouch"。
年,美国《工业研究》杂志将触摸屏技术评为"最重要的一百项新技术产品"之一,并预言这种技术将得到广泛运用。在这一百项被看好的技术产品中,还有当时并不起眼如今同样广为应用的鼠标和硬盘等。
之后,山姆成立了自己的gongsi,并于西门子合作,开发了一系列用于jun事电子产品,如雷达和Jun用的监控装备的触摸屏。直到年,山姆的gongsi在美国消费电子展览会上展出了台安装了触摸屏的电视机,平民百姓才第一次亲手"摸"到神奇的触摸屏,引起巨大轰动。
好了,关于“触屏智能手机发展史”的讨论到此结束。希望大家能够更深入地了解“触屏智能手机发展史”,并从我的解答中获得一些启示。
Linux下CVS的安装配置与操作命令全解析
在介绍CVS命令之前,先说点别的
如以前说,仓库内除乐源文件外,还包括一系列的管理文件.位于$CVSROOT/CVSROOT
修改管理文件的方法等同于源代码文件,利用CVS命令提取和修改.
下面描述每个文件的用途:
checkoutlist 支持CVSROOT目录的其它管理文件,允许为各种CVS命令定置信息
commitinfo 在cvs commit命令执行时,这个文件指定乐文件提交时执行的命令
cvswrappers 定义乐一个包装程序当文件登记或检取时就会执行.
editinfo 允许你在commit命令启动前在日志信息被记录后执行的脚本
history 跟踪所有影响仓库的命令
loginfo 类似coimmitinfo, 只是在文件提交后执行
modules 允许为一组文件定义一个符号,否则必须为每一个要引用的文件
指定部分路径名(相对于$CVSROOT)
nitify 控制从/"watch/"来的通知./"watch/"由/"cvs watch add/"和/"cvs edit/"
设置
rcsinfo 为commit log回话指定一个模板.
taginfo 定义乐在任意/"tag/"操作后执行的程序.
CVS服务器的安装
默认情况下,CVS在Redhat Linux中已经安装,这一点可以通过在Linux命令行的情况下运行:
代码如下:
rpm –q cvs
如果出现CVS的版本信息就证明已经安装成功了。
CVS服务器安装包可以从网上的很多地方下载,也可以到CVS的官方网站进行下载。根据你所使用的系统,下载相应的版本,然后进行安装。因为我们的项目是在Redhat Linux下使用CVS服务器进行版本管理,所以本文将主要基于Redhat Linux进行介绍。首先下载CVS服务器的rpm包,当然也可以下载其它方式的包如源程序包,然后采用以下命令进行安装:
代码如下:
rpm -ivh cvs-1..7-1.i.rpm
CVS服务器的配置
安装完之后的第一件事就是要配置CVS服务器的配置文件,使其能正常的工作。首先在/etc/services文件中添加cvspserver,使其成为Linux的一种服务也就是cvs服务器例程的入口,配置如下:
cvspserver /tcp # cvs client/server operations
cvspserver /udp # cvs client/server operations
如果文件中已经存在上面的两行文字,就不用添加了。
配置xinetd,用xinetd来启动CVS验证服务器:
进入到/etc/xinetd.d/目录,然后编辑一个文本文件,名字一定要与/etc/services中的入口名字cvspserver一致,所以这里用cvspserver作为文件名,文件的内容如下所示:
代码如下:
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/usr/cvsroot pserver
log_on_failure += USERID
}
编辑文件之后测试cvspserver服务是否配置成功。
执行
代码如下:
/etc/init.d/xinetd restart
重新启动服务,启动成功之后,执行下面的语句,验证服务是否启动正常:
代码如下:
telnet localhost
如果出现如下字样:
Trying .0.0.1...
Connected to localhost.
Escape character is '^]'.
输入hi,会继续输出如下字样
cvs [pserver aborted]: bad auth protocol start: hi
Connection closed by foreign host.
出现以上的现象表示CVS用户验证服务器已经配置成功。
如果出现如下字样,表示配置不成功,请重新检查以上的配置:
Trying .0.0.1...
telnet: connect to address .0.0.1: Connection refused
CVS的环境变量
CVS使用乐几个环境变量
CVSROOT 仓库根目录的完整路径名
CVSREAD 如果设置,表明在checkout操作时所有的文件都置成只读
CVSBIN CVS利用乐很多RCS的命令,指定乐RCS工具的路径
CVSEDITOR 指定用户书写日志信息所使用的编辑器
CVS_RSH 启动一个远程CVS服务器时,所使用的shell的名称
CVS_SERVER 决定/"cvs server/"的名字,缺省是CVS
CVSWRAPPERS cvswrapper脚本, 用来指定包装文件名.
关键字
管理源文件的一种技术叫/"关键字替换/".在每次执行/"cvs commit/"操作后
源文件的某些关键字会被替换为可用的词
$AUTHOR$ 用户名
$Data$ 登记时的时间
$Header$ 标准的首部,包含RCS的完整路径名,日期,作者
$Id$ 除RCS文件名不完整外与$Header$同.
$Log$ 包含RCS的完整路径名,版本号,日期,作者和在提交时提供的日志信息.
$RCSfile$ 包含RCS的文件名,不包括路径名
$Revision$ 分配的版本号
$Source$ RCS文件的完整名
$State$ 分配的版本的状态,由 cvs admin -s 分配.
例:
在cvs commit之前,main.c里有
static char *rcsid=/"$Id$/";
执行cvs commit后
main.c的改行变为:
static char *rcsid=/"$Id: main.c,v 1.2 // :: trimblef Exp$/";
下面开始说说CVS的命令
我们已下面仓库的数据为例
$CVSROOT
--CVSROOT
--project
--src
--main
--main.c
--main.h
--print.c
--print.h
--term
--term.c
--term.h
CVS checkout 命令
从仓库提取指定的文件到当前目录,并建立同样的结构,并创建CVS目录
例
代码如下:
bash$ cvs checkout project
bash$ cvs checkout project/src/main
为使用便利,我们可以对一个目录建一个缩写,方法是修改$CVSROOT/CVSROOT/下的
modules文件.(当然是用cvs 命令完成)
代码如下:
cvs checkout CVSROOT/modules
cd CVSROOT
vi modules
我们在文件尾加上
代码如下:
src project/src
print project/src/print
cvs commit
以后我们就可以用cvs checkout print来代替
cvs checkout project/src/print
cvs checkout命令缺省是得到最新版本.我们也可以得到某一个老版本
代码如下:
cvs checkout -r 1.1 print
将print的1.1版的代码取出.
cvs checkout的详细用法见cvs -H checkout的输出.
CVS commit 命令
在对文件的修改完成后,用cvs commit提交到仓库.
代码如下:
cvs commit -m /"Update by xxxxx/" project
cvs commit -m /"Update main.c/" main.c
提交完成后,当前的版本号会更新,如原来为1.1,现为1.2. 这两个版本都在
仓库的主干(maintrunk)上.
-m选项可以记录有关提交的注释.如果没有指定-m选项,在环境变量CVSEDITOR
中指定的编辑器被调用(vi是缺省的),提示键入文本,修改记录注释.
CVS update
CVS允许多人同时对一个文件进行修改.
假设泥正在修改文件的一部分,现想合并更新自己的本地拷贝(checkout)和
另一个人所做的修改(已经放在仓库里),可用cvs update
代码如下:
cvs update
CVS tag , CVS rtag
创建分支可以使用户对一些文件进行修改而不会影响主干(当commit时).
创建分支首先为拟修改的某些文件创建一个标签(tag),标签是赋于一个文件或一组文件的符号.在源代码的生命周期里,组成一组模块的文件被赋于相同的标签.
创建标签:在工作目录里执行cvs tag
例: 为src创建标签:
代码如下:
cvs checkout src
cvs tag release-1-0
标签创建后, 就可以为其创建一个分支:
代码如下:
cvs rtag -b -r release-1-0 release-1-0-path print
-b :创建分支
-r release-1-0 :指定存在的标签
releas-1-0-patch:分支
print: 模块名
合并
使用cvs update -j 选项可以将分支上的改变与本地文件拷贝合并.
代码如下:
cvs update -j release-1-0 print.c
cvs release
对源文件作必要修改后, 可以用cvs release 删除本地工作拷贝
并通知其他开发者这个模块不再使用.
代码如下:
cvs release -d print
-d : 删除
print: 目录
冲突
由于CVS允许多人同时修改同一文件,冲突是不可避免的.例如当两人
同时修改同一文件的同一行时.
这时,如用cvs update 更新,CVS检测到冲突的存在,它会将冲突的代码
用/"/"标识.这时需手工处理这段代码.与引起
冲突的开发者协商,并对文件修改后即可用cvs commit提交.
如何在PC上正确播放4K HDR视频
在探讨如何在个人电脑上正确播放4K HDR视频之前,首先需要了解如何分辨一部视频是否为真正的HDR内容。通过使用Mideainfo软件并检查HEVC编码、HDR、PQ、bit、BT.等描述,可以断定视频为HDR格式,最高画面亮度需求可达nit。面对颜色淡、亮度不足的问题,正确的解决方案是使用Madvr滤镜,以确保HDR内容的正确映射。对于Windows用户,开启HDR开关后,MPV、VLC、Kodi等播放器以及使用MadVR滤镜的Potplayer、MPC-HC等工具可以正确播放HDR格式的片源。此外,VLC还支持HLG格式片源的正确播放和显示。
随着科技的进步,播放器功能的增强,MPC VR滤镜被完美解码集成,使得HDR播放体验更加流畅。如果你的PC配备了支持HDR的显示器,连接并开启HDR模式,可以充分利用显示器的高亮度和广色域特性,享受更佳的视觉体验。连接电视时,确保使用支持HDR的HDMI端口,并在设置中开启相应的增强模式。在Windows系统中,通过设置播放HDR游戏和应用,可以激活HDR模式,使用PQ感知量化曲线和BT色彩空间,以替代传统2.2伽马的sRGB模式。在Windows HD Color设置中,确保播放HDR游戏和应用以及流式传输HDR的开关打开,非HDR画面在显示器上的亮度设置可以根据显示器的HDR等级进行调整。开启Windows HDR开关后,显示设备的亮度会自动设为最大值,SDR内容则受到限制以避免过亮。
为了验证播放软件是否正在输出HDR画面内容,可以使用截图软件截图,图像高亮部分为白色即代表为HDR状态。SDR内容未经限制直接以高亮度显示可能会导致视觉不适,而HDR视频则遵循特定的亮度规则。在Windows 系统中,无需特别开启HDR开关,使用Madvr作为渲染器,全屏播放即可自动输出HDR,并激活电视的HDR状态。此外,Windows自带的“**和电视”播放器,通过购买HEVC解码器,提供了流畅的操作和媲美索尼内置播放器的画质,支持MKV的内置字幕和音轨,以及选择外挂字幕。在连接支持HDR的显示器或电视时,播放器可以完美实现包括DTS、DTS HD、TrueHD、DD+(EAC3)的源码输出,对于杜比ATOMS音轨的源码输出,可能至少正确输出了其中的TrueHD,但具体情况还需进一步验证。
对于杜比视界profile 5.0的MP4格式,即WebDL类流媒体所用的单层杜比视界片源,在Windows 下可以安装dolby vision+hdr.appxbundle插件来解决偏色问题,但只能使用**与电视播放器播放,且需要先安装HEVC解码器,开启win HDR开关后,可以得到HDR图像观感。此外,Kodi播放器现在支持HDR和4K原盘导航,搭配个人电脑(HTPC)使用,体验更加流畅。对于连接支持HDR的电视时,确保在电视端也开启HDR模式,以实现完整的HDR体验。总体而言,通过正确的设备配置和软件选择,用户可以在个人电脑上轻松播放和欣赏4K HDR视频,享受更佳的视觉效果。
汇编语言中的offset是什么意思?
LEA和OFFSET这两条指令在功能上是相同的,BX寄存器都可得到符号地址LIST的值,而且此时MOV指令的执行速度会比LEA指令更快。但是,OFFSET只能与简单的符号地址相连,而不能和诸如LIST[SI]或[SI]等复杂操作数相连。因此,LEA指令在取得访问变量的工具方面是很有用的。
OFFSET是将数值回送变量或标号的偏移地址值LEA是将数值回送变量或标号的有效地址值SEG, 汇编程序将回送变量或标号的段地址值。
扩展资料:
LEA是微机/系列的一条指令,取自英语Load effective address——取有效地址,也就是取偏移地址。在微机/中有位物理地址,由位段基址向左偏移4位再与偏移地址之和得到。地址传送指令之一。
Offset是Excel中的函数,在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。Reference 作为偏移量参照系的引用区域。Reference 必须为对单元格或相连单元格区域的引用。
SEG(Searl-Effect Generator)是一部不需要能源的发电机,它可以收集能源,但不需要使用任何燃料。当SEG的滚筒很靠近环状体时,瑟尔效应的共振磁场会使周遭环境里的负离子与电子被吸进这部机器并在里面加速。稀土族金属元素「钕」对电子具有高度的吸引力,因而促进了这个过程。
参考资料:
解读useEffect和useLayouEffect原理
背景
写这篇文章是因为工作上不是非常繁忙,可以抽空学习自己常用框架和类库,深入理解它们,在技术上希望有更大的进步,培养学习兴趣;
useEffect和其它hooks一样,加载和更新执行不一样的方法(mountEffect和updateEffect);
1.mountEffect页面加载时,执行mountEffect;
创建hook对象,加入组件的hook单向链表;
在组件的fiber的flag中加入副作用相关的effectTag;(加载期间默认有layoutEffect和effect的副作用)
创建effect对象,给hook对象的memoizedState和加入组件fiber的updateQueue中形成effect环状链表;在渲染工作完成后,会循环这个环状链表,执行每个effect对象的destory和create;
consteffect={ tag,create,destroy,deps,next:null};tag是effect的类型tag为9是useEffect,5是useLayoutEffectcreate是useEffect或useLayoutEffect的回调函数destroy是create返回的回调函数deps是useEffect或useLayoutEffect的依赖数组next指向下个effect对象;1.1.effect环状链表图functionpushEffect(tag,create,destroy,deps){ consteffect={ tag,create,destroy,deps,next:null};//新创建的effect对象为最后为effect链表的一个effect对象,componentUpdateQueue.lastEffect会指向新创建的effect对象//新创建的effect对象的next会指向第一个effct对象;letcomponentUpdateQueue=(currentlyRenderingFiber.updateQueue);if(componentUpdateQueue===null){ //当前没有updateQueuecomponentUpdateQueue=createFunctionComponentUpdateQueue();//创建updateQueuecurrentlyRenderingFiber.updateQueue=componentUpdateQueue;//形成一个环状链表componentUpdateQueue.lastEffect=effect.next=effect}else{ constlastEffect=componentUpdateQueue.lastEffect;if(lastEffect===null){ componentUpdateQueue.lastEffect=effect.next=effect;}else{ //第一个effect对象为最先创建的的effect对象constfirstEffect=lastEffect.next;//获取第一个effect对象lastEffect.next=effect;//旧的最后一个effect对象的next,指向新创建的effecteffect.next=firstEffect;//新创建的effect对象的next指向第一个effectcomponentUpdateQueue.lastEffect=effect;//updateQueue的lastEffect指向effect,新创建的effect变为最后一个effect对象}}returneffect;}2.updateEffect页面更新时,执行updateEffect;
根据hook单向链表获取对应的更新时的hook对象,创建新的hook对象,加入hook单向链表;
如果effect的deps不为null,或者undefined,会从当前hook对象拿到上一次effect对象,再从effect对象拿到deps和destroy,用新的deps与之比较;
如果新老deps相等,push一个不带HookHasEffect的tag给effect对象,加入updateQueue环状链表(这个effect不会被标记为有副作用,所以,effect的create和destroy不会被执行),不更新hook.memoizedState;
如果新老deps不相等,更新effect对象,在effect的tag中加入HookHasEffect和上一次create执行的destroy,更新hook.memoizedState;
3.useEffct的回调函数和销毁函数的执行时机在render时期构建effect链表;在commit时执行先执行之前没有执行完的useEffect,然后,在beforeMutation阶段操作dom前,以NormalPriority常规优先级添加一个异步任务到任务队列(这个异步任务是用来执行useEffect的destroy和create的),在layout阶段完成,页面完成渲染后,执行在beforeMutation阶段添加的异步任务;
3.1.commit开始时主要是为了执行之前没有执行的useEffect
进入commit阶段,这和useEffect异步调度的特点有关,它以一般的优先级被调度,意味着一旦有更高优先级的任务进入到commit阶段,上一次任务的useEffect还没得到执行。所以在本次更新开始前,需要先将之前的useEffect都执行掉,以保证本次调度的useEffect都是本次更新产生的。
functioncommitRootImpl(root,recoverableErrors,renderPriorityLevel){ do{ //`flushPassiveEffects`willcall`flushSyncUpdateQueue`attheend,which//means`flushPassiveEffects`willsometimesresultinadditional//passiveeffects.Soweneedtokeepflushinginaloopuntilthereare//nomorependingeffects.//TODO:Mightbebetterif`flushPassiveEffects`didnotautomatically//flushsynchronousworkattheend,toavoidfactoringhazardslikethis.flushPassiveEffects();}while(rootWithPendingPassiveEffects!==null);...省略代码}3.2.beforeMutation只会发起一次useEffect调度,是异步调度,以NormalPriority常规优先级添加一个异步任务在任务队列中(push(timerQueue,newTask)),在页面渲染完成时,会执行这个异步任务
functioncommitRootImpl(root,recoverableErrors,renderPriorityLevel){ ...省略代码if((finishedWork.subtreeFlags&PassiveMask)!==NoFlags||(finishedWork.flags&PassiveMask)!==NoFlags){ if(!rootDoesHavePassiveEffects){ rootDoesHavePassiveEffects=true;scheduleCallback$1(NormalPriority,function(){ //添加一个异步任务到任务队列flushPassiveEffects();//Thisrendertriggeredpassiveeffects:releasetherootcachepool//*after*passiveeffectsfiretoavoidfreeingacachepoolthatmay//bereferencedbyanodeinthetree(HostRoot,Cacheboundaryetc)returnnull;});}}...省略代码}3.3.layout加载时,只执行useEffect的create函数即可;
如果pendingPassiveEffectsLanes是同步赛道,就在页面渲染完直接执行useEffect的create和destroy,在beforeMutation时添加的异步任务,不会执行useEffect的create和destory
if(includesSomeLane(pendingPassiveEffectsLanes,SyncLane)&&root.tag!==LegacyRoot){ //加载期间默认是不走这里的//这里也是执行useEffect的create,如果pendingPassiveEffectsLanes是同步赛道,//就在渲染完成后直接执行useEffect的create和destory//在beforeMutation时添加的异步任务执行时,不会执行useEffect的create和destoryflushPassiveEffects();}执行上一次useEffect的create返回的destroy,拿到函数组件fiber的updateQueue,循环这个effect环状链表,拿到effect对象的destroy执行;
functioncommitHookEffectListUnmount(flags,finishedWork,nearestMountedAncestor){ varupdateQueue=finishedWork.updateQueue;varlastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){ varfirstEffect=lastEffect.next;vareffect=firstEffect;do{ if((effect.tag&flags)===flags){ //Unmountvardestroy=effect.destroy;effect.destroy=undefined;if(destroy!==undefined){ { if((flags&Passive$1)!==NoFlags$1){ markComponentPassiveEffectUnmountStarted(finishedWork);}elseif((flags&Layout)!==NoFlags$1){ markComponentLayoutEffectUnmountStarted(finishedWork);}}safelyCallDestroy(finishedWork,nearestMountedAncestor,destroy);//执行destroy{ if((flags&Passive$1)!==NoFlags$1){ markComponentPassiveEffectUnmountStopped();}elseif((flags&Layout)!==NoFlags$1){ markComponentLayoutEffectUnmountStopped();}}}}effect=effect.next;}while(effect!==firstEffect);}}执行完所有组件的destroy,再执行create;同理,也是拿到函数组件fiber的updateQueue,循环这个effect环状链表,拿到effect对象的create执行,然后把create返回的destroy给effect对象(留着下着更新执行useEffect时用);
functioncommitHookEffectListMount(flags,finishedWork){ varupdateQueue=finishedWork.updateQueue;varlastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){ varfirstEffect=lastEffect.next;vareffect=firstEffect;do{ if((effect.tag&flags)===flags){ { if((flags&Passive$1)!==NoFlags$1){ markComponentPassiveEffectMountStarted(finishedWork);}elseif((flags&Layout)!==NoFlags$1){ markComponentLayoutEffectMountStarted(finishedWork);}}//Mountvarcreate=effect.create;effect.destroy=create();{ if((flags&Passive$1)!==NoFlags$1){ markComponentPassiveEffectMountStopped();}elseif((flags&Layout)!==NoFlags$1){ markComponentLayoutEffectMountStopped();}}{ vardestroy=effect.destroy;if(destroy!==undefined&&typeofdestroy!=='function'){ varhookName=void0;if((effect.tag&Layout)!==NoFlags){ hookName='useLayoutEffect';}elseif((effect.tag&Insertion)!==NoFlags){ hookName='useInsertionEffect';}else{ hookName='useEffect';}varaddendum=void0;if(destroy===null){ addendum='Youreturnednull.Ifyoureffectdoesnotrequireclean'+'up,returnundefined(ornothing).';}elseif(typeofdestroy.then==='function'){ addendum='\n\nItlookslikeyouwrote'+hookName+'(async()=>...)orreturnedaPromise.'+'Instead,writetheasyncfunctioninsideyoureffect'+'andcallitimmediately:\n\n'+hookName+'(()=>{ \n'+'asyncfunctionfetchData(){ \n'+'//Youcanawaithere\n'+'constresponse=awaitMyAPI.getData(someId);\n'+'//...\n'+'}\n'+'fetchData();\n'+"},[someId]);//Or[]ifeffectdoesn'tneedpropsorstate\n\n"+'LearnmoreaboutdatafetchingwithHooks:/post/在电脑上怎么播放4K**视频新手教程
随着UHD蓝光碟片发行渐入佳境,网络视频发行也迎来高速发展,4K UHD HDR规格的影视剧片源真的越来越多了,如果你是个下载党,或者朋友丢给你个Net Flix最新剧集,一看是4K HDR,一定非常卡新。当然首先要确定这到底是不是一部真正的HDR视频,这时我们需要Mideainfo这个软件,这里强烈建议直接安装Klite Code Pack 的Mega版本,里面包含的不少东西像LAV和MadVR后面会用到。
1、MKV文件右键选择MediaInfo,当看到HEVC编码、HDR、PQ、bit、BT.这些描述,就可以断定是一部HDR格式的UHD视频了,而且能看到最高画面亮度需求为nit。
2、显示器开启HDR,接着在win桌面点右键,选择显示设置。
3、点开播放HDR游戏和应用的开关,屏幕黑一下,恭喜你开启了windows的HDR模式,这个模式专门为游戏和HDR视频准备,其他内容和界面颜色感觉有点怪怪的,可能因为我这台显示器并非广色域的缘故。接着点击Windows HD Color设置。
4、HDR UHD播放器推荐DVDFabPlayer5是我个人以及圈内达人普遍推荐的UHD播放器,支持HDR-SDR转换,完美实现HDR图像的还原,支持字幕、高规格无损音轨的本机解码或源码输出,基本上是全能的。当然PotPLayer+LAV+MadVR也可以用,但如果以索尼电视作为HDR还原图像参考的话,个人感觉比不上DVDFab。DVDFab虽好,但是不免费。
2024-11-23 07:10
2024-11-23 07:03
2024-11-23 06:25
2024-11-23 04:47
2024-11-23 04:43