1.

在古老的非洲大陆上,有个原始人无意中抬头仰望星空,凝视的时间稍微长了一些,超过了外星人设置的阈值,立刻拉响了人类即将产生文明的警报。因为外星人认为,人类已经产生了对宇宙的好奇心,文明的产生,科技的发展不过是一瞬间的事情——摘自刘慈欣《朝闻道》。

作为一个靠技术吃饭的我们,面对系统架构快速更新迭代,新技术层出不穷,如果不抱有对技术的好奇心,那么真可能会出现“昨日的你懵懂,今天的你却不懂”;更不会出现 Java 那小子 与 Python 菇凉浪漫的爱情故事。

准备好小板凳,爱情故事要开始啦。

2.

近期 Java 那小子,陷入了对 Python 菇凉的水深火热的爱情追逐。

9012 年 7 月 2 日是 Python 菇凉的生日,也就是今天,正是 Java 表爱心的好时机。Java 思索了好几天,想给心爱的 Python 菇凉送一个惊喜,于是绞尽脑汁制作了一个生日贺卡,由于 Java 天生脸皮就薄,不敢公开示爱,只能默默通过 Email 的方式邮寄过去。

由于 Python 菇凉的倾国倾城,导致追求她的年轻有为的帅小伙尤其的多,不知道有多少追求者曾拜倒在她的石榴裙下。

Java 十分好奇的想知道 Python 菇凉到底有没有看过自己发过去的爱的祝福?也不知道是否会被淹没在她专门收取爱的百宝收件箱中?

一向擅长默默行事的 Java,头顶个大大的问号,抱着好奇的心,找来压箱底的那本厚厚的《爱情 36 技》,倒腾好几遍。当倒腾到快要放弃时,突然倒腾到第 35 技 —— 追美妹的技术,Java 眼前一亮,心中乐开了花。

Java 结合自己的现状,认真展开了对《爱情 36 技》中的追美妹攻略的使用解读。

追美妹攻略使用指南。这个攻略,谨献给那些:内心无时无刻不在思念远在天涯的对方,而且时不时纠结每次发过去的祝福,是否被深爱的她(他)成功接收的小哥哥小姐姐们。

追美妹攻略实施步骤。

 

第一步:智商不够,HTML 月老来凑。

 

找 HTML 月老,把你想要表达的坚如磐石、海枯石烂的爱情让 HTML 月老帮你实现一个祝福贺卡。

月老肯定会把你的爱情表达的淋漓尽致,一定会达到你的满意。

第二步:耍小聪明,让追踪不成问题。

 

祝福贺卡 HTML 月老实现完成后,此时需要你稍作手脚。在祝福贺卡的正文中,找个不起眼的地方,放入一张空白的图片,爱情配方如下:

<img style='display:none;' src='http://www.javalovepython.com/loveFeedBack/pythonVipId'/>

  

其中图片的 src 属性为 Java 那小子专门提供的统计 Python 菇凉是否已阅的服务口,并把 Python 菇凉在 Java 心目中存储的 vip 编号掺入其中,以便确定是 Python 菇凉的阅读贺卡回馈,而不是 C++ 大娘的阅读回馈。

第三步:攻略献上,静等爱情的心跳。

此时当 Python 菇凉打开 Java 发过去的祝福贺卡时,她的百宝收件箱客户端解释执行邮件正文渲染的时候,埋藏的图片会执行 src 请求,会向 Java 发送已阅心跳(想想场景都很刺激)。

当 Python 菇凉向 Java 发送已阅心跳时,会调用 Java 那小子提前准备好的爱情服务口,爱情服务口会把对应的祝福贺卡是否已读状态,改为已读状态(想想暗箱操作,别有一番爱情的滋味)。

第四步:经验之谈。

人有失足,马有失蹄,经验也有不准的时候,未雨绸缪,爱情心跳双保险。

追踪 Python 菇凉的流程没毛病,Java 那小子能够正常判断 Python 菇凉是否读取了祝福贺卡邮件,但是由于 Python 菇凉收取爱的邮件百宝箱的版本不同,会导致有些埋藏的图片却无法隐藏,一旦展示将导致爱情局面无法挽回,所以 Java 那小子还需要在服务口真正的返回一张 1 x 1 的样式为不可见的图片。

随着 Python 菇凉阅读邮件的反馈次数越来越高,潜在表达了对 Java 好感越来越浓,Java 那小子用邮件发送爱情的祝福的频率也越来越高,就这样你侬我侬,一来二去,最终Java 那小子终于抱得美人归。

3.

故事讲完了,追逐爱情的攻略你 get 到了没?容我们再来总结一下。

a. HTML 月老负责生成邮件正文;
b. 添加一张样式为隐藏,大小为 1 x 1 的图片,其中 src 地址为服务端统计接口 url 地址;
c. 实现 src 对应的服务端接口 url,做阅读记录更新,再真实返回一张 1 x 1 的图片。

  

