<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sessionsong的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/sessionsong</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sessionsong]]></copyright><item><title><![CDATA[JDK 版本选择]]></title><link>https://blog.csdn.net/sessionsong/article/details/121291932</link><guid>https://blog.csdn.net/sessionsong/article/details/121291932</guid><author>sessionsong</author><pubDate>Fri, 12 Nov 2021 17:28:51 +0800</pubDate><description><![CDATA[JDK 版本选择
最近在做新系统架构的时候，准备将架构做个整体的更新。整个技术栈以spring-could-alibaba 为主，能后围绕它做第三方组件搭配。大概的系统架构图 可以浏览 基于Spring Cloud Alibaba 的微服务系统架构
在进行版本选择的时候，一般都是最新的稳定版本，但是现实情况，可能并不是那么美好，所以，JDK 17 虽然已经出来了，但我的这个规划里，并不适用。
主要步骤


选择 spring-cloud-alibaba 版本
因为其他都要围绕 spring-cloud-al]]></description><category></category></item><item><title><![CDATA[基于Spring Cloud Alibaba 的微服务系统架构]]></title><link>https://blog.csdn.net/sessionsong/article/details/121271941</link><guid>https://blog.csdn.net/sessionsong/article/details/121271941</guid><author>sessionsong</author><pubDate>Thu, 11 Nov 2021 17:20:39 +0800</pubDate><description><![CDATA[基于Spring Cloud Alibaba 的微服务系统架构
公司以前的微服务都是直接基于spring cloud的，最近几年，由于阿里巴巴的微服务架构兴起，社区活跃度和维护的比较及时，顾准备搭建基于 Spring Cloud Alibaba 的微服务作为公司新系统的架构。

架构图 v 0.0.1：

Spring Cloud Alibaba： https://github.com/alibaba/spring-cloud-alibaba

...]]></description><category></category></item><item><title><![CDATA[groovy 自动生成entity、mapper/service类代码]]></title><link>https://blog.csdn.net/sessionsong/article/details/119781223</link><guid>https://blog.csdn.net/sessionsong/article/details/119781223</guid><author>sessionsong</author><pubDate>Wed, 18 Aug 2021 15:53:47 +0800</pubDate><description><![CDATA[本文主要讲述如何通过idea 的script 插件 自动生成 entity、mapper/serivice 等一写简单类。减少低质量的工作任务，提高工作效率。
创建数据库连接


新增entity、mapper、serivce 类自动生成代码的groovy 脚本文件
下面我已 生成实体类的脚本为例，大家可以根据自己的实际情况，进行修改
主要关注点

