有什么好玩的网页游戏可以推荐

  • f
    forever
    T-34/85能800米敲黑豹(鉴于T-34/85能1000米敲虎1,此数据可信)
    黑豹能多少米敲T-34/85我不清楚,有说法是1200米。不过这个数据有问题,原文是“4号H与黑豹能在1200米就能击穿T-34/85”,这数据有问题,黑豹的火力明显强过4号H。能1200干掉T-34/85的可能只有黑豹
    即便如此,与理论数据仍相去很远
    但要明白的是钨弹不是那么轻松地用的,钨弹基本可以说是一击必杀的撒手锏式、救命稻草式东西,不到关键时刻有很大命中把握是不会用的。而且钨芯弹初速下降快,远距离命中率本就不高(与高速轻弹的德国战列舰差不多)
    继续谈理论:在战斗中苏联人JS-2用其钨芯弹1500米打穿黑豹正面
    而黑豹钨芯1000米左右才能打掉JS-2(是早期型号而不是JS-2M)
    装甲黑豹与JS-2(尤其是M)则有较明显的差距。两者的装甲厚度/倾角平方的结果之比(基本可认定为两者倾斜装甲实际防御效果之比),差距较大
  • 孟德
    */-27唉又係問呢個問題
    我都唔知俾人問過幾多次呢個問題
    其實答案真係咁重要咩
    可能都係滿足下你一時既興奮
    但對整件事都無益處
    有心既話應該發表下自己意見
    而唔係問不切實際既問題

    你要我答你, OK, 我答你又有乜所謂
    反正呢D對我毫無難度既問題要考我都考我唔到
    但問題係你要問下自己究竟得到乜野
    無錯我係答左你但你自己有無用心諗過究竟我答左D乜
    好多人就係以為問問題問完得到答案就好滿足
    但事實係根本無人會思考過究竟個答案係點得黎
    係我知呢樣野對你黎講會有難度
    但我覺得事在人為姐
  • f
    forever
    我的数据是
    猎虎3000米能打穿173MM垂直,2000米200MM(垂直)
    看来和你的出入很大
    那就拜托用这个公式算算把

    T/D = (1728.04)(W/D^3)[(V/F)Cos(Ob)]^2

    T-穿深
    Ob-入射角
    V-动能
    D-口径
    W-射弹重量
    Cos-正弦三角函数

    我要下了,以算的结果为准。以后我再来
  • n
    nu123
    在玩Travian~~~~*/-27*/-27*/-27
  • f
    forever
    F是“额外的”角度折合系数,
    F=6*(T/D-0.45)(a^2+2000)+40000
    a是以度为单位的角度值

    这个公式里没有直接出现装甲的数据。
    由于F的形式里也存在着T/D,因此这是个迭代公式。
  • f
    forever
    豹比T-34/85重10吨
    装甲和火力稍强过T-34/85没什么奇怪,比同吨位的JS-2试试
    豹就真好用,库战两辆豹发动时就自燃,三辆豹爬坡时自燃……我吐
    可靠性能是任何坦克都没理由放弃的,而德国坦克就比苏联坦克差得多。JS-2能在零件停产的情况下服役到1992年,T-34/85甚至在一些地区冲突中仍能看到踪影。
    你们说T-34击中后阵亡率高,什么意思?豹被击穿后人就全能活下来?现代坦克被击穿运气不好的成员都要全死
    还是说坦克被击中后装甲后部迸裂出装甲碎块伤人?那就别比了,德国装甲脆得可以,而且德国坦克手没有专用头盔。喜欢说德国装甲质量好的给我听着:德国冶金技术就是算上表面硬化工夫,还是比苏美(尤其是美)要差
  • f
    forever
    《前进,黑豹》上黑豹的命中率统计数据,远远落后于虎1,也不如萤火虫(我在萤火虫的帖子里已经说了),豹G的故障率很高,和虎王有得一拼。
  • f
    forever
    我觉得俄罗斯人的88 或者90MM炮如果比的上德国老的88MM炮,那他们肯定不会用122, 炮的口径越大,精度越高? 那卡尔 巨炮不是可以当"战斧"用了,哈哈 . 上次"兵器" 采访 我国坦克设计师方先为时,记者问他59的105炮能打M1吗/ 他说 .105的精度比125炮 要高(不是线堂啊)
    特别是长身管的,可以在1000M处 比较准确打中M1的炮管,所以说炮弹的重量对精度的影响也是相对的, 就像你用石头投你个目标一样, 我想德88CM 炮的穿甲弹也不会轻的象棉花, 122的后坐力, 他的重量,对火炮的稳定要求很高, 122还用分装弹药,表面上威力十足, 我觉得精度绝对比不过L70的88炮, 射速虽然不像有的资料上说的2发/分, 但绝对不会比88MM快吧, 在东线的 一次战斗中,一个虎式坦克营在充当灭火队时,在火车站被JS-2与T-34 T-34/85 攻击, 虎一边上火车 ,另外有10辆虎冲出火车站一字排开和苏军对射,德军在长距离精确射击, 结果该营击毁50多辆苏军而无一损失,在已上车的虎的掩护下,当最后一辆虎开上火车时,火车开动了,拖着他们去另外的地方灭火.(兵器上的) 我想88炮和122在长距离对射,并不吃亏
  • g
    gougouamm1314
    资料贴 学习了。。
  • f
    forever
    经过2千米小心翼翼的搜索后,他们抵达了紧挨着捷克边境的米特霍夫村。望远镜里依然看不到任何苏联坦克,但是能见度已经逐渐转好了。德国人到一家农舍去询问情况,里面的农夫告诉他们俄国人继续往北开去了。罗贝明白自己很有可能就要和苏联人交火了,连忙和营里联系。但还是联络不上。情急之下,罗贝命令3辆“虎王”排成战斗队型,互相掩护着慢慢跟进。走了还不到500米,一阵坦克炮弹突然落到了德军坦克附近。同时罗贝看到了对面小树丛里的炮口闪光,距离大约1500米。俄国人!就是他们!总算是找着他们了,罗贝的当前任务完成了。为了避免和数量位置都不清楚的苏军坦克交战,3辆德军坦克退回米特霍夫村。他把2辆坦克的阵地往北挪了挪,另外1辆往南开掩护后方。他希望再得到2、3辆坦克的加强以后再进攻。在得到营部命令以前,罗贝不耐烦的来到了一座高大的农庄前。这位经验老道的坦克军官感到非常奇怪:为什么俄国人不死死据守这个重要的地点,甚至连个步兵观察哨都不派?他摇着头爬上了农舍的阁楼,兴许从这能看到伊凡们?罗贝满怀希望扒开了一扇窗子的稻草。好家伙!大约10辆T-34-85就停在对面一道土坝后面的菜地里。俄国坦克有的朝向自己,有的炮塔指向东方,没有任何迹象表面对手已经发现了自己。虽然地势非常平坦,但那条3、4米高的土坝和1趟小树丛挡住了双方的视线,即使站在坦克炮塔顶上也看不到土坝对面的情况。罗贝高兴的走下来,详细的询问了当地人附近的地形。在研究了地图以后,罗贝决定就沿着迪耶河挡住俄国人。终于,他们再次和营长联系上了。在说明了情况后,罗贝争取到了独立自主权。好呀,在经过几个小时的煎熬后,总算可以大干一场了。
  • f
    forever
    为了不过早的暴露自己,罗贝决定用见解间接瞄准的射击方式给俄国人一个惊喜。目测从农舍到苏军的第1辆坦克的距离为2000米(战后调查1600米)。虽然88炮是一种弹道比较平直的加农炮,但在这么远的距离上还是有5米的最大弹道高。罗贝判断这个弹道高足以使炮弹越过土岭击中苏军坦克。主意已定,1个弹着观察员迅速爬上了阁楼。为了尽可能减少视差误差,1辆“虎王”在观察员的正下方占领了射击阵地。车长爬出炮塔,站在指挥塔上,这样他就可以听清观察员的报告,并及时命令炮手修正了。好,一切准备就绪。炮手瞄准了了土坝正上方,标尺装定到2000米。这时的“虎王”重型坦克不象坦克,倒象是1门自行榴弹炮了.开火!第1发高了,擦着土坝飞了出去。第2发也越标了。2发不中!受惊的苏联人发动了自己的坦克,目标车转了一下,把车首对准了炮弹入射方向。掩蔽了俄国人的土坝这回帮了倒忙。他们根本看不见德军坦克的炮口焰。再修正!该死的第3发仍然没有命中。炮手骂着打出了第4发。这发88毫米穿甲弹带着德国人的全部希望和诅咒,划着漂亮的弧线,击中了那辆T-34-85的炮塔。这辆坦克起火了,随后一下猛烈的内部爆炸把它的炮塔连同车体顶部甲板一起掀掉了。
  • f
    forever
    此时克贝尔博士带着剩下的2辆“虎王”赶来了。可是俄国坦克象一窝蜂一样一下子全散开向西狂奔。但是,慌不则路的T-34-85把侧面和屁股全给暴露了。“虎王”轻松的在1500米距离上挨个点名。不一会,10来辆苏联坦克就停在开阔地里烧起来了。另外8辆也被其他的反坦克武器击毁了。到此,第503营已经消灭了41辆苏军坦克。10天前才在维也纳上演夺宝奇兵好戏的苏军近卫第9机械化军被严重削弱,无力继续进攻
  • 孟德
    VMware人门知识
    随着Linux逐渐地被接受,同一台计算机上安装Linux和Windows已经不是什么新鲜的事情了。不过你有没有想过在一台计算机上同一时刻运行 Linux和Windows呢?而不仅仅是在同一台计算机安装多个操作系统,或许在很多人眼里这是一件难以置信的事情。美国VMware公司推出的虚拟计 算平台——VMware为我们提供了一个具有创新意义的解决方案,你可以在使用Gimp的同时,运行Microsoft Word。不仅如此,你还可以同时运行各种Linux发行版、Dos、Windows 3.1、Windows 95、Windows 98、Windows NT,Windows 2000、Windows ME以及FreeBSD等,你甚至可以在同一台计算机上安装多个Linux发行版、多个indows版本。
    一、VMware 的特点

    1、虽然VMware只是模拟一个虚拟的计算机,但是它就像物理计算机一样提供了BIOS,你可以相同的方法更改BOIS的参数设置。你不需要重新启动就可以同时在一台计算机上运行多个操作系统,可以是在窗口模式下运行客户机,也可以在全屏模式下运行,当你从Guest OS切换到Host OS屏幕之后,系统将自动保存Guest OS 上运行的所有任务,以避免由于Host OS的崩溃,而损失Guest OS应用程序中数据。

    2、每一个在主机上运行的虚拟机操作系统都是相对独立的,拥有自己独立的网络地址,就像单机运行一个操作系统一样,提供全部的功能,当然,如果你的计算机内存比较小的话,你明显感觉到速度很慢。最令人兴奋的是,当你的计算机在同时运行多个操作系统的情况下,如果,其中一个Guest OS的崩溃,但是并不影响 其它Guest OS的正常运行。

    3、在虚拟机上安装同一种操作系统的另一发行版,不需要重新对硬盘进行分区,比如,你可以在Red Hat Linux的一个目录下,安装Turbo Linux 或者其它的Linux 版本,而不需要重新分区。

    4、虚拟机之间支持TCP/IP、Novell Netware以及Microsoft网络虚拟网络以及Samba文件共享等。而且,支持Guest OS和Host OS之间以及不同Guest OS操作环境下的剪切、复制和粘贴操作。VMware支持CD-ROM 、软驱以及音频的输入输出,和VMware 1.0相比,最新版本的VMware 2.03改进了不少,比如增加了对SCSI设备、 SVGA图形加速卡以及ZIP驱动器的支持。比如,你运行的是英文版的Linux,而同时又想处理中文,在内存足够的条件下,那么同时运行Windows 是一个不错的选择。

    注意:目前还不支持MIDI声频,以及游戏控制器和操纵杆。

    5、在VMware的窗口上,模拟了打开虚拟机电源、关闭虚拟机电源以及复位键等,这些按钮的功能对于虚拟机来说,就如同虚拟机机箱上的按钮一样。如果你的客户机的操作系统是Windows ,在运行过程中非正常关机或者VMware崩溃,下次启动Windows的时候,它会自动进行文件系统的检查与修复。

    注意:Guest OS——指运行在虚拟机上的操作系统;Guest就是VMware虚拟出来的客户机。Host,指物理存在的计算机,Host OS指在Host上运行的操作系统;例如笔者在Linux为操作系统的计算机上安装了 VMware,虚拟了Windows 2000 专业版。那么,Host指的是安装Linux的这台逻辑计算机,其Host OS为 Linux;虚拟机上运行的Windows 2000 专业版就是Guest OS。

    二、 VMware的运行原理
    VMware是一个具有创新意义的应用程序,通过 VMware独特的虚拟功能,你可以在同一个窗口运行多个全功能的虚拟机操作系统。而且VMware中的Guest OS直接在X86保护模式下运行,使所有的虚拟机操作系统就像运行在单独的计算机上一样,因此,VMware在性能上有十分出色的表现。熟悉LInux的朋友可能会想到 Linux下的模拟器—Wine,它们有本质上的区别, Wine (Wine Is Not an Emulator)是一个在X和Linux之上的,提供了Windows 3.x 和 Windows9x API函数接口,它是一个Windows兼容层,这个层即提供了一个用来从 Windows源进出到UNIX的开发工具包(Winelib),也提供了一个程序加载器,该加载器允许不用任何修改Windows 3.1/95/NT的二进制文件,简单的说,wine是一个Linux下Windows应用程序模拟器,而不能独立地运行一个全 功能的操作系统。目前 Wine 仍在发展阶段,仅能执行少部份的 Windows 软体,大部份的软体仍然无法正常 执行。 如图下所示,这是VMware的运行原理图示。


    VMware运行在主机的操作系统之上,它在Guest OS与Host OS之间加了一层虚拟操作平台(VMware Virtual Platform),所有的客户操作系统都运行在虚拟操作平台之上。

    主机的系统要求:

    VMware 2.01 for Linux: CPU: Intel(r) Pentium(r) II或其它X86兼容处理器, 主频至少为266MHz或更高, 支持SMP(对称多处理器)。Intel: Pentium Pro, Celeron, Pentium II, Pentium III AMD: K6-2, K6-III, Athlon (K7) 。

    内存:最少96M,推荐128M以上。

    其它:支持256色以上的显示效果;在bridged模式下,可以选择网卡,在虚拟机上启用网络功能。

    Linux操作系统:单CPU系统的内核至少为 2.0.32或更高 ;SMP 系统的内核至少为 2.2.0或更高。已经通过的Linux发行版本为Red Hat Linux 5.x, 6.0, and 6.1 Caldera OpenLinux 2.2 and 2.3 ;SuSE Linux 6.0, 6.1, 6.2, and 6.3 ;TurboLinux 6.0。

    X- server:XFree86-3.3.3.1 或者更高。虽然,XFree86 4.0已经推出,但是由于XFree86 version 4.0的稳 定性难以保证,VMware 2.01 for Linux还不支持XFree86, version 4.0,建议采用XFree86 version 3.3.4 。

    VMware 2.03 for NT或者Windows 2000:

    CPU: Intel(r) Pentium(r) II或其它X86兼容处理器, 266MHz 或更高, 支持SMP(对称多处理器)。

    内存:最少96M,推荐128M以上。

    其它:支持256色以上的显示;任何bridged模式的网卡。

    操作系统:要求Windows NT Server 或者Workstation 4.0 + Service Pack 3以上;Windows 2000 Professional版以及Server 版系列;另外,浏览器要求安装IE 4.0以上版本,因为VMware的帮助文件是HTML 格式的,而且此帮助文件目前还不能在其它浏览器下工作。

    笔者的计算机为Red Hat Linux 7.0 和Windows 98以及Windows 2000 专业版3个操作系统共存,在Linux下成功地 虚拟运行Windows 2000 专业版。接下去笔者就以Linux为主机虚拟运行Windows 2000 专业版为例,说明如何使用VMware。当然,你也可以在 Linux下运行VMware,重新安装Windows虚拟机;或者在Windows NT以及 Windows 2000下虚拟安装Linux,它们的操作都差不多,有兴趣的朋友可 以自己体验一下。

    三、下载及安装
    目前, VMware的最新版本是2.03,你可以到VMware的站点:http://www.vmware.com/去了解更详细的内容,确定VMware是否支持你的计算机硬件。下载的时候要注意,你要选择VMware 版本,国内下载地址为:http://www.cnvnet.com/download/d/VMware-2.0.3-786.tar.gz(Linux 版本)。VMware是一个商业软件,如果你要想运行VMware,还必须到它的公司站点上申请一个可以免费试用30天的License(许可证)。

    最新版本的VMware 2.03除了修正了大量的bug,大大地改善了之外,还提供了很多新的功能:

    改善可对鼠标的支持,现在VMware支持滚轮鼠标。

    为Windows ME虚拟机提供SVGA驱动程序。

    VMware主机支持Linux 2.4内核。注意:这个版本并不支持运行Linux 2.4内核主机上的双向并行端口。

    支持更多的Linux发行版本,为Red Hat Linux 7.0、Caldera OpenLinux 2.4以及 SuSE Linux 7.0提供 预编译的模块。

    假设你下载的VMware是以*.tar格式打包的,那么在控制台下进入*.tar目录,执行命令:tar -d *.tar。

    如果,你是第一次使用VMware,那么进入解压后的VMware-distrib目录,执行命令:./ install.pl安装;如果你以前使用过旧的VMware版本,则进入VMware-distrib\installer目录,执行命令:./ old-install.pl安装。

    在安装的过程中,VMware安装脚本会要求你回答VMware安装目录以及是否自动运行 VMware配置脚本等几个问题。如果你是从TAR压缩包安装VMware,安装脚本将自动运行VMware配置脚本VMware-config.pl;如果安装的是RPM格式的VMware或者你改变了Linux内核,那么你就必须手动运行VMware配置脚本VMware-config.pl,事实上,当VMware 运行时,如果检测到Linux内核已经改变,它将会提示你重新运行VMware配置脚本VMware-config.pl 。要想运行这个脚本很简单,只要在控制台下输入config-VMware.pl就可以了。如果VMware提供的预编译模块不适合你的Linux内核, VMware配置脚本程序将会重新编译模块。期间,VMware配置脚本程序还会询问你是否允许虚拟机访问主机的系统文件。

    安装完之后,把你收到的许可证文件名改为license,复制到VMware的目录下就可以了。

    四、配置虚拟机
    首先,在Linux控制台下执行命令:VMware,运行VMware,如下图所示,这就是VMware的界面。选择【Setting】菜单下的【VMware Configuration Wizard 】,启动虚拟配置文件向导,选择【VMware Configuration Wizard】,你可以在Linux下重新安装一个虚拟机操作系统,也可以配置计算机上已经安装 的Windows 操作系统;接下去为客户机操作系统的选择,因为笔者的计算机中已经安装了Windows 2000专业版,所 以选择了Windows 2000;默认的配置文件保存目录为\username\VMware\win2000,当然,你以可以更改保存目录,它以虚拟的方式在Linux 的文件目录中建立虚拟的Windows 文件系统;选择虚拟机硬盘的类型的为【Existing Physical Disk】,如果你是重新安装虚拟机操作系统,那么选 择【New Physical Disk】;如果你要在虚拟机上使用软驱与光驱,还要将Floppy 和CD-ROM 选择项设置为Enabled;VMware配置脚本程序将会询问你是否使用虚拟机的网络。局域网用户可以选择启用虚拟机网络,这样就可以在同一台计算机上配置两种不同类型的网络,一个是主机网络,它可以访问主机系统和其它网络,同时在它虚拟的计算机上运行一个虚拟网络;另外一个是桥路网络,它就相当于主机一样的虚拟网络,你可以使用DHCP为虚拟机动态分配IP地址。如果你要求虚拟机以一个独立的主机出现在网络中,则要选择【Host-Bridge】选项。设置完毕后,保存配置。当然,以后你也可以在菜单下的【settings】选项中的【Configuration Editor】中重新修改配置文件。

    注意:

    1、虚拟机对硬盘以及MBR(主引导记录)读写权限最好全部设置为“Read Write(可读写)”,因为 Windows在启动的时候,要向硬盘里写东西。

    2、在以前的1.0版本中,如果你要在Linux下运行Windows NT或者Windows 9X,那么你一定要下载一个在虚拟机操作系统中安装的VMware工具:VMware-tools.exe,以便虚拟机能够支持更好的显示效果。现在的 VMware 2.03中已经包含了最新的VMware工具,你不再需要下载单独的VMware工具了。 在菜单下选择【VMware tools install】就直接安装VMware工具了。

    3、VMware 2.03版本对Linux 2.2.16内核支持不好,可能导致声卡无法正常工作,笔者的声卡就不能在虚拟机 中使用。VMware公司推荐最好使用较新的内核Linux 2.2.17或者Linux 2.2.15。

    4、VMware 2.03在虚拟安装有Norton AntiVirus 2000的Windows时,可能会导致系统冲突,不能进入Windows 虚拟机。笔者在虚拟Windows 98的时候就出现了问题,不能进入Windows虚拟机。

    五、运行虚拟机
    虚拟机配置完毕之后,按下VMware快捷工具栏上的【Power On】按钮,相当于打开虚拟机的电源,启动 Windows 2000 专业版虚拟机。如下图所示,这就是Windows 2000 专业版虚拟机的启动界面。


    在运行已经存在的虚拟机操作系统(也就是像笔者一样,虚拟机是从计算机硬盘里已存在的操作系统中 建立的)过程中,系统还要重新检测计算机的硬件以及安装硬件的驱动程序,不过你不要担心,它不会破坏 原来的Windows 2000 专业版配置。

    漫长的计算机硬件检测以及驱动安装之后,终于进入了Windows 2000 专业版,如图下所示。由于笔者的内存限制(只有96M),所以不敢运行较大的应用程序,运行Windows 2000 专业版的感觉就像在16M内存的计算机上运行 Windows 98一样,速度有点难以让人接受。不过笔者感觉作为虚拟机的Windows 2000 专业版还是比较稳定的,在上面运行记事本之类的小程序,还是绰绰有余的。这篇文章的大部分内容就是在虚拟机的Windows 2000 专业版记事本上完成的。

    注意:

    1、如果你的计算机内存不是很大,那么最好不要在Linux的GNOME和KDE桌面环境中运行VMware,因为这两个桌面环境占用的内存比较大,你可以选择AfterStep、Fvwm95,最好是在安全模式下运行。

    2、虚拟机操作系统的运行环境是受主机操作系统影响的。简单的说,虚拟机操作系统中的显示的颜色深度、大小以及分辨率是由主机操作系统中的显示属性决定的,比如说如果你的主机操作系统中的屏幕分辨率是75Hz,那么虚拟机操作系统的屏幕分辨率一定不会超过75Hz。

    六、不足之出
    尽管笔者为VMware公司能够开发出这样优秀的软件而兴奋不止,但是毕竟还不是很完善,存在着很多限制,像它对计算机硬件的要求 很高,现在对多媒体支持很差;另外一方面,也是最主要的原因是VMware并不是一个自由软件,昂贵的价格令很多用户望而却步。

    VMware还不能完全支持任何基于Intel芯片的操作系统,像BeOS 和OS/2就是最明显的例子。如果一旦VMware不支持Linux和FreeBSD,实际上VMware就没有什么太大的意义,笔者认为很少有人会在 Windows 2000下通过VMware虚拟Windows 9x以及MSDOS等。

    自从VMware 1.0推出以来,VMware 已经大大改善了对DirectDraw的支持,可以在VMware虚拟机上运行一般的二维游戏,而目前 VMware对3D游戏的支持还在进一步发展中;虽然,它很好地支持声音输出,遗憾的是还不支持MIDI。这些限制大大降低了虚拟机的实用性,因此,对于大多数用户来说,多系统启动还是最佳的选择。

    但是,对于很多专业人士来说,这些限制是微不足道的,VMware的主要任务是:为专业人员开发跨平台应用软件提供一个理想的解决 方案,尽量介绍不必要的麻烦,他们在也不必为了安装多个操作系统而准备多台计算机,也不需要在同一台计算机安装多个操作系统。

    VMware独特的设计理念,开创了多系统共存的新纪元。随着VMware的进一步完善以及计算机硬盘性能的提高,越来越多的用户将会享受到VMware带来的全新感受.
  • f
    forever
    “我觉得俄罗斯人的88 或者90MM炮如果比的上德国老的88MM炮,那他们肯定不会用122, 炮的口径越大,精度越高?……”

    比的是JS-2与虎,比其他的干什么。并且俄罗斯人哪来的88和90?说二战好坦克炮,苏联后期还有100毫米炮。2000米距离上能打穿120毫米装甲。
    并且似乎怎么总是认定苏联技术不行?
    德国的技术就好?如果说苏联“只会增大口径”,那德国何尝又不是“只会增长(chang)炮管?”


    “这是德坦克 精密光学系统和火炮在实战中的一次发挥”

    88MM炮弹飞跃小土坡曲射命中苏联坦克是“精密光学系统”的体现?



    “JS-2去那里了? 不是火力十足吗? 怎么还是没有虎II正面被击穿的记录”

    1,重型坦克正面被击穿的本就不多。2,JS-2即使是正面被击穿,那也多是JS-2初期型号。JS-2M就算了,88都难啃



    “105的精度比125炮 要高(不是线堂啊)
    特别是长身管的,可以在1000M处 比较准确打中M1的炮管”

    那是见鬼的。那片文章中,问105炮的精度,回答曰散布20CM,然后记者就曰“那么在1000米距离上,几乎可以一炮封住M1的炮口”。然后专家笑曰:“理论上是这样的”,没记错把

    1000米距离上坦克炮的散布都不大,那么3号对付JS-2绰绰有余了?德国既然“那么好的光学观瞄”,那战争初期哪会有“T-34恐慌”?直接发挥超强的德国光学观瞄设备打炮管不就行了?
    实际上想打中敌坦克的炮塔座圈都要求比较高的射击水平、较近的距离和运气,更何况是打那个不到20CM粗的坦克炮。就是炮手训练三年都未必能做到炮炮中炮管

    最后,为什么总说用122毫米炮就牺牲了精度?
    “我觉得精度绝对比不过L70的88炮”这就是论据?

    “卡尔能当战斧用了?”
    ===曲射火炮怎么跟直射火炮比精度?

    “表面上威力十足”
    ===理论上(穿甲能力公式)火炮的口径越大,穿甲效果越好。口径小的炮即使穿透,其剩余能量对坦克早成的伤害比不上一颗穿过去的大口径炮
  • f
    forever
    “我觉得俄罗斯人的88 或者90MM炮如果比的上德国老的88MM炮,那他们肯定不会用122, 炮的口径越大,精度越高?……”

    比的是JS-2与虎,比其他的干什么。并且俄罗斯人哪来的88和90?说二战好坦克炮,苏联后期还有100毫米炮。2000米距离上能打穿120毫米装甲。
    并且似乎怎么总是认定苏联技术不行?
    德国的技术就好?如果说苏联“只会增大口径”,那德国何尝又不是“只会增长(chang)炮管?”


    “这是德坦克 精密光学系统和火炮在实战中的一次发挥”

    88MM炮弹飞跃小土坡曲射命中苏联坦克是“精密光学系统”的体现?



    “JS-2去那里了? 不是火力十足吗? 怎么还是没有虎II正面被击穿的记录”

    1,重型坦克正面被击穿的本就不多。2,JS-2即使是正面被击穿,那也多是JS-2初期型号。JS-2M就算了,88都难啃



    “105的精度比125炮 要高(不是线堂啊)
    特别是长身管的,可以在1000M处 比较准确打中M1的炮管”

    那是见鬼的。那片文章中,问105炮的精度,回答曰散布20CM,然后记者就曰“那么在1000米距离上,几乎可以一炮封住M1的炮口”。然后专家笑曰:“理论上是这样的”,没记错把

    1000米距离上坦克炮的散布都不大,那么3号对付JS-2绰绰有余了?德国既然“那么好的光学观瞄”,那战争初期哪会有“T-34恐慌”?直接发挥超强的德国光学观瞄设备打炮管不就行了?
    实际上想打中敌坦克的炮塔座圈都要求比较高的射击水平、较近的距离和运气,更何况是打那个不到20CM粗的坦克炮。就是炮手训练三年都未必能做到炮炮中炮管

    最后,为什么总说用122毫米炮就牺牲了精度?
    “我觉得精度绝对比不过L70的88炮”这就是论据?

    “卡尔能当战斧用了?”
    ===曲射火炮怎么跟直射火炮比精度?

    “表面上威力十足”
    ===理论上(穿甲能力公式)火炮的口径越大,穿甲效果越好。口径小的炮即使穿透,其剩余能量对坦克早成的伤害比不上一颗穿过去的大口径炮
  • g
    gjbsas
    晕 你俩在比谁贴的字多么*/-91
  • r
    rage6
    智力测验平均最高者:水瓶座男生、天蝎座女生
    智力测验平均最低者:双鱼座男生、魔羯座女生
    机灵反应能力最佳者:双子座男生、**座女生
    机灵反应能力最差者:金牛座男生、金牛座女生
    最重视伦理道德的人:巨蟹座男生、魔羯座女生
    最漠视伦理道德的人:射手座男生、狮子座女生
    最懂得罗曼蒂克的人:双子座男生、双鱼座女生
    最不懂罗曼蒂克的人:**座男生、魔羯座女生
    用情最为专一者: 巨蟹座男生、魔羯座女生
    用情最为善变者: 双子座男生、水瓶座女生
    最有女人味的人: 双鱼座男生、双鱼座女生
    最有男子气概的人: 魔羯座男生、牡羊座女生
    做事最上进最积极者:牡羊座男生、牡羊座女生
    做事最慢条斯理者: 金牛座男生、双鱼座女生
    用情最深最无私心者:巨蟹座男生、双鱼座女生
    用情最浅要求最多者:狮子座男生、双子座女生
    用钱概念最节俭的人:金牛座男生、**座女生
    用钱概念最奢侈的人:射手座男生、狮子座女生
    最有理财概念的人: 天秤座男生、巨蟹座女生
    最没有理财概念的人:牡羊座男生、狮子座女生
    最有多才多艺的人: 双子座男生、双鱼座女生
    最缺乏才艺性的人: 魔羯座男生、金牛座女生
    最有家庭概念的人: 巨蟹座男生、巨蟹座女生
    最没有家庭概念的人:双子座男生、射手座女生
    心机最重的人: **座男生、天蝎座女生
    最没心机的人: 射手座男生、双鱼座女生
    最会记仇的人: 天蝎座男生、**座女生
    最不记仇的人: 狮子座男生、双鱼座女生
    做事最有计划的人: 天蝎座男生、水瓶座女生
    做事最没计划的人: 双鱼座男生、双鱼座女生
    做事最贯彻始终的人:天蝎座男生、魔羯座女生
    做事最虎头蛇尾的人:射手座男生、狮子座女生
    最大方的人: 狮子座男生、狮子座女生
    最小气的人: 金牛座男生、**座女生
    最爱乾净的人: 天秤座男生、**座女生
    最不爱乾净的人: 狮子座男生、射手座女生
    最热爱自由的人: 牡羊座男生、射手座女生
    对自由最不关心的人:**座男生、巨蟹座女生
    最爱说大话的人: 狮子座男生、牡羊座女生
    最谦逊有礼的人: 巨蟹座男生、天秤座女生
    最情绪化的人: 巨蟹座男生、牡羊座女生
    情绪最稳定的人: 水瓶座男生、天秤座女生
    最有主导**的人: 狮子座男生、射手座女生
    最甘心被人主导的人:**座男生、双鱼座女生
    最善解人意的人: 巨蟹座男生、双鱼座女生
    最木头的人: **座男生、魔羯座女生
    最心细的人: 天蝎座男生、巨蟹座女生
    最粗心的人: 牡羊座男生、牡羊座女生
    最会做梦的人: 巨蟹座男生、双鱼座女生
    最实№的人: 金牛座男生、天秤座女生
    最会写情书的人: 双鱼座男生、巨蟹座女生
    最不会写情书的人: 牡羊座男生、金牛座女生
    最受异性欢迎的人: 双子座男生、双鱼座女生
    最不受异性青睐的人:**座男生、魔羯座女生
    对异性有征服**者:狮子座男生、牡羊座女生
    对异性无征服**者:**座男生、双鱼座女生
    最不好色者: 水瓶座男生、魔羯座女生
    最会**的人: 天蝎座男生、双鱼座女生
    最不会**的人: 天秤座男生、魔羯座女生
    最爱好和平的人: 金牛座男生、巨蟹座女生
    最爱引起争端的人: 狮子座男生、牡羊座女生
    最爱好自然的人: 双子座男生、天蝎座女生
    最欣赏人工的人: 射手座男生、射手座女生
    最爱营造温馨气氛者:巨蟹座男生、巨蟹座女生
    最爱另类怪异者: 天秤座男生、水瓶座女生
    最喜欢玄学算命的人:天蝎座男生、双鱼座女生
    最铁齿的人: 水瓶座男生、双子座女生
  • 孟德
    3.
    /******************************************************************************
    ** 函数名称: TargetResetInit
    ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
    *******************************************************************************
    void TargetResetInit(void)
    {
    uint32 i;
    uint32 *cp1;
    uint32 *cp2;
    extern void Vectors(void);
    /* 拷贝向量表,保证在flash和ram中程序均可正确运行 */
    cp1 = (uint32 *)( )
    cp2 = (uint32 *)( )
    for (i = 0; i < 2 * 8; i++)
    {
    ( )
    }
    MEMMAP = 0x2; //remap
    PINSEL0 = (PINSEL0 & 0xFFFF0000) | UART0_PCB_PINSEL_CFG | 0x50;
    /* 设置系统各部分时钟 */
    PLLCON = 1;
    #if (Fpclk / (Fcclk / 4)) == 1
    VPBDIV = 0;
    #endif
    #if (Fpclk / (Fcclk / 4)) == 2
    VPBDIV =( );
    #endif
    #if (Fpclk / (Fcclk / 4)) == 4
    VPBDIV = 1;
    #endif
    #if (Fcco / Fcclk) == 2
    PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
    #endif
    #if (Fcco / Fcclk) == 4
    PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
    #endif
    #if (Fcco / Fcclk) == 8
    PLLCFG =( );
    #endif
    #if (Fcco / Fcclk) == 16
    PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
    #endif
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while((PLLSTAT & (1 << 10)) == 0);
    PLLCON =( )
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    /* 设置存储器加速模块 */
    MAMCR = 2;
    #if Fcclk < 20000000
    MAMTIM = 1;
    #else
    #if Fcclk < 40000000
    MAMTIM = 2;
    #else
    MAMTIM = 3;
    #endif
    #endif
    /* 设置串行口 */
    InitialiseUART0(115200);
    /* 设置实时时钟 */
    CCR = 1;
    PREINT =( )
    PREFRAC =( )
    YEAR = 2003;
    MONTH = 6;
    DOM = 2;
    VICIntEnClr = 0xffffffff;
    VICVectAddr = 0;
    VICIntSelect = 0;
    T0IR = 0xffffffff;
    T0TCR = 0X02;
    }
  • z
    zealot1
    这贴牛B*/-51
  • 孟德
    3.
    /******************************************************************************
    ** 函数名称: TargetResetInit
    ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
    *******************************************************************************
    void TargetResetInit(void)
    {
    uint32 i;
    uint32 *cp1;
    uint32 *cp2;
    extern void Vectors(void);
    /* 拷贝向量表,保证在flash和ram中程序均可正确运行 */
    cp1 = (uint32 *)( )
    cp2 = (uint32 *)( )
    for (i = 0; i < 2 * 8; i++)
    {
    ( )
    }
    MEMMAP = 0x2; //remap
    PINSEL0 = (PINSEL0 & 0xFFFF0000) | UART0_PCB_PINSEL_CFG | 0x50;
    /* 设置系统各部分时钟 */
    PLLCON = 1;
    #if (Fpclk / (Fcclk / 4)) == 1
    VPBDIV = 0;
    #endif
    #if (Fpclk / (Fcclk / 4)) == 2
    VPBDIV =( );
    #endif
    #if (Fpclk / (Fcclk / 4)) == 4
    VPBDIV = 1;
    #endif
    #if (Fcco / Fcclk) == 2
    PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
    #endif
    #if (Fcco / Fcclk) == 4
    PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
    #endif
    #if (Fcco / Fcclk) == 8
    PLLCFG =( );
    #endif
    #if (Fcco / Fcclk) == 16
    PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
    #endif
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while((PLLSTAT & (1 << 10)) == 0);
    PLLCON =( )
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    /* 设置存储器加速模块 */
    MAMCR = 2;
    #if Fcclk < 20000000
    MAMTIM = 1;
    #else
    #if Fcclk < 40000000
    MAMTIM = 2;
    #else
    MAMTIM = 3;
    #endif
    #endif
    /* 设置串行口 */
    InitialiseUART0(115200);
    /* 设置实时时钟 */
    CCR = 1;
    PREINT =( )
    PREFRAC =( )
    YEAR = 2003;
    MONTH = 6;
    DOM = 2;
    VICIntEnClr = 0xffffffff;
    VICVectAddr = 0;
    VICIntSelect = 0;
    T0IR = 0xffffffff;
    T0TCR = 0X02;
    }
  • 孟德
    4.
    /******************************************************************************
    ** 函数名称: SWI_Exception
    ** 功能描述: 软中断异常处理程序,提供一些系统服务
    *******************************************************************************
    #if OS_SELF_EN > 0
    extern int const _OSFunctionAddr[];
    extern int const _UsrFunctionAddr[];
    #endif
    void SWI_Exception(int SWI_Num, int *Regs)
    {
    OS_TCB *ptcb;

    switch(SWI_Num)
    {
    //case 0x00: /* 任务切换函数OS_TASK_SW,参考os_cpu_s.s文件 */
    // break;
    //case 0x01: /* 启动任务函数OSStartHighRdy,参考os_cpu_s.s文件 */
    // break;
    case 0x02: /* 关中断函数OS_ENTER_CRITICAL(),参考os_cpu.h文件 */
    __asm
    {
    MRS R0, SPSR
    ORR R0, R0, #NoInt
    MSR SPSR_c, R0
    }
    OsEnterSum++;
    break;
    case 0x03: /* 开中断函数OS_EXIT_CRITICAL(),参考os_cpu.h文件 */
    if (--OsEnterSum == 0)
    {
    __asm
    {
    MRS R0, SPSR
    BIC R0, R0, #NoInt
    MSR SPSR_c, R0
    }
    }
    break;
    #if OS_SELF_EN > 0
    case 0x40:
    /* 返回指定系统服务函数的地址 */
    /* 函数地址存于数组_OSFunctionAddr中*/
    /* 数组_OSFunctionAddr需要另外定义 */
    /* Regs[0] 为第一个参数,也是返回值 */
    /* Regs[1] 为第二个参数 */
    /* Regs[2] 为第三个参数 */
    /* Regs[3] 为第四个参数 */
    /* 仅有一个参数为系统服务函数的索引 */
    Regs[0] = _OSFunctionAddr[Regs[0]];
    break;
    case 0x41:
    /* 返回指定用户的服务函数的地址 */
    /* 函数地址存于数组_UsrFunctionAddr中*/
    /* 数组_UsrFunctionAddr需要另外定义 */
    /* Regs[0] 为第一个参数,也是返回值 */
    /* Regs[1] 为第二个参数 */
    /* Regs[2] 为第三个参数 */
    /* Regs[3] 为第四个参数 */
    /* 仅有一个参数为用户服务函数的索引 */
    Regs[0] = _UsrFunctionAddr[Regs[0]];
    break;
    case 0x42: /* 中断开始处理 */
    OSIntNesting++;
    break;
    case 0x43: /* 判断中断是否需要切换 */
    if (OSTCBHighRdy == OSTCBCur)
    {
    Regs[0] = 0;
    }
    else
    {
    Regs[0] = 1;
    }
    break;
    #endif
    case 0x80: /* 任务切换到系统模式 */
    __asm
    {
    MRS R0, SPSR
    BIC R0, R0, #0x1f
    ORR R0, R0, #SYS32Mode
    MSR SPSR_c, R0
    }
    break;
    case 0x81: /* 任务切换到用户模式 */
    __asm
    {
    MRS R0, SPSR
    BIC R0, R0, #0x1f
    ORR R0, R0, #USR32Mode
    MSR SPSR_c, R0
    }
    break;
    case 0x82: /* 任务是ARM代码 */
    if (Regs[0] <= OS_LOWEST_PRIO)
    {
    ptcb = OSTCBPrioTbl[Regs[0]];
    if (ptcb != NULL)
    {
    ptcb -> OSTCBStkPtr[1] &= ~(1 << 5);
    }
    }
    break;
    case 0x83: /* 任务是THUMB代码 */
    if (Regs[0] <= OS_LOWEST_PRIO)
    {
    ptcb = OSTCBPrioTbl[Regs[0]];
    if (ptcb != NULL)
    {
    ptcb -> OSTCBStkPtr[1] |= (1 << 5);
    }
    }
    break;
    default:
    break;
    }
    }
    5.
    /******************************************************************************
    ** 函数名称: OSStartHighRdy
    ** 功能描述: uC/OS-II启动时使用OSStartHighRdy运行第一个任务,
    ** 实质是产生swi 1指令
    *******************************************************************************

    void OSStartHighRdy(void)
    {
    ( )
  • 孟德
    6.
    ;/*****************************************************************************
    ;** 函数名称: SoftwareInterrupt
    ;** 功能描述: 软件中断,用于提供一些系统服务,功能参考os_cpu_c.c文件
    ;******************************************************************************

    ;软件中断
    SoftwareInterrupt
    LDR SP, StackSvc ; 重新设置堆栈指针
    STMFD SP!, {R0-R3, R12, LR}
    MOV R1, SP ; R1指向参数存储位置

    MRS R3, ( )
    TST R3, #T_bit ; 中断前是否是Thumb状态
    LDRNEH R0, [ ] ; 是: 取得Thumb状态SWI号
    BICNE R0, R0, #0xff00
    LDREQ R0, [ ] ; 否: 取得arm状态SWI号
    BICEQ R0, R0, #0xFF000000
    ; r0 = SWI号,R1指向参数存储位置
    CMP R0, #1
    LDRLO PC, ( )
    LDREQ PC, =__OSStartHighRdy ; SWI 0x01为第一次任务切换

    BL ( )

    LDMFD SP!, {R0-R3, R12, PC}^

    StackSvc DCD (SvcStackSpace + SVC_STACK_LEGTH * 4 - 4)
    7.
    ;/*****************************************************************************
    ;** 函数名称: OSIntCtxSw
    ;** 功能描述: 中断退出时的入口
    ;******************************************************************************
    OSIntCtxSw
    ;下面为保存任务环境
    LDR R2, [SP, #20] ;获取PC
    LDR R12, [SP, #16] ;获取R12
    MRS R0, CPSR

    MSR CPSR_c, #( )
    MOV R1, LR
    STMFD SP!, {R1-R2} ;保存LR,PC
    STMFD SP!, {R4-R12} ;保存R4-R12

    MSR CPSR_c, R0
    LDMFD SP!, {R4-R7} ;获取R0-R3
    ADD SP, SP, #8 ;出栈R12,PC

    MSR CPSR_c, #(NoInt | SYS32Mode)
    STMFD SP!, {R4-R7} ;保存R0-R3

    LDR R1,( ) ;获取OsEnterSum
    LDR R2, [R1]
    STMFD SP!, {R2, R3} ;保存CPSR,OsEnterSum

    ;保存当前任务堆栈指针到当前任务的TCB
    LDR R1,( )
    LDR R1, [R1]
    STR SP, [R1]

    BL OSTaskSwHook ;调用钩子函数
    ;OSPrioCur <= OSPrioHighRdy
    LDR R4, ( )
    LDR R5, ( )
    LDRB R6, [R5]
    STRB R6, [R4]
    ;OSTCBCur <= OSTCBHighRdy
    LDR R6,( )
    LDR R6, [R6]
    LDR R4, ( )
    STR R6, [R4]
    OSIntCtxSw_1
    ;获取新任务堆栈指针
    LDR R4, [R6]
    ADD SP, R4, #68 ;17寄存器CPSR,OsEnterSum,R0-R12,LR,SP
    LDR LR, [SP, #-8]
    MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
    MOV SP, R4 ;设置堆栈指针

    LDMFD SP!, {R4, R5} ;CPSR,OsEnterSum
    ;恢复新任务的OsEnterSum
    LDR R3, =OsEnterSum
    STR R4, [R3]

    MSR SPSR_cxsf, R5 ;恢复CPSR
    LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务
  • f
    forever
    IV号后期型的80mm首上装甲也有两种,一种是50+30mm,一种是整块的80mm,德国人自己的测试结果是,前者的防护能力劣低于后者,但差距不大。

    硬化层在不发生碎裂的前提下,防弹效果非常优秀,而硬化层是否碎裂取决于后面的能量吸收层。表面渗碳硬化可以为装甲提供3倍于匀质装甲的表面贝氏硬度,这个硬度有没有完全起到作用看装甲的弹痕是否成碎裂状态,结果是没有,就表明了表面硬化层完全吸收了炮弹的能量并均匀的传递到下一层。战后的确使用了陶瓷装甲,原理是在陶瓷的形变范围内就把能量传递到后面的吸收层,保证陶瓷不发生碎裂。

    全世界的主力舰,主装甲带都使用了表面硬化处理的装甲,证明表面硬化装甲防弹效果明显优于匀质装甲。
  • a
    asusc
    Linux与Windows虽然都属于操作系统的范畴,但是两者存在很大的差异。大的不说,就连两者的目录结构都存在很大的不同。而这些差异就成为了从Windows系统转型到Linux环境的主要障碍。笔者总结了两个操作系统在目录结构上的主要差异。就当作抛砖引玉,希望这些内容能够引起大家的共鸣。

    一、系统默认目录的差异。

    虽然两个系统安装成功后,都会创建一些目录以供操作系统程序使用。但是,两者创建的默认目录有很大的差异。通常情况下,微软操作系统安装完成后,只会建立三个默认目录,分别为C:\Documents and Settings、C:\Program Files、C:\WINDOWS。但是,Linux系统安装完成后,会创建更多的默认目录。Linux系统下会根据不同的用户创建不同的目录;在各自的目录中放置一些特定的文件。也就是说,Linux下系统默认目录根据用途来分,而且这个分类很细。





    插图1:Linxu系统默认目录结构

    如上面这张图,就是笔者企业一台Linux操作系统的目录结构。笔者就对其中几个重要的默认目录做一些介绍。了解这些内容后,大家就会对两个操作系统的默认目录差异会有一个更加直观的印象。

    默认目录一:/home目录。

    Linux下所有的用户都会有一个个人专属的目录,称为主目录,以供用户摆放自己的文件。而/home目录就是用来放置每个帐户的主目录。如果是系统管理员root用户的主目录不是放置在这里。即当每次新建一个用户,当这个用户首次登陆系统的时候,操作系统都会在这个/home目录下为这个用户创建一个以他自己的名字命名的专属文件夹。其他用户除非有特别的授权,否则无法查看非本人专属目录中的文件。这跟微软操作系统类似。微软操作系统安装完成后,也会为每个用户在C:\Documents and Settings文件夹下创建用户专属的目录。但是两者有一个很大的差异。在微软操作系统中,系统管理员Administrator的个人专属目录也是在这个文件夹下。而Linux操作系统中,默认情况下跟普通帐户的专属文件夹是分开的。系统会专门建立一个/root目录作为系统管理员的专属目录。这就大大提高了系统管理员帐户的安全性。

    Linux 操作系统是一个多用户操作系统,所以不同用户之间的文件管理就显得尤其的重要。在这个目录下会为每个操作系统用户建立一个专属的文件夹。每个用户在日常工作中,最好尽可能的将个人文件、数据存放在自己的专属目录下,以方便管理,提高用户个人数据的安全,防止被意外破坏。

    默认目录二:/mnt目录。

    在这个目录下默认有/cdrom 与 /floppy两个子目录,用来存放光盘与软件的数据。如果在安装的时候,曾加载过硬盘中使用的FAT32文件系统的Windows分区,那么在这个目录下可能还会有/win字目录(通常情况下,加载其他非Linux系统分区都会挂载到这个目录中)。从这个目录我们可以看出两个操作系统的差异。微软系统中把光驱或者软驱都当作一个独立的盘或者分区来对待。但是在Linux系统中,则把他们当作一个目录来对待。不光光是如此,在Linux系统下,并没有微软操作系统那种磁盘驱动器的概念,也就是说不会看到C:、D:等标识符。所有分区都被当作目录使用,分别被加载与根目录下。也就是说,Linux下只有一个单独的树状结构。而在微软操作系统中,则是每个分区下都会有一个独立的树状结构。故如果第一次接触Linux系统的管理员,看到他的目录结构之后,还会错误的认为Linux系统只有一个分区呢。

    默认目录三:/tmp目录。

    这个目录主要供全部用户临时放置文件的目录,又叫做临时目录。另外一些应用程序运行中产生的临时文件,也会保存在这个目录中。如用户从网络上下载文件,在文件没有下载完成前,就会把下载的东西先保存在这个文件夹中。如用户在网络上看电影,播放器会有一个缓冲的功能。即提前把多媒体数据下载到本地电脑,以保障播放的连续性。而这个文件也是保存在这个临时文件夹中。等到影片播放结束后,这个临时文件夹中的信息就会被清除。通常情况下,重新启动后这个临时文件夹中的内容就会被清空。

    在微软操作系统中,也有一个临时目录,只是他存储的路径与名字不同而已。两者在临时目录上没有本质的差异。

    另外/etc也是系统的默认创建目录,其主要用来摆放系统命令相关的配置文件。/boot主要用来存放系统启动时必须读取的文件,包括内核的一些信息。可见,Linux系统下创建的默认目录分类分的比较细。而分类分的这么细,相对来说管理起来也会更加灵活。如在Linux系统上可能会部署Oracle等数据库应用程序。那么在全县管理上,我们可以创建一个Oracle数据库管理员的角色,其具有系统一定的管理权限。但是其不能够更改/boot或者/root 目录下的文件(默认情况下这两个目录只能够由root帐户来进行维护)。这种安全性设置,就可以在一定程度上保障同一台Linux服务器上部署的多种应用之间相互的独立性。
    二、/与\两个符号的差异。

    在上面的描述中,笔者已经谈到过Linux操作系统并没有磁盘驱动器的概念,所有的分区都被当作目录来使用。而在了Linux下目录是利用/(正斜杠)来表示的。在Linux操作系统中无论将硬盘分为多少个区,每个分区中的文件及目录,都可以在根目录下,在该分区的加载目录中找到。而根目录的标识方法为/(正斜杠)。

    但是在微软的Windows操作系统中,要表示文件或者目录的路径时,其目录名称之间是以\(反斜杠)作为表示的。如C:\Documents and Settings目录,它就是以反斜杆作为标示。而在Linux操作系统中则是以正斜杠。这个差异要特别的注意。笔者刚开始接触Linux操作系统的时候,就经常搞不清楚。微软的操作系统用习惯了,刚开始就很容易沿袭微软操作系统的用法,利用\符合来进入Linux操作系统的目录。结果等到系统提示出错了才会想得到。所以这一点差异刚开始接触Linux操作系统的用户要特别注意。

    三、大小写的差异以及查询上的不同。

    在微软操作系统中,c:\U01与c:\u02两个目录是等价的。但是,在Linux操作系统中,/u01与/U02两个目录可是代表不同的目录。因为在Linux操作系统中,文件和文件名称大小写不同代表不同的文件和文件夹。所以/u01与/U02两个目录因为字母大小写不同,所以目录代表的内容不同。但是在微软操作系统中,则没有这方面的区分。文件或者文件夹大小写是不区分的。

    为了便于管理,笔者建议在Linux下面建立文件夹时,最好都能够采用小写字母。大写字母主要用来表示一些特殊的文件夹。如Desktop,它表示用户的桌面文件。这个文件夹是系统自动建立的。系统在对其命名的时候,把第一个字母大写了,以跟其他文件夹进行区分。所以除非是为了起到一个强调或者区分的作用,最好把文件夹的名字都设置为小写。

    另外需要注意的是,在文件查询的时候,文件名字要注意大小写的差异。在搜索文件的时候,Linux系统中主要调用了locate命令。这个名利是从系统中存储文件以及目录名的数据库中搜索文件,查找的速度会比较快。但是它有一个缺点,就是这个数据库中的信息跟实际的情况可能会存在一个时间差。对于刚刚新建的文件、目录,很可能会因为这个数据库尚未更新信息而找不到文件。在这种情况下,往往需要管理员利用updatedb命令来更新这个数据库,然后进行重新查询。而在微软的操作系统中不会遇到这种情况。
  • 孟德
    8.
    ;/*****************************************************************************
    ;** 函数名称: __OSStartHighRdy
    ;** 功能描述: uC/OS-II启动时使用OSStartHighRdy运行第一个任务,
    ;** OSStartHighRdy会调用__OSStartHighRdy
    ;******************************************************************************
    __OSStartHighRdy
    MSR ( ), #(NoInt | SYS32Mode)
    ;告诉uC/OS-II自身已经运行
    LDR R4,( )
    MOV R5, #1
    STRB R5, [R4]

    BL ( ) ;调用钩子函数

    LDR R6, =OSTCBHighRdy
    LDR R6, [R6]
    B OSIntCtxSw_1

    AREA SWIStacks, DATA, NOINIT
    ;,ALIGN=2
    SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆栈空间
    END
    ;/*****************************************************************************
    ;** End Of File
    ;******************************************************************************

    9.启动代码程序填空。
    CODE32
    AREA vectors,CODE,READONLY
    (ENTRY)
    ;中断向量表
    Reset
    LDR PC, (ResetAddr)
    LDR PC, UndefinedAddr
    LDR PC, SWI_Addr
    LDR PC, PrefetchAddr
    LDR PC, DataAbortAddr
    DCD 0xb9205f80
    LDR PC,( [PC, #-0xff0])
    LDR PC, FIQ_Addr

    ResetAddr (DCD) ResetInit

    ResetInit
    LDR R0, =PINSEL2
    IF :DEF: EN_CRP
    LDR R1, =0x0f814910
    ELSE
    LDR R1, =0x0f814914
    ENDIF
    STR R1, [R0]
    LDR R0, =BCFG0
    LDR R1, =0x1000ffef
    STR R1, [R0]
    LDR R0, =BCFG1
    LDR R1, =0x1000ffef
    STR R1, [R0]
    BL InitStack ;初始化堆栈 Initialize the stack
    BL TargetResetInit ;目标板基本初始化 Initialize the target board
    B (main) ;到C主程序入口
  • 孟德
    10.启动代码程序填空。
    CODE32
    (AREA) vectors,CODE,READONLY
    ENTRY
    ;中断向量表
    Reset
    LDR PC, ResetAddr
    LDR PC, UndefinedAddr
    LDR PC, SWI_Addr
    LDR PC, PrefetchAddr
    LDR PC, DataAbortAddr
    DCD 0xb9205f80
    LDR PC,( [PC, #-0xff0])
    LDR PC, FIQ_Addr

    ResetAddr DCD (ResetInit)

    ResetInit
    LDR R0, (=PINSEL2)
    IF :DEF: EN_CRP
    LDR R1, =0x0f814910
    ELSE
    LDR R1, =0x0f814914
    ENDIF
    (STR) R1, [R0]
    LDR R0, =BCFG0
    LDR R1, =0x1000ffef
    STR R1, [R0]
    LDR R0, =BCFG1
    LDR R1, =0x1000ffef
    STR R1, [R0]
    BL InitStack ;初始化堆栈 Initialize the stack
    BL TargetResetInit ;目标板基本初始化 Initialize the target board
    B main ;到C主程序入口
    11.P0.0设置为输出模式。
    PINSEL0=( );
    IO0DIR=( );
    2.P0.0-P0.3设置为输出,并输出0的语句是:
    IO0DIR=( );
    ( )=0X0000000F;
    12
    要求初始化定时器0,定时间隔为0.1S,时钟不分频,匹配后复位T0TC,产生中断标志,并启动定时器。
    Void Time0Init(void)
    {
    T0TC=( );
    T0PR=0
    ( )=0x03;
    T0TCR=( );
    }
  • 孟德
    13.
    要求初始化定时器0,定时间隔为0.1S,时钟不分频,匹配后复位T0TC,产生中断标志,并启动定时器。
    Void Time0Init(void)
    {
    ( )=0;
    T0PR=0
    T0MCR=( );
    T0TCR=( );
    }
    4.SPI主机初始化为低电平有效,1时钟采样,高位在前,初始化程序以及数据发送接收程序。
    #define MSTR (1<<5);
    #define CPOL (1<<4);
    #define CPHA (1<<3);
    #define LSBF (1<<6);

    #define SPI_MODE (MSTR| CPOL);
    void SPIInit(uint8 fdiv)
    {if (fdiv<8) fdiv=8;
    S0PCCR=fdiv&0Xfe;
    S0PCR= ( );
    }

    uint8 SPISendData(uint8 data)
    {
    IO0CLR=HC595_CS;
    S0PDR=( ) ;
    While(0==(S0PSR&0x80));
    IO0SET= HC595_CS;
    Return( )
    }
    14.
    SPI主机初始化为低电平有效,1时钟采样,高位在前,初始化程序以及数据发送接收程序。
    #define MSTR (1<<5);
    #define CPOL (1<<4);
    #define CPHA (1<<3);
    #define LSBF (1<<6);

    #define SPI_MODE ( );
    void SPIInit(uint8 fdiv)
    {if (fdiv<8) fdiv=8;
    S0PCCR=fdiv&( );
    S0PCR= SPI_MODE;
    }

    uint8 SPISendData(uint8 data)
    {
    IO0CLR=HC595_CS;
    S0PDR=data;
    While(0==( ));
    IO0SET= HC595_CS;
    Return(S0PDR)

    ** 函数名称: OSTaskStkInit
    ** 功能描述: 任务堆栈初始化代码,本函数调用失败会使系统崩溃
    ** 输 入: task : 任务开始执行的地址
    ** pdata :传递给任务的参数
    ** ptos :任务的堆栈开始位置
    ** opt :附加参数,当前版本对于本函数无用,
    ** 输 出: 栈顶指针位置
    OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
    {
    OS_STK *stk;
    opt = opt; /* 'opt' 没有使用。作用是避免编译器警告 */
    stk = ptos; /* 获取堆栈指针 */
    /* 建立任务环境,ADS1.2使用满递减堆栈 */
    *stk = (OS_STK) ( ); /* pc */
    *--stk = (OS_STK) task; /* lr */
    *--stk = 0; /* r12 */
    *--stk = 0; /* r11 */
    *--stk = 0; /* r10 */
    *--stk = 0; /* r9 */
    *--stk = 0; /* r8 */
    *--stk = 0; /* r7 */
    *--stk = 0; /* r6 */
    *--stk = 0; /* r5 */
    *--stk = 0; /* r4 */
    *--stk = 0; /* r3 */
    *--stk = 0; /* r2 */
    *--stk = 0; /* r1 */
    *--stk = (unsigned int) pdata; /* r0,第一个参数使用R0传递 */
    *--stk = (USER_USING_MODE| ( ) ); /* spsr,允许 IRQ, FIQ 中断 */
    *--stk = 0; /* 关中断计数器OsEnterSum; */
    return ( );
    }
    5.
    ** 函数名称: OSTaskStkInit
    ** 功能描述: 任务堆栈初始化代码,本函数调用失败会使系统崩溃
    ** 输 入: task : 任务开始执行的地址
    ** pdata :传递给任务的参数
    ** ptos :任务的堆栈开始位置
    ** opt :附加参数,当前版本对于本函数无用,
    ** 输 出: 栈顶指针位置
    OS_STK *OSTaskStkInit (void ( )(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
    {
    OS_STK *stk;
    opt = opt; /* 'opt' 没有使用。作用是避免编译器警告 */
    stk = ( ); /* 获取堆栈指针 */
    /* 建立任务环境,ADS1.2使用满递减堆栈 */
    *stk = (OS_STK) task; /* pc */
    *--stk = (OS_STK) task; /* lr */
    *--stk = 0; /* r12 */
    *--stk = 0; /* r11 */
    *--stk = 0; /* r10 */
    *--stk = 0; /* r9 */
    *--stk = 0; /* r8 */
    *--stk = 0; /* r7 */
    *--stk = 0; /* r6 */
    *--stk = 0; /* r5 */
    *--stk = 0; /* r4 */
    *--stk = 0; /* r3 */
    *--stk = 0; /* r2 */
    *--stk = 0; /* r1 */
    *--stk = (unsigned int)( ); /* r0,第一个参数使用R0传递 */
    *--stk = (USER_USING_MODE|0x00); /* spsr,允许 IRQ, FIQ 中断 */
    *--stk = 0; /* 关中断计数器OsEnterSum; */
    return (stk);
    }







    五、 编程题
    1.串口初始化为8位数据,1位停止位,无奇偶校验,波特率115200,试编写初始化程序和数据发送程序。(子程序即可)。
    /*******************************************************************************
    *名称: UART0_Ini()
    *功能: 初始化串口0.设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
    *******************************************************************************/
    void UART0_Ini(void)
    { U0LCR=0x83; //DLAB=1,可设置波特率
    U0DLL=0x12;
    U0DLM=0x00;
    U0LCR=0x03;
    }
    /*******************************************************************************
    *名称: UART0_SendByte()
    *功能: 向串口发送字节数据,并等待发送完毕
    *******************************************************************************/
    void UART0_SendByte(uint8 data)
    { U0THR=data; //发送数据
    while((U0LSR&0x40)==0); //等待数据发送完毕
    {
    uint32 i;
    for(i=0; i<5; i++);
    }
    }
  • r
    rage6
    春风过后下起了雨,突如其来的就这样一直持续了15年……后来我就遇见了她…………
    那年我初三,那天天气很好。
    上午我在和同学玩一个叫打架的游戏,基本上就是又打又架。
    中午我在邻居家和他玩了游戏机。是WWF摔交的,原则上就是看谁按得快。后来我按得太快了,超过了光的速度。于是我的手指消失在了时间的隧道中了。邻居看了很害怕,他问我疼吗?我说还可以,就去上学去了。
    由于去了晚了,十分钟劳动我没有赶上。班主任老师决定处罚我,把我一把拖到了操场中央要求枪毙我。只见老师套出了一把电视里土匪专门用的老式手枪,下面还拖里一根红缨。老师对着我的天灵盖就是“八起哭”一枪………………结果子弹打飞了,我就没有死,老师就说这次原谅我了,叫我以后别迟到了。我说:哦。
    后来在围观的女同学中有一个叫“她”的女孩被我英俊的外貌深深吸引住了。她对着空气说:“我爱你”。后来空气告诉了我………………我就跑过去对她说:“同学,你低调点好吗?”后来她笑了,在阳光下。笑的瞬间太快以至于超过了光的速度,于是她也失踪在时间的隧道里了。又于是第一个号称爱我的女人就这样消失了…………
    那个下午她离奇地没了以后,大家都觉得是我杀了她。或许把她埋在某个花坛里面。于是班级里的同学都去挖花坛找尸体。我就说:“同学,你们低调点好吗……”可是结果相反,他们的反映太剧烈了,找啊找的。速度也超过了光,他们都消失了。
    学校里后来只有我一个人了。哦,不对。是我周围只有一个学校了。那天以后就是我发现自己是超级塞亚人的前一天我做梦梦见自己是超级塞亚人结果第二天果然是超级塞亚人的那天,我哭了。后来我用“波”把学校毁灭了,一个黑人从废墟里爬了出来对我说了一个故事,他说人其实不是从猿进化的。我就对他吟了首诗歌:打开吉林省搭街坊可是来得及发;卢萨卡的犯得上看来恺撒交流电…………
    估计他没能听懂吧,因为毕竟他是外国人吧。
    每天早上我都准时到学校的废墟上坐着看《葫芦娃大战圣斗士》。悲伤的时候总想到鲁迅。
    今天晚上回家吃饭的时候忽然看见爸爸穿着皇帝的龙袍。妈妈在杀一头猪。爷爷在房间里开助动车,弟弟在打太极拳。我感到很震惊!因为平时明明应该是爷爷穿龙袍,弟弟开助动车,爸爸杀猪,妈妈打太极拳的啊!我看到他们这样样子也没有办法地摇了摇头,速度太快了,我就到了未来……
    未来真的未来,我后来就不想回去了。这就是我的故事…………