0%

在昨天晚上因为想更新显卡驱动,结果发现一直都没法装上,如下提示: 【因为我已经解决了问题装完了,所以这图是随便找到,版本号不要在意。。】 看到提示后我也重启过N遍电脑了,打开都是这个提示,然后我开始了卸载驱动。 没想到卸载驱动还是这个提示,不过在用了别的方法强制卸载后。发现还是一直提示重启。 没有办法完成安装。 最后发现是注册表里有个Nvidia_Reboot_Required来标记你的机子是否重启,一直没有被删除导致。 手动删除他就能安装驱动了。 1.WIN+R打开运行 2.键入 “regedit” 3.点开“HKEY_LOCAL_MACHINE\SOFTWARE” 4.在底下找到“Nvidia_Reboot_Required”(或类似的名称),并将其删除。 然后再打开你的nvidia安装程序,问题解决了~

近期在琢磨React, 同时需要开发微信端的东西使用了react-weui 结果发现react-weui的文档说明真的是不全, 遇到好几个坑 在这里记录一下 在使用TabBarItem前观看了 react-weui 文档 可以根据active属性 得知设定是否激活,默认为fasle <TabBarItem icon={} label=”11” active={true}/> <TabBarItem icon={} label=”22” active={true}/> 照上面代码看应该会两个都是高亮激活的样式 但在实际使用中我设置了fasle和true都没有反应 郁闷的找了很久的原因 最后在还是在React-Weui的源码中发现了问题所在 因为TabBarItme是写在Tab组件里用的 【官方例子也是这样的】 然后Tab组件里有个props属性 “defaultindex” 该属性会影响子节点的active ,导致在TabBarItme里设置active在一开始是会被Tab组件里的defaultindex刷掉的= = 所以最后应该 把初始要激活的菜单写在tab组件的 defaultindex props属性里 <TabBarItem icon={} label=”11” active={true}/> <TabBarItem icon={} label=”22” active={true}/> 然而在文档中Tab组件是没有props属性的…

I1.jpg)

今天是2016的最后一天啦,各位跨年快乐 该方法仅在Windows8.1企业版、专业版(批量)Windows10企业版测试,其他版本自测 前期准备你系统和Office激活且装好驱动 一:将系统镜像解压的install.wim提取到D盘根目录。 二:D盘先建立一个文件夹install 三:管理员命令提示符Dism /mount-image /imageFile:D:\install.wim /index:1 /mountdir:D:\install 四:cache.dat、data.dat、tokens.dat三个文件替换,替换D盘的D: \install \Windows\System32\spp\store\2.0 三个文件信息地址C:\Windows\System32\spp\store\2.0 五:Dism /Image:D:\install /Set-ProductKey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx(windows密钥) 六:Dism /unmount-wim /mountdir:D:\install /commit 七:install替换系统镜像里的install.wim 八:完工。安装系统去吧。 九:安装系统后,打上所有驱动,安装Office输入office密钥即可激活 如找不到输入Office密钥的地方则管理员命令提示符slmgr.vbs -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx(Office密钥),打开Office任意组件关掉Office提示的激活窗口,文件–账户–更换密钥,即可激活Office

只是随便很简单就能抓到的接口啦。 【播放此文章顶部的音乐食用更佳啦~↑↑↑↑↑↑↑↑↑ 不过跟PC android 的接口应该是不一样的。 具体发现这个接口也是无意之间。 正文开始: 发现接口更新了必须加上version=1 否则都是失效的歌曲地址!!!! ============================================================== 网易旗下有个 网易博客 跟 LOFTER , 在发表日志什么的时候,可以插入音乐 没错, 就是这里。 我们打开浏览器F12 转到 NetWork 然后在随便输入一个歌曲名 然后, 就是这么简单啦啊哈。我们就得到了这个搜索音乐的API。 简化一下接口 接口地址为: http://s.music.163.com/search/get/ 对应参数:

名称

作用

version

1

必填,不然查询到的歌曲地址是失效的。

src

blog

这个也不是必填,网易博客是blog,lofter就是lofter

type

1

这是个必填的,默认就好了~

s

卡农

搜索内容不用多说啦, 搜索歌名, 歌手名, 专辑名, 应该事都没问题的~

limit

10

返回搜索结果数量, 我也没有找上限是多少。自己试试吧

offset

0

搜索结果页数~,一页显示不完就有多几页啦。 从0开始哟

例: http://s.music.163.com/search/get/?type=1&s=Frontier&limit=10&offset=0 返回格式为 JSON 结果太长 取短的一条随便说下

