<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Fishandbearspaw的博客]]></title><description><![CDATA[记录，提高]]></description><link>https://blog.youkuaiyun.com/Fishandbearspaw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Fishandbearspaw]]></copyright><item><title><![CDATA[redis整理-kw]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108527616</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108527616</guid><author>Fishandbearspaw</author><pubDate>Tue, 12 Jan 2021 08:57:06 +0800</pubDate><description><![CDATA[redis支持的数据类型有哪些？
key只能为String
value可以是：5种比较常见的String、Hash、List、Set、zset加上BitMap、hyperloglogs（是用来做基数统计的算法）、geospatial（地理空间相关的）
redis在Spring的使用中，能直接存储Obecjt对象吗？
能的，在Spring中，我们使用redis的形式如下
	@Autowired
	private RedisTemplate&lt;String, SignParam&gt; redisTempl]]></description><category></category></item><item><title><![CDATA[SpringCloud-Netflix并没有闭源、Eureka1.X也没有闭源]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/111773519</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/111773519</guid><author>Fishandbearspaw</author><pubDate>Sun, 27 Dec 2020 11:06:51 +0800</pubDate><description><![CDATA[网上流行的说法：Netflix的Eureka 闭源了（不实）
引起一些人的焦虑、恐慌，SpringCloud-Netflix是不是就不能用了，没人维护了
真相：
1、Spring Cloud Netflix仍在维护
2020.12.27上github看到，刚刚发布了一个新版本还是活跃的，有人维护的
https://github.com/spring-cloud/spring-cloud-netflix/releases

**2、闭源的或者说停止开发的是Eureka 2.0 **
Spring Cloud ]]></description><category></category></item><item><title><![CDATA[Java-异常]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110733442</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110733442</guid><author>Fishandbearspaw</author><pubDate>Sun, 13 Dec 2020 12:38:33 +0800</pubDate><description><![CDATA[什么是异常？
异常是指程序运行时，导致正常流程被中断的事件。
异常分类
可查异常：CheckedException （要么try catch住,要么往外抛，谁调用，谁处理。如果不处理，编译器，就不让你通过）
运行时异常：RuntimeException （不是必须进行try catch的异常）
错误：Error 指的是系统级别的异常，通常是内存用光了（不是必须进行try catch的异常）
异常不进行捕捉，会怎么样？
异常发生后，没有进行捕捉处理的话，程序就会终止，并在控制带打出异常信息

...]]></description><category></category></item><item><title><![CDATA[Lock接口整理]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110382704</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110382704</guid><author>Fishandbearspaw</author><pubDate>Sun, 13 Dec 2020 12:36:09 +0800</pubDate><description><![CDATA[Lock后于Synchronized出现
Lock与Synchronized的不同
它提供了与synchronized关键字类似的同步功能，只是在使用时需要显式地获取和释放锁。
虽然它缺少了（通过synchronized块或者方法所提供的）隐式获取释放锁的便捷性，但是却拥有了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。
Java提供的Lock接口的实现
ReentrantLock
ReentrantReadWriteLock
LockSuppo]]></description><category></category></item><item><title><![CDATA[nginx相关整理]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110849238</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110849238</guid><author>Fishandbearspaw</author><pubDate>Tue, 08 Dec 2020 08:57:37 +0800</pubDate><description><![CDATA[Nginx能做什么
1.反向代理
2.负载均衡
3.HTTP服务器（包含动静分离）
4.正向代理
反向代理
反向代理（Reverse Proxy）方式是指以代理服务器来接受internet上的连接请求，然后将请求转发给内部网络上的服务器，并将从服务器上得到的结果返回给internet上请求连接的客户端，此时代理服务器对外就表现为一个反向代理服务器。
具体例子：
外网需要访问，医院内网机器时，当服务部署在内网机器上时，需要nginx服务部署在前置机上作转发；
负载均衡
负载均衡也是Nginx常用的一个功能，负]]></description><category></category></item><item><title><![CDATA[一个功能简单的线程池实现]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110367962</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110367962</guid><author>Fishandbearspaw</author><pubDate>Mon, 30 Nov 2020 09:41:01 +0800</pubDate><description><![CDATA[功能：仅支持自动创建线程和线程复用
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;

/**
 */
public class MyThreadPool {

	int corePoolSize;

	int currentPoolSize;

	LinkedBlockingQueue&lt;Runnable&gt; todoWorks = new LinkedB]]></description><category></category></item><item><title><![CDATA[Mysql数据库读写锁相关]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110288912</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/110288912</guid><author>Fishandbearspaw</author><pubDate>Sat, 28 Nov 2020 18:16:11 +0800</pubDate><description><![CDATA[和读锁、写锁相关的场景
一个线程想读取一行数据，而且这行数据正在被修改。这时候会发生什么？
1.SELECT … FROM

是一个快照读，通过读取数据库的一个快照，不会加任何锁，除非将隔离级别设置成了 SERIALIZABLE 。

排他锁什么时候使用
innodb引擎的insert,update,delete操作都会给操作数据加上排他锁(行级锁).这时候其他事务是没法对这行数据进行操作的.。

在所有索引扫描范围的索引记录上加上排他的next key锁。如果是唯一索引，只需要在相应记录上加index r]]></description><category></category></item><item><title><![CDATA[Java-字符串]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109480595</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109480595</guid><author>Fishandbearspaw</author><pubDate>Tue, 03 Nov 2020 22:17:59 +0800</pubDate><description><![CDATA[字符串遍历每一个字符的方法
用for循环+str.substring(i,i+1);
str.charAt();  //public char charAt(int index)
str.toCharArray();
** Char、String的转换**
Char 2 String：
1. String s = String.valueOf('c'); //效率最高的方法
2. String s = String.valueOf(new char[]{'c'}); //将一个char数组转换成String]]></description><category></category></item><item><title><![CDATA[Java中的值传递、引用传递？]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109463743</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109463743</guid><author>Fishandbearspaw</author><pubDate>Tue, 03 Nov 2020 20:10:14 +0800</pubDate><description><![CDATA[最终自己的理解
Java中，
声明变量如：Test a = null; 时内存中开辟了空间，存储了变量名a,并且拥有一个存储的地址A
当Test a  = new Test(); 时，内存中开辟了另外一块空间，储存了Test类的实例对象的数据状态，并且拥有一个存储的地址B
Java中是值传递的因为，在方法调用时，method（a）; 是新建一个变量a1(a1的存储地址为C)，变量中COPY了地址B的值；
由于始终拿到不到地址A，所以是无法改变A的指向地址的，A仍然指向地址B。如果地址B中存储的数据被改变，那]]></description><category></category></item><item><title><![CDATA[Java -数组]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109441236</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109441236</guid><author>Fishandbearspaw</author><pubDate>Mon, 02 Nov 2020 20:01:10 +0800</pubDate><description><![CDATA[数组new实例方法
int data[] = new int[3];
int date[] =  {1, 2, 4, 545, 11, 32, 13131, 4444};
大小
用.length~（联想记忆：数组没有继承collection接口，所以不是size）；

]]></description><category></category></item><item><title><![CDATA[关于Unbounded queue 、 Bounded queue -整理]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109374841</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109374841</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 23:37:44 +0800</pubDate><description><![CDATA[可选是否有界队列（optionally-bounded）
LinkedBlockingQueue
有界队列
无界队列
ConcurrentLinkedQueue
什么时候用无界队列？
用无界队列的时候不用担心溢出吗？
用有界队列的时候
ThreadPoolExecutor-相关
ThreadPoolExecutor的实现，可以使得队列是无界队列。
使用无界队列时，要注意，
核心线程数 X
最大线程数 Y
最大线程数不会生效，因为队列永远不会满。。

...]]></description><category></category></item><item><title><![CDATA[Java-Collection集合- 关于optional  operation]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109372898</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109372898</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 22:36:48 +0800</pubDate><description><![CDATA[Collection类中的一些方法上有(optional operation)标识
例如：
add（）方法

boolean java.util.Collection.add(E e)
Ensures that this collection contains the specified element (optional operation). Returns true if this collection changed as aresult of the call. (Returns false if]]></description><category></category></item><item><title><![CDATA[阻塞/Java中实现阻塞有哪些方法？]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109356880</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109356880</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 13:53:29 +0800</pubDate><description><![CDATA[什么是阻塞？
没有找到权威定义。
自己理解：
通常在Java中，我们说到阻塞，主语是线程。可以理解为线程想要进行下去，但是由于条件没有具备，所以阻塞等待，直到条件具备，该线程知道（被唤醒？），而继续把线程进行下去。
只要线程暂停-释放cpu使用权就算阻塞吗？
Java中实现阻塞有哪些方法
sleep() 方法
释放CPU，不会释放锁
suspend() 和 resume() 方法（在JDK中已经过期）
不推荐使用 suspend() 去挂起线程的原因，是因为 suspend() 在导致线程暂停的同时，并不会]]></description><category></category></item><item><title><![CDATA[Java基础-接口相关]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109354547</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109354547</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 11:02:01 +0800</pubDate><description><![CDATA[接口可以作为变量类型
例如：Runnable
理解为实现了Runnable 接口的某个类，然后该类必定有run方法，可以进行调用
	class MyThread extends Thread {

		Runnable runnable;

		@Override
		public void run() {
			runnable.run();
			try {
				Runnable todoRunnable = todoWorks.take();
				while (todoRunnable != ]]></description><category></category></item><item><title><![CDATA[Java后端基础-基本类型、字符串相关]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/105875674</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/105875674</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:19:14 +0800</pubDate><description><![CDATA[String长度
String.length()不是size();
s.toCharArray();
String只能查到在某个位置的字符
.charAt();

]]></description><category></category></item><item><title><![CDATA[Java基础-代理]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/107917619</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/107917619</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:10:47 +0800</pubDate><description><![CDATA[什么是Java中的类加载器
类加载器（class loader）用来加载 Java 类到 Java 虚拟机中
java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称，找到或者生成其对应的字节代码，然后从这些字节代码中定义出一个 Java 类，即 java.lang.Class 类的一个实例
什么是代理
买票：在网上直接买票相对于到电影院现场买票就是代理
买东西：在超市买东西，相对于批发市场、厂家，就是代理
Java中的代理
通过自定义的代理类对想要访问的对象进行访问
Java中的]]></description><category></category></item><item><title><![CDATA[Java基础-类型、变量]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108906704</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108906704</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:09:44 +0800</pubDate><description><![CDATA[面向对象
对象=数据
C++与Java的不同
主要在于多重继承
Java：接口
多线程原先在C++中是没有的
整型
整型，用于没有小数部分的数值
Char类型
Char类型原本用于表示单个字符，但是现在有些Unicode要用两个char值来表示

...]]></description><category></category></item><item><title><![CDATA[冒泡排序]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108961022</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/108961022</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:05:58 +0800</pubDate><description><![CDATA[什么是冒泡排序
比较相邻的元素。如果第一个比第二个大，就交换他们两个
对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对。在这一点，最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤，除了最后一个
一句话描述
关于使用冒泡时，从0-Max，只看小。从Max-0，只看大？
Java语言实现
    public static void bubbleSort(int arr[]) {
 
        for(int i =0 ; i&lt;arr.length-1 ; i++) { 
   ]]></description><category></category></item><item><title><![CDATA[实现多线程的几种方式]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109287281</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109287281</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:04:47 +0800</pubDate><description><![CDATA[多线程的底层实现？一定要用Thread或者Runnable接口才能实现多线程吗？
一般用的时候都是继承Thread类吧

]]></description><category></category></item><item><title><![CDATA[HashSet相关整理]]></title><link>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109294327</link><guid>https://blog.youkuaiyun.com/Fishandbearspaw/article/details/109294327</guid><author>Fishandbearspaw</author><pubDate>Thu, 29 Oct 2020 10:04:38 +0800</pubDate><description><![CDATA[HashSet是Java中常用的Set的实现
HashSet的实现
HashSet底层是用HashMap实现的。
HashSet的特点
不保证添加顺序
保证唯一
HashSet是如何保证唯一的？
HashSet的底层实现是HashMap，当HashSet中添加元素时，使用把元素的值作为key，new一个Obect（）类放入到HashMap中，而HashMap是能够保证key值唯一的。

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