做这道题起因是,无意中发现了一个叫 zkw 线段树
的东西 QAQ,从下往上遍历挺有意思的,不仅非递归,而且常数很低。这题用线段树就能无脑解决吧,后来从网上发现有树状数组解决的,差分的思想可以学习。
基于 WebSocket 的 Web 端订阅消息推送
在 基于 DWR + ActiveMQ 的 Web 端订阅消息推送 里我实现了 Web 端订阅消息推送,然而,实际测试的时候发现速度不够,而且还不稳定,于是决定抛弃 DWR
和 ActiveMQ
,使用 Socket.IO
(封装了 WebSocket
)做前端推送,自己写逻辑实现订阅逻辑。在前端使用 Socket.IO 提供的 JavaScript 客户端,在后端把 netty-socketio 整合进基于 Spring + SpringMVC 的 Java Web 后台,作为 Socket.IO 服务端。
MIT 6.824 Spring 2018 Lab 1 实验总结
Code Jam Kickstart Round B 2018 题解
这套题偏难 _(:з」∠)_
A. No Nine
求 [L, R] 的合法数字个数,可以转化为求 [1, x] 的合法数字个数。
不能有数字 9,也就是只允许数字 0~8,这就相当于九进制数,即 [1, x] 的不含 9 的数字个数有 base9(x) 个(x 为不含 9 的十进制数)。而且每连续 9 个不含 9 的数字里,有且只有一个被 9 整除的数(九进制下末位为 0 的数)。因此先把 x 的末位变成 0,让剩余的不含 9 的数字个数能被 9 整除,答案为 brute_force([x - x % 10, x]) + 8 / 9 * base9(x - x % 10)
,两部分分别对应代码里的 ret1
和 ret2
。
拼图 GUI 界面 AVATAR 实现
2017 年 10 月~2018 年 3 月在南洋理工大学 DMAL 实验室做 RA,参与 Graph Mining 相关项目。这个项目做的是从图/网络里提取一定数量的 pattern,让用户能够方便地构造数据集相关的 query。这个项目的目标有别于别的相关工作:
- pattern 对数据集有尽可能高的覆盖率
- pattern 间冗余度尽可能低
详细描述见导师发的文章 Data-driven Visual Graph Query Interface Construction and Maintenance: Challenges and Opportunities。
到目前为止我已经实现了 pattern 提取的整个过程,接下来要做一些列实验和写论文。无论是实验或作品展示,都需要用户能够操作的 GUI 界面。但是实验室没有啊,怎么办?(其实实验室是有个用 Java Swing 做的半成品,Java 6 年代做的,研究了半天决定放弃)于是做数据挖掘的我又做起了熟悉的前端,前前后后花一个月做了出来。这篇文章介绍用 pattern 拼图的 GUI 界面实现(老板指定名字为 AVATAR
,忘了问缘由)。至于 pattern 提取算法,等文章发出来再做介绍吧。
基于 DWR + ActiveMQ 的 Web 端订阅消息推送
基于 Web 的消息订阅/发布系统可以分两部分考虑:一是使用什么工具搭建订阅/发布系统,二是如何进行 Web 前后端交互。
对于前者,业界很多 MQ 产品可以满足需求:RabbitMQ
、ActiveMQ
、ZeroMQ
等,本项目采用 ActiveMQ
。关于 Web 前后端交互,目前最流行的技术是 HTML5 的 WebSocket
,然而项目方要求兼容 IE8,因此只能寻求旧一点的技术,DWR
完全能满足项目的需求。
向 HTML 表格添加选择框列筛选器
在表格的某些列添加筛选器有助于数据分析,在生物数据里这个功能尤其重要。今天在项目的基因表达数据表实现了这个功能。
使用 DataTables 自带例子
DataTables 是特别实用的 jQuery 表格插件,官方文档介绍了添加列筛选器的方式(详见 https://www.datatables.net/release-datatables/examples/api/multi_filter_select.html):