<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DDDDeng_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DDDDeng_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DDDDeng_]]></copyright><item><title><![CDATA[开放API接口签名验证方式（开放平台+APP）]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/119000433</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/119000433</guid><author>DDDDeng_</author><pubDate>Thu, 22 Jul 2021 15:30:07 +0800</pubDate><description><![CDATA[接口安全问题

请求身份是否合法？
请求参数是否被篡改？
请求是否唯一？

AccessKey&amp;SecretKey （开放平台）
请求身份
为开发者分配AccessKey（开发者标识，确保唯一）和SecretKey（用于接口加密，确保不易被穷举，生成算法不易被猜测）。
防止篡改
参数签名

按照请求参数名的字母升序排列非空请求参数（包含AccessKey），使用URL键值对的格式（即key1=value1&amp;key2=value2…）拼接成字符串stringA；
在stringA最后拼接上Se]]></description><category></category></item><item><title><![CDATA[对软件测试人员的要求]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/117091009</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/117091009</guid><author>DDDDeng_</author><pubDate>Thu, 20 May 2021 20:21:04 +0800</pubDate><description><![CDATA[对软件测试人员的要求
朱少民老师：
​	不少计算机软件业界人士认为，对软件测试人员要求比较低、容易招聘，只要他们会操作计算机、有一定的软件经验就可以了。他们认为，软件测试人员要一步一步操作所要测的软件，就能发现程序中的问题；或者依据软件产品规格设计说明书，通过和软件的实际表现进行对比就能够发现两者不一致的地方，发现缺陷，这些都不需要什么技术。
​	这种想法是错误的。测试工作的确是一项技术工作，不局限与功能测试，在进行集成测试和系统测试时，测试人员必须明白被测软件系统的实现原理、方法以及设计的各种第三方平台、]]></description><category></category></item><item><title><![CDATA[使用Wireshark抓取https加密报文]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/116521444</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/116521444</guid><author>DDDDeng_</author><pubDate>Sat, 08 May 2021 11:29:17 +0800</pubDate><description><![CDATA[Wireshark抓取https加密报文
原文链接：https://segmentfault.com/a/1190000023568902
1. 通过浏览器的 SSL 日志功能
目前该方案只支持Chrome和Firefox浏览器，通过设置SSLKEYLOGFILE环境变量，可以指定浏览器在访问SSL/TLS网站时将对应的密钥保存到本地文件中，有了这个日志文件之后wireshake就可以将报文进行解密了。


首先设置SSLKEYLOGFILE环境变量：



配置wireshake，首选项-&gt;Prot]]></description><category></category></item><item><title><![CDATA[Selenium框架学习]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/115441748</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/115441748</guid><author>DDDDeng_</author><pubDate>Mon, 05 Apr 2021 14:13:43 +0800</pubDate><description><![CDATA[Selenium框架学习
参考资料：https://www.cnblogs.com/yyoba/p/12048866.html
一、简介
Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中，就像真正的用户在操作一样。支持的浏览器包括IE（7, 8, 9, 10, 11），[Mozilla Firefox](https://baike.baidu.com/item/Mozilla Firefox/3504923)，Safari，Google Chrome，Opera，]]></description><category></category></item><item><title><![CDATA[HashMap集合（高级）]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/115326565</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/115326565</guid><author>DDDDeng_</author><pubDate>Tue, 30 Mar 2021 15:22:51 +0800</pubDate><description><![CDATA[该文为课程笔记
课程连接：bilibili:黑马程序员
笔记参考：链接
一、HashMap集合简介
​	HashMap基于哈希表的Map接口实现，是以key-value存储形式存在，即主要用来存放键值对。HashMap的实现不是同步的，这意味着它不是线程安全的。它的key、value都可以为null。此外，HashMap中的映射不是有序的。
​	JDK1.8之前 HashMap由数组＋链表组成的，数组是HashMap的主体，链表则是主要为了解决hash冲突(两个对象调用的hashCode方法计算的哈希码值一]]></description><category></category></item><item><title><![CDATA[ArrayList和LinkedList的区别、优缺点以及应用场景]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/113869384</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/113869384</guid><author>DDDDeng_</author><pubDate>Fri, 19 Feb 2021 18:06:00 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/TTTZZZTTTZZZ/article/details/84916281?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&amp;depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.cont]]></description><category></category></item><item><title><![CDATA[剑指Offer10 斐波那契数列（普通递归，记忆化递归，动态规划）]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/113687624</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/113687624</guid><author>DDDDeng_</author><pubDate>Fri, 05 Feb 2021 11:47:23 +0800</pubDate><description><![CDATA[剑指Offer10 斐波那契数列（普通递归，记忆化递归，动态规划）
/**
 * @version V1.0
 * @ClassName:Offer10_1
 * @Description: 斐波那契数列
 * @author:Daniel
 * @date:2021/1/25 上午10:59
 */
public class Offer10_1 {

    public static void main(String[] args) {
        System.out.println(fib3(4]]></description><category></category></item><item><title><![CDATA[LeetCode26 27 删除排序数组中的重复项、移除元素]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/113104674</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/113104674</guid><author>DDDDeng_</author><pubDate>Mon, 25 Jan 2021 10:34:01 +0800</pubDate><description><![CDATA[双指针常见用法
一、双指针法将时间复杂度O(n^2)的解法优化为 O(n)的解法，可以将时间复杂度一个数量级。

27 移除元素
15 三数之和
18 四数之和

二、 双指针来记录前后指针实现链表反转

206 反转链表

三、 使用双指针来确定有环

142 环形链表2

LeetCode26 删除排序数组中的重复项

题目

给定一个排序数组，你需要在 原地 删除重复出现的元素，使得每个元素只出现一次，返回移除后数组的新长度。
不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) ]]></description><category></category></item><item><title><![CDATA[剑指Offer06 从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/112898219</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/112898219</guid><author>DDDDeng_</author><pubDate>Wed, 20 Jan 2021 17:05:03 +0800</pubDate><description><![CDATA[剑指Offer06 从尾到头打印链表

题目

输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
示例 1：
输入：head = [1,3,2]
输出：[2,3,1]

限制：
0 &lt;= 链表长度 &lt;= 10000
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

思路

​]]></description><category></category></item><item><title><![CDATA[剑指Offer05 替换空格]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/112877597</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/112877597</guid><author>DDDDeng_</author><pubDate>Wed, 20 Jan 2021 15:16:15 +0800</pubDate><description><![CDATA[剑指Offer05 替换空格

题目

请实现一个函数，把字符串 s 中的每个空格替换成"%20"。
示例 1：
输入：s = "We are happy."
输出："We%20are%20happy."

限制：
0 &lt;= s 的长度 &lt;= 10000
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

代码

/**
 * @v]]></description><category></category></item><item><title><![CDATA[剑指Offer03 数组中重复的数字]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/112859048</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/112859048</guid><author>DDDDeng_</author><pubDate>Wed, 20 Jan 2021 10:25:22 +0800</pubDate><description><![CDATA[剑指Offer03 数组中重复的数字
记录四种解法，逐步优化

题目

找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1：
输入：
[2, 3, 1, 0, 2, 5, 3]
输出：2 或 3 

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/shu-zu-zhong-zhong-]]></description><category></category></item><item><title><![CDATA[springboot项目中classpath路径到底指哪里？]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111353402</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111353402</guid><author>DDDDeng_</author><pubDate>Fri, 18 Dec 2020 09:54:43 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/wppwpp1/article/details/106628669/
https://www.cnblogs.com/eden-libinglin/p/13831822.html
https://blog.youkuaiyun.com/qq_37434832/article/details/100096485

]]></description><category></category></item><item><title><![CDATA[Java静态内部类与非静态内部类的区别]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111309878</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111309878</guid><author>DDDDeng_</author><pubDate>Thu, 17 Dec 2020 10:27:40 +0800</pubDate><description><![CDATA[Java静态内部类与非静态内部类的区别
1 static 静态修饰符
在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的。
static修饰表示静态的，在类加载时JVM会把它放到方法区，被本类以及本类中所有实例所公用。在编译后所分配的内存会在一直存在，直到程序退出内存才会释放这个空间。如果一个被所有实例公用的方法被申明为static，那么就可以节省空间了，不用每个实例初始化的时候都被分配到内存。
2.内部类
定义在一个类内部的类叫内部类，包含内部类的类称为外部类。内部类可以声明public、pr]]></description><category></category></item><item><title><![CDATA[【尚硅谷数据结构】第 10 章 树结构的基础部分]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246778</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246778</guid><author>DDDDeng_</author><pubDate>Wed, 16 Dec 2020 10:21:39 +0800</pubDate><description><![CDATA[1、二叉树
1.1、为什么需要二叉树
1.1.1、数组存储方式的分析

优点： 通过下标方式访问元素， 速度快。 对于有序数组， 还可使用二分查找提高检索速度
缺点： 如果要检索具体某个值， 或者插入值(按一定顺序)会整体移动，效率较低


1.1.2、链式存储方式的分析

优点： 在一定程度上对数组存储方式有优化(比如： 插入一个数值节点， 只需要将插入节点， 链接到链表中即可，删除效率也很好)。
缺点： 在进行检索时， 效率仍然较低， 比如(检索某个值， 需要从头节点开始遍历)


1.1.3、树存储方]]></description><category></category></item><item><title><![CDATA[【尚硅谷数据结构】第 9 章 哈希表]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246728</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246728</guid><author>DDDDeng_</author><pubDate>Wed, 16 Dec 2020 10:13:34 +0800</pubDate><description><![CDATA[第 9 章 哈希表
1、Google 上机题

看一个实际需求， google 公司的一个上机题:
有一个公司，当有新的员工来报道时,要求将该员工的信息加入(id, 性别, 年龄, 住址…)，当输入该员工的 id 时，要求查找到该员工的所有信息
要求：不使用数据库，尽量节省内存，速度越快越好 =&gt; 哈希表(散列)

2、哈希表基本介绍


散列表（Hash table， 也叫哈希表） ，是根据关键码值(Key value)而直接进行访问的数据结构。


它通过把关键码值映射到表中一个位置来访问记录， ]]></description><category></category></item><item><title><![CDATA[【尚硅谷数据结构】第 8 章 查找算法]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246649</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111246649</guid><author>DDDDeng_</author><pubDate>Wed, 16 Dec 2020 10:11:49 +0800</pubDate><description><![CDATA[1、查找算法介绍

顺序(线性)查找
二分查找/折半查找 （前提是数组有序）
插值查找
斐波那契查找

2、线性查找


顺序查找代码
public class SeqSearch {

    public static void main(String[] args) {
        int[] arr = {1, 9, 11, -1, 34, 89}; // 没有顺序的数组
        int i = seqSearch(arr,11);
        if (i == -1) {
    ]]></description><category></category></item><item><title><![CDATA[String、StringBuffer和StringBuilder区别]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/111031716</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/111031716</guid><author>DDDDeng_</author><pubDate>Fri, 11 Dec 2020 11:20:09 +0800</pubDate><description><![CDATA[String、StringBuffer和StringBuilder的区别：
String
String类是不可变类，即一旦一个String对象被创建以后，包含在这个对象中的字符序列是不可改变的，直至这个对象被销毁。
这个是String类的解释，之前看到这个情况，不能理解上述的解释，如下
String a = "123";
a = "456";
// 打印出来的a为456
System.out.println(a)

看到这里，不明白了，这不是明明已经对他进行修改了吗？为什么还说他是一个不可变类呢？
经过学习]]></description><category></category></item><item><title><![CDATA[CentOS7防火墙常用设置指令]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/110946186</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/110946186</guid><author>DDDDeng_</author><pubDate>Thu, 10 Dec 2020 09:29:45 +0800</pubDate><description><![CDATA[一、防火墙的开启、关闭、禁止命令
（1）设置开机启用防火墙
systemctl enable firewalld.service

（2）设置开机禁用防火墙
systemctl disable firewalld.service

（3）启动防火墙
systemctl start firewalld

（4）关闭防火墙
systemctl stop firewalld

（5）检查防火墙状态
systemctl status firewalld 

二、使用firewall-cmd配置端口
（1）查看防火墙]]></description><category></category></item><item><title><![CDATA[【尚硅谷数据结构】第 7 章 排序算法]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/110421793</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/110421793</guid><author>DDDDeng_</author><pubDate>Tue, 01 Dec 2020 09:48:38 +0800</pubDate><description><![CDATA[1、排序算法介绍
1.1、排序算法的简介

排序也称排序算法(Sort Algorithm)， 排序是将一组数据， 依指定的顺序进行排列的过程。

1.2、排序算法的分类


内部排序：指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。


外部排序法：数据量过大， 无法全部加载到内存中， 需要借助外部存储(文件等)进行排序。


常见的排序算法分类



2、算法的复杂度
2.1、时间复杂度的度量方法

事后统计的方法：这种方法可行, 但是有两个问题：

一是要想对设计的算法的运行性能进行评测，]]></description><category></category></item><item><title><![CDATA[Java多线程死锁案例及分析]]></title><link>https://blog.youkuaiyun.com/DDDDeng_/article/details/110294843</link><guid>https://blog.youkuaiyun.com/DDDDeng_/article/details/110294843</guid><author>DDDDeng_</author><pubDate>Sat, 28 Nov 2020 22:17:31 +0800</pubDate><description><![CDATA[1.Demo
/**
 * @version V1.0
 * @ClassName:DeadLockTest
 * @Description: 死锁测试
 * @author:Daniel
 * @date:2020/11/28 下午9:37
 */
public class DeadLockTest implements Runnable{
    A a = new A();
    B b = new B();

    public void init() {
        Thread.curr]]></description><category></category></item></channel></rss>