{
\“result\“:{
\“songCount\“:2589,
//搜索到的相关歌曲总数

\\"songs\\":\[
    {
        \\"id\\":30512839,

//歌曲网易云ID

\\"name\\":\\"Frontier\\",

//名字

\\"artists\\":\[

//歌手信息 多个歌手都显示在底下

    {
        \\"id\\":1049952,   
        \\"name\\":\\"Krale\\",
        \\"picUrl\\":null
    },
    {
        \\"id\\":0,
        \\"name\\":\\"Jasmina Lin\\",
        \\"picUrl\\":null
    },
    {
        \\"id\\":0,
        \\"name\\":\\"Jay Christopher\\",
        \\"picUrl\\":null
    }
\],
\\"album\\":{

//专辑信息

\\"id\\":3102519,
\\"name\\":\\"Frontier \\",
\\"artist\\":{
    \\"id\\":0,
    \\"name\\":\\"\\",
    \\"picUrl\\":null
},

//歌曲封面

    \\"picUrl\\":\\"http://p1.music.126.net/kNwudenOgsyb63jEVPcm3g==/2537672839489753.jpg\\"    
},

//歌曲直链地址,可外链播放 也可以直接下载

\\"audio\\":\\"http://m2.music.126.net/rRvsLcWtFtPalq_yPmJ0eg==/7826323766722669.mp3\\",
\\"djProgramId\\":0,

//歌曲网易云音乐页

            \\"page\\":\\"http://music.163.com/m/song/30512839\\"
        }
    \]
},
\\"code\\":200

}

左侧不是有个music网页嘛【飘着云,一直都没有做后续的那个 其实我本来就是想加上这个接口把页面做完的233,不过一直没弄完2333 而且本文章顶部的音乐直链也是这样取到的哟。 完~

更新了最近的几个预览版后一直在使用的Shadowsocks-GUI都不能用了,无奈之下转了ShadowsocksR,刚刚查了Github上的issue,发现这个问题是最近的预览版中Win10的一个网络配置API挂了。具体的情况参见这里。 临时解决方案是:

一、换用ShadowsocksR,这个客户端使用的注册表的方法配置代理,不受API挂掉的影响。

二、手动在设置APP里配置代理,填写代理服务器127.0.0.1,以及SS客户端的端口。暂时还没解决PAC问题,只能全局。

PAC读下源码应该能看到是怎么实现的,照着手动模仿一个应该也行,然而期末考试期间还是不作死了……哪位大神有空看看呗…… 2016-12-25 更新: 忽然发现这个问题已经修复,不知道是SS改了代理设置方法还是微软终于修复了那个API的错误。现在更新到14986版系统,搭配最新版SS是可以使用的。(SSR就不用再用了)

今年早些时候,很多结尾带G的老型号核显进入了Legacy Support阶段,基本算是该淘汰的程度了,然而某想的电脑上仍然大量采用了这类老型号显卡,坑了一大批人。这些电脑在运行Windows 10的时候,系统有时候会单独给独显更新显卡驱动(独显是支持新驱动的),但是因为核显的存在(貌似独显的输出是接到核显上的)这些机器在更新时可能会出现自动重启,然后无法进入系统。或者是有些同学加入Windows Insider计划之后,系统更新可能导致驱动一起更新或者驱动被卸载重装的情况,这样也会出现之前的问题。在被这个问题折磨了好久之后,摸索很久找到一个可以解决的方案,贴出来,希望能对遇到同样问题的朋友有所帮助。 我的机器:Lenovo Y485P, 显卡:AMD Radeon HD 8650G + HD 8790M Dual Graphics。 言简意赅的说,停止驱动更新,卸载显卡驱动及其管理软件,一定要全删光,包括没有卸载程序的那部分,手动删除,否则会出现装好驱动后全屏视频和程序崩溃的现象! 问题分为两个阶段:停止驱动更新,安装正确的显卡驱动。 一、停止驱动更新。 这个问题其实网上有不少的解决方案,这里推荐一下这个办法。 首先,刚装系统的时候推送的显卡驱动一般是没事的,所以不需要一开始就把驱动更新关了,等到出现问题的时候通常我们其他驱动都是好的,所以可以简单点直接屏蔽所有的驱动更新推送,方法如下。(如果只想屏蔽显卡更新,可以百度搜一下用组策略屏蔽驱动更新的办法,或使用微软发布的屏蔽更新的疑难解答程序)(这个有时候会失败,不知道为什么,似乎有点看脸的意思,如果关了这个还是推送驱动更新的的话可以试试其他方法屏蔽更新) 1.进入安全模式。系统崩溃后无法开机,会出现自动重启的现象,连续3次会进入修复计算机的阶段,等到提示出现“你的电脑无法正确启动”,这个时候会有两个选项,选择“高级启动”。 然后在后面的提示选择“疑难解答”,然后找“高级启动”或者“启动选项”之类的东西,反正能看到有安全模式的选项。找对了地方那里有个重启按钮,点击,重启后按4就能进入安全模式。 2.卸载所有显卡驱动。 按下Windows + X或右键开始菜单,选择“设备管理器”,找到显示适配器,把独显和核显的驱动全部卸载,并勾选“同时删除驱动程序文件”。 1 2 然后重启计算机,这时候应该就能进入系统了。 3.重启后时刻关注自动更新。重启进入系统后先打开设置,进入更新页面,这时候要时刻注意着,一旦这里提示“正在准备安装更新”,而更新名又是显卡驱动的话,停止一切操作,直接开始,重启计算机,防止再度打上那个大坑驱动。通常重启后这里会显示安装失败,这样就安全了,一时半会不会再打这个驱动了,可以放心进行下面的操作。 3 4.关闭驱动更新。 右键开始,或者Window + X,选择“系统”。在弹出的窗口中选择左侧“高级系统设置”。 找到“硬件”选项卡,点击“设备安装设置”。 8 选择“否(你的设备可能无法正常工作)”,并保存更改。 9 5.关闭自动更新服务。右键开始,或者Window + X,选择“计算机管理”。在打开的计算机管理中,查看各个服务的状况,找到“Windows Update”的服务。 4 双击,在弹出的窗口中把启动方式更改为“手动”,然后“停用”,确定。 5 6.删除更新缓存。进入“C:\Windows\SoftwareDistribution\Download”文件夹下,删除所有文件。 7.启动Windows Update服务。右键开始或者Windows + X选择“计算机管理” ,找到Windows Update,双击,选择“启动”。 6 到现在就已经关掉了驱动更新了,可以安心收拾驱动而不用担心再次系统崩溃了。 二、安装合适的驱动。 1. 重复步骤“一-2”的操作,删除全部显卡驱动。注意不要选回滚,回滚了可能重新装完显卡驱动后会出现全屏幕视频和软件崩溃的情况。 2.卸载驱动管理工具。右键开始或Windows + X,打开“程序和功能”,卸载AMD驱动相关全部软件。 10 3.手动删除其他AMD相关文件。打开任务管理器(右键任务栏即可),可以根据描述来结束相应进程。 然后删除C:\Program Files下的AMD和ATI Technology的文件夹以及C:\AMD文件夹,然后从开始菜单找到显卡相关快捷方式,用“打开文件位置”找到对应的文件夹,删除全部文件,如果提示某个程序正在运行,可以再回到任务管理器把刚才漏下的程序结束进程。这时候可能会报什么Qt5的库dll缺失,不用管。反正尽量把相关的软件都卸载了或者手动删除掉。 4.重新安装兼容的驱动。我安装的是WHQL的15.7.1,这个是最后一个兼容的WHQL驱动,Beta版的16.3.2我没有试过,各位可以自己试试看能不能用。前面三步都是为了防止出现重装驱动后全屏幕的程序和网页视频什么的都崩溃的情况。如果你安装找个网页视频测试,可以全屏程序不崩溃的话就成功了。

