<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[希望和大家多多交流技术！]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_40643699</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_40643699]]></copyright><item><title><![CDATA[JVM字节码class文件和类的加载]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/123041920</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/123041920</guid><author>qq_40643699</author><pubDate>Mon, 21 Feb 2022 11:35:49 +0800</pubDate><description><![CDATA[每一个java类被编译后都会生成一个对应的.class字节码文件，通常以16进制来查看，数据是以二进制流的形式存储的，中间没有分隔符。

.class文件是编译的结果，只加载了常量、静态成员变量、静态成员方法、static代码块等。在程序运行时才会加载进JVM内存。

.class字节码文件由十个部分组成：





MagicNumber(魔数) ：

位于.class字节码文件最开头的四个字节，是固定值0xCAFEBABE。虚拟机加载.class文件时会先检查魔数是不是0xCAFEBAB...]]></description><category></category></item><item><title><![CDATA[JUC包中并发安全集合]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122893138</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122893138</guid><author>qq_40643699</author><pubDate>Sat, 12 Feb 2022 11:26:21 +0800</pubDate><description><![CDATA[1、CopyOnWriteArrayList

CopyOnWriteArrayList是并发安全的ArrayList，采用写时复制的策略
	
	Object[]属性用来存放数组的元素
	ReentrantLock属性是一个独占锁，为了保证同时只能有一个线程操作数组，实现并发安全
1、add（E e）方法





2、get（int index）方法

先获取数组
	通过下标访问数组元素
整个过程没有上锁，从而导致的问题？——数据的弱一致问题
	假设线程A在获取数组元素的过程中，另外一个线程B删除了这个元]]></description><category></category></item><item><title><![CDATA[mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的？]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122455766</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122455766</guid><author>qq_40643699</author><pubDate>Sat, 12 Feb 2022 10:30:31 +0800</pubDate><description><![CDATA[DAO接口的全路径名和 XML文件中的 SQL标签的namespace +id是一样的。其实，这也是建立关联的根本原因。


一句话讲完就是：MyBatis 会先解析这些 XML 文件，通过 XML 文件里面的命名空间 （namespace）跟 DAO 建立关系；然后 XML 中的每段 SQL 会有一个id 跟 DAO 接口的方法名一样，从而进行关联。

Mybatis配置文件：


&lt;!-- DAO接口所在包名，Spring会自动查找其下的类 --&gt;
&lt;bean...]]></description><category></category></item><item><title><![CDATA[Java并发编程——锁概述]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122886550</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122886550</guid><author>qq_40643699</author><pubDate>Fri, 11 Feb 2022 22:46:53 +0800</pubDate><description><![CDATA[1、乐观锁和悲观锁

悲观锁共享资源认为数据很容易被其他任务修改，因此在操作该共享资源前首先要去获取这个共享资源的监视器锁，才会对资源进行操作。如果获取不到锁就等待。
	乐观锁认为共享资源一般不容易被其他任务修改，因此直接访问资源，直到提交修改时再去检测是否有其他任务修改了该资源。
2、公平锁和非公平锁

公平锁是指各个线程获取锁的顺序是按照申请锁的顺利来的，最早申请锁的线程首先获得锁
	非公平锁不一定是按先到先得的顺序
ReentrantLock提供了公平锁和非公平锁的实现：


默认是非公平锁：Reen]]></description><category></category></item><item><title><![CDATA[CAS算法以及CAS在JUC包原子类的应用]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122887254</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122887254</guid><author>qq_40643699</author><pubDate>Fri, 11 Feb 2022 22:46:45 +0800</pubDate><description><![CDATA[1、CAS的引入

i++不是原子操作
	可以在synchronized代码块中使用i++来保证原子性，但是synchronized的获取锁和释放锁带来的上下文切换开销太大
	可以通过原子类（AutomicLong）来保证原子性，同时原子类中使用了CAS算法，保证了不阻塞情况下实现原子操作
2、CAS介绍

CAS，compare and swap，也属于乐观锁的实现机制。
	JAVA JDK中的unsafe类提供了一系列CAS操作。
3、JDK中的unsafe类

unsafe类中的方法都是本地（nati]]></description><category></category></item><item><title><![CDATA[《图解HTTP》读书笔记]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122830613</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122830613</guid><author>qq_40643699</author><pubDate>Wed, 09 Feb 2022 11:44:14 +0800</pubDate><description><![CDATA[HTTP-TCP-IP通信流





URL和URI的区别

URL : 统一资源定位符
	URI：统一资源标识符
	URI是一个概念，只要能标识网络上某一个资源的都叫URI。URL是URI的子集，URL还提供了网络资源具体的访问方式


HTTP1.0、1.1、2.0的区别

HTTP1.1的变化： 

1.1增加了长连接，并且默认就是长连接。HTTP1.0时每次建立TCP连接只能进行一次HTTP通信，在HTTP1.1的长连接中，只要通信双方没有提出断开连接，就一直处于连接状态。   


H...]]></description><category></category></item><item><title><![CDATA[《网络是怎么连接的》读书笔记]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122741662</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122741662</guid><author>qq_40643699</author><pubDate>Sat, 29 Jan 2022 16:37:09 +0800</pubDate><description><![CDATA[纲要

    这本书详细介绍了在浏览器输入URL到显示页面的整个过程，分章节地介绍了这个过程中从 浏览器客户端到协议栈、网卡，再到集线器、交换器、路由器，再到防火墙、缓存服务器，再到服务器以及返回的的整个过程。



1、解析URL

URL通常由协议、域名、端口、文件目录构成——http://www.lab.glasscom.com/dir/
	解析URL，确定web服务器、文件所在的目录、需要对文件进行什么样的操作
2、生成HTTP请求

解析URL后，生成对应的HTTP请求。web服务器收.....]]></description><category></category></item><item><title><![CDATA[Nginx]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122501732</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122501732</guid><author>qq_40643699</author><pubDate>Mon, 17 Jan 2022 20:10:31 +0800</pubDate><description><![CDATA[一、Ngnix的功能


Nginx——反向代理服务器












二、Nginx请求转发的配置

nginx根目录/conf/nginx.conf配置，配置文件


配置Nginx请求转发规则——路径匹配
	根据前端请求地址中包含的内容将请求转发到不同的服务器上





...]]></description><category></category></item><item><title><![CDATA[项目整体总结]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122495838</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122495838</guid><author>qq_40643699</author><pubDate>Sat, 15 Jan 2022 18:13:15 +0800</pubDate><description><![CDATA[一、项目介绍

1、网站介绍

我的项目是一个在线教育网站，分为前台用户系统和后台管理系统；前台用户系统面向学员用户，后台管理系统面向网站运营管理员。

前台用户系统主要功能包括：

1、通过课程列表获取课程的价格、讲师、介绍、章节等详情信息，点击章节可以播放课程视频。
	2、通过讲师列表查找讲师的教的课程和本人介绍、评级等信息。


后台管理系统主要功能包括：

课程管理模块，包括课程的上传和删除、课程的分类
	讲师管理模块，包括讲师信息的添加和删除
	统计分析模块，统计分析课程播放量、订单量等信息
	订]]></description><category></category></item><item><title><![CDATA[项目SpringCloud微服务架构总结]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122502755</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122502755</guid><author>qq_40643699</author><pubDate>Sat, 15 Jan 2022 18:12:40 +0800</pubDate><description><![CDATA[项目是基于SpringBoot和SpringCloud的微服务架构


一、微服务架构的介绍

1、什么是微服务

微服务架构风格是一种使用一个个独立部署运行的服务模块共同开发单个应用的方式途径，每个服务运行在自己的进程中，独立部署到不同的服务器上。
	各个服务模块使用轻量级机制通信，通常是HTTP API
	，这些服务基于业务能力构建，并能够通过自动化部署机制来独立部署，这些服务使用不同的编程语言实现，以及不同数据存储技术，并保持最低限度的集中式管理。
2、微服务的优点

各个服务独立、分开，代码体量小.]]></description><category></category></item><item><title><![CDATA[Mybatis级联]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122472533</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122472533</guid><author>qq_40643699</author><pubDate>Thu, 13 Jan 2022 15:21:24 +0800</pubDate><description><![CDATA[以下内容来自《深入浅出Mybatis》


数据库中表的关系包含一对一、一对多、多对多的关系，mybatis级联也包含一对一、一对多、多对多的关系，这里只介绍一对一级联、一对多级联。

一、一对一级联 : &lt;association&gt;

有两张表，分别是学生证表（t_student_selfcard）和学生表（t_student）构成一对一的级联关系
	需求是查询根据t_student的id查询出学生信息，包括学生证的所有信息（在sql中我们可以使用join连接查询）




首先创建POJO..]]></description><category></category></item><item><title><![CDATA[Mybatis的各个标签]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122459410</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122459410</guid><author>qq_40643699</author><pubDate>Wed, 12 Jan 2022 19:51:35 +0800</pubDate><description><![CDATA[常见的select|insert|updae|delete标签
	
	上动态sql的9个标签 trim | where | set | foreach | if | choose | when | otherwise | 

	bind 
	


&lt;resultMap&gt;
定义POJO和表中字段的映射关系


	&lt;sql&gt;和&lt;include&gt;
	
    通过&lt;sql&gt;标签定义一段sql语句的组成部分，其他语句可以通过引用来使用这段sq...]]></description><category></category></item><item><title><![CDATA[MyBatis动态SQL详解]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122457436</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122457436</guid><author>qq_40643699</author><pubDate>Wed, 12 Jan 2022 17:08:54 +0800</pubDate><description><![CDATA[Mybatis动态sql可以在Xml映射文件内，以标签的形式编写动态sql

执行原理是根据表达式的值 ，完成逻辑判断， 并动态拼接sql的功能。 




常见的动态SQL标签：


	if
	

  &lt;select id="selectByStudentSelective" resultMap="BaseResultMap" parameterType="com.homejim.mybatis.entity.Student"&gt;
    select
    &lt;include refi.]]></description><category></category></item><item><title><![CDATA[Mybatis是如何将sql执行结果封装为目标对象并返回的？都有哪些映射形式？]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122457087</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122457087</guid><author>qq_40643699</author><pubDate>Wed, 12 Jan 2022 16:51:39 +0800</pubDate><description><![CDATA[映射方式


1、当列名和封装查询结果的类的属性名一一对应时：


这时MyBatis 有自动映射功能，将查询的记录封装到resultType 指定的类的对象中去

&lt;mapper namespace="com.hanT.dao.UserDao"&gt;
    &lt;!--id对应接口中的方法名，resultType为返回结果的类型，要用类的全限定名--&gt;
    &lt;select id="getUserList" resultType="com.hanT.pojo.User"&gt;.]]></description><category></category></item><item><title><![CDATA[Mybatis工作原理]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122443375</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122443375</guid><author>qq_40643699</author><pubDate>Wed, 12 Jan 2022 15:19:08 +0800</pubDate><description><![CDATA[1、首先通过 SqlSessionFactoryBuilder创建SqlSessionFactory工厂类，再通过SqlSessionFactory工厂类创建SqlSession对象。


每个mybatis-config.xml对应一个SqlSessionFactory对象，也就是说如果有多套环境，每个环境创建一个SqlSessionFactory
	SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在，建议使用单例模式或者静态单例模式。

//sqlSessionFactor..]]></description><category></category></item><item><title><![CDATA[微信支付模块]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122288232</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122288232</guid><author>qq_40643699</author><pubDate>Mon, 03 Jan 2022 22:12:13 +0800</pubDate><description><![CDATA[阿昌微信支付博客地址


一、需求分析

一些课程为收费课程，课程详情页面会有立即支付按钮，支付后才能观看。

支付后需要弹出微信二维码和一些订单号信息。

二、数据库表单设计

两张表
	订单表（t_order）：点击立即支付之后就会生成订单表的一行记录
	支付记录表（t_Pay_Log）:支付后生成支付记录表的一行记录


三、controller层接口

按照支付的流程，controller一共五个接口（只介绍重要的接口）

接口一：

点击立即购买按钮，根据课程id，在订单表中生成...]]></description><category></category></item><item><title><![CDATA[SpringSecurity底层原理和认证授权流程总结]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/122277874</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/122277874</guid><author>qq_40643699</author><pubDate>Mon, 03 Jan 2022 13:52:18 +0800</pubDate><description><![CDATA[安全框架（springsecurity、shiro等）主要分为两个部分：

认证：系统认为用户是否能登录
	授权：系统判断用户是否有权限去做某些事情
项目主要使用了：基于token的用户权限认证与授权



模块一：登录时springsecurity获取用户的信息，比如用户名、密码、和查数据库得到其权限列表

如果系统的模块众多，每个模块都需要进行授权与认证，所以我们选择基于 token 的形式 

进行授权与认证，用户根据用户名密码认证成功，然后获取当前用户角色的一系列权限 

值，并以用户名为 key.]]></description><category></category></item><item><title><![CDATA[Redis笔记]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/121362802</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/121362802</guid><author>qq_40643699</author><pubDate>Wed, 17 Nov 2021 14:42:27 +0800</pubDate><description><![CDATA[一、数据库发展概述


1、单机Mysql时代




90年代,一个网站的访问量一般不会太大，单个数据库完全够用。随着用户增多，网站出现以下问题

数据量增加到一定程度，单机数据库就放不下了
	数据的索引（B+ Tree）,一个机器内存也存放不下
	访问量变大后（读写混合），一台服务器承受不住。

2、Memcached(缓存) + Mysql + 垂直拆分（读写分离）


网站80%的情况都是在读，每次都要去查询数据库的话就十分的麻烦！所以说我们希望减轻数据库的压力，我们可以使用缓存来保证效率！
...]]></description><category></category></item><item><title><![CDATA[mybatis-plus笔记]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/121210608</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/121210608</guid><author>qq_40643699</author><pubDate>Sun, 14 Nov 2021 22:22:32 +0800</pubDate><description><![CDATA[Mybatis-Plus是Mybatis的增强工具包，在 Mybatis 的基础上只做增强不做改变，为简化开发、提高效率而生。其简化了CRUD操作，提供了代码生成器,强大的条件构造器，同时内置了多个实用插件：标配的分页插件、性能分析插件、全局拦截插件等。使得开发过程中，基本的范式代码都一句话解决了，省去了很多重复的操作
...]]></description><category></category></item><item><title><![CDATA[SpringBoot开发一个简单的网站]]></title><link>https://blog.youkuaiyun.com/qq_40643699/article/details/120687204</link><guid>https://blog.youkuaiyun.com/qq_40643699/article/details/120687204</guid><author>qq_40643699</author><pubDate>Thu, 14 Oct 2021 23:04:34 +0800</pubDate><description><![CDATA[project：springboot-02！！！

一、模拟一个数据库



pojo.Department


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
    private Integer id;
    private String departmentName;

}

pojo.Employee


@Data
@NoArgsConstructor
@AllArgsConstructor
publ]]></description><category></category></item></channel></rss>