<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[csdnnmbdybb的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/csdnnmbdybb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csdnnmbdybb]]></copyright><item><title><![CDATA[vmware，ubuntu16.04,克隆多个虚拟机]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/115329029</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/115329029</guid><author>csdnnmbdybb</author><pubDate>Tue, 30 Mar 2021 16:24:25 +0800</pubDate><description><![CDATA[关键点，vmware的编辑选项中可以查看虚拟网络编辑器，然后查看子网ip

比如192.168.6.0

那么所有的克隆的虚拟机都要在这个区段，就是前面的192.168.6都是一样的

改ip地址就是sudo gedit/vi /etc/network/interfaces,桌面版的可以使用gedit。然后更改里面的ip地址和网关即可

---DHCP每次都是自动设置ip地址，这样就不能每次都用mobaxterm之类的工具连服务器了

--克隆虚拟机可以不用每次重装一堆软件，很方便，但是要注意重新设置ip地]]></description><category></category></item><item><title><![CDATA[kwargs在python中的含义]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/109076352</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/109076352</guid><author>csdnnmbdybb</author><pubDate>Wed, 14 Oct 2020 16:17:05 +0800</pubDate><description><![CDATA[def foo(*args, **kwargs):
print 'args = ', args
print 'kwargs = ', kwargs
print '---------------------------------------'


if __name__ == '__main__':

foo(1,2,3,4)
foo(a=1,b=2,c=3)
foo(1,2,3,4, a=1,b=2,c=3)
foo('a', 1, None, a...]]></description><category></category></item><item><title><![CDATA[CountDownLatch,CyclcBarrier]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/108816713</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/108816713</guid><author>csdnnmbdybb</author><pubDate>Sat, 26 Sep 2020 20:37:54 +0800</pubDate><description><![CDATA[CountDownLatch:就是老师去上课发现学生们都没到教室，然后等他们全部进入教室再上课。

就是分总结构



CyclcBarrier:就是跑步比赛，先要大家一起准备好，然后告诉指挥员自己准备好了，等所有人都准备好了，一声枪响，大家同时一起跑。

就是分分结构


...]]></description><category></category></item><item><title><![CDATA[leetcode32，最长有效括号]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/108108898</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/108108898</guid><author>csdnnmbdybb</author><pubDate>Wed, 19 Aug 2020 20:43:23 +0800</pubDate><description><![CDATA[https://leetcode-cn.com/problems/longest-valid-parentheses/

这题用动态规划，但是那个递归公式才是最难的。

先定义dp[i]的含义：以第i个字符为尾的最长有效括号的长度。

题解中分了两种情况：

1. 倒数第二个为（，即..........(),这种情况，dp[i]=dp[i-2]+2;

简单想一下，倒数第一能和其他的（ 匹配吗，显然不能，否则倒数第二个匹配个寂寞啊。



2. 倒数第二个为 ），即 .....（.....)),对于这周..]]></description><category></category></item><item><title><![CDATA[关于ThreadLocals中的hashcode计算方法]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107989974</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107989974</guid><author>csdnnmbdybb</author><pubDate>Thu, 13 Aug 2020 19:58:41 +0800</pubDate><description><![CDATA[那个每次增加的值如上。。查阅资料发现跟黄金分割比有关



但不是直接用黄金分割比，经过计算，得到如上。。
]]></description><category></category></item><item><title><![CDATA[redis解析啊]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107817949</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107817949</guid><author>csdnnmbdybb</author><pubDate>Wed, 05 Aug 2020 16:23:18 +0800</pubDate><description><![CDATA[sdshdr中的hdr是指header.............注释一下会死吗，这种缩写

着重讲一下sdshdr5这种特殊的数据结构，求剩余空间的时候之间返回0，而其他的则返回alloc-len。另外，sdshdr5的flag前面也没有len,alloc这两个字段了。空间集器节省。what's more,对于字符串类型，一般key很短的时候可能用sdshdr5存储，但是value一般至少是sdshdr8。。因为key不变，只会被删除，而value可能会变。



zset的两种实现，skiplist，z.]]></description><category></category></item><item><title><![CDATA[二分法]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107745111</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107745111</guid><author>csdnnmbdybb</author><pubDate>Sun, 02 Aug 2020 15:28:58 +0800</pubDate><description><![CDATA[二分法好像永远都是一道坎啊，总有新的东西可以谈谈。

以pdd的一道题为例



底下的解法就有用二分法来做的，但是一个点在于，可能有很多个值满足条件（小于该值的数量为k个），但是我们要找到的是恰好为k个，减去1之后就不是k个了。也就是最左边的满足条件的值。

最重要的是可能等于k的时候，那个边界值不能变。否则可能错过



这里最难的是我们知道二分法可以求出小于该值数量为k的值，但是怎么收敛到刚刚好呢？？需要细细品味。


...]]></description><category></category></item><item><title><![CDATA[leetcode377与leetcode518]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107544724</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107544724</guid><author>csdnnmbdybb</author><pubDate>Mon, 27 Jul 2020 11:12:39 +0800</pubDate><description><![CDATA[这两题其实很相似，即第377题去重之后就成了518的答案。查看二者的代码也是及其相似：

这种小而精的问题值得好好琢磨总结。


//leetcode377    
public int combinationSum4(int[] coins, int amount) {
        int[]dp=new int[amount+1];
        dp[0]=1;
        Arrays.sort(coins);
        for(int x=1;x&lt;=amount;x++){
]]></description><category></category></item><item><title><![CDATA[面经独一份]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107408542</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107408542</guid><author>csdnnmbdybb</author><pubDate>Mon, 27 Jul 2020 11:12:16 +0800</pubDate><description><![CDATA[1. header常用头部

2. http请求过程

3. get,post请求过程

4. http报文格式

5. dns请求过程

6.
]]></description><category></category></item><item><title><![CDATA[PFADD 中的PF是啥,PX中的PX又是啥]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107462103</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107462103</guid><author>csdnnmbdybb</author><pubDate>Mon, 20 Jul 2020 13:59:40 +0800</pubDate><description><![CDATA[不会有人光记命令吧，不会吧。

一直对各种命令的缩写都很好奇，一般常见的缩写也能猜到是啥，但是这里的PF？？

hyperloglog，p是其中的话，f是啥。。

带着疑问科学上网，终于找到了答案，这是为了纪念这个算法的提出者：http://algo.inria.fr/flajolet/这是他的主页



Philippe Flajolet

学习里的彩蛋吧，理工人的浪漫
...]]></description><category></category></item><item><title><![CDATA[几个人排队，找出这个位置的人前面最近的身高高于他的人的身高]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107310902</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107310902</guid><author>csdnnmbdybb</author><pubDate>Mon, 13 Jul 2020 09:52:51 +0800</pubDate><description><![CDATA[为啥都说是dp问题。。

维护一个栈才是正解吧


]]></description><category></category></item><item><title><![CDATA[154. 寻找旋转排序数组中的最小值 II-------------为啥用右边界而不用左边界]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107156103</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107156103</guid><author>csdnnmbdybb</author><pubDate>Mon, 06 Jul 2020 13:47:30 +0800</pubDate><description><![CDATA[我花了挺长时间用左边界来做，最后发现总是有几个测试用例过不了，刚好评论里也有关于这个点困惑，我就从理论上思考了这个问题。

当然，这里可以引申成寻找最大值，那么思考一下分别用左右边界做判断的写法。

这里用左边界更好，但是右边界也可以做。

右边界的话可以考虑依然使用原来的方法，只需要最后返回nums[(left-1+nums.length)%nums.length] ,因为有可能最小值是第一个。-----其实提一下，这个用到了求出来的最小值的特性，该最小值是最左边的最小值，所以最小值的左边或者数组最后..]]></description><category></category></item><item><title><![CDATA[合并区间]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107131306</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107131306</guid><author>csdnnmbdybb</author><pubDate>Sat, 04 Jul 2020 22:12:00 +0800</pubDate><description><![CDATA[3板斧

先排序:根据左边界排序，相等的话再排右边界。

前后两个区间，一共3种情况：




]]></description><category></category></item><item><title><![CDATA[java.lang.IllegalArgumentException: Comparison method violates its general contract!]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107128793</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107128793</guid><author>csdnnmbdybb</author><pubDate>Sat, 04 Jul 2020 19:00:21 +0800</pubDate><description><![CDATA[比较方法需要有返回值为0：

比如（left,right）-&gt;left&lt;right?-1:1;

改成 （left,right）-&gt;left-right.
]]></description><category></category></item><item><title><![CDATA[泛型的几个问题]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107023343</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107023343</guid><author>csdnnmbdybb</author><pubDate>Mon, 29 Jun 2020 16:41:02 +0800</pubDate><description><![CDATA[虽然parent和son是继承关系，但是，方法中传参数是不能用List&lt;son&gt;来作为形参是List&lt;parent&gt;的。
]]></description><category></category></item><item><title><![CDATA[关于接口和抽象类]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107017317</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/107017317</guid><author>csdnnmbdybb</author><pubDate>Mon, 29 Jun 2020 11:50:51 +0800</pubDate><description><![CDATA[关于选择接口还是抽象类的选择：https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/

接口和抽象类的区别：

1. 继承上：一个类可继承多个接口，一个类

2. 成员变量：接口的成员变量默认是public final static的，而抽象类则和普通类没有区别

3. 成员方法上：属性上，接口的方法都是public abstract的，而抽象类则和普通类没有区别。

4. 接口能继承接口，但不能继承类，抽象类可以实现接口
.]]></description><category></category></item><item><title><![CDATA[java深浅拷贝]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/101468388</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/101468388</guid><author>csdnnmbdybb</author><pubDate>Mon, 29 Jun 2020 11:05:42 +0800</pubDate><description><![CDATA[//序列化方法实现深拷贝       
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        ObjectOutputStream oos=new ObjectOutputStream(bos);
        oos.writeObject(stu1);
        oos.flush();
    ...]]></description><category></category></item><item><title><![CDATA[leetcode115 不同的子序列：谈dp问题的初始化]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106968858</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106968858</guid><author>csdnnmbdybb</author><pubDate>Fri, 26 Jun 2020 13:36:13 +0800</pubDate><description><![CDATA[动态规划题目，初始化呢是个技巧活，把问题稍微转化，可以使得代码变得简洁。

这里的dp方程即：



如果i,j从0开始免不了要多加几个判断。

这里试想，如果我们在s，t这两个字符串最前面加上一个相同的字符，而且该字符不与任何一个在t中存在的字符相同。那么最后的答案相同吗，答案是相同的。（这里虽然一笔带过但却是最值得细细思考的）



又盗图了。。

当然我觉得把首个字符替换成$符号理解起来更好。



把第一个字符$当作一个有效字符来看这个问题，一切都顺理成章了。
...]]></description><category></category></item><item><title><![CDATA[Arrays.asList()方法的坑]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106944462</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106944462</guid><author>csdnnmbdybb</author><pubDate>Wed, 24 Jun 2020 15:31:30 +0800</pubDate><description><![CDATA[在全排列中，可以使用一个数组重复使用，这样不用一个list反复增减最后一个节点。但是答案是需要转成list的，

于是就出错了


List&lt;List&lt;Integer&gt;&gt;res;
int[]path;
res.add(Arrays.asList(path))  //注意Arrays.asList返回的是tm的Arrays里的内部类，不是我们常用的那个。。。

但是两个实现了同样的抽象类。

这里是用错了，Arrays.asList(1,2,3)返回的值是可以被res.add()的。而]]></description><category></category></item><item><title><![CDATA[leetcode 4数之和]]></title><link>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106920466</link><guid>https://blog.youkuaiyun.com/csdnnmbdybb/article/details/106920466</guid><author>csdnnmbdybb</author><pubDate>Tue, 23 Jun 2020 12:25:13 +0800</pubDate><description><![CDATA[关键词：去重，双指针。

这题的题解在leetcode很多，这里并不赘述，只是证明下为什么那样可以去重：

也就是为什么要很多个类似的这一步；







首先，从语义上讨论，我们比较一个数和它之前的数是不是相同，那么就遍历数组而言，第一个数是没有前一个数的


for(int i=0;i&lt;nums.length;i++){
   if(nums[i]==nums[i-1]  //很明显，从语义上就不对，我们第一个元素是没有上一个元素的。
      System.out.println(i);
.]]></description><category></category></item></channel></rss>