<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[鱻焱的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/py245164372</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; py245164372]]></copyright><item><title><![CDATA[redis与memcached的区别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/131580166</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/131580166</guid><author>py245164372</author><pubDate>Thu, 06 Jul 2023 17:17:08 +0800</pubDate><description><![CDATA[redis与memched的区别
	比较内容
			redis
			memcached
		数据类型
			String、list、set、zset、hash
			简单数据类型(k/v)，也可存储
		网络IO模型
			单线程，多路IO复用模型
			多线程，非阻塞IO复用的网络模型
		数据存储及持久化
			支持，用快照模式或者AOF方式实现
			不支持，数据都存于内存中
		集群模式
			原生支持cluster
			没有原生的集运模式，需要依靠客户端来实现往集群中分片写入数据
		数据一致]]></description><category></category></item><item><title><![CDATA[js获取table某一列的全部值]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/94010585</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/94010585</guid><author>py245164372</author><pubDate>Fri, 28 Jun 2019 15:53:17 +0800</pubDate><description><![CDATA[js获取table某一列的全部值



1.页面代码：


&lt;table width="99%" border="0" cellpadding="0" cellspacing="1" class="biaocss3 " id="showM...]]></description><category></category></item><item><title><![CDATA[jsp实现将选中的多选框的table列动态加载到另一个页面特定位置或者特定table里面]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/94007309</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/94007309</guid><author>py245164372</author><pubDate>Fri, 28 Jun 2019 15:43:07 +0800</pubDate><description><![CDATA[jsp实现将选中的多选框的table列动态加载到另一个页面特定位置或者特定table里面



页面代码，后台获取的数据，将每一行的字段值赋予checkbox的attr1......9,
	
<table width="99%" border="0" cellpadding="0" cellspacing="1" class="biaocss...]]></description><category></category></item><item><title><![CDATA[java生成二维码]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/91983070</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/91983070</guid><author>py245164372</author><pubDate>Fri, 14 Jun 2019 16:26:15 +0800</pubDate><description><![CDATA[String shopbase64s = QrCodeUtil.createQrCode(shopUrls);//生成二维码的地址url





以下是封装的工具类，可直接使用，所需要的jar包core-3.3.3.jar

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import ja...]]></description><category></category></item><item><title><![CDATA[java实现将图片转为base64格式]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/91980396</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/91980396</guid><author>py245164372</author><pubDate>Fri, 14 Jun 2019 15:54:25 +0800</pubDate><description><![CDATA[logoImgUrl = getImgStr(url);//图片链接



 public static String getImgStr(String imgFile) {
  ByteArrayOutputStream data = new ByteArrayOutputStream();
  try {
   // 创建URL
...]]></description><category></category></item><item><title><![CDATA[java实现对象克隆]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/89337545</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/89337545</guid><author>py245164372</author><pubDate>Tue, 16 Apr 2019 17:16:29 +0800</pubDate><description><![CDATA[1、实现Cloneable接口，重写Clone()方法，方法修饰符用public；

2、利用序列化，实现Serializable接口；
]]></description><category></category></item><item><title><![CDATA[BIO、NIO与AIO的区别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/89337378</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/89337378</guid><author>py245164372</author><pubDate>Tue, 16 Apr 2019 17:11:06 +0800</pubDate><description><![CDATA[BIO：同步且阻塞，一个连接一个线程，使用于多线程中，适用连接数少且固定的架构;
NIO：同步非阻塞，一个请求一个线程，多使用于单线程或者少量使用于多线程，适用于连接数量多且连接比较短（轻连接）的架构；
AIO:异步非阻塞，一个有效请求一个线程，多使用于连接数量多且连接比较长（重连接）的架构；
...]]></description><category></category></item><item><title><![CDATA[java创建线程池的方式有哪些]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/89337095</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/89337095</guid><author>py245164372</author><pubDate>Tue, 16 Apr 2019 17:01:22 +0800</pubDate><description><![CDATA[1、NewSingleThreadExecutor:创建一个单线程的线程池，只有一个线程工作，保证所有任务的执行顺序按照任务的提交顺序执行；

2、NewFixedThreadPool:创建固定大小的线程池，每次提交一个任务就从线程池中拿一个线程，直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变，如果某个线程因为执行异常而结束，那么线程池会补充一个新线程；

3、newCach...]]></description><category></category></item><item><title><![CDATA[同步与异步的区别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88530342</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88530342</guid><author>py245164372</author><pubDate>Wed, 13 Mar 2019 13:19:04 +0800</pubDate><description><![CDATA[同步：当请求时，需要处理完所有的操作，结果返回到客户端，这个过程中页面出现假死状态，不能有任何其他操作，如果关闭浏览器就会中断程序执行；例如：表单提交。

异步：请求时，，后端程序已经进入启动执行状态，不用等待所有操作完成就会响应客户端。例如：ajax请求。
...]]></description><category></category></item><item><title><![CDATA[jQuery 选择器]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88413008</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88413008</guid><author>py245164372</author><pubDate>Tue, 12 Mar 2019 01:50:37 +0800</pubDate><description><![CDATA[jQuery选择器分为四种：

基本选择器：是jQuery中最常用的选择器，也是最简单的选择器，它是通过id,class和标签名等进行DOM元素查询的，id是唯一的，class可以重复使用。

层次选择器：如果我们想通过元素之间的关系来获取特定的元素，那么层次选择器是一个非常好的选择。层次选择器的书写规则：【1】$(&quot;div span&quot;) 集合元素 eg:选取div里面的所有span元素；【2】$...]]></description><category></category></item><item><title><![CDATA[数据库死锁]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88412986</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88412986</guid><author>py245164372</author><pubDate>Tue, 12 Mar 2019 01:33:25 +0800</pubDate><description><![CDATA[死锁产生的场景：

1、用户A先访问了a表，此时锁住了a表，然后再去访问了b表，此时用户B访问了b表，用户B当然也锁住了b表，当用户B访问a表示需要等待用户A释放a锁，而用户A访问b表示需要等待用户B释放b表的锁，这样就会产生死锁。

解决办法：对于数据库的多表操作时，尽量按照同样的顺序进行处理，避免同时锁定两个资源，如操作A和B两张表时，总是按先A后B的顺序处理，必须同时锁定两个资源时，要保证在...]]></description><category></category></item><item><title><![CDATA[事务的隔离级别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88412792</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88412792</guid><author>py245164372</author><pubDate>Tue, 12 Mar 2019 01:18:25 +0800</pubDate><description><![CDATA[事务的隔离级别由低到高的顺序：

   1、Read uncommitted(读未提交的)：最低级别，任何情况都无法保证；

   2、Read committed(读已提交的):可避免脏读的发生；

   3、Repeatable read(可重复读)：可避免脏读和不可重复读的发生；

   4、Serializable(串行化):可避免脏读、幻读、不可重复读的发生；

...]]></description><category></category></item><item><title><![CDATA[JAVA中double和float类型精度丢失]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88412629</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88412629</guid><author>py245164372</author><pubDate>Tue, 12 Mar 2019 00:10:36 +0800</pubDate><description><![CDATA[JAVA中double和float类型精度丢失的主要原因：

    我们所定义或者获取的double或float型数据其实是十进制的，计算机不能直接进行计算，需要将它转换成二进制才能识别计算；然而在转换成二进制的过程中，我们知道十进制整数转化为二进制（除2取余，逆序排列）；

     但是如果double和float类型值为小数的时候，十进制小数转二进制小数（乘2取整，顺序...]]></description><category></category></item><item><title><![CDATA[多线程产生死锁的四个必要条件]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88132449</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88132449</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 19:28:49 +0800</pubDate><description><![CDATA[多线程产生死锁的四个必要条件

1、互斥条件：任意时刻一个资源只能给一个进程使用，其他进程若申请一个资源，而该资源被另一进程占有时，则申请

者等待直到资源被占有者释放。

2、不可剥夺条件：进程所获得的资源在未使用完毕之前，不被其他进程强行剥夺，而只能由获得该资源的进程资源释放。

3、请求和保持条件：进程每次申请它所需要的一部分...]]></description><category></category></item><item><title><![CDATA[Lock和synchronized的区别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88110739</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88110739</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 13:14:34 +0800</pubDate><description><![CDATA[Lock和synchronized的区别

1、Lock是接口，而synchronized是java的关键字；

2、synchronized发生异常时，自动释放线程占有的锁，不会导致死锁现象的发生；Lock发生异常时，如果没有通过unLock()释放锁

，可能会造成死锁现象，使用Lock需要在final...]]></description><category></category></item><item><title><![CDATA[ThreadLocal的作用是什么]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88110133</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88110133</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 12:59:54 +0800</pubDate><description><![CDATA[ThreadLocal的作用

1、ThreadLocal解决多线程的并发问题，是Thread的局部变量，使用它维护变量，会使该变量的线程提供一个独立的副本，可以独立修改，不会影响其他线程的副本、
...]]></description><category></category></item><item><title><![CDATA[volatile关键字的作用]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88109483</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88109483</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 12:33:29 +0800</pubDate><description><![CDATA[volatile关键字的作用：

1、volatile关键字主要用在多线程中，用来修饰变量，保证其在多线程中的可见性，每次读到volatile变量，一定是最新的数据。

2、volatile关键字能禁止指令重排序，volatile不能保证之前访问语句的执行顺序，也不能保证之后的访问语句的执行顺序，它只能保证在它执行时，它前面访问语句执行完毕，且结果对它和之后的语句是可见性的
...]]></description><category></category></item><item><title><![CDATA[实现多线程的三种方法]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88108635</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88108635</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 12:15:32 +0800</pubDate><description><![CDATA[实现多线程的三种方法：



1、继承Thread，重写run()方法，调用start()方法启动线程；

2、实现Runnable接口，实现run()方法，用new Thread(Runnable target).start()方法启动相应线程；

3、实现Callable接口，实现call()方法，而且call()方法有返...]]></description><category></category></item><item><title><![CDATA[start()和run()方法的区别]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88108237</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88108237</guid><author>py245164372</author><pubDate>Mon, 04 Mar 2019 12:03:19 +0800</pubDate><description><![CDATA[start()和run()方法的区别：

1、start方法用来启动相应的线程；

2、run方法只是thread的一个普通方法，在主线程里执行；

3、需要并行处理的代码放在run方法中，start方法启动线程后自动调用run方法；

4、run方法必去是public的访问权限，返回类型为void。
...]]></description><category></category></item><item><title><![CDATA[Spring的七大事务传播行为]]></title><link>https://blog.youkuaiyun.com/py245164372/article/details/88089785</link><guid>https://blog.youkuaiyun.com/py245164372/article/details/88089785</guid><author>py245164372</author><pubDate>Sun, 03 Mar 2019 16:35:58 +0800</pubDate><description><![CDATA[1、PROPAGATION_REQUIRED：如果当前没有事务，就新建一个事务，如果已经存在一个事务中，加入到这个事务中。这是最常见的选择。

2、PROPAGATION_SUPPORTS：支持当前事务，如果当前没有事务，就以非事务方式执行。

3、PROPAGATION_MANDATORY：使用当前的事务，如果当前没有事务，就抛出异常。

4、PROPAGATION_REQUIRES_NEW：新...]]></description><category></category></item></channel></rss>