- 博客(137)
- 资源 (13)
- 收藏
- 关注
原创 使用 python 源码搭建 conda 环境
为了避免新编译的 python 污染系统已有的环境变量,这里只需要设置 --prefix 参数(即编译出的 python 存放位置,注意:这个参数需要绝对路径,我是在当前目录下新建了一个文件夹:268)。另外,安装好后,我发现 anaconda 的环境中还有历史版本(可以通过 conda search python 查看),所以把 anaconda 的配置文件(通过 conda config --show 获得的)也一并贴在这里,主要是里面的 channels 配置。下载并解压后,在源码目录执行。
2023-08-28 13:53:13 2846
原创 React Native 解决 TextInput 设置 maxLength 后,拼音输入法无法输入的问题
解决 TextInput 设置 maxLength 后,拼音输入法无法输入的问题
2023-07-12 19:17:27 1288
原创 AGP 8.0 解决 ‘kaptGenerateStubsDebugKotlin‘ task (current target is 17) 问题
kaptGenerateStubsDebugKotlin
2023-05-07 15:34:01 11025 5
原创 Android Studio 设置强制项目依赖指定版本
在项目的主module的build.gradle的dependencies节点里添加configurations.all {},{}中的前缀是 resolutionStrategy.force ,后面是指定各module强制依赖的包
2022-04-30 21:31:23 2273
原创 git 问题 fatal: early EOF,fatal: index-pack failed
git clone 的时候报:fatal: the remote end hung up unexpectedly MiB | 4.00 KiB/sfatal: early EOFfatal: index-pack failed多是因为网速的问题,把最低网速和无响应时间配置一下:git config --global http.lowSpeedLimit 0git config --global http.lowSpeedTime 999999 #单位/秒...
2022-03-11 10:42:55 424
原创 chrome使用技巧
1.开启虚拟摄像头及允许 httpwindows 下:1.创建 chrome 快捷方式。2.打开快捷方式的属性,并修改目标输入框内容为:"C:\Program Files\Google\Chrome\Application\chrome.exe" --use-fake-device-for-media-stream --disable-web-security --user-data-dir=D:chrome3.保存,通过修改后的快捷方式打开 chrome 即可。2.网站不受信任在该网页空白
2022-01-26 16:20:06 1105
转载 git 不用clone整个远程仓库,只把特定的commit给fetch下来的方案
一个麻烦点就是,我需要阅读一个大点的开源项目,远程仓库的代码量太庞大了,如果我需要git reset --hard [commit sha1]感兴趣的commit快照,就首先得git clone整个远程仓库,时间需要等待太长,而且网络一旦有问题还会功亏一篑。所有有没有一种只拉取远程仓库中的某个commit呢?有。命令行如下:make a new blank repository in the current directorygit initadd a remotegit remote add
2021-11-08 16:52:52 1398
原创 HashMap 从 0 到 1(最容易理解的 HashMap 讲解)
前言**阅读提醒:**关于 HashMap 的原理网上有很多内容,这里提供一个全新的视角来看待 HashMap ,请耐心看下去,保证你彻底理解 HashMap。首先,按照一般的讲解模式会说 “HashMap 的意义就是实现一种快速的查找并且插入、删除性能都不错的一种数据结构。”,然后接着讲解 HashMap 的数据结构和实现快速的查找、插入、删除的方式。这种方式虽然理清了 HashMap 的原理,但总觉得和 HashMap 间,隔着一层若有若无的东西;所以,我们不妨换个角度,先不管 HashMap 的原
2021-04-18 10:32:43 485
原创 将 ReactNative 接入已有的 Android 项目
将 ReactNative 接入已有的 Android 项目环境:react-native 0.63,windows10 ,android-studio4.1.1第一步:首先按照官网 集成到已有的原生应用 的方法集成,这里还有一份中文版 集成到已有的原生应用注意:在集成过程中要注意以下几点。1.在执行 yarn add react-native 时可能不止有 react 的 warning ,我们需要把这些包都安装上。2. maven 仓库的地址需要修改成下面的样式,不能用文档中的路径(注意路
2020-11-18 14:35:09 574
原创 如何查看 Proxy 模式的 $ProxyX.class文件
在学习 Proxy 的实现原理时我们要查看 $Proxy0.class 的代码,由于 $Proxy0.class 是在内存中的,所以我们需要写到本地。废话不多说,方式如下:在调用动态代理的main方法中加上System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true"); System.ge...
2018-10-08 17:21:55 2215
转载 常用端口
转载自 https://www.cnblogs.com/thinkingthigh/p/4071612.html0|无效端口,通常用于分析操作系统 1|传输控制协议端口服务多路开关选择器 2|管理实用程序 3|压缩进程 5|远程作业登录 7|回显 9|丢弃 11|在线用户 13|时间 17|每日引用 18|消息发送协议 19|字符发生器 20|F...
2018-06-06 11:26:28 1822
原创 java Callable 实现原理分析
前言我们常用的创建线程方式一般有下面 2 种:继承Thread,重写run方法实现Runnable接口,重新run方法其实在 Executor 框架中还有一种方法可以实现异步,那就是实现 Callable 接口并重写call方法。虽然是实现 Callable ,但是在 Executor 实际运行时,会将 Runnable 的实例或 Callable 的实例转化为 Runnable...
2018-05-31 15:50:23 35554 1
原创 常用 Maven 仓库地址
在使用 Nexus 搭建自己的 Maven 仓库时,我们需要为一些公共的 Maven 仓库做镜像,这就需要这些仓库的真实地址了,下面是这些仓库的地址: 仓库名称 仓库地址 gradle 引用方式 jcenter https://jcenter.bintray.com jcenter() mavenCentral https://repo1.mave...
2018-05-22 15:12:10 51129
转载 java 枚举类型的实现原理
转载自 http://blog.csdn.net/mhmyqn/article/details/48087247Java从JDK1.5开始支持枚举,也就是说,Java一开始是不支持枚举的,就像泛型一样,都是JDK1.5才加入的新特性。通常一个特性如果在一开始没有提供,在语言发展后期才添加,会遇到一个问题,就是向后兼容性的问题。像Java在1.5中引入的很多特性,为了向后兼容,编译器会帮我们写的...
2018-03-13 15:13:51 1809
原创 关于腾讯玄武实验室公布的应用克隆漏洞的一些思考
2018-01-09 国家信息安全漏洞共享平台 公布了 《关于Android平台WebView控件存在跨域访问高危漏洞的安全公告》 另外,关于该漏洞的原理 这里 有个补充说明:从上文中我们可以看出是由于 WebView 的 file 跨域问题,使应用加载的 JavaScript 可以获取应用的 私有数据 (即 /data/data/packageName/ 下的文件)导致的这个漏洞
2018-01-12 13:03:07 3024
原创 通过一堂化学课来彻底理解 ThreadLocal
关于 ThreadLocal 相信很多读者都在网上看到了这样的介绍:ThreadLocal 为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,请允许我在这里向你提出这样一个问题:多线程共享资源时,资源往往是唯一的(如写入文件),而 ThreadLocal 会为每个线程提供一个相同的数据副本,明显和资源共享不一样,那么为
2018-01-09 16:03:47 603
原创 真正的一行注解获取Android23+权限 重要更新 接入优化
真正的一行注解获取Android23+权限 重要更新 接入优化前言由于部分读者反映 AbcPermission 的接入方式太麻烦,利用周末时间我写了个 gradle 插件用于简化接入流程。这里提供了 2 套接入方案:一为最简便的;另一个支持版本自定义(如果你一直用最新版,这个可以忽略)。AbcPermission 的概念 这里 有详细的讲解。这里是一次重要的升级,也可以直接看 AbcPermissi
2017-12-25 15:35:49 711
原创 一行注解处理Android23+权限 AbcPermission 重要更新
一行注解处理Android23+权限 AbcPermission 重要更新关于 AbcPermission 的概念 这里 有详细的讲解。但是在以前的版本中我们都不能对用户授权后进行回调,虽然用户只在初次授权的时候会多一次操作,但对用户体验影响不大。为了更加优化用户体检,从 V1.6 以后 AbcPermission 支持对 无返回值的方法 进行回调,并且其回调流程已统一整合在 AbcPerperm
2017-12-19 14:57:36 658
原创 真正的一行注解处理Android23+权限
真正的一行注解处理Android23+权限关于 Android 23 及其以上版本的权限获取库,github 上有很多比较优秀的开源项目,如:RxPermission,AndPermission,PermissionGen 等。似乎我们不需要再纠结 23+ 上的权限问题了,但是(开始转折)这些开源项目的权限处理都可以用下面的流程图表示:图一正如上图所示这些开源项目无论用什么技术封装的都需要我们实现红
2017-12-04 10:44:13 1954
原创 实现 AlertDialog 点击确定按钮不关闭
当我们在使用AlertDialog时,无论点击“确定”(PositiveButton)还是“取消”(NegativeButton),对话框都会消失,这在某些情景下是不合理的。例如下面这种情况:AlertDialog 里面有必填或必选项,当用户没有输入或选择时就点击了确定,这时对话框不应该消失的,而是应该提示用户完成填写或选择后才能进行下一步。关于 AlertDialog 实现上面的效果,百度了一下多
2017-07-19 16:52:10 3000 1
原创 Kotlin 从学习到 Android 第十三章 对象
对象表达式和声明有时,我们想创建这样一个对象:只对原有的类做稍微的修改,而不需要声明一个该类的子类。在 java 中可以使用匿名内部类实现,而在 kotlin 中可以使用 对象表达式 和 对象声明 来实现。对象表达式创建继承某种类型的匿名类的对象:window.addMouseListener(object : MouseAdapter() { override fun mouseClick
2017-06-15 22:09:22 848
原创 Kotlin 从学习到 Android 第十一章 枚举类、嵌套类 和 密封类
一、枚举类枚举类最基本的用法是实现类型安全的枚举:enum class Direction { NORTH, SOUTH, WEST, EAST}每一个枚举常量都是一个对象,枚举常量间以 “,” 分割。初始化因为每个 enum 都是 enum 类的一个实例,所以可以对它们进行初始化:enum class Color(val rgb: Int) { RED(0xFF0000
2017-06-13 23:11:48 1071
原创 Kotlin 从学习到 Android 第十章 扩展
与 C# 、Gosu 类似,Kotlin 也可以为一个类扩展一个新的功能,而不需要从类继承或使用任何类型的设计模式,如装饰( Decorator )。这是通过一种被称为扩展的特殊声明完成的。Kotlin 支持扩展函数和扩展属性。扩展函数声明扩展函数时,我们需要在函数名前加上一个接收类型,也就是被扩展的类型。例如:下面的代码为 MutableList 添加一个 swap 的新函数。fun Mutabl
2017-06-12 23:03:04 860
原创 Kotlin 从学习到 Android 第九章 可见性修饰符
类、对象、接口、构造函数、函数、属性和它们的 setter 都可以有可见性修饰符。( getter 总是与属性具有相同的可见性。)在 Kotlin 中有四个可见性修饰符: private , protected , internal 和 public。如果没有用修饰符修饰,默认是 public 。下面将介绍可见性修饰符在修饰不同类型时的作用:包函数、属性和类、对象和接口可以在“顶级”中声明,也就是说
2017-06-08 22:03:43 907
原创 Kotlin 从学习到 Android 第八章 接口
接口Kotlin中的接口与Java 8非常相似。它们可以包含抽象方法的声明,以及方法实现。与抽象类不同,接口不能存储状态。它们可以具有属性,但这些属性必须是抽象的,或者提供存取器实现。定义接口使用关键字 interface :interface MyInterface { fun bar() fun foo() { // 函数体是可选的 }}接口的实现一个类或
2017-06-07 21:50:53 1457
原创 Kotlin 从学习到 Android 第七章 属性和字段
声明属性在 Kotlin 中可以用 var 声明可修改属性,也可以用 val 声明只读属性:class Address { var name: String = ... var street: String = ... var city: String = ... var state: String? = ... var zip: String = ...}
2017-06-06 22:27:30 3272 1
原创 Kotlin 从学习到 Android 第六章 类和继承
类类在 Kotlin 中使用关键字 class 声明:class Invoice {}类的声明包括类名,类头(参数类型,构造函数等)和类体(花括号包裹的内容)。类头和类体都是可选的;如果一个类没有类体,那么花括号可以省略。class Empty构造函数在 Kotlin 中一个类可以有一个主要构造函数和多个次要构造函数。主要构造函数是类头的一部分,放在类名之后,并含有可选的类型参数。class
2017-06-05 13:51:48 873
原创 Kotlin 从学习到 Android 第五章 返回和跳转
在 Kotlin 中,有三种返回和跳转语句:return 从最近的一个封闭函数或匿名函数中返回;break 跳出最近的封闭循环;continue 继续执行最近封闭循环的下一步;上面这三个表达式也能够作为其他表达式的一部分:val s = person.name ?: returnbreak 和 continue 标签在 Kotlin 中任何表达式都可以使用标签,标签的格式为:标签名@,例如
2017-06-03 22:16:58 1083
原创 RecyclerView 上拉加载更多及滚动到底部的判断(上)
关于下拉刷新上拉加载更多,网上有很多例子;下拉刷新比较简单直接使用系统提供 SwipeRefreshLayout 即可,比较麻烦的是上拉加载更多,实现上拉的方法多种多样,这里对各个方法总结一下。需求分析RecyclerView 滚动到底部后,用户再往上拖拽(这里使用场景是拖拽,而不是手指离屏后的自动滚动到底部)时,RecyclerView 展示出 加载更多 的字样并请求更多的数据,请求成功后更新 R
2017-06-02 10:33:12 4376 1
原创 Kotlin 从学习到 Android 第四章 控制流
if 表达式在 Kotlin 中,if 是表达式语句,它可以返回一个值,因此在 Kotlin 中没有三目运算符(condition ? then : else)。// 传统的 if 用法var max = a if (a < b) max = b// 传统的 if 和 else 用法 var max: Intif (a > b) { max = a} else { max
2017-06-01 22:08:47 642
原创 Kotlin 从学习到 Android 第三章 编码规范
1.命名风格如果不确定某种类型的命名风格,可以使用 java 的命名风格。名称使用驼峰命名法 (不要使用下划线)类型以大写字母开头方法和属性以小写字母开头使用 4 个空格缩进公共函数要有说明文档2.冒号类型和超类间的冒号前应该有一个空格,类型的实例和类型间的冒号前不需要有空格。interface Foo<out T : Any> : Bar { fun foo(a: Int):
2017-05-31 11:19:09 940
原创 Kotlin 从学习到 Android 第二章 习惯用法
Kotlin 从学习到 Android 第二章 习惯用法1.数据类相当于 java 中的 bean ,用关键字 data 来声明这个 class ;data class User(val name: String, val age: Int)var user:User = User("admin" , 20)由于比较模版化(如:set 、get 等),所以在 Kotlin 中如下的几种方法是系统
2017-05-30 21:53:31 890
原创 Kotlin 从学习到 Android 第一章 基础语法
Kotlin 从学习到 Android 第一章 基础语法1. 基本数据类型1.1 数字类型 数据类型 字节长度 Double 8 Float 4 Long 8 Int 4 Short 2 Byte 1注意:且 Kotlin 的字符类型不能转化为数字。// java 代码下面将输出 98System.out.println('a' + 1) ;
2017-05-29 21:36:40 3124 2
原创 为 RecyclerView 添加 OnItemClickListener
由于 RecyclerView 没有提供 OnItemClickListener ,只提供了一个 OnItemTouchListener ,导致网上各种方式实现 OnItemClickListener ,看了几篇 blog 也没有符合我口味的代码…还是自己实现一遍吧。1.自定义 RecyclerView自定义 RecyclerView 直接继承 v7 的 RecyclerView 即可,不需要复杂的
2017-04-10 14:41:38 718
原创 Android studio 如何查看 library 间的依赖关系
上一篇 support-v4、support-v7 的依赖关系及 Getting java.util.zip.ZipException: duplicate entry exception 的处理 例举了几个常用 library 的依赖关系,本文简单介绍一下查看 library 的依赖关系的具体方法。一、配置环境Android Studio中使用的 gradle 版本一般不是最新版,所以在使用其自带
2017-04-07 15:32:37 18627 3
原创 support-v4、support-v7 的依赖关系及 Getting java.util.zip.ZipException: duplicate entry exception 的处理
最近在编译项目时,多次出现了 java.util.zip.ZipException: duplicate entry exception android/support/vX/.../xxx.class 异常;该异常是由于多个 module 或 第三方库(这个是主要原因)引用了不同版本的 support 库引起的;为了解决这个问题顺带把 Android support 库和几个第三方库的依赖关系
2017-04-06 22:08:16 2372 1
Android studio plugins
2016-08-17
ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案
2016-03-14
Android Support Percent Library
2015-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人