<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhouguizhi]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/coderinchina</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; coderinchina]]></copyright><item><title><![CDATA[android jetpack之LifeCycle]]></title><link>https://blog.csdn.net/coderinchina/article/details/108504213</link><guid>https://blog.csdn.net/coderinchina/article/details/108504213</guid><author>coderinchina</author><pubDate>Wed, 09 Sep 2020 23:07:14 +0800</pubDate><description><![CDATA[jetpack是一整套google为开发者提供的开发库,里面包含很多组件,今天学习下LifeCycle

LifeCycle是可以感知生命周期型组件可执行操作来响应另一个组件（如 Activity 和 Fragment）的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码，这样的代码更易于维护

有了LifeCycle像有些内存泄露问题就可以解决了,比如屏幕旋转后数据会有异常,使用了LifeCycle就不会有问题了,

现在来看看它的使用

定义一个类实现LifecycleObserver
]]></description><category></category></item><item><title><![CDATA[Java 类的主动使用和被动使用]]></title><link>https://blog.csdn.net/coderinchina/article/details/107023319</link><guid>https://blog.csdn.net/coderinchina/article/details/107023319</guid><author>coderinchina</author><pubDate>Mon, 29 Jun 2020 16:38:32 +0800</pubDate><description><![CDATA[Java程序对类的使用方式分为：主动使用和被动使用

主动使用，又分为七种情况:

1:创建类的实例

2:访问某个类或者接口的静态变量,或者对该静态变量赋值

3:反射( 比如:Class.forName(“java.lang.String)))

4:初始化一个类的子类

5:java虚拟机启动时被标明为启动类的类

6:java 7开始提供的动态语言支持



除了以上七种情况,其他使用Java类的方式都被看作是对类的被动使用都不会导致类的初始化
...]]></description><category></category></item><item><title><![CDATA[JVM 加载.class文件的方式]]></title><link>https://blog.csdn.net/coderinchina/article/details/107014732</link><guid>https://blog.csdn.net/coderinchina/article/details/107014732</guid><author>coderinchina</author><pubDate>Mon, 29 Jun 2020 10:14:55 +0800</pubDate><description><![CDATA[加载.class文件方式

1:从本地系统中直接加入

2:通过网络获取,典型的是web applet

3:从zip压缩包读取,成为日后jar ,war格式的基础

4:运行时计算生成,使用最多的是动态代理技术

5:由其他文件生成,典型是jsp应用

6:从专有数据库中读取,比较少见

7:从加密文件中读取,典型的是防class文件被反编译保护措施
...]]></description><category></category></item><item><title><![CDATA[jvm的分类]]></title><link>https://blog.csdn.net/coderinchina/article/details/106942940</link><guid>https://blog.csdn.net/coderinchina/article/details/106942940</guid><author>coderinchina</author><pubDate>Sun, 28 Jun 2020 20:26:35 +0800</pubDate><description><![CDATA[2020太难了,我前ios同事失业2个多月还没找到工作,面试机会都很少,所以一定要沉淀下技术,jvm其实离我们做Android的很远,但是又很近,因为像热修复或者Java垃圾回收机制,都会用到,但是相对来说Java后台的人是比学的,但是把自己的知识体系扩展点也挺好,

Java从1995到今天已有25年历史了,一门语言25年已经发展很好了,现在jdk版本是13还是14了,但是开发中还是使用jdk8，因为它稳定

jvm虚拟机也经历了很多,肯定是越来越好，指的是性能方面,学习下jvm的发展历程也挺有意思,

]]></description><category></category></item><item><title><![CDATA[面试题:创建线程有几种方式]]></title><link>https://blog.csdn.net/coderinchina/article/details/106682536</link><guid>https://blog.csdn.net/coderinchina/article/details/106682536</guid><author>coderinchina</author><pubDate>Thu, 11 Jun 2020 11:08:31 +0800</pubDate><description><![CDATA[网上有说3或者4种,他们说的4种或者3种是把什么线程池也放进去了,今天我们就来看下oracle官网的描述,

