开启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

(转)芯片巨头恩智浦的前世今生

全球最大芯片并购案最终还是告吹了。

在这个过程中,作为主角之一,恩智浦公司,再次成为了大家讨论的焦点。

这家恩智浦公司,到底是一家什么公司?高通为什么拼了老命也要收购它呢?一旦收购成功,对高通、对中国,究竟意味着什么呢?

640?wx_fmt=jpeg

恩智浦,全名是恩智浦半导体公司,英文名NXP Semiconductors。

它的前身是飞利浦的半导体业务部,由飞利浦在1953年创办。对,这个飞利浦就是大家耳熟能详的那个造电吹风、剃须刀、电动牙刷的Philips。

640?wx_fmt=jpeg

飞利浦,也有译为“菲利普”

20世纪的时候,飞利浦依靠这个半导体业务部,一度成为全球最大的半导体生产商。但是进入21世纪后,因为企业发展战略调整(公司管理层打算专注医疗健康领域),加上半导体业务持续亏损,飞利浦决定将半导体业务出售。

2006年,飞利浦将半导体业务以79.13亿欧元的价格,卖给了荷兰的一个私募财团。

于是,恩智浦半导体公司正式成立,总部设在荷兰埃因霍恩。

640?wx_fmt=jpeg

恩智浦办公大楼

公司名称是NXP,蕴含的意思是 “Next Experience”(新的体验)。中文名称“恩智浦”是后来专门取的,里面的"浦"字,也暗示了它和“飞利浦”之间的继承关系。

恩智浦的主要业务,就是提供半导体系统的解决方案,主要应用于手机、个人媒体播放器、电视、机顶盒、辨识应用、汽车等电子设备。

640?wx_fmt=jpeg

2015年3月3日,恩智浦以118亿美元的价格,收购了美国的飞思卡尔半导体(Freescale Semiconductor)。

640?wx_fmt=jpeg

懂行的同学一定知道,飞思卡尔也是半导体行业里面的老牌巨头。

收购完成之后,恩智浦成功挤进了全球半导体厂商前十的行列,成为全球最大的车用半导体制造商,并且是车用半导体解决方案与通用微型控制器(MCU)的市场龙头。

640?wx_fmt=jpeg

恩智浦S32汽车处理平台

如今的恩智浦,在全球30多个国家设有业务机构,员工人数达到30000多人,2017年的营收是92.6亿美元。包括苹果、三星、西门子、富士康、索尼,都是恩智浦的客户。

在中国,恩智浦的业务也很广泛。

640?wx_fmt=jpeg

它是百度Apollo开发平台的合作伙伴,向百度提供无人驾驶、毫米波雷达、V2X、信息安全、智能网联等方面的半导体元器件。

看到这里,大家应该想到为什么高通要收购恩智浦了吧?   5G在即,万物互联时代即将到来,物联网相关行业将得到巨大的发展。作为一家在汽车电子、消费电子、工业控制等领域拥有关键影响力的半导体公司,恩智浦的价值不言而喻。尤其是汽车产业。未来的汽车绝对不是单纯的运载工具,而是一个移动的个性化信息化终端。说白了,就是有四个轮子的手机。各大厂商都在押宝车联网、无人驾驶、远程驾驶,充分说明了其中的市场前景。

恩智浦是全球最大的汽车半导体厂商,你说值不值得买?

反观高通,作为全球通信行业巨头,长期在通信芯片领域处于垄断地位,对物联网领域虎视眈眈,迫切希望通过收购恩智浦来抢占地盘,扩大芯片版图,构建新的垄断优势。

况且,高通和恩智浦由于客户群和产品领域不同,业务重合部分少、互补性强。高通业务侧重移动和计算等领域, 而恩智浦业务侧重汽车、物联网、网络融合、安全系统等领域。两者合并,属于典型的强强联合。

如果高通收购恩智浦成功,市值将达到1500亿美元,成为继三星电子、台积电、英特尔和英伟达后,全球第5大半导体企业。

一组数据看恩智浦

从下面两张IC Inights的统计数据中我们可以看到,恩智浦早在1985年的飞利浦时代,就已经跻身全球前十,这地位一直保持至今。

640?wx_fmt=jpeg

▲IC Insights数据,1985-2017年全球前十大芯片提供商

从恩智浦2013年-2017年主营业务营收图表中我们可以看到,2015年和2016年是两个关键节点。

640?wx_fmt=jpeg

▲恩智浦2013年-2017年主营业务营收

根据财报数据,2017年,恩智浦全年营收为92.56亿美元,净利润为22.72亿美元。恩智浦的主营业务分为两部分,一部分是SP“标准产品业务”,包括分立器件、低压功率器件与一些老旧的通用逻辑产品。

由于业务利润率偏低,2016年,恩智浦以27.5亿美元的价格将标准产品芯片业务卖给了中国资本公司建广资产和智路资本。因此这项业务2017年其总营收只有1.18亿美元。

640?wx_fmt=jpeg

▲恩智浦2017年主营业务营收分布

恩智浦的一部分主营业务为HPMS“高功率混合信号产品业务”,这是恩智浦的强势业务,其中包括汽车芯片、物联网芯片、移动支付芯片等。2017年,HPMS部分业务总营收达到87.45亿美元,占比九成以上,而这其中,汽车芯片业务又占了四成,并以11%的年增长率快速发展。

