uuid

Fixed identifier for a machine (uuid.getnode)

最后都变了- 提交于 2020-02-19 09:50:27
问题 I'm trying to find something I can use as a unique string/number for my script that is fixed in a machine and easily obtainable(cross-platform). I presume a machine would have a network card. I don't need it to be really unique, but the necessary is it should be fixed in a long run and as rare as possible. I know MAC can be changed and I'd probably make a warning about it in my script, however I don't expect anyone to change MAC each morning. What I came up with is uuid.getnode() , but in the

系统架构:分布式ID那点事儿

寵の児 提交于 2020-02-18 17:29:54
原文: https://zhuanlan.zhihu.com/p/107592567 全局唯一 不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增 为什么要趋势递增呢? 第一,由于我们的分布式ID,是用来标识数据唯一性的,所以多数时候会被定义为主键或者唯一索引。 第二,大多数互联网公司使用的数据库是MySQL,存储引擎为innoDB,对于BTree索引来讲,数据以自增顺序来写入的话,b+tree的结构不会时常被打乱重塑,存取效率是最高的,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。 单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。 信息安全 由于数据是递增的,所以,恶意用户的可以根据当前ID推测出下一个,非常危险,所以,我们的分布式ID尽量做到不易被破解。如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号就更危险了,竞对可以直接知道我们一天的单量。所以在一些应用场景下,会需要ID无规则、不规则。 数据库自增方案缺点: 1.高并发下性能不佳,主键产生的性能上限是数据库服务器单机的上限 2.水平扩展困难,严重依赖数据库,扩容需要停机 Flicker方案: [flicker算法原文] http://code.flickr.com/blog/2010/02/08/ticket

一文搞懂主流的扫码登录技术原理

守給你的承諾、 提交于 2020-02-18 03:51:43
1、引言 扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的。 下面这张图,不管是IM开发者还是普通用户,应该很熟悉: 于是,搞IM产品的老板和产品经理们,从此又多了一个要抛给程序员们的需求——“为什么微信有扫一扫登录,而我们的没有?”。 好吧,每次只要是微信有的功能,IM程序员们想甩锅,难度就有点大了,毕竟老板们都都会想当然认为,微信有的“我”的IM产品里也得有。 既然无法回避,那就只能老老实实搞懂技术原理,然后自已使劲撸吧。 本文将简要的介绍扫码登录功能的技术实现逻辑,并实际结合淘宝、微信的扫码登录功能,学习和研究大厂主流应用的技术实现思路。 2、基本技术原理 2.1 扫码登录功能到底是什么样的? 首先介绍下什么是扫码登录。现在大部分同学手机上都装有微信、qq和淘宝这一类的软件。而这些app都有他们相对应的网页端。为了让用户在使用他们的网页时登录更加方便和安全,使用手机扫一扫就可以登录的服务,就显得自然而然了。 几个主流大厂应用扫码登录时的界面效果如下: 有很多小伙伴可能会感到很神奇,网页上只是显示了个二维码,它怎么就知道是哪个手机扫到了二维码,并且进行登录的呢?而且,登录完成以后,还能直接把用户信息显示给用户,真的是很神奇啊。 2.2 扫码登录功能的完整技术逻辑 1)网页端与服务器的配合逻辑:

sed命令简介

一个人想着一个人 提交于 2020-02-17 21:52:59
sed处理时,有2个缓冲区:【pattern space】和【hold space】 sed执行过程: 先读入一行,去掉尾部换行符,存入【pattern space】,执行编辑命令。 处理完毕,除非加了-n参数,把现在的【pattern space】打印出来,在后边打印曾去掉的换行符。 把【pattern space】置空。 接着读下一行,处理下一行。 sed的默认输出:【pattern space】里的内容输出到标准输出。 常用选项: 【pattern space】里的内容不输出到标准输出:-n 默认只能执行一个脚本,执行多个脚本:-e script, --expression=script 可以有多个-e script 如果要执行的脚本特别多,可以指定一个脚本文件:-f /path/to/sed_scirpt 脚本文件里,每行一个编辑命令。 支持使用扩展的正则表达式,默认是基本正则表达式:-r 直接编辑原文件:-i 地址定界: 1,不给地址:对全文进行处理 2,单地址 #:指定行 /pattern/:被此模式所匹配到的每一行 3,地址范围 $:最后一行 #,#:起始和结束 #,+#:起始,和从起始加多少行 #,/pat1/:起始到,pat1匹配到的行 /pat1/,/pat2/:pat1匹配到的行,到pat2匹配到的行 4,步进:~ 1~2:1,3,5,7,9.。。行

PC 端微信扫码注册和登录

对着背影说爱祢 提交于 2020-02-17 02:45:21
/*--> */ /*--> */ 一、前言 先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬。 相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网站做授权,确切来说是在微信端下做的一个授权。今天遇到的一个问题是,项目支持微信端以及 PC 端,并且开放注册。要求做到无论在 PC 端注册或者是在微信端注册之后都可以在另外一个端进行登录。也就是说无论 PC 或是微信必须做到"你就是你"(通过某种方式关联)。 二、寻找解决方案 按传统的方式来思考,微信端完全可以通过授权进行注册,但是PC端呢,传统的方式无非就是填填手机号码啊,或者 Email 等等。如果采用这种方式注册,会产生下面这的问题 我先在微信端授权注册,那么如果我要登录PC端还是得进行注册。 对此解决方案可以为:微信授权注册后“强制”要求用户必须填写基本信息,如手机号、Email 。这样我们可以通过某种方式为用户生成PC端登录的账号密码.例如以用户的 nickname 为账号,手机号码为密码,等等方式。 弊端:用户体验不好,再者有安全隐患。毕竟你的微信昵称, Email 或者手机号码都是暴露的。 如果我先在 PC 端注册,我在微信授权的时候怎样关联移动端 当然,凡是问题总会有解决方案的。思路如下: 方案一:当用户在 PC 端注册后,“强制”