Athreadis a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

Every thread has a priority. Threads with hig..]]></description><category></category></item><item><title><![CDATA[剑指offer: 输入n，求斐波那契数列的第n项值]]></title><link>https://blog.csdn.net/coderinchina/article/details/106507026</link><guid>https://blog.csdn.net/coderinchina/article/details/106507026</guid><author>coderinchina</author><pubDate>Tue, 02 Jun 2020 22:56:49 +0800</pubDate><description><![CDATA[首先要知道什么是斐波那契数列,比如1,1,2,3,5,8,13,21,34...比如输入n=3,那么求出的值就是2，所以题目就是，输入n，求斐波那契数列的第n项值

分析

斐波那契就是当前的是它之前-1的数+它之前-2的数的和, 使用一个表达式就是f(n)=f(n-1)+f(n-2),所以第一种求解方案可以使用递归的方式,但是这方式不推荐使用,性能不好,也就是说空间复杂度比较高



递归求解


package com.yaqi;

public class FindValue {
    publi.]]></description><category></category></item><item><title><![CDATA[面试题:数组和链表的区别]]></title><link>https://blog.csdn.net/coderinchina/article/details/106492773</link><guid>https://blog.csdn.net/coderinchina/article/details/106492773</guid><author>coderinchina</author><pubDate>Tue, 02 Jun 2020 11:34:38 +0800</pubDate><description><![CDATA[数组:是将元素在内存中是连续存储的；

它的优点：因为数据是连续存储的，内存地址连续，所以在查找数据的时候效率比较高；

它的缺点：在存储之前，我们需要申请一块连续的内存空间，并且在编译的时候就必须确定好它的空间的大小。在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的，当数据量比较大的时候，有可能会出现越界的情况，数据比较小的时候，又有可能会浪费掉内存空间。在改变数据个数时，增加、插入、删除数据效率比较低。



链表：是动态申请内存空间，不需要像数组需要提前申请好内存的大小，链表只需在用的.]]></description><category></category></item><item><title><![CDATA[剑指offer:用二个栈实现队列]]></title><link>https://blog.csdn.net/coderinchina/article/details/106489494</link><guid>https://blog.csdn.net/coderinchina/article/details/106489494</guid><author>coderinchina</author><pubDate>Tue, 02 Jun 2020 10:39:30 +0800</pubDate><description><![CDATA[题目:用两个栈实现一个队列。队列的声明如下，请实现它的两个函数appendTail 和
deleteHead，分别完成在队列尾部插入结点和在队列头部删除结点的功能

首先分析栈的特点和队列的特点,才能把这个题做出来,这个题相对来说还是算简单的，

栈的特点:先进后出

对列的特点:先进先出

一个栈负责添加数据,然后把这添加的数据放到另一个栈中,就实现了队列的效果，比如在一个栈中添加数据 1,2,3 然后再弹出栈后把数据添加到另一个栈中,那么这个栈中的数据就是3,2,1 然后再从这个栈中取出数据,比如1是.]]></description><category></category></item><item><title><![CDATA[Java面试题:判断一个数是不是2的几次幂]]></title><link>https://blog.csdn.net/coderinchina/article/details/106364981</link><guid>https://blog.csdn.net/coderinchina/article/details/106364981</guid><author>coderinchina</author><pubDate>Tue, 26 May 2020 21:11:17 +0800</pubDate><description><![CDATA[第一种思路就是拿2*2*2...*2是否等于某个值,这样也可以判断


  public static boolean isPowerOfTwo(int n) {
        if(n&lt;=0){
            return false;
        }
        int temp = 1;
        while (temp&lt;=n){
            if(temp==n){
                return true;
            }]]></description><category></category></item><item><title><![CDATA[一道字符串面试题]]></title><link>https://blog.csdn.net/coderinchina/article/details/106357282</link><guid>https://blog.csdn.net/coderinchina/article/details/106357282</guid><author>coderinchina</author><pubDate>Tue, 26 May 2020 15:40:49 +0800</pubDate><description><![CDATA[题目:输入“aaaaabbbbccc”,输出“a5b4c3”

