美文网首页
技♂巧备忘录

技♂巧备忘录

作者: 鸡大 | 来源:发表于2016-09-24 10:05 被阅读0次

    想到哪里写哪里,不要联系上下文

    写在最前:
    win10自带的输入法简繁切换快!捷!键!Ctrl+Shift+F卧槽
    找到ThunderBrowser.exe删掉再放个假的文件在同目录搞死迅雷9的浏览器

    • 用一个2位16进制数的byte存储一张牌的数据:

      • 主要方便网络传输,byte不能再小了
      • 用十六进制对应到字节的高低位刚好一个数4位,0F可以表示16种*16张牌数据,反正UNO是够用了~
      • 一个字节低4位是数值,高4位是牌型,或者反过来也没差,取低位&0x0f,取高位(&0xf0)>>4
    • 一个10进制快速转2进制的方法

    转自这里
    比如 9999=8192+1024+512+256+8+4+2+1
    8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
    1 0 0 1 1 1 0 0 0 0 1 1 1 1
    结果就是 0010 0111 0000 1111,8个1妥妥的

    • x&x-1将x最小的(最右边)为1的位数置0

      • 奇数减一直接最末位置0,在按位与
      • 偶数从最右侧第一个为1的位置借位下来,该位变成0,后面位数取反,再与原数按位与只有该位之前的没有变,后面包括该位全变成0
    • http协议是建立在Tcp协议之上的????

      • 卧槽这是真的
      • http是在请求完成(或一段时间后)主动关闭了自己的Tcp连接,也就是释放掉了所有状态,所以http是短连接,无状态
    • 鉴于大部分“程序实现的动画"都是基于时间的

      • 对于一组需要有时间差的动画(比如'一次'给一个人发几张牌),不需要定时器一个一个完成,利用循环变量改变time就可以,比如1+i*0.5,最后一个完成的最,而不是开始的晚
    • 拼界面时没用的UI控件怎么办?

      • 不要直接删除!保不齐哪天又有用了!而且UI删了东西脚本里也要删除
      • 像cocos studio这种奇葩即使可见性为false也能点到
    • 直接拖到场景窗口外面去,需要的时候再拖回来咯

    • 寻找判断值是否在数组中,数组长度很短可以试试一条if语句下标展开

      • 本身有短路规则,某一个表达式符合后面的就直接忽略了,等同一个break
      • for语句每一部分都可以写多个表达式,可以同时设置两个变量,一个用于遍历,一个用于统计,其实和写在语句体里是一样的,看起来比较简洁而已(毕竟省了一个break)
      • 一般来说偏向空间换时间的算法,辅助空间开起来不要方
    • 关于居中对齐

      • 寻找中点:mid=(count/2.0f-0.5f),奇偶数通用,每一个元素的位置为下标(i-mid)*offset
      • 奇数的话mid对应正中间元素的下标,偶数是中间两个元素的中间值(没有下标)
    • 循环切换按钮

      static int times=0;++times;times%=count;
      
    • 输出log信息封装到一个函数里

    • 注释掉函数的语句体就可以屏蔽所有的log信息

    • 还可以设定log等级来决定屏蔽哪些log

    • 当然,确定没用的log最终还是要删除的

    • 关于编号

      • 统一编号位数,某些编辑器会将11排在2的前面
    • 能用图片尽量用图片代替text

      • 比如公告板/更新说明之类的一大段话,用一张做好的长图,虽然自动换行不方便
      • 位图字体这种黑科技本质上渲染的是图片,虽然缺少很多灵活性,但是美观高效,极适合用在计时器或是血量伤害上
      • 所谓程序效率,特别是游戏,大量的算法执行不会有什么性能影响,但是大量的渲染有,一次性大批量渲染文字(比如排行榜之类的)很有可能会造成卡顿
    • 一些看到了别方的错误

      • LinkError在@xxx::xxx中
        函数只有定义,没有实现,偏偏这个函数还被调用了
      • 内存0xXXXX不能访问
        对象没有初始化或是对NULL对象进行操作
      • fatal error致命的错误
        • 一般并没那么致命,但确实没有具体的error捕获,不好定位
        • 可能是数组下标越界了,C不对下标越界进行检查,然后强制操作就炸了
        • 等等!C竟然不对下标越界进行检查????
        • 也有可能是内存泄漏,new完没有delete,特别是文件、网络、数据库操作之类的
        • 还有可能是释放早了
      • 界面卡死
        • 除了网络问题,绝壁是死循环了
        • 所以说网络事件特别是接收不要放在主线程里
        • 看看是不是把==写成了=
        • 或者是switch里忘了break了
        • 或者for循环里改变了循环变量的值
    • 一句话

      • 一句话判断两个数符号是否相等:return (x^y)>>31,符号位0为正1为负,与相同为1,不同为0,右移31位只保留最高符号位,为0表示符号不等,为1表示相等
      • /n表示每隔n个数,%n表示从0到n
      • 尽量用乘法代替除法(*0.25 *0.75之类的)
      • 乘/除2的次方可以选择左/右移运算符
    • 关于调试

      Update之类的频繁调用的方法,确定问题的大概位置时应该在if语句中下断点,断点比log有用的多【废话
      当然,统计一个循环次数之类的还是用log
      或者是神一样的条件断点
      dll使用附加调试,先启动附加到的程序,再执行附加
      RemoteDebugger可以附加到远程进程进行调试(VS中)

    • 旁油,你知道ffmpeg吗(笑

      • 还用什么格式工厂哦
      • 录屏:
        ffmpeg -f gdigrab -i desktop -vcodec libx264 -pix_fmt yuv420p -r 15 out.avi
        这句使用gdigrab 库录制全屏(desktop),之后是通用配置:h264编码,色彩空间y420p(保证画面色彩质量的关键,也就是减少花屏),-r 是帧率
        -i title="窗口名"会捕获一个窗口,窗口名是指在任务栏缩略图看到的那个,中文应该是有问题
      • 使用dshow滤镜录屏和录音
        ffmpeg -f dshow -i audio="xxx" -i video=xxx {通用配置} out.avi
        录屏需要安装一个虚拟direct device(摄像头不需要),ffmpeg -list_devices true -f dshow -i dummy 列出所有的direct device
      • 同时录屏和声音
        ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风阵列 (Realtek High Definition Audio)" -vcodec libx264 -pix_fmt yuv420p -r 15 outt.mp4
        * 好像只能输出为mp4格式不能是avi,或者也可能是音频编码问题,反正mp3也不能合到avi中,而输出MP4必须指定编码(和pix_fmt)
        * 上面那个麦克风阵列在cmd里list_devices是乱码,保存成UTF8就可以了,注意空格
      • 音频转换
        ffmpeg -i input.mp3 [-ab bit(比特率 32,k为单位)] [-ar rate(码率,8000)] [-ac count(声道数1,2)] output.{format(mp3)} //aac不支持单声道
      • 文件拼接
        ffmpeg -f concat -i "file1|file2|file3" -c copy outfile
    • 关于在此处打开命令行窗口

      本身资源管理器shift+右键可以,在资源管理器中alt+D可以定位到地址栏,再敲cmd(或是其他.exe)都可以在当前目录下运行exe,然后写个
      vbs{CreateObject("Wscript.Shell").SendKeys"%Dcmd{ENTER}"}
      模拟按键,把触控板的按钮绑定到这个vbs就可以一个键在资源管理器的打开位置召唤cmd了对就是因为我懒
      插一句,Ctrl+ESC等同
      释放*win,Ctrl+Shift+ESC可以召唤任务管理器

    • 关于事件查看器

      应用程序-特定 权限设置并未向在应用程序容器 xxxxxxxx用户【xxxxxxx】xxxxxAPPID为【xxxxxxxxx】,这种情况注册表里搜索class_root/appid/{APPID},编辑权限,赋予上面的用户完全修改权限(不行就改变所有者),看一下右边的APP名称,去组件服务里找到这个app,编辑启动和激活,以上用户本地启动和本地激活打勾,这种问题出现的原因可能是以上那个用户的信息被删除了(注册表清理之类的,会在编辑权限时发现产生一个未知用户{})

    • 微信分享的坑

    主要是缩略图,微信限制了图片大小(尺寸文件大小),超过的话可能会卡死,也可能会显示不出来,图片宽高如果超过128会被搞成128*128的,比例会变
    Android里获取一张assets下的图片(cocos的Resources):
    InputStream is = getContext().getAssets().open(fileName);
    Bitmap bmp= BitmapFactory.decodeStream(is);
    is.close();

    • vmware 里的mac无法通过磁盘工具扩容

    借助终端命令
    diskutil list
    diskutil resizeVolume {diskID} {容量(GB)}
    啊其实在磁盘工具那里选择可用空间分区点下面-就行。。。


    • 使用dnsmasq配置局域网DNS

    安装brew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    安装dnsmasq: brew install dnsmasq

    • 游戏中的语音聊天功能

    首先是调系统录音和播放器,Recorder和Player,记得一定要stop()以及release(),否则会因为系统资源分配不足没有声音;
    最好录制aac格式,ios好像不能直接录mp3,又比wav清晰
    录制完成走http上传至服务器
    最好等到上传回调再将客户端的录音按钮再次启用,当然,期间要排除录音失败文件根本没有上传的情况

    相关文章

      网友评论

          本文标题:技♂巧备忘录

          本文链接:https://www.haomeiwen.com/subject/ogurettx.html