玩了一段时间,差不多玩够了,开始打算写一款UWP应用试试~ 这里记录开发过程中所需要的笔记和遇到的问题。 首先是对于各种图标的使用。 微软本身内置了很多图标 关于内置图标具体可以在 https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.controls.symbol.aspx 查看 内置图标使用 nIBFRjQ 然后也可以使用字体图标 web常用的http://fontawesome.io/icons/ 亦或者是微软推荐的https://msdn.microsoft.com/windows/uwp/controls-and-patterns/segoe-ui-symbol-font 字体图标使用 就是添加资源文件对应字体,然后使用字体图标对应的unicode的编码设置FontIcon的Glyph属性即可。

名称

说明

Add

将两个值相加并将结果推送到计算堆栈上。

Add.Ovf

将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。

Add.Ovf.Un

将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。

And

计算两个值的按位“与”并将结果推送到计算堆栈上。

Arglist

返回指向当前方法的参数列表的非托管指针。

Beq

如果两个值相等,则将控制转移到目标指令。

Beq.S

如果两个值相等,则将控制转移到目标指令(短格式)。

Bge

如果第一个值大于或等于第二个值,则将控制转移到目标指令。

Bge.S

如果第一个值大于或等于第二个值,则将控制转移到目标指令(短格式)。

Bge.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。

Bge.Un.S

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。

Bgt

如果第一个值大于第二个值,则将控制转移到目标指令。

Bgt.S

如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。

Bgt.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。

Bgt.Un.S

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。

Ble

如果第一个值小于或等于第二个值,则将控制转移到目标指令。

Ble.S

如果第一个值小于或等于第二个值,则将控制转移到目标指令(短格式)。

Ble.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控制转移到目标指令。

Ble.Un.S

当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令(短格式)。

Blt

如果第一个值小于第二个值,则将控制转移到目标指令。

Blt.S

如果第一个值小于第二个值,则将控制转移到目标指令(短格式)。

Blt.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则将控制转移到目标指令。

Blt.Un.S

当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则将控制转移到目标指令(短格式)。

Bne.Un

当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令。

Bne.Un.S

当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令(短格式)。

Box

将值类转换为对象引用(O 类型)。

Br

无条件地将控制转移到目标指令。

Br.S

无条件地将控制转移到目标指令(短格式)。

Break

向公共语言结构 (CLI) 发出信号以通知调试器已撞上了一个断点。

Brfalse

如果 value 为 false、空引用(Visual Basic 中的 Nothing)或零,则将控制转移到目标指令。

Brfalse.S

如果 value 为 false、空引用或零,则将控制转移到目标指令。

Brtrue

如果 value 为 true、非空或非零,则将控制转移到目标指令。

Brtrue.S

如果 value 为 true、非空或非零,则将控制转移到目标指令(短格式)。

Call

调用由传递的方法说明符指示的方法。

Calli

通过调用约定描述的参数调用在计算堆栈上指示的方法(作为指向入口点的指针)。

Callvirt

对对象调用后期绑定方法,并且将返回值推送到计算堆栈上。

Castclass

尝试将引用传递的对象转换为指定的类。

Ceq

比较两个值。如果这两个值相等,则将整数值 1 (int32) 推送到计算堆栈上;否则,将 0 (int32) 推送到计算堆栈上。

