青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
昨日:篇  今日:篇   总帖:篇   会员:
今日:0    总帖:195
admin
49
可信度:100% 提现时间:首次提现有电话审核,之后提现,2个工作日审核,每周一、三、五到账 兑换比例:1我赚币=1元 挂机时间: 1.挂机每15分钟可以获得“我赚币”、积分,“我赚币”累计达到一定金额可以直接提现,积分可以参与竞猜或兑换礼品; 2、一个终端&IP每天可以挂3-6小时,一个帐号每天收益高达1.35-1.8的我赚币(3台电脑同时挂),额外赠送价值0.6-1.5元/天的积分额; 系统环境限制: 1、只允许在真实的个人电脑运行,不允许虚拟机、VPS、服务器; 2、不允许使用IDC机房IP、网吧IP、国外IP、代理VPN IP; 挂机数量与规则: 1、局域网下: 一个用户不支持多个终端同时登录; 2、局域网下: 支持最多两个用户同时登录; 3、一个用户一天最多使用3个IP(单终端或多终端一样); 4、每个IP每天只能挂指定时长; 5、每个终端挂机收益都会累计到您的帐户; 注册地址:http://www.wozhuan.com/t/111631.html软件截图:
网赚频道 1 0 7天前
admin
46
原文地址:https://mp.weixin.qq.com/s/ukOHhnI7nLfRoGER68rAPA(歌曲稍大,请耐心等待)“你总说毕业遥遥无期,转眼就各奔东西”又是一年毕业季阳光和汗水交织的初夏告别的日子悄悄来临也许这一别之后许久难再见也许这一别之后再也不见可是,那些年一起熬过的夜晚一起泡过的网吧一起追过的TA还有一起听过的五月天却留存在心底挥之不去“终究会有一天,我们都变成昨天是你陪我走过,一生一回,匆匆的人间有一天,就是今天,今天就是有一天说出一直没说,对你的感谢和你再干一杯”——《干杯》期待一趟旅程精彩万分 你却还在等等到荒废青春 用尽体温才开始悔恨期待一种永恒即使伤痕 也奋不顾身生命还没有黄昏下一站 你的第二人生——五月天《第二人生》“还记得,那晚星空下信誓旦旦的自己吗”那一年我们望着星空有那么多的灿烂的梦至少回忆会永久像不变星空 陪着我最后只剩下星空像不变回忆 陪着我——五月天《星空》“但行好事,莫问前程,愿你我都不被辜负” 我们曾夏啦啦啦的唱过那一首噗通通通的心动多年后我们是否依然是那一个你 那一个我当岁月轻飘飘飘的溜走我们都哎呀呀呀白了头有什么留在你我的心头那是什么——五月天《什么歌》“别忘记,去远方” 让定律更简单 让秩序更混乱这样的青春 我才喜欢让盛夏去贪玩把残酷的未来狂放到光年外——五月天《盛夏光年》“一生很长,要做些有意义的事啊” 今天 珍重谁知道是真是梦明天过后 解答或解脱如果 你在幸存的平行宇宙要怎么做 要怎么活请你对自己说——五月天《2012》“你,就是最好的自己” 我如果有梦 有没有错错过才会更加明白明白坚持是什么我如果有梦 梦要够疯够疯才能变成英雄总会有一篇我的传说——五月天《咸鱼》“要相信,下一秒永远可能有好事发生” 有没有那么一个明天重头过一遍让我再次感受曾挥霍的昨天无论生存或生活我都不浪费不让故事这么的后悔有谁能听见 我不要告别——五月天《如烟》“别急,慢慢来,比较快” 会不会 有一天时间真的能倒退退回 你的我的回不去 的悠悠的岁月也许会 有一天 世界真的有终点也要和你举起回忆酿的甜和你再乾一杯——五月天《干杯》“除了父母,应该不会有人再像您一样照顾我了吧” 只期待 后来的你 能快乐那就是 后来的我 最想的后来的我们 依然走着只是不再并肩了朝各自的人生 追寻了无论是 后来故事 怎么了也要让 后来人生 值得——五月天《后来的我们》
音乐频道 1 0 7天前
admin
132
Windows XP RTM最先泄露的是milestone3,我们从他开始Longhorn 3683 阶段:Milestone 3 SKU:Professional; Media Center Edition(FreeStyle) 架构:x86 安装:这个build使用i386模式安装,支持dos安装。 时间炸弹:2002/9/24-2003/9/19(360天) 破除时间炸弹:TweakNT 密钥:CKY24-Q8QRH-X3KMR-C6BCY-T847Y 激活工具:Anti-WPA简介:这个build有已经有了侧边栏(破解注册表开启),且支持虚拟桌面(),使用至少比luna好看的plex主题(当然luna和classic依然存在),唯一透明的地方就是侧边栏。他的explorer有了详细信息(支持三维预览)、磁盘空间进度条、地址栏链接文件夹等功能,但这些功能bug较多。侧边栏不是一个单独的进程,与explorer在一起。所以这个build的explorer易卡死。右键桌面-属性会出现”个性化“的雏形(后续版本中舍去,但重组后再次出现),开发不完全,基本上没用。Longhorn 3706 阶段:Milestone 3 SKU:Professional; Media Center Edition(FreeStyle) 架构:x86 安装:这个build使用i386模式安装,支持dos安装。 时间炸弹:2002/10/30-2003/10/25(360天) 破除时间炸弹:TweakNT 密钥:CKY24-Q8QRH-X3KMR-C6BCY-T847Y 激活工具:Anti-WPA简介:这个build有一个起始页(startpage),可以在tbc上下个WinLonghornStartPageLauncher.zip工具开启。另外,这个build的explorer又有了改动,动画更丰富,但详细信息出仍然没什么好看的,只是一个不清晰的图标罢了。控制面板中出现了“下载内容”,但是它不仅打不开,而且会导致explorer崩溃。先前的基于Avalon的桌面属性不再默认启用,直接打开xp风格的窗口。这个build还新增了一个基于Avalon的MyTVapp,使用IE作为载体。与3683相同,这个build的wmc几乎100%崩溃。这个build还更换了默认壁纸,修改了plex主题的效果。
历史频道 2 7 10天前
admin
72
转自:http://dc.pconline.com.cn/1129/11298568.html 以前网络没有像现在这么发达,人们购买电子产品,那些软件驱动都是以CD或者DVD光盘媒介给到用户。现在基本上很多电脑都没配备光驱,很多数码产品的说明书都改成电子版了,直接扫描二维码就能下载软件和驱动,但是有些产品还是帮你配了光盘,里面的东西网上也能下载到,自己没光驱可以读盘,扔了又可惜,还能怎么利用呢?当然是用来拍照啊!一、用光盘的镜面做静物背景  相信大家都见过光盘,一张可以记录数据的塑料圆片上,一面是印有这张光盘的文字或图片信息,而光盘记录数据的一面是会反光的,类似镜面一样,还会有一条条彩虹般的光影出现,很适合用来做背景底。  众所周知光盘中间是有个洞的,显然一张光盘是不够拍比较大的静物,只能拍小的,最好准备多几张光盘,把背景底铺开,就能拍摄比较大的物品。  用大光圈镜头或者长焦镜头拍摄效果会更好,利用其浅景深带来的虚化效果,突出主体,底部的倒影衬托出主体,显得很丰满唯美,有种梦幻般的感觉。二、拍摄人物时用来做虚化前景  以往拍摄人像需要找各种各样的前景来进行衬托,拍多了之后觉得很单调,渐渐地失去了新鲜感。如今有了光盘的反光做前景,同时镜面里面的景物与现实相结合,有种多重曝光的感觉,但又不是多重曝光,难以言喻。  拍出这样的画面很简单,就像上面的Gif一样,将光盘斜斜地贴在镜头的边缘不断地去调整角度,如果光盘反射出来的画面是白色的,说明你角度不够好,将天空反射出来了,应当反射周围的景物,调整多几次,就安心按快门了。  还能利用相机的内置闪光灯,强行加光斑,光盘在没有强光的情况下是很难出彩虹的,用闪光灯来来强行加光斑也是一种手法,适当将闪光灯的灯头压一下,效果会更佳。三、利用其折射出的彩虹光拍人像  有看过电视剧的朋友,都知道彩虹灯是有多么的火,我之前也买过来拍,但是那个彩虹灯的功率很小,导致ISO要开得很高,噪点也是非常多,效果也不怎么好。看到光盘的反光有彩虹出现的那一刻,我就知道有故事要发生了。  用手机的闪光灯就可以单手操作,就像上面的那样,用食指穿过光盘中间的洞,拇指和无名指抓住手机,手机跟光盘的角度呈现45度,这样一来,光盘的镜面将手机的闪光灯柔化了,没有直射这么硬,还伴有彩虹的颜色,拿出相机或手机就能拍到上面这样的效果,记住镜头不能太近,要适当留有大概两米多的距离,近距离时会聚光,离远点的话光线就会散开,彩虹能覆盖到比较大的面积。  全文总结:这期又教了大家用平时意想不到的小物件来拍摄大片,运用一些小技巧就能化腐朽为神奇,把光盘折射出来的彩虹跟镜面这两个特点运用在摄影中,这就说明看到那些看起来跟摄影一点都不沾边的东西,在拍摄中也能起到很大的作用。
休闲 1 0 14天前
admin
173
随着Windows 10的完善,目前win10系统下可以安装Linux子系统,通过安装子系统就不必再装双系统,但是子系统安装好后运行的窗口类似开启了一个终端,没有图形界面,那么,这个经验就是教大家怎么去安装Linux图形界面。安装方法就不在这里讲述了,这里我们假定大家已经装好Linux系统进入方法有以下几种:1。在左下角的Cortana中搜索Ubuntu,点击进入,看到的界面就如同我们在Ubuntu下的终端界面,在这个窗口测试一下ls命令,无误。2.通过CMD/Windows Power Shell中,输入bash进入也是可以的进入正题目前网络上主要为两种方案:一。远程桌面协议(参考:https://jingyan.baidu.com/article/ed2a5d1f98577809f6be17a3.html)我们在Linux命令行下依次输入以下命令:更新sudo apt-get update安装 xorgsudo apt-get install xorg安装xfce4sudo apt-get install xfce4安装xrdpsudo apt-get install xrdp配置xrdpsudo sed -i 's/port=3389/port=自定义为你自己的端口/g' /etc/xrdp/xrdp.ini上面是配置端口,其中第一个port3389为固定端口,后一个port为对外访问端口,也即是你之后连进来的端口向xsession中写入xfce4-sessionsudo echo xfce4-session >~/.xsession重启xrdp服务sudo service xrdp restart如果有防火墙,允许就好了。以上内容设置完成后,就可以通过远程桌面连接上去了,用户名与密码为你Linux子系统的密码二。使用第三方插件实现(例如:X-Windows 资料来源:https://blog.csdn.net/u011138447/article/details/78262369)
维护 1 0 33天前
admin
1713
昨晚更新系统,更新完成后今天开机打开远程桌面意外却提示了 英文提示: An authentication error has occurred. The function requested is not supported Remote computer:xxx.xxx.xx This could be due to CredSSP encryption oracle remediation For more information, see https://go.microsoft.com/fwlink/?linkid=866660 中文提示: 经过查询资料得知 微软相关资料页面:点击访问 知道原因,问题就很好解决了,我们可以通过以下两种方法进行解决 1.如果可以直接访问,则只需在主机上通过安装对应的Windows 补丁即可解决 2.对于无法进行直接访问的,可以通过打开组策略(gpedit.msc),找到如下策略: 策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配” 英文版策略路径名称:“Computer Configuration”-> "Administrative Templates" -> "System" -> "Credentials Delegation" 设置名称: 加密 Oracle 修正 (Encryption Oracle Remediation) 默认为未配置,我们只需要将其改为已启用,防护级别改为“易受攻击”,应用并保存即可正常连接
维护 1 0 37天前
admin
175
    相信很多和我一样的linux新手都会在安装linux后,输入命令下载文件,常常为输入一个长长的url地址而烦心吧。所以在安装linux后,第一步我们应该及时安装VMware Tools,这样会省不少事。好了,废话少说,开始进入正题吧:如何在Linux命令行模式下安装VMware Tools。选择菜单栏“虚拟机”——“安装VMware tools” ,等待系统自动更换ISO光盘**mount /dev/cdrom /mnt cd /mnt tar zxvf VMwareTools-9.6.0-1294478.tar.gz -C /root/(安装到的目录) cd /root/ cd vmware-tools-distrib/ ./vmware-install.pl最后,我们只需要一路回车到底,完成后重启系统。
维护 2 0 50天前
admin
198
原文转自:http://k.sina.com.cn/article_1708729084_65d922fc0010065r5.html阿里资深无线开发专家李运华,系统梳理了自己的思考和理解,希望帮助更多同学少走一些弯路。不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边。例如,程序员说“天天写业务代码还加班,如何才能成为技术大牛”,测试说“每天都有执行不完的测试用例”,运维说“扛机器接网线敲 Shell 命令,这不是我想要的运维人生”。我也是一位程序员,所以我希望通过以下基于程序开发的一些例子,帮助大家解决这些困惑。大道理是相通的,测试、运维都可以借鉴。几个典型的误区拜大牛为师有人认为想成为技术大牛最简单直接、快速有效的方式是“拜团队技术大牛为师”,让他们平时给你开小灶,给你分配一些有难度的任务。我个人是反对这种方法的,主要的原因有几个:大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开 1 个小时的小灶。而且一个团队里面,如果大牛平时经常给你开小灶,难免会引起其他团队成员的疑惑,我个人认为如果团队里的大牛真正有心的话,多给团队培训是最好的。然而做过培训的都知道,准备一场培训是很耗费时间的,课件和材料至少 2 个小时(还不能是碎片时间),讲解 1 个小时,大牛们一个月做一次培训已经是很高频了。因为第一个原因,所以一般要找大牛,都是带着问题去请教或者探讨。因为回答或者探讨问题无需太多的时间,更多的是靠经验和积累,这种情况下大牛们都是很乐意的,毕竟影响力是大牛的一个重要指标嘛。然而也要特别注意:如果经常问那些书本或者 Google 能够很容易查到的知识,大牛们也会很不耐烦的,毕竟时间宝贵。经常有网友问我诸如“jvm 的 -Xmn 参数如何配置”这类问题,我都是直接回答“请直接去 Google”,因为这样的问题实在是太多了,如果自己不去系统学习,每个都要问是非常浪费自己和别人的时间的。大牛不多,不太可能每个团队都有技术大牛,只能说团队里面会有比你水平高的人,即使他每天给你开小灶,最终你也只能提升到他的水平。而如果是跨团队的技术大牛,由于工作安排和分配的原因,直接请教和辅导的机会是比较少的,单凭参加几次大牛的培训,是不太可能成为技术大牛的。综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理,不要期望有个像武功师傅一样的大牛手把手一步一步地教你。适当的时候可以通过请教大牛或者和大牛探讨来提升自己,但大部分时间还是自己系统性、有针对性的提升。业务代码一样很牛逼有人认为写业务代码一样可以很牛逼,理由是业务代码一样可以有各种技巧。例如可以使用封装和抽象使得业务代码更具可扩展性,可以通过和产品多交流以便更好的理解和实现业务,日志记录好了问题定位效率可以提升10倍等等。业务代码一样有技术含量,这点是肯定的,业务代码中的技术是每个程序员的基础,但只是掌握了这些技巧,并不能成为技术大牛。就像游戏中升级打怪一样,开始打小怪,经验值很高,越到后面经验值越少,打小怪已经不能提升经验值了,这个时候就需要打一些更高级的怪,刷一些有挑战的副本了,没看到哪个游戏只要一直打小怪就能升到顶级的。成为技术大牛的路也是类似的,你要不断的提升自己的水平,然后面临更大的挑战,通过应对这些挑战从而使自己水平更上一级,然后如此往复,最终达到技术大牛甚至业界大牛的境界。写业务代码只是这个打怪升级路上的一个挑战而已,而且我认为是比较初级的一个挑战。所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。上班太忙没时间自己学习很多人认为自己没有成为技术大牛并不是自己不聪明,也不是自己不努力,而是在中国的这个环境下,技术人员加班都太多了,导致自己没有额外的时间进行学习。这个理由有一定的客观性,毕竟和欧美相比,我们的加班确实要多一些,但这个因素只是一个需要克服的问题,并不是不可逾越的鸿沟,毕竟我们身边还是有那么多的大牛也是在中国这个环境成长起来的。我认为有几个误区导致了这种看法的形成:上班做的都是重复工作,要想提升必须自己额外去学习。形成这个误区的主要原因还是在于认为“写业务代码是没有技术含量的”,而我现在上班就是写业务代码,所以我在工作中不能提升。学习需要大段的连续时间。很多人以为要学习就要像学校上课一样,给你一整天时间来上课才算学习,而我们平时加班又比较多,周末累的只想睡懒觉,或者只想去看看电影打打游戏来放松,所以就没有时间学习了。实际上的做法正好相反:首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。正确的做法Do more做的更多,做的比你主管安排给你的任务更多。我在 HW 的时候,负责一个版本的开发,这个版本的工作量大约是 2000 行左右。但是我除了做完这个功能,还将关联的功能全部掌握清楚了,代码(大约 10000 行)也全部看了一遍,做完这个版本后,我对这个版本相关的整套业务全部很熟悉了。经过一两次会议后,大家发现我对这块掌握最熟了,接下来就有趣了:产品讨论需求找我、测试有问题也找我、老大对外支撑也找我。后来,不是我负责的功能他们也找我,即使我当时不知道,我也会看代码或者找文档帮他们回答。最后我就成了我这个系统的“专家”了。虽然这个时候我还是做业务的,还是写业务代码,但是我已经对整个业务都很熟悉了。以上只是一个简单的例子,其实就是想说:要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多!怎么做得更多呢?可以从以下几个方面着手:熟悉更多业务不管是不是你负责的,熟悉更多代码,不管是不是你写的,这样做有很多好处。举几个简单的例子:需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点。问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理。方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案。熟悉端到端比如说你负责 Web 后台开发,但实际上用户发起一个 HTTP 请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、Nginx 等)。服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等),这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的。但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。“系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但都是技术大牛必备的素质,要达到这样的境界,必须去熟悉更多系统、业务、代码。自学一般在比较成熟的团队,由于框架或者组件已经进行了大量的封装,写业务代码所用到的技术确实也比较少。但我们要明白“唯一不变的只有变化”,框架有可能要改进,组件可能要替换,或者你换了一家公司,新公司既没有组件也没有框架,要你从头开始来做。这些都是机会,也是挑战,而机会和挑战只会分配给有准备的人,所以这种情况下我们更加需要自学更多东西,因为真正等到要用的时候再来学已经没有时间了。以 Java 为例,大部分业务代码就是 if-else 加个数据库操作,但我们完全可以自己学些更多 Java 的知识。例如垃圾回收,调优,网络编程等,这些可能暂时没用,但真要用的时候,不是 Google 一下就可以了,这个时候谁已经掌握了相关知识和技能,机会就是谁的。以垃圾回收为例,我自己平时就抽时间学习了这些知识,学了 1 年都没用上,但后来用上了几次,每次都解决了卡死的大问题。而有的同学,写了几年的 Java 代码,对于 stop-the-world 是什么概念都不知道,更不用说去优化了。Do better要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地方,都是更高级别的怪物,打完后能够增加更多的经验值。识别出这些地方,并且给出解决方案,然后向主管提出,一次不行两次,多提几次,只要有一次落地了,这就是你的机会。例如:重复代码太多,是否可以引入设计模式?系统性能一般,可否进行优化?目前是单机,如果做成双机是否更好?版本开发质量不高,是否引入高效的单元测试和集成测试方案?目前的系统太庞大,是否可以通过重构和解耦改为 3 个系统?阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?只要你去想,总能发现可以改进的地方的;如果你觉得系统哪里都没有改进的地方,那就说明你的水平还不够,可以多学习相关技术,多看看业界其他优秀公司怎么做。我 2013 年调配到九游,刚开始接手了一个简单的后台系统,每天就是配合前台做数据增删改查,看起来完全没意思,是吧?如果只做这些确实没意思,但我们接手后做了很多事情:解耦,将一个后台拆分为 2 个后台,提升可扩展性和稳定性。双机,将单机改为双机系统,提高可靠性。优化,将原来一个耗时 5 小时的接口优化为耗时 5 分钟。还有其他很多优化,后来我们这个组承担了更多的系统,也就是这个小组 5 个人,负责了 6 个系统。Do exercise在做职业等级沟通的时候,发现有很多同学确实也在尝试 Do more、Do better,但在执行的过程中,几乎每个人都遇到同一个问题:光看不用效果很差,怎么办?例如:学习了 Jvm 的垃圾回收,但是线上比较少出现 FGC 导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每位同学都去练一下手,那怎么去实践这些 Jvm 的知识和技能呢?Netty 我也看了,也了解了 Reactor 的原理,但是我不可能参与 Netty 开发,怎么去让自己真正掌握 Reactor 异步模式呢?看了《高性能MySQL》,但是线上的数据库都是 DBA 管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?框架封装了 DAL 层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?诸如此类问题还有很多,我这里分享一下个人的经验,其实就是 3 个词:learning、trying、teaching!Learning这个是第一阶段,看书、Google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如 Jvm 原理、Java 编程、网络编程,HTTP 协议等等。这些基础技术不能只通过 Google 或者博客学习,我的做法一般是先完整的看完一本书全面的了解,然后再通过 Google、视频、博客去有针对性的查找一些有疑问的地方,或者一些技巧。Trying这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:Jvm 垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种 jvm 启动参数,再运行的过程中使用 jstack、jstat 等命令查看 jvm 的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。Reactor 原理:自己真正去尝试写一个 Reactor 模式的 Demo,不要以为这个很难,最简单的 Reactor 模式代码量(包括注释)不超过 200 行(可以参考 Doug Lee 的 PPT)。自己写完后,再去看看 Netty 怎么做,一对比理解就更加深刻了。MySQL:既然有线上的配置可以参考,那可以直接让 DBA 将线上配置发给我们(注意去掉敏感信息),直接学习。然后自己搭建一个 MySQL 环境,用线上的配置启动;要知道很多同学用了很多年 MySQL,但是连个简单的 MySQL 环境都搭不起来。框架封装了 DAL 层:可以自己用 JDBC 尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。用浏览器的工具查看 HTTP 缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的。也可以自己用 Python 写一个简单的 HTTP 服务器,模拟返回各种 HTTP Headers 来观察浏览器的反应。还有很多方法,这里就不一一列举,简单来说,就是要将学到的东西真正试试,才能理解更加深刻。印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand ,而且“试试”可以比较简单,很多时候我们都可以自己动手做。当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复杂度不是我们写个模拟程序就能够模拟的。但这样的机会可遇不可求,大部分情况我们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。Teaching一般来说,经过 Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌握很全面了,但一写就发现很多点没考虑到。组内培训的时候也经常看到,有的同学写了 PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚,或者有的点其实是理解错了。写 PPT、讲 PPT、讨论 PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。后记成为技术大牛梦想虽然很美好,但是要付出很多,不管是 Do more 还是 Do better 还是 Do exercise,都需要花费时间和精力,这个过程可能很苦逼,也可能很枯燥。这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣!作者:李运华编辑:陶家龙、孙淑娟来源:转载自阿里技术微信公众号
休闲 1 0 73天前
admin
313
原文地址:https://bbs.pediy.com/thread-225175.htm今天我们探索一个问题: 64位的ntdll是如何被加载到WoW64下的32位进程?今天的旅程将会带领我们进入到Windows内核逻辑中的未知领域,我们将会发现32位进程的内存地址空间是如何被初始化的。WoW64是什么?来自MSDN:WOW64是允许32位Windows应用程序无缝运行在64位Windows的模拟器。  换句话说,随着64位版本Windows的引进,Microsoft需要拿出一种允许在32位时代的Windows程序与64位Windows新的底层组件无缝交互的解决方案。特别是64位内存寻址和与内核直接交流的组件。两个NT层,一个内核在32位的Windows系统中,要调用Windows API的应用程序需要经过一系列的动态链接库(DLL)。然而,所有的系统调用最终会定向到ntdll.dll,它是在用户模式下将用户模式API传递给内核的最高层。以调用CreateFileW为例,这个API调用源于用户模式下的kernel32.dl,随后它以NtCreateFile传递给ntdll,随后NtCreateFile通过系统调度程序将控制权传递给内核。在32位Windows下这是非常简单的,然而,在WoW64下需要额外的步骤。32位的ntdll不可以直接将控制权交给内核,因为内核是64位的,只接受遵循64位ABI的类型(译者注:ABI,Application Binary Interface,应用二进制接口)。正因为如此,一个翻译层以几个标准的命名为wow64.dll,wow64cpu.dll和wow64win.dll的DLL的形式被添加到64位Windows。这几个DLL负责将32位调用转换成64位调用。那些调用最终被定向到映射到每个32位进程中的64位ntdll。许多关于这种从32位系统调用到64位系统调用(1)的神奇转换的信息是可获得的,所以我们不会从这里进入。我们最关注的是内核何时和怎样将64位版本的ntdll映射到一个32位进程。看起来像这样:我们特别关注倒数第二项。我们能发现ntdll被映射到地址是64位地址范围(7FFFFED40000-7FFFFEF1FFFF),而且它的位置在Windows 64位系统文件所在的System32\路径下。然而,我们知道32位进程不可以访问或者运行在64位内存空间。为了理解上面输出的内容,我们首先讨论VAD(Virtual Address Descriptor,虚拟地址描述符)是什么和它将如何帮助我们理解加载64位dll到32位进程的机制的。什么是虚拟地址描述符?VAD是Windows操作系统跟踪系统中可用物理内存的许多方法之一。VAD专门跟踪每个进程用户模式范围的保留的和提交的地址。任何时候一个进程请求一些内存,一个新的VAD实力被创建用来跟踪内存。VAD被构造成一个自平衡树,每个节点描述了一段内存范围。每个节点至多包含两个子节点,左边是低地址,右边是高地址。每个进程被分配一个VadRoot,之后通过遍历VadRoot来分辨额外用来描述保留或提交的虚拟地址范围的额外节点。我们需要关注WindDBG中的!vad命令的输出,因为这是我们将大量使用来跟踪64位Windows中32位进程的映射的输出。对于这个练习,不是所有的域对我们来说都是特别有趣的。我们考虑测试程序HelloWorld.exe的输出。通过!process ProcessObject 命令的输出来分辨我们进程的VadRoot。 一旦我们确定了VadRoot,我将地址输入到 !vad 命令。(输出为了容易分析已被截断)我们看到五列: "VAD", "Level", "Start", "End", 和"Commit".!vad命令 接受VAD实例的地址;在我们的例子中,我们已经为它提供了在此进程中通过使用!process命令获得的VadRoot。VAD地址是当前VAD结构体或实例的地址:等级(Level)描述了这个VAD实例(节点)在所在树中的级别。Level 0是从上面!process输出中获得的VadRoot。开始(Starting)和结束(Ending)地址值用VPN(Virtual Page Numbers,虚拟页数量)表示。这些地址可以通过乘以页面大小(4kb)或者左移3位转化为虚拟地址。结束VPN会添加一个额外的0xFFF来扩展到页面末尾。如我们上面例子中的D20->D20000,DD20->DD2FFF。提交(Commit)是被此VAD实例描述的范围内提交页面的数量。分配类型(type of allocation)告诉我们改特定范围是否已经被映射或是进程私有的。访问类型(Type of access)描述改范围内的允许访问。最后是被映射到当前区域对应的名称。一个AVD实例可以以多种方式创建。如通过使用映射API(CreateFileMapping/MapViewOfFile)或者内存分配API如VirutalAlloc函数。内存可以是保留或者提交的(或free的),或保留和部分提交的。无论哪一种,一个VAD项被映射到进程的Vad树来让内存管理器知道此进程中当前已提交的内存。我们对VAD 的观察将揭示WoW64下运行的32位进程的初始设置。  映射NT子系统DLL进程初始化的早期,在主可执行文件被映射和初始化之前,Windows为特殊区域确定和保留一些地址范围。其中包含初始进程地址空间,共享系统空间(_KUSER_SHARED_DATA),控制流守护位图区域,和NT本地子系统(ntdll)。由于进程初始化整体的复杂性,我们只关注最后一块,它包含32位ntdll和64位ntdll加载到32位进程地址空间的逻辑。我们关注一系列的API调用和在每个点的内存区域的虚拟地址描述符(VAD)。为了让内核区分怎样映射一个新进程,它需要知道是否这是一个WoW64进程。当进程对象最初被创建,内核通过读取名为_EPROCESS.Wow64Process的未文档化结构体_EPROCESS结构体的值来实现此操作。PspAllocateProcess是我们探索开始的地方,但是更具体的说,我们开始在MmInitializeProcessAddressSpace()。MmInitializeProcessAddressSpace()负责与一个新进程地址空间有关的初始化。它调用MiMapProcessExecutable,该函数创建了定义初始进程可寻址内存空间的VAD项,随后将新创建的进程映射到它的基虚拟地址。一个特别有趣的函数是PspMapSystemDlls。我们关注在调用PspMapSystemDlls之前的进程地址空间的样子。在WinDBG中确保我们当前处于我们测试应用程序的上下文中(.process),并寻找当前VadRoot(!vad output)。          到目前为止我们可以观察到,我们的进程在32问地址空间中被映射和分配了一个基地址(1200),内核共享内存(0x7FFE0000-0x7FFE0FFF) 和64KB保留内存区域(0x7FFE1000-0x7FFEFFFF) 也已经被映射到他们各自的虚拟地址。PspMapSystemDlls 通过一个包含多个平台子系统模块的全局指针迭代。对于x86和x64Windows,这些是分别位于 C:\Windows\SysWow64 和C:\Windows\System 目录中的ntdll.dll。一旦 PspMapSystemDlls 发现要加载的DLL,它调用 PspMapSystemDll 来映射他们(DLLs)到进程的地址空间。该函数非常简短,下面展示了一个片段。为了正确映射本地子系统,需要满足一些条件。         PspMapSystemDll 通过调用 MmMapViewOfSection 实现实际的本地DLL的映射,并保存所占的基地址。在这两个DLL映射完成并且他们的VAD项初始化完成后,我们的32位进程地址空间看起来像这样:             所以现在,我们映射完我们的进程(0xc40000-0xcf2fff),内核共享内存空间(0x7ffe0000-0x7ffe0fff),32位地址空间的有效结束区域(0x7ffe1000-0x7ffeffff),和我们的两个NT子系统DLL。锁定地址空间为了完成32位进程的映射,还有最后一步要做。我们知道一个32位进程最多寻址到2GB的虚拟内存,所以Windows需要屏蔽此进程剩余的地址空间。对于32位进程,屏蔽在 0x7FFF0000 - 0x7FFFFFFF 之后;然而,0x7FFeFFFF 之后什么也不可以映射。基于此事实,紧邻64位NTDLL的内存区域需要保留或者屏蔽。要做到这一点,内核标记剩下的64位地址空间为私有。它通过遍历当前进程的VAD树和定位最后可用的虚拟地址来创建此VAD项,然后附加一个新的VAD项。完成此任务的API是 MiInitializeUserNoAccess。该函数接受当前进程句柄和一个虚拟地址。传递的虚拟地址是 0x7FFF0000,这是32为进程最后可寻址范围的起始。然后,它遍历当前的VAD项并执行一个新范围的插入,该范围覆盖了32位进程剩余的地址空间。在此调用后,我们的进程地址空间看起来像这样:      我们现在可以发现,我们的32位进程已经映射,并且它的合规的内存地址范围已经被内核保留。涵盖 0x7FFF0 - 0x7FFFFED3F 和 0x7FFFFEF20- 0x7FFFFFFEF 范围的VAD实例已经被内核保留为私有。随后任何检索内存的调用仅仅会发生在允许的32为地址空间内。一旦进程完全加载,我们可以看到额外的已提交的内存出现在进程(0xC40000)附近的地址空间。       结束演讲我们观察到64位Windows下的32位进程的初始映射以及64位ntdll如何被映射到64位区域,随后64位地址空间被锁定,防止用户访问,我们学到了什么?1、早期初始化逻辑决定我们是否准备映射一个WoW64进程。2、分配最初的32位地址空间区域;这包括最高可访问的32位地址范围,和进程首选的基虚拟地址。3、NT子系统DLL被加载到他们各自的地址范围,32位ntdll加载到32位空间,64位ntdll加载到64位地址空间。4、MmInitializeUserNoAccess 用来创建与64位ntdll范围相邻的西游范围。这具有从32位进程锁定64位可寻址空间的效果。希望这篇文章提供了一些关于Windows如何允许讲32位进程无缝集成到64位Windows操作系统的透明度。随着WoW64模拟层的添加,对地址空间可用性进行了一些额外的考虑,并且这个过程反映了一些这些考虑和及其实现。 
开发 1 0 95天前
admin
293
原文载自:http://www.hao4k.com/thread-9349-1-1.html如果观看4K HDR视频和电影的时候,使用不正确的方法观看时,画面惨白惨白的,简直一塌糊涂,不知道人还以为是片源有问题呢。下面这图应该是很多用户会遇到的情况。HDR片源正确播放和非正确播放对比图。8 p3 a; N: q$ c: G4 N  g  在开始介绍如何用PC播放HDR之前,小编还是建议大家花几百块买台电视盒子,这样省事儿很多。英特尔的牙膏还要一点一点挤,优秀的HDR算法更是捉襟见肘。相反ARM处理器就灵活很多,专门针对视频优化的ARM处理器甚至可以支持HDR10标准(12bit、Rec 2020、4K)的硬解。目前英特尔第七代U虽然支持了HEVC 4K 60FPS硬解,但是对于HDR的视频渲染目前还没有硬解方案。' H0 G, r) [0 L/ i6 Q电脑怎么播放4K HDR片子的方法(相关软件在文章最后均有提供):  下面小编介绍的方案是potplayerr播放器+madVR渲染。potplayerr就不用过多介绍了,madVR支持读取片源里的HDR信息,然后把颜色重新映射在SDR屏幕上,模拟HDR的效果。& O! j+ {  o/ E; c( ?  一、硬件检测  可以先用DXVAChecker检查一下CPU或者显卡是否支持HEVC 10bit硬解。站长用GTX750检查了一下,最高可以支持到4K HEVC 10bit硬件。  还有一点要注意,如果打算用PC输出到普通显示设备上观看HDR视频,那输出端口必须支持HDMI2.0和DP1.4,DP1.2的宽带虽然也够,但却不支持HDR/BT.2020。然而HD620核显HDMI只支持到了1.4,目前的4K电视是没有DP接口的,所以要借助转换器或者雷电接口了。打算拿Kaby Lake来做HTPC在电视上解码4K HDR视频的朋友,一定要留意HTPC是否有DP或雷电接口,4K电视是否有HDMI2.0接口。  大家可以去potplayerr官网和madVR官网分别下载最新的程序,安装完potplayerr之后记得勾选“安装额外的编解码器”,这样就可以将常用的解码器一并安装了。  二、madVR设置  madVR下载之后解压到非中文名称的路径下,管理员身份运行install.bat。这样madVR就安装好了。       接下来我们打开“madHcCtrl.exe”这个程序,对madVR进行简单设置,显示器设置选第二项Digital Monitor/TV。properties中,如果是PC就选0-255,如果是TV就选16-235。面板色数这里根据你自己面板的参数来,如果屏幕是8bit抖色成10bit且只能显示1670万色,那建议选8bit、9bit,这样色阶过度会好一点,不然画面可能会出现很多噪点或者断层。                   calibration。选择第二项,表示显示器的色彩已经校准为BT.709(此处根据显示器色域性能选择不同的标准)。其他方面默认设置就好。                     三、potplayerr设置 用potplayerr任意打开一个HDR视频,进入选项设置,在视频解码器中添加滤镜,选择系统滤镜,点选“madVR”(上图为具体操作流程)。这样播放器就成功添加了madVR滤镜。 接着把视频输出设备勾选为“Madshi视频渲染”,全屏独占模式选为“使用”(全屏下渲染更快)。至此视频渲染器的设置就完成了。]# g  四、效果检验  potplayerr播放界面下查看视频输出设备,出现了“Madshi视频渲染”。 快捷键Tab调出OSD信息可以看到视频渲染器为“Madshi Video Renderer”。 有木有感觉相当惊艳?!看到两种渲染模式的对比,HDR让人有种回到等离子时代的幻觉,而且这还是在普通显示器上演示的结果,如果放在峰值亮度1000nit及以上的显示设备上,那画面的真实感怕是要溢出了。 i  总结:由于HDR标准面世的时间还不太久,在消费领域推广HDR视频也是近几年才有的事情,所以市面上关于4K HDR的解决方案还并不是很多。本文介绍在PC端渲染的方法也还不尽完善,且对硬件要求非常之高。如果你打算更流畅的体验HDR带来的视觉惊喜,小编还是建议直接购买支持HDR的电视或者盒子。  HDR是为内容而生的,但是一个新技术面世初期,必然面临内容匮乏的尴尬。可这种尴尬并不能很快化解,因为内容创作是一次性的,越来越庞大的电视节目库不可能整体升级,可以期待的只是增量,只有新内容可以用更高的技术规格进行制作。短期内能做的只是通过现有片源+图像处理技术加以适当弥补。(完) 软件下载:①DXVA Check :点击下载    ②madVr :分卷1下载   分卷2下载  分卷3下载  分卷4下载  分卷5下载
其他 1 0 95天前
桂公网安备 45010302000666号 桂ICP备14001770-3号
您的IP:54.144.16.135,2018-06-20 07:48:46,Processed in 1.125 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 5.5.2