<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Grekit_Sun的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Grekit_Sun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Grekit_Sun]]></copyright><item><title><![CDATA[Ubuntu 出现结构需要清理 (structure needs cleaning)]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/128807762</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/128807762</guid><author>Grekit_Sun</author><pubDate>Mon, 30 Jan 2023 19:54:03 +0800</pubDate><description><![CDATA[structure needs cleaning]]></description><category></category></item><item><title><![CDATA[Ubuntu 16.04升级内核到20.04]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/124826853</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/124826853</guid><author>Grekit_Sun</author><pubDate>Tue, 17 May 2022 18:12:46 +0800</pubDate><description><![CDATA[一、首先需要从16.04 → 18.04
sudo mv /etc/apt/sources.list ~/
sudo mv /etc/apt/sources.list.d/*.list ~/

1. 改变源（粘贴下面这一段到终端并运行）
cat &lt;&lt;EOF | sudo tee /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main universe multiverse restrict]]></description><category></category></item><item><title><![CDATA[github拉取代码报：You‘re using an RSA key with SHA-1, which is no longer allowed]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/124042464</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/124042464</guid><author>Grekit_Sun</author><pubDate>Fri, 08 Apr 2022 15:20:28 +0800</pubDate><description><![CDATA[参考：https://docs.github.com/cn/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
解决步骤
在本地生成ssh key
查看各种文档，发现生成ssh key使用的算法是rsa：
ssh-keygen -t rsa -C “123123@qq.com”
1
但是这种方式已经不可用了，生成之后加入到github还是报以上的错误！！！
正]]></description><category></category></item><item><title><![CDATA[自定义View]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/123328890</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/123328890</guid><author>Grekit_Sun</author><pubDate>Mon, 07 Mar 2022 13:59:22 +0800</pubDate><description><![CDATA[1. 自定义View基础
1.1 分类
自定义View的实现方式有以下几种




类型
定义




自定义组合控件
多个控件组合成为一个新的控件，方便多处复用


继承系统View控件
继承自TextView等系统控件，在系统控件的基础功能上进行扩展


继承View
不复用系统控件逻辑，继承View进行功能定义


继承系统ViewGroup
继承自LinearLayout等系统控件，在系统控件的基础功能上进行扩展


继承ViewViewGroup
不复用系统控件逻辑，继承ViewGroup进行功.]]></description><category></category></item><item><title><![CDATA[理解AOP / IOC /DI]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/120833486</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/120833486</guid><author>Grekit_Sun</author><pubDate>Mon, 18 Oct 2021 20:03:15 +0800</pubDate><description><![CDATA[理解Spring的AOP和Ioc/DI就这么简单_浮晓悠羡-优快云博客_aop ioc
]]></description><category></category></item><item><title><![CDATA[Java之什么是JIT （Just In Time）？]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/119344829</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/119344829</guid><author>Grekit_Sun</author><pubDate>Tue, 03 Aug 2021 10:46:51 +0800</pubDate><description><![CDATA[JIT概念
JIT：Just In Time Compiler，一般翻译为即时编译器，这是是针对解释型语言而言的，而且并非虚拟机必须，是一种优化手段，Java的商用虚拟机HotSpot就有这种技术手段，Java虚拟机标准对JIT的存在没有作出任何规范，所以这是虚拟机实现的自定义优化技术。
HotSpot虚拟机的执行引擎在执行Java代码是可以采用【解释执行】和【编译执行】两种方式的，如果采用的是编译执行方式，那么就会使用到JIT，而解释执行就不会使用到JIT，所以，早期说Java是解释型语言，是没有任何问题]]></description><category></category></item><item><title><![CDATA[java +““拼接成字符串 和 String.valueOf()的区别]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/117961088</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/117961088</guid><author>Grekit_Sun</author><pubDate>Wed, 16 Jun 2021 16:22:27 +0800</pubDate><description><![CDATA[使用 + “” 拼接方式，本质上是先将字符串转换为StringBuffer 后在使用append ()方法，而append()方法也是使用的String.valueOf()
使用String.valueOf(),本质上则是使用Object.toString()方法


]]></description><category></category></item><item><title><![CDATA[null.equals引起的空指针]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/117439526</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/117439526</guid><author>Grekit_Sun</author><pubDate>Tue, 01 Jun 2021 11:27:01 +0800</pubDate><description><![CDATA[当我们比较两个参数值是否相等的时候，经常用到equals，但是 偶尔我们会忘记判断非空，例如写出这样的代码：
这样就会引起空指针，正确的写法是，

我们知道java中对equals的定义： 对于任何非空引用值 x，x.equals(null) 都应返回 false。
关于null的理解：
1.null是任何引用类型的默认值，不严格的说是所有object类型的默认值。这对所有变量都是适用的，如成员变量、局部变量、实例变量、静态变量
2.null是任何一个引用类型变量的默认值，在java中你不能使用null引用]]></description><category></category></item><item><title><![CDATA[Activity和Service的交互方式]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116741300</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116741300</guid><author>Grekit_Sun</author><pubDate>Thu, 13 May 2021 10:55:19 +0800</pubDate><description><![CDATA[Activity向Service通信
第一种方式：通过MyBinder方式调用Service方法
步骤

继承Binder 定义中间人对象

BanZhengService
public class BanZhengService extends Service {

    //把我定义的中间人对象返回 
    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }
    //办]]></description><category></category></item><item><title><![CDATA[面试题积累]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116588009</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116588009</guid><author>Grekit_Sun</author><pubDate>Mon, 10 May 2021 10:09:30 +0800</pubDate><description><![CDATA[Java篇
基础
1. 深拷贝和浅拷贝;
2. String 、StringBuffer和StringBuilder;
3. Java 的四大引用方式;
4. 面向对象的特性;
5. 重写和重载;
6. 抽象类和接口;
提高
1. String 长度有限制吗？是多少？

]]></description><category></category></item><item><title><![CDATA[String长度有限制吗？是多少？]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116587056</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/116587056</guid><author>Grekit_Sun</author><pubDate>Mon, 10 May 2021 09:51:50 +0800</pubDate><description><![CDATA[前言
话说Java中String是有长度限制的，听到这里很多人不禁要问，String还有长度限制？是的有，而且在JVM编译中还有规范，而且有的家人们在面试的时候也遇到了，本人就遇到过面试的时候问这个的，而且在之前开发的中也真实地遇到过这个String长度限制的场景（将某固定文件转码成Base64的形式用字符串存储，在运行时需要的时候在转回来，当时文件比较大），那这个规范限制到底是怎么样的，咱们话不多说先䁖䁖去。
String
首先要知道String的长度限制我们就需要知道String是怎么存储字符串的，St]]></description><category></category></item><item><title><![CDATA[Java 枚举类的基本使用]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115668027</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115668027</guid><author>Grekit_Sun</author><pubDate>Tue, 13 Apr 2021 15:02:45 +0800</pubDate><description><![CDATA[枚举（enum）类型是Java 5新增的特性，它是一种新的类型，允许用常量来表示特定的数据片断，而且全部都以类型安全的形式来表示。
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承，所以枚举对象不能再继承其他类（可以实现接口）。
1、常量的使用
在JDK1.5之前，我们定义常量都是：public static fianl…。现在好了，有了枚举，可以把相关的常量分组到一个枚举类型里，而且枚举提供了比常量更多的方法。
package com;
 
public enum Color ]]></description><category></category></item><item><title><![CDATA[精密单点定位技术（PPP）和RTK技术有什么区别]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115550416</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115550416</guid><author>Grekit_Sun</author><pubDate>Fri, 09 Apr 2021 14:45:26 +0800</pubDate><description><![CDATA[首先用通俗的话来说，RTK是先架设一个基站，基站把自己的误差是多少告诉我，我再用这个误差项去消除自己移动站的误差。而PPP不用我们自己架设基站，已经有一些基础的基站，通过卫星发送的数据，把误差分离处理后告知了卫星，卫星做了误差的消除后再给我们定位信息。
以下是一些学术的概念：
​	RTK技术（实时动态载波相位差分技术）：基准站通过数据链将其观测值和测站坐标信息一起传送给移动站。移动站不仅通过数据链接收来自基准站的数据，还要采集GPS观测数据，并在系统内组成差分观测值进行实时处理，同时给出厘米级定位结果。
​]]></description><category></category></item><item><title><![CDATA[Linux下的tar压缩解压缩命令详解]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115523573</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115523573</guid><author>Grekit_Sun</author><pubDate>Thu, 08 Apr 2021 16:15:43 +0800</pubDate><description><![CDATA[tar
-c: 建立压缩档案
-x：解压
-t：查看内容
-r：向压缩归档文件末尾追加文件
-u：更新原压缩包中的文件
这五个是独立的命令，压缩解压都要用到其中一个，可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z：有gzip属性的
-j：有bz2属性的
-Z：有compress属性的
-v：显示所有过程
-O：将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字，切记，这个参数是最后一个参数，后面只能接档案名。
# tar -cf all.tar *.]]></description><category></category></item><item><title><![CDATA[华为JDK镜像地址]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115523361</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115523361</guid><author>Grekit_Sun</author><pubDate>Thu, 08 Apr 2021 16:09:50 +0800</pubDate><description><![CDATA[https://mirrors.huaweicloud.com/java/jdk/

]]></description><category></category></item><item><title><![CDATA[多线程并发变量问题]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115370353</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115370353</guid><author>Grekit_Sun</author><pubDate>Thu, 01 Apr 2021 11:33:18 +0800</pubDate><description><![CDATA[背景
​	在Gnss功耗优化的项目中我们需要给其他模块提供一个接口，即我们Imp类中的功耗信息，但是我们功耗信息会在每次上传之后就进行了删除操作，因此就出现了多线程并发操作变量的情况，至此记录如下;
情景再现
​	我模拟了一下项目中会出现的情况代码如下：
public static List&lt;Integer&gt; list = new ArrayList();

    public static void main(String[] args) {
        for (int i = 0; ]]></description><category></category></item><item><title><![CDATA[Java多线程并发去调用一个类的静态方法，会有问题吗？]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115367441</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115367441</guid><author>Grekit_Sun</author><pubDate>Thu, 01 Apr 2021 10:00:50 +0800</pubDate><description><![CDATA[总的结论：java是线程安全的，即对任何方法（包括静态方法）都可以不考虑线程冲突，但有一个前提，就是不能存在全局变量。如果存在全局变量，则需要使用同步机制。
如下通过一组对比例子从头讲解：
在多线程中使用静态方法会发生什么事？也就是说多线程访问同一个类的static静态方法会发生什么事？是否会发生线程安全问题？
public class Test {
    public static void operation(){
        // ... do something
    }
}

事实证明只要]]></description><category></category></item><item><title><![CDATA[Linux定时删除文件]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115355572</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115355572</guid><author>Grekit_Sun</author><pubDate>Wed, 31 Mar 2021 17:18:51 +0800</pubDate><description><![CDATA[[root@ebs-46753 ~]# vi /etc/init.d/delete.sh
内容:
#!/bin/bash
dir=/upload/file/images/login/qrcode    //要删除文件的文件夹路径
files=`ls ${dir}`
for file in $files
do
if [ -e ${dir}/${file} ];then
rm -f ${dir}/${file}
fi
done

给予可执行权限 :
[root@ebs-46753 ~]# chmod 755 /]]></description><category></category></item><item><title><![CDATA[一个使用unix domain socket进行IPC的小例子]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115348299</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115348299</guid><author>Grekit_Sun</author><pubDate>Wed, 31 Mar 2021 13:34:58 +0800</pubDate><description><![CDATA[https://cnodejs.org/topic/5ae1f5da39a81e4548f45741

]]></description><category></category></item><item><title><![CDATA[gradle安装]]></title><link>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115201362</link><guid>https://blog.youkuaiyun.com/Grekit_Sun/article/details/115201362</guid><author>Grekit_Sun</author><pubDate>Thu, 25 Mar 2021 10:55:14 +0800</pubDate><description><![CDATA[Gradle是一个主要用于Java项目的通用构建工具。它结合了Ant和Maven的最佳功能。与使用XML进行脚本编写的前辈不同，Gradle使用Groovy，这是一种动态的，面向对象的Java平台编程语言，用于定义项目和构建脚本。
在本教程中，我们将向您展示如何在Ubuntu 18.04上安装Gradle。相同的说明适用于Ubuntu 16.04和任何基于Ubuntu的发行版，包括Linux Mint和Elementary OS。
前提条件
为了能够在Ubuntu系统上安装软件包，您必须以具有sudo权限的]]></description><category></category></item></channel></rss>