Cgt

比较两个值。如果第一个值大于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Cgt.Un

比较两个无符号的或不可排序的值。如果第一个值大于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Ckfinite

如果值不是有限数,则引发 ArithmeticException。

Clt

比较两个值。如果第一个值小于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Clt.Un

比较无符号的或不可排序的值 value1 和 value2。如果 value1 小于 value2,则将整数值 1 (int32 ) 推送到计算堆栈上;反之,将 0 ( int32 ) 推送到计算堆栈上。

Constrained

约束要对其进行虚方法调用的类型。

Conv.I

将位于计算堆栈顶部的值转换为 native int。

Conv.I1

将位于计算堆栈顶部的值转换为 int8,然后将其扩展(填充)为 int32。

Conv.I2

将位于计算堆栈顶部的值转换为 int16,然后将其扩展(填充)为 int32。

Conv.I4

将位于计算堆栈顶部的值转换为 int32。

Conv.I8

将位于计算堆栈顶部的值转换为 int64。

Conv.Ovf.I

将位于计算堆栈顶部的有符号值转换为有符号 native int,并在溢出时引发 OverflowException。

Conv.Ovf.I.Un

将位于计算堆栈顶部的无符号值转换为有符号 native int,并在溢出时引发 OverflowException。

Conv.Ovf.I1

将位于计算堆栈顶部的有符号值转换为有符号 int8 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I1.Un

将位于计算堆栈顶部的无符号值转换为有符号 int8 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I2

将位于计算堆栈顶部的有符号值转换为有符号 int16 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I2.Un

将位于计算堆栈顶部的无符号值转换为有符号 int16 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I4

将位于计算堆栈顶部的有符号值转换为有符号 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I4.Un

将位于计算堆栈顶部的无符号值转换为有符号 int32,并在溢出时引发 OverflowException。

Conv.Ovf.I8

将位于计算堆栈顶部的有符号值转换为有符号 int64,并在溢出时引发 OverflowException。

Conv.Ovf.I8.Un

将位于计算堆栈顶部的无符号值转换为有符号 int64,并在溢出时引发 OverflowException。

Conv.Ovf.U

将位于计算堆栈顶部的有符号值转换为 unsigned native int,并在溢出时引发 OverflowException。

Conv.Ovf.U.Un

将位于计算堆栈顶部的无符号值转换为 unsigned native int,并在溢出时引发 OverflowException。

Conv.Ovf.U1

将位于计算堆栈顶部的有符号值转换为 unsigned int8 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.U1.Un

将位于计算堆栈顶部的无符号值转换为 unsigned int8 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.U2

将位于计算堆栈顶部的有符号值转换为 unsigned int16 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.U2.Un

将位于计算堆栈顶部的无符号值转换为 unsigned int16 并将其扩展为 int32,并在溢出时引发 OverflowException。

Conv.Ovf.U4

将位于计算堆栈顶部的有符号值转换为 unsigned int32,并在溢出时引发 OverflowException。

Conv.Ovf.U4.Un

将位于计算堆栈顶部的无符号值转换为 unsigned int32,并在溢出时引发 OverflowException。

Conv.Ovf.U8

将位于计算堆栈顶部的有符号值转换为 unsigned int64,并在溢出时引发 OverflowException。

Conv.Ovf.U8.Un

将位于计算堆栈顶部的无符号值转换为 unsigned int64,并在溢出时引发 OverflowException。

Conv.R.Un

将位于计算堆栈顶部的无符号整数值转换为 float32。

Conv.R4

将位于计算堆栈顶部的值转换为 float32。

Conv.R8

将位于计算堆栈顶部的值转换为 float64。

Conv.U

将位于计算堆栈顶部的值转换为 unsigned native int,然后将其扩展为 native int。

Conv.U1

将位于计算堆栈顶部的值转换为 unsigned int8,然后将其扩展为 int32。

Conv.U2

将位于计算堆栈顶部的值转换为 unsigned int16,然后将其扩展为 int32。

Conv.U4

将位于计算堆栈顶部的值转换为 unsigned int32,然后将其扩展为 int32。

Conv.U8

将位于计算堆栈顶部的值转换为 unsigned int64,然后将其扩展为 int64。

Cpblk

将指定数目的字节从源地址复制到目标地址。

Cpobj

将位于对象(&、* 或 native int 类型)地址的值类型复制到目标对象(&、* 或 native int 类型)的地址。

Div

将两个值相除并将结果作为浮点(F 类型)或商(int32 类型)推送到计算堆栈上。

Div.Un

两个无符号整数值相除并将结果 ( int32 ) 推送到计算堆栈上。

Dup

复制计算堆栈上当前最顶端的值,然后将副本推送到计算堆栈上。

Endfilter

将控制从异常的 filter 子句转移回公共语言结构 (CLI) 异常处理程序。

Endfinally

将控制从异常块的 fault 或 finally 子句转移回公共语言结构 (CLI) 异常处理程序。

Initblk

将位于特定地址的内存的指定块初始化为给定大小和初始值。

Initobj

将位于指定地址的值类型的每个字段初始化为空引用或适当的基元类型的 0。

Isinst

测试对象引用(O 类型)是否为特定类的实例。

Jmp

退出当前方法并跳至指定方法。

