<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[linhao_obj的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/linhao_obj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; linhao_obj]]></copyright><item><title><![CDATA[数据权限简单设计思路]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/127387668</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/127387668</guid><author>linhao_obj</author><pubDate>Fri, 21 Oct 2022 14:07:56 +0800</pubDate><description><![CDATA[数据权限]]></description><category></category></item><item><title><![CDATA[java代码构建简单http服务器和客户端]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/120767149</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/120767149</guid><author>linhao_obj</author><pubDate>Wed, 03 Nov 2021 15:48:31 +0800</pubDate><description><![CDATA[初识http
a、超文本传输 、应用层的面向对象的协议，概念介绍网上资源一大堆，关键是基于TCP/IP通信协议来传递数据。
b、一开始接触web项目，都是先接触的servlet，tomcat服务器默认实现的一套http规范，提供了基础服务和组件环境，直接拿到请求、构建正文、响应客户端
然而一个http请求包含：
第一行：请求方式(get、post、put、delete)+“空格”+URI+“空格”+http协议版本(0.9、1.0、1.1) eg：GET /hello.html HTTP/1.1
第二行：我]]></description><category></category></item><item><title><![CDATA[Druid register mbean error报错解决]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/121122576</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/121122576</guid><author>linhao_obj</author><pubDate>Wed, 03 Nov 2021 15:38:43 +0800</pubDate><description><![CDATA[运行一个tomcat项目正常，当运行两个tomcat则报异常。
ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister mbean error javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat at com.sun.jmx.interceptor.DefaultMBeanServerIntercept]]></description><category></category></item><item><title><![CDATA[数据库版本管理工具flyway踩坑]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/120230209</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/120230209</guid><author>linhao_obj</author><pubDate>Sat, 11 Sep 2021 00:49:08 +0800</pubDate><description><![CDATA[数据库版本管理工具利器——flyway详解

首先关于什么是flyway？以及使用场景(Java对数据库版本控制的主要有两个工具：Flyway、
Liquibase)可自行百度，狗子们用了都说好！
1、demo
flyway的广泛使用已被springboot自动装配集成，进入spring官网https://start.spring.io/创建以下依赖

idea直接进入生成好的项目内application.yml进行如下配置（数据库使用高性能postgresql）
&gt; spring:
  dataso]]></description><category></category></item><item><title><![CDATA[oauth2授权码模式demo]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/113846402</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/113846402</guid><author>linhao_obj</author><pubDate>Thu, 18 Feb 2021 18:22:25 +0800</pubDate><description><![CDATA[oauth2授权码模式demo
oauth2的运行流程

用户打开客户端以后，客户端要求用户给予授权。
用户同意给予客户端授权。
客户端使用上一步获得的授权，向认证服务器申请令牌。
认证服务器对客户端进行认证以后，确认无误，同意发放令牌。
客户端使用令牌，向资源服务器申请获取资源。
资源服务器确认令牌无误，同意向客户端开放资源。

四种模式

授权码模式（authorization code）
简化模式（implicit）
密码模式（resource owner password credentials）
]]></description><category></category></item><item><title><![CDATA[python制作的一个exe程序——文件对比增量包]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/108022918</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/108022918</guid><author>linhao_obj</author><pubDate>Sat, 15 Aug 2020 17:39:44 +0800</pubDate><description><![CDATA[指定两个目录下的文件对比工具
1、业务需求
a、一般的web项目实际上tomcat服务器运行的java
class、前端js、一些静态资源等组成，不同项目间的对应目录自然文件不一样，同一个项目的不同版本即升级之间也是新增或修改了部分文件，那升级安装或是在线升级的功能实现也就是下载或手动替换掉有变动的文件
b、上一种方式的增量升级，包文件少，在线升级不影响当前应用，web服务也可以把增量文件替换后自动重启运行，还能运用到的一种场景就是maven的本地库的依赖添加，前端nodemodule的js依赖库添加，这些]]></description><category></category></item><item><title><![CDATA[security的一个过滤器——SecurityContextPersistenceFilter]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/107593584</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/107593584</guid><author>linhao_obj</author><pubDate>Sun, 26 Jul 2020 14:50:54 +0800</pubDate><description><![CDATA[security的一个过滤器——SecurityContextPersistenceFilter
1、关于security的用户信息获取
a、SecurityContextHolder.getContext().getAuthentication()
b、在 Controller 的方法中，加入 Authentication 参数，调用getPrincipal()方法
问题：异常情况上述两种方式获取用户都为null，即系统获取不到用户信息，报错状态码401，这又是怎么回事呢？
要弄明白这个问题，我们就得明白]]></description><category></category></item><item><title><![CDATA[pg数据库定时备份]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/105487827</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/105487827</guid><author>linhao_obj</author><pubDate>Mon, 13 Apr 2020 18:43:36 +0800</pubDate><description><![CDATA[了解下业务需求背景：pg数据库定时备份，服务器还有依赖的文件资源，最好备份的服务器也有一个运行的项目环境时刻连接备份的数据库
pg数据库备份方式
1、文件级备份
备份方式比较简单粗暴，直接将存储数据库的文件进行备份，也就是通常下的pgdata目录，例如：
tar -czvf backup.tar.gz /data1/pgdata
这种方法有几个限制：
1、为了得到可用的备份，需要停止数据库。创建完...]]></description><category></category></item><item><title><![CDATA[排序算法——看这一篇就够了！]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/100047881</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/100047881</guid><author>linhao_obj</author><pubDate>Sat, 24 Aug 2019 00:36:22 +0800</pubDate><description><![CDATA[排序算法——看这一篇就够了！
1、冒泡排序
①. 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
②. 对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
③. 针对所有的元素重复以上的步骤，除了最后一个。
④. 持续每次对越来越少的元素重复上面的步骤①~③，直到没有任何一对数字需要比较。

代码实现：
 //1.冒泡排序
        in...]]></description><category></category></item><item><title><![CDATA[zip格式打包导出工具类]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/89949321</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/89949321</guid><author>linhao_obj</author><pubDate>Wed, 08 May 2019 12:08:35 +0800</pubDate><description><![CDATA[服务器端zip文件生成
打包导出相关配置文件及复用，供下载、导入配置
（配合文件加密使用）
代码如下：
package com.lin.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.ut...]]></description><category></category></item><item><title><![CDATA[添加注释作者信息]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/89706709</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/89706709</guid><author>linhao_obj</author><pubDate>Tue, 30 Apr 2019 12:04:05 +0800</pubDate><description><![CDATA[添加代码作者、日期信息
近期公司项目代码核查，要求添加署名注释，以便代码追责，由于编码习惯、合作开发等各种原因，老项目代码作者信息混乱，自己写了个工具类，递归目录查询java相关的文件，添加作者和日期信息，上代码：
package com.util;

import java.io.*;
public class FileHeaderUtil {
    public static void ad...]]></description><category></category></item><item><title><![CDATA[脚手架开发必备——代码生成器的实现(varCode_1.0)]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/88921170</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/88921170</guid><author>linhao_obj</author><pubDate>Sat, 30 Mar 2019 23:34:09 +0800</pubDate><description><![CDATA[codeGenerator

框架研发的程序员们往往提供业务快速开发的脚手架，内置各种工具、技术配置集成，公司自主研发底层框架、以便其他业务部门实现快速开发，无需项目的搭建。其中代码生成器也是因需求自然而生。
提到代码生成器，鼎鼎大名的mybatis-generator也是最早接触的，但仅仅生成pojo、业务、持久层还是mapper文件

varCode_1.0
varCode:自己java代码实...]]></description><category></category></item><item><title><![CDATA[关于flex布局]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/88753220</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/88753220</guid><author>linhao_obj</author><pubDate>Fri, 22 Mar 2019 23:09:33 +0800</pubDate><description><![CDATA[初识http
a、超文本传输 、应用层的面向对象的协议，概念介绍网上资源一大堆，关键是基于TCP/IP通信协议来传递数据。
b、一开始接触web项目，都是先接触的servlet，tomcat服务器默认实现的一套http规范，提供了基础服务和组件环境，直接拿到请求、构建正文、响应客户端
然而一个http请求包含：
第一行：请求方式(get、post、put、delete)+“空格”+URI+“空格”...]]></description><category></category></item><item><title><![CDATA[springmvc全注解配置]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/88729863</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/88729863</guid><author>linhao_obj</author><pubDate>Fri, 22 Mar 2019 00:14:51 +0800</pubDate><description><![CDATA[快速搭建web项目

创建maven项目
添加依赖：
注意spring和jackson的版本兼容问题

&lt;!--spring--&gt;
   &lt;dependency&gt;
     &lt;groupId&gt;org.springframework&lt;/groupId&gt;
     &lt;artifactId&gt;spring-context&lt;/artifact...]]></description><category></category></item><item><title><![CDATA[java File实用工具]]></title><link>https://blog.youkuaiyun.com/linhao_obj/article/details/87474744</link><guid>https://blog.youkuaiyun.com/linhao_obj/article/details/87474744</guid><author>linhao_obj</author><pubDate>Sat, 16 Feb 2019 21:33:37 +0800</pubDate><description><![CDATA[File实用工具(一)
新人第一次写，从工具类开始
1、copy文件夹下所有文件
2、按文件名称或后缀选择性copy文件夹下的不同文件
3、文件夹下同类型文件合并
4、文件分割
package util;

import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
i...]]></description><category></category></item></channel></rss>