自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1024工场

新技术,新未来,尽在1024工场...

  • 博客(272)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android实践:如何高效加载Bitmap

一、BitmapFactory.Options简介在Android开发中,加载图片过多、过大很容易引起OutOfMemoryError异常,即我们常见的内存溢出。因为Android对单个应用施加内存限制,默认分配的内存只有几M(具体视不同系统而定)。而载入的图片如果是JPG之类的压缩格式(JPG支持最高级别的压缩,不过该压缩是有损的),在内存中展开会占用大量的内存空间,也就容易形成内存溢出;

2016-11-21 16:16:03 3330 3

原创 Android实践:你还没使用增量更新

一、增量更新原理从Android4.1开始,Google Play引入了Smart app update方式更新App,即增量更新。它的原理如下: 1.服务端:生成最新版本apk和手机上已安装版本的apk二进制对比(bsddiff二进制比较工具)的差分包; 2.手机端:发现需要更新时下载差分包,并使用差分包与已安装版本的apk合并成最新版的apk。使用散列算法(MD5或SHA1)校验合成的apk是否完成,如果完成即重新安装;

2016-11-13 22:24:58 2558

原创 Android实践:Https不再疑惑

近期由于公司的工作需要,需要将原有的http接口切换到https,故做了如下学习和整理。本文先简要说明https协议原理,然后https协议在浏览器和App的实践两方面进行讲述;一、https协议原理待整理... ... 二、https协议实践理解上面的相关原理后,我们就开始实现HttpsServlet来模拟简单登录接口,然后通过浏览器和app的访问该https接口;1.服务端http实现我们首先实现服务端http协议的get和post通信,项目的结构和主要实现代码如下:

2016-11-06 22:27:56 4277 1

原创 Maven:聚合和继承

在实际项目的开发过程中,经常会根据需要将项目分成不同的模块,针对多模块的项目,Maven推出了如下两个特性:   1.聚合:把项目的各个模块聚合在一起构建;   2.继承:抽取各个模块相同的依赖和插件等配置,简化POM配置,促进各个模块配置的一致性; 一、聚合实践 下面我们就以一个多模块的项目,跟大家讲解如何使用Maven的聚合和继承属性; 1.首先我们看下多模块项目的项目目录(如下图),包含聚合模块phonemodules(通过该模块构建整个项目所有模块)、main模块和service模块;

2016-10-23 01:05:19 1256

原创 Maven:站点生成

一、生成简单的站点 用户可以让Maven自动生成一个Web站点,以Web的形式发布如项目描述、版本控制系统地址、缺陷跟踪系统地址等,更便捷、更快速地为团队提供项目当前的状态信息; 1.在pom.xml文件中,配置maven-site-plugin插件(Maven的site生命周期如果默认绑定了site插件就可以不配置):      ... ...

2016-10-21 16:50:38 6960 2

原创 Maven:编写Maven组件

一、编写Maven插件步骤 在这里,我们就一个小的项目案例为大家演示一下如何一步一步编写Maven插件。该案例实现的功能是,统计Maven项目各个源代码目录下面文件的数量,以及它们加起来共多少代码。 1.创建maven-plugin项目:插件本身也是Maven项目,特殊的地方在于它packaging必须是maven-plugin;使用maven-archetype-plugin快速创建一个Maven项目。

2016-10-18 15:46:22 2742 1

原创 Maven:使用入门

一、编写POM Maven项目的核心是pom.xml; POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖; POM文件:

2016-10-17 15:05:54 15707 1

原创 Maven:灵活构建

在项目开发中,我们会涉及到不同的环境,如开发、测试、集成和发布环境。因此在不同的环境上我们要灵活切换,如连接不同的数据库。Maven为了支持灵活的构建,内置了三大特性:属性、Profile和资源过滤。下面就结合不同版本jdk,不同环境数据进行介绍如何实现灵活的构建。

2016-10-14 23:24:01 993

原创 Java:线程并发工具类

