2018LeeCode算法题解一之Valid Palindrome

原题Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.For example"A man, a plan, a canal: Panama" is a palindrome."race a car" is not a palindrome.NoteHave you consider that the string might be empty? This is a good question to ask during an interview.For the purpose of this problem, we define empty string as valid palindrome.原题链接:https://...阅读全文

2017年度回忆与总结 – 心态

写在前面在写之前,我注意到标题中的词语,描写的到底是2017年还是2018年?想想,应该是总结2017的过往之后,对2018年的期望。一年一次的总结是否应该详细些呢?不!因为我觉得,大篇幅的总结并没有太大的价值。首先,并没有谁会在乎我在2017年里的细节。其次,有价值的总结并非在于字数之多。在这里也明确下本篇及以后“年度总结”内容范围,仅包含个人在工作、专业能力、职业及其相关方面的内容。工作2017年2月14号入职滴滴,这一年在工作上做得最多的就是努力地熟悉业务。的确,滴滴的业务发展快速,产品不断地迭代与重构。通过逐渐地参与产品的研发、维护工作,意思到要了解和学习的东西还有很多。也正是因为这一过程,熟知了滴滴相关的业务,培养了研发与维护的能力,提升了自信心。考研在2016年的总结中,并没有列出这一计划。但却是,我觉得比较重要的一件事情。目前为止,能否考入仍未有结果。所以,单就此过程来谈谈感...阅读全文

深度学习 & 机器学习之学习资源

内容来自互联网博客深度学习框架的一年如果我不得不一句话总结2017年,那将是框架的一年。Facebook使用PyTorch做了一个大飞溅。由于类似于其动态图构建Chainer提供,PyTorch得到很多的爱从研究人员在自然语言处理,谁经常要处理动态和周期性的结构是很难在诸如Tensorflow静态图形框架申报。Tensorflow在2017年已经相当成功.Tensorflow 1.0在二月份发布了一个稳定且向后兼容的API。目前,Tensorflow的版本是1.4.1。除主框架之外,还发布了几个Tensorflow伴随库,包括用于动态计算图的Tensorflow折叠,用于数据输入流水线的Tensorflow变换以及DeepMind的更高级别的Sonnet库。Tensorflow团队还宣布了一个新的热切执行模式,其工作方式类似于PyTorch的动态计算图。除Google和Facebook之外...阅读全文

Effective Engineer

What's an Effective EngineerThey are the people who get things done. Effective Engineers produce results.Adopt the Right MindsetFocus on High Leverage ActivitieLeverage = Impact Produced / Time InvesteUse Leverage as Your Yardstick for Effectivenes80% of the impact comes from 20% of the work.Focus on high leverage and not just easy wins.阅读全文

【完善中】基于文本图形(ncurses)的文本搜索工具 ncgrep

源码下载 http://github.com/ncgrep/ncgre背景作为一个VIM党,日常工作开发中,会经常利用grep进行关键词搜索,以快速定位到文件。如图但是,这一过程会有两个效率问题展示的结果无法进行直接交互,需要手动粘贴文件路径在打开展示的结果没有进行分组,直接将结果罗列出来可想而知,当搜索的内容结果集比较大时,可谓痛苦。那可以用Vim中的Ag插件进行搜索啊?是的,但他只解决了交互的问题。仍然没有解决结果集分组分类的痛点。思路在使用Eclipse等IDE进行文本全局搜索时,在加载效果(懒加载)可视化方面有很大优势。那么,期望基于linux系统,提供一个类似的搜索工具。优点(功能)如下结果集可以直接交互结果集可以进行分组展示结果集通过“懒加载”方式装载基于文本图形界面的类库是什么呢?网上大致了解了下VIM、htop类似的软件,其都是基于一个叫ncurses的类库实现的。项目...阅读全文

【开发中】基于树莓派的智能家居项目的设想与实现 Hestia

