<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[junling_的博客]]></title><description><![CDATA[记录一些问题]]></description><link>https://blog.youkuaiyun.com/danceinkeyboard</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; danceinkeyboard]]></copyright><item><title><![CDATA[常用资源收集]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/145221571</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/145221571</guid><author>danceinkeyboard</author><pubDate>Sat, 18 Jan 2025 10:30:50 +0800</pubDate><description><![CDATA[有用但不常用的开源库

https://github.com/alibaba/easyexcel Java操作Excel




]]></description><category></category></item><item><title><![CDATA[统计代码行数]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/135078632</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/135078632</guid><author>danceinkeyboard</author><pubDate>Tue, 19 Dec 2023 10:27:59 +0800</pubDate><description><![CDATA[4、$name中的name换成git本地配置的name，第一个name不用换。1、在本地项目的目录中找到.git文件夹；2、打开git bash命令行窗口；]]></description><category></category></item><item><title><![CDATA[Android App因配置https信任所有证书导致Glide加载不出https图片的解决办法]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/125201821</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/125201821</guid><author>danceinkeyboard</author><pubDate>Thu, 09 Jun 2022 13:55:12 +0800</pubDate><description><![CDATA[Android App中因使用自定义https证书导致Glide加载不出https资源图片的解决办法。]]></description><category></category></item><item><title><![CDATA[安装 Vue CLI 报错]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/115712893</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/115712893</guid><author>danceinkeyboard</author><pubDate>Wed, 14 Apr 2021 23:54:42 +0800</pubDate><description><![CDATA[报错
npm install -g @vue/cli
npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! request to https://registry.cnpmjs.org/@vue%2fcli failed, reason: Hostname/IP does not match certificate's altnames: Host: registry.c]]></description><category></category></item><item><title><![CDATA[Room升级（三）]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/112145571</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/112145571</guid><author>danceinkeyboard</author><pubDate>Sun, 03 Jan 2021 18:34:24 +0800</pubDate><description><![CDATA[数据库升级
Room的基本使用
Room与LiveData、ViewModel结合使用
Migration
随着业务的变化，数据库可能也需要做一些调整，比如增加一个新字段，在Room中如何实现？Android为我们提供了一个Migration类对Room进行升级。
Migration有两个参数，startVersion和endVersion，一个表示当前版本，一个表示将要升级到的版本。
使用方法

创建Migration

    private static final Migration MIGRATI]]></description><category></category></item><item><title><![CDATA[Room与LiveData、ViewModel结合使用(二)]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/112134025</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/112134025</guid><author>danceinkeyboard</author><pubDate>Sun, 03 Jan 2021 13:38:39 +0800</pubDate><description><![CDATA[直接使用Room的劣势
Android在UI线程不能执行耗时操作，在工作线程不能刷新UI（别在这抬杠，我知道一些情况下可以）而我们的数据更新变化了自然需要给用户展示出来看，但是数据变化又在工作线程，这就涉及到线程间通信，很不方便。虽然我们有Hander，AsyncTask，runOnUiThread等等很多好用的原生支持，甚至还有很多第三方库，但这些目前看来都不是最优解。
解决方案


在以往我们数据发生变化时都需要再去在工作线程中查询一遍数据然后把数据再给到UI线程去刷新，但是现在我们希望数据发生变化时，]]></description><category></category></item><item><title><![CDATA[Room的基本使用（一）]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/111938810</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/111938810</guid><author>danceinkeyboard</author><pubDate>Tue, 29 Dec 2020 22:52:57 +0800</pubDate><description><![CDATA[Room来源
Android采用Sqlite作为数据库存储。由于Sqlite代码写起来繁琐且容易出错，因此，开源社区逐渐出现了各种ORM（Object Relational Mapping）库。常见的有ORMLite, GreenDAO等。Google也意识到推出自家ORM库的必要性，于是有了Room，Room同其他ORM库一样，也是在Sqlite上提供了一层封装。
Room相关概念

概念

Entity：一个Entity对应数据库中的一张表。Entity类是Sqlite表结构对Java类的映射，在Jav]]></description><category></category></item><item><title><![CDATA[04单例模式]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109829894</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109829894</guid><author>danceinkeyboard</author><pubDate>Thu, 19 Nov 2020 23:27:07 +0800</pubDate><description><![CDATA[单例模式（Singleton Pattern）
确保一个类只有一个实例，并提供全局访问点。
使用场景
需要确保程序中的某个类只有一个实例时，就采用单例模式；
利用延迟实例化的方式创建单例，对资源敏感的对象特别重要。
要点

确保程序中一个类最多只有一个实例；
单例模式也提供访问这个实例的全局点；
在Java中实现单例模式需要私有的构造器，一个静态方法和一个静态变量。

经典的单例模式
public class Singleton {

    private static Singleton singlet]]></description><category></category></item><item><title><![CDATA[03装饰者模式]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590176</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590176</guid><author>danceinkeyboard</author><pubDate>Tue, 10 Nov 2020 00:34:01 +0800</pubDate><description><![CDATA[装饰者（Decorator Pattern）模式
动态地将责任附加到对象上，若要扩展功能，装饰者提供了比继承更有弹性的替代方案。
被装饰类（饮料）
public abstract class Beverage {
    String description = "Unknown Beverage";

    public String getDescription() {
        return description;
    }

    //必须在子类实现
    public abstra]]></description><category></category></item><item><title><![CDATA[02观察者模式]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590165</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590165</guid><author>danceinkeyboard</author><pubDate>Tue, 10 Nov 2020 00:33:09 +0800</pubDate><description><![CDATA[观察者模式（Observer Pattern）定义
定义了对象之间的一对多依赖，这样一来，当一个对象改变状态时，它所有依赖者都会收到通知并自动更新。
建立可观察者接口
public interface Subject {

    //持有观察者对象，因为Observer被观察者实现，所以可以通知update到观察者信息
    public void registerObserver(Observer observer);

    public void removeObserver(Observer ]]></description><category></category></item><item><title><![CDATA[01策略模式]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590124</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/109590124</guid><author>danceinkeyboard</author><pubDate>Tue, 10 Nov 2020 00:30:22 +0800</pubDate><description><![CDATA[策略模式（strategy pattern）定义
定义了算法族，分别封装起来，让它们之间可以互相替换，此模式让算法的变化独立于使用算法的客户。
分开变化和不会变化的部分
Duck类内的fly()和quack()行为会随着鸭子的不同而改变，属于变化的部分，将它们从Duck中抽取出来，建立一组新类代表每一种行为。
设计鸭子的行为


以往：行为来自于继承Duck超类的具体实现，或是继承某个接口后由子类自行实现而来。这两种方法都依赖于实现，没办法改变行为。


现在：Duck的子类将使用接口(FlyBehavio]]></description><category></category></item><item><title><![CDATA[Android四大组件-Service]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/107887941</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/107887941</guid><author>danceinkeyboard</author><pubDate>Sat, 08 Aug 2020 23:40:20 +0800</pubDate><description><![CDATA[服务Service
概念

实现程序后台运行的解决方案，适合执行不需要和用户交互的长期运行的任务；
服务并不运行在单独的进程中，依赖于创建服务时所在的进程；
服务不会自动开启线程，任务默认运行在主线程。

定义一个服务

继承Service；
重写onCreate,onStartCommand,onDestroy方法；
清单文件注册。

启动和关闭服务


启动
Intent startIntent = new Intent(this, MyService.class);
startSestarvice(s]]></description><category></category></item><item><title><![CDATA[unsupported modules detected Compilation*****Gradle Java modules and Android-Gradle modules in one p]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103176258</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103176258</guid><author>danceinkeyboard</author><pubDate>Thu, 21 Nov 2019 09:19:57 +0800</pubDate><description><![CDATA[unsupported modules detected Compilation is not supported for following modules: app. Unfortunately you can’t have non-Gradle Java modules and Android-Gradle modules in one project

解决方案：关掉Android Stu...]]></description><category></category></item><item><title><![CDATA[Android学习资源]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103157013</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103157013</guid><author>danceinkeyboard</author><pubDate>Wed, 20 Nov 2019 10:06:08 +0800</pubDate><description><![CDATA[极客导航：https://www.jikedaohang.com/Android/
Android开发技术周报：https://www.androidweekly.cn/
Android开发网：http://www.jizhuomi.com/android/
开源中国：https://www.oschina.net/
玩Android：https://wanandroid.com/
Androi...]]></description><category></category></item><item><title><![CDATA[Flutter学习资源]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103156930</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/103156930</guid><author>danceinkeyboard</author><pubDate>Wed, 20 Nov 2019 10:02:47 +0800</pubDate><description><![CDATA[Flutter社区中文资源：https://flutter.cn
Flutter中文网：https://flutterchina.club/
Dart编程语言：http://www.dartdoc.cn/
Flutter实战：https://book.flutterchina.club/
Flutter自定义Widget：http://flutter.link/


...]]></description><category></category></item><item><title><![CDATA[EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/102560177</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/102560177</guid><author>danceinkeyboard</author><pubDate>Tue, 15 Oct 2019 08:49:35 +0800</pubDate><description><![CDATA[记录一下这个错误EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide，今天正在写Android代码，创建一个新类的时候电脑卡着了，无奈只能强制重启了。重启之后原本好好的IDE出现了这个错误，通过以下方法解决的。大家遇到这个问题可以试一下这个方案。
File-&gt;Project Structure...]]></description><category></category></item><item><title><![CDATA[Android 9.0设备http请求报java.net.UnknownServiceException: CLEARTEXT communication to]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/100144530</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/100144530</guid><author>danceinkeyboard</author><pubDate>Thu, 29 Aug 2019 19:06:12 +0800</pubDate><description><![CDATA[报错起因
新建项目时targetSdkVersion = 28，28对应的是Android 9.0，在此版本中强制使用https，所以当使用http协议运行在9.0手机上时就会报java.net.UnknownServiceException: CLEARTEXT communication to错误，拿不到后台数据。
解决方案

修改targetSdkVersion版本小于28；
只运行在And...]]></description><category></category></item><item><title><![CDATA[压箱底的Android UI开源库（二）]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/90782428</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/90782428</guid><author>danceinkeyboard</author><pubDate>Tue, 04 Jun 2019 17:13:51 +0800</pubDate><description><![CDATA[1.图片、视频和文档选择库
https://github.com/lovetuzitong/MultiImageSelector
https://github.com/bingoogolapple/BGAPhotoPicker-Android
https://github.com/crazycodeboy/TakePhoto
https://github.com/FinalTeam/RxGalle...]]></description><category></category></item><item><title><![CDATA[Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versi]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/85264071</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/85264071</guid><author>danceinkeyboard</author><pubDate>Wed, 26 Dec 2018 16:14:57 +0800</pubDate><description><![CDATA[问题：
Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
&amp;gt; Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and t...]]></description><category></category></item><item><title><![CDATA[读取Excel的数据]]></title><link>https://blog.youkuaiyun.com/danceinkeyboard/article/details/84673952</link><guid>https://blog.youkuaiyun.com/danceinkeyboard/article/details/84673952</guid><author>danceinkeyboard</author><pubDate>Sat, 01 Dec 2018 15:11:09 +0800</pubDate><description><![CDATA[记录一下读取Excel表格里面的内容xls版本的代码，所使用的jar包以及读取xlsx的jar包都在下面给出：
public static void main(String[] args) throws FileNotFoundException, IOException {
		 
		POIFSFileSystem pfs = new POIFSFileSystem(new FileInput...]]></description><category></category></item></channel></rss>