<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[梦想还是要有的]]></title><description><![CDATA[没有人能一开始或一直正确，但只要认真努力，我相信一切都会越来越正确。]]></description><link>https://blog.youkuaiyun.com/Initiallysunny</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Initiallysunny]]></copyright><item><title><![CDATA[【数据结构】跳表（skiplist）的原理及Golang实现]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/107185802</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/107185802</guid><author>Initiallysunny</author><pubDate>Tue, 07 Jul 2020 17:20:25 +0800</pubDate><description><![CDATA[跳表（skiplist）是在有序链表的基础上进行了扩展，解决了有序链表结构查找特定值困难的问题，实现插入、删除、查找的复杂度均为O(logN)，他是一种可以代替平衡树的数据结构。LevelDB的核心数据结构是用跳表实现的，redis的sortedset数据结构也是有跳表实现的。（参考维基百科：https://en.wikipedia.org/wiki/Skip_list）

其结构如下图所示：





一、查找

在如下链表中查找x



从最上层的链（S3）的开头开始，假设当前位置为p，它向右指向的..]]></description><category></category></item><item><title><![CDATA[【算法】剑指 Offer 35. 复杂链表的复制]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/106906725</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/106906725</guid><author>Initiallysunny</author><pubDate>Mon, 22 Jun 2020 17:55:50 +0800</pubDate><description><![CDATA[请实现 copyRandomList 函数，复制一个复杂链表。在复杂链表中，每个节点除了有一个 next 指针指向下一个节点，还有一个 random 指针指向链表中的任意节点或者 null。

示例 1：



输入：head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出：[[7,null],[13,0],[11,4],[10,2],[1,0]]
示例 2：



输入：head = [[1,1],[2,1]]
输出：[[1,1],[2,1]]
示例 3：



输.]]></description><category></category></item><item><title><![CDATA[【算法】剑指 Offer 26. 树的子结构  和  面试题 04.10. 检查子树]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/106863186</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/106863186</guid><author>Initiallysunny</author><pubDate>Fri, 19 Jun 2020 20:27:44 +0800</pubDate><description><![CDATA[输入两棵二叉树A和B，判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构， 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:

3
/ \
4 5
/ \
1 2
给定的树 B：

4
/
1


代码：


func isSubStructure(A *TreeNode, B *TreeNode) bool {
	return (A != nil &amp;&amp; B != nil) &amp;&amp; ...]]></description><category></category></item><item><title><![CDATA[【算法】剑指 Offer 34. 二叉树中和为某一值的路径]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/106863015</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/106863015</guid><author>Initiallysunny</author><pubDate>Fri, 19 Jun 2020 20:13:36 +0800</pubDate><description><![CDATA[输入一棵二叉树和一个整数，打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。

示例:
给定如下二叉树，以及目标和sum = 22，

       5
      / \
      4  8
     /  / \
     11 13 4
    / \  / \
    7  2 5  1
返回:

[
 [5,4,11,2],
 [...]]></description><category></category></item><item><title><![CDATA[【算法】面试题56 - I. 数组中数字出现的次数]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/106842100</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/106842100</guid><author>Initiallysunny</author><pubDate>Thu, 18 Jun 2020 19:57:59 +0800</pubDate><description><![CDATA[题目描述：

一个整型数组 nums 里除两个数字之外，其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)，空间复杂度是O(1)。



示例 1：



输入：nums = [4,1,4,6]

输出：[1,6] 或 [6,1]

示例 2：



输入：nums = [1,2,10,4,1,4,3,3]

输出：[2,10] 或 [10,2]



*限制：2 &lt;= nums &lt;= 10000


先考虑上述问题的简单版本：一个数组里面只有一...]]></description><category></category></item><item><title><![CDATA[【读书笔记】《Go语言高级编程》——柴树杉，曹春晖]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/106841250</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/106841250</guid><author>Initiallysunny</author><pubDate>Thu, 18 Jun 2020 19:49:15 +0800</pubDate><description><![CDATA[这本书并不适合初学者阅读，适合对Go语言的应用有一些心得，并希望能够深入理解底层实现原理或者是希望能够在Web开发方面结合Go语言来实现进阶学习的技术人员学习和参考。

第一章：语言基础。1、Go的基因来自CSP理论（贝尔实验室）、面向对象和包的特性、C语言；2、数组、字符串和切片三者是密切相关的数据结构。这3种数据类型，在底层原始数据有着相同的内存结构，在上层，因为语法的限制而有着不同的行为表现。字符串底层数据也是对应的字节数组，但是字符串的只读属性禁止了在程序中对底层字节数组的元素的修改。切片的行为更为]]></description><category></category></item><item><title><![CDATA[【教程】golang使用protobuf]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/103503908</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/103503908</guid><author>Initiallysunny</author><pubDate>Thu, 12 Dec 2019 10:05:52 +0800</pubDate><description><![CDATA[有两种包可以选择：goprotobuf（go官方出品）和gogoprotobuf。gogoprotobuf完全兼容google protobuf，它生成的代码质量和编解码性能均比goprotobuf高一些。

1.安装protoc

首先去 https://github.com/protocolbuffers/protobuf/releases 上下载protobuf的编译器protoc，wind...]]></description><category></category></item><item><title><![CDATA[【面经】蘑菇街电话面试]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/80527669</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/80527669</guid><author>Initiallysunny</author><pubDate>Thu, 31 May 2018 17:54:48 +0800</pubDate><description><![CDATA[复习好几天，终于等来了蘑菇街电话，面试。本来信心满满，却被面试官问的一脸蒙蔽首先自我介绍；然后直接问做过的项目，大概介绍项目后，直接告诉我：我们后端开发用java做，C/C++只能做客户端搜索方面的东西。接下来（面试官提zhaung问bi）1、做过的ACM题中印象最深的一道题2、KMP算法怎么求next数组 数据结构学过，具体代码忘了，大概记得3、多线程中锁的种类（锁还有分类，难道锁住的程度不一...]]></description><category></category></item><item><title><![CDATA[布鲁姆过滤器]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/80527400</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/80527400</guid><author>Initiallysunny</author><pubDate>Thu, 31 May 2018 17:23:55 +0800</pubDate><description><![CDATA[布隆过滤器是一种数据结构，快速和节省内存，能用于判定一个元素是否存在于一个集合中。这种效率的代价是Bloom filter是一种概率数据结构，元素不是绝对的在组里或可能在组里。Bloom filter的基本数据结构是一个位向量。图1：布鲁姆过滤器散列图如图1：布鲁姆过滤器，由一个长度为m（=18）的数组（初始值都为0）和k（=3）个hash 函数组成，图中的元素x,y,z，判断为“可能”存在于集合...]]></description><category></category></item><item><title><![CDATA[趋势科技笔试编程题]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/80374148</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/80374148</guid><author>Initiallysunny</author><pubDate>Sat, 19 May 2018 14:33:23 +0800</pubDate><description><![CDATA[题目描述：给定一个由小写英文字母构成的字符串S，求不含重复字母的子串的最大长度^_^题目记得不大清楚了。。。例如：输入：abcde输出：4#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;cstdio&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;lt;string.h&amp;gt;
#include&amp;lt;...]]></description><category></category></item><item><title><![CDATA[python web 虚拟环境+数据库 配置]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/80235048</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/80235048</guid><author>Initiallysunny</author><pubDate>Tue, 08 May 2018 09:46:37 +0800</pubDate><description><![CDATA[1、虚拟环境  安装：pip install virtualenv 创建：virtualenv TestEnv2、数据库相关安装 ： mysql-pythonwindows下需要安装 PyMySQL-0.7.11-py2.py3-none-any.whl安装 flask-sqlalchemy安装 flask_script安装 flask_migrate初始化项目环境（项目目录） python ma...]]></description><category></category></item><item><title><![CDATA[【工具】git常用命令]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/80235003</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/80235003</guid><author>Initiallysunny</author><pubDate>Tue, 08 May 2018 09:44:22 +0800</pubDate><description><![CDATA[git initgit addgit commit -m &quot;注释&quot;git log  //查看以前版本git reflog  //查看历史提交git checkout -- readme.txt  //让这个文件回到最近一次git commit或git add时的状态，工作区误删可以从版本库恢复git status  //查看暂存区工作区git reset HEAD file //可以把暂存区的修改...]]></description><category></category></item><item><title><![CDATA[python实现pdf转word/txt]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/79960838</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/79960838</guid><author>Initiallysunny</author><pubDate>Mon, 16 Apr 2018 15:17:20 +0800</pubDate><description><![CDATA[依赖包：pdfminer3k

可以通过pip安装；也可以到官网https://pypi.python.org/pypi/pdfminer3k下载，解压，进入文件夹，输入命令setup.py
 install安装软件。



源代码
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import importlib
impo]]></description><category></category></item><item><title><![CDATA[golang编译器源码安装]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/79958780</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/79958780</guid><author>Initiallysunny</author><pubDate>Mon, 16 Apr 2018 12:17:58 +0800</pubDate><description><![CDATA[安装环境及准备Ubuntu 16.04LTS下载go编译器源码：国内地址源：https://dl.gocn.io/     百度云地址：https://pan.baidu.com/s/1Xh-V2Cy-fgEcgRMZdoyNCA 密码：epik在这里选择源码的方式安装，在安装go的时候是需要gcc的，所以你的linux系统需要先安装gcc。如果你直接安装1.8版本时会出现提示&amp;gt;=1.4 的...]]></description><category></category></item><item><title><![CDATA[LInux低级IO和高级IO]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/79864888</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/79864888</guid><author>Initiallysunny</author><pubDate>Mon, 09 Apr 2018 13:16:14 +0800</pubDate><description><![CDATA[打开文件


int open(const char *path, int access,int mode)

FILE *fopen(char *filename, char *mode)


open和fopen的区别：
前者属于低级IO，后者是高级IO。
前者返回一个文件描述符，后者返回一个文件指针。
前者无缓冲，后者有缓冲。
前者与 read, write 等配合使]]></description><category></category></item><item><title><![CDATA[Nginx配置（静态资源部署）]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/78944589</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/78944589</guid><author>Initiallysunny</author><pubDate>Mon, 01 Jan 2018 09:46:37 +0800</pubDate><description><![CDATA[主文件：（/etc/nginx/ngnix.conf）需要修改的地方都已加注释，其他的不需要修改
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: ht]]></description><category></category></item><item><title><![CDATA[项目开发心得体会]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/78763041</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/78763041</guid><author>Initiallysunny</author><pubDate>Sun, 10 Dec 2017 09:21:11 +0800</pubDate><description><![CDATA[最近做了个项目，写一个图文直播平台，听上去貌似很简单哈，可事实并不是这回事儿啊，我也是第一次做项目，经历了一波又一波的难点，至今项目尚未完成，处理测试阶段。
项目开始于四周前，因项目需要用python的Flask框架开发，只会python简单语法的我开始学习flask，跟着视频一步一步学，大概学了一周多，然后就做了个小的网站Demo，同时这两周也在确定我们的项目需求。然后第三周，项目启动，我负责]]></description><category></category></item><item><title><![CDATA[项目开发步骤]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/78751729</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/78751729</guid><author>Initiallysunny</author><pubDate>Fri, 08 Dec 2017 14:59:33 +0800</pubDate><description><![CDATA[1、需求分析

需求分析是项目中比较重要的一个环节，需求一旦确定，项目负责人或者技术人员务必与客户确认产品细节，最好可以签好合同之类的书面证明，以防后期增加工作量。

2、可行性分析

可行性分析一般分为商业可行性分析和技术可行性分析。商业可行性由客户和项目负责人对市场、产品前景评估；对于开发人员来说，主要是技术可行性分析，需要有丰富经验的技术人员对所需技术、完成时间进行评估并确认。]]></description><category></category></item><item><title><![CDATA[cJSON使用方法]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/78712418</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/78712418</guid><author>Initiallysunny</author><pubDate>Mon, 04 Dec 2017 18:27:48 +0800</pubDate><description><![CDATA[下载链接：点击打开链接
核心文件：cJSON.h、cJSON.c
编译链接：gcc cJSON.c test.c -o a -lm  #注意后面的连接lm库，必选项]]></description><category></category></item><item><title><![CDATA[flask sqlalchemy删数据报错Object '<Mydata at 0x720d710>' is already attached to session '1' (this is '3')]]></title><link>https://blog.youkuaiyun.com/Initiallysunny/article/details/78668370</link><guid>https://blog.youkuaiyun.com/Initiallysunny/article/details/78668370</guid><author>Initiallysunny</author><pubDate>Wed, 29 Nov 2017 18:15:13 +0800</pubDate><description><![CDATA[sqlalchemy.exc.InvalidRequestError


sqlalchemy.exc.InvalidRequestError: Object '' is already attached to session '1' (this is '3')








结论：
两个不同的db交叉混用导致问题，根据报错也可看出，要操作的对象已经隶属于会话1，
 而]]></description><category></category></item></channel></rss>