Ldarg

将参数(由指定索引值引用)加载到堆栈上。

Ldarg.0

将索引为 0 的参数加载到计算堆栈上。

Ldarg.1

将索引为 1 的参数加载到计算堆栈上。

Ldarg.2

将索引为 2 的参数加载到计算堆栈上。

Ldarg.3

将索引为 3 的参数加载到计算堆栈上。

Ldarg.S

将参数(由指定的短格式索引引用)加载到计算堆栈上。

Ldarga

将参数地址加载到计算堆栈上。

Ldarga.S

以短格式将参数地址加载到计算堆栈上。

Ldc.I4

将所提供的 int32 类型的值作为 int32 推送到计算堆栈上。

Ldc.I4.0

将整数值 0 作为 int32 推送到计算堆栈上。

Ldc.I4.1

将整数值 1 作为 int32 推送到计算堆栈上。

Ldc.I4.2

将整数值 2 作为 int32 推送到计算堆栈上。

Ldc.I4.3

将整数值 3 作为 int32 推送到计算堆栈上。

Ldc.I4.4

将整数值 4 作为 int32 推送到计算堆栈上。

Ldc.I4.5

将整数值 5 作为 int32 推送到计算堆栈上。

Ldc.I4.6

将整数值 6 作为 int32 推送到计算堆栈上。

Ldc.I4.7

将整数值 7 作为 int32 推送到计算堆栈上。

Ldc.I4.8

将整数值 8 作为 int32 推送到计算堆栈上。

Ldc.I4.M1

将整数值 -1 作为 int32 推送到计算堆栈上。

Ldc.I4.S

将提供的 int8 值作为 int32 推送到计算堆栈上(短格式)。

Ldc.I8

将所提供的 int64 类型的值作为 int64 推送到计算堆栈上。

Ldc.R4

将所提供的 float32 类型的值作为 F (float) 类型推送到计算堆栈上。

Ldc.R8

将所提供的 float64 类型的值作为 F (float) 类型推送到计算堆栈上。

Ldelem

按照指令中指定的类型,将指定数组索引中的元素加载到计算堆栈的顶部。

Ldelem.I

将位于指定数组索引处的 native int 类型的元素作为 native int 加载到计算堆栈的顶部。

Ldelem.I1

将位于指定数组索引处的 int8 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelem.I2

将位于指定数组索引处的 int16 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelem.I4

将位于指定数组索引处的 int32 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelem.I8

将位于指定数组索引处的 int64 类型的元素作为 int64 加载到计算堆栈的顶部。

Ldelem.R4

将位于指定数组索引处的 float32 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶部。

Ldelem.R8

将位于指定数组索引处的 float64 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶部。

Ldelem.Ref

将位于指定数组索引处的包含对象引用的元素作为 O 类型(对象引用)加载到计算堆栈的顶部。

Ldelem.U1

将位于指定数组索引处的 unsigned int8 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelem.U2

将位于指定数组索引处的 unsigned int16 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelem.U4

将位于指定数组索引处的 unsigned int32 类型的元素作为 int32 加载到计算堆栈的顶部。

Ldelema

将位于指定数组索引的数组元素的地址作为 & 类型(托管指针)加载到计算堆栈的顶部。

Ldfld

查找对象中其引用当前位于计算堆栈的字段的值。

Ldflda

查找对象中其引用当前位于计算堆栈的字段的地址。

Ldftn

将指向实现特定方法的本机代码的非托管指针(native int 类型)推送到计算堆栈上。

Ldind.I

将 native int 类型的值作为 native int 间接加载到计算堆栈上。

Ldind.I1

将 int8 类型的值作为 int32 间接加载到计算堆栈上。

Ldind.I2

将 int16 类型的值作为 int32 间接加载到计算堆栈上。

Ldind.I4

将 int32 类型的值作为 int32 间接加载到计算堆栈上。

Ldind.I8

将 int64 类型的值作为 int64 间接加载到计算堆栈上。

Ldind.R4

将 float32 类型的值作为 F (float) 类型间接加载到计算堆栈上。

Ldind.R8

将 float64 类型的值作为 F (float) 类型间接加载到计算堆栈上。

Ldind.Ref

将对象引用作为 O(对象引用)类型间接加载到计算堆栈上。

Ldind.U1

将 unsigned int8 类型的值作为 int32 间接加载到计算堆栈上。

Ldind.U2

将 unsigned int16 类型的值作为 int32 间接加载到计算堆栈上。

Ldind.U4

将 unsigned int32 类型的值作为 int32 间接加载到计算堆栈上。

Ldlen

将从零开始的、一维数组的元素的数目推送到计算堆栈上。

Ldloc

将指定索引处的局部变量加载到计算堆栈上。

Ldloc.0

将索引 0 处的局部变量加载到计算堆栈上。

Ldloc.1

将索引 1 处的局部变量加载到计算堆栈上。

Ldloc.2

将索引 2 处的局部变量加载到计算堆栈上。

Ldloc.3

将索引 3 处的局部变量加载到计算堆栈上。

Ldloc.S

将特定索引处的局部变量加载到计算堆栈上(短格式)。

Ldloca

将位于特定索引处的局部变量的地址加载到计算堆栈上。

Ldloca.S