为了加强竞争力,2015年,恩智浦以118亿美元的价格完成了对美国车载半导体巨头飞思卡尔(Freescale Semiconductor)的收购,从而整合拥有了完整的汽车半导体解决方案(包括汽车AMS、传感器、车载娱乐系统)一举跃升为全球第一大汽车芯片厂商。这场收购当年被誉为全球最大的车载半导体收购案。

与此同时,恩智浦旗下的智能识别部有三大主营产品:安全交易、安全身份识别、标签与验证,在智能识别的市场排名第一,苹果、三星等巨头中的手机NFC芯片(近距离无线通讯技术)都是恩智浦提供的。

640?wx_fmt=jpeg

▲恩智浦2017年全球营收分布

值得一提的是,从恩智浦2017年全球不同地区营收分布中我们可以看到,恩智浦在中国的业务已经占到了全部营收将尽40%的份额,是当之无愧的第一大市场——这一点与高通非常类似,2017财年高通的全球总营收为223亿美元,其中的150亿美元都来自于中国市场,占比已经超过了60%。

不过,与高通只参与芯片设计、不参与半导体制造及封测的“无晶圆芯片厂商(Fabless)”运作模式不同,恩智浦在全球拥有14家芯片工厂,其中7家为晶圆厂(Wafer fabs)、7家为组装测试厂(Test and assembly)。… Read More

11张图片回顾摩托罗拉半导体历史,飞思卡尔已成过去式

飞思卡尔半导体源自摩托罗拉的半导体产品部。摩托罗拉的前身成立于 1928 年,当时叫加尔文制造公司(Galvin Manufacturing),该公司于 1930 年推出了一款名为“摩托罗拉”的车载收音机,摩托罗拉(Motorola)即"motor"(汽车)与"ola"(代表声音)的组合,意为 “汽车里的声音”。加尔文制造公司于 1943 年上市,并于 1947 年正式更名为摩托罗拉,当时摩托罗拉的业务主要是电视和无线电产品。

1944 年摩托罗拉无线电设备的广告

而摩托罗拉是全球最早的半导体公司之一,1948 年即开始从事半导体业务。1955 年摩托罗拉生产了世界上第一批商用高功率晶体管,用于车载无线电,这也是摩托罗拉第一次大批量生产半导体器件。

1965 年至 1972 年,新半导体公司纷纷出现,

使得包括摩托罗拉在内的前三大半导体厂商市场份额快速下降

美国在六十年代开始阿波罗计划时,摩托罗拉为阿波罗计划提供了数千颗半导体元器件,陆基追踪和检测设备和 12 套机载追踪和通信设备。

摩托罗拉为阿波罗计划做出重大贡献

1974 年摩托罗拉发布其首款 8 位微处理器 MC6800,1980 年摩托罗拉的第一代 32 位微处理器 MC68000 问世,并引领了 1984 年开始的计算革命,MC68000 被苹果、Sun、和惠普等很多电脑厂商采用。摩托罗拉在 1990 年代通过自己的智能电源开关(intelligent power switches)技术,为推广汽车防抱死系统(Anti-lock Brake System)做出了贡献,并是世界上最早生产安全气囊使用的 MEMS 惯性传感器的厂家之一,摩托罗拉的 … Read More

Window下允许或禁止拖放

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

在Windows中启用,禁用拖放

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

安卓常见运行时函数原型表

Runtime Function: float __addsf3 (float a, float b)
Runtime Function: double __adddf3 (double a, double b)
Runtime Function: long double __addtf3 (long double a, long double b)
Runtime Function: long double __addxf3 (long double a, long double b)
These functions return the sum of a and b.

Runtime Function: float … Read More

安卓反调试笔记

USB调试模式检测
int adb = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ADB_ENABLED, 0);

Settings.Secure.ADB_ENABLED was deprecated in API level 17. Instead, use

Settings.Global.getInt(context.getContentResolver(), Settings.Global.ADB_ENABLED, 0)  

Read More

Android 程序中卸载其它App的几种方法

1. 直接使用Intent卸载

//android自带了一个安装程序---/system/app/PackageInstaller.apk.
//大多数情况下,我们手机上安装应用都是通过这个apk来安装
Uri uri = Uri.fromParts("package", "com.example.demo", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
startActivity(intent);

2. 通过pm命令方式实现静默卸载

//pm命令可以通过adb在shell中执行,同样,我们可以通过代码来执行
public static String execCommand(String... command) {
    Process process = null;
    InputStream errIs = null;
    InputStream inIs = null;
    String result = "";
    try {
        process = new ProcessBuilder().command(command).start();
        ByteArrayOutputStream baos 
Read More

IDA 调试条件断点的使用示例

经常在用IDA调试时, 一些断点如文件打开, 或是发送数据会频繁的断下来, 每次断下去查看是不是我们关注的数据, 以此判断来源, 这太费时间, 也常导致程序超时, 正常流程没法继续, 强大的IDA为我们提供了 脚本条件, 可以选择IDC或是Python.

如图:

在断点处右键编辑断点,

点击右边的按钮在输入框中输入脚本即可, 返回False表示不中断
返回 True 断点将激活中断下来. 以此我们还可以在条件中增加msg, 从而实现不中断而显示信息的功能. 下面给出一个示例脚本:

def dumpbytes(pdata, blen):
    msg("%03d: " % blen)
	for i in range(blen):
		msg("%02X " % get_byte(pdata+i))
	msg("\n")	
	
phead = get_dword(cpu.r1+4)
pdata = get_dword(phead)
binlen = get_word(phead+4)
dumpbytes(pdata, binlen)
if (binlen 
Read More