<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lin_tuer的博客]]></title><description><![CDATA[leo 开心就好]]></description><link>https://blog.youkuaiyun.com/lin_tuer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lin_tuer]]></copyright><item><title><![CDATA[Golang 并发 - runner [Part One]]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/93090576</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/93090576</guid><author>lin_tuer</author><pubDate>Thu, 20 Jun 2019 18:35:47 +0800</pubDate><description><![CDATA[Golang 并发 - runnerrunner包简介源码解析
runner包简介

用途

使用channel监视程序的执行时间
终止程序


使用场景

调度后台处理任务的程序（该任务可能作为cron作业执行，or在基于定时任务的云环境里执行）



源码解析
// runner 包管理处理任务的运行与生命周期
package runner

import (
	"errors"
	"os"
...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array]31. Next Permutation]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85273481</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85273481</guid><author>lin_tuer</author><pubDate>Thu, 27 Dec 2018 10:22:34 +0800</pubDate><description><![CDATA[原题链接
1）逆序寻找第一个下降点（下降点之后的序列已经是完全逆序的）
2-A）如果完全逆序，完全反转即可返回
2-B）非完全逆序，寻找第一个大于下降点的数up (up 就是下一个要放到前面的)
3）swap(down, up)
4) reverse(down + 1, len-1) （后面调整为正序，才是下一个要找的）
/**
* 字母序-升序-下一个排列

1）逆序寻找第一个下降点（下降点之后...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array]18. 4Sum]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85239570</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85239570</guid><author>lin_tuer</author><pubDate>Mon, 24 Dec 2018 21:43:24 +0800</pubDate><description><![CDATA[原题链接
看到这类问题已经放弃挣扎了，，

排序
固定一个，找另外3个 --》转化为 3sum, 再固定一个，找另外两个，，then, binary search
需要注意的就是去重
时间复杂度 O(N^3)
空间复杂度 O(1)

func fourSum(nums []int, target int) [][]int {
    var result [][]int
    if nums =...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array] 16. 3Sum Closest]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85239535</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85239535</guid><author>lin_tuer</author><pubDate>Mon, 24 Dec 2018 21:40:02 +0800</pubDate><description><![CDATA[原题链接
看了题目之后，原以为是01背包问题，建好模型之后发现，，一个条件搞错了。
背包问题中，有的是最大容量限制，而本问题中，必须3个数，是一个固定值的限制。貌似并不能用dp的办法解。
最后屈服于双指针
1， 排序
2，固定一个值，用搜索的办法查找另外两个值
时间复杂度 O(N^2)
空间复杂度 O(1)
/**
* 原来想着是 01背包问题，，后来发现不对，这个不是说做多3个数，而是说必须3个...]]></description><category></category></item><item><title><![CDATA[go-基础概念：包，可见性，程序执行过程]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85106796</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85106796</guid><author>lin_tuer</author><pubDate>Wed, 19 Dec 2018 19:51:38 +0800</pubDate><description><![CDATA[文章目录包可见性程序执行过程
包
包是结构化代码的一种方式，每个go程序都由包组成（相当于java的类库）。
每个go文件都属于且仅属于一个包。
一个包可以由许多.go源文件组成。
包名都由小写字母组成。
如果想要构建一个程序，则包和包内的文件都必须以正确的顺序进行编译。包的依赖关系决定了其构建顺序。
属于同一个包的源文件必须全部被一起编译，一个包即是编译时的一个单元，因此根据惯例，每个目录都只包...]]></description><category></category></item><item><title><![CDATA[kill批量终止进程]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85103176</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85103176</guid><author>lin_tuer</author><pubDate>Wed, 19 Dec 2018 17:48:32 +0800</pubDate><description><![CDATA[$ ps -ef | grep rtprecv | grep -v grep | awk '{print $2}' | xargs kill -9

解释一下：
　　ps -ef 用于获取当前系统所有进程，如上图所示。
　　grep rtprecv 过滤出与“rtprecv”字符相关的数据（以行为单位）。
　　grep -v grep 的作用是除去本次操作所造成的影响，-v 表示反向选择。
　　a...]]></description><category></category></item><item><title><![CDATA[git 忽略提交某些文件or文件夹内容]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/85102952</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/85102952</guid><author>lin_tuer</author><pubDate>Wed, 19 Dec 2018 17:42:34 +0800</pubDate><description><![CDATA[1  对于未入库的文件：http://blog.youkuaiyun.com/wirelessqa/article/details/19548289
命令：touch .gitignore             创建.gitignore文件
在文件中写入需要忽略的文件（如：*.diff  ……具体见链接），或者不遵循忽略原则的特例（文件前加“！”）
（注：只对untracked files有效）
2  对于...]]></description><category></category></item><item><title><![CDATA[WLAN 的两种组网形式]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/84931727</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/84931727</guid><author>lin_tuer</author><pubDate>Sun, 09 Dec 2018 20:35:36 +0800</pubDate><description><![CDATA[


]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array] 15. 3Sum]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/84445807</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/84445807</guid><author>lin_tuer</author><pubDate>Sat, 24 Nov 2018 15:53:10 +0800</pubDate><description><![CDATA[原题链接
看到题目，受到2Sum题目的影响，首先想到的就是固定一个数，然后借助map/set来寻找满足条件的两个数组合。
my code
func threeSum(nums []int) [][]int {
    var result [][] int
    if nums == nil || len(nums) &amp;lt; 3 {
        return result
    }
  ...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array] 11. Container With Most Water]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/84403631</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/84403631</guid><author>lin_tuer</author><pubDate>Fri, 23 Nov 2018 21:11:01 +0800</pubDate><description><![CDATA[原题链接
解答这道题的关键就是-木桶可以盛多少水，完全是由短边决定的。
解法一：Brute Force
遍历数组，比较数组任意两个值组合形成的面积的大小。
时间复杂度 O(N^2)
空间复杂度 O(1)
解法二： two pointer

设置两个指针，一个指向数组最左边，一个指向数组最右边
计算数组之间形成的面积值并更新最大值
移动指针，移动原则是：移动二者中较短的那一个（这样才不会给我们带来损...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array] 4. Median of Two Sorted Arrays]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/84193689</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/84193689</guid><author>lin_tuer</author><pubDate>Sat, 17 Nov 2018 22:17:23 +0800</pubDate><description><![CDATA[原题链接
这道题中要求的时间复杂度是 O(log(m + n))
但是，但是！用 go 来写，很普通的O(m+n)的解法也可以AC，而且时间上很有优势，go 的性能真是太赞了
解法一：

合并两个有序数组
求合并后数组的中位数
这种方式在合并的时候需要遍历两个数组，时间复杂度是 O(m + n)，同时也会占用 O(m+n) 的空间。
精简代码(同样的逻辑，，大神来写还是可以被优化，，)

func...]]></description><category></category></item><item><title><![CDATA[[重拾 leetcode - go] [array] 1. Two Sum]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/83957890</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/83957890</guid><author>lin_tuer</author><pubDate>Sun, 11 Nov 2018 13:14:21 +0800</pubDate><description><![CDATA[原题链接
解法一：with map
用map来保存已经出现过的数字，及它对应的下标，每遍历到一个新的数字，就判断 target - nums[i] 是否已经存在，若存在，则返回它们对应的下标，否则，将当前数字及其下标存入map, 继续遍历。
时间复杂度 : O(N), 空间复杂度: O(N)
这是最直接，也最容易想到的解法。当我用go去实现它的时候，运行时间还是吓了我一跳

解法二： brute ...]]></description><category></category></item><item><title><![CDATA[一天一句 LINUX 命令之 grep]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/83756108</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/83756108</guid><author>lin_tuer</author><pubDate>Mon, 05 Nov 2018 20:26:47 +0800</pubDate><description><![CDATA[grep 就像一个过滤器，可以过滤掉一些我们不关心的内容，并取出想要的。
一、过滤含有某关键字的进程
ps aux | grep java

上面的语句就可以帮我们帅选出和java相关的进程，即对 ps aux 得到的结果再进行一次内容过滤，得到精简的结果。
二、过滤日志文件
grep key_word filename

上面的语句可以帮助我们打印出filename中含有 key_word 的各...]]></description><category></category></item><item><title><![CDATA[一天一句LINUX 之 tail -f filenamey]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/83656684</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/83656684</guid><author>lin_tuer</author><pubDate>Mon, 05 Nov 2018 20:14:26 +0800</pubDate><description><![CDATA[在服务器部署时，我们经常把项目日志输出到一个文件中，那么怎么方便地查看该日志文件的内容呢？
tail 这个命令可以很好的帮助我们。
只想查看最后几句的时候使用
tail -n number filename

比如
tail -n 20 my.log

打印该日志文件的最后20行。
在项目重启时，我们希望观察实时输出的日志，这时候一直使用tail -n 就会有些繁琐，tail -f 恰好可以满足我...]]></description><category></category></item><item><title><![CDATA[Centos, redHat 安装 phantomjs]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/83659995</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/83659995</guid><author>lin_tuer</author><pubDate>Mon, 05 Nov 2018 20:14:02 +0800</pubDate><description><![CDATA[# 安装依赖软件
yum -y install wget fontconfig

# 下载PhantomJS
wget -P /tmp/ https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-i686.tar.bz2

# 解压
tar xjf /tmp/phantomjs-2.1.1-linux-i686.ta...]]></description><category></category></item><item><title><![CDATA[Java 数组存储机制]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/82967516</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/82967516</guid><author>lin_tuer</author><pubDate>Mon, 08 Oct 2018 14:32:12 +0800</pubDate><description><![CDATA[参考资料

数组是一种引用类型。
数组用来存储类型相同的一组数据，一旦初始化完成，其所占的空间也确定下来了，即使清除某个元素，其所占用的空间仍然存在，即，数组的长度不能被改变，且数组只有在分配空间后才能使用。
数组的初始化方式有两种，a, 动态初始化，只指定长度，后面再进行初始值的指定 int[] dynamic_initial = new int[len];  b. 静态初始化，不指定长度，直接...]]></description><category></category></item><item><title><![CDATA[Longest Substring Without Repeating Characters]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/82779391</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/82779391</guid><author>lin_tuer</author><pubDate>Wed, 19 Sep 2018 22:23:02 +0800</pubDate><description><![CDATA[最长无重复字符的子串
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: “abcabcbb”
Output: 3
Explanation: The answer is “abc”, with the length of 3.
Example...]]></description><category></category></item><item><title><![CDATA[字符串-最长重复子串]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/82778962</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/82778962</guid><author>lin_tuer</author><pubDate>Wed, 19 Sep 2018 21:50:17 +0800</pubDate><description><![CDATA[最长重复子串题目描述code
题目描述
一个长度为10000的字符串，写一个算法，找出最长的重复子串，如abczzacbca,结果是bc
Trie 树典型应用。-- 后缀树
code
package leetcode;

/**
 * 一个长度为10000的字符串，写一个算法，找出最长的重复子串，如abczzacbca,结果是bc
 */
public class LongestCommonSub...]]></description><category></category></item><item><title><![CDATA[背包问题]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/82632244</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/82632244</guid><author>lin_tuer</author><pubDate>Tue, 11 Sep 2018 20:33:44 +0800</pubDate><description><![CDATA[背包问题 
最好的背包问题的总结。]]></description><category></category></item><item><title><![CDATA[排序及排序相关问题]]></title><link>https://blog.youkuaiyun.com/lin_tuer/article/details/82391819</link><guid>https://blog.youkuaiyun.com/lin_tuer/article/details/82391819</guid><author>lin_tuer</author><pubDate>Tue, 04 Sep 2018 22:46:30 +0800</pubDate><description><![CDATA[八大排序总结 
堆排序的 java 实现 
TopK 问题]]></description><category></category></item></channel></rss>