我所想到的是用map去实现,key存字符,value存出现的次数,代码如下：


    public static void main(String[] args) {
        String str = "aaaaabbbbccc";
        Map&lt;Character, Integer&gt; map = new HashMap&lt;&gt;();
        for(int i=0;i&lt;str.lengt]]></description><category></category></item><item><title><![CDATA[java 二个值交换的几种方式]]></title><link>https://blog.csdn.net/coderinchina/article/details/106355802</link><guid>https://blog.csdn.net/coderinchina/article/details/106355802</guid><author>coderinchina</author><pubDate>Tue, 26 May 2020 14:53:09 +0800</pubDate><description><![CDATA[比如:a=4,b=5,在不引用第三个变量时实现两者值交换

这个面试题可能会到问到,在牛客网上就遇到这题,今天拿出来记录下,怕忘记

真正的做法有三种,依次实现下

第一种:最容易想到的方法,就是引用一个中间变量


  int a = 4;
  int b = 5;
  int temp = a;
  a = b;
  b = temp;

第二种:不使用第三方变量

分析,我们把b-a = 1,把这个1赋值给a,那么b-a就是等于4了,

b=b-a=4

现在把b变成了4,然后我们只要把a变成5就可以]]></description><category></category></item><item><title><![CDATA[LeetCode -Reverse integer]]></title><link>https://blog.csdn.net/coderinchina/article/details/105921271</link><guid>https://blog.csdn.net/coderinchina/article/details/105921271</guid><author>coderinchina</author><pubDate>Fri, 15 May 2020 19:09:01 +0800</pubDate><description><![CDATA[Reverse integer就是数字翻转问题,比如:

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21


]]></description><category></category></item><item><title><![CDATA[LeetCode -Two Sum]]></title><link>https://blog.csdn.net/coderinchina/article/details/105919306</link><guid>https://blog.csdn.net/coderinchina/article/details/105919306</guid><author>coderinchina</author><pubDate>Mon, 04 May 2020 17:23:26 +0800</pubDate><description><![CDATA[算法是每个程序员的必修课,以前也认为做个普通的开发,要懂什么算法和数据结构,现在发现好点的公司算法和数据结构都是必须要问的,而且多学算法对自己的思维扩展是有很大的提高,再说现在求职这么难,不是4 5年前那个美好的时候了,所以要每天学点算法积累下,当然不太可能做到算法工程师那种了

今天的题目是求数组中要求二个数组相加等于某个数,然后求出这二个值的下标，这题还是算简单的

题目描述

给定一个整数数...]]></description><category></category></item><item><title><![CDATA[斐波那契]]></title><link>https://blog.csdn.net/coderinchina/article/details/105916532</link><guid>https://blog.csdn.net/coderinchina/article/details/105916532</guid><author>coderinchina</author><pubDate>Mon, 04 May 2020 13:34:58 +0800</pubDate><description><![CDATA[首先引用百度百科中对斐波那契的描述

斐波那契数列（Fibonacci sequence），又称黄金分割数列、因数学家列昂纳多·斐波那契（Leonardoda Fibonacci）以兔子繁殖为例子而引入，故又称为“兔子数列”，指的是这样一个数列：1、1、2、3、5、8、13、21、34、……在数学上，斐波那契数列以如下被以递推的方法定义：F(1)=1，F(2)=1,F(n)=F(n - 1)+F...]]></description><category></category></item><item><title><![CDATA[数组实现队列]]></title><link>https://blog.csdn.net/coderinchina/article/details/105911918</link><guid>https://blog.csdn.net/coderinchina/article/details/105911918</guid><author>coderinchina</author><pubDate>Mon, 04 May 2020 01:03:04 +0800</pubDate><description><![CDATA[队列是先进先出的线性结构,我们Java中也提供了Queue等一系列子类,在线程池中会有几个常用的队列,今天就使用数组来实现队列的基本操作