只写思路,不写代码都是氓流,所以我还是码两行硬编码吧,以供你们参考。

题外话:此种追踪技术不但适合在爱情的追逐上,同时也适用于工作中邮件阅读量统计以及诸多统计类的需求。

其中好奇的你肯定会问:是否能够获取足够多的隐私信息?这个可能存在不可告人的秘密啦,自己尝试摸索一下吧。

好了,今天的故事就讲完了,希望你们喜欢。

【Java技术系列】爱情36技之追美妹的技术的更多相关文章

  1. 【Java技术系列】爱情36技之暗送秋波的技术

    1. 这篇文章想分享已经很久了,苦于皱巴巴的技术比较生涩难懂,迟迟没有找到好的分享方式,今天结合爱情中暗送秋波的故事的形式,尝试分享一下. 以后如果再有人问你们:能否在加载类的时候,对字节码进行修改? ...

  2. Java Redis系列3(Jedis的使用+jedis连接池技术)

    Jedis的使用 什么是Jedis? 一款Java操作redis数据库的工具 使用步骤 1.下载redis所需的java包 2.使用步骤 import org.junit.Test; public c ...

  3. 【Java技术系列】爱情36技之记忆永存

    1.  关注“一猿小讲”的伙伴们都清楚,Java 那小子带着心爱的 Python 菇凉,去了一趟浪漫的土耳其,然后一起又去了东京和巴黎,接着 Python 菇凉自己又去了云南的大理. 就在昨天,Pyt ...

  4. 【Java技术系列】爱情36技之Bug大战

    1. 鲁迅先生说:程序员,天不怕地不怕,就怕小虫儿爬呀爬,爬呀爬. 随着时间的推移,鲁迅先生又说:真正勇猛的程序员,敢于让虫子面对惨淡的虫生. 虫子在程序员心中是啥东西?虫子的学名为 Bug,是多少入 ...

  5. Java基础系列(36)- 数组三种初始化及内存分析

    内存分析 数组三种初始化 静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)} 动态初始化 int[] a = new i ...

  6. Azure Messaging-ServiceBus Messaging消息队列技术系列-索引篇

    Azure Messaging ServiceBus Messaging相关的技术系列,最近已经整理了不少了,统一做一个索引链接,置顶. 方便查找,并后续陆陆续续再增加. 学习消息队列技术,可以先看第 ...

  7. 1.Java 加解密技术系列之 BASE64

    Java 加解密技术系列之 BASE64 序号 背景 正文 总结 序 这段时间,工作中 用到了 Java 的加解密技术,本着学习的态度,打算从这篇文章开始,详细的研究一番 Java 在加解密技术上有什 ...

  8. Java 加解密技术系列文章

    Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...

  9. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

随机推荐

  1. AOP和spring AOP学习记录

    AOP基本概念的理解 面向切面AOP主要是在编译期或运行时,对程序进行织入,实现代理, 对原代码毫无侵入性,不破坏主要业务逻辑,减少程序的耦合度. 主要应用范围: 日志记录,性能统计,安全控制,事务处 ...

  2. 必备技能一、webpack

    https://cloud.tencent.com/developer/section/1477376----->配置很重要 一.基本安装 mkdir webpack-demo &&am ...

  3. pytest、tox、Jenkins实现python接口自动化持续集成

    pytest介绍 pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩展性,用户自 ...

  4. ggplot2练习

    图源于电力电子课本65页——电容滤波的单相不可控整流电路. f<-function(w,d) { l<-w/sqrt(w^2+1)*exp(-atan(w)/w)*exp(-d/w) r& ...

  5. yield 语法备忘录

    yield 语法备忘录     yield 语法备忘录 语法 .net yield 读作:“一有得” 英式发音 皮一下~ yield 关键字向编译器指示它所在的方法是迭代器块. 编译器生成一个类来实现 ...

  6. Docker学习-私有仓库docker-registry的使用

    1.从docker官方仓库下载registry 2.将registry放进容器内 3.在官方下载镜像上传本地仓库 4.私有仓库docker-registry使用的常见问题 5.配置阿里云镜像加速器 假 ...

  7. 从零开始学习R语言(二)——数据结构之“因素(Factor)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60101041 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  8. Journal of Proteome Research | Quantifying Protein-Specific N-Glycome Profiles by Focused Protein and Immunoprecipitation Glycomics (分享人:潘火珍)

    文献名:Quantifying Protein-Specific N-Glycome Profiles by Focused Protein and Immunoprecipitation Glyco ...

  9. MybatisPlus SQL 打印控制台

    #applicaton.yml 配置 mybatis-plus: configuration: # 是否将sql打印到控制面板(该配置会将sql语句和查询的结果都打印到控制台) log-impl: o ...

  10. STL篇--list容器

    list容器: 1.list 容器 的本质就是双向环形链表,最后一个节点刻意做成空节点,符合容器的左闭右开的原则2.list 的迭代器 是一个智能指针,其实就是一个类,通过操作符重载模拟各种操作(++ ...