一、CountDownLatch 1.应用场景 在实际多线程并发开发过程中,我们会碰见很多等待子线程完毕后在继续执行的情况,(如多个子线程下载文件,所有子线程执行完毕后再重命名为文件名)。 2.使用方式 CountDownLatch的构造函数接受一个int类型的参数作为计数器,调用countDwon()方法,计数器减1,await()方法阻塞当前线程,直到计数器变为0;、 补充: 计数器为0的时候,调用awaite()方法不会阻塞主线程; 初始化后,不能修改计数器的值;

2016-09-28 00:05:58 7495 3

原创 shell:cron进行调度

在日常的运维的过程当中,必定能遇见定时执行一些任务的需求,例如,定时执行某些任务脚本。Linux中包含了各种可以用于任务调度的工具,corn就是其中之一。一、什么是corncorn通过守护进程cron使得任务能够按照固定的时间间隔在系统后台自动运行。cron利用的是一个叫做cron表的文件,这个文件存储了需要执行的脚本或命令的调度列表以及执行时间。所有的Linux默认都包含了cron调度工具,只要在cron表中写入条目,对应的命令就会在指定的时间执行。

2016-09-16 18:34:12 2583

原创 日积月累:Java等待子线程执行完毕,再执行后续逻辑

在实际开发过过程中,我们会经常遇见将一个“庞大”的任务拆分成多个子任务,各个子任务在独立的子线程中运行。待所有子线程的任务完成之后,在运行后续的业务,或者退出Main线程。代码如下:WorkThread.javapublic class WorkThread extends Thread { @Override public void run() { try {

2016-09-10 21:51:03 37591 1

原创 React-Native学习十九:组件之间的通信-1

在编写React程序的时候,大家会遇到很多React组件之间的通信问题,主要分为以下3种: 1.父组件向子组件传值; 2.子组件向父组件传值; 3.没有任何嵌套的组件之间的传值(如兄弟组件之间传值)-后续章节介绍;

2016-09-02 01:21:58 9770 3

原创 React-Native学习十八:Navigator

Navigator处理你的app中不同页面的切换。它使用JavaScript实现,在iOS和Android中都可用。如果仅仅用于iOS,你也可以使用NavigatorIOS,因为它使用的是本地的UIKit导航;

2016-08-19 23:33:13 3056

原创 Android安全:Hook技术

一、Hook技术 1.Hook英文翻译为“钩子”,而钩子就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件; 2.Hook使它能够将自己的代码“融入”被勾住(Hook)的进程中,成为目标进程的一部分; 3.在Andorid沙箱机制下,Hook是我们能通过一个程序改变其他程序某些行为得以实现; 二、Hook分类 1.根据Android开发模式,Native模式(C/C++)和Java模式(Java)区分,在Android平台上 Java层

2016-08-15 18:39:23 23580 2

原创 Android安全:So分析

一、So简介 1.Android底层是Linux,Linux本身就是使用C/C++语言,Android使用了一个Dalvik虚拟机才使得应用程序开发使用Java语言; 2.Dalvik支持JNI编程方式,第三方应用完全可以通过JNI调用自己的C/C++动态库(so文件),使用“Java+C”编程方式; 3.NDK(Native Development Kit)是“Java+C”开发的工具库,保证程序的兼容性、调试性和调用API方便性,也避免Java的不足,如安全性;

2016-08-15 01:56:46 5482

原创 Android Studio:常见使用问题处理

问题1:如何在Android Studio中导入Samples处理1:File>Import Sample(Search Everywhere>Import Sample)问题2:Android Studio 2.2启动后,提示:System Health:OpenJDK shows intermittent performance and UI issues.We recommend using the Oracle JRE/JDK;处理2:用如下方式安装Order JRE/JDK: s

2016-08-13 23:34:41 3121

翻译 Android Develop:减小APK大小

用户通常会避免下载过大的app,尤其是在新兴市场,那里的设备网络连接2G和3G往往参差不齐,或者以按流量收费的形式。这篇文档描述了如何减少你的app的APK大小,它会使得更多的用户下载你的app; 理解APK的结构 -------------------------------------------------------------------------------- 在讨论如何减少你的app的大小之前,理解一个app的apk结构是非常有用的。一个APK文件是一个zip压缩文件,它包含你的app

2016-08-11 17:35:19 3235 5

原创 Git:Git克隆(git clone)

一、两个版本库维护项目 1.原因 Git版本库就是躲在工作区根目录下的.git目录中,如果忘了这一点直接删除工作区,就会把版本库也同时删掉; Git的版本库目录和工作区在一起,因此存在一损俱损的问题,如果删除一个项目的工作区,同时也会把这个项目的版本库删除掉; 2.解决办法

2016-08-01 23:05:04 9872

原创 Git:Git文件删除、恢复、重命名(rm/git rm,mv/git mv)

一、删除文件 a.本地删除不是真的删除 1.查看当前文件状态,新创建的文件hack-1.txt添加到暂存区,welcome.txt文件在工作区有修改; 2.当前工作区的文件有detached-commit.txt、hack-1.txt、new-commit.txt、stash.txt和welcome.txt;

2016-07-25 15:10:22 33829

原创 Android安全:如何逆向分析Android程序

经过前面对各种反编译工具apktool,dx2jar,jd-gui等工具的介绍,本章节我们结合一个实际的案例,向大家讲解如何分析Android程序。 一、分析步骤 1.使用dex2jar和jd-gui工具分析Java反编译源码; 2.使用apktools,反编译Smail文件。由于Smail语法单独阅读比较困难,我们可以结合Java反编译的源码进行分析; 3.根据相关的特征和线索,修改Smail源码,使用apktools重新打包; 4.使用jarsigner重新签名apk,安装并验证修改是否正确,

2016-07-19 02:11:15 3096

原创 Git:Git检出(git checkout)

一、HEAD的重置即检出 HEAD可以理解为“头指针”,当前工作区的“基本版本”,当执行提交的时候,HEAD指向的提交将作为新提交的父提交; 图像1.查看HEAD指向分支master; 2.使用git branch -v查看当前处于master分支;

2016-07-14 11:59:06 10833

原创 Android安全:dex2jar、jd-gui和AXMLPrinter2

生成Android的apk文件过程中,将Java语言的字节码(.class)转换成Dalvik虚拟机字节码(.dex),d2j-dexjar可以将这个过程可逆,将.dex转换成.class。下面我们就介绍如何反编译一个dex文件,并使用jd-gui反编译.class为java源码并查看: 一、dex2jar(https://sourceforge.net/p/dex2jar/wiki/Home/) Android.dex和java.class文件相关的工具集: 1.dex-reader/writer:

2016-07-12 22:08:46 5952

原创 Android安全:ApkTool

一、ApkTool作用 1.跨平台工具,可以在Windows平台与Ubuntu平台下直接使用; 2.ApkTool反编译,生成Smail格式的反汇编代码; 3.阅读Smail文件的代码理解程序的运行机制,找到程序突破口进行修改; 4.使用ApkTool重新编译成apk文件并签名,最后运行测试破解程序是否成功; 二、安装ApkTool(以Ubuntu为例演示) 1.下载Linux包装脚本apktool.sql(https://raw.githubusercontent.com/iBotPeache

2016-07-10 18:06:16 4657

原创 Git:Git重置(git reset)

一、分支游标master的探秘 1.查看.git/refs/heads/master执行的commit为f22d9e; 2.通过查看git log可以知道当前的master分支执行最新的commit为f22d9e; 3.新建文件new-commit.txt,并进行新的提交,使master分支指向刚创建的commit为c132b2c;

2016-07-10 14:28:47 9023

原创 Git:Git对象(HEAD,master,branch)

一、Git对象库的探秘 图像1.查看最新1个commit的原始内容; 2.commit 9efaef05b3a6baaebc2b3c5dc1aa4710131e1b68:是本次提交的唯一标识; tree 6222d0694ffcab4de64f6a43d8d480afdecb4d35:本地提交所对应的目录了树; parent ec57d1f31c5f01c1a47bf7b13787705a01fb733c:本次提交的上一次提交; 3.查看6222d0为tree类型; 4.查看ec57d

2016-07-06 23:50:03 5749

原创 Jenkins:构建Job的设置

一、Jenkins Build Jobs 1.构建Job是一个持续化集成服务的基础; 2.构建Job是你的项目做一些事情,如编译、测试,打包,发布或其它方面的特殊方式; 3.一个项目通常会使用许多相关联的Job,例如你可能开始选择专门运行你的单元测试的构建job,如果它通过你继续执行更长时间的集成测试,运行代码质量检测,或者生成技术文档,最后打包你的项目并部署到一个测试服务上; 二、创建一个FreeStyle构建Job 1.创建一个新的Job,点击"New Item"菜单,Jenkins支持多种不

2016-07-05 19:48:21 12595 3

原创 Jenkins:Jenkins配置

一、配置面板 配置面板是Jenkin的管理页面,它负责配置服务的各个方面,每一个链接跳转到一个专门配置页面。在应用程序的任何地方,通过在搜索框中输入manage就能进入到该页面(如下图),该页面的内容是根据你安装的插件来决定的。下面我们就分别介绍不同的配置:

2016-07-05 01:44:41 5945

原创 Git:暂存区(git diff)

一、查看每次提交的文件变更统计 gitlog --stat(查看每次提交的文件变更统计) 二、暂存区探索 1.向welcome.txt文件中添加文本“Nice to meet you.”; 2.查看工作区域和暂存区welcome.txxt文件的差异;

2016-07-04 01:26:10 10962

原创 Git:Git初始化(git config)

一、查看Git的版本 查看git版本库的版本;  二、Git配置 配置版本库级别配置用户名; 配置版本库级别配置email; 配置版本库级别配置命令别名alias.st status; 配置版本库级别配置命令别名alias.ci commit; 配置版本库级别的配置开始Git输出颜色; 注:配置用于级别和系统级别的配置实用--global和--system参数;  三、创建版本库及第一次提交 创建

2016-07-01 11:37:27 11801

原创 Jenkins:Jenkins服务的搭建

Jankins支持多个平台的安装,如Windows、Ubuntu系统,下面我们分别介绍在Windows、Ubuntu系统上如何安装; 一、Ubuntu系统的安装 由于Jenkins是一款Java平台的开源持续集成(Continuous Integration,CI)引擎。所以我们在安装之前,应该确保安装了JVM。 那么首先,我们讲讲如何在Ubuntu上安装JDK,步骤如下: 1.在Oracle官网下载Linux版本的64位的jdk(jdk-8u25-linux-x64.tar.gz); 使用命

2016-06-28 00:35:40 6566

原创 GitLab:GitLab服务的搭建

现在就迫不及待的来开始我们自己的GitLab服务器的搭建吧。由于我们是个人用户的探索,所有我们选择免费的GitLab Community Edition进行演示; 1.首先,我们应该明确GitLab只支持Unix的发布版(故,我在Mac虚拟机中安装Ubuntn): Ubuntu Debian CentOS……

2016-06-27 23:00:14 5205 1

原创 React Native十五:原生UI组件

在如今的App中,已经有成千上万的原生UI组件了——其中的一些是平台的一部分,另一些可能来自于一些第三方库,而且可能你自己还收藏了很多。React Native已经封装了大部分最常见的组件,譬如ScrollView和TextInput,但不可能封装全部组件。而且,说不定你曾经为自己以前的App还封装过一些组件,React Native肯定没法包含它们。幸运的是,在React Naitve应用程序中封装和植入已有的组件非常简单。本向导会引导你如何构建一个原生UI组件,带领你了解React Native核心

2016-06-26 16:44:31 4029 1

原创 Gradle:代码质量管理和检测

一、将代码分析集成到构建中 1.构建管道阶段:   编译代码和单元测试-->集成测试-->代码分析-->组装二进制 2.代码编译额测试结果给出了关项目健康状况的一个基本观点,但是它并没有提供关于代码质量的任何反馈; 3.代码分析工具帮助你产生这些度量值,包括: 代码覆盖率; 代码标准的遵守情况; 不好的编码实践和设计问题; 过度复杂、重复、强耦合的代码; 4.代码质量检查的task不应该相互依赖,

2016-06-26 16:33:03 5912

原创 React Native十四:原生模块

有时候App需要访问API,但React Native可能还没有相应的模块包装;或者你需要复用一些Java代码,而不是用JavaScript重新实现一遍;又或者你需要实现某些够性能的、多线程的代码,譬如图片处理、数据库、或者各种高级扩展等等;我们React Native设计为可以在其基础上编写真正代码的原生代码,并且可以访问平台的所有能力。这是一个相对高级的特性,我们并不认为它应当在日常开发过程中经常出现,但是具备这样的能力是很重要的。如果React Native还不支持某个你需要的原生特性,你应该可以

2016-06-12 23:39:56 3466

原创 Git :版本控制的历史

一、diff、patch时代 使用diff命令比较两个文本文件或目录的差异 使用cat命令,查看hello,和world文件的内容; 使用diff -u hello world > diff.txt命令,比较hello和world文件的差异,并保存在diff.txt文件中; 使用cat命令,查看diff.txt文件内容: ---标识原始文件,+++标识目标文件; -标识只出现在原始文件的行,+标识

2016-05-17 12:07:51 2112

原创 React Native 十三:植入原生应用

由于React并没有假设你其余部分的技术栈—它通常只作为MVC模型中的V存在—它也很容易嵌入到一个并非由React Native开发的应用中。一、需求1.一个已有的、基于gradle构建的Android应用;2.Node.js;

2016-05-14 23:32:29 8194

原创 React-Native 七:Slider

用于从一个值范围选择一个值的组件。

2016-05-07 17:06:15 11658

原创 React-Native 十:版本升级

更新版本的React Native将会让你访问更多的APIs, 这样我们可以去使用更多的APIs,视图Views,以及开发者工具以及其他一些好用的东西。浏览版本更新日志就会发现整体FB官方开发进度还是非常紧张的,这样就很容易导致旧版本会出现不能用的情况,后期可能会出现不可预料的情况,这边建议大家尽量更新最新正式版本。我们大家都知道一个React Native项目使用Android项目,iOS项目和JavaScript项目三部分进行组成的,而且三者都关联打包在npm包内的,所以该项目版本进行更新是比较繁琐的

2016-05-06 02:10:25 8003

原创 Shell:环境变量

在大家初次接触到Linux系统中,相信环境变量会让你头疼不已。习惯了在Windows设置PATH的你,被Linux上各种文件可以设置环境变量头疼不已!对于可以在当前用户执行的命令,但是sudo就无法执行困惑不堪!下面,我们就系统的和大家讲解下Linux的环境变量,让大家豁然开朗;一、什么是环境变量1.在Linux中,很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息;2.bash shell使用环境变量来存储有关shell会话和工作环境信息; 允许你在内存中存储数据,以便运行

2016-05-04 21:59:38 8009

原创 React Native 六:使用源码构建React Native

在学习React Native的过程中,在资料比较匮乏的时候,通过官方的源码和示例是一个重要的途径。本章节讲解如何通过源代码构建和运行官方的示例程序。一、先前准备1.在进行源码构建之前,你应该确认你已经完成了如下安装: Android SDK version 23(compileSdkVersion in Build.gradle) SDK build tools Version 23.0.1(buildToolsVersion in build.gradle) Andro

2016-05-02 18:11:06 4636

iPhone开发秘籍(第2版)

详细讲解了IOS开发的内容,并有实战例子讲解。

2013-03-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除