java 类创建人基本信息  在 87~91 行
需要引入的注解。 在93~ 103 行
实体类是否要保留表名的统一前缀 175 行
实体类后缀 在第36 行 ]]></description><category></category></item><item><title><![CDATA[获取 一个时间周期内 周几的次数]]></title><link>https://blog.csdn.net/sessionsong/article/details/118728773</link><guid>https://blog.csdn.net/sessionsong/article/details/118728773</guid><author>sessionsong</author><pubDate>Wed, 14 Jul 2021 15:40:16 +0800</pubDate><description><![CDATA[标题获取 一个时间周期内 周几的次数
应项目需要，计算一个时间周期内、周几的次数。来计算用户购买的视频，是否到了观看时间。通过网上查找资料和总结，找到了下面两个比较不错的算法。记录下来，供后期学习
方法一
通过Stream.iterate 生成一个从开始日期到结束日期的日期流，能后通过过滤器过滤出符合要求的日期，统计总数，返回
缺点： 因为要把时间段内的时间都计算出来，比较消耗时间和内存，时间差距不大的情况下可以使用
优点： 可以通过扩展，快速的查询出具体的日期。
public static int get]]></description><category></category></item><item><title><![CDATA[cors error cross-Origin resource sharing error PreflightMissingAllowOriginHeader  问题排查]]></title><link>https://blog.csdn.net/sessionsong/article/details/114062002</link><guid>https://blog.csdn.net/sessionsong/article/details/114062002</guid><author>sessionsong</author><pubDate>Thu, 25 Feb 2021 10:13:21 +0800</pubDate><description><![CDATA[标题cors error cross-Origin resource sharing error PreflightMissingAllowOriginHeader
在chrome 浏览器中，部分接口调用会报 cors error cross-Origin resource sharing error PreflightMissingAllowOriginHeader 错误
跨域问题？
刚开始以为是跨域的问题，但是其他同一服务器下的接口，能正常调用，所以应该不是这个问题，应该问题在
请求头丢失
仔细看了下报]]></description><category></category></item><item><title><![CDATA[spring mvc  时间格式序列化,反序列化配置]]></title><link>https://blog.csdn.net/sessionsong/article/details/107641871</link><guid>https://blog.csdn.net/sessionsong/article/details/107641871</guid><author>sessionsong</author><pubDate>Tue, 28 Jul 2020 18:03:01 +0800</pubDate><description><![CDATA[spring mvc  时间格式序列化,反序列化配置
在spring mvc 项目中使用 LocalDateTime、LocalDate、LocalTime等时间类型时，为了统一般会使用 @JsonFormat、 @DateTimeFormat 注解进行格式化。但是项目当前一般使用的地方都比较多，每一个地方都加上注解，太麻烦了。所以为了简便，特意总结了下面一套配置时间格式化的配置。方便以后使用

/**
 *  时间格式序列化,反序列化,格式处理
 */
@Configuration
public clas]]></description><category></category></item><item><title><![CDATA[activiti 7 生成流程图]]></title><link>https://blog.csdn.net/sessionsong/article/details/104681140</link><guid>https://blog.csdn.net/sessionsong/article/details/104681140</guid><author>sessionsong</author><pubDate>Thu, 05 Mar 2020 18:53:30 +0800</pubDate><description><![CDATA[activiti 7 生成流程图
有一个根据流程图的bpmn 文件 生成png 图片，提供给前端预览
主要代码：
 /**
     * Get Process instance diagram
     */
    public InputStream getProcessDiagram(String processInstanceId) {
        ProcessInstance p...]]></description><category></category></item><item><title><![CDATA[activiti表名统一修改为小写]]></title><link>https://blog.csdn.net/sessionsong/article/details/104062966</link><guid>https://blog.csdn.net/sessionsong/article/details/104062966</guid><author>sessionsong</author><pubDate>Tue, 21 Jan 2020 16:18:08 +0800</pubDate><description><![CDATA[activiti表名统一修改为小写activiti表名统一修改为小写
activiti表名统一修改为小写
activiti 自动新建的表默认是大写的，但是我们数据库定义的规则是表名得小写。所以就得手动的把他改为小写，（activiti 暂时好像还不支持通过配置参数实现表名大小写）
下面我通过查询本数据库中带有act 前缀的表 并通过 CONCAT 函数来拼接，修改表名的sql
SELECT CON...]]></description><category></category></item><item><title><![CDATA[postman设置环境变量，简化操作步骤]]></title><link>https://blog.csdn.net/sessionsong/article/details/103399506</link><guid>https://blog.csdn.net/sessionsong/article/details/103399506</guid><author>sessionsong</author><pubDate>Thu, 05 Dec 2019 10:48:12 +0800</pubDate><description><![CDATA[postman设置环境变量，简化操作步骤，提高工作效率
最开始使用postman 只是做一下简单的接口调试，所有也就没太研究怎么用，最近因为接口调用复杂了很多（token 信息过期快，header 里面需要设置一些必须信息）。如果还是和以前一样，一个一个的去操作，很麻烦，所有想着postman这么流行的工具，应该有相应的功能了。所有花了些时间，研究了下。下面把自己的一些操作。记录下来。权当学习和分...]]></description><category></category></item><item><title><![CDATA[spring mvc @NotNull 传参验证]]></title><link>https://blog.csdn.net/sessionsong/article/details/102990158</link><guid>https://blog.csdn.net/sessionsong/article/details/102990158</guid><author>sessionsong</author><pubDate>Sat, 09 Nov 2019 18:47:58 +0800</pubDate><description><![CDATA[spring mvc @NotNull 传参验证
在spring mvc开发 配合前端同时进行创建，修改操作的时候，需要验证参数的有效性。
传统的方案是在代码里面通过 if else 实现
if （user.gietNmae() is null） {
	// xxx 
}else if user.getNum is null 
// xxx

