<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[abc67509227的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/abc67509227</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; abc67509227]]></copyright><item><title><![CDATA[纯文字图片缩小后像素点丢失的一种逃课式解决办法（Android）]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/124277704</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/124277704</guid><author>abc67509227</author><pubDate>Wed, 20 Apr 2022 16:29:06 +0800</pubDate><description><![CDATA[最近遇到一个需求，是当接收到一个尺寸很大的纯文字图片时，需要在屏幕上缩小若干倍显示出来且不失真。
而一般 Android 对图片的处理方法是邻近采样或者双线性采样，下面对这两种方法一一进行测试，观察图片缩小后的变化
（下面会讲一下几种图像处理方法的差异，不感兴趣的可以直接跳到解决方法）]]></description><category></category></item><item><title><![CDATA[Java8新特性——Stream流看这一篇就行辣]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/118962794</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/118962794</guid><author>abc67509227</author><pubDate>Thu, 24 Mar 2022 15:37:15 +0800</pubDate><description><![CDATA[作为Java8添加的一个新特性，Stream流提供了一种声明的方式来处理数据。
其基于函数式编程思想，将复杂的语句代码通过简洁的方法调用来表示，让程序员写出的代码更加的高效、简洁并具备可读性。]]></description><category></category></item><item><title><![CDATA[每日一题——寻找小于目标数的最大单调递增数]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/118890550</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/118890550</guid><author>abc67509227</author><pubDate>Mon, 19 Jul 2021 10:44:14 +0800</pubDate><description><![CDATA[题目
Leetcode 738：
给定一个非负整数N，找出小于或等于N的最大的整数，同时这个整数需要满足其各个位数上的数字是单调递增。
（当且仅当每个相邻位数上的数字x和y满足x &lt;= y时，我们称这个整数是单调递增的。）
例如：
N = 352，则满足的整数结果为：349
思路一
分离每个位置的数字，将其转化为字符类型进行逐位比较
代码
/**
 * @author Seaguller
 * @date 2021/7/19 09:35
 * @Description
 */
public class]]></description><category></category></item><item><title><![CDATA[MongoDB初接触——基础介绍篇]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/118676135</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/118676135</guid><author>abc67509227</author><pubDate>Mon, 12 Jul 2021 16:14:53 +0800</pubDate><description><![CDATA[（本文大部分内容来自百度百科及MongoDB菜鸟教程）
基本概念
MongoDB是一个基于分布式文件存储的数据库，他是一个介于关系数据库和非关系数据库之间的产品，由C++语言编写，支持的数据结构为类似JSON的BSON格式，支持对数据建立索引。
基本特点

面向集合存储
支持查询与动态查询
支持索引，完全索引，包含内部对象
支持复制和故障恢复
使用高效的二进制数据存储，包括大型对象（如视频等）
自动处理碎片
持 Golang，RUBY，PYTHON，JAVA，C++，PHP，C#等多种语言
文件存储格式为B]]></description><category></category></item><item><title><![CDATA[Mybatis实现Mysql数据库存在就执行指定操作，不存在就插入（纯注解）]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/103318926</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/103318926</guid><author>abc67509227</author><pubDate>Sat, 30 Nov 2019 13:48:51 +0800</pubDate><description><![CDATA[存在就更新，不存在就插入
可以使用INSERT...ON DUPLICATE KEY UPDATE语句。
先来简单的看一下表的结构：




列名
类型




id
VARCHAR


stu_id
VARCHAR


name
VARCHAR


password
VARCHAR


其中id是主键。
那么对于user表，如果我们需要查询某条数据存不存在，存在的话更新，不存在的话插入，我们一般...]]></description><category></category></item><item><title><![CDATA[剑指Offer之每日五道算法题(Java)——第三天]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/103064407</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/103064407</guid><author>abc67509227</author><pubDate>Mon, 18 Nov 2019 20:55:37 +0800</pubDate><description><![CDATA[面试题08
问题描述

给定一个二叉树和其中的一个结点，请找出中序遍历顺序的下一个结点并且返回。注意，树中的结点不仅包含左右子结点，同时包含指向父结点的指针。

牛客网——二叉树的下一个节点测试用例
实现思路
先总结出所有可能发生的情况，再根据这些情况来写代码，中序遍历下一节点所有情况如下：

节点存在右子树：

节点的右孩子存在左子树：

则沿着右孩子的左指针一路遍历下去到叶子节点，就是我们要找...]]></description><category></category></item><item><title><![CDATA[剑指Offer之每日五道算法题(Java)——第二天]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/103008323</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/103008323</guid><author>abc67509227</author><pubDate>Wed, 13 Nov 2019 17:30:07 +0800</pubDate><description><![CDATA[面试题22
问题描述

输入一个链表，输出该链表中倒数第k个结点。

牛客网——链表中倒数第k个节点测试用例
我的思路
设置一个指针来遍历链表，同时设置一个指针指向遍历指针的第前k个节点。
比如n指针（遍历指针）和p指针初始化指向链表头部。
n指针从链表头部向后遍历，同时设置一个计数器记录移动次数。
当计数器的值等于k时，让p指针同步开始移动（此时p指针指向的节点即为n指针的第前k个节点）
当n指...]]></description><category></category></item><item><title><![CDATA[剑指Offer之每日五道算法题(Java)——第一天]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102941553</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102941553</guid><author>abc67509227</author><pubDate>Sat, 09 Nov 2019 11:49:13 +0800</pubDate><description><![CDATA[面试题24
问题描述

输入一个链表，反转链表后，输出新链表的表头。

反转链表——牛客网测试用例
我的思路


在保留头指针的情况下，用三个指针分别指向中间的节点与前后节点，像这样：



反转中间指针的指向后，整体后移一格，变成这样：

（这个A节点是头结点，所以不用管A的指向，最后将A结点指为null即可。）


对上述操作进行循环，直到n.next指向null（也就是到了尾结点）为止，此时...]]></description><category></category></item><item><title><![CDATA[Java 设计模式通关之路——单例模式]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102958757</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102958757</guid><author>abc67509227</author><pubDate>Fri, 08 Nov 2019 14:14:15 +0800</pubDate><description><![CDATA[单例模式是什么？
单例模式（Singleton）通常来讲，就是让一个类仅仅只有一个实例，并提供一个全局访问点。
如何控制让一个类只能有一个实例对象呢？全局变量？不行，虽然全局变量可以保证一个对象被访问，但是还是无法去阻止你实例化多个对象。
既然外部无法进行控制，那就交给类自己维护吧，而外部仅仅只是起一个“通知的作用”，由类自己负责保存它的唯一实例，并对外提供一个访问该实例的方法。
单例模式有三个特...]]></description><category></category></item><item><title><![CDATA[JDK1.8集合框架源码阅读（二）——Iterable接口]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102885085</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102885085</guid><author>abc67509227</author><pubDate>Tue, 05 Nov 2019 22:21:14 +0800</pubDate><description><![CDATA[功能简介
Iterable接口作为Collection的根接口，负责实现所有集合类的for-each语句功能。
其内部维护了一个返回迭代器的方法，所有继承该类的集合类都可以实现自己的迭代器。
（详见 Java 设计模式通关之路——迭代器模式）
Iterable类定义如下：
package java.util;
public interface Iterator&lt;E&gt; {
    boo...]]></description><category></category></item><item><title><![CDATA[Java 设计模式通关之路——迭代器模式]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102897431</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102897431</guid><author>abc67509227</author><pubDate>Mon, 04 Nov 2019 20:44:01 +0800</pubDate><description><![CDATA[什么是迭代器模式？
我们知道，Java中对于集合的遍历提供了一种很简单的实现——Iterator类。
一般我们对集合遍历时，都会做如下程序：
List&lt;Integer&gt; arrayList = new ArrayList&lt;&gt;();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);

Iterator&lt;Integ...]]></description><category></category></item><item><title><![CDATA[JDK1.8集合框架源码阅读（一）——总览]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102882095</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102882095</guid><author>abc67509227</author><pubDate>Sun, 03 Nov 2019 14:48:32 +0800</pubDate><description><![CDATA[集合架构图


图片摘自 基于jdk8的集合源码学习（一）：第一篇集合体系一览图

主要模块
从架构图上可以看到，主要分为两大类：以Collection为主的集合结构，和以Map为主的键值对结构。
而Collection又继承了Iterable类，其主要实现对for-each语句的支持。
Collection的实现有三种：List、Set和Queue。
List是一个有序的可重复集合，可在任意位置...]]></description><category></category></item><item><title><![CDATA[浅谈 Java 序列化（涉及部分源码分析）]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102769084</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102769084</guid><author>abc67509227</author><pubDate>Sat, 02 Nov 2019 17:04:37 +0800</pubDate><description><![CDATA[序列化是什么？
用一句话来概括：序列化是用来保存对象状态的一种机制。
什么是对象的状态？比如现在有一个类：
class A {
	int a;
	int b;

	A(int a, int b) {
		this.a = a;
		this.b = b;
	}
}

然后我们去声明了一个类A的实例：
A a = new A(1, 2);

现在这个对象中实例变量的值为1和2，这就是对象的状态。
对...]]></description><category></category></item><item><title><![CDATA[Java 虚拟机初探（三）—— 堆]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102695202</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102695202</guid><author>abc67509227</author><pubDate>Thu, 24 Oct 2019 09:14:56 +0800</pubDate><description><![CDATA[tips：本篇文章基于Hotspot JVM与JDK 1.8所撰写。
内存区域
我们首先来根据一张图初步了解一下内存区域的划分：

因为我发现每一版块都有好多东西要说，故把各区域单拿出来一一说明。
下面介绍的是主管JVM存储的区域——堆
Java 堆
我们常说：栈管运行，堆管存储。
既然管存储，那么其必然是线程共享的。Java在运行时创建的所有类实例对象和数组都存储在堆中，堆也是垃圾收集器进行垃圾...]]></description><category></category></item><item><title><![CDATA[Java 代码块究竟是个啥？]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102328042</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102328042</guid><author>abc67509227</author><pubDate>Fri, 18 Oct 2019 19:22:15 +0800</pubDate><description><![CDATA[前言
对于Java初学者来言，一些代码真是整的我们云山雾罩的……
有这样的：
public class Test {

    static {
        System.out.println("static yo~");
    }
    
}

这样的：
public class Test {

    {
        System.out.println("oh yo~");
 ...]]></description><category></category></item><item><title><![CDATA[记一次 Redhat 6 yum无法使用的问题]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/102610828</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/102610828</guid><author>abc67509227</author><pubDate>Thu, 17 Oct 2019 17:32:03 +0800</pubDate><description><![CDATA[前言
实验要用yum方式安装wireshark，提供的虚拟机linux版本是Redhat 6。
执行yum -y install wireshark wireshark-gnome命令进行安装，提示：
No package xxxxx available（后来尝试过安装、更新等，都是报这个命令）
于是查找原因，发现是因为Redhat自带的yum需要进行注册，所以我们只能使用免费的CentOS的yu...]]></description><category></category></item><item><title><![CDATA[Java 虚拟机初探（二）—— 虚拟机栈]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/101562041</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/101562041</guid><author>abc67509227</author><pubDate>Tue, 15 Oct 2019 19:17:56 +0800</pubDate><description><![CDATA[tips：本篇文章基于Hotspot JVM与JDK 1.8所撰写。
内存区域
我们首先来根据一张图初步了解一下内存区域的划分：

因为我发现每一版块都有好多东西要说，故把各区域单拿出来一一说明。
下面介绍的是主管JVM程序运行的区域——栈。
Java虚拟机栈（stack）
每一条Java虚拟机线程都有自己私有的Java虚拟机栈，这个栈与线程同时创建，也就是说，虚拟机栈的生命周期跟线程是一样的。
...]]></description><category></category></item><item><title><![CDATA[Java 虚拟机初探（一）—— 程序计数器]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/100709141</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/100709141</guid><author>abc67509227</author><pubDate>Fri, 27 Sep 2019 20:35:19 +0800</pubDate><description><![CDATA[数据区域

]]></description><category></category></item><item><title><![CDATA[从JVM层面对Java多态机制深入探寻]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/100636442</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/100636442</guid><author>abc67509227</author><pubDate>Sun, 22 Sep 2019 16:34:54 +0800</pubDate><description><![CDATA[前言
我们都知道多态是Java中最重要的特性之一，

]]></description><category></category></item><item><title><![CDATA[Java 中你可能没有注意到的一些事（持续更新中...）]]></title><link>https://blog.youkuaiyun.com/abc67509227/article/details/100518823</link><guid>https://blog.youkuaiyun.com/abc67509227/article/details/100518823</guid><author>abc67509227</author><pubDate>Tue, 03 Sep 2019 17:22:58 +0800</pubDate><description><![CDATA[垃圾回收

垃圾回收器只释放经由new分配的内存。
如果JVM并未面临内存耗尽的情形，他是不会浪费时间去执行垃圾回收的。

初始化

即使变量定义于方法体之间，仍旧会在任何方法（包括构造器）之前初始化。
静态变量会比非静态变量提前初始化，并且只初始化一次。
（局部变量不会被初始化）

关于静态初始化
static标明的属性在类加载时就同时加载了，它会逐层寻找基类。
什么意思呢？举个例子：有一个bo...]]></description><category></category></item></channel></rss>