package com.zgz.search;

import java.util.Arrays;

public class MyQueue {
    private int[] arr;

    public MyQueue() {
        ...]]></description><category></category></item><item><title><![CDATA[数组实现栈]]></title><link>https://blog.csdn.net/coderinchina/article/details/105911776</link><guid>https://blog.csdn.net/coderinchina/article/details/105911776</guid><author>coderinchina</author><pubDate>Mon, 04 May 2020 00:34:08 +0800</pubDate><description><![CDATA[栈也是数据结构中的一种,是一种先进后出结构,代码如下


package com.zgz.search;
public class MyStack {
   private int[] arr;
   public MyStack(){
       arr = new int[0];
   }
    /**
     * 压入元素
     */
   public void push(int...]]></description><category></category></item><item><title><![CDATA[二分法查找]]></title><link>https://blog.csdn.net/coderinchina/article/details/105910967</link><guid>https://blog.csdn.net/coderinchina/article/details/105910967</guid><author>coderinchina</author><pubDate>Sun, 03 May 2020 23:44:14 +0800</pubDate><description><![CDATA[二分法查找的前提必须数组是经过排序的,这是必须得条件,否则就不能用二分法查找了,

二分法查找就是拿查找的值在数组的中间进行对比,如果是大于这个中间值,说明这个查找的值在后面,那么就从后面的一半中查找,小于就是在前面的一半查找,思路也不复杂,请看代码


package com.zgz.search;
/**
 * 二分法查找必须是建立在数组已经是排序的情况下了
 */
public class ...]]></description><category></category></item><item><title><![CDATA[线性查找]]></title><link>https://blog.csdn.net/coderinchina/article/details/105910547</link><guid>https://blog.csdn.net/coderinchina/article/details/105910547</guid><author>coderinchina</author><pubDate>Sun, 03 May 2020 23:21:18 +0800</pubDate><description><![CDATA[线性查找又称顺序查找，是一种最简单的查找方法，它的基本思想是从第一个记录开始，逐个比较记录的关键字，直到和给定的K值相等，则查找成功；若比较结果与文件中n个记录的关键字都不等，则查找失败

这个非常简单,没啥好分析的,直接上代码


package com.zgz.search;
/**
 * 线性查找是最简单的查找方式
 * 就是和数组或者集合中的数据从开始一一对比
 */
public cla...]]></description><category></category></item><item><title><![CDATA[java 外观设计模式]]></title><link>https://blog.csdn.net/coderinchina/article/details/105897725</link><guid>https://blog.csdn.net/coderinchina/article/details/105897725</guid><author>coderinchina</author><pubDate>Sun, 03 May 2020 01:01:47 +0800</pubDate><description><![CDATA[外观模式也叫门面模式,属于结构性模式,外观模式还是比较好理解的,平时使用也比较常见

定义:

外观模式是隐藏了系统的复杂性，能够为子系统中的一组接口提供一个统一的接口

举例

我们做Android图片加载是必不可少的, 当然我们都是使用了第三方的框架,比如glide,图片内存缓存一般是先从内存中找,内存没有然后从本地找,本地再没有就从网络去下载图片,现在用代码来说明,先定义一个缓存的接口


...]]></description><category></category></item><item><title><![CDATA[每日一道面试题:java创建对象有几种方式]]></title><link>https://blog.csdn.net/coderinchina/article/details/105809984</link><guid>https://blog.csdn.net/coderinchina/article/details/105809984</guid><author>coderinchina</author><pubDate>Fri, 01 May 2020 20:35:21 +0800</pubDate><description><![CDATA[每天在github上搜索一道面试题进行复习,扫盲技术点,今天是问Java创建对象有几种方式,可能会说就一种,其实有四种:




]]></description><category></category></item></channel></rss>