- 博客(66)
- 资源 (19)
- 收藏
- 关注

原创 高级Android开发面试汇总
高级 Android 开发面试题汇总一、 Android 基础1. Service 的两种启动方式简单的来说就是 直接启动 和 绑定启动 两种方式。// 直接启动Context.startService()// 直接启动后需要手动调用停止服务才会停止Context.stopService()Service.selfStop()// 绑定启动Context.bindServi...
2019-02-28 13:50:54
3749
1

原创 计算机网络-运输层
UDP2018年11月28日11:21特点:无连接 尽最大可能交付 无拥塞控制 面向数据报 支持一对一、一对多、多对一、多对多通信 首部开销小 TCP2018年11月28日11:21特点:面向连接 每一条TCP链路只能是点对点通信 可靠传输 全双工通信 面向字节流连续发送协议 连续发送协议是发送数据后等待接收方确认后再继续发送...
2019-02-18 11:38:06
750

原创 Wiew 像写 Android UI 一样写小游戏布局
Wiew项目地址: https://github.com/onlynight/Wiew简易微信小游戏view系统以及touch系统。你可以想写Android UI一样写界面布局,处理点击事件。预览布局你可以像使用android布局一样使用Wiew的布局:this.contentView = new FrameLayout(LayoutParam.MATCH_PARENT, Layou...
2019-01-11 14:18:34
725

原创 微信小游戏开发教程
微信小游戏开发教程-前言自18年年初对开发者开放小游戏接口以后小游戏越来越火热,本文就是对小游戏开发的入门教程,希望这篇文章能够帮到想要入门开发游戏的你。微信小游戏开发者文档https://developers.weixin.qq.com/miniprogram/dev/index.html这里是微信小游戏的官方开发教程,主要是说明以下几个问题:注册小程序/小游戏 appId安装开发...
2018-12-13 18:40:18
11507
1

原创 APP 国际化翻译工具(支持android/IOS等)
由Java编写基于插件形式的格式化文本翻译工具项目地址:https://github.com/onlynight/exchange一年多以前写过一个翻译工具,支持google、baidu、youdao翻译,并且可拓展,但是拓展性不是很好, 项目地址:https://github.com/onlynight/Translator这个新的项目是基于插件形式编写的,你可以任意组合翻译平台和...
2018-06-19 00:18:11
6129
5

原创 Android性能优化典范笔记(1)-GPU绘制性能优化
Android性能优化典范笔记(1)-GPU绘制性能优化I. Render Performance渲染优化,通常情况下我们看到的显示屏的刷新率都是60Hz,也就是通常说的60帧,反过来计算,每一帧的绘制间隔是1000/60=16.67ms/f, 也就是所16.67ms是每一帧的理想刷新时间,但是60Hz是一个理想值,人眼能够识别的最低帧率为24帧,低于这个帧数就会明显感到卡顿,通常情...
2018-06-13 13:46:23
2920

原创 android自定义WaveView水波纹控件
WaveViewGithub Repository and libarayhttps://github.com/onlynight/WaveView首先看下演示demodemo中可以看到不同高度,不同速度,不同幅度的水波纹;你可以通过view的参数直接控制view的表现形式。引入你的工程在项目的根目录下的build.gradle文件中添加如下代码:allprojects { reposi
2017-09-14 10:44:07
3687

原创 android 多线程下载,断点续传,线程池
android 多线程下载,断点续传,线程池你可以在这里看到这个demo的源码: https://github.com/onlynight/MultiThreadDownloader效果图这张效果图是同时开启三个下载任务,限制下载线程数量的效果图。多线程下载原理多线程下载的原理就是将下载任务分割成一个个小片段再将每个小片段分配给各个线程进行下载。 例如一个文件大小为100M,我们决定使用4个线程
2017-02-13 16:21:10
4331
1

原创 Android滑动冲突解决方法
Android滑动冲突解决方法滑动冲突首先讲解一下什么是滑动冲突。当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够滑动,而ListView或RecyclerView不能滑动,这个就违背了我们写这段代码的意愿。我们想要的结果是当我们滑动ListView的时候ListView滑动,滑动ListView以外的地方的时候Scr
2016-12-26 17:50:08
3523

原创 从自定义TagLayout看自定义布局的一般步骤[手动加精]
从自定义TagLayout看自定义布局的一般步骤[手动加精]我们常用的布局有LinearLayout,FrameLayout,RelativeLayout,大多数情况下都能满足我们的需求,但是也有很多情况下这些布局不能满足我们的需求,无论我们怎么嵌套布局都没法实现我们想要的效果,这时候我们就需要用到自定义布局啦。如果你正准备学习自定义布局,或者你想彻底了解自定义布局的一般步骤,那么这篇文章一定很适合
2016-11-23 11:47:49
3343

