第一个shell脚本

#!/bin/bash # 这是注释 a=0; while [ $a -lt 1000 ] do ((a++)) done echo "end" 12345678 #!/bin/bash# 这是注释a=0;while  [ $a -lt 1000 ]do    ((a++))doneecho "end" 这个脚本声明了变量a, 接下来判断如果 a 小于 1000, 就执行 a 自增加 1 的操作, 最后结束的时候输出字符串 end; 一般注意点 shell 脚本文件一般保存为 .sh 文件, 使用其它的后缀(不建议)也可以执行; 因为脚 ...

java 8 Optional

java8新增工具类(java.util.Optional) 一个容器类, 表示该实例对象可能无值 使用目的是尽可能避免 NullPointerException 构建实例 返回一个空的 Optional static <T> Optional<T> empty() 返回一个非空有值的 Optional static <T> Optional<T> of(T value) 如果value是null的就返回一个空的 Optional, 否则返回非空有值的 Optional static <T> Optional<T> ofNullable(T value) 123456789 返回 ...

java 8 lambda

lambda 提供一种简化代码的方式; lambda 可以视作一个只有函数参数和方法体的方法, 没有修饰符、函数名和返回值声明; 实现内部类的效果(也内部类类似但有不同点) 能使用 lambda 的接口, 是函数式接口(接口内只有一个抽象方法) 参数 参数可以声明类型, 也可以不声明而由上下文自动推导出类型 参数放在()里, 多个参数使用 "," 分开 一个参数且类型是自动推导出来的, 那么 () 可以省略; 零个参数可以直接写(); 表达式 表达式可以有若干条, 只有一条时, "{}" 可以省略; 只有一行的话, return 可以省略 一些概 ...

java 8 Stream

Stream 说明: java 8 中新增 java.util.stream.Stream 里的类 不同于 IO 流 针对操作集合(Collection)对象里的数据 Stream 是并行化的 Stream对象可以调用多个intermediate(转换) 操作, 但只能有一个 terminal 操作; 多个转换操作会在遇到 terminal 操作之后依次执行,即取集合内的一个元素取出后就依次执行, 相当于只需要for循环一次; 流的操作 把一个数据结构包装成 Stream 后,就要开始对里面的元素进行各类操作了。常见的操作可以归类如下。 Intermediate(转换): map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 ...

定时器 QTimer

Header: #include <QTimer> qmake: QT += core 12 Header: #include <QTimer>qmake:  QT += core 构造方法 QTimer(QObject *parent = Q_NULLPTR) 当 parent 被销毁时, QTimer 对象也会被自动销毁; 函数方法 void QTimer::start(int msec) 开启一个任务, 每多少毫秒回调一次 void QTimer::timeout() 到指定事件发出 timeout 信号 void QTimer::stop() 停止定时器 setInterval(int msec) ...

使用本地aar包

软件环境 android studio: 2.2 MacOS 一般方式导入 aar 包放入 libs 文件夹下; // build.gradle repositories { flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile(name: 'aar_name', ext: 'aar') } 1234567891011 // build.gradlerepositories {    flatDir {   &n ...

Annotations(注解)支持库

compile 'com.android.support:support-annotations:24.2.0' 1 compile 'com.android.support:support-annotations:24.2.0' Nullness注解 使用@NonNull注解修饰的字段,方法参数,返回值, 都不可已为null。 @Nullable 表示可以为空 @Nullable public String notNull(@NonNull Fragment fragment){ return null; } 123  &nb ...

编程所思

不知什么时候, 感觉自己摸到了瓶颈, 这个瓶颈并不是说自己的技术现在已经到了极佳的水平, 而是由于受限于身边的环境, 或者其他的原因(思想之类的), 感觉最近自己的技术提升速度不明显, 比以前慢多了; 记得刚开始在学校写代码的时候, 觉得把功能实现了, 就是一件很牛逼的事了; 到现在也写了三年多, 写到现在, 不断的和比自己优秀的人对比, 慢慢的发现, 把功能实现了, 是无法说明技术优秀的, 毕竟一段垃圾代码和一段优秀代码都可以把功能实现; 而且实现功能的代码在自己一开始不会的时候, 一般都是通过搜索引擎去搜索其它人的知识来实现 ...

不同的drawable文件夹对图片内存占用的影响

同一张图片放在不同的drawable文件夹里, 使用时占用的内存是不一样的; 不同文件夹对应dpi 在android中, 以160dpi 的屏幕为基准, 在此屏幕上 1dip = 1px; 密度 描述 ldpi 低密度屏幕;约为 120dpi。 mdpi 中等密度(传统 HVGA)屏幕;约为 160dpi。 hdpi 高密度屏幕;约为 240dpi。 xhdpi 超高密度屏幕;约为 320dpi。此项为 API 级别 8 中新增配置 xxhdpi 超超高密度屏幕;约为 480dpi。此项为 API 级别 16 中新增配置 xxxhdpi 超超超高密度屏幕使用(仅限启动器图标,请参阅“支持多种屏幕”中的注释);约为 640dpi ...

QT 信号槽

宏: SIGNAL, SLOT 关键字: signals, slots, emit SLOT 方法是阻塞的 类的定义中需要包含宏Q_OBJECT 要想一个方法放入 SLOT(XXX) , xxx 一定要在声明时指定 signals 修饰; 使用: QObject::connect(sender, SIGNAL(signal), receiver, SLOT(slot)); 绑定的 signal 和 slot 方法参数要类型一致;或自动把signal比slot多出的参数省略; disconnect 断开 自定义信号/槽 注意点 自定义类继承 QObject 声明宏 Q_OBJECT 函数指针不能作为信号或槽的参数。 信号与槽不能有缺省参数。 signals 的注意点 表示信号 signals 修饰的方法不能 ...