<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zy_javapythonc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zy_javapythonc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zy_javapythonc]]></copyright><item><title><![CDATA[Guava Cache、LoadingCache本地缓存的使用]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/126056380</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/126056380</guid><author>zy_javapythonc</author><pubDate>Fri, 29 Jul 2022 15:21:03 +0800</pubDate><description><![CDATA[Guava Cache、LoadingCache本地缓存的使用]]></description><category></category></item><item><title><![CDATA[记录某网站登录js逆向解密过程]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/125926599</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/125926599</guid><author>zy_javapythonc</author><pubDate>Fri, 22 Jul 2022 10:19:50 +0800</pubDate><description><![CDATA[某网站js逆向]]></description><category></category></item><item><title><![CDATA[批量删除微博]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/125594368</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/125594368</guid><author>zy_javapythonc</author><pubDate>Mon, 04 Jul 2022 10:02:58 +0800</pubDate><description><![CDATA[批量删除微博]]></description><category></category></item><item><title><![CDATA[leetcode-easy-13. 罗马数字转整数精彩题解]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/123548995</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/123548995</guid><author>zy_javapythonc</author><pubDate>Thu, 17 Mar 2022 14:12:07 +0800</pubDate><description><![CDATA[罗马数字包含以下七种字符: I， V， X， L，C，D 和 M。
字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如， 罗马数字 2 写做 II ，即为两个并列的 1 。12 写做 XII ，即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
通常情]]></description><category></category></item><item><title><![CDATA[Java根据自定义注解对接口权限控制]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/123444989</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/123444989</guid><author>zy_javapythonc</author><pubDate>Sat, 12 Mar 2022 16:01:19 +0800</pubDate><description><![CDATA[Java根据自定义注解对接口权限控制
一、前言
最近公司要求对项目的权限控制颗粒度到接口层面,原计划按照swagger注解扫描所有controller层url，并按层级维护树级结构资源，然后持久层到数据库表。
由于swagger会扫出所有接口切有一些无用url，最终决定自定义注解进行进行配置及扫描
下面将注解以及表结构放如下：
二、表结构与代码实例
create table res
(
    id            bigint                             not null]]></description><category></category></item><item><title><![CDATA[Oauth2授权模式访问之授权码模式(authorization_code)]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/122726972</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/122726972</guid><author>zy_javapythonc</author><pubDate>Fri, 28 Jan 2022 09:48:09 +0800</pubDate><description><![CDATA[Oauth2授权模式访问之授权码模式]]></description><category></category></item><item><title><![CDATA[排序算法学习-插入、希尔、归并]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/110439758</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/110439758</guid><author>zy_javapythonc</author><pubDate>Tue, 01 Dec 2020 16:56:06 +0800</pubDate><description><![CDATA[希尔排序其实是插入排序的优化，为了优化时间复杂度所进行的分断处理，在中小型数据可以使用希尔排序

package com.zhouyou.sort;

public class InsertSoort {
    public static void main(String[] args) {
        int[] data = {8,6,4,9,0,1,22};
        // 希尔排序只是在插入最外层多一层循环，进行分段处理
        for (int n = data.length.]]></description><category></category></item><item><title><![CDATA[数据结构与算法-基础数据结构:栈结构学习与练习]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109613851</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109613851</guid><author>zy_javapythonc</author><pubDate>Wed, 11 Nov 2020 10:39:42 +0800</pubDate><description><![CDATA[一、概述
栈（stack）：是线性表的一种，限制仅在线性表的一端进行插入和删除操作。其中允许插入和删除的一端称为栈顶（top），不允许插入和删除的一端称为栈底（bottom）。
二、 顺序存储栈的基本操作以及算法实现
基本操作：初始化、判断是否为空、求栈深、读取栈顶元素、出栈/入栈、栈置空等。
抽象出栈的基本操作：

先声明一个接口

package com.zhouyou.stack;

public interface MyStack&lt;Item&gt; {
    MyStack&lt;Item&]]></description><category></category></item><item><title><![CDATA[数据结构与算法-基础数据结构:链表学习]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109603203</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109603203</guid><author>zy_javapythonc</author><pubDate>Tue, 10 Nov 2020 17:23:27 +0800</pubDate><description><![CDATA[package com.zhouyou.list;

public class MyLinkedList {
    private ListNode head;
    private int size = 0;

    public void insertHead(int data){
        //插入链表的头部		data就是插入的数据
        ListNode node = new ListNode(data);
        //如果原来就有数据呢？
        node.]]></description><category></category></item><item><title><![CDATA[leetcode-递归学习:斐波那契数列]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109594545</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109594545</guid><author>zy_javapythonc</author><pubDate>Tue, 10 Nov 2020 11:00:39 +0800</pubDate><description><![CDATA[在学习多线程刷题的过程中使用CountDownLatch进行标志按序执行，其中因为在 执行countDown方法在run方法前面导致 结果有时候为213 百思不得其解，猜测是runnable在调用run方法的时候会调用cpu进行上下文切换，开始竞争资源，在此之前还未进行真正的线程安全问题。以此记录，如有错误还望指正。

static class Foo {
        private CountDownLatch one;
        private CountDownLatch two;
  ..]]></description><category></category></item><item><title><![CDATA[数据结构与算法-基础数据结构：队列实现]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109582806</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109582806</guid><author>zy_javapythonc</author><pubDate>Mon, 09 Nov 2020 18:10:13 +0800</pubDate><description><![CDATA[在学习队列的实现过程中，跟着教程自己手写了队列的实现，理解队列的先进先出原理。以及略微复杂的循环队列形成的一个闭环，略微吃力，还需努力，详细说明在注释

package com.zhouyou.queue;
// 普通队列的实现
public class ArrayQueue {

    private int head; // 头
    private int tail; // 尾
    private int[] date; // 头
    private int size; // chang.]]></description><category></category></item><item><title><![CDATA[数据结构与算法-基础数据结构：数组练习]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109121665</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109121665</guid><author>zy_javapythonc</author><pubDate>Fri, 16 Oct 2020 18:11:34 +0800</pubDate><description><![CDATA[数据结构与算法-数组练习
    给你一个包含全国人民的年龄的数据文本 约14亿
    现在需要统计有多少人 不能使用现有的器，比如map
    考察使用数组达成目的

package com.zhouyou;

import java.io.*;
import java.util.Random;

public class data {
    public static void main(String[] args) throws Exception {
        /**
         ]]></description><category></category></item><item><title><![CDATA[Mysql -MVCC多版本并发控制机制]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109068504</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/109068504</guid><author>zy_javapythonc</author><pubDate>Wed, 14 Oct 2020 11:11:57 +0800</pubDate><description><![CDATA[MVCC多版本并发控制机制什么是MVCCMVCC的作用MVCC还涉及到RR、RC等相关问题
什么是MVCC

MVCC，全称Multi-Version Concurrency Control，即多版本并发控制。MVCC是一种并发控制的方法，一般在数据库管理系统中，实现对数据库的并发访问，在编程语言中实现事务内存。

MVCC的作用

Mysql在可重复读隔离级别下如何保证事务较高的隔离性，同样的sql查询语句在一个事务里多次执行查询结果相同，就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。这]]></description><category></category></item><item><title><![CDATA[学习设计模式之工厂模式]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105570022</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105570022</guid><author>zy_javapythonc</author><pubDate>Thu, 16 Apr 2020 23:39:15 +0800</pubDate><description><![CDATA[抽象工厂模式





优点十分明显，缺陷也十分明显，每次增加产品族时，所有超级工厂下的类都要新增实现

贴上代码：
package com.zhouyou.factory.abstract1;

public interface  ProductFactory {

    PhoneProduct phoneProduct();


    RouteProduct routeProduct(...]]></description><category></category></item><item><title><![CDATA[深入理解单例模式]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105545961</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105545961</guid><author>zy_javapythonc</author><pubDate>Wed, 15 Apr 2020 23:48:49 +0800</pubDate><description><![CDATA[彻底理解单例模式单例模式是设计模式中最常见的一种，也是大家最熟悉的一种，可谓是信手沾来，最近在学习中学习到了以往未曾考虑到的东西，就此记录，以免忘却。饿汉式懒汉式以及引发的问题思考及解决
单例模式是设计模式中最常见的一种，也是大家最熟悉的一种，可谓是信手沾来，最近在学习中学习到了以往未曾考虑到的东西，就此记录，以免忘却。
饿汉式
话吧多说，直接上代码
package com.zhouyou;

/...]]></description><category></category></item><item><title><![CDATA[SpringBoot整合Shiro框架，遇到的反射以及密码加盐问题踩坑]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105409991</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/105409991</guid><author>zy_javapythonc</author><pubDate>Thu, 09 Apr 2020 14:26:54 +0800</pubDate><description><![CDATA[SpringBoot整合Shiro框架，遇到的反射以及密码加盐问题踩坑记录一下1.反射获取对象时，报NullPointerException空指针异常2.shiro登录校验密码以及加盐处理：
记录一下
1.反射获取对象时，报NullPointerException空指针异常
在使用反射获取时，使用newInstance 方法获取对象时，报空指针，百度诸多方法未寻得一正确方法，后来在各种尝试便览下发...]]></description><category></category></item><item><title><![CDATA[RabbitMQ队列及幂等概念]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/100584041</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/100584041</guid><author>zy_javapythonc</author><pubDate>Fri, 06 Sep 2019 17:51:12 +0800</pubDate><description><![CDATA[消息如何保障100%的投递成功？
BAT/TMD 互联网大厂的解决方案：


1.消息落库，对消息状态进行打标


在发送消息的时候，需要将消息持久化到数据库中，并给这个消息设置一个状态（未发送、发送中、到达）。当消息状态发生了变化，需要对消息做一个变更。针对没有到达的消息做一个轮训操作，重新发送。对轮训次数也需要做一个限制3-5次。确保消息能够成功的发送.


消息的延迟投递,做二次确认,回调检...]]></description><category></category></item><item><title><![CDATA[javalist进行内存分页显示数据到页面]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89397871</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89397871</guid><author>zy_javapythonc</author><pubDate>Fri, 19 Apr 2019 13:02:28 +0800</pubDate><description><![CDATA[由于项目某个页面从多方来源展示，无法做到查询数据库并进行分页，且数据量不大，只好用内存分页，奈何天资愚钝，网上找了半天加以改良成适合我的，才总算做好了分页，但是目前的坎又变成了筛选，暂不加以记录

先贴上分页模型

public class Page {

        private Integer currentPage;//当前页
        private int pageSize;...]]></description><category></category></item><item><title><![CDATA[java8 快速实现List转map 、分组、过滤等操作]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89390827</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89390827</guid><author>zy_javapythonc</author><pubDate>Thu, 18 Apr 2019 23:42:08 +0800</pubDate><description><![CDATA[利用java8新特性，可以用简洁高效的代码来实现一些数据处理。
定义1个Apple对象：
public class Apple {
private Integer id;
private String name;
private BigDecimal money;
private Integer num;
public Apple(Integer id, String name, BigDecim...]]></description><category></category></item><item><title><![CDATA[关于页面输入字符串、转义 java.util.regex.PatternSyntaxException Dangling meta character ‘*’ near index 0等异常]]></title><link>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89350770</link><guid>https://blog.youkuaiyun.com/zy_javapythonc/article/details/89350770</guid><author>zy_javapythonc</author><pubDate>Wed, 17 Apr 2019 10:26:33 +0800</pubDate><description><![CDATA[近期甲方验收项目，各种手段测试层出不穷，用％＆％＆％＆等特殊字符串在所有输入的地方进行验证，结果就会使页面崩了或者抛出字符串异常，由于正则一直百度，并且所有页面都需要修复感觉很恶心，诸多测试后终于找到适合我且可用的，贴上代码记录*



自定义工具类对关键部位进行检测





public static String PASSWORD_REGEX = "[\\S]{8,}";

    publ...]]></description><category></category></item></channel></rss>