开启IDEA 文件名区分大小写

在菜单 Help | Edit Custom Properties 中
添加下面的行

idea.case.sensitive.fs=true

这将告诉IDEA区分文件名的大小写, 在做出上面的改变后, 在
选择菜单 File | Invalidate Caches 然后重启IDEA

Read More

(转)Win10实现文件名区分大小写

区分大小写的背景
Linux上是可以区分大小写的,比如可以在Linux上创建abc和ABC两个文件;Mac OS上是可以通过配置实现区分文件的大小写的;但在Windows上是不能实现的。

对于经常处理Git事务的童鞋们来说,区分文件的大小写是非常有必要的。

(1)以管理员身份运行cmd.exe

fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo enable

是的,就是上面这一段非常简单而容易理解的命令即可开启单个文件夹的名称区分大小写功能。只是单个文件夹!如果需要开启其他文件夹,需要多次执行这样的命令。

而如果需要关闭对此文件夹的大小写支持,只需要将 enable 改为 disable

fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo disable
区分大小写的效果

看!以上就是在 Windows 10 系统级开启了大小写敏感的我的一个 Git 仓库,这下可以让跨平台的 Git 工作起来在各个系统都一样了。

注意事项

以上命令的正确运行需要以下条件,缺一不可:

  1. Windows 10 四月更新(1803)
  2. 安装有 Linux 子系统,即 Windows Subsystem for Linux
  3. 所在分区为 NTFS 格式
  4. 以管理员权限运行 PowerShell

fsutil Read More

Window下允许或禁止拖放

我们可以通过调整拖放的灵敏度来实现, 要更改这一项, 我们需要修改注册表
在如下图的位置

在Windows中启用,禁用拖放

在正常的系统中, DragWidthDragHeight 的值都是4, 我们可以将这个值改到50, 甚至更大, 这将使得如果想要拖放需要拖动更远的距离, 更改这一设定后需要重启电脑… Read More

串口通讯中的55AA

许多串口通讯中测试或握手信号使用AA或55这两个特殊的十六进制数,在许多PIC内部的EEPROM改写也使用这两个数作为敲门砖,初学者可能不解何为,其实如果将这两个数展开成二进制就可明白为什么:
AA展开为10101010, 55展开为01010101,
变成串行电平的话就是一个占空比为50%的方波,这种方波在电路中最容易被分辨是否受干扰或者畸变,在实际波形的观察中也最容易看出毛病所在,以异步串口通讯为例,通讯的每一个字节开始为一个数据位的低电平作为起始位,字节发送结束后是一个或两个数据位的高电平作为停止位,在测试程序阶段,我们可尝试发送0xAA,利用示波器来验证发送是否正确,以9600BPS的波特率计算,每个BIT的所用的时间大约是104.17μS,这里我们选择停止位占一个数据位,然后照此写一个反复连续发送AA的发送程序,那么在正确发送时在IO口看到的波形应该是一个大约4.8KHZ的方波,周期大约为208.34μS,占空比为50%。这样我们可以很快断定发送是否正确。由于这两个数值的特殊性,还被用到其他一些地方,比如PC机引导过程中,bios程序在加载完MBR后,还要对MBR的最后两个字节进行验证,必须为0x55和0xAA。

对于存储的应用:
除了55AA/AA55展开是二进制0、1间隔排列,电路好检测之外,在存储方面,用这两个数组合还有另外的道理:
Flash的存储位,只能从1变成0,所以擦除完后,单元里是1的,此时可以直接写,当写成0后,再要写成1是不行的,一定要擦除,擦除后就变成1了.
每个字节先写成55,再写成AA,这样每个bit都写了一遍又擦了一遍,说明这个字节的位置是好用的

那么AA55/55AA这样的二进制排列来作为数据Pattern,是可以测试每一个位是否可以从1变成0,也能测试是否可以从0变成1的, 如果都可以,就说明存储位没有死 … Read More

DOS 程序知识点

1. bioskey(0): 返回用户按键。

如果返回值的低 8 位非 0,该值表示按键的 ASCII 码;

如果返回值的低 8 位为 0,该值表示按键的键码。

作为替代,VC 中可以使用 getch() 返回用户按键。对于功能键(如光标键),getch() 需要调用两次,第一次返回 0 或 0xE0,第二次返回键码。

2. bioskey(1): 返回是否有按键发生。

如果没有按键,返回 0;

如果有按键,返回该按键值。(该按键仍然保留)

作为替代,VC 中可以使用 kbhit() 返回是否有按键发生。

3. bioskey(2): 返回当前控制键的状态

返回值共 16 位,分别表示:

0 右 Shift 按下
1 左 Shift 按下
2 Ctrl 按下
3 … Read More

单片机多字节移位除法实现方案

以0x67 / 3来举例 说明:

除数3前面有6个0, 减数从 3 * 2^6 次方 0xC0 开始, 循环去减, 每循环一次
减数/2, 够减则说明被除数中包含了减数/(原始减数3)个原始减数, 商+1, 然后在后面的每一次循环
时移位, 实现了商加上相应倍数的减数.

除数循环7(6+1)次也就到了除数自身, 减最后一次, 循环结束
算法巧妙的利用了移位减法, 以最少的循环次数实现了求商除法运算

被除数               减数                    结果
67[0110 0111] C0[1100 0000] 00[0000 0000]
67[0110 0111] 60[0110 0000] 01[0000 0001]
//够减, +1, 60是3的0x20 倍, 后面不断的左移, 保证了现在的+1最后成为0x20
07[0000 0111] 30[0011 0000] … Read More

用jadx批量反编译jar

因工作中需要反编译大量jar, 因此写了下面的Python脚本, 将Jar放到一个目录里, 即可批量反编译
脚本如下

# -*- coding: utf-8 -*-
import os
import subprocess

def de_jar(dir_1):
    # 列出文件夹下所有的目录与文件
    dirlist = os.listdir(dir_1)
    for i in range(0,len(dirlist)):
        path = os.path.join(dir_1,dirlist[i])
        if os.path.isfile(path):
            #你想对文件的操作
            subprocess.call("jadx -d out " + path, shell=True)
        elif os.path.isdir(path):
            de_jar(path)


de_jar("E:/src")
Read More

IDA 中MFC导入符号名修复脚本

1) dumpbin /exports mfc100u.lib > mfc100u.def
2) using following regex: ^\s+(\d+)\s+([^\s]{1,})(.*) -> \2 @ \1 NONAME

从Def文件生成idc脚本, 进行重命名

https://pan.baidu.com/s/1dGkQc5V :  ee4b

压缩包中包含了 MFC70, 71, 80, 90, 100的相应脚本
如果需要其它的, 压缩包中有脚本可以生成

 

 … Read More

VS 常见编译错误解决方案

错误一:
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 LIBCMTD.lib(new2.obj) 中定义
nafxcwd.lib(afxmem.obj) : … Read More