- 博客(372)
- 资源 (4)
- 收藏
- 关注
原创 Android gradle 编译加速
gradle.properties:org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8org.gradle.parallel=true# 使用gradle守护进程,提高Gradle的启动时间和执行时间org.gradle.daemon=trueorg.gradle.configureondemand=trueorg.gradle.cachi
2020-05-27 09:49:49 346
原创 .aar 文件修改
1. 背景1.1 升级 gradlePlugin version 后编译报错项目中 gradlePlugin version 从3.5.3 升级到 3.6.0 之后编译报错:jarfile\res\mipmap-xhdpi-v4\allimage_gotoback.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature.意思就是升级之后的 gradle 编译之后有更严格的资源格式检
2020-05-14 13:30:35 939
原创 Git checkout remote branch
执行git fetch origin使用如下 git 命令查看所有远程分支git branch -acheckoutgit checkout -b xxxx(本地分支名称) yyyy(上条命令查找到的远程分支的名称)检查下 本地分支是否创建成功git branch参考链接Git branch upstream...
2020-04-23 10:57:41 8020
原创 Android -- ARGB 的透明度16进制参考表
Android——ARGB的透明度A的16进制参考表<color name="base_color_fff8f8f8">#FFF8F8F8</color># 号后面的前两个值就代表透明度透明度16进制0%FF (不透明)5%F210%E515%D820%D80%FF30%FF0%FF...
2020-04-21 21:22:03 394
原创 初识 Kotlin (七) ---- kotlin 与 Java 代码互调
1. Java 与 Kotlin 交互的语法变化1.1 Java 调 KotlinUtils.kt -> 这是 kotlin文件fun echo(name:String){ println("$name")}Main.javapublic static void main(String[] args){ UtilsKt.echo("hello");}1.2 objec...
2019-12-25 12:54:01 218
原创 初识 Kotlin (六) ---- 类成员初始化
类成员初始化订单类Orderclass Order (var orderId:String){}用户类Useropen class User(username: String, age: Int) { //lateinit代表延迟初始化 lateinit var userId: String //lateinit不能修饰基本数据类型,只能修饰对象 /...
2019-12-19 14:06:15 400
原创 python 删除指定文件夹下特定格式文件的方法
#!/usr/bin/python# -*- coding: utf-8 -*-import osdef del_files(path): for root, dirs, files in os.walk(path): for name in files: if name.endswith(".mp3"): # 指定要删除的格式,这里...
2019-12-08 21:20:16 928 1
原创 继承和接口的区别,抽象类和接口的区别
文章目录1. 继承和接口的区别1.1 面向对象的角度1.2 继承和接口使用上的区别示例2. 抽象类和接口之间的区别2.1 什么是抽象类和接口2.2 特点与区别抽象类的特点接口的特点区别参考链接主要需要解决的问题:继承和接口的区别抽象类和接口之间的区别?什么时候创建抽象类?什么时候创建接口?设计框架时该如何选择?1. 继承和接口的区别继承不需重载所有方法,接口必须实现所有方法...
2019-11-21 15:37:03 4662
原创 ButterKnife 源码解析 (三) -- 手写 ButterKnife 实现无性能损耗的编译时框架
2. ButterKnife 为什么执行效率为什么比其他注入框架高?ButterKnife 使用了注解处理技术,可以自动生成相应代码,一是为了提高编码的效率,二是避免在运行期大量使用反射,通过在编译期利用反射生成辅助类和方法以供运行时使用。3. 自定义注解处理器了解了基本的知识点后,我们应该尝试去使用这些技巧。 接下来是实践时间,我们来开发一个简单的例子,利用注解处理器来自动产生随机数字和随...
2019-11-13 14:04:22 173
原创 ButterKnife 源码解析 (二)-- Java 文件结构化文本详解
文章目录1. APT (Annotation Processing Tool)2. 结构体语言2.1 PackageElement2.2 ExecuteableElement2.3 TypeElement2.4 VariableElement2.5 需要掌握的 API1. APT (Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测并...
2019-11-12 17:18:04 318
原创 ButterKnife 源码解析 (一)
文章目录1. ButterKnife 的优势2. APT 和 IoC 架构的区别3. ButterKnife 用法4. ButterKnife 原理4.1 代码中简单使用示例4.2 源码分析4.3 再从生成的 MainActivity_ViewBinding 类分析1. ButterKnife 的优势强大的 View 绑定和 Click 事件处理功能,简化代码,提升开发效率方便的处理 A...
2019-11-12 11:30:06 443
原创 初识 Kotlin (六) ---- Kotlin 中的主构造方法和从构造方法
Kotlin的构造函数分为主构造器(primary constructor)和次级构造器(secondary constructor)。下面我们来看看他们的写法1. Primary Constructor1.1 写法规则class 类名 constructor(形参1, 形参2, 形参3){}class Person constructor(username: String, age: ...
2019-11-06 16:15:35 516
原创 初识 Kotlin (五) ---- Kotlin 中 的单例模式
六种单例模式饿汉模式懒汉模式线程安全的懒汉模式双重校验锁式静态内部类式枚举式1. 饿汉模式: static final field既然饿,那么在创建对象实例的时候就比较着急,于是在装载类的时候就创建对象实例这种方法非常简单,因为单例的实例被声明成 static 和 final 变量了,在第一次加载类到内存中时就会初始化,所以创建实例本身是线程安全的。//Java实现pub...
2019-11-06 15:30:47 460
原创 初识 Kotlin (四) ---- 获取 Kotlin 中 class 的实例
Kotlin的类class Lizi { var name: String = "" var age: Int = 0 companion object { }}对于 Kotlin 的 class 要知道获取的到底是什么,可以利用 AS 的类型提示,一目了然(IDEA 类型查看快捷键 --> Ctrl + Q):val lizi = Lizi(...
2019-11-06 14:47:46 8701
原创 初识 Kotlin (三) ---- 零散的一些知识点
1. 如何定义静态变量、方法javapublic class Singleton{ private static Singleton instance = ...; public static Singleton getInstance(){ ... return instance; }}kotlincl...
2019-11-06 14:45:51 240
原创 初识 Kotlin (二) ---- lateinit vs lazy
Kotlin Property Initialization在使用 kotlin开发中,因为各种原因,我们会经常需要使用到延迟加载的功能(不在构造函数中初始化属性),目前kotlin的延迟加载主要有两种:lateinit 和 lazylateinit // 声明一个string变量 lateinit var a1: String private fun tes...
2019-11-06 13:35:25 630 1
原创 初识 Kotlin (一)
1. kotlin 文档官方文档kotlin 菜鸟教程2. from java to kotlin2.1 打印日志JavaSystem.out.print("Amit Shekhar");System.out.println("Amit Shekhar");Kotlinprint("Amit Shekhar")println("Amit Shekhar")2....
2019-11-06 11:58:31 229
原创 为什么子线程都不能刷新UI?
1. 理论上的原因1.1 Android主线程是线程不安全的?网上文章常常有说:Android主线程是线程不安全的。我就纳闷了,线程还有安全一说?不能说主线程是线程不安全。线程没有安全不安全这一说。而是更新UI的方法不是线程安全的,即只能在单线程中完成UI的更新,不能使用多线程。(为什么呢?因为子线程可能会有多个,存在多个线程同时操作一个控件的情况)因此,只能在主线程中进行UI更新。1...
2019-11-04 17:38:53 1250
原创 SharedPreference.Editor 的 apply 和 commit 方法异同
1. apply方法在 官方SDK说明 如下:Commit your preferences changes back from this Editor to the SharedPreferences object it is editing. This atomically performs the requested modifications, replacing whatever is...
2019-11-04 11:40:38 213
转载 深入解析 SharedPreferences
一. 概述SharedPreferences 是Android中很常用的数据存储方式,SP 采用 key-value形式, 主要用于:轻量级的数据存储, 尤其适合保存应用的配置参数不建议使用SP 来存储大规模的数据, 可能会降低性能SP 采用 xml 文件格式来保存数据, 该文件所在目录位于 /data/data//shared_prefs/1.1 使用示例SharedPrefe...
2019-11-04 11:24:00 824
原创 findViewById 原理
有人问了 findViewById 到底做了什么事情,有点懵逼,在此深入研究以下findViewById 流程图1. Activity 的 findViewById点进去看源码进入 Activity.class 类里的方法: /** * Finds a view that was identified by the id attribute from the XML t...
2019-10-16 15:05:17 1943
原创 Android Studio 项目提升编译速度
大多数 Android 工程都是基于 Gradle 工具进行构建和编译的,大型项目构建时间可能会耗时很久,这时候我们可以进行优化、减少构建时间。1. 分析问题Gradle 官方在最近的版本更新中推出了一个神器 build scan,可视化的深入分析和诊断所有构建相关的数据,并基于此分析结果帮助开发者找出构建问题以及针对构建性能进行优化。2. 一些建议升级 Gradle 版本并采用最...
2019-10-15 20:06:59 266
原创 电脑最大支持内存
打开命令行查询:C:\Users\username>wmic memphysical get maxcapacityMaxCapacity33554432最大支持内存33554432/1024/1024 = 32G
2019-10-11 16:27:27 860
原创 运行 .bat 脚本 命令行闪退
症状安装 Tomcat 之后运行 startup.bat 命令行闪退方案打开 startup.bat 文件,在文件最后添加一行 pause,表示暂停,就可以看到命令行中的报错信息了
2019-09-23 10:54:28 6796
原创 mybatis入门 (一)
1. 环境配置环境搭建 demoidea创建maven,maven的GroupId,ArtifactIdIDEA Maven配置IDEA中Maven配置浅析Intellij IDEA 添加jar包的三种方式2. 整体项目的 hello_world 代码mybatis 初步使用(IDEA的Maven项目, 超详细)3. 遇到的报错问题Element ‘dependenci...
2019-09-22 22:19:24 114
原创 js 比较时间日期大小
逻辑思路得到标准的字符串格式的日期,一般我们的字符串格式的日期,大多是这样:2015/01/12 or 2017-8-13,前者是比較标准的字符串格式,后者在火狐下直接使用 Date.parse() 方法会报错,所以为了兼容所有的浏览器,我们先要把日期字符串格式全部转成前者统一下,之后再调用 Date.parse() 将日期字符串转成时间戳.直接比较 ( > | &l...
2019-09-06 10:08:45 4297
原创 jQuery 获取内容、属性及相关设置操作
1. jQuery 获取 内容和属性text() 设置或返回所选元素的文本内容html() 设置或返回所选元素的内容(包括 HTML 标记)val() 设置或返回表单字段的值attr() 用于获取属性值//jQuery text() 和 html() - 获取文本和内容$(document).ready(function(){ $("#btn1").click(fu...
2019-08-15 09:37:52 373
原创 jQuery 选择器
0. 免费体验jQuery 选择器文档$(this).hide()//隐藏当前的 HTML 元素$("p").hide()//隐藏所有 `<p>` 元素$(".test").hide()//隐藏所有 `class="test"` 的元素$("#test").hide()//隐藏 id="test" 的元素1.基本选择器$("#id") //ID...
2019-08-14 16:09:59 161
转载 Looper.loop 为什么不会阻塞掉 UI 线程 ?
文章目录问题概述1. Android中为什么主线程不会因为 `Looper.loop()` 里的死循环卡死?进程线程ActivityThread死循环问题2. 没看见哪里有相关代码为这个死循环准备了一个新线程去运转?3. Activity的生命周期是怎么实现在死循环体外能够执行起来的?4. 我的理解问题app程序入口中为主线程准备好了消息队列:而根据 Looper.loop() 源码可知里...
2019-08-05 09:57:54 1414
原创 Android app https 抓包,一定能抓到吗?
很多时候我们开发项目的时候,都需要抓包,很多情况下即使是 Https 也能正常抓包正常。那么问题来了:抓包的原理是?任何 Https 的 app 都能抓的到吗?如果不能,哪些情况下可以抓取,哪些情况下抓取不到?1.抓包的原理:代理。客户端请求 -> 经过代理 -> 到达服务端服务端返回 -> 经过代理 -> 到达客户端2.任何 Https 的 app...
2019-08-01 14:19:14 1352
原创 $(function() {}),什么时候执行?
1. 什么时候执行呢?(function() {}),即 $(document).ready(function(),什么时候执行?$(function() { //执行操作});$(function() {}) 是$(document).ready(function()的简写, 这个函数什么时候执行的呢?答案:DOM 加载完毕之后执行。2. 分析DOM 是什么?DOM 就是一个 ...
2019-08-01 11:49:46 46453 2
原创 浅析 HTML console
1. 显示信息// 1. 显示信息console.log('hello');console.info('信息');console.error('错误');console.warn('警告');2. 占位符console 支持 printf 的占位符格式,支持的占位符有:字符(%s)、整数(%d或%i)、浮点数(%f) 和对象 (%o)console.log("%d年%d月%d日...
2019-07-30 15:01:05 4519
原创 HTML 数字的处理方法(保留小数点两位、将数字转化为千分位格式)
可参考链接js保留两位小数方法总结代码将 1234567.00 转换为 1,234,567.00<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ...
2019-07-30 14:26:10 20736
原创 HTML 垂直居中body中的应用
应用场景: 在body中书写一个代码块, 使其相对于body垂直居中<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1....
2019-07-30 14:00:54 4325
原创 浅析 HTML input value
1. Input 获取 value<input type="text" value="请输入姓名" name="name" id="name"><script> var name; name = document.getElementById("name").value name = $("#name").val() name = $("i...
2019-07-30 13:52:40 2542
原创 常用的 JS 正则表达式54种形式类型
1.由数字、26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$2.非负整数(正整数 + 0 ): ^/d+$3. 正整数: ^[0-9]*[1-9][0-9]*$4.非正整数(负整数 + 0): ^((-/d+)|(0+))$5. 负整数 : ^-[0-9]*[1-9][0-9]*$6.整数: ^-?/d+...
2019-07-30 11:11:52 375
原创 jQuery 验证密码是6位或者8位纯数字
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS</title> <script type=...
2019-07-30 11:10:22 4303
原创 AppCan 刷新前一个页面或者调用父页面方法
appcan增加新纪录完了如何刷新主页面AppCan 窗口模块WindowAppCan.window.open 打开的窗口 , 如何在打开的窗口中调用父窗口的方法
2019-07-30 10:43:48 532
原创 JS - 事件 - 获取所有子节点
1. 获取所有子节点<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS</title> </head> &l...
2019-07-30 10:41:02 12125
原创 HTML 遍历节点的所有 find 到的子节点(jQuery - each() 方法的使用)
<!DOCTYPE html><html lang="zh"><head><title>[html常用脚本整理]</title><meta charset="UTF-8" /><script src="jquery.min.js"></script></head><bod...
2019-07-30 10:19:35 451
microsoft-windows-netfx3-ondemand-package.cab
2018-05-19
Visual Studio 2017 Professional 15.7.0 bootstrapper(安装器), 很小,只有 1.14 M
2018-05-12
Visual Studio 2017 Enterprise 15.7.0 bootstrapper (安装器)
2018-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人