以上是比较传统的方案，如果有多个地方判断参数的有效性，...]]></description><category></category></item><item><title><![CDATA[docker rpm离线安装]]></title><link>https://blog.csdn.net/sessionsong/article/details/102628738</link><guid>https://blog.csdn.net/sessionsong/article/details/102628738</guid><author>sessionsong</author><pubDate>Fri, 18 Oct 2019 17:31:29 +0800</pubDate><description><![CDATA[docker rpm离线安装
由于公司服务器的问题，阿里云上的部分服务器不能上外网，但是有需要安装docker运行环境，所以没办法，只能通过离线安装的方式进行安装。
主要步骤是：


下载相应的rpm 包并上传到服务器上去
依赖包（都选择最新的）：下载地址：http://mirrors.163.com/centos/7/os/x86_64/Packages/
audit-libs-python
c...]]></description><category></category></item><item><title><![CDATA[spring boot admin 2.1.6 监控搭建总结]]></title><link>https://blog.csdn.net/sessionsong/article/details/100600707</link><guid>https://blog.csdn.net/sessionsong/article/details/100600707</guid><author>sessionsong</author><pubDate>Sat, 07 Sep 2019 17:18:53 +0800</pubDate><description><![CDATA[最近在做新系统的框架搭建，想要给系统加一个监控应用的模块，感觉 spring boot admin 不错，就把他集成进来了。做个简单总结
我这里采用的是 maven 多module 形式，新起 一个spring boot admin 微服务，能后在其他服务器中导入相关jar 和配置就可以了，简单方便。
新建spring boot admin 服务端
新起一个叫 admin 的 module
其中 ...]]></description><category></category></item><item><title><![CDATA[spring aop DefaultAopProxyFactory 默认代理源码解析]]></title><link>https://blog.csdn.net/sessionsong/article/details/98784192</link><guid>https://blog.csdn.net/sessionsong/article/details/98784192</guid><author>sessionsong</author><pubDate>Wed, 07 Aug 2019 21:09:04 +0800</pubDate><description><![CDATA[本文主要分析 spring aop DefaultAopProxyFactory.java 里面 选择默认代理逻辑
主要方法
@Override
	public AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException {
		// 如果指定了 optimize为true 或者是proxyTargetClass...]]></description><category></category></item><item><title><![CDATA[hashmap 源码解析 扩容]]></title><link>https://blog.csdn.net/sessionsong/article/details/98638117</link><guid>https://blog.csdn.net/sessionsong/article/details/98638117</guid><author>sessionsong</author><pubDate>Tue, 06 Aug 2019 18:03:10 +0800</pubDate><description><![CDATA[这篇文章是针对 前两篇
hashmap 实现原理总结
hashmap 源码解析 new HashMap()
的补充，主要是讲解hashmap 是怎么进行扩容的。
先大概说下总结，后面在进行详细描述

如果使用的无参的构造函数申明的hashmap 在第一次put 数据的时候回进行初始化扩容，初始化map 大小是16， 扩容阈值是 12
如果使用了带参数的构造函数申明的hashmap, 在第一次put...]]></description><category></category></item><item><title><![CDATA[hashmap 源码解析  new HashMap()]]></title><link>https://blog.csdn.net/sessionsong/article/details/98211616</link><guid>https://blog.csdn.net/sessionsong/article/details/98211616</guid><author>sessionsong</author><pubDate>Fri, 02 Aug 2019 20:59:25 +0800</pubDate><description><![CDATA[hashmap 源码解析  new HashMap&lt;&gt;(7)
hashmap 实例化有四个构造方法 分别是：

