<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[NNnora的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/NNnora</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NNnora]]></copyright><item><title><![CDATA[解决vim中文乱码问题]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/104022519</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/104022519</guid><author>NNnora</author><pubDate>Fri, 17 Jan 2020 17:23:24 +0800</pubDate><description><![CDATA[在服务器上遇到一个问题，tail -f实时查看日志时，中文显示正常，vim时中文乱码。解决如下：

方法一：

vim /etc/vim/vimrc
末尾加上：
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8


方法二：

同样修改vim文件，末尾...]]></description><category></category></item><item><title><![CDATA[golang善用go func和defer]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/104019348</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/104019348</guid><author>NNnora</author><pubDate>Fri, 17 Jan 2020 14:52:08 +0800</pubDate><description><![CDATA[一、error与panic：

error：可预见的错误
panic：不可预见的错误，panic一般通过defer中的recover()捕获
对于有风险的代码，若发生panic则会导致程序异常退出，例如数组越界。

1. panic的操守

panic是有秩序的，退出之前会执行完先处理完当前goroutine已经defer【挂上去】的任务，若某个defer在panic之后，则不会被执行。
pani...]]></description><category></category></item><item><title><![CDATA[Java8之新特性Optional的使用]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/85766154</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/85766154</guid><author>NNnora</author><pubDate>Fri, 04 Jan 2019 12:25:01 +0800</pubDate><description><![CDATA[最近在写项目的时候频繁用到Java8的一个新特性，Optional，总结一下。

1. 服务中要尽量避免使用null，Optional是为了解决使用null引起的NullPointerException异常。

2. 在引入Optional之前，对于null的处理需要额外判断。（不判断而侥幸逃脱NullPointerException是不合格的代码）

    例如下面这段代码，若不加null !...]]></description><category></category></item><item><title><![CDATA[mac系统docker发布镜像报错：错误"the user name or passphrase you entered is not correct"解决]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/84316235</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/84316235</guid><author>NNnora</author><pubDate>Wed, 21 Nov 2018 11:50:32 +0800</pubDate><description><![CDATA[docker build镜像完成后，发布镜像时提示权限不足，使用命令docker login进行登录，输入用户名密码后报错：&quot;the user name or passphrase you entered is not correct&quot;，尝试过重装docker、重设密码均不奏效。

解决方法：

1. Finder-应用程序-实用工具-钥匙串访问

2. 右键“登录“锁定钥匙串，然后再解锁

3....]]></description><category></category></item><item><title><![CDATA[python-reraise重新抛出自定义异常——如何使traceback选择性保留？]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/84137036</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/84137036</guid><author>NNnora</author><pubDate>Fri, 16 Nov 2018 15:45:04 +0800</pubDate><description><![CDATA[1. 自定义异常

 在python中，自定义一个异常类的方法如下：

新建一个python文件exception.py，以后可以将该工程内的所有自定义异常类都写到该文件下。代码如下：


&quot;&quot;&quot;
自定义异常类
&quot;&quot;&quot;


# 参数类型异常类
class ParameterTypeError(Exception):
    _error_code = -1
    _error_type = &quot;T...]]></description><category></category></item><item><title><![CDATA[java读取文件与写入文件]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/83825393</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/83825393</guid><author>NNnora</author><pubDate>Wed, 07 Nov 2018 16:05:14 +0800</pubDate><description><![CDATA[1. Java按行读取Resource目录下的文件


List&amp;lt;String&amp;gt; historyList = new ArrayList&amp;lt;&amp;gt;();
ClassPathResource classPathResource = new ClassPathResource(&quot;test.txt&quot;);
try {
    historyList.addAll(IOUtils.read...]]></description><category></category></item><item><title><![CDATA[leetcode-24. Swap Nodes in Pairs]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81485994</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81485994</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 18:02:56 +0800</pubDate><description><![CDATA[题目类型：链表



题意：

给出一个链表，按对交换节点， 
- 常数空间 
- 不能用改变节点的值的方法做，需要交换节点本身。



我的思路：迭代。两两交换，修改next等指针


  效率：10%


对于当前节点first，和下一个节点second 
- 记录上一次交换后的最后一个节点pre 
- 因为交换后链表断裂，所以暂存second下一个节点的位置，temp = second.ne...]]></description><category></category></item><item><title><![CDATA[leetcode-23. Merge k Sorted Lists]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81485603</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81485603</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 17:42:55 +0800</pubDate><description><![CDATA[题目类型：

链表、分治、归并

21题的变式



题意：

合并k个已排序的链表



解法一：暴力–错误


复杂度O(k^2^ * N) 
类似两个链表的合并，第一个节点全部对比，小的取出，指针后移，再比较。。。。




解法二：暴力


遍历k个链表，将节点全部添加至集合，对集合排序。




解法三：分治–归并排序


  复杂度O(kNlogN)



两个链表排序
四个链表
8个...]]></description><category></category></item><item><title><![CDATA[leetcode-22. Generate Parentheses]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81484458</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81484458</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 16:58:36 +0800</pubDate><description><![CDATA[题目类型：

回溯法，递归



题意：

给出一个整数n，表示有n组括号，输出所有正确的括号组合。



例子：

输入3，





我的思路：回溯+递归



递归一：以==剩余==未添加的左右括号数目为判断条件


  50%


递归函数：传递string


对于这道题，第一个肯定是’(‘，接下来即可以是’(‘也可以是’)’ 
left：表示==剩余==左括号的数目 
right：表示...]]></description><category></category></item><item><title><![CDATA[leetcode-21. Merge Two Sorted Lists]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81483674</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81483674</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 16:28:16 +0800</pubDate><description><![CDATA[题目类型：

链表合并排序



题意：

合并两个升序排列的链表为一个有序链表



例子：

Input: 1-&amp;gt;2-&amp;gt;4, 1-&amp;gt;3-&amp;gt;4

Output: 1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;4



我的思路：

设置两个指针，分别指向两个链表的头，比较大小，将较小的一个节点加入新的list并且往前移动。循环直至某一个链表为空，将另一个剩余...]]></description><category></category></item><item><title><![CDATA[leetcode-19. Remove Nth Node From End of List]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81482902</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81482902</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 15:57:32 +0800</pubDate><description><![CDATA[题目类型

链表



题意：

给出一个链表和一个数字n移除链表中从后往前的第n个节点，输出新的链表。



例子：

Given linked list: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5, and n = 2.

After removing the second node from the end, the linked list becomes 1-&amp;gt;2-&amp;gt;...]]></description><category></category></item><item><title><![CDATA[leetcode-18. 4Sum]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81481308</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81481308</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 14:56:12 +0800</pubDate><description><![CDATA[15题的变式



题意：

给出一个数组和目标和target，在数组中找到四个数，使他们相加之和为target

我的思路： 双层循环（最优解法即为O(N^2^)）


  51%， O(N^2^)


类似15题，先排序，外层是两层循环，内层是两个指针找剩余两个数的和

步骤： 
1. 数组排序 
2. 双层遍历数组nums[i]和nums[j]，如果i&amp;gt;0且nums[i]不等于nums...]]></description><category></category></item><item><title><![CDATA[leetcode-17. Letter Combinations of a Phone Number]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81480828</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81480828</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 14:36:40 +0800</pubDate><description><![CDATA[题目类型：

字符串

题意：

类似电话键盘，给出一个由数字组成的字符串，输出对应字母的所有组合。





例子:

Input:Digit string “23”

Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].



我的思路：递归


  22%



前两个任意组合，结果再与第三个组合，结果再与第四个组合…...]]></description><category></category></item><item><title><![CDATA[leetcode-16. 3Sum Closest]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81479894</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81479894</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 13:50:09 +0800</pubDate><description><![CDATA[类似15题和18题的结合



题意：

给出一个数组和一个目标值，找出数组中的饿三个数，使他们的加和最接近target，输出和。（注意不是输出解）



我的思路：

 
数组排序
外层循环找第一个数
low = i + 1,high = len - 1
如果sum == target, return target
如果sum大于target，high–
如果sum小于target，low++
...]]></description><category></category></item><item><title><![CDATA[leetcode-15. 3Sum]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81479029</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81479029</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 12:10:05 +0800</pubDate><description><![CDATA[题意：

给出一个数组，在其中找到三个数，之和为0，输出所有的解。

例子：输入S = [-1, 0, 1, 2, -1, -4],

输出[ 
  [-1, 0, 1], 
  [-1, -1, 2] 
]



错误尝试一：

三层循环- –超时



正确做法：确定一个数，再用双指针法找剩余两个数


  beadt 91%



数组由小到大排序
遍历每一个数num，若num不等于他之前的...]]></description><category></category></item><item><title><![CDATA[leetcode-14. Longest Common Prefix]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81478762</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81478762</guid><author>NNnora</author><pubDate>Tue, 07 Aug 2018 11:48:18 +0800</pubDate><description><![CDATA[题目类型：

字符串

题意：

Write a function to find the longest common prefix string amongst an array of strings.

找出一个字符串数组中所有字符串的最长共同==前缀==。



字符串API:

==indexOf()的用法==:返回字符中indexof(string)中字串string在父串中首次出现的...]]></description><category></category></item><item><title><![CDATA[解决Go上传文件报错：找不到Boundary的问题]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81385257</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81385257</guid><author>NNnora</author><pubDate>Fri, 03 Aug 2018 12:07:27 +0800</pubDate><description><![CDATA[最近要做一个组件，即接收客户端的请求，经过一系列的封装，将请求发送给真正的服务端器。可以理解为：客户端使用Http的Request的Body存储文件流，将Request发送给服务器。遇到一个问题：传入的是一个文件句柄File，需要转换成byte[]存到request的body中，但是发现boundary找不到，自行在content-Type中加上Boundary字段，发现后台读取不到文件流。

1...]]></description><category></category></item><item><title><![CDATA[leetcode-13. Roman to Integer]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81349871</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81349871</guid><author>NNnora</author><pubDate>Wed, 01 Aug 2018 23:03:19 +0800</pubDate><description><![CDATA[leetcode12题的变式，罗马数字转换为阿拉伯数字

题目类型：

HashMap，字符串

题意：

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.



我的思路：


  66%




步骤：


将字符串的各位转化为...]]></description><category></category></item><item><title><![CDATA[12. Integer to Roman]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81349348</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81349348</guid><author>NNnora</author><pubDate>Wed, 01 Aug 2018 22:21:00 +0800</pubDate><description><![CDATA[题目类型：

HashMap，字符串


  　beat:87%



题意：

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.











罗马数字的写法：

![罗马数字的写法](https://ss0.bdstat...]]></description><category></category></item><item><title><![CDATA[leetcode-11. Container With Most Water]]></title><link>https://blog.youkuaiyun.com/NNnora/article/details/81228635</link><guid>https://blog.youkuaiyun.com/NNnora/article/details/81228635</guid><author>NNnora</author><pubDate>Thu, 26 Jul 2018 22:06:57 +0800</pubDate><description><![CDATA[题目类型：

双指针



题意：

给定n个非负整数a1，a2，…，an，其中每个代表坐标（i，ai）处的一个点。 绘制n条垂直线，使得线i的两个端点处于（i，ai）和（i，0）处。 找到两条线，它们与x轴一起形成一个容器，使得容器包含最多的水。



分析：

即：有n个点，横坐标为0-&amp;gt;n-1，纵坐标为a~i~，找到两个点，使得他们向x轴做垂线，变成一个一边长一边短的杯子，使得短垂线*...]]></description><category></category></item></channel></rss>