macOS 系统重装

身为程序员, 总是避免不了帮周围的人修电脑, 今天帮一台最近刚买的 Macbook air 重装了系统; 关于这台 Macbook air 一般来说, 正常使用 Mac, 重装系统是很简单的, 但是这台电脑的 macOS 已经被格掉了, 到我手上时, 机子已经被装上了 win10, 128G 硬盘被分成了三个区; 对方的近期需求是用这台电脑写毕业论文, 由于担心 macOS 下做出的 Word 文档格式在 windows 下不同, 所以需要一个windows系统。给上一个人处理后就直接格盘装上了windows,系统盘才30多个G;一开始以为256G所以打算使用“Boot Camp 助理” 添加windows系统,到 ...

编译中遇到的异常……

Gradle sync failed: Cause: error in opening zip file Gradle 无法使用, 发现本地已经存在的 Gradle 对应版本的 zip 压缩包是有问题的; 从网上下载对应版本压缩包, 替换本地文件夹(MacOS默认路径:/Users/xxx/.gradle/wrapper/dists/gradle-3.3-all)中有问题的压缩包, 再将压缩包在当前文件夹解压; RuntimeException:java.io.IOException: writePrevChunkAddress 缓存有问题,出现这个"Event Log"后编译也还可以成功; 点击 "File > Invalidate Caches/Restart"解决 support library Failed to resolve 有时候 ...

Gradle 和 Android Plugin for Gradle 版本

android studio 的 "Model Setting"(项目名称上右击菜单中打开) 中的 "Project" 标签页中有 "Gradle Version" 和 "Android Plugin Version"; Gradle 是编译工具, "Android Plugin for Gradle" 提供 android 环境下使用 gradle 的功能; "Gradle Version" 和 "Android Plugin Version" 有对应关系; Plugin version Required Gradle version 1.0.0 – 1.1.3 2.2.1 – 2.3 1.2.0 – 1.3.1 2.2.1 – 2.9 1.5.0 2.2.1 – 2.13 ...

避免单个线程独占CPU

遇到的问题 UI 跳转界面的时候发现过了好久才跳转, 最后发现后台存在的一个线程, 负责处理接收到的数据, 一秒接收到的数据大约有100多条, 由于这个子线程会运行几秒钟, 不断处理数据占用CPU, 造成 UI 线程无法刷新界面. java 多线程的知识点 解决 一开始想的是, 既然是因为子线程抢着CPU不放手, 那通知子线程放弃这次的CPU占用, 子线程一释放, UI 线程就可以拿到CPU. 然后首先想到的就是 Thread 的.yield()方法, 不过 yield() 方法在我的程序运行平台上不给力, 子线程最多暂缓10毫秒, 多数情况下子线程不会停下脚步; 然后想到了设置优 ...

事件 EventEmitter

EventEmitter EventEmitter 是内置模块 "events" 里唯一的类, 实现事件的触发和监听回调. // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 绑定事件及事件的处理程序 eventEmitter.on('eventName', function (arg1) { console.log('事件被触发',arg1); }) .on('eventName', function (arg1) { console.log('事件被触发2',arg1); }); setTimeout(function() { // 触发名称 ...

Node.js 模块

Node.js 里有原生模块和文件模块, Node.js 可以使用 require() 包含其它文件里的功能, 然后使用 require 返回的对象调用模块里的公共方法; 加载模块 使用 require() 加载, 参数有以下四种 加载原生模块, 直接写模块名, 如 "http" 模块的相对路径 模块的绝对路径 要加载的文件的路径 创建自己的模块 module.exports exports 如果没有 module.exports 的话, exports 可以修饰多个接口, 返回时把这若干个接口整合成一个 module.exports; 如果 module.exports 和 exports 共存, 且 使用 module.exports引入对象, exports ...

语义版本号

格式: X.Y.Z (主版本号.次版本号.修订号)

  • 大改动, 不兼容旧版, 更新 X 位
  • 新增功能, 但是向下兼容, 更新 Y 位
  • 修复 bug, 更新 Z 位

注意点

  1. 版本号使用非负整数递增;
  2. 主版本号为0, 表示处于开发阶段, 一切变化都可能发生;
  3. 主版本号递增后, Y 和 Z 要归零; Y 递增后, Z 归零;

扩展

  • alpha版: 内部测试版本, α
  • beta版: 公开测试版本, β
  • RC版: 较成熟的版本
  • release版: 稳定的发行版

文本分析(awk)

awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...] 1 awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...] awk 进行文本处理, 按行处理, -F 是文本分隔符, 默认空格; 获取分割的结果 $0 是所有结果, $1 取到第一个结果. 内置变量 NF 分隔之后的字段个数 ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME ...

管道

program1 | program2

将 program1 的标准输出作为 program2 的标准输入;

即 program1 的结果作为 program2 要处理的输入

ls 列出当前文件夹里的文件列表, 将这个列表数据作为 grep 指令的输入, grep 指令过滤后将过滤后的结果存入 "result.txt" 文件

输入输出重定向

多数系统默认输入输出端是终端(命令行); 如果想要将结果输出到文件或者直接从文件里获取数据作为处理的数据, 而不是显示结果在终端界面上或从终端里获取键盘输入的数据, 就需要重定向; 输出重定向到文件 内容 > 文件名 直接使用 > 会覆盖之前的内容, 使用 >> 可以追加到文件末尾; 输入重定向 使用 < 特殊文件 "/dev/null" 写到这个文件里的内容会自动删除; 重定向表 命令 说明 command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file ...