将位于特定索引处的局部变量的地址加载到计算堆栈上(短格式)。

Ldnull

将空引用(O 类型)推送到计算堆栈上。

Ldobj

将地址指向的值类型对象复制到计算堆栈的顶部。

Ldsfld

将静态字段的值推送到计算堆栈上。

Ldsflda

将静态字段的地址推送到计算堆栈上。

Ldstr

推送对元数据中存储的字符串的新对象引用。

Ldtoken

将元数据标记转换为其运行时表示形式,并将其推送到计算堆栈上。

Ldvirtftn

将指向实现与指定对象关联的特定虚方法的本机代码的非托管指针(native int 类型)推送到计算堆栈上。

Leave

退出受保护的代码区域,无条件将控制转移到特定目标指令。

Leave.S

退出受保护的代码区域,无条件将控制转移到目标指令(缩写形式)。

Localloc

从本地动态内存池分配特定数目的字节并将第一个分配的字节的地址(瞬态指针,* 类型)推送到计算堆栈上。

Mkrefany

将对特定类型实例的类型化引用推送到计算堆栈上。

Mul

将两个值相乘并将结果推送到计算堆栈上。

Mul.Ovf

将两个整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。

Mul.Ovf.Un

将两个无符号整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。

Neg

对一个值执行求反并将结果推送到计算堆栈上。

Newarr

将对新的从零开始的一维数组(其元素属于特定类型)的对象引用推送到计算堆栈上。

Newobj

创建一个值类型的新对象或新实例,并将对象引用(O 类型)推送到计算堆栈上。

Nop

如果修补操作码,则填充空间。尽管可能消耗处理周期,但未执行任何有意义的操作。

Not

计算堆栈顶部整数值的按位求补并将结果作为相同的类型推送到计算堆栈上。

Or

计算位于堆栈顶部的两个整数值的按位求补并将结果推送到计算堆栈上。

Pop

移除当前位于计算堆栈顶部的值。

Prefix1

基础结构。此指令为保留指令。

Prefix2

基础结构。此指令为保留指令。

Prefix3

基础结构。此指令为保留指令。

Prefix4

基础结构。此指令为保留指令。

Prefix5

基础结构。此指令为保留指令。

Prefix6

基础结构。此指令为保留指令。

Prefix7

基础结构。此指令为保留指令。

Prefixref

基础结构。此指令为保留指令。

Readonly

指定后面的数组地址操作在运行时不执行类型检查,并且返回可变性受限的托管指针。

Refanytype

检索嵌入在类型化引用内的类型标记。

Refanyval

检索嵌入在类型化引用内的地址(& 类型)。

Rem

将两个值相除并将余数推送到计算堆栈上。

Rem.Un

将两个无符号值相除并将余数推送到计算堆栈上。

Ret

从当前方法返回,并将返回值(如果存在)从调用方的计算堆栈推送到被调用方的计算堆栈上。

Rethrow

再次引发当前异常。

Shl

将整数值左移(用零填充)指定的位数,并将结果推送到计算堆栈上。

Shr

将整数值右移(保留符号)指定的位数,并将结果推送到计算堆栈上。

Shr.Un

将无符号整数值右移(用零填充)指定的位数,并将结果推送到计算堆栈上。

Sizeof

将提供的值类型的大小(以字节为单位)推送到计算堆栈上。

Starg

将位于计算堆栈顶部的值存储到位于指定索引的参数槽中。

Starg.S

将位于计算堆栈顶部的值存储在参数槽中的指定索引处(短格式)。

Stelem

用计算堆栈中的值替换给定索引处的数组元素,其类型在指令中指定。

Stelem.I

用计算堆栈上的 native int 值替换给定索引处的数组元素。

Stelem.I1

用计算堆栈上的 int8 值替换给定索引处的数组元素。

Stelem.I2

用计算堆栈上的 int16 值替换给定索引处的数组元素。

Stelem.I4

用计算堆栈上的 int32 值替换给定索引处的数组元素。

Stelem.I8

用计算堆栈上的 int64 值替换给定索引处的数组元素。

Stelem.R4

用计算堆栈上的 float32 值替换给定索引处的数组元素。

Stelem.R8

用计算堆栈上的 float64 值替换给定索引处的数组元素。

Stelem.Ref

用计算堆栈上的对象 ref 值(O 类型)替换给定索引处的数组元素。

Stfld

用新值替换在对象引用或指针的字段中存储的值。

Stind.I

在所提供的地址存储 native int 类型的值。

Stind.I1

在所提供的地址存储 int8 类型的值。

Stind.I2

在所提供的地址存储 int16 类型的值。

Stind.I4

在所提供的地址存储 int32 类型的值。

Stind.I8

在所提供的地址存储 int64 类型的值。

Stind.R4

在所提供的地址存储 float32 类型的值。

Stind.R8

在所提供的地址存储 float64 类型的值。

Stind.Ref

存储所提供地址处的对象引用值。

Stloc

从计算堆栈的顶部弹出当前值并将其存储到指定索引处的局部变量列表中。

Stloc.0

从计算堆栈的顶部弹出当前值并将其存储到索引 0 处的局部变量列表中。

Stloc.1

从计算堆栈的顶部弹出当前值并将其存储到索引 1 处的局部变量列表中。

