Memory Allocation

  • Home

  • Tags

  • Categories

  • Archives

  • Commonweal 404

  • Search

Python2 vs Python3

Posted on 2019-01-28 | Edited on 2019-01-27 | In Hard Core CS |

Python2 和 Python3

最近在面试, 遇到了几个同样的问题, 就是 “python2 和 python3 具体有哪些区别”? 遇到这个问题的时候, 我每次都懵逼, 因为确实除了语法糖以外的区别, 我一个都说不出来. 所以回来之后查了一下资料, 总结出几个主要的区别, 记录下来.

Read more »

全村的希望

Posted on 2018-12-19 | In interview questions |

全村的希望

这是一个在面试的时候遇到的问题. 题目描述是这样的.

输入是一个村子的人. 编号 0 到 n-1.
有一个函数, 叫knows(a, b), 用来检测村民a是否认识村民b
目标是在村民里找到一个"全村的希望"
如果要作为"全村的希望", 那么他必须满足:
1. 全村里的人都认识他
2. 他不认识村里的任何一个人
Read more »

一道有意思的算法题

Posted on 2018-12-14 | Edited on 2018-12-19 | In interview questions |

一道有意思的算法题

实现一个数据结构, 要求

  1. key - val 形式
  2. 插入的时间复杂度是 $O(1)$
  3. get()的时间复杂度是 $O(1)$
  4. delete()的时间复杂度是 $O(1)$
  5. getRandomVal()的时间复杂度是 $O(1)$
    Read more »

微信小程序 【我要猫咪】 抓包分析

Posted on 2018-10-23 | Edited on 2018-12-19 | In security |

原因

最近朋友圈一直在流行一个叫 “我要猫咪的小程序”,主要玩法就是用罐头买猫咪。两只一级猫咪合成一只二级猫咪。每次购买猫咪会导致下次再次购买的时候价格上涨。
罐头主要的主要来源是分享到朋友圈,或者微信聊天群,然后获得罐头。每只猫咪每一秒都有固定的罐头产出。一开始升级很快,但是随着级别的升高和猫咪价格的上涨, 解锁新的猫咪变得越来越困难。

而网上的很多的攻略都是说建很多很多个所谓的“刷猫群”,通过不断的分享来获得足够的罐头。这个方法不是不行,而是太繁琐了。
所以我开始去想,有没有什么方法可以一步满级省去天天挂机的烦恼。

Read more »

[翻译] 后敏捷开发时代

Posted on 2018-08-22 | Edited on 2018-12-19 | In Technical Artical |

原文链接

Post Agile: embracing asynchronous processes

作者信息

Jilles Van Gurp

后敏捷开发时代

就像我们这个行业里(软件开发)很多跟我年纪相仿的人一样, 我记得在internet和敏捷开发概念之前, 事情是怎么被完成. 那时候, 写代码意味着使用昂贵的工具, 要查很多很多的书. Google 和 StackOverflow 还未存在. 办公室里有网络也不是特别常见. 我用买commodore 64时附送的Basic手册来学习编程. 那时候, 并没有敏捷开发.

从那时候开始, 事情起了变化, 这些变化大部分是好的变化. 我对Kent Beck的书Extreme Programming 抱有非常大的热情. 在那个时候, 我正在攻读软件工程的博士学位. 在我2003年的博士论文当中, 我甚至引用了这本书的一些内容. 敏捷开发在开发这个事情上做了很多革命性的改变.

不好的敏捷开发

最近这些年, 每个人都在强调又或者在假装他们正在使用敏捷开发. 所以”敏捷开发”这个词变得有点无意义了. 所有银行, 卖保险的, 还有一些外包小作坊都在使用”敏捷开发”. [Captial A Agile of course because they are doing things “by the book”]. 只要有敏捷开发知识的任何人, 都会知道这个不是一个正确的行为. 我曾经在一些研讨会, 讲座上碰到过敏捷开发宣言的签署者讲出这个事情. 敏捷开发事实上是一套工具, 可以让你用和改变成合适你的样子. 照本宣科是开始, 而不是结束. 如果你不了解任何敏捷开发的事情, 你才应该照本宣科.

[翻译] Candy Japan有多少行代码

Posted on 2018-08-21 | Edited on 2018-12-19 | In Technical Artical |

原文链接

How many lines of code is Candy Japan?

湾区日报短评

这是每月交$29,寄一盒日本零食给你的电商。Python + App Engine,集成 PayPal 与 Recurly 收钱,还有一些自动化的代码用来优化打印送货地址、退货的流程等。总共 8000 多行 Python 代码。
他是 2011 年开始做的,本文写于 2016 年。如果是 2018 年从头开始做的话,可以不用写这么多代码,有很多现成的 API 几行代码就能搞定了。

Read more »

网络基础知识(七) DNS 和 Name Resolution

Posted on 2018-07-11 | Edited on 2018-12-19 | In Hard Core CS |

系列回顾

  • 网络基础知识(一) TCP/IP五层模型
  • 网络基础知识(二) Data Link层详解
  • 网络基础知识(三) Network层详解
  • 网络基础知识(四) 子网与路由
  • 网络基础知识(五) Transport层详解
  • 网络基础知识(六) Application 层与OSI 七层模型

什么是DNS

DNS是 Domain Name Service 的缩写, 中文译作计算机域名系统. 它主要应用于域名的IP地址查询. 举个简单的例子来说, 如果你要访问google.com, 系列之前的文章提到过, 进行网络通信一定需要IP地址, 所以当敲下回车那一下, 首先就是需要通过DNS查找到google.com的IP地址, 然后才是建立TCP连接.

Read more »

网络基础知识(六) Application 层与OSI 七层模型

Posted on 2018-07-09 | Edited on 2018-12-19 | In Hard Core CS |

系列回顾

  • 网络基础知识(一) TCP/IP五层模型
  • 网络基础知识(二) Data Link层详解
  • 网络基础知识(三) Network层详解
  • 网络基础知识(四) 子网与路由
  • 网络基础知识(五) Transport层详解

Application Layer 应用层

应用层是整个网络模型中最靠近用户, 常用的协议有 HTTP, FTP/SFTP, SMTP等等. 比如说浏览器, 市面上有很多很多浏览器, 常见的有 Chrome, Firefox, Safari, Edge等等, 服务器有 nginx, apache, tomcat 等等, 但是无论一个网站的后端使用什么样的服务器, 用户使用什么样的浏览器, 数据都能被正确解读, 这是为什么呢? 那是因为服务器和浏览器都采用了同一个协议, 叫 HTTP 协议.

对于应用层来说, 它的数据也需要被封装到底层. 对于不同的协议, 数据包的格式/字段可能会不一样, 但是对于底层的协议来说, 并不care. 它们要做的就是把应用层的数据包封装到data payload里面, 然后传输到相应的网络节点.

Read more »
12…5
Jiakuan Li

Jiakuan Li

雷霆雨露,俱是天恩

39 posts
6 categories
28 tags
GitHub Twitter
© 2019 Jiakuan Li