<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bilionera的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bilionera</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bilionera]]></copyright><item><title><![CDATA[Android单例模式的种类与优缺点]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/120440403</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/120440403</guid><author>bilionera</author><pubDate>Thu, 23 Sep 2021 18:17:26 +0800</pubDate><description><![CDATA[目录



单例模式定义：

单例模式核心原理：

使用单例模式需要注意哪几方面的问题：

饿汉单例

懒汉单例

DCL 单例（Double Check Lock）

静态内部类单例（推荐）

枚举单例

容器单例

最后

静态内部类时如何保证线程安全的：

单例模式定义：

1.确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。



单例模式核心原理：

1.将构造函数私有化；
2.通过静态方法获取唯一一个实例；



使用单例模式需要注意哪几方面的问题：

1.对象的资源消耗；
2]]></description><category></category></item><item><title><![CDATA[Java 算法]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/120333886</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/120333886</guid><author>bilionera</author><pubDate>Thu, 16 Sep 2021 17:40:25 +0800</pubDate><description><![CDATA[Java 算法
排序算法

冒泡排序


/**
 1. 冒泡排序
 2. 前后两个元素相比较，最大的往后排，每一轮都可以找到一个最大的元素
*/
public static int[] bubbleSort(int[] nums) {
    int temp = 0;
    for(int i=0 ;i &lt; nums.length - 1 ;i++){
        for(int j = 0 ; j &lt; nums.length - 1 - i ; j++){
            i]]></description><category></category></item><item><title><![CDATA[理解使用Handler]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/117176232</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/117176232</guid><author>bilionera</author><pubDate>Sun, 23 May 2021 01:56:22 +0800</pubDate><description><![CDATA[Handler 是一个消息分发对象。handler是Android给我们提供用来更新UI的一套机制，也是一套消息处理机制，我们可以发消息，也可以通过它处理消息。


在一个线程里面Handler允许你发送和处理消息，也可以联系到执行程序中的object对象。创建新的Handler实例时，它必然会绑定到一个线程和一个消息队列。它会传递消息或执行程序中的信息(object)给到Looper的消息队列，并且在Looper的线程中处理他们。Message MessageQueue Looper

There are]]></description><category></category></item><item><title><![CDATA[代码风格]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/116059024</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/116059024</guid><author>bilionera</author><pubDate>Fri, 23 Apr 2021 15:49:19 +0800</pubDate><description><![CDATA[方法命名要见名知意 方法内容不模糊



整洁代码


	优雅和高效
	
	
	分层结构
	
	
	完善错误处理代码
	
	
	可读、像散文一样、令人愉快
	
	
	干净利落的抽象 和 直截了当的控制语句
	
	
	整洁的代码总是看起来像是某位特别在意它的人写的
	
	
	能通过所有测试
	
	
	没有重复代码
	
	
	体现系统中的全部设计理念
	
	
	包括尽量少的实体，比如类、方法、函数等
	
有意义的命名


	名副其实 --- 让代码更明确
	
	
	避免误导 --- 避免提供错误的信息
	
	.]]></description><category></category></item><item><title><![CDATA[面向对象六大基本原则（个人笔记）]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/116058267</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/116058267</guid><author>bilionera</author><pubDate>Fri, 23 Apr 2021 15:32:44 +0800</pubDate><description><![CDATA[单一职责原则，扩展性 灵活性

所有的功能写在一个类里怎么行呢，这样随着功能的增多，类会越来越庞大，代码也越来越复杂，程序也会越来越脆弱...... 把各个功能独立出来，让它们满足单一职责原则 如何划分一个类，一个函数的职责，每个人都有自己的看法，这需要根据个人经验、具体的业务逻辑而定，但是，他也有一些基本的指导原则，例如，两个完全不一样的功能就不应该放在一个类中。一个类中应该是一组相关性很高的函数、数据的封装。 要不断的审视自己的代码；

开闭原则，（应该，尽量，不是说绝对不可以修改原始类）

在软件的生]]></description><category></category></item><item><title><![CDATA[Android 屏幕分辨率适配原理]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/99693292</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/99693292</guid><author>bilionera</author><pubDate>Sat, 17 Aug 2019 15:56:33 +0800</pubDate><description><![CDATA[1.屏幕适配的相关知识

首先扔出一个问题，为什么图片会被拉伸变形？



Android中根据DensityDpi的不同将设备分成了多个显示级别：


			ldpi
			mdpi
			hdpi
			xhdpi
			xxhdpi
			xxxhdpi
		dpi
			0-120
			120-160
			160-240
			240-320
			320-480
			480-6...]]></description><category></category></item><item><title><![CDATA[安卓5.0 Wifi 设置 Ip]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/79870226</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/79870226</guid><author>bilionera</author><pubDate>Mon, 09 Apr 2018 17:57:21 +0800</pubDate><description><![CDATA[void changeWifiConfiguration(boolean dhcp, String ip, int prefix, String dns1, String gateway) {
    WifiManager wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    ...]]></description><category></category></item><item><title><![CDATA[Android6.0动态申请权限的两种办法]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/75670016</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/75670016</guid><author>bilionera</author><pubDate>Fri, 21 Jul 2017 18:23:21 +0800</pubDate><description><![CDATA[Android 6.0 动态申请权限的两种办法最近在写项目中被安卓6.0动态申请权限所困惑，有一些自己纠结的问题，今天闲着没事就想着写篇博客来分享自己遇到的问题和解决办法。 
        一开始我在网上找到的申请权限的代码是ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS);（在an]]></description><category></category></item><item><title><![CDATA[如何理解与有效避免安卓加载Bitmap造成的OOM异常]]></title><link>https://blog.youkuaiyun.com/bilionera/article/details/75316758</link><guid>https://blog.youkuaiyun.com/bilionera/article/details/75316758</guid><author>bilionera</author><pubDate>Tue, 18 Jul 2017 18:44:57 +0800</pubDate><description><![CDATA[结尾附加载Bitmap的方法

在Android应用里，最耗费内存的就是图片资源。而且在Android系统中，读取位图Bitmap时，移动设备会限制每个app所能够使用的内存，早期的一些版本可能是16MB，不同的设备有不同的大小，总之会有限制，不会让你无限制的使用。在andorid中图片加载到内存中是以位图的方式存储的，在android2.3之后默认情况下使用ARGB_8888,这种方式下每个像素...]]></description><category></category></item></channel></rss>