自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

枫凯

新的起点, 重心出发,坚持一步一个脚印

  • 博客(61)
  • 收藏
  • 关注

原创 Git的基本用法

现在git的使用,越来越普遍,逐渐的替代svn。git某些指令,因为在项目中不是经常使用,所以在用到的时候,又怕由于用错而导致提交或修改错误,所以,日常工作中,建议一定要提前掌握好,并对git做全面的学习,一防需要用的时候不会感觉到生疏。针对git的使用教程,网上特别的多,五花百门,在这里,我推荐的是,通过实战的操作,再结合git的指令,做一个全方面的体验。当安装完git之后,你的右键会多了一个g...

2018-04-21 14:43:41 246

原创 虚拟导航栏的完美解决方案

问题:android高版本的手机,已经支持全面屏,还有虚拟导航栏,即取代了低版本的物理按键(例如:home,back,window history键)。由于虚拟导航栏占用了屏幕的高度,而鉴于各厂商的手机rom定制化,往往采用原生的方法无法应用。于是,界面出现了各种问题。解决方案:这其实也可认为是系统修复性的方案。如下:1.添加工具类AndroidBug54971Workaroundpackage ...

2018-03-15 11:44:28 4786

原创 Android Studio的开发视图中,顶部工具栏不见了如何设置回来

前段时间开发过程中不知道按了什么按钮,导致Studio 开发视图中,顶部的工具栏不见了。变成了如下图的这种样式:经过一番百度查找,终于找到了,将工具栏设置回来的方法:设置方法如下面几张图所示:  1.单击菜单栏中,从左侧数的第三个选项——view选项,然后选中ToolBar选项,单击,如下图2.最后Sttudio视图中的工具栏

2018-01-16 18:51:02 5064 1

原创 gradle配置精简apk包

官网比较详细的说明:https://developer.android.com/studio/build/configure-apk-splits.html#configure-abi-splitandroid { ... splits { // Configures multiple APKs based on ABI. abi { //

2018-01-08 15:49:25 366

原创 cmake在gradle上的配置

想了解更全面的配置说明可以看官网https://developer.android.com/studio/projects/add-native-code.html1.指定ABIandroid { ... defaultConfig { ... externalNativeBuild { cmake {...} // or ndkBuil

2018-01-08 15:38:33 4154

原创 一个奇怪的指针问题,指针遍历如何结束?

首先引入一段代码,const char * 如何赋值给char *const char *expr = "goodidea";char *buf = new char[strlen(expr)+1];strcpy(buf, expr);之前一直搞不懂,为什么strlen(expr) + 1还要加1。发现不加1,或者减1,都不会报错,结果都是一样没报错。后来在写项目的时候遇到

2018-01-07 12:23:20 1052

原创 java中的char类型

一:char的初始化char是Java中的保留字,与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。Java中使用Unicode的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码。Unicode。但是English,Spanish,Ge

2018-01-05 09:49:29 394

原创 JAVA中byte类型的介绍

Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。不幸的是,byte的用作计数的时间远少于用表达基本内存单元的时间。比如从stream里读入一个双字节字符,我们先收到2个byte。为了把byte转换成适当的形式,需要对byte值做一些比较,比如判断字符集要比较其是否在某个

2018-01-05 00:03:52 20649

原创 java与C语言的数据类型对应

Java和C数据类型的对应表如下:Java 类型C 类型原生表现 boolean int 32位整数 (可定制) byte char  8位整数 char wchar_t 平台

2018-01-04 23:36:23 8499

转载 DES算法的几种加密模式和填补方式

DES加密DES是一种对称加密(Data Encryption Standard)算法。于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节,其中56位加密密钥,每个第8位都用作奇偶校验。 DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位。加密算法常见的有ECB模式和CBC模式:ECB模式:电子密本方式,这是

2018-01-04 17:01:27 20972

原创 android studio如何编写jni项目实例

android studio自从采用了cmake的方式来开发jni相关的项目,方便了不少,网上有很多教程。我这里讲下如何创建实例。1.创建项目记得勾上support C++和 Exceptions support 和 runtime Type infomation support。此时会默认生成一个native的方法。这里讲下修改的地方。2.创建一个独立的native方法的类

2018-01-03 14:20:21 826

原创 Android/IOS弱网络测试设置