直播间地址

ⅰ亾dé卋堺 提交于 2020-02-12 14:40:53
  http://tx2play1.douyucdn.cn/live/8130308rPB3q70fX.flv?uuid= http://这里是播放域名.douyucdn.cn/live/替换.flv?uuid= 其他直播视频类推 来源: https://www.cnblogs.com/gzpu/p/12298832.html

Linux btrfs文件系统

和自甴很熟 提交于 2020-02-11 20:57:37
btrfs,它名字挺多:B-tree fs;Butter fs;Better fs 开源协议是GPL,2007年由Oracle研发 核心特性: 多物理卷支持,btrfs可由多个物理卷组成;支持RAID,可以联机状态下,添加,移除,修改 写时复制(Cow:copy on write):修改前的文件内容还是保留的,只是让指针指向修改后的文件 数据及元数据校验码:checksum 支持子卷:sub_volume 支持快照:而且支持快照的快照 透明压缩:顶层用户感觉不到文件是被压缩了的,当要使用文件时,自动解压缩,但消耗cpu时钟。 btrfs有很多以btrfs开头的命令: # btrfs btrfs btrfs-convert btrfs-find-root btrfs-map-logical btrfstune btrfsck btrfs-debug-tree btrfs-image btrfs-select-super btrfs-zero-log btrfs有许多子命令,每个命令的帮助都可以使用--help获得。 管理子卷:btrfs subvolume btrfs filesystem df 显示已有的btrfs:btrfs filesystem show btrfs filesystem sync 动态调整文件系统的大小:btrfs filesystem resize 添加卷标

virtualbox虚拟机centos7固定静态IP的方法

こ雲淡風輕ζ 提交于 2020-02-10 12:46:07
首先,查看主机的ip配置。 其次,根据主机的ip信息,设置虚拟机固定ip配置。 vi /etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=yes   #开机启用网络配置。 BOOTPROTO=static #static,静态ip,默认是dhcp,动态分配ip。 IPADDR=192.168.1.188  #设置固定静态ip,保持和主机在同一网段。 NETMASK=255.255.255.0 #子网掩码,和主机一致。 GETWAY=192.168.1.1 #保持和主机一致。 DNS1=192.168.31.1 #DNS1,也可以写其他地址,如谷歌地址8.8.8.8。 DNS2=192.168.1.1 #DNS2。 最后,重启网关服务。 systemctl restart network 注意,如果更换了网络环境,例如办公地点发生改变,可能出线网卡变化,也就是UUID发生变化,这个时候需要注意调整。 查看网卡UUID命令 nmcli con | sed -n '1,2p' 如上图所示,获取了新的NAME和UUID。 根据获取的新网卡内容,复制/etc/sysconfig/network-script下的ifcfg-ens33文件,新文件名使用新网卡名为ifcfg-enp0s17。 cp /etc/sysconfig/network

JS反混淆——构造可知DeviceToken、nouce与token

两盒软妹~` 提交于 2020-02-10 01:46:49
清空所有cookies后打开任意一本书的详情页,打开控制台中的Network。如下图所示,浏览器发出的第一个XHR请求为 /bind ,其中DeviceToken,nonce,Token均为POST中提交的数据。 找到访问网页的请求,如下图所示,返回头中没有出现set-cookie字段,可以判断DeviceToken,nonce,Token均为js生成的。 找到发送 /bind/ 请求的Initiator,发现只与 vendor.*.js 与 app.*.js 有关,且出现了 webpackJsonp 、 computed 、 updateRoute 等字段,猜测该网站是使用vue-cli构建的。 下载并解码 vendor.*.js 与 app.*.js ,在 app.*.js 中搜索 /bind ,找到相关代码。 该段函数流程大致为发送 /bind 请求至后端,如果返回的结果中 Success 字段为true,则将数据中的 DeviceToken , DeviceKey 放到cookie中。而发送的 DeviceToken 由 newGuid() 函数生成。 找到该段函数的函数名为 registerApp ,搜索调用。 找到调用 registerApp 的代码,根据上文 watch 与 methods 可以判断出这是一个vue的组件,监控到路由变化则调用 registerApp

Python Day22

夙愿已清 提交于 2020-02-09 01:02:44
Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1、创建Form类 from django.forms import Form from django.forms import widgets from django.forms import fields class MyForm(Form): user = fields.CharField( widget=widgets.TextInput(attrs={'id': 'i1', 'class': 'c1'}) ) gender = fields.ChoiceField( choices=((1, '男'), (2, '女'),), initial=2, widget=widgets.RadioSelect ) city = fields.CharField( initial=2, widget=widgets.Select(choices=((1,'上海'),(2,'北京'),)) ) pwd = fields.CharField( widget=widgets.PasswordInput(attrs={'class': 'c1'}, render_value=True) ) 2、View函数处理