Stloc.2

从计算堆栈的顶部弹出当前值并将其存储到索引 2 处的局部变量列表中。

Stloc.3

从计算堆栈的顶部弹出当前值并将其存储到索引 3 处的局部变量列表中。

Stloc.S

从计算堆栈的顶部弹出当前值并将其存储在局部变量列表中的 index 处(短格式)。

Stobj

将指定类型的值从计算堆栈复制到所提供的内存地址中。

Stsfld

用来自计算堆栈的值替换静态字段的值。

Sub

从其他值中减去一个值并将结果推送到计算堆栈上。

Sub.Ovf

从另一值中减去一个整数值,执行溢出检查,并且将结果推送到计算堆栈上。

Sub.Ovf.Un

从另一值中减去一个无符号整数值,执行溢出检查,并且将结果推送到计算堆栈上。

Switch

实现跳转表。

Tailcall

执行后缀的方法调用指令,以便在执行实际调用指令前移除当前方法的堆栈帧。

Throw

引发当前位于计算堆栈上的异常对象。

Unaligned

指示当前位于计算堆栈上的地址可能没有与紧接的 ldind、stind、ldfld、stfld、ldobj、stobj、initblk 或 cpblk 指令的自然大小对齐。

Unbox

将值类型的已装箱的表示形式转换为其未装箱的形式。

Unbox.Any

将指令中指定类型的已装箱的表示形式转换成未装箱形式。

Volatile

指定当前位于计算堆栈顶部的地址可以是易失的,并且读取该位置的结果不能被缓存,或者对该地址的多个存储区不能被取消。

Xor

计算位于计算堆栈顶部的两个值的按位异或,并且将结果推送到计算堆栈上。

最近打开以前的webqq协议项目 结果发现貌似挂了。 重新抓包分析了下。这里贴一下接口 做个记录。

1、第一次登陆

方法:Get

地址: \“https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&
e=0&l=M&s=5&d=72&v=4&t=0.\“ + 随机9位数 + 随机7位数;

地址返回结果是个二维码, 扫描二维码登陆。 这期间循环 2.验证登陆状态。

访问后记录Cookie后面要用到.

2、验证登陆状态

方法:POST

地址:https://ssl.ptlogin2.qq.com/ptqrlogin

参数:webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&
u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&
ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&
dumy=&fp=loginerroralert&action=0-0-18099&
mibao_css=m_webqq&t=1&g=1&
js_type=0&js_ver=10135&login_sig=&pt_randsalt=0

返回结果为:ptuiCB(\‘66\‘,\‘0\‘,\‘\‘,\‘0\‘,\‘二维码未失效。(1891650816)\‘, \‘\‘);
ptuiCB(\‘67\‘,\‘0\‘,\‘\‘,\‘0\‘,\‘二维码认证中。(1891650816)\‘, \‘\‘);
ptuiCB(\‘0\‘,\‘0\‘,\‘http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=【QQ号码】&service=ptqrlogin&nodirect=0&
ptsigx=c4b277a9cbb5ec2e9dbcdf25645ac2b36e27aeffe18395a8c10316f65bdc116f
846fd8b5d4893696a58ce4a0663111fbded905eb3f27c1b309e6a3af49d989b6&
s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&
f_url=&ptlang=2052&ptredirect=100&aid=501004106&daid=164&
j_later=0&low_login_hour=0&regmaster=0&pt_login_type=3&
pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0\‘,\‘0\‘,\‘登录成功!\‘, \‘XX\‘);

所以这里检测开头第一个数字是0 就好了。 随后取出中间的网址并进行3、第一次登陆成功后返回回调地址。

3、第一次登陆成功后返回回调地址

方法:Get

地址:在上一个步骤返回的回调地址

直接访问一次即可,随后进入4、第二次登陆.

4、第二次登陆

方法:Post

地址:http://d1.web2.qq.com/channel/login2

参数:r={ {\“ptwebqq\“:\“[这里填之前cookie记录的 ptwebqq 的值]\“
,\“clientid\“:53999199,\“psessionid\“:\“\“,\“status\“:\“online\“}}

返回结果是个json 取其中psessionid

然后这里还需要获取vfwebqq值
地址: http://s.web2.qq.com/api/getvfwebqq

方法:post

参数:ptwebqq=[之前cookie的ptwebqq值]&clientid=[53999199]&psessionid=&t=[13位时间戳]

返回json中取值:vfwebqq

记录好这一部存下的值 psessionid 和 vfwebqq
到这一步 登陆就已经成功了。

之后就是获取好友 获取群组 获取消息 和 发送消息了。 先只搞到这 orz..

20140520_872759 经过朋友消息得知了这款桌游, 看着挺有意思。这里放一下说明规则

  • 游戏名称:《犯人在跳舞》/《犯人は踊る》/《Criminal Dance》
  • 建议游戏人数:3~8人

