<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[li_a_long的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/li_a_long</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; li_a_long]]></copyright><item><title><![CDATA[java线程池源码分析]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/108614453</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/108614453</guid><author>li_a_long</author><pubDate>Wed, 16 Sep 2020 10:57:37 +0800</pubDate><description><![CDATA[线程池UML类图

  public void execute(Runnable command) {
        // 参数空值校验
        if (command == null)
            throw new NullPointerException();
        int c = ctl.get();
        // 通过workerCountOf(c)方法获取到当前线程池的线程个数，如果小于核心线程大小，则进行addWorker(command, true)操]]></description><category></category></item><item><title><![CDATA[mybatis的类型转换器TypeHandler]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/107527840</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/107527840</guid><author>li_a_long</author><pubDate>Thu, 23 Jul 2020 08:19:13 +0800</pubDate><description><![CDATA[TypeHandler简介
在Mybatis中可以定义一个TypeHandler类型，通过它可以实现Java类型跟数据库类型的相互转换。
TypeHandler接口
public interface TypeHandler&lt;T&gt; {

  void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;

  /**
   * Gets the result.
 ]]></description><category></category></item><item><title><![CDATA[mybatis执行流程源码分析]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/107441110</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/107441110</guid><author>li_a_long</author><pubDate>Sun, 19 Jul 2020 11:32:55 +0800</pubDate><description><![CDATA[mybatis执行流程源码分析
mybatis官网 https://mybatis.org/mybatis-3/

需要准备的环境：mysql、maven、idea

根据官网的入门教程进行项目搭建
项目结构图

pom文件配置
我这项目存在父工程，可以把parent标签删除
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi]]></description><category></category></item><item><title><![CDATA[idea中基于数据库表的JPA实体生成（lombok）]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106999221</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106999221</guid><author>li_a_long</author><pubDate>Sun, 28 Jun 2020 15:39:10 +0800</pubDate><description><![CDATA[前景

首先web项目是jpa做持久层框架，数据库设计先行，所以有需要根据公司的项目结构和规范生成项目下不同分层的类。

使用

idea 2019.2中的 view工具栏下的Tool windows下的database单击一下再右侧菜单栏出现database标签，然后连接数据库，就是填用户名密码，url，等信息。然后选择数据库即schema，找到schema下的表如下图的test库下的demo表，右键点击后选择Scripted Extensions后选择 Generate POJOs.groovy，点击后]]></description><category></category></item><item><title><![CDATA[springmvc xml配置项目的改造执行过程]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106806033</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106806033</guid><author>li_a_long</author><pubDate>Wed, 17 Jun 2020 15:30:05 +0800</pubDate><description><![CDATA[项目是开源项目 技术是spring、springmvc、springjdbc、mysql，git clone的主分支，主要开发都是提交的master分支，提供了不同版本war包下载，但是想着基于源码编译本地ide运行的想法就直接用的主分支。


IDE选则 IDEA 内置tomcat启动
首先根据项目要求建立数据库表，导入数据，修改配置文件中的mysql数据库的连接信息。


配置tomcat过程自行百度，idea中部署项目到tomcat过程，我用的tomcat是8.5版本




启动后访问程序接口报错.]]></description><category></category></item><item><title><![CDATA[spring mvc DispatcherServlet原理解析]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106670594</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106670594</guid><author>li_a_long</author><pubDate>Thu, 11 Jun 2020 12:38:31 +0800</pubDate><description><![CDATA[spring mvc DispatcherServlet原理及源码解析
首先先讲一下servlet
Servlet 是什么？

Java Servlet 是运行在 Web 服务器或应用服务器上的程序，它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上
的数据库或应用程序之间的中间层。
使用 Servlet，您可以收集来自网页表单的用户输入，呈现来自数据库或者其他源的记录，还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI（Common Gateway In]]></description><category></category></item><item><title><![CDATA[jar:boot-demo/boot-demo-A/target/boot-demo-A-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/a.txt]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106420680</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106420680</guid><author>li_a_long</author><pubDate>Fri, 29 May 2020 11:02:59 +0800</pubDate><description><![CDATA[问题
在java spring boot项目中，idea中运行代码读取resources下的文件可以成功，打成jar包后却报了异常。
源码
controller

package com.example.bootdemo.controller;

import com.example.bootdemo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springfra]]></description><category></category></item><item><title><![CDATA[设计模式之单一职责原则]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/105556616</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/105556616</guid><author>li_a_long</author><pubDate>Wed, 13 May 2020 14:26:32 +0800</pubDate><description><![CDATA[单一职责原则
什么是单一职责原则
单一职责原则SRP(Single Responsibility Principle)  ，英文描述：a class or module should have a single responsibility。class即类的概念，而module 模块可以理解为是一个比类更粗粒度的概念，多个类组成模块，如最近流行的微服务架构中的微服务可以类比是一个单一职责的模块。
...]]></description><category></category></item><item><title><![CDATA[java 8 stream的一些实用操作]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106080889</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106080889</guid><author>li_a_long</author><pubDate>Tue, 12 May 2020 17:42:53 +0800</pubDate><description><![CDATA[引入依赖
 		&lt;!--对象增强--&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
            &lt;artifactId&gt;lombok&lt;/artifactId&gt;
            &lt;version&gt;1.18.12&lt;/version&gt;
        &lt;/dependency&gt;
       ]]></description><category></category></item><item><title><![CDATA[spring-cloud-kubernetes 远程访问k8s apiserver]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/106018143</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/106018143</guid><author>li_a_long</author><pubDate>Sat, 09 May 2020 14:28:06 +0800</pubDate><description><![CDATA[k8s集群apiserver访问方式
1、通过证书认证
2、通过token认证
本地开发spring-cloud-k8s时使用token访问apiserver
1、获取token
kubectl get secret `kubectl get secret -n kube-system |grep cluster |awk '{print $1}'` -n kube-system -o json | jq .data.token |sed 's/"//g'| base64 -d 

2、项目情况可以看上篇博]]></description><category></category></item><item><title><![CDATA[arthas一次方法追踪记录]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/105707395</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/105707395</guid><author>li_a_long</author><pubDate>Thu, 23 Apr 2020 15:01:34 +0800</pubDate><description><![CDATA[调研spring-cloud-kubenetes,发现组件底层通过http请求k8s的apiserver服务查询k8s管理的service列表。


本地调用跟踪源码的结果url :https://kubernetes.default.svc/api/v1/services，由于未设置namaspace等信息所以url是最简单的url，源码会读取配置，然后最终生成url。然后想看看部署到k8s上的...]]></description><category></category></item><item><title><![CDATA[里氏替换原则与多态的区别]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/105705917</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/105705917</guid><author>li_a_long</author><pubDate>Thu, 23 Apr 2020 13:50:33 +0800</pubDate><description><![CDATA[什么是里氏替换原则
英文：Liskov Substitution Principle 缩写 LSP。中文解释：子类对象能够替换程序中的父类对象，且不会改变父类的行文。
多态
定义：父类引用可以指向子类实例，子类重写或者继承父类的全部方法。
例子说明
如果一个父类提供了提现的函数，且函数定义为账户余额不能小于等于0，但是根据用户分类的不同，可能存在vip用户继承了此父类，重写了体现函数，允许用户透支...]]></description><category></category></item><item><title><![CDATA[spring-cloud-kubernetes-feign实战]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/105678139</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/105678139</guid><author>li_a_long</author><pubDate>Wed, 22 Apr 2020 11:41:47 +0800</pubDate><description><![CDATA[spring-cloud-kubernetes
关于spring-cloud-kubernetes
spring-cloud-kubernetes是springcloud官方推出的开源项目，用于将Spring Cloud和Spring Boot应用运行在kubernetes环境，并且提供了通用的接口来调用kubernetes服务，主要提供了应用程序使用k8s本身功能：服务注册发现、客户端负载均衡、...]]></description><category></category></item><item><title><![CDATA[为什么hashcode的算法要用31作为乘子]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/105598788</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/105598788</guid><author>li_a_long</author><pubDate>Sat, 18 Apr 2020 15:16:08 +0800</pubDate><description><![CDATA[为什么hashcode的算法要用31作为乘子31乘子讨论结论
31乘子讨论
我们先看看 Stack Overflow 上关于这个问题的讨论，Why does Java’s hashCode() in String use 31 as a multiplier?。其中排名第一的答案引用了《Effective Java》中的一段话，这里也引用一下：
The value 31 was chosen be...]]></description><category></category></item><item><title><![CDATA[阿里云对象存储， 服务端签名直传并设置上传回调自定义参数]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/83748650</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/83748650</guid><author>li_a_long</author><pubDate>Mon, 10 Jun 2019 11:00:03 +0800</pubDate><description><![CDATA[在服务端设置回调时，签名直传服务响应客户端发送给应用服务器的GET消息，代码片段如下：
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
	String accessId = &quot;&amp;lt;yourAccessKeyI...]]></description><category></category></item><item><title><![CDATA[计算机体系结构及内存分层]]></title><link>https://blog.youkuaiyun.com/li_a_long/article/details/91363989</link><guid>https://blog.youkuaiyun.com/li_a_long/article/details/91363989</guid><author>li_a_long</author><pubDate>Mon, 10 Jun 2019 10:58:31 +0800</pubDate><description><![CDATA[计算机体系结构及内存分层计算机体系结构结构图操作系统完成的事情地址给空间的定义
计算机体系结构
结构图

内存结构如上图：
cpu为调度器，所以速度最快，增加L1、L2缓存加快cpu的处理速度，由L2缓存和主存进行数据传递，最后主存和磁盘进行数据交换。所以内存结构是从上到下处理速度由快到慢，容量由小到大，只有磁盘进行数据永久存储。
操作系统完成的事情

抽象 应用程序可以不需要管理程序数据在内存中...]]></description><category></category></item></channel></rss>