注:本文内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致。实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve树莓派,一个五脏俱全,集几乎所有功能于一身的微型计算器。大约一两月之前,屈屈300百大洋收入囊中。入手之后,出于对自动化的兴趣,慢慢地研究如何实现室内家电的智能自动化控制。在断断续续地,不断地摸索之后,有了若干想实现的点子,迄今为止也有所实践。点子利用红外线传感器智能控制空调、电视等基于红外遥控的家电设备;智能控制家中的灯泡设备(部分基于网络协议);(待更新...方案硬件首先,除了树莓派之外,还需要如下硬件移动端设备 iPhone一台(安卓手机当然也没问题,但是本案例中只基于iPhone做了实现外网可直接访问的服务器一台(本案例使用阿里云服务器基于树莓派的传感器若干基于光敏电阻的光线传感器一个...阅读全文

内网穿透工具的原理与开发实战

在我国,由于网民众多,运营商无法保证为每一个宽带用户提供全球唯一的公网IPv4地址。因此很多用户会发现通过路由器端查看到的WAN端IP与百度“IP”关键词所得到的IP不一致,并且前者的IP为一个私有IP。而还有一些情况下,公网IP比较昂贵,企业虽然本身也持有少量的独立的公网IP,但是由于成本限制无法为企业内每一台主机都提供一个公网IP,或者内网并不是所有服务都需要暴露到公网中进行访问,那么企业有可能就会使用NAT技术将大量的内网IP通过一定规则映射到公网IP上。而最常见的其中一种技术就是NAPT,也叫“网络端口地址转换”。因为一般一个服务都是通过一个端口来提供,因此通过这种方式可以将特定的服务通过特定的规则开放到少量的公网IP上。阅读全文

那些年,我们追过的RPC

1974年冬,互联网大师 Jon Postel发表了RFC674:“Procedure Call Protocol Documents,Version 2”,尝试定义一种在包含70个节点的网络中共享资源的通用方法。在大师一生中编辑过的无数个RFC文档中,674属于并不突出的一个,但却拉开了RPC的序幕。也正是接下来我们故事的开始。阅读全文

利用内网穿透frp工具实现外网链接(ssh)内网树莓派设备

内网穿透原理内网穿透(Net穿透)也即端口映射,笔者粗暴理解是一种能够将外网机器与内网机器(外网无法直接访问的设备)建立通信的一种技术解决方案。百度百科尽管有许多穿越NAT的技术,但没有一项是完美的,这是因为NAT的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的IP地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据——这就引入了带宽开销的问题。具体原理详见百度百科=> https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8需要资源一台公网服务器(可以通过IP直接访问树莓派(也可以是电脑,以树莓派为例安装本文以frp v 0.13.0为例(具体版本可以自己定,但不保证其他版本能够成功)。笔者在go 1.7.4版本下编译frp...阅读全文

使用Cgo的一点总结

今天想给一个C库写一个Golang binding,就查了一下cgo的使用,也遇到了一些坑。cgo的基本使用想在Go代码中使用C语言必须在代码开头注释中写,然后再紧接着的下一行写import "C",这样就算是导入完成了。这个”C”不是一个真正的包,而是一个类似于命名空间的东西,所有能调用的C的变量、函数都包含在里面。举个最简单的例子这个例子展示了cgo的基本使用方法。开头的注释中写了要调用的函数和相关的头文件,头文件被include之后里面的所有元素都会被加入到”C”这个命名空间中。需要注意的是,import "C"必须单独一行,不能与其他包一同import。向C函数传递参数也很简单,就直接转化成对应类型传递就可以。如上例中C.CString强制类型转换将一个字符串转化为了C字符串然后传递给了print函数。需要注意的是,Go是强类型语言,所以cgo中传递的参数类型必须与声明的类型完全...阅读全文

关于int的取值范围(有种背下来)

unsigned int 0~429496729int -2147483648~214748364unsigned long 0~429496729long -2147483648~214748364long long的最大值:922337203685477580long long的最小值:-922337203685477580unsigned long long的最大值:184467440737095516__int64的最大值:922337203685477580__int64的最小值:-922337203685477580unsigned __int64的最大值:1844674407370955161原文链接:http://blog.csdn.net/niuox/article/details/823194阅读全文

禁止tmux窗口自动命名

关于tmux的多窗口,用起来可谓非常方便。但,也许在默认的tmux配置下,一样和我被一个小问题困扰。那就是,tmux的窗口名称总是会随着执行的命令不同而变动。关于这一点,可用如下的方式来解决更改tmux配置文件打开~/tmux.conf文件,增加(或修改)如下内容更改oh-my-zsh配置文件当然,如果你在用oh-my-zsh的话。那么,还需要进行如下修改打开~/.zshrc文件,增加(或修改)如下内容参考文章:https://stackoverflow.com/questions/38543763/tmux-will-not-stop-auto-renaming-window阅读全文