《犯人在跳舞》是一款类似杀人游戏的游戏,你可以把他理解成蛇精病版的杀人游戏…… 当然啦,说蛇精病不是没理由的,大家从游戏名称就可看出这是一款“抓贼”类游戏。 但是与“杀人”、“狼人”这类游戏不同的是,在《犯人在跳舞》中每个人的身份角色都是在随时变化的,直到游戏的最后一刻你才能知道谁赢谁输,谁是犯人。 再加上游戏的核心内容除了“猜测身份”以外,还有“交换手牌”,所以大大加强了随机性。 而且这款游戏不会出现像“杀人”这样被首刀后发呆半小时的尴尬场面,提高了每个人的参与度。 同时该游戏文字量极少,也不需要过多发言,手牌数永远小于等于四张,流程简单,计分省力,节奏明快。

1:游戏准备

好,说了那么多,这游戏到底咋玩呢? 20131022_711530 上图大致意思就是在必备卡牌的基础上根据人数加入一定数目的随机卡牌,以达到最终每人能拿到四张手牌。 把按照上述原则选出来的牌库打乱后开始发牌,正好每人4张。 Tips:大家可以在一到三局游戏过后更换随机部分的卡牌,以提高趣味性(这在每个人都熟悉游戏后是非常必要的)。

2:游戏流程

20131022_711531 别看画的很复杂,其实炒鸡简单,你只要记住,你需要做的就是:

  • 出一张牌
  • 照牌上说的做
  • 然后下一家继续重复上述动作……

Tips:当你有手牌时,必须出牌。当你没有手牌时,不需要出牌,也无需因为“情报交换”、“交易”或者“谣言”来给别人手牌。

3:胜负判定

游戏可大致分为“犯人、共犯”,以及“其他人”两个阵营。

当有人打出“犯人”卡时,游戏结束,犯人阵营胜利。 当通过“侦探”/神犬”卡的效果推测/抓住犯人时,除“犯人、共犯”以外的“其他人”胜利。

胜利后根据计分表给各个阵营的人加分,计分表如下:

计分规则: 进行3-4局游戏 先赢得5分的玩家获胜 进行6-8局游戏 先赢得10分的玩家获胜 结算情况: 1.最后一次使用侦探牌的玩家得到2分,被该侦探牌抓到的犯人玩家以及身份为共犯的玩家得到0分,剩下的玩家得到1分。 2.最后一次使用神犬牌的玩家得到3分,被该神犬牌咬到的犯人玩家以及身份为共犯的玩家得到0分,剩下的玩家得到1分。 3.打出犯人牌的玩家以及身份为共犯的玩家得到2分,剩下的玩家得到0分。

4:牌类使用条件及效果

20131029_716945 第一发现者:游戏从拿到这张卡牌的玩家开始,由该玩家打出这张牌后,顺时针依次出牌。 犯人:该卡牌只能作为最后一张手牌时打出,即当你没有其他手牌时,才能打出“犯人”,一旦打出这张牌,则游戏结束,“犯人”以及“共犯”获胜。 不在场证明:打出该牌无任何效果。当你拥有该卡牌时,你被视作不是犯人。这牌其实就是一块免死金牌,无论你手里有没有“犯人”卡,只要你有“不在场证明”,那你就是好人。 也就是说,当别人侦探你,并且让你承认自己是“犯人”,需要满足两个条件,一个条件是你手里有“犯人”牌,另一个条件便是你手里没“不在场证明”。 20131029_716943 情报交换:当你打出该牌后,由你开始沿顺时针方向,每个玩家依次自行选择一张手牌,并且传递给他左手边的玩家, 接收到的牌请卡背朝上放在自己面前,直到所有人传递牌结束后再拿起放入手牌。 谣言:当你打出该牌后,由你开始沿顺时针方向,每个玩家依次向他右手边的人那里随机抽一张牌, 抽到的牌请卡背朝上放在自己面前,直到所有人抽牌结束后再拿起放入手牌。 这样做是为了防止下家抽走你从上家抽的牌。当然啦,大家熟悉规则和游戏后就变成了同时抽右手边玩家的一张卡了…… 交易:打出该牌后指定一名玩家,双方各自选择一张自己的手牌进行交换。无论双方有无手牌,都可交易。 比方说当你打出交易后如果没手牌了,那你仍然可以得到对方的一张牌,对方却不能得到任何牌,反之亦然。 20131029_716942 神犬:打出该牌时指定一名玩家,被指定的玩家自行选择一张手牌并且弃掉, 接下来被指定的玩家可以把对方打出的那张“神犬”卡收进手牌也可以把“神犬”也同时一起弃掉。 当被指定玩家丢弃的牌是“犯人”牌时,游戏结束,好人阵营以及神犬获胜。 一般人:打出前打出后都无任何效果。 目击者:打出该牌后可指定一名除你以外的玩家,单独观看他的所有手牌。

5:变体规则

华语版本中,日本的设计师特意为我们设计了两张新卡牌:“警部”和“少年”,还有相应的变体规则。 c303df63b5c69d60f92cb96be493cbeb 少年:打出之后,系统会通知该玩家现在犯人牌在哪个玩家手中。 直接打出此卡牌无任何效果。拥有此卡牌的玩家在游戏开始前知道烦人卡在哪位玩家手中。 警部:手牌拥有此卡牌的玩儿家。一直保持此卡牌正面朝向其他玩家(展示),将此卡牌打在你认为是犯人的玩儿家面(lian)前(shang),游戏结束时,如果该玩家成为犯人,妳赢得游戏。(3分) 打算同时尝试一下这款游戏的开发。~ 目前正在设计中~~