![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
个人笔记
文章平均质量分 65
KevinDai007
everyone can be successful,why not me?
展开
-
彻底解决Springboot中路径参数带 (%2F)的问题
前两天突然出现了一个线上问题,有同事反应我提供的接口报400的错误。接口路径如下,经过排查发现是sku参数中有因此springboot转义后直接报错了。由于已经有很多团队对接了相关接口,且有很多的其他接口都使用了类似的传参方式,因此需要考虑怎么在系统中不让springboot自动解码。原创 2023-06-23 23:31:35 · 1068 阅读 · 0 评论 -
反爬虫破解——裁判文书网
这段时间研究了下裁判文书网的反爬策略感觉挺有意思的,这里给大家分享一下思路分析我们先在裁判文书网上随便搜索点东西,我这里搜的是"经济犯罪",可以看到返回了很多页的数据,我们点击下一页然后看下请求观察上图中的参数,并试着在postman中调用一下试试看可以看到直接能发送成功,并且修改pageNum值之后仍然能够正常拿到返回结果,可是返回结果是加密的。那我们先来研究下如何进行解密。观察可以看到返回结构如下{ "code": 1, "description": null,原创 2021-02-19 23:01:55 · 3323 阅读 · 5 评论 -
反爬虫破解——百度翻译
这段时间研究了下百度翻译的反爬策略感觉挺有意思的,这里给大家分享一下思路分析首先我们打开浏览器的控制台(alt+command+i),然后输入 https://fanyi.baidu.com/,然后随便输入一个词语翻译一下,分析network标签页能很容易找到翻译接口观察这个post请求的参数在postman中构建此请求发现请求可以发送成功(注意,需要把网页中的cookie也拷过来才能请求成功);然而如果改变翻译内容请求就会失败所以肯定有某些参数是计算出来的,观察可以发现sign、token原创 2020-11-03 22:18:35 · 2744 阅读 · 11 评论 -
由http超时引发的故障分析
起因通过日志观察到任务执行一段时间后停止工作分析过程先介绍一下业务逻辑,任务通过一个接口触发,会在一个单线程的线程池中开启一个任务,任务逻辑为不断从数据库中查询出数据并将数据放入一个阻塞队列中等待消费者消费。消费者会单线程循环不断从队列中获取消息,然后放入线程池之中执行。消费者线程池中线程执行的逻辑为发送http请求,通过响应的结果回写数据。ok,整个业务逻辑很简单,让我们开始排查故障吧。1、是不是所有任务都执行完毕因此任务停止?检查数据库之后发现仍有未执行任务,因此排除此问题2、是不是消费端原创 2020-09-04 10:28:47 · 981 阅读 · 0 评论 -
mysql调优策略
mysql执行流程connector:主要负责处理客户端的连接、获取权限、维持、管理连接等analyzer:主要负责词法分析、语法分析optimizer:主要负责做优化,如选择合适的索引、判断条件执行的顺序、查表的顺序等等actuator:主要负责校验权限、执行sql索引此处以mysql5.7为例索引类型索引总共有四种类型:BTREEHASHFULLTEXTSPATIAL下面分别来介绍一下:HASHhash的基本结构是数组+链表,在mysql中也是如此,因此会存在has原创 2020-07-09 16:53:29 · 302 阅读 · 0 评论 -
应用限流常用方案及项目实战
在高并发系统中我们通常需要考虑当请求量过大时,如果进行限流、降级,这里我们讨论下常用的限流方案,最后给出合理的实例常用限流算法计数器法滑动窗口法漏桶算法令牌桶算法计数器法计数器法是实现起来最简单的一种算法。其思路是,比如比如我们规定某个接口在一分钟之内只能处理100个请求,那么每次有请求进来的时候我们按每分钟进行计数,当请求大于100个的时候就拒绝请求,如果到了第二分钟则重新从0开始计数,代码示例如下 //固定map大小为5,超出最大数量时抛弃较早的元素 static M原创 2020-06-04 23:03:47 · 588 阅读 · 0 评论 -
搭建gitlab
1、安装gitlab从 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ 网站上选择合适的版本下载下来,并上传到服务器或直接在服务器上下载wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.4-ce.0.el7.x86_64.rpm下载文件之后进行安装rpm -i gitlab-ce-12.9.4-ce.0.el7.x86_64.rpm注意:原创 2020-05-08 20:15:43 · 175 阅读 · 0 评论 -
安装rocketmq
1、先安装mavenwget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip解压unzip apache-maven-3.6.3-bin.zip创建maven环境变量在/etc/profile中新增环境变量,指向maven的bin目录export PATH=${PATH}:/home/centos/software/maven/bin测试mvn命令,成功则maven安原创 2020-05-08 20:08:26 · 187 阅读 · 0 评论 -
centos7 安装mysql8
最近加入了一个创业公司,一切都要自己搭,记录下遇到的一些问题1、先卸载mariadb相关的包rpm -qa | grep mariadb //查找相关的包 yum remove mariadb-5.5.64-1.el7.x86_64 //卸载相关的包2、安装mysql查看系统版本 cat /proc/version,并在页面上下载合适的包:https://dev.mysql.com/downloads/repo/yum/,下载之后把文件上传到服务器安装msyql仓库su..原创 2020-05-08 20:01:04 · 186 阅读 · 0 评论 -
线上问题记录
现象 请求一个接口,post上来的数据保存到数据库中出现中文乱码 原因 2.1 做优雅停机时,增加了一个Filter,HttpRequestCounterFilter用来在记录机器当前正在处理的请求,在Filter的处理逻辑中调用了HttpRequest的getParameterMap()方法,第一次调用该方法时,request会去解析用户传入的参数,解析结果会被缓存下来,后续不会再重新解析。原创 2017-12-04 10:08:28 · 336 阅读 · 0 评论 -
List、Vector插入性能比较
从学习java开始就知道vector使用synchronized对方法进行加锁,所以线程安全但性能较低,但随着java的对于锁的优化,现在似乎已经不是这样了,下面开始验证一下package com.kevindai.jdk8;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;i...原创 2018-02-08 15:49:59 · 2204 阅读 · 1 评论 -
java8的新特性学习
java8新增的新特性 1. 方法、lambda可作为值进行传递 2. 流(支持并行) 3. 接口能提供默认方法lambda表达式一、lambda表达式特点:匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类...原创 2018-02-09 16:18:45 · 331 阅读 · 0 评论 -
JAVA常用操作所需时间
在一些RT要求比较高的场景中,如果每个场景和流程我们都能知晓大致的执行时间,那么对于程序设计或者排查问题还有很有帮助的。下面我列出了一些经常出现,又比较重要场景的执行时间,大家也可以补充。周末在家把相关的数据基本测试过,再结合以前的经验,数据基本靠谱。 一、Java基本操作一次整型、浮点型赋值: 纳秒级一次字符串赋值:微秒级一次字符串的拼接:微秒级 至少上百微秒new一个对象: ...原创 2018-08-20 09:14:19 · 568 阅读 · 0 评论 -
Spring工程定义全局变量
<!-- 保存变量到application范围 --> <bean class="org.springframework.web.context.support.ServletContextAttributeExporter"> <property name="attributes"> <map> <entry key=原创 2017-05-18 09:52:56 · 8635 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与原创 2017-11-16 14:26:33 · 9820 阅读 · 0 评论 -
sublime指定python版本
这两天闲暇的时候学了下python,遇到一个坑,希望能帮大家解决问题背景:我用的是mac,系统中默认安装了python版本是2.7.10;我自己又安装了3.6.3版本在我用sublime对着官方文档写爬虫时,发现了一个报错 代码如下import http.clientconn = http.client.HTTPSConnection("www.baidu.com")conn.request(原创 2017-11-17 15:18:28 · 7562 阅读 · 4 评论 -
mybatis字符串匹配数字
做查询遇到一个坑,想用字符串去判断是否等于一个数字,结果一个报错,写法如下<if test="taskIdType != null and taskIdType != '0' "> and task_id like CONCAT(CONCAT('TASK', #{taskIdType}), '%')</if>正确写法如下<if test="taskIdType != null and t原创 2017-10-24 08:36:03 · 3121 阅读 · 0 评论 -
Java8 - 日期和时间实用技巧
当你开始使用Java操作日期和时间的时候,会有一些棘手。你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数。或者使用Date类来操作日期;当遇到加减月份、天数的时候 你又需要用到Calendar类;当需要格式化日期的时候需要使用java.text.DateFormat类。 总而言之在Java中操作日期不是很方便,以至于很多开发者不得不使用第原创 2017-09-01 16:08:17 · 2334 阅读 · 0 评论 -
星期转换Date格式错误
昨天在测试环境上发现一个报错,错误如下Caused by: java.lang.RuntimeException: java.text.ParseException: Unparseable date: "2017年8月9日(星期三) 17:43" at cn.fraudmetrix.octopus.sdk.service.base.util.DateUtil.string2Date(DateU原创 2017-08-23 10:53:29 · 754 阅读 · 0 评论 -
mac连接linux
刚刚使用lInux很多地方不知道怎么操作,学一点做一点笔记吧mac连接linux如何记住密码1、首先打开终端,输入ssh-keygen输入完成后会有两个提示,直接点回车就好.完成后会在~/.ssh下生成两个文件:id_rsa.pub和id_rsa 2、在终端中输入如下命令cat ~/.ssh/id_rsa.pub | ssh -p 22 root@123.456.789.012 "mkdir -p原创 2017-07-25 22:54:57 · 2577 阅读 · 0 评论 -
java8函数式接口——Precidate、Consumer、Function、Supplier
本文主要介绍java8的提供的几种函数式接口的使用Precidate先看下他的源码@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t); default Predicate<T> and(Predicate<? super T> othe...原创 2018-01-05 16:42:52 · 1125 阅读 · 0 评论 -
springboot集成thymeleaf(不重启刷新html)
springboot集成thymeleaf完整配置 1、pom文件新增spring-boot-starter-thymeleaf依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri...原创 2018-03-08 09:35:04 · 18379 阅读 · 5 评论 -
随手敲代码——删除数组重复元素(最高效版)
曾经面试的时候别人让手写出这段代码,当时写了一段,现在想来,当时应该是写错了- -、,列出个我认为最高效的,引以为进鉴!public static int[] removeReplicate(int[] a){ int length = 0; boolean isExists = false; for(int i = 0;i <= a.length -原创 2016-08-23 11:37:39 · 701 阅读 · 0 评论 -
python爬虫+词云生成小说简介
我每个月都要读一本书写一个书评,平时写书评用的插图都是在网上找的图,前段时间觉得这样不够炫酷要做一点炫酷的东西。最开始的想法是提取小说中的高频词做成词云,实践下来发现效果并不理想,主要是有吸引力的词汇太少并不能突出这本书的特点;于是想到用爬虫爬取评论来提取关键词,试验下来发现效果不错。 有了思路接下来要看怎么实现了,由于我本人是写java语言的,而java语言上并没有很好词云工具,于是自然想到...原创 2019-09-10 10:54:36 · 1030 阅读 · 0 评论 -
duboo原理分析
准备知识spirng基础知识、原理rpc基础知识netty基础知识spring基础知识spring涉及的东西太多,这里不做讲解,基本原理可以参考 https://blog.csdn.net/KevinDai007/article/details/53055409rpc基础知识rpc(Remote Procedure Call)——远程过程调用,既在机器A上调用机器B的服务,基本流...原创 2019-07-08 17:19:38 · 353 阅读 · 0 评论 -
网络协议分析
物理层(第一层):主要用来定义物理设备标准,物理层关注在一条通道上传输原始的0和1的电信号,常见的传输介质有:有线(光纤)、无线(无线电)、卫星数据链路层(第二层):用来规定0和1的分组规则,以太网协议规定,一组电信号构成一个数据包,叫做"帧"(Frame).每一帧分成两个部分:Head和Data,其中head中包含源mac地址、目标mac地址源mac地址如何知道目标mac地址? 使用A...原创 2019-05-27 17:39:10 · 5524 阅读 · 0 评论 -
SpringBoot内置servlet容器分析
springboot内置Tomcat依赖图如上图所示Tomcat在spring-boot-starter-web中自动引入如何修改内置Tomcat属性如果是正常的Tomcat容器可以通过在conf/web.xml、conf/server.xml文件来修改配置,但内置Tomcat并没有这两个文件,那么如何修改呢?通过看官方文档知道可以通过server.port属性更改Tomcat端口,由我...原创 2018-12-03 20:15:10 · 2401 阅读 · 0 评论 -
WebMvcConfigurerAdapter过时及静态资源无效
在Springboot 2.0(Spring5)后用自己的的配置类继承WebMvcConfigurerAdapter时,idea提示这个类已经过时了.网上很多说法会说使用WebMvcConfigurationSupport来代替,然而如果使用WebMvcConfigurationSupport会导致Springboot的webmvc配置失效,即访问不到静态资源。这是因为WebMvc的自动配置都...原创 2018-11-14 22:53:38 · 1917 阅读 · 0 评论 -
创建RestfulAPI
restfulAPI与普通的API到底有什么区别?网上很多说法都很虚,甚至带着点玄幻的味道,我这里给一个直观的例子来说明两者的区别普通CRUDRestCRUD查询getUseruser—GET新增addUser?xxxuser—POST修改updateUser?id=xxx&xxx=xxxuser/{id}—PUT删除deleteUs...原创 2018-11-15 23:10:10 · 492 阅读 · 0 评论 -
SpringBoot原理
什么是Spring Boot文章目录什么是Spring BootSpring Boot基本介绍Spring Boot 的特性Spring Boot启动原理自动配置加载原理Spring Boot基本介绍这里我直接引用官网的描述,官网地址:http://spring.io/projects/spring-bootSpring Boot makes it easy to create sta...原创 2018-10-22 16:49:04 · 716 阅读 · 0 评论 -
maven跳过单元测试
用maven打包时跳过测试单元有两种写法mvn clean install -Dmaven.test.skip=true;或者mvn install -DskipTests那么maven.test.skip和skipTests的区别是什么呢?经过翻阅资料,解释如下: The core difference : - maven.test.skip is a feature of...原创 2018-06-27 18:34:16 · 306 阅读 · 0 评论 -
MySQL开发规范
一.命名规范库名、表名、字段名必须使用小写字母,并采用下划线分割 为了统一规范, 库名、表名、字段名使用小写字母,禁用关键字(index,order等)前缀命令规范 视图以view_开头,事件以event_开头,触发器以trig_开头,存储过程以proc_开头,函数以func_开头,应用上面禁用普通索引以idx_各个列名简称,唯一索引以uk_各个列名简称命名,中间用_隔开。如 i...原创 2018-04-12 10:59:46 · 1119 阅读 · 0 评论 -
springboot集成dubbo、zookeeper
代码地址: spirngboot_dubbo_base:https://github.com/kevindai007/springboot_dubbo_base spirngboot_dubbo_server:https://github.com/kevindai007/springboot_dubbo_Server spirngboot_dubbo_consumer:https://gith原创 2017-06-12 08:05:05 · 3435 阅读 · 0 评论 -
github上传工程
ps.首先应该在本地安装git在github上新建repository,新建之后会有一个地址,如图 在本地已有工程的文件夹中右键,点击git bash,输入git init进行git库的初始化(此时文件夹中会多出一个.git的隐藏文件夹) 再在git bash中输入git remote add origin https://github.com/kevindai007/dubboBase.git这原创 2017-06-05 23:21:18 · 512 阅读 · 0 评论 -
springIOC源码解析(二)
上一篇文章讲到解析XML的parseBeanDefinitions(root, this.delegate)方法,首先看看源码 此处isDefaultNamespace方法是获取namespace为http://www.springframework.org/schema/beans的node,可以看到,这里是循环循环处理节点,咱们来看我标红的那行, 可以看到目前对应schema定义的包括”原创 2016-11-08 18:44:34 · 484 阅读 · 0 评论 -
Linux遇到的坑
不能上网问题解决思路: 1、 edit——virtual Network Editor——restore default 2、 设置桥接 3、 关机NetworkManger服务(此服务与network不能同时开启) service NetworkManger stop 4、 重启network服务 Service network restart 5、 在setu原创 2016-10-17 22:51:38 · 445 阅读 · 0 评论 -
springIOC源码解析(一)
spring源码我也不是很了解,原来几次下定决心去看但一直不知道入口在哪里,但这是进阶必须要迈过的一个坎,下面我按照自己现在的思路来对spring源码进行阅读,首先从spring如何管理bean开始 首先咱们看看spring管理bean的一个小demopublic class Test { public static void main(String[] args) { /原创 2016-11-06 17:34:54 · 533 阅读 · 0 评论 -
JAVA垃圾回收
看《thinking in java》中有关于垃圾回收的介绍,看完之后自己写了个简单的总结,理论方面,无代码 以下是笔记,排版什么的都是次要的栈是由编译期确定内存分配,在线程执行完毕后即会清理,内存回收较容易,一般提到的内存回收是指回收堆中的内存垃圾回收器当内存耗尽的时候工作,它工作时,一面回收空间,一面使堆中的对象更紧凑排列;通过垃圾回收器对对象进行重新排列,实现了一种高速的、有无限空间可原创 2016-04-11 18:43:18 · 635 阅读 · 0 评论 -
JAVA集合
java集合的类:1) Collection:存储一组的元素,通常这些元素都服从某种规则 1.1) List必须保持元素特定的顺序(有序,可重复) 1.1.1)ArrayList随机访问快,插入移除较慢 1.1.2)LinkedList随机访问较慢,读写快 1.2) Set不能有重复元素(无序,不可重复) 1.3) Queue保持一个队列(先进先出)的顺原创 2016-05-23 11:39:50 · 460 阅读 · 0 评论 -
重学Spring——IOC
1、IOC控制反转:控制什么?反转什么? 控制:指选择接口的实现类控制权 反转:指把这种控制权从代码中移除交由spring容器管理 2、IOC的类型 1)、构造器注入public class ConstructorInjection{ private InterfaceClass interClazz; public Const原创 2016-08-17 06:59:55 · 429 阅读 · 0 评论