<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[枫凯]]></title><description><![CDATA[新的起点, 重心出发,坚持一步一个脚印]]></description><link>https://blog.youkuaiyun.com/kaikevin01</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kaikevin01]]></copyright><item><title><![CDATA[Git的基本用法]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/80029174</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/80029174</guid><author>kaikevin01</author><pubDate>Sat, 21 Apr 2018 14:43:41 +0800</pubDate><description><![CDATA[现在git的使用，越来越普遍，逐渐的替代svn。git某些指令，因为在项目中不是经常使用，所以在用到的时候，又怕由于用错而导致提交或修改错误，所以，日常工作中，建议一定要提前掌握好，并对git做全面的学习，一防需要用的时候不会感觉到生疏。针对git的使用教程，网上特别的多，五花百门，在这里，我推荐的是，通过实战的操作，再结合git的指令，做一个全方面的体验。当安装完git之后，你的右键会多了一个g...]]></description><category></category></item><item><title><![CDATA[虚拟导航栏的完美解决方案]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/79565675</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/79565675</guid><author>kaikevin01</author><pubDate>Thu, 15 Mar 2018 11:44:28 +0800</pubDate><description><![CDATA[问题：android高版本的手机，已经支持全面屏，还有虚拟导航栏，即取代了低版本的物理按键（例如：home，back，window history键）。由于虚拟导航栏占用了屏幕的高度，而鉴于各厂商的手机rom定制化，往往采用原生的方法无法应用。于是，界面出现了各种问题。解决方案：这其实也可认为是系统修复性的方案。如下：1.添加工具类AndroidBug54971Workaroundpackage ...]]></description><category></category></item><item><title><![CDATA[Android Studio的开发视图中，顶部工具栏不见了如何设置回来]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/79077963</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/79077963</guid><author>kaikevin01</author><pubDate>Tue, 16 Jan 2018 18:51:02 +0800</pubDate><description><![CDATA[前段时间开发过程中不知道按了什么按钮，导致Studio 开发视图中，顶部的工具栏不见了。

变成了如下图的这种样式：






经过一番百度查找，终于找到了，将工具栏设置回来的方法:

设置方法如下面几张图所示：

  1.单击菜单栏中，从左侧数的第三个选项——view选项，然后选中ToolBar选项，单击，如下图




