丁丁的体重

因为长期坐着写代码,缺少运动,还管不住嘴,丁丁在2017年8月份时是一个244斤的大胖子,所以丁丁决定减肥。 丁丁购买了「小米体重计」、「华为手环」,并且通过编写微信服务号,以及使用阿里云提供的OCR模式识别API,为自己设计了一套能够自动解析并保存体重数据的系统。只要站上「小米体重计」,就能将体重数据自动同步到云端。以下是丁丁的体重变化曲线:

MySQL FEDERATED引擎创建跨库同步表

###MySQL FEDERATED引擎创建跨库同步表 该功能类似于Oracle的DBLink,可以跨库、跨服务器查询和关联。首先检查是否支持FEDERATED引擎: ``` show engines ``` | engine | support | | ------------ | ------------ | | PERFORMANCE_SCHEMA | YES | | MyISAM | YES | | MRG_MYISAM | YES | | MEMORY | YES | | InnoDB | DEFAULT | | FEDERATED | YES | | CSV | YES | | BLACKHOLE | YES | | ARCHIVE | YES | 如果提示FEDERATED的SUPPORT为NO,说明MySQL安装了Federated引擎,但是没有启用,此时需要修改`mysql.ini` | `mysql.cnf` 文件,在最后添加一行`FEDERATED`,重启MySQL即可。 如果上述列表压根没有出现FEDERATE条目,说明MySQL服务器版本太低或者安装时不完全,请做好备份重新安装最新的版本。 接下来在需要的库中创建镜像表,表结构需要跟原始表完全一致,示例代码如下 ``` CREATE TABLE `weight`( `Id` int(11) NOT NULL AUTO_INCREMENT, `weight` float(4,1) DEFAULT '0.0', `createat` datetime DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=FEDERATED CONNECTION='mysql://username:password@host:port/db_name/table_name' ```

##关于单点登录的思考: 简单的逻辑是这样:每个用户一个uuid,根据uuid周期时间内计算一个随机的hash code,也就是令牌access token,用户通过用户名密码换取这个access token,放入cookie(单页应用可放入全局JS变量),每次敏感操作API时,post body中放入access token,服务器收到后,根据uuid查找内存中的(或数据库中的)access token,与用户post body中提交的access token对比,匹配的认为登陆过,否则不通过。一般每个uuid的access token每两小时变化一次。这样整个架构就是无状态的,不需要用到session,只需要一个通用的拦截器,就能在多个系统判断是否登陆过。 简单的原理就是上面那个逻辑,至于框架,可以选择shiro,也可以spring security,也可以手撕,都无所谓。使用这些框架,会帮你继续考虑「重放攻击」和「跨站点攻击」的问题。 「重放攻击」:每次api请求,会让你再附带一个随机字符串提交给服务器,服务器根据随机字符串是否一致判断是否需要再次响应,如果一致,服务器就不高兴理你,认为你在重放攻击,如果不一致,服务器就搭理你。 「跨站点攻击」:每个表单生成展现给用户时,在一个hidden域里面,服务器生成一个随机字符串(在这之前服务器存入session内存),你提交表单时,服务器正好能收到这个字符串,与session中的进行对比,如果匹配,则通过;不匹配,则拒绝,意味着你在用另一个站点的表单提交本次操作,或者你压根没有通过正常途径提交。

丁丁生于 1987.07.01 ,30岁,英文ID:newflydd

  • 现居住地 江苏 ● 泰州 ● 姜堰
  • 创建了 Jblog 开源博客系统
  • 坚持十余年的 独立博客 作者
  • 大学本科毕业后就职于 中国电信江苏泰州分公司,前两年从事Oracle数据库DBA工作,两年后公司精简技术人员,被安排到农村担任支局长(其本质是搞销售),于2016年因志向不合从国企辞职,在小城镇找了一份程序员的工作。
  • Git OSChina 上积极参与开源社区