模拟限速开启低速网络环境: Rules → Performances → Simulate Modem Speeds自己定义Modem Speeds 究竟要多快: Rules → customers -> 查找 m_SimulateModem if (m_SimulateModem) { // Delay sends by 300ms per KB

2018-01-01 14:37:17 1476

转载 HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

1.长连接HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。2.节约带宽HTTP 1.1支持只发送heade

2017-12-30 20:38:29 180

转载 5个Android开发中比较常见的内存泄漏问题及解决办法

在Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢?在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。内存泄漏有什么影响呢?它是造成

2017-12-30 16:47:24 254

原创 TCP建立连接的三次握手过程

TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程。上图画出了TCP建立连接的过程。假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序。最初两端的TCP进程都处于CLOSED状态。图中在主机下面的是TCP进程所处的状态。A是主动打开连接,B是被动打开连接。  B的TCP服务器进程先创建传输控制模块TCB,准备接受客户进程的连接

2017-12-30 16:07:55 11622

转载 handler机制的原理

andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 你可以构造Handler对象来与Looper沟通,以便pus

2017-12-30 15:46:15 184

原创 android的事件处理和传递机制实例

android的事件处理机制,相信很多人一开始都比较难懂,如果单单在官网上看流程图,你肯定会很快忘记。那么,遇到比较难懂的知识点,你会怎么做呢?一是看源码,然后就是写实例加深理解。我选择后者,哈哈,我这里只是想说,如果快速的带大家了解事件处理和传递机制。那么废话不多说,先把代码贴出来,不懂的地方,大家不妨手把手写代码,多试试。1.新建一个activity,调出dispatchTouch

2017-12-30 14:58:24 232

原创 Java中ArrayList和LinkedList区别

一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。      2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。      3.对于新增和删除操作add和remove,LinedList比较占优势

2017-12-29 09:40:41 195

原创 String、StringBuffer与StringBuilder之间区别

1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String2.String String:字符串常量StringBuffer:字符创变量StringBuilder:字符创变量3.StringBuilder与 StringBufferStringBuilder:线程非安全的StringBuff

2017-12-28 16:49:55 160

原创 android的WebView、WebViewClient、WebChromeClient的关系

在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient帮助WebView处理各种通知、请求事件的,具体来说包括:onLoadResource、onPageStart、onPageFinish、onReceiveError、onReceivedHttpA

2017-12-28 15:37:13 501

原创 java四种线程池的使用

Java通过Executors提供四种线程池,分别为:1.newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。package test;import java.util.concurrent.

2017-12-28 09:53:50 147

转载 HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除

2017-12-27 18:23:17 158

原创 用Android Studio提交项目到github的几个问题

一、怎么用AS提交项目到Github?主要参考了这篇文章:http://web.gxzj.com.cn/News.aspx?id=325505有一些详细说明和补充如下:下载Git 地址:http://www.git-scm.com/download/win配置Git环境变量:在path中加入Git安装地址中的bin目录和git-core目录。我的是:C:\Program Files

2017-12-26 09:52:58 190

原创 Android项目版本控制提交忽略表

我们在Android Studio中创建项目后往往会使用版本控制来控制代码,但是项目中哪些文件该提交到版本控制呢?其实,Android Studio自己已经帮你做好了!在Project和app下各有一个.gitignore文件,如下:Project下的忽略文件:*.iml.gradle/local.properties/.idea/workspace.xml

2017-12-26 09:47:59 260

原创 Android Studio优化

修改android-studio/bin/studio.vmoptions studio64.vmoptions 两个文件的以下属性就可以了-Xms2048m-Xmx2048m-XX:MaxPermSize=2048m-XX:ReservedCodeCacheSize=1024m

2017-12-26 09:41:50 147

原创 gradle编译出现OutOfMemoryError

出现错误OutOfMemoryError: Java heap space gradle compiling android org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_91\bin\java.exe'' finished with n

2017-12-26 09:39:50 4200 2

原创 Android Studio下,如何解决:java-Android问题,为什么我已经写了permission可还是说我没有权限

问题描述Android问题,为什么我已经写了permission可还是说我没有权限package="com.yjf.csu.readcontactpeople">    这时我在manifest中加的权限    Cursor cursor = contentResolver.query(uri, new String[]{"contact_id"}, null,

2017-12-26 09:38:06 1163

原创 Android系统更改状态栏字体颜色

随着时代的发展,Android的状态栏都不是乌黑一片了,在Android4.4之后我们可以修改状态栏的颜色或者让我们自己的View延伸到状态栏下面。我们可以进行更多的定制化了,然而有的时候我们使用的是淡色的颜色比如白色,由于状态栏上面的文字为白色,这样的话状态栏上面的文字就无法看清了。因此本文提供一些解决方案,可以是MIUI6+,Flyme4+,Android6.0+支持切换状态栏的文字颜色为暗色

2017-12-26 09:34:43 9267 1

原创 Android Studio下添加assets目录

在Android Studio中添加assets目录,目录的位置在XXX\src\main\assetsXX代表你的项目的路径,assets放在src\main目录下。 这个位置可以通过XXX.iml  XXX代表自己的项目名,其中有设置assets的目录,设置如下

2017-12-26 09:33:16 426

原创 Android Studio 报 aapt.exe'' finished with non-zero exit value 1

processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'E:\androidstadio\sdk\build-tools\23.0.3\aapt.exe'' finished with

2017-12-26 09:32:33 297

原创 Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'

今天添加fresco的gradle引发了如下的错误:Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder.packaging.Du

2017-12-26 09:30:39 172

原创 gradle多工程打包冲突问题

将一个项目由eclipse转android studio时,由于该项目引用lib多达6、7个,一上手就碰到了引用包冲突的问题,问题描述如下UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice

2017-12-26 09:26:56 804

原创 Android Studio 自动生成 serialVersionUID

File => Settings... => Inspections => Serialization issues => Serializable class without 'serialVersionUID'找不到直接在Preference中直接搜索Serialization issues!直接Alt+enter直接就提示了!

2017-12-26 09:25:43 162

原创 Android的Looper和Handler和HandlerThread

Handler相信大家并不陌生,我们在主线程new一个这样的Handler,然后在异步操作的时候,我们需要刷新UI,这个时候,我们通常会用到handler.post()或者handler.sendMessage()。那么,对于Looper和HandlerThread比较陌生的同学,先看一下下面的实例吧。我们在oncreate方法中new一个子线程,然后再子线程new一个handle

2017-12-25 18:07:12 247

原创 Android自动化打包之如何快速生成渠道包

如果渠道不是很多的情况下,我们一般使用gradle进行渠道打包。但是有种情况就是一旦渠道有上百个的时候,gradle的打包速度将会变得很慢,今天看了一篇文章,来自美团技术团队的分享,地址如下:https://tech.meituan.com/mt-apk-packaging.html在这里,我主要是想讲一下,这种快速生成渠道包的思路。大家都知道,我们生成的apk,其实是

2017-12-24 18:13:12 1859

原创 实时监测Android内存泄漏的工具-LeakCanary

对于android内存泄漏问题,相信很多开发者都不会感到陌生,而在优化性能方面,内存泄漏,特别是在比较大的项目里面,由于多人协作开发,往往比较难定位到。这里推荐一个开源工具,LeakCanary,来自square公司出品,可以帮助你实施监测内存泄漏问题。那么,如何使用它呢?下面让看下如何把它接入进去。1.build.gradle文件添加如下:dependencies {

2017-12-24 16:44:37 294

转载 帮你深入理解OAuth2.0协议

1. 引言如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间。是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题。豪车一般配备两种钥匙:主钥匙和泊车钥匙。当你到酒店后,只需要将泊车钥匙交给服务生,停车的事情就由服务生去处理。与主钥匙相比,这种泊车钥匙的使用功能是受限制的:它只能启动发动机并让车行驶一段有限的距离,可以锁车,但无法打开后备箱,无法使用车内

2017-12-24 16:20:15 516

转载 Android安全研究经验谈

安全研究做什么?从攻击角度举例,可以是:对某个模块进行漏洞挖掘的方法,对某个漏洞进行利用的技术,通过逆向工程破解程序、解密数据,对系统或应用进行感染、劫持等破坏安全性的攻击技术等。而防御上则是:查杀恶意应用的方法,检测和防范漏洞利用,为增强系统和第三方应用的安全性提供解决方案等。当然,通常情况下攻与防的概念是相对模糊的,一种安全技术往往在攻防两端都适用,也许更值得留意的是一

2017-12-24 15:34:20 1030

原创 Android Studio下的项目如何加入jni(NDKbuild)

这里介绍一下如果在原有的项目上加入jni的方法。因为NDKBuild我们之前在eclipse上面使用过,所以对它比较熟悉,这里就只说下NDKbuild。升级到了AndroidStudio3.0.1之后,支持的buildToolsVersion 也是比较高的版本26.0.2。而gradle的版本是3.0.1。那么,如果我们手头上有C或者C++的代码,我们怎么加入到项目里面呢?1.创建引用

2017-12-24 00:34:16 1153

原创 android之Animation自定义动画轨迹

以下面一个实例来说说这个Animation自定义动画怎么使用。图中,我们可以看出,小球是带有轨迹的向下滚动,而且,轨道与轨道之间的拼接是用二阶贝塞尔曲线实现的,小球模拟重力效果,加速度的向下滚。那么,这里有疑问的地方是,如果模拟这个场景去实现呢?首先我们想到了用android的动画Animation。我们对Animation进行了深究,发现有一个ObjectAnimator的类

2017-12-22 11:15:09 3154

空空如也

空空如也

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

TA关注的人

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