编程与应用
文章平均质量分 52
编程语言及应用开发
maray
蚂蚁集团 OceanBase 内核研发高级专家,本科毕业于华中科技大学,研究生毕业于中科院计算所。主要兴趣领域:互联网应用,大规模数据处理。
展开
-
有趣的 Streamlit
Streamlit 是什么?去年过年前好好研究学习了一番,的确是个很有意思的面向数据开发者的工具,让不懂前端,只懂一点 Python 的数据应用者能够非常快速地搭建数据应用程序。它牺牲了一定的界面灵活性,获得了前后端代码逻辑的统一,开发者只需要写一份代码,就可以同时定义前端和后端逻辑。Streamlit 可以应用在大数据领域、AI 领域,作为连接用户和数据的利器。原创 2024-02-20 14:46:44 · 397 阅读 · 0 评论 -
Alfred 中如何做自定义搜索?
假设我实现了一个搜索引擎,那么我可以用脚本调用搜索引擎获得结果,最后在 Alfred 中对接一个 Open URL 的工作流即可。原创 2024-01-08 14:19:27 · 517 阅读 · 0 评论 -
OceanBase并行执行中 DTL消息接收处理的逻辑
OceanBase 并行执行的消息处理框架是很有意思的,里面用到了不少面向对象编程思想,值得分析。本文介绍 DTL 消息处理。原创 2023-05-31 11:45:44 · 726 阅读 · 0 评论 -
Linux timeout 命令
整个程序不长,但是要完全看明白每一行代码是做什么的,需要对 Linux 里的基本概念要了熟于心,对 Linux 信号处理理解非常到位,对 Linux 编程非常熟悉。原创 2023-03-13 14:49:54 · 1368 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(六)?
今天轮到讨论安全问题了。python 代码中包含有害内容该怎么办?常用技术是沙箱(Sandboxing)。本文从一些基础设施讲起。原创 2023-03-07 11:51:59 · 350 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(五)?
本节研究如何对 import 做白名单。原创 2023-03-02 21:24:59 · 566 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(四)?
本节记录一下多线程、多进程中调用 Python 解析器。原创 2023-03-02 11:43:27 · 189 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(三)?
和 python 交互,最繁琐的部分应该就是参数处理,本文演示了基础数据结构的输入输出。原创 2023-03-01 16:30:40 · 579 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(二)?
本文测试在 C++ 中调用 Pandas 库来执行 Python 程序。原创 2023-03-01 15:48:44 · 288 阅读 · 0 评论 -
如何在 C++ 中调用 python 解析器来执行 python 代码(一)?
实现 Python UDF 中的一步就是学习如何在 C++ 语言中调用 python 解析器。本文做一个记录和讨论。原创 2023-03-01 14:30:49 · 596 阅读 · 1 评论 -
学习点 C++ 11 的特性
C++ 要常学习原创 2023-02-27 18:04:43 · 284 阅读 · 0 评论 -
OAuth基本原理
准备用JSON+API的方式来做游味,以减少前后端的耦合。这个思路受启发于douban的API。douban API中讲到了OAuth,于是顺便研究了下,看是不是有必要也支持。 OAuth的产生背景如果校内希望去提取用户的MSN好友列表,有一种方法是(的确曾经用过,还记得吗?):要求用户在校内的一个导入页面输入用户名密码,然后以用户的角色去访问MSN,获得列表。该方法存在很原创 2010-04-13 18:06:00 · 2924 阅读 · 2 评论 -
CSS布局效果
与原计划稍微有一点出入,我们先完成BlogDigger的原型级产品:OnlineRssReader!前台后台数据库都动起来了。我在学习CSS+DIV+AJAX。下面是一个CSS的成果:-)html>head>meta http-equiv=Content-Type content="text/html; charset=gb2312">style>...body{...}原创 2007-05-10 13:56:00 · 1190 阅读 · 0 评论 -
fopen为什么慢之后继---用tcpdump抓包看看慢在哪里
本文背景:外国友人用Wireshark监听数据包的方式分析出来了为什么fopen打开部分url的时候很慢的原因。于是我也动手学习了一遍,有收获。抓包命令:tcpdump -i eth1 host 101.227.160.54 and port 80 -Ap -v -s10000命令解释参考:http://www.tcpdump.org/tcpdump_man.h原创 2015-10-24 21:53:47 · 2606 阅读 · 0 评论 -
关于建立专家Twitter社区的一种想法
阅读Linux源码过程中发现很多细微末节的函数都没有注释,在作者看来可能微不足道,但是从源码阅读者看来却是个坎。 网上有那种网站,把linux很多API都做了详细的解释,但是做得还不够:那些解释定位于面向驱动开发者,只提供了数量有限的API的解释。对于那些细微末节的函数,确只字未提。 为什么不能建立一个这样的社区呢:专门用于解释Linux函数。 社区具有Web2.0特色:原创 2010-04-20 12:05:00 · 1346 阅读 · 0 评论 -
什么是存储过程
类似与我们编程时的函数,将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令,跟函数调用差不多! 存储过程的优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据转载 2007-08-23 20:18:00 · 1239 阅读 · 0 评论 -
Linux UDP协议栈中的片段分析 - udp_recvmsg
udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len, int noblock, int flags, int *addr_len)调用了:err = skb_copy_datagram_iovec(skb, sizeof(struct udphdr), msg->原创 2008-09-19 13:15:00 · 3715 阅读 · 0 评论 -
iOS开发历险记
如果我是个有钱人,也许这一切都不是问题,问题是,我没钱。如果没钱,那就没办法买Mac Pro,也没办法买99$的Apple的Developer Program执照,也没办法买最新的Mountain Lion OS X。还好,有一件事,不算是悲哀透顶,我有一个白色的iPad。这大概是唯一的慰藉了吧。故事,从iPad开始。我想让iPad上运行我自己写的程序,但是它上面运原创 2012-03-01 01:16:52 · 2316 阅读 · 2 评论 -
设计准则 之 思考
设计准则 创建设计的时候,必须记住几个基本的设计准则.它们可以帮助你创建一个不但可工作,而且充沛且优美的设计. 首先是"思考,然后写代码."太多的人,一拿到一个作业,就急不可待地开始写代码.但是好的程序员在开始写代码前会花一些时间理解问题,研究问题的各个方面.毕竟,如果你正从圣地亚哥驾车去芝加哥,你是跳上车就向东北方向开(希望你能到达那儿),还是拿出一张地图计划你的路线 如果你在做原创 2007-05-30 01:05:00 · 1162 阅读 · 1 评论 -
DNS欺骗技术原理与安全防范技术
DNS欺骗技术原理与安全防范技术 概述:什么是DNS欺骗?DNS欺骗是一门改变DNS原始指向IP的艺术。为了更好的理解,让我们先来看一个例子。如果你想用浏览器去google搜索一些信息,毫无疑问的你会在地址栏里输入www.google.com的网址然后回车。那么在这背后又有什么事情正在进行着呢?一般而言,你的浏览器将会向DNS服务器发送一个请求,从而要求得到与www.google.转载 2008-09-16 17:52:00 · 3385 阅读 · 0 评论 -
NAP穿透原理
问题:两台计算机,各自都处于一个LAN中,他们如何建立p2p通信呢?有了服务器的帮助就能顺利完成通信吗?有何门道? 现在我们再来分析一下我们最关心的两个NAPT后面的内网计算机如何实现直接通讯呢? 两者都无法主动发出连接请求,谁也不知道对方的NAPT的公网IP地址和NAPT上面映射的端口号。所以我们要靠一个公网IP地址的服务器帮助两者来建立连接。当两个NAPT后面的内网计算机分别连接了转载 2009-12-06 17:09:00 · 1654 阅读 · 0 评论 -
英山的计算机网络安全报告
你好,我是华中科技大学计算机大三的一名学生,英山石正人。 近几年来,英山的计算机网络发展的十分迅速,软硬件设施都十分到位。 但是,在一次网络安全测试中发现:不到1分钟,就扫描出十几个存在漏洞的电脑!其后果就是,这些存在漏洞的电脑可以被黑客(甚至是稍微懂得一点黑客工具使用方法的人)轻易入侵。虽然英山的电脑普遍都安装了“咔吧司机”+“360安全卫士”,但是咔吧存在一个致命原创 2007-03-25 21:30:00 · 1609 阅读 · 1 评论 -
机房的带外管理---远程管理你的开发测试机
昨天一台测试机卡死了,ssh连不上去,于是网上提单子让重启,结果直到今天还没搞定。后来才知道,是因为这台机器的“带外”是坏的,无法远程重启,必须去机房重启。什么是带外?还能有这么大影响。于是学习了下,很简单...原创 2013-08-22 11:56:33 · 2925 阅读 · 0 评论 -
浅谈会话劫持原理及实践
《监视你的一举一动》 ---浅谈会话劫持原理及实践 前言 通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意;其实,真正的入侵是占领整个内部网络。针对内部网络的攻击方法比较多,但比较有效的方法非ARP欺骗、DNS欺骗莫属了。但是,不管使用什么技术,无非都是抓取目标的数据包,然后分析出敏感数据。如果目标内部采用的是共享式转载 2008-09-16 18:07:00 · 5060 阅读 · 1 评论 -
Web负载均衡 -- 《构建高性能Web站点》读书笔记
昨晚发兴读了一下《构建高性能Web站点》Web负载均衡一节,好记性不如烂键盘,笔记梳理一遍。最简单的负载均衡模式:HTTP重定向对外入口服务器只有一台,请求到达后根据请求URL内容将该请求重定向到特定服务器。这种负载均衡方法的特点是(1)一个请求实际会产生两次http ping pong(2)最大带宽取决于入口服务器带宽,由于入口服务器只需要处理路由信息,所以可以处理的请求数量可以原创 2013-08-17 00:40:01 · 2957 阅读 · 0 评论 -
搭建私有的git服务平台
为了实现公司开发平台、个人电脑Windows平台、个人电脑Linux平台、国外买的云服务器、即将咬购买的阿里云的云服务器之间的代码同步和快速部署,进行了一些简单的技术选型,首先考虑的是rsync,发现安装非常麻烦,然后考虑了一个商业软件,安装亦不顺,最终决定还是走最成熟的代码仓库平台,svn和git都是不错的选择,但是考虑到两点,抛弃了svn:svn在每个目录下都有.svn文件夹,内容原创 2013-02-23 23:41:31 · 9224 阅读 · 0 评论 -
浏览器的改进
JQuery使得网页对象的操作变得十分直观,同时实现了描述语言(HTML)和动态控制语言(Javascript)的分离,二者之间的联系通过标签名建立。 (1)不知道有没有这样一个JQuery插件--menu.js:用户在任意一个对象上点右键,脚本会根据对象特点弹出不同的菜单,这样用户操作将变得更加简单直观。基本实现思路也不难:on_$object_rightclick(){原创 2009-02-27 13:20:00 · 888 阅读 · 0 评论 -
轮询法在混合消息通信中的缺陷
消息通信过程可以采取轮询或者中断两种方式,本文尝试对轮询法的一个缺陷做出分析。 一般轮询法的框架: bool have_msg = false;msg_struct msg;while(1){ have_msg = poll_msg(&msg); if(have_msg) { switch(msg.type)原创 2009-11-20 10:51:00 · 1314 阅读 · 0 评论 -
理解XML的概念
XML是Extensible Markup Language的简写,一种扩展性标识语言。 在书写XML文档时,你必须遵循一些规则。不过这些规则通常很简单,易于理解。下面我们就将描述这些规则。XML文档版本XML文档的第一行用来定义该文档使用的XML的版本,下面代码中的标签后面的属性值定义了该XML文档使用的版本为1.0。xml version=1.0?>Sections>ado>c转载 2007-04-08 19:24:00 · 1961 阅读 · 1 评论 -
MIME邮件面面观
P.bhw98{ PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 9pt; PADDING-BOTTOM: 0px; MARGIN: 10px 0px 5px; LINE-HEIGHT: normal; PADDING-TOP: 0px; FONT转载 2007-05-29 00:02:00 · 1431 阅读 · 0 评论 -
由当前工作牵引出的topic
无聊,做一个名为Quick Projector的小项目,目的是能够在无线局域网内共享一台连接有投影仪的计算机,实现远程播放幻灯片。该项目的重点在于需要传输高质量的图像,并且低延迟(0.2~0.5sec)。 通过Google发现:1、重点部分实质是牵涉到了"视频会议(VideoConference)”中要解决的议题之一。2、Windows Remote Desktop Protoco原创 2009-03-03 21:24:00 · 762 阅读 · 0 评论 -
一个木马下载脚本
帮一个朋友在阿里云Linux服务器上装软件,发现出奇的卡,终端上敲几个字就卡几十秒。ps -ef一看,发现两个可疑物:/etc/tows/etc/towgets.sh原创 2016-04-29 20:33:04 · 3023 阅读 · 0 评论 -
安装 Theos
安装方式见:http://www.jianshu.com/p/3c1d71c880ca我遇到的问题: 按照网上某个教程,执行了一把SDKVERSION=7.1。结果make时死活告诉我 iPhoneSDK7.1 找不到。 解决办法: 1. 要么执行export SDKVERSION=10.0 2. 要么最开始就不要执行 SDKVERSION=7.1, theos会自动找SDK原创 2016-11-13 15:26:37 · 966 阅读 · 0 评论 -
[MacrayKV] tcmalloc introduction
tcmalloc motivation:1. 50 nanoseconds of TCMalloc v.s 300 nanoseconds of glibc 2.3 malloc( which is called ptmalloc2 )2. reduce lock contention for multi-threaded program.3. space-efficient repr原创 2013-11-04 19:12:02 · 1263 阅读 · 0 评论 -
[MacrayKV] An innovative parallel testing framework
We use tbsys multi-thread API for parallel testing In OceanBase. No so bad news is that tbsys has encapsulated an easy API for end user. The real bad news is that every tester should learn how to use原创 2013-11-08 12:25:23 · 1270 阅读 · 0 评论 -
The Binding of a Data Member
《深度探索C++对象模型》第三章“Data语意学” 3.1 The Binding of a Data Member下面一段代码的输出是什么?[xiaochu.yh@OceanBase cpp]$ cat member_binding.cpp #include using namespace std;typedef int len_t;class Point{ pub原创 2013-04-05 11:50:42 · 1014 阅读 · 0 评论 -
C++构造函数复习
#include using namespace std;class Element{ public: Element(int e = 12) : elem(e) { cout << "element 1" << endl; } int elem;};class ArrayHelper{ public: ArrayHel原创 2012-07-19 09:33:31 · 1295 阅读 · 0 评论 -
C++模板
1. 名词概念模板类,模板函数,特化模板(template specialization)2. 注意事项模板必须在头文件中实现,以下情况除外:如果只在cpp内用到的模板函数,是可以在cpp中实现的,参见oceanbase/updateserver中的response_data_函数;还有特化的模板函数,也可以在cpp中实现,参见oceanbase/updateserver中的ups_s原创 2012-07-31 11:44:27 · 929 阅读 · 0 评论 -
uint 和 int 的加减法溢出规则
unsigned、signed 对于加减法指令来说有意义吗?在寄存器面前,正负平等?可以看到,在加减乘除这个事情上,正负计算对于寄存器来说还真没有任何区别!原创 2022-11-04 10:38:14 · 901 阅读 · 0 评论 -
GTest测试框架中的friend(友元)使用注意点
为了测试MyClass,写了一个测试caseTEST_F(MyClassTest, method){}GoogleTest框架中使用这样的测试单元时,会自动生成一个叫做MyClass_method_Test的类,在MyClass中声明友元的正确方法是:private: friend class MyClass_method_Test; other var ... g原创 2012-07-12 13:52:42 · 4217 阅读 · 0 评论