默认构造函数： 最常用
 public HashMap() {
        this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
    }

指定初始化大小的
public HashMa...]]></description><category></category></item><item><title><![CDATA[mysql like '%key'  查询优化]]></title><link>https://blog.csdn.net/sessionsong/article/details/97938695</link><guid>https://blog.csdn.net/sessionsong/article/details/97938695</guid><author>sessionsong</author><pubDate>Wed, 31 Jul 2019 21:00:16 +0800</pubDate><description><![CDATA[mysql like 优化
假设给表中字段A 建了索引
在做 like 查询的时候 有如下四种情况：
1. SELECT * FROM TABLE LIKE 'XXX'
 走索引
 2. SELECT * FROM TABLE LIKE 'XXX%'
走索引
3. SELECT * FROM TABLE LIKE '%XXX'
全表扫描，不走索引
4. SELECT * FROM TABLE LI...]]></description><category></category></item><item><title><![CDATA[Spring IOC 的原理及详解]]></title><link>https://blog.csdn.net/sessionsong/article/details/97245923</link><guid>https://blog.csdn.net/sessionsong/article/details/97245923</guid><author>sessionsong</author><pubDate>Thu, 25 Jul 2019 11:11:20 +0800</pubDate><description><![CDATA[这里感谢 CSDN 的原博客：http://blog.csdn.net/m13666368773/article/details/7802126
https://www.cnblogs.com/wang-meng/p/5597490.html
看后  受益匪浅，这里再重温一遍Spring IOC

IoC理论的背景
我们都知道，在采用面向对象方法设计的软件系统中，它的底层实现都是由N个对象组成的，...]]></description><category></category></item><item><title><![CDATA[Arrays.asList() add UnsupportedOperationException 问题解析]]></title><link>https://blog.csdn.net/sessionsong/article/details/96897753</link><guid>https://blog.csdn.net/sessionsong/article/details/96897753</guid><author>sessionsong</author><pubDate>Tue, 23 Jul 2019 11:51:20 +0800</pubDate><description><![CDATA[问题代码：
		String[] str = new String[]{"a","b","c"};
        List&lt;String&gt; list = Arrays.asList(str);
        list.add("d");

这是一个很多人在使用aslist 会遇到的坑，自己也踩过几次，今天翻阅了下源码，做个笔记，加深印象。
第一步先查看下 asList 方法的实现。...]]></description><category></category></item><item><title><![CDATA[jackson can not deserialize from Object value (missing default constructor or creatorn]]></title><link>https://blog.csdn.net/sessionsong/article/details/95654471</link><guid>https://blog.csdn.net/sessionsong/article/details/95654471</guid><author>sessionsong</author><pubDate>Fri, 12 Jul 2019 20:27:57 +0800</pubDate><description><![CDATA[jackson + PageImpl redis 缓存，反序列报
JsonMappingException: Can not construct instance of org.springframework.data.domain.PageImpl: no suitable constructor found,
can not deserialize from Object value (mis...]]></description><category></category></item><item><title><![CDATA[java 三种代理模式]]></title><link>https://blog.csdn.net/sessionsong/article/details/95376837</link><guid>https://blog.csdn.net/sessionsong/article/details/95376837</guid><author>sessionsong</author><pubDate>Wed, 10 Jul 2019 21:05:13 +0800</pubDate><description><![CDATA[代理(Proxy)是一种设计模式,定义：为其他对象提供一个代理以控制对某个对象的访问，即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.
　　这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法
静态代理
在编译期确定代理对象。静态代理在使用是时，需要定义接口类，并且被代理...]]></description><category></category></item></channel></rss>