历史记录
记录曾经的学习历程
怪伽先森
在迷茫中执着前行
展开
-
ButterKnife 源码解析 (三) -- 手写 ButterKnife 实现无性能损耗的编译时框架
2. ButterKnife 为什么执行效率为什么比其他注入框架高?ButterKnife 使用了注解处理技术,可以自动生成相应代码,一是为了提高编码的效率,二是避免在运行期大量使用反射,通过在编译期利用反射生成辅助类和方法以供运行时使用。3. 自定义注解处理器了解了基本的知识点后,我们应该尝试去使用这些技巧。 接下来是实践时间,我们来开发一个简单的例子,利用注解处理器来自动产生随机数字和随...原创 2019-11-13 14:04:22 · 163 阅读 · 0 评论 -
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 · 311 阅读 · 0 评论 -
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 · 430 阅读 · 0 评论 -
Xamarin-Forms-Xaml-XamlParseException--No-embeddedresource-found-for
问题来源把 Xamarin Forms 项目中的 Xamarin.Forms nuget package从 2.5 更新到 3.0 之后就遇到这个错误了Xamarin.Forms 2.5 --> project build successUpdate Xamarin.forms version from 2.5 to 3.0 then build again, --> proje...原创 2018-10-29 15:37:01 · 186 阅读 · 0 评论 -
Gradle build error, Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug
导入的项目很老,所以出现这个问题,最下面两种我弄完才看见,没有试过,不过 stack overflow 很多人说有用,你们可以尝试下stack overflow上的解决办法我当时 project.gradle 配置如下:buildscript { repositories { jcenter() } dependencies { classpa原创 2017-03-02 17:59:01 · 305 阅读 · 0 评论 -
android studio编译项目,9 patch图片报错Crunching Cruncher
将Eclipse的项目导入到AS中,一部分*.9.png格式图片报错误。Crunching Cruncher 是什么意思呢,Crunching 嘎吱作响; Cruncher 数字计算器;直译过来:数字计算器嘎吱作响,就是处理不了这个图片,所以肯定是图片出现了问题。点击出错的图片,修改过来就好(图片不多的话)问题原因:1、有可能这张图片就是一张普通的图片,加了一个后缀而已,所以不是标准的9.png图原创 2017-03-02 17:51:36 · 369 阅读 · 0 评论 -
Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest
有问题欢迎加Q:1092417123情况是这样子的,导入一个比较老的项目(两年前),它依赖于一个 Libraray,已经先导入了 library,现在导入项目的时候出了错(1) Android Studio 目前提供将 SDK包成 .aar 档案格式的方式,此方式除了将 class 包入之外,也会将资源、图片等,都一起包入。而以前所使用的 .jar 只会将相关的 class 包入,所以在以前将资源文原创 2017-03-02 17:46:22 · 6986 阅读 · 3 评论 -
android studio:###Error:Dependency :common:unspecified on project resource resolves to an APK
Error:Dependency XXX:common:unspecified on project resource resolves to an APK archive which is not supported as a compilation dependency.只需要把module对应的build.gradle文件第一行apply plugin: ‘com.android.appli原创 2016-11-17 14:05:28 · 810 阅读 · 0 评论 -
Rx 入门(五)-- 转换操作符
RxJava 操作符官方文档,一共有一下五种:MapFlatMapGroupByScanWindow本文主要讲 map 和 flapMap ,其它的用到时候看文档就好了Map 操作符最基础的转换函数就是 map。 map 使用一个转换的参数把源Observable 中的数据转换为另外一种类型的数据。返回的 Observable 中包含了转换后的数据。public final <R> Ob转载 2017-03-03 16:49:00 · 505 阅读 · 0 评论 -
Rx 入门(五)-- Scheduler
调度器 Scheduler如果你想给Observable操作符链添加多线程功能,你可以指定操作符(或者特定的Observable)在特定的调度器(Scheduler)上执行。某些ReactiveX的Observable操作符有一些变体,它们可以接受一个Scheduler参数。这个参数指定操作符将它们的部分或全部任务放在一个特定的调度器上执行。使用ObserveOn和SubscribeOn操作符,你可转载 2017-03-02 23:56:47 · 534 阅读 · 0 评论 -
RxJava 入门(四)-- interval()的坑
大部分的操作及代码都在我上一篇博客中,这一篇我就其中比较蛋疼的问题说一下转载自一页飘舟大神的博客,Rx博客很全1. Observable.interval()不起作用的解决办法在Eclipse下测试Rxjava中的操作符interval()时出现了很奇怪的问题,怎么试都不能执行。Observable.interval(1, TimeUnit.SECONDS) .subscribe(n转载 2017-03-02 23:27:59 · 16005 阅读 · 1 评论 -
RxJava入门(四) -- 扩展的观察者模式
1. RxJava 的观察者模式解读RxJava 有四个基本概念:Observable (可观察者,即被观察者)Observer (观察者)subscribe (订阅)事件Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 ObserverAndroid 常见的观察者模式:与传统观察者模式不原创 2017-02-28 18:30:49 · 1070 阅读 · 0 评论 -
RxJava 入门(三)-- 操作符简介
在 RxJava 中,如果把整个 事件流看成 是工厂的流水线,Observable 就是原料,Observer 就是我们的产品经理。产品如何交到我们的产品经理手上?其中重要的就是操作工人(Operator 操作符),它负责在 Observable 发出的事件 和 Observer 的响应之间做一些处理。操作符分类Creating ObservablesTransforming Observabl原创 2017-02-28 16:38:54 · 528 阅读 · 0 评论 -
RxJava 入门篇 (二) -- 关键的类
Rx 有两个最基础的类型,和其他一些扩展这两种类型的类。两个核心的类为: Observable 和 Observer。Subject 是同时继承了 Observable 和 Observer。Rx 是在 Observer 模式之上建立起来的。这种模式很常见,在 Java 中有很多地方都使用了该模式,比如 JavaFx 中的 EventHandler。 这些简单的使用方式和 Rx 对比有如下区别:使原创 2017-02-28 15:01:03 · 410 阅读 · 0 评论 -
RxJava入门篇 --(一) 响应式编程
刚开始学习,不是很明白很多话的道理,学习一门新技术,要经历what,how,why三个步骤。- what 这个 RxJava 能做什么?提供什么样的 API- how 采用什么样的方式实现,主要有哪些模块。 - 每个模块有什么方法,怎么实现的 - 结构,或者说架构怎么搭建的- 为什么 Rx 会火,它这样封装后意图?(简洁?逻辑简单?)原创 2017-02-28 13:50:20 · 1202 阅读 · 0 评论 -
SQLyog 导入数据库
最上方工具栏 –> 执行SQL脚本 –> 选择要导入的SQL文件原创 2017-01-25 22:29:25 · 615 阅读 · 0 评论 -
MySQL 大小写敏感修改不了
1. 症状今天安装 KBengine 引擎的时候,修改 MySQL 配置文件 my.ini 中的lower_case_table_names=2想让 MySQL 对大小写不敏感,但无论如何都不生效2. 解决办法卸载 wampserver,我的 MySQL 是里面的 ,这样安装的优点是简单快捷卸载之后要删除注册表中的信息ControlSet001、ControlSet002、CurrentCon原创 2017-01-13 15:15:26 · 2637 阅读 · 0 评论 -
mysql 运行 net start mysql 报“服务名无效”解决办法
1. 症状以前电脑上安装了 MySQL,今天在电脑上运行,发现没有 MySQL 服务了C:UsersAdministrator>net start mysql服务名无效。请键入 NET HELPMSG 2185 以获得更多的帮助2. 解决办法MySQL 安装在 D:\wamp\bin\mysql\mysql5.1.53原创 2017-01-11 21:51:33 · 4028 阅读 · 0 评论 -
运行 .bat 脚本 命令行闪退
症状安装 Tomcat 之后运行 startup.bat 命令行闪退方案打开 startup.bat 文件,在文件最后添加一行 pause,表示暂停,就可以看到命令行中的报错信息了原创 2019-09-23 10:54:28 · 6759 阅读 · 0 评论 -
Machine:findBroadcastInterface....not a valid interface
帮朋友装 KBEngine 的时候遇到的问题,她一直解决不掉,我就感觉应该是一些配置问题。今天拿到截图分析了很久才解决,办法异常简单,但我觉得比这更重要的是解决问题的思路,在这记录下来,以希望能解决一类问题,避免在这种没什么意义的 bug 上耗费太多时间分析出来的办法一句话:禁掉不用的网卡1. 问题截图2. 问题分析1.原因何在 broadcast discovery [169.254.242.1原创 2017-01-13 19:59:02 · 1037 阅读 · 0 评论 -
HTTP 状态码
对 HTTP 请求一直有着抵触心理,趁现在有空,从头到尾捋一遍,先把状态码这简单的搞定了1. 常见的 HTTP Status CodeHTTP: Status 200 – 服务器成功返回网页HTTP: Status 404 – 请求的网页不存在HTTP: Status 503 – 服务不可用2. HTTP: Status 1xx (临时响应)表示临时响应并需要请求者继续执行操作的状态代码H原创 2017-01-08 22:11:14 · 250 阅读 · 0 评论 -
常用的 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 · 365 阅读 · 0 评论 -
Servlet(二)
1.ServletConfig 详解1.1、概念与用法共有四个 API:getInitParameter(String name): 获取指定参数名的初始化参数getInitParameterNames(): 获取参数名组成的 Enumeration 对象.getServletNamegetServletContextServletConfig 封装了 Serlvet 的配置信息, 并且原创 2017-02-24 18:25:33 · 275 阅读 · 0 评论 -
Servlet
1. Servlet 定义与作用Java Servlet 是和平台无关的服务器组件,它运行在 Servlet 容器中。Servlet 容器负责 Servlet 和客户端的通信以及 Servlet的方法 Servlet 和客户的通信采用“请求/响应的模式”。Servlet 可实现如下功能:创建并返回基于客户请求的动态HTML 页面创建可嵌入到先有HTML 页面中的部分HTML页面(HTML片段原创 2017-02-24 15:05:27 · 300 阅读 · 0 评论 -
JavaWeb 基础
1. Java Web 应用的概念在Sun 定义的 JavaServlet规范中,对 Java Web 做了这样的定义:“Java Web 应用由一组Servlet、HTML 网页、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet 规范的 Servlet 容器中运行”Servlet 本质上就是运行在服务器上的一个 Java 类Java Web 应用中可以包含如下的内容:原创 2017-02-24 00:55:22 · 266 阅读 · 0 评论 -
机器学习 1 Hello World
常用的 Python Machine Learning 开源库scikit-learnTensorFlow之后主要就演示使用 scikit-learn 进行 Machine Learning 的学习什么是机器学习我们可以把 机器学习看作是人工智能的一个子领域,初期的 AI 人工智能程序只能做好一件事情,eg: 深蓝很会下棋,但只会下棋但是现在我们写的程序可以解决更多问原创 2018-01-27 23:03:08 · 498 阅读 · 0 评论 -
VisualSVN错误 Cannot query proxy blanket解决办法
别人碰到,记录一下,因为之前安装MATLAB时,这个问题遇见过,方法一模一样1. 错误来源安装VisualSVN遇到报错:Custom action InstallWMISchemaExcute failed: Cannot query proxy blanket: No such interface supported (0x80004002)2. 分析http://www.visualsvn.c原创 2017-01-09 23:22:49 · 447 阅读 · 0 评论 -
SVN 版本冲突
1. 问题描述冲突问题是最常见的问题,它是这样产生的,A用户 check out 了一个工作副本A,接着B用户又check out了一个工作副本B。然后A用户对副本A中的文件C做了修改(可以是内容修改,文件删除,重命名,以及位置移动),并且提交。这时候B用户也对文件C的相同部分做了修改,这时候如果B用户进行提交,会先被告知版本过时,要求更新,后更新的时候会提示冲突了,这时候可以用冲突编辑器进行手动选原创 2017-01-09 22:55:40 · 422 阅读 · 0 评论 -
SVN 的简单使用
这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用1. 原理图第一步,checkout(检出),会把整个项目的源码下载到本地(如果服务器里没有代码,就仅仅是与服务器的仓库建立关联)第二步,在个人仓库中新建文件用 add,要想提交必须先 add第三步,提交到服务器,commit2. 提交时常见的问题程序员 a 提交了许多代码,你要在 a代码 的基础上修改,原创 2017-01-09 18:32:17 · 411 阅读 · 0 评论 -
SVN服务器搭建
1. 下载SVN服务器现在Subversion已经迁移到了apache网站上,这是二进制文件包的下载地址,在页面的最下方是 windows 操作系统下面的二进制文件包一共有6种,如图:个人认为最好用VisualSVN server 服务端和 TortoiseSVN 客户端搭配使用.点开上面的VisualSVN连接,下载VisualSVN server,如图:然后下载TortoiseSVN客户端,注意转载 2017-01-09 13:14:19 · 276 阅读 · 0 评论 -
Android Studio 快捷键大全
我会不断更新的,以前记得一个超赞的博客给忘记了 没办法,积累吧,初始 AS 的时候不少好的快捷键建议哦参考Warden032的博客,里面有 mac 的快捷键Double Shift 全局查找 Ctrl + Shift + N 快速查找文件(Java、xml、jpg) Ctrl + F 查找当前文件的内容 Ctrl + N 快速查找类文件(Java 文件)提取全局变量:Ctrl+Alt+F转载 2017-03-02 13:57:59 · 593 阅读 · 0 评论 -
as 整理代码快捷键
马丹,挺好用的,就是记不住,好气Ctrl + alt + L原创 2017-02-10 22:20:07 · 10946 阅读 · 10 评论 -
Android studio中快速try catch的快捷键
选择要包裹的代码块,然后按下ctrl + alt + t原创 2016-11-17 23:49:35 · 14925 阅读 · 2 评论 -
电脑最大支持内存
打开命令行查询:C:\Users\username>wmic memphysical get maxcapacityMaxCapacity33554432最大支持内存33554432/1024/1024 = 32G原创 2019-10-11 16:27:27 · 836 阅读 · 0 评论 -
笔记本连接无线但不能上网,网速极慢
今天笔记本上网莫名其妙上网出问题,浪费我大半天时间问题特征:无线信号极好,但连接还是很不稳定,经常掉线而且网速贼慢,打开网页都费事连接的 WiFi 经常自己断掉,甚至有时搜索不到(即使就在面前,信号贼好)解决办法:百度的原因说是多重网络冲突,照着方法做了,虽然还是显示网络冲突,但已经能正常上网了将鼠标停留在 查看活动网络下面的图标上, 点击 ,选择 合并和删除网络,删除合并其它无用的,只管删,出不了原创 2016-11-28 19:47:15 · 5070 阅读 · 0 评论 -
在git中删除指定的文件和目录
具体操作#拉取远程的 `Repo` 到本地(如果已经在本地,可以略过) $ git clone xxxxxx#在本地仓库删除文件 $ git rm 我的文件#在本地仓库删除文件夹 $ git rm -r 我的文件夹/#此处-r表示递归所有子目录,如果你要删除的,是空的文件夹,此处可以不用带上-r#提交代码 $ git commit -m"我的修改"#推送到远程仓库(比如GitHub) $ git push origin xxxxxx补充: git rm$ git rm -原创 2020-06-08 20:31:32 · 3164 阅读 · 0 评论 -
AppCan 刷新前一个页面或者调用父页面方法
appcan增加新纪录完了如何刷新主页面AppCan 窗口模块WindowAppCan.window.open 打开的窗口 , 如何在打开的窗口中调用父窗口的方法原创 2019-07-30 10:43:48 · 522 阅读 · 0 评论 -
AppCan 项目导入 Android Studio
只针对最新版本的 AppCan, 重要的还是 具体问题具体分析我解决问题的几个关键点看反编译的包看 Android 跑起来的 log,分析 log看 appcan-android 的 source code, 看 appcan js source code缩小问题范围1. 反编译 AppCan 官方给你打的包获取反编译后的资源文件assets 中的目录:err...原创 2019-05-15 12:33:52 · 1034 阅读 · 0 评论