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. Asp.Net Core 中IdentityServer4 授权中心之应用实战

    一.前言 查阅了大多数相关资料,查阅到的IdentityServer4 的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在 Asp.Net Core 中IdentityServer4 的应 ...

  2. 在Linux上查询物理机信息-不用去拆机器了

    目录 一.查看系统信息(包含机器型号) 1.1 查看机型和品牌 二.查看CPU 信息 2.1 查看CPU 型号 2.2 查看CPU的物理数量 2.3 查看 CPU核心数量(非逻辑CPU) 2.4 查看 ...

  3. zabbix图表出现中文乱码

    搭建完成Zabbix监控服务器之后,切换到中文语言,图表展示出现乱码,如图所示 按照网上流传的上传windows下的字体的方法,还是不行,最后发现是PHP编译时的问题: php在编译时开启了-enab ...

  4. Java多线程并发01——线程的创建与终止,你会几种方式

    本文开始将开始介绍 Java 多线程与并发相关的知识,多谢各位一直以来的关注与支持.关注我的公众号「Java面典」了解更多 Java 相关知识点. 线程的创建方式 在 Java 中,用户常用的主动创建 ...

  5. 2020年启蒙及小学识字练字APP或小程序测评榜

    语文教学改革后,小学识字练字方面显得越来越重要.而市场上大大小小的识字练字应用琳琅满目,不同的定位,不同的核心功能,不同的费用.应该怎么选呢? 本篇将从多个角度对主流识字练字应用进行评测,评估对象为主 ...

  6. 【opencv系列02】OpenCV4.X图像读取与显示

    一.读取图片 opencv中采用imread() 函数读取图像 imread(filename, flags=None)     filename 图片的路径     flags 图像读取方式 ● c ...

  7. 【Weiss】【第03章】练习3.19:计算后缀表达式

    [练习3.19] 编写一个程序计算后缀表达式的值. Answer: 计算的方法书上说得很明白了,看代码行,没写错误检测[因为懒]. 测试代码: #include <iostream> #i ...

  8. JavaScript隐式类型转换(详解 +,-,*,/,==)

    JavaScript 在 运算 或 比较 之前, 会自动进行隐式类型转换. 下面我们来仔细讲一讲 + - * / == 运算符经历了哪些过程. 类型转换 ECMAScript 运行时系统会在需要时从事 ...

  9. 《Python学习手册 第五版》 -第15章 文档

    本章主要介绍Python中的文档,会通过多种方式来说明,如果查看Python自带文档和其他参考的资料 本章重点内容 1.#注释:源文件文档 2.dir函数:以列表显示对象中可用的属性 3.文档字符串 ...

  10. mysql刷题(不定时更新)

    面试阶段大家基本都会问一些mysql的题,具体的高深理论以后再慢慢补充,但是刷题是不可避免的,下面直接上货 创建/删除表和索引系列 创建表 CREATE TABLE if not exists `te ...