原创 Android自定义水波纹动画Layout
Android自定义水波纹动画Layout源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心。唉不说了,来看看代码吧。展示效果Hi前辈话不多说,我们先来看看效果:这一张是《Hi前辈》的搜索预览图,你可以在这里下载这个APP查看更多效果:http://www.wandoujia.com/apps/com.superlity.hiqianbeiL
2016-11-15 21:19:00
6110
8

原创 Android自定义RulerView
自定义RulerView你可以在Github上看到这篇文章以及源码:https://github.com/onlynight/RulerView 如果你想直接使用请看这里的使用方法:https://github.com/onlynight/RulerSurfaceView只需简单几步gradle配置即可使用。概述本文主要讲如何继承View实现一个自定义View,然后通过实例RulerView的实现
2016-11-01 17:35:37
4951

原创 Git详细使用教程
Git使用教程Git是什么Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git与SVN的区别GIT不仅仅是个版本控制系统,它也是个内容管
2016-10-21 20:17:51
25199
1
原创 微信小游戏开发教程-游戏实现4
微信小游戏开发教程-游戏实现4玩家在游戏中玩家扮演一直傻鸟,玩家不点击屏幕时候它会自动下落,玩家每次点击屏幕都会给小鸟一个向上的速度,然后小鸟会向上冲。这里我们模拟实现重力加速度下物体的速度变化。下面几个重要的公式:// 通过加速度计算当前速度公式vt = v0 + a * t// 变速直线运动位移计算公式s = (v0 + vt) / 2 * t// 推导出s = (v0 ...
2018-12-13 18:36:30
2603
原创 微信小游戏开发教程-游戏实现3
微信小游戏开发教程-游戏实现3对象池由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对象池技术缓存这些不用的对象,当需要使用的时候将这些对象取出来重复利用,从而避免重复创建对象的开销。下面是一个简易对象池的实现:// pool.js// @author: wyndam// @em...
2018-12-13 18:35:07
1553
2
原创 微信小游戏开发教程-游戏实现2
微信小游戏开发教程-游戏实现2绘制地面类似于绘制背景,读者自行完成代码。src/runtime/land.js简易View系统坐标布局对于复杂的页面来说维护相当困难,因此这里我们引入布局的概念。我们定义一个 Group类( base/group.js ),该类就可包含 Sprite实现树形控件结构。布局即控件在某个区域内的相对位置。以下是 Group类的源码:// filename: g...
2018-12-13 18:34:17
2315
原创 微信小游戏开发教程-游戏实现1
微信小游戏开发教程-游戏实现1概述微信开发者工具官方提供一个飞机大战的游戏Demo,这里我们不再使用这个demo,我们以FlappyBird为例,为了让读者更加容易理解。源码https://github.com/onlynight/FlappyBird强烈建议读者根据教程自己实现一遍游戏,这让能让你更加熟悉开发的流程和代码的原理;在一些不清楚的地方可以参考源码实现的方法。游戏开发首先...
2018-12-13 18:33:05
4477
5
原创 微信小游戏开发教程-2D游戏原理讲解
微信小游戏开发教程-2D游戏原理讲解原理为了更加形象的描述,这里先上一张图:背景a. 首先,我们看到背景好像是一张无限长的图片在向下移动。实际则不然,这是一张顶部和底部刚好重叠的图片。这是一种节省资源讨巧的做法,然后绘制的时候同时绘制两张刚好拼接在一起,下面我们画一张图来形象的说明。b. 我们看到这张图片是首尾可以拼接到一起的一张图片,然后两张图拼一起一起是下面这样:c. 下...
2018-12-13 18:32:00
3795
原创 微信小游戏开发教程-新建项目
微信小游戏开发教程-新建项目1. 新建小游戏项目我们这回使用空项目,不要勾选使用模板创建。2. 添加小游戏必要文件项目创建好以后我们发现缺少一些必要的文件,我们手动添加即可:game.json这个文件是小游戏的配置文件,我们只做如下设置即可:{ "deviceOrientation": "portrait", "showStatusBar": false}这个文件...
2018-12-13 18:24:51
2226
原创 极光推送收不到推送消息
极光推送收不到推送消息问题解决猜测为什么会出现问题问题sdk版本号:// 极光推送compile 'cn.jiguang.sdk:jpush:3.1.6' // 此处以JPush 3.1.6 版本为例。compile 'cn.jiguang.sdk:jcore:1.2.5' // 此处以JCore 1.2.5 版本为例。新版的极光推送 gradle 自动配置可能是sdk自身有bu...
2018-10-09 16:22:51
8863
原创 Glide 框架解析
Glide 框架解析Glide 是我们常用的图片加载库,使用了很多图片管理的技术,以及常用的两级缓存,这篇文章重点是给他家解析一下Glide的框架设计,重点不在各种技术的詳細要点。学习优秀开源项目的框架有助于我们优化自己的代码结构,写出更加优美的代码,同时开拓自己的眼界,在技术的路上越走越远。概览首先看一张 Glide 类的概览图,只写了重点结构的关键类,为了让大家对Glide有个...
2018-09-05 17:48:35
594
原创 Dart Metadata 使用
Dart Metadata 使用Dart提供了类似于Java注解一样的机制 metadata ,通过使用 metadata 可以实现与注解一样的功能,中文我们称它为元数据。我们来看一段官方的使用描述:Metadata can appear before a library, class, typedef, type parameter, constructor, factory, func...
2018-08-03 17:59:34
2511
原创 Flutter 学习(V2EX)
V2EX Flutter Demo项目地址: https://github.com/onlynight/v2ex_flutter_demo关于Demo该 Demo 旨在学习 flutter ,以及研究flutter的实用性。从学习 flutter 到编写完该 demo 总计耗时3天,易上手。设计理念优秀,UI 组建全部以 widget 形式呈现,非 UI 组建也可以是 widg...
2018-07-26 17:55:00
852
原创 Flutter切换tab后保留tab状态
Flutter切换tab后保留tab状态概述Flutter中为了节约内存不会保存widget的状态,widget都是临时变量。当我们使用TabBar,TabBarView是我们就会发现,切换tab后再重新切换回上一页面,这时候tab会重新加载重新创建,体验很不友好。Flutter出于自己的设计考虑并没有延续android的ViewPager这样的缓存页面设计,毕竟控件两端都要开发,目前...
2018-07-24 11:35:57
12514
5
翻译 truffle详细使用教程
详细使用教程选择以太坊客户端编译智能合约运行迁移测试智能合约用 JavaScript 编写测试脚本编写 Solidity 测试脚本与智能合约交互使用 EthPM 包管理工具调试智能合约使用 Truffle Develop 和 console编写外部脚本...
2018-07-24 11:34:42
1618
翻译 使用 Truffle Develop 和 console
使用 Truffle Develop 和 console使用测试或者调试器与合约进行交互非常好,或者你也可以手动执行交易。 Truffle 提供了两种简单的方式与合约交互。Truffle console: 一个可以和任何以太坊客户端交互的交互式控制台。Truffle Develop: 一个提供了本地私有开发链的交互式控制台。为什么有两个不同的控制台提供两个控制台是为了...
2018-07-05 15:17:36
2101
翻译 编写外部脚本
编写外部脚本你会经常需要编写外部脚本和合约交互。 truffle 提供一个简单的方式, 根据需要的网络引导合约,并根据项目配置自动连接到Ethereum客户端。命令为了执行外部脚本,你需要执行如下脚本:$ truffle exec <path/to/file.js>文件结构为了保证外部脚本正确执行,truffle 希望模块导出一个带有回调的方法:...
2018-07-05 11:14:38
580
翻译 调试智能合约
调试智能合约Truffle 包含一个集成的调试器,这样您就可以调试与您的合约相关的交易。 这个调试器看起来和感觉上都像是传统开发环境中可用的现有命令行调试器。概览在区块链上调试交易比传统的应用调试起来困难得多。在区块链上调试交易时, 代码不是是试运行的;相反,您将逐步执行该交易的历史执行,并将该执行映射到其关联的代码上。 这在调试方面给了我们很多自由,只要我们有事务交互的合约...
2018-07-04 17:49:46
453
翻译 与智能合约交互
与智能合约交互概述为了与合约交互而向Ethereum网络编写原始请求,那么您很快就会意识到,编写这些请求是笨重而麻烦的。 同样,你可能会发现管理每个请求的状态非常复杂。幸运的是,Truffle 为您解决了这种复杂性,使得与合约的交互变得轻而易举。读写数据Ethereum网络对向网络写入数据和从网络读取数据进行了区分,这种区分在如何编写应用程序中起着重要作用。 通常,写入...
2018-07-04 17:46:08
1569
翻译 编写 Solidity 测试脚本
编写 Solidity 测试脚本与 JavaScript 编写的测试脚本一样,基本特性也一直,支持净室环境,可以访问任意不说过的合约。 Truffle的可靠性测试框架是基于以下想法构建的:Solidity 编写的脚本不继承任何合约。这样就使得你的测试合约尽可能的小,并且给予了你对合约的所有控制权。可靠性测试不应该依赖于任何断言库。Truffle为您提供了一个默认的断言库,但是您可以根...
2018-07-04 17:45:34
1089
1
翻译 用 JavaScript 编写测试脚本
用 JavaScript 编写测试脚本Truffle使用 Mocha 测试框架和 Chai 断言,为编写 JavaScript 测试提供了坚实的框架。 让我们深入研究,看看 Truffle 是如何建立在 Mocha 之上,让测试你的合约变得轻而易举。注意:如果你不熟悉用 Mocha 编写单元测试,你需要先看看这个文档 [Mocha's][1]使用 CONTRACT() 代替 ...
2018-07-04 17:45:04
2336
翻译 测试智能合约
测试智能合约框架Truffle 提供了一套标准的自动化测试框架,这就使得测试智能合约变得简单了。 这个框架允许你以两种不同的方式编写简单和可管理的测试:使用 JavaScript 编写,从外部来执行你的合约,就像应用一样。使用 Solidity 编写,进阶的外部执行合约,适用于 bare-to-the-metal(实在不知道怎么翻译) 场景。两种测试方法都有各自的优缺点...
2018-07-04 17:44:17
1140
翻译 运行迁移
运行迁移迁移脚本是使用 JavaScript 编写的文件,用于帮助你发布智能合约到以太坊网络。 这些文件的职责就是分阶段的部署任务。所有历史的迁移都会保存在一个特殊的 Migrations 智能合约中。详细如下:命令行执行迁移命令:$ truffle migrate这个命令将会执行所有在 migrations 目录下的迁移操作。迁移操作只会执行新添加的迁移命令,如...
2018-07-04 17:43:41
572
翻译 编译智能合约
编译智能合约源文件位置你的所有智能合约应该在你的工程目录下的 contracts 目录中。所有的合约都是由 solidity 编写,并且所有文件的后缀都是 .sol 。在一个空的 truffle 项目中,只有一个 Migrations.sol 用于帮助部署进程。如果你在使用 truffle box ,那么就会有多个文件。命令在你的工程目录下执行编译命令:$ tr...
2018-07-04 17:43:03
796
翻译 选择以太坊客户端
选择以太坊客户端有很多以太坊客户端供我们选择。我们推荐在开发和部署时使用不同的客户端。当开发时GANACHE我们推荐 Ganache ,它是一个运行在你个人电脑上的私有连客户端。它是 truffle 套种中的一部分, Ganache 将智能合约和交易放在前台并且中心化,从而简化了dapp的开发。使用 Ganache 你可以 快速查看你们的应用是如何影响区块链的,并且对账...
2018-07-04 17:42:26
1067
原创 Retrofit原理分析
Retrofit原理分析温故而知新还记得retrofit的使用方法嘛,下面我们来回顾一下接口定义public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user);}...
2018-06-08 15:10:40
540
原创 Java通过泛型的模板类型实例化对象
通过泛型的模板类型实例化对象最近自己研究了下mvvm框架,使用泛型的方式可节省很多代码,并且可以合并很多冗余代码,为了最大化的精简代码想到了通过泛型的type用反射的方式实例化对象,这样对象的实例化代码就不用每次都去复写函数来创建了,下面来看看代码。public class BaseViewModel&lt;M extends Model&gt; implements ViewMode...
2018-06-08 14:14:02
10831
1
原创 推荐两个适合代码的字体
推荐两个适合代码的字体代码主字体(英文)ConsolasSource Code Pro中文字体Microsfot JhengHei UISource Code Pro And Microsoft JhengHei UI
2018-06-08 09:47:41
31056
原创 Glide DiskCache 原理分析
Glide DiskCache 原理分析1.感性认识DiskCacheDiskCache默认设置:a.内部存储位置 内部存储位置: /data/{package}/cache/image_manager_disk_cache/public interface DiskCache { /** * An interface for lazily creating a disk cache.
2018-04-26 18:04:34
2539
原创 RecyclerView上拉加载Demo
RecyclerView Load More Demo日常开发中使用RecyclerView时会经常用到上拉加载的功能,但是RecyclerView本身又没有提供便捷的使用方法,只提供了一个统一的下拉加载功能。这里我们演示一下如何为RecyclerView添加上拉加载功能。完整demo你可以再github上看到: https://github.com/onlynight/Recycler...
2017-11-29 17:31:17
384
微信小游戏-FlappyBird
2018-12-14
区块链项目开发指南
2018-06-29
gradle-2.0-bin.zip
2017-11-23
IOS资源图片重命名为android资源
2016-10-28
miui权限设置demo
2015-07-25
QScintilla-PyQt5
2014-05-18
swt-async-handler-1.0
2014-05-14
sqlite-java-tool
2014-04-05
android-sqlite-hibernate
2014-04-05
基于STM32的计算器程序设计
2012-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人