2.最后Sttudio视图中的工具栏]]></description><category></category></item><item><title><![CDATA[gradle配置精简apk包]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/79003728</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/79003728</guid><author>kaikevin01</author><pubDate>Mon, 08 Jan 2018 15:49:25 +0800</pubDate><description><![CDATA[官网比较详细的说明：
https://developer.android.com/studio/build/configure-apk-splits.html#configure-abi-split


android {
  ...
  splits {

    // Configures multiple APKs based on ABI.
    abi {

      // ]]></description><category></category></item><item><title><![CDATA[cmake在gradle上的配置]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/79003169</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/79003169</guid><author>kaikevin01</author><pubDate>Mon, 08 Jan 2018 15:38:33 +0800</pubDate><description><![CDATA[想了解更全面的配置说明可以看官网
https://developer.android.com/studio/projects/add-native-code.html
1.指定ABI
android {
  ...
  defaultConfig {
    ...
    externalNativeBuild {
      cmake {...}
      // or ndkBuil]]></description><category></category></item><item><title><![CDATA[一个奇怪的指针问题，指针遍历如何结束？]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78993932</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78993932</guid><author>kaikevin01</author><pubDate>Sun, 07 Jan 2018 12:23:20 +0800</pubDate><description><![CDATA[首先引入一段代码，const char * 如何赋值给char *

const char *expr = "goodidea";
char *buf = new char[strlen(expr)+1];
strcpy(buf, expr);
之前一直搞不懂，为什么strlen（expr） + 1还要加1。发现不加1，或者减1，都不会报错，结果都是一样没报错。

后来在写项目的时候遇到]]></description><category></category></item><item><title><![CDATA[java中的char类型]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78977647</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78977647</guid><author>kaikevin01</author><pubDate>Fri, 05 Jan 2018 09:49:29 +0800</pubDate><description><![CDATA[一：char的初始化

char是Java中的保留字，与别的语言不同的是，char在Java中是16位的，因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中，是从0~127的。

Java中使用Unicode的原因是，Java的Applet允许全世界范围内运行，那它就需要一种可以表述人类所有语言的字符编码。Unicode。但是English，Spanish，Ge]]></description><category></category></item><item><title><![CDATA[JAVA中byte类型的介绍]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78976763</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78976763</guid><author>kaikevin01</author><pubDate>Fri, 05 Jan 2018 00:03:52 +0800</pubDate><description><![CDATA[Java也提供了一个byte数据类型，并且是基本类型。java byte是做为最小的数字来处理的，因此它的值域被定义为-128~127，也就是signed
 byte。

不幸的是，byte的用作计数的时间远少于用表达基本内存单元的时间。比如从stream里读入一个双字节字符，我们先收到2个byte。为了把byte转换成适当的形式，需要对byte值做一些比较，比如判断字符集要比较其是否在某个]]></description><category></category></item><item><title><![CDATA[java与C语言的数据类型对应]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78976642</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78976642</guid><author>kaikevin01</author><pubDate>Thu, 04 Jan 2018 23:36:23 +0800</pubDate><description><![CDATA[Java和C数据类型的对应表如下：





Java 类型



C 类型



原生表现





 boolean



 int



 32位整数 (可定制)





 byte



 char 



 8位整数





 char



 wchar_t



 平台]]></description><category></category></item><item><title><![CDATA[DES算法的几种加密模式和填补方式]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78973024</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78973024</guid><author>kaikevin01</author><pubDate>Thu, 04 Jan 2018 17:01:27 +0800</pubDate><description><![CDATA[DES加密
DES是一种对称加密(Data Encryption Standard)算法。于1977年得到美国政府的正式许可，是一种用56位密钥来加密64位数据的方法。一般密码长度为8个字节，其中56位加密密钥，每个第8位都用作奇偶校验。 

DES算法一般有两个关键点，第一个是加密算法，第二个是数据补位。

加密算法常见的有ECB模式和CBC模式：

ECB模式：电子密本方式，这是]]></description><category></category></item><item><title><![CDATA[android studio如何编写jni项目实例]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78960412</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78960412</guid><author>kaikevin01</author><pubDate>Wed, 03 Jan 2018 14:20:21 +0800</pubDate><description><![CDATA[android studio自从采用了cmake的方式来开发jni相关的项目，方便了不少，网上有很多教程。我这里讲下如何创建实例。
1.创建项目


记得勾上support C++和 Exceptions support 和 runtime Type infomation support。此时会默认生成一个native的方法。这里讲下修改的地方。
2.创建一个独立的native方法的类]]></description><category></category></item><item><title><![CDATA[Android/IOS弱网络测试设置]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78945549</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78945549</guid><author>kaikevin01</author><pubDate>Mon, 01 Jan 2018 14:37:17 +0800</pubDate><description><![CDATA[模拟限速

开启低速网络环境： 
Rules → Performances → Simulate Modem Speeds

自己定义Modem Speeds 究竟要多快： 
Rules → customers -> 查找 m_SimulateModem
    if (m_SimulateModem) {
        // Delay sends by 300ms per KB]]></description><category></category></item><item><title><![CDATA[HTTP1.0 HTTP 1.1 HTTP 2.0主要区别]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78939273</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78939273</guid><author>kaikevin01</author><pubDate>Sat, 30 Dec 2017 20:38:29 +0800</pubDate><description><![CDATA[1.长连接

HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接，而HTTP1.1默认支持长连接。


HTTP是基于TCP/IP协议的，创建一个TCP连接是需要经过三次握手的,有一定的开销，如果每次通讯都要重新建立连接的话，对性能有影响。因此最好能维持一个长连接，可以用个长连接来发多个请求。


2.节约带宽

HTTP 1.1支持只发送heade]]></description><category></category></item><item><title><![CDATA[5个Android开发中比较常见的内存泄漏问题及解决办法]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78938152</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78938152</guid><author>kaikevin01</author><pubDate>Sat, 30 Dec 2017 16:47:24 +0800</pubDate><description><![CDATA[在Android开发中，内存泄漏是比较常见的问题，有过一些Android编程经历的童鞋应该都遇到过，但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢?


在Android程序开发中，当一个对象已经不需要再使用了，本该被回收时，而另外一个正在使用的对象持有它的引用从而导致它不能被回收，这就导致本该被回收的对象不能被回收而停留在堆内存中，内存泄漏就产生了。

内存泄漏有什么影响呢?它是造成]]></description><category></category></item><item><title><![CDATA[TCP建立连接的三次握手过程]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78937915</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78937915</guid><author>kaikevin01</author><pubDate>Sat, 30 Dec 2017 16:07:55 +0800</pubDate><description><![CDATA[TCP是因特网中的传输层协议，使用三次握手协议建立连接，下面是TCP建立连接的全过程。




上图画出了TCP建立连接的过程。假定主机A运行的是TCP客户程序，B运行的是TCP服务器程序。最初两端的TCP进程都处于CLOSED状态。图中在主机下面的是TCP进程所处的状态。A是主动打开连接，B是被动打开连接。

　　B的TCP服务器进程先创建传输控制模块TCB，准备接受客户进程的连接]]></description><category></category></item><item><title><![CDATA[handler机制的原理]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78937770</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78937770</guid><author>kaikevin01</author><pubDate>Sat, 30 Dec 2017 15:46:15 +0800</pubDate><description><![CDATA[andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。

1)Looper: 一个线程可以产生一个Looper对象，由它来管理此线程里的MessageQueue(消息队列)。 
2)Handler: 你可以构造Handler对象来与Looper沟通，以便pus]]></description><category></category></item><item><title><![CDATA[android的事件处理和传递机制实例]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78933376</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78933376</guid><author>kaikevin01</author><pubDate>Sat, 30 Dec 2017 14:58:24 +0800</pubDate><description><![CDATA[android的事件处理机制，相信很多人一开始都比较难懂，如果单单在官网上看流程图，你肯定会很快忘记。那么，遇到比较难懂的知识点，你会怎么做呢？
一是看源码，然后就是写实例加深理解。我选择后者，哈哈，我这里只是想说，如果快速的带大家了解事件处理和传递机制。
那么废话不多说，先把代码贴出来，不懂的地方，大家不妨手把手写代码，多试试。
1.新建一个activity，调出dispatchTouch]]></description><category></category></item><item><title><![CDATA[Java中ArrayList和LinkedList区别]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78928257</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78928257</guid><author>kaikevin01</author><pubDate>Fri, 29 Dec 2017 09:40:41 +0800</pubDate><description><![CDATA[一般大家都知道ArrayList和LinkedList的大致区别： 
     1.ArrayList是实现了基于动态数组的数据结构，LinkedList基于链表的数据结构。 
     2.对于随机访问get和set，ArrayList觉得优于LinkedList，因为LinkedList要移动指针。 

     3.对于新增和删除操作add和remove，LinedList比较占优势]]></description><category></category></item><item><title><![CDATA[String、StringBuffer与StringBuilder之间区别]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78923985</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78923985</guid><author>kaikevin01</author><pubDate>Thu, 28 Dec 2017 16:49:55 +0800</pubDate><description><![CDATA[1.三者在执行速度方面的比较：StringBuilder >  StringBuffer  >  String


2.String 

String：字符串常量
StringBuffer：字符创变量
StringBuilder：字符创变量


3.StringBuilder与 StringBuffer

StringBuilder：线程非安全的

StringBuff]]></description><category></category></item><item><title><![CDATA[android的WebView、WebViewClient、WebChromeClient的关系]]></title><link>https://blog.youkuaiyun.com/kaikevin01/article/details/78922755</link><guid>https://blog.youkuaiyun.com/kaikevin01/article/details/78922755</guid><author>kaikevin01</author><pubDate>Thu, 28 Dec 2017 15:37:13 +0800</pubDate><description><![CDATA[在WebView的设计中，不是什么事都要WebView类干的，有些杂事是分给其他人的，这样WebView专心干好自己的解析、渲染工作就行了。




WebViewClient

帮助WebView处理各种通知、请求事件的，具体来说包括：

onLoadResource、onPageStart、onPageFinish、onReceiveError、onReceivedHttpA]]></description><category></category></item></channel></rss>