XX雨中人

纸上得来终觉浅,绝知此事要躬行


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索
close
High一下!

北京三年

发表于 2021-07-12   |   分类于 生活随笔   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

转眼来北京已经三年有余,在北京遇到另一半结婚,回想毕业时一阵恍然,不敢想自己会坚持这么久,也换了一份工作,新工作不知不觉也已经一年了,有过离开的选择和挣扎,也更明白坚守的意义,幸运的了双月spot bonus,希望一切都是最好的安排啊。

阅读全文 »

回溯算法

发表于 2020-05-24   |   分类于 基础杂谈   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

前言

解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:

1、路径:也就是已经做出的选择。

2、选择列表:也就是你当前可以做的选择。

3、结束条件:也就是到达决策树底层,无法再做选择的条件。

代码方面,回溯算法的框架:

1
2
3
4
5
6
7
8
9
10
result = []
function backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return

for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择

其核心就是 for 循环里面的递归,在递归调用之前「做选择」,在递归调用之后「撤销选择」

什么叫做选择和撤销选择呢,这个框架的底层原理是什么呢?下面我们就通过「全排列」这个问题来解开之前的疑惑,详细探究一下其中的奥妙!

阅读全文 »

龟兔赛跑,floyd判圈算法

发表于 2020-02-14   |   分类于 基础杂谈   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

算法推导

阅读全文 »

贪心、分治、回溯、动态回归比较分析

发表于 2019-10-21   |   分类于 基础杂谈   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

贪心、回溯、动态规划可划分为一类,而分治单独一类

前三个都是解决问题的模型,可抽象成多阶段决策最优解,而分治问题尽管大部分也是最优解问题,但是大部分不能抽象成多阶段决策模型

回溯算法是万金油,基本上能用动态规划、贪心解决的问题,都可以用回溯算法解决,其实相当于穷举搜索,但是⌚️复杂度比较高,是指数级别的,只能用来解决小规模数据问题。

动态规划相对比较高效,能用动态规划解决的问题需要满足三个特征:最优子结构、无后效性、重复子问题。对于重复子问题,分治要求分割成子问题不能有重复,而动态规划之所以高效就在于回溯算法实现中存在大量重复子问题。

贪心算法实际上是动态规划的特殊情况。她解决的问题起来更加高效,代码实现也更加简洁,但是她需要满足三个条件:最优子结构、无后效性

、贪心选择性(即选择只当前最优解,不记录之前状态)

总结起来:

  1. 贪心: 一条路走到黑,就一次机会,只能那边看着顺眼走哪边 ;
  2. 回溯: 一条路走到黑,无数次重来机会,还怕我走不出去;
  3. 动态规划: 拥有上帝视角,手握无数平时宇宙的历史存档,同时发展出无数个未来;
  4. 分治:大问题肢解为小问题,然后再把结果合并

字符串匹配BM算法笔记

发表于 2019-05-05   |   分类于 算法   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

简介

BM算法的核心思想是通过将模式串沿主串大踏步向后滑动,从而大大减少比较次数,降低时间复杂度。而算法的关键在于如何兼顾步子迈得足够大与无遗漏,同时尽量提高执行效率。这需要模式串在向后滑动式,遵守坏字符与好后缀规则,同时采用一些技巧。

阅读全文 »

一段replace into 引发的血案

发表于 2019-01-13   |   分类于 基础杂谈   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

最近项目更新数据库,由于语句使用不善,踩了许多坑,特做此总结引以为戒。

在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

通常使用replace into和insert into on deplicate key update

阅读全文 »

mysql语句小结

发表于 2019-01-06   |   分类于 基础杂谈   |   阅读次数

纸上得来终夜寝啊,据知此事要躬行

前言

说起数据库学习历程,启蒙应该是毕业前完成的学习了慕课网的一门课程两遍吧,还自我感觉尚可,接下来就是入职以来在公司内部奥特曼系统写sql吧,算上真正操练了,对联合查询子查询等高级使用有个进阶,然后就是现在写node项目直连数据库啦,更多的是考虑了大量数据下查询性能以及安全权限方面的问题。

阅读全文 »

webpack Tree Shaking

发表于 2018-10-15   |   分类于 基础杂谈   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

前言

很久前看过webpack,入职来一直做小程序快应用相关需求,对于框架和工程化的东西渐渐拉下了,忽然发现webpack都到4.0了,想想之前看还是2.0时代,真是是新月异啊,webpack入门的初始化配置就不再记述,基本看下编译之后的文件就能读明白(普通模块依赖、动态引用编译)主要记述下自己看tree shaking时的坑。

Tree Shaking

它是何方神圣

首先介绍下什么是tree shaking,可以理解为通过工具”摇”我们的JS文件,将其中用不到的代码”摇”掉,是一个性能优化的范畴。具体来说,在 webpack项目中,有一个入口文件,相当于一棵树的主干,入口文件有很多依赖的模块,相当于树枝。实际情况中,虽然依赖了某个模块,但其实只使用其中的某些功能。通过tree-shaking,将没有使用的模块摇掉,这样来达到删除无用代码的目的。

阅读全文 »

数组扁平化

发表于 2018-08-05   |   阅读次数

纸上得来终觉浅,绝知此事要躬行

转眼又要开始校招了,组内也要求每人出一道题,忽然就想起自己面试遇到的一道数组扁平化的问题,就顺便温习做下总结。

题目:请使用尽可能多的方法将一个js嵌套数组转换为只有一层的数组。例如:

1
2
let  arr = [1, [2, [3, 4]]];
console.log(flatten(arr)) // [1, 2, 3, 4]
阅读全文 »

快应用开发实践踩坑

发表于 2018-07-21   |   分类于 编程实战   |   阅读次数

纸上得来终觉浅,觉知此事要躬行

前言

​ 工作后发现写文章的频率变得少了很多,还是要多总结下的,最近在开发公司搜狗搜索快应用,开发最初毫无经验完全对着文档,快速迭代了好几版,也是时候做个总结和吐槽了。、

快应用是什么?

借用官方的说法有三点:

  1. 基于手机硬件平台的新型应用形态,标准由主流手机厂商(==仅限安卓==)组成的快应用联盟联合制定。
  2. 快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台,以平台化的生态模式对个人开发者和企业开发者全品类开放。
  3. 快应用无需安装、即点即用。

个人觉得就是应用商店内部的小程序吧,而且还要面临各个厂商的问题,ios缺阵也是一大不爽,无论如何既然作为一种生态还是很有而且无需安装能力也和app相近还是有很大的前景的(参加快应用沙龙指导汽车之间DAU有10w,还是不错的),作为前端人员还是很有学习必要的。

阅读全文 »
12…7

62 日志
7 分类
52 标签
RSS
gitHub twitter
© 2016 - 2021 qijiIng
由 Hexo 强力驱动
主题 - NexT.Pisces
本站访客数人次 本站总访问量次