8 大胃粥

尚未进行身份认证

要么不做,要做就做好。

等级
TA的排名 5w+

Ubuntu下SourceInsight 4.x中文乱码问题

Options->Preferences->Files,最底部有个Default Encoding选项,选择UTF-8Options->Preferences->Syntax Decorations->File Types->Screen Font,选择一个可以显示中文的字体,例如"文泉驿等宽微米黑",也就是拉到最后的一个字体。File->Reloa...

2020-04-29 15:45:20

Linux文件通配符

在命令行的命令参数,或者在VIM中,有时候需要匹配一个文件,经常需要模糊匹配,这就需要使用通配符(wildcard),而不是正则表达式。这二者经常被混淆,因此这里做一下记载。在VIM中,输入:h wildcard可以查询到通配符的说明,Linux系统下支持的通配符如下? 匹配一个字符* 匹配任意多个字符,包括0个** 匹配任意多个字符,包括0个,并且会匹配子目录[] 匹配字符集。例如[...

2020-04-01 14:56:03

POSIX正则表达式

有许多命令需要用到正则表达式,通用的就是POSIX正则表达式。而POSIX正则表达式分为基本正则表达式(basic regular expression,简称BRE)和扩展正则表达式(extended regular expression,简称ERE)。本文主要是对BRE和ERE的高度总结,让自己能分清楚它们的差别,也方便自己记住。BREBRE首先包括界定行首和行尾的字符,也就是^和$。然...

2020-03-31 15:49:18

Android MTP存储映射分析

Android MTP之服务端UsbService启动分析了mtp服务端的启动,Android MTP模式切换分析分析了mtp的切换,并且在成功切换后,会发送一个usb状态改变的广播,系统接收这个广播来实现手机存储到pc端的映射.简单来说,通过mtp,pc端能看到手机存储的内容.接收usb状态改变广播的是MtpReceiver,它属于packages/providers/MediaProvide...

2020-03-12 14:06:35

Android MTP模式切换分析

Android MTP之服务端UsbService启动 已经分析了mtp服务端的启动,本文来分析下切换mtp模式是如何实现的.当点击usb通知的时候,会弹出一个usb功能选择界面,当选择File Transfer,也就是mtp模式,会调用如下代码mUsbManager = context.getSystemService(UsbManager.class);mUsbManager.setCu...

2020-03-11 14:58:54

Android MTP之服务端UsbService启动

UsbService是USB功能的服务端,它是在system_server进程中启动的.MTP属于USB的一个功能,UsbService自然也是MTP的服务端.本文是基于Android 10源码分析的.// frameworks/base/services/java/com/android/server/SystemServer.javapublic final class Syste...

2020-03-06 17:15:50

bash数组

bash提供了索引数组和关联数组,并且只支持一维。什么是索引数组?就是用数字作为索引值,操作数组的元素的数组。这就相当于Java的Map<Integer, String>。什么是关联数组?就是用字符串作为索引值,操作数组元素的数组。这就相当于Java的Map<String, String>。创建数组创建索引数组索引数组的创建可以直接通过声明的方式# 声明一个数组...

2020-01-21 17:21:46

shell case结构的多分支执行

通常,我们使用 case 结构是不同的分支执行不同的命令,例如#!/bin/bashvar=acase "$var" in a) echo "case a" ;; b) echo "case b" ;; c) echo "case c" ;; *) echo "case *" ;;esac这个脚本每次只能执行一个分支。如果有两个分支执行相同...

2020-01-20 17:58:30

关于shell的for结构的一些小技巧

基本使用最直观的 for 语法如下for name in [in words ...]; do commandsdone我们可以利用 for 语法做一个遍历,例如#!/bin/bashfor i in {1..10}; do echo $idone这样看起来不是很直观,因此 shell 还提供一些类似高级语言的写法for (( exp1; exp2; exp3 )); ...

2020-01-20 16:21:53

bash的算术表达式结构:解决一切算术表达式的烦恼

在使用 shell 的 test 命令处理算术条件表达式时,总让我觉得这个命令是个垃圾。例如#!/bin/bashvar=5if [ "$var" -gt 0 -a "$var" -lt 10 ]; then echo "var is $var"else echo "var is not in range"fi我在关于shell的test命令格式的各种疑惑这篇文章中,解释了为何...

2020-01-20 15:38:16

关于shell的test命令格式的各种疑惑

test 命令的空格shell 的 test 命令用来测试一个表达式,例如#!/bin/bashif test -n $1; then echo "\$1 = $1"fi但是这种形式很丑陋,我们习惯在 if 语句后使用括号来执行判断语句,因此 test 命令有一个简写形式,那就是 [。对,你没有看错,test 命令的简写形式只有一个开括号 [,并不包括另外一个闭括号 ]。如果 t...

2020-01-20 14:32:53

getopts命令解析shell脚本选项

我们在命令行操作命令的时候,经常会带一些选项和参数来改变命令的行为。那么对于一个shell脚本,如果想利用选项和参数的功能,那么该如何解析它们呢?位置参数在执行shell脚本的时候,位置参数(positional parameters)会被赋值为shell脚本的参数。我们可以通过 ${N} 来获取位置参数的值,其中 N 大于等于 1。可以通过如下脚本查看位置参数的值#!/bin/bash...

2020-01-20 12:51:12

Shell 重定向

当命令被执行时,会打开三个文件描述符,标准输入,标准输出,标准错误。标准输入默认来自键盘,标准输出和标准错误默认为屏幕。我我们可以利用重定向功能来改变命令执行时的标准输入、标准输出和标准错误。重定向标准输入重定向标准输入语法如下[n]<file它表示在文件描述符 n 上打开文件 file,用于读文件。如果 n 被省略,那么默认在标准输入上打开文件 file。例如,在执行 cat ...

2020-01-15 17:47:25

Linux 文件权限

我们通常所说的文件权限,其实说的是用户对文件的权限。它由文件模式位( file mode bits )控制,并且由两部分组成文件权限位( file permission bits),它控制这普通的访问权限,例如读,写,执行权限。特殊模式位( special mode bits ),它由设置用户ID,设置组ID,限制删除标志(也叫做粘着位)组成。它有一些比较特殊的用途,例如方便创建共享目录。...

2020-01-03 17:00:51

Linux sort 命令

默认排序方式现有如下文本$ cat hard-sort.txt 312346Adb85AbcaAbaab现在我想用 sort 命令对这些行进行排序$ sort hard-sort.txt 31234685AbcAdbaAbaab这个排序结果似乎是杂乱无章的,但实际是有规律可循的。sort 命令把文件的每一行当做一个字符串,然后以比较字符串的方式来对...

2019-12-29 16:51:03

Shell echo 命令

基本使用echo 命令把参数输出到标准输出,例如$ echo hello worldhello worldhello 和 world 都是 echo 命令的参数,echo 命令它们都输出到标准输出。-n 选项echo命令有一个特性,它不仅会把参数输出到标准输出,还会输出一个换行符。例如,下面计算下echo命令输出的字节数$ echo "hello world" | wc -c12...

2019-12-27 15:04:36

了解 Linux 命令的信息

命令分类命令有四种类型可执行程序。例如find命令,它路径为/usr/bin/find。shell内置命令。例如cd命令。shell函数。别名。例如在Ubuntu中,ls是ls --color=auto的别名。识别命令命令有四种分类,有时候需要知道命令的类型而做出不同的动作,例如要查询命令的信息,首先需要知道命令的类型,然后再调用不同工具命令来查询该命令的信息。type - 显...

2019-12-26 13:31:08

源码剖析: Notification的发送

NotificationManagerService启动在system_server进程中,启动了NotificationManagerServiceframeworks/base/services/java/com/android/server/SystemServer.javaprivate void startOtherServices() { mSystemServiceMa...

2019-05-09 18:06:38

Android音频焦点处理

概要Android系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是希望音乐可以降低音量播放以使我们能听清楚短信提示音,之后再恢复音量。Android引入音频焦点(aud...

2018-12-07 17:20:14

实现RecyclerView索引

概要对于列表控制,在 RecyclerView 出现之前使用的是 ListView, 在为 ListView 实现索引的时候,大致有两种方式。写一个类,继承自 ListView,重写 draw() 方法来绘制索引,然后利用 onInterceptTouchEvent() 来截断事件,用 onTouchEvent() 来处理事件。单独写一个自定义 View 实现索引,然后开放一个接口实...

2018-07-09 23:44:55

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。