<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[q_qwp_p的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/q_qwp_p</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; q_qwp_p]]></copyright><item><title><![CDATA[ThreadLocal]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/132414873</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/132414873</guid><author>q_qwp_p</author><pubDate>Mon, 21 Aug 2023 20:20:32 +0800</pubDate><description><![CDATA[相信很多人都听过ThreadLocal，即使没用过也听过，但是要仔细一问ThreadLocal是个啥，也不一定能说清楚。它是实现线程封闭的一种方式，那么什么是线程封闭？把对象封闭在一个线程里，即使这个对象不是线程安全的，也不会出现并发安全问题。Ad-hoc线程封闭：维护线程封闭性的职责完全由程序来承担，不推荐使用栈封闭：就是用栈（stack）来保证线程安全局部变量存储在虚拟机栈虚拟机栈是线程隔离的，所以不会有线程安全问题ThreadLocal线程封闭：简单易用。]]></description><category></category></item><item><title><![CDATA[springBoot实现自动装配的机制]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/132305646</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/132305646</guid><author>q_qwp_p</author><pubDate>Tue, 15 Aug 2023 20:36:33 +0800</pubDate><description><![CDATA[Spring Boot是基于Spring框架开发的一种应用框架，它通过自动装配机制，大大简化了Spring应用的开发和部署，使开发者可以更加专注于业务逻辑的实现，而无需过多关注Bean的实例化和装配过程。本文将介绍Spring Boot自动装配的原理和实现方式。使用过或者学习Spring 的小伙伴，一定有被 XML 配置统治的恐惧。]]></description><category></category></item><item><title><![CDATA[JDBC实现之基础操作]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131831920</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131831920</guid><author>q_qwp_p</author><pubDate>Thu, 20 Jul 2023 17:34:33 +0800</pubDate><description><![CDATA[什么是JDBC？JDBC是Java DataBase Connectivity的缩写，它是Java程序访问数据库的标准接口。使用Java程序访问数据库时，Java代码并不是直接通过直接建立TCP连接去访问数据库，而是通过JDBC接口来建立连接，而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。在JDBC驱动实现类中，通过建立TCP连接来建立真正的网络通讯连接。]]></description><category></category></item><item><title><![CDATA[CopyOnWriteArrayList核心源码阅读]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131772470</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131772470</guid><author>q_qwp_p</author><pubDate>Mon, 17 Jul 2023 20:06:17 +0800</pubDate><description><![CDATA[CopyOnWriteArrayList介绍：

CopyOnWrite 简称COW，一种用于集合的并发访问的优化策略。

思路：对一个集合容器中进行写入（有关更改操作时，即添加，修改，删除），并不会直接将操作进行在原有的集合中，而是将原集合中的元素复制（Copy）到另一个新的集合容器中，然后在对新的数组进行操作，继而将引用指向新的集合容器。

这样的好处是保证了修改操作时集合容器的线程安全，并且在写入操作时，读取操作也是可以进行的。所以copyonwrite容器是对读写分离思想的一种实现。]]></description><category></category></item><item><title><![CDATA[ReentrantLock与synchronized的区别]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131749699</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131749699</guid><author>q_qwp_p</author><pubDate>Sun, 16 Jul 2023 13:59:25 +0800</pubDate><description><![CDATA[这两种同步方式有很多相似之处，它们都是加锁方式同步，而且都是阻塞式的同步，也就是说当如果一个线程获得了对象锁，进入了同步块，其他访问该同步块的线程都必须阻塞在同步块外面等待，而进行线程阻塞和唤醒的代价是比较高的（操作系统需要在用户态与内核态之间来回切换，代价很高，不过可以通过对锁优化进行改善）。]]></description><category></category></item><item><title><![CDATA[线程池的执行流程]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131749268</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131749268</guid><author>q_qwp_p</author><pubDate>Sun, 16 Jul 2023 13:43:17 +0800</pubDate><description><![CDATA[综上所述，执行顺序为：核心线程、工作队列、非核心线程、拒绝策略。]]></description><category></category></item><item><title><![CDATA[线程的实现方式]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131742615</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131742615</guid><author>q_qwp_p</author><pubDate>Sat, 15 Jul 2023 18:40:31 +0800</pubDate><description><![CDATA[执行程序的一次执行过程称为进程，它是一个动态的概念。一个进程可以有多个线程，比如你看一个视频能同时听见声音、图像和弹幕。一个进程中至少含有一个线程(主线程)线程就是独立的执行路径，程序运行时即使自己没有创建线程，后台也会有多个线程，比如主线程和GC线程。某些进程内部还需要同时执行多个子任务。例如，我们在使用WPS时，WPS可以让我们一边打字，一边进行拼写检查，同时还可以在后台进行自动保存和上传云文档，我们把子任务称为线程。线程是进程划分成的更小的运行单位。四种基本实现方式继承Thread类。]]></description><category></category></item><item><title><![CDATA[AES算法的CBC和ECB两种工作模式]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131742128</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131742128</guid><author>q_qwp_p</author><pubDate>Sat, 15 Jul 2023 18:01:00 +0800</pubDate><description><![CDATA[对称加密算法就是传统的用一个秘钥进行加密和解密。例如，我们常用的WinZIP和WinRAR对压缩包的加密和解密，就是使用对称加密算法：从程序的角度看，所谓加密，就是这样一个函数，它接收密码和明文，然后输出密文：而解密则相反，它接收密码和密文，然后输出明文在软件开发中，常用的对称加密算法有：算法密钥长度工作模式填充模式DES56/64AESIDEA128ECB密钥长度直接决定加密强度，而工作模式和填充模式可以看成是对称加密算法的参数和格式选择。]]></description><category></category></item><item><title><![CDATA[JavaSE基础：反射机制]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131666995</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131666995</guid><author>q_qwp_p</author><pubDate>Wed, 12 Jul 2023 19:59:47 +0800</pubDate><description><![CDATA[1）Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息，从而操作类或对象的属性和方法。本质是JVM得到class对象之后，再通过class对象进行反编译，从而获取对象的各种信息。2）Java属于先编译再运行的语言，程序中对象的类型在编译期就确定下来了，而当程序在运行时可能需要动态加载某些类，这些类因为之前用不到，所以没有被加载到JVM。通过反射，可以在运行时动态地创建对象并调用其属性，不需要提前在编译期知道运行的对象是谁。大致上反射的内容就是这些，有遗漏的话，欢迎大佬补充。]]></description><category></category></item><item><title><![CDATA[Java实现加密算法（一、单项加密）]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131643705</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131643705</guid><author>q_qwp_p</author><pubDate>Mon, 10 Jul 2023 19:06:14 +0800</pubDate><description><![CDATA[本文主要对单向加密算法做个概况性的介绍，然后给出简单的加密算法 Java 实现（即MD5、SHA系列、Hmac）。​
常用的单向加密算法介绍和简单应用就是这些，MD5和SHA系列比较简单，就算大量数据泄露也不会有影响，但是为了防止彩虹表攻击，所以有了Hmac的出现。
RipeMD-160，Java中并不能直接调用，所以需要导入Jar包，最后写RipeMD-160的原因是为了注册BouncyCastleBouncycastleProvider通知类，将提供的消息摘要算法注册至Security]]></description><category></category></item><item><title><![CDATA[Java实现邮件的发送（E-mail）]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131621962</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131621962</guid><author>q_qwp_p</author><pubDate>Sun, 09 Jul 2023 15:31:54 +0800</pubDate><description><![CDATA[电子邮件的应用非常广泛，例如在某网站注册了一个账户，自动发送一封欢迎邮件，通过邮件找回密码，自动批量发送活动信息等。但这些应用不可能和我们自己平时发邮件一样，先打开浏览器，登录邮箱，创建邮件再发送。本文将简单介绍如何通过 Java 代码来创建电子邮件，并连接邮件服务器发送邮件。一、邮件服务器与传输协议要在网络上实现邮件功能，必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局，它主要负责接收用户投递过来的邮件，并把邮件投递到邮件接收者的电子邮箱中。]]></description><category></category></item><item><title><![CDATA[Java实现FTP客户端的简单功能]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/131612866</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/131612866</guid><author>q_qwp_p</author><pubDate>Sat, 08 Jul 2023 21:20:27 +0800</pubDate><description><![CDATA[在实现网络编程时，需要了解很多协议，FTP协议就是很重要的一个，这篇文章主要写对于Java在基于FTP协议实现网络编程时的一些简单操作即工具类的一些简单应用方式，例如，文件的上传下载，寻找目录和创建等。]]></description><category></category></item><item><title><![CDATA[ArrayList扩容方式的理解]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/130945859</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/130945859</guid><author>q_qwp_p</author><pubDate>Tue, 30 May 2023 14:12:32 +0800</pubDate><description><![CDATA[ArrayList的特点：1.ArrayList的底层数据结构是数组，所以查找遍历快，增删慢。2.ArrayList可随着元素的增长而自动扩容，正常扩容的话，每次扩容到原来的1.5倍。3.ArrayList的线程是不安全的。扩容可分为两种情况：第一种情况，当ArrayList的容量为0时，此时添加元素的话，需要扩容，三种构造方法创建的ArrayList在扩容时略有不同：1.无参构造，创建ArrayList后容量为0，添加第一个元素后，容量变为10，此后若需要扩容，则正常扩容。]]></description><category></category></item><item><title><![CDATA[微信小程序的路由，以及生命周期]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/126459508</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/126459508</guid><author>q_qwp_p</author><pubDate>Mon, 22 Aug 2022 09:50:59 +0800</pubDate><description><![CDATA[微信小程序的路由，以及生命周期]]></description><category></category></item><item><title><![CDATA[JavaScript中的原型和原型链以及原型继承]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/126141010</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/126141010</guid><author>q_qwp_p</author><pubDate>Wed, 10 Aug 2022 11:17:36 +0800</pubDate><description><![CDATA[JavaScript中的原型和原型链以及原型继承]]></description><category></category></item><item><title><![CDATA[js函数防抖和函数节流及其使用场景]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/126105750</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/126105750</guid><author>q_qwp_p</author><pubDate>Tue, 02 Aug 2022 19:22:55 +0800</pubDate><description><![CDATA[js函数防抖和函数节流及其使用场景]]></description><category></category></item><item><title><![CDATA[JS中常用的数组方法和循环]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/125997962</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/125997962</guid><author>q_qwp_p</author><pubDate>Tue, 26 Jul 2022 22:26:00 +0800</pubDate><description><![CDATA[JS中常用的数组方法和循环]]></description><category></category></item><item><title><![CDATA[css的基础样式]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/125958326</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/125958326</guid><author>q_qwp_p</author><pubDate>Sun, 24 Jul 2022 16:01:57 +0800</pubDate><description><![CDATA[css基础样式]]></description><category></category></item><item><title><![CDATA[常用html标签及其属性]]></title><link>https://blog.youkuaiyun.com/q_qwp_p/article/details/125749463</link><guid>https://blog.youkuaiyun.com/q_qwp_p/article/details/125749463</guid><author>q_qwp_p</author><pubDate>Wed, 13 Jul 2022 23:40:29 +0800</pubDate><description><![CDATA[html基本标签及属性：基本标签、注释，特殊符号、图片标签、a链接等]]></description><category></category></item></channel></rss>