随笔分类 -  编程

摘要:本博文将会通过一个网络爬虫的例子,向你介绍 Kotlin 的基本用法和其简洁有力的 DSL。 关于DSL 按照维基百科的说法,DSL(domain-specific language) 是一种专注于某一特定应用领域的计算机语言。和我们常用的通用目的型语言(类如 C,Java,Python 等)相反, 阅读全文
posted @ 2024-03-26 17:22 学数学的程序猿 阅读(369) 评论(0) 推荐(0) 编辑
摘要:redis 版本:5.0 本文代码在Redis源码中的位置:redis/src/sds.c、redis/src/sds.h 源码整体结构 src:核心实现代码,用 C 语言编写 tests:单元测试代码,用 Tcl 实现 deps:所有依赖库 字符串存储结构 Redis 将字符串的实现称为 sds( 阅读全文
posted @ 2021-01-24 23:55 学数学的程序猿 阅读(186) 评论(0) 推荐(0) 编辑
摘要:写在前面 前段时间弄IoT相关的东西,系统学习了一下 MQTT 协议,在此分享出来。 本文先是对 MQTT 协议做了简单的介绍;接着是对 MQTT协议的内容做了较为全面的解读;最后使用 Python 语言去实现一个简单的 MQTT 客户端和服务器。 简介 MQTT 全称是 Message Queue 阅读全文
posted @ 2019-08-15 20:39 学数学的程序猿 阅读(16255) 评论(14) 推荐(15) 编辑
摘要:写在前面 最近需要实现自定义报表的功能,其中有一个需求是要计算用户输入的公式的值。比如用户输入公式:A1 + A2 * 2.4,其中的A1、A2是变量,2.4是常数,我们需要做的是将A1和A2对应的数值带入表达式,计算出最终结果。需要说明的是,公式是用户自己输入的,而不是我们预先设定好的;公式中还可 阅读全文
posted @ 2018-10-21 19:40 学数学的程序猿 阅读(4557) 评论(0) 推荐(3) 编辑
摘要:写在前面 好久没写博客了,今天来一发吧。分享一下今天下午用python写的“跳一跳”小游戏的辅助程序。之前是准备用树莓派操控一个“机械手指”来代替人的触摸操作,但该方案还在酝酿中,实现了再分享。接下来要分享的是用“纯软件”的方法来玩“跳一跳”。 原理 原理其实很简单,按如下步骤操作即可: 每次跳跃之 阅读全文
posted @ 2018-01-15 00:27 学数学的程序猿 阅读(6828) 评论(13) 推荐(12) 编辑
摘要:1. 写在前面 在很久之前学习过堆这种数据结构。这次再来学习一种比较特别的“堆”——斐波那契堆。下文首先会介绍斐波那契堆的结构,然后会介绍在其上的操作,最后再分析这些操作的效率,以及一些理论的证明。 2. 结构 斐波那契堆是一系列具有最小堆序的有根树的集合,即斐波那契堆中的每棵树均遵循最小堆性质。 阅读全文
posted @ 2017-10-03 16:11 学数学的程序猿 阅读(1955) 评论(0) 推荐(5) 编辑
摘要:1. 主要内容 本文的主要内容: 介绍DNS是干什么的; 介绍DNS是如何工作的; 介绍DNS请求与响应的消息格式; 编程实现一个简单的DNS服务器; 2. DNS是啥 关于DNS是啥,想必学过计算机网络的应该都知道,它是Domain Name System的简写,中文翻译过来就是域名系统,是用来将 阅读全文
posted @ 2017-04-15 13:38 学数学的程序猿 阅读(21591) 评论(5) 推荐(17) 编辑
摘要:1. 写在前面 昨天花了1天的时间把自己的博客从以前的Express换成了Angular2+Express,遂记录于此。博客Demo在这里,你也可以点击这里查看完整代码。 第一次使用Angular2,还是遇到了不少问题,比如 ng-cli(1.0.0-rc.1)自动生成的项目直接跑起来报错; 采用前 阅读全文
posted @ 2017-03-19 23:12 学数学的程序猿 阅读(5481) 评论(17) 推荐(8) 编辑
摘要:1. 写在前面 这要从前几天看Hibernate的用户手册说起。 这份手册确实挺长,而且还是全英文,对于刚过四级的我来说,看着确实有些“吃力”。这种“吃力”表现在,我经常看着看着就忘了自己看到哪了,对于前面看过的内容的印象特别模糊,于是我就在思考为什么会这样。 是有许多不认识的单词或不懂的语法吗?应 阅读全文
posted @ 2017-03-02 17:51 学数学的程序猿 阅读(797) 评论(4) 推荐(7) 编辑
摘要:1. 写在前面 近来感觉机器学习,深度学习神马的是越来越火了,从AlphaGo到Master,所谓的人工智能越来越NB,而我又是一个热爱新潮事物的人,于是也来凑个热闹学习学习。最近在看《Machine Learning IN ACTION》(作者:Peter Harrington)这本书,感觉非常不 阅读全文
posted @ 2017-01-26 22:58 学数学的程序猿 阅读(1031) 评论(3) 推荐(1) 编辑
摘要:1. 写在前面 之前我们跑了Angular的Hello World,你是不是对它有点感觉了呢?这一篇将结合一个TODO程序来继续学习Angular的用法。 梳理一下之前的Hello World程序。我们写了一个main.ts来引导模块AppModule,而该模块又包含组件AppComponent,这 阅读全文
posted @ 2017-01-09 22:07 学数学的程序猿 阅读(582) 评论(0) 推荐(0) 编辑
摘要:1. 写在前面 之前基于Electron写过一个Markdown编辑器。就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成;但就代码而言,之前主要使用的是jQuery,由于本人非专业前段,代码写的自己都感觉是“一塌糊涂”,十分混乱。现在看到Angular2十分火爆,跑了跑 阅读全文
posted @ 2017-01-07 16:10 学数学的程序猿 阅读(1810) 评论(2) 推荐(1) 编辑
摘要:1. 写在前面 昨天简单学习了一个消息队列项目——RabbitMQ,今天趁热打铁,将学到的东西记录下来。 学习的资料主要是官网给出的6个基本的消息发送/接收模型,或者称为6种不同的使用场景,本文便是对这6种模型加以叙述。 2. Tutorials 在学习6种模型之前,我们首先需要安装RabbitMQ 阅读全文
posted @ 2016-10-26 20:27 学数学的程序猿 阅读(9745) 评论(8) 推荐(8) 编辑
摘要:1. 简介 在之前我们学习了红黑树,今天再学习一种树——B树。它与红黑树有许多类似的地方,比如都是平衡搜索树, 但它们在功能和结构上却有较大的差别。 从功能上看,B树是为磁盘或其他存储设备设计的,能够有效的降低磁盘的I/O操作数,因此我们经常看到有许多数据库系统使用B树或B树的变种作为储存的数据结构 阅读全文
posted @ 2016-10-06 19:38 学数学的程序猿 阅读(3892) 评论(2) 推荐(2) 编辑
摘要:闲来无事,写了一个Markdown编辑器。基于 electron ,完全采用Web前段技术(Html,css,JavaScript)实现。代码已托管在 "Github" 上,欢迎下载使用。 下面上几张截图: 阅读全文
posted @ 2016-09-10 22:21 学数学的程序猿 阅读(684) 评论(0) 推荐(0) 编辑
摘要:1. 动态表 先来介绍动态表的概念。 我们在使用数组时,通常都是先创建一个大小固定的数组,然后再将数据填充进去。这时难免会遇到创建的数组过小或过大的情况。过小则满足不了存储需求;过大则浪费存储空间。于是我们对普通数组进行包装,创造出一种叫做 动态表 的数据结构。 所谓动态,就是它能够自动地进行表的 阅读全文
posted @ 2016-08-31 17:25 学数学的程序猿 阅读(1233) 评论(0) 推荐(0) 编辑
摘要:摊还分析(amortized analysis) 是一种分析一个操作序列中所执行的所有操作的平均时间分析方法。与一般的平均分析方法不同的是,它不涉及概率的分析,可以保证最坏情况下每个操作的平均性能。 下面介绍瘫痪分析中的最常用的三种技术。 1. 聚合分析 1.1 栈操作 先来看对栈进行操作的例子。 阅读全文
posted @ 2016-08-30 23:01 学数学的程序猿 阅读(6483) 评论(3) 推荐(2) 编辑
摘要:1. 写在前面 在 "上一篇博客" 中,我们通过 选择问题 了解了 贪心算法 。这一篇博客将继续介绍贪心算法,主要谈谈 贪心算法的原理 ,并简单分析一下 背包问题 。 2. 贪心算法原理 通过上一篇博客中的 选择问题 ,我们看到, 贪心算法 可以由如下几个步骤来实现: 1. 确定问题的最优子结构; 阅读全文
posted @ 2016-06-18 16:30 学数学的程序猿 阅读(2166) 评论(2) 推荐(4) 编辑
摘要:1. 写在前面 在之前的5篇博客中,我们学习了 动态规划 算法。我们可以看到,在求解最优化问题的算法中,通常需要经过一系列的步骤,在每个步骤中都面临多种选择。对于许多最优化问题,使用动态规划算法来求解最优解有些杀鸡用牛了,可以使用更加简单的算法。 贪心算法(greedy algorithm) 就是其 阅读全文
posted @ 2016-06-14 16:49 学数学的程序猿 阅读(4950) 评论(2) 推荐(3) 编辑
摘要:1. 提出问题 假设我们要设计一个将英语翻译成法语的程序,即对英文文本中出现的每个单词,我们需要查找其对应的法语单词。为了实现这一查找操作,我们可以构建一棵二叉搜索树,将n个英文单词作为关键字,对应的法语单词作为关联数据。 通过使用红黑树或其他平衡搜索树结构,我们可以做到平均搜索时间为O(lgn)。 阅读全文
posted @ 2016-06-12 15:04 学数学的程序猿 阅读(1149) 评论(0) 推荐(2) 编辑