qrcode

扫小程序码实现网站登陆,提供源代码

那年仲夏 提交于 2019-11-27 20:40:53
使用扫小程序码登陆网站 网络上关于实现本本功能的文章很多,但是给出案列的几乎没有,今天笔者实现用小程序码实现网站登陆,体验地址如下 https://idea.techidea8.com/open/login.shtml 思路 关键流程 建立场景sceneid和websocket的绑定关系 获得sceneid 场景ID可以前端生成,也可以后端生成,只需要保证sceneid的同一时间唯一性即可。 前端生成可以采用随机数加时间戳的形式,也可以用uuid算法 //时间戳 var sceneid ="scend-" + new Data().getTime() + Math.ceil(Math.random()*888888+1000000); 建立websocket var ws = new WebSocket("ws://192.168.0.106/websocket?clientid="+sceneid ) ws.onopen=function(env){ console.log(env) } ws.onmessage=function(env){ var data = env.data; //这个data 就是后端发来的用户数据 } 后端建立websocket 后端采用go语言 github.com/gorilla/websocket 包建立websocket.因为golang

看遍天下程序,心中自然有码

一曲冷凌霜 提交于 2019-11-27 20:30:06
上次玩数独( 旁友数独会伐啦?python秒解数独了解下伐啦? )的事情给老王气的……这次我直接掏出了照片,看看他的反应。 小胖这次要人码结合,看看他闹哪样。 那作为一名合格的程序员,怎么能不懂二维码是如何生成,如何解析,如何玩耍的呢?废话不多说,咱们今天就用Python来玩玩这个人码合一。 演示环境 操作系统:windows10 python版本:python 3.7 代码编辑器:pycharm 2018.2 使用模块:zxing,myqr,qrcode tips: 上面的模块都使用pip安装,它们依赖的模块也会自动安装,相信会Python的你对pip不会太陌生。 pip install qrcode pip install myqr pip install zxing 使用qrcode模块生成二维码 首先我们来生成一个 “Hello World”。 import qrcode def first_demo(): # 存储的字符串 qr = qrcode.make('Hello World') qr.get_image().show() 通过上面的步骤就完成了这个经典入门,拿出你的手机,用微信、QQ扫码,就会出现“Hello World”字眼,有没有勾起你初学Python的回忆呢。 刚才只是小试牛刀,我们来一个进阶,把生成的二维码保存到本地。 import qrcode def

180706-BigDecimal除法的精度问题

别来无恙 提交于 2019-11-27 18:09:26
BigDecimal除法的精度问题 在使用BigDecimal的除法时,遇到一个鬼畜的问题,本以为的精度计算,结果使用返回0,当然最终发现还是自己的使用姿势不对导致的,因此记录一下,避免后面重蹈覆辙 <!-- more --> I. 问题抛出 在使用BigDecimal做高精度的除法时,一不注意遇到了一个小问题,如下 @Test public void testBigDecimal() { BigDecimal origin = new BigDecimal(541253); BigDecimal now = new BigDecimal(12389431); BigDecimal val = origin.divide(now, RoundingMode.HALF_UP); System.out.println(val); origin = new BigDecimal(541253); now = new BigDecimal(12389431.3); val = origin.divide(now, RoundingMode.HALF_UP); System.out.println(val); origin = new BigDecimal(541253.4); now = new BigDecimal(12389431); val = origin.divide(now,

Python | 一行命令生成动态二维码

有些话、适合烂在心里 提交于 2019-11-27 16:29:49
Python | 一行命令生成动态二维码 当我看到别人的二维码都做的这么炫酷的时候,我心动了! 我也想要一个能够吸引眼球的二维码,今天就带大家一起用 Python 来做一个炫酷的二维码! 首先要安装工具 myqr: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: $ myqr --help 可以看出 myqr 有着丰富的参数支持,这里就不再一一解释,后面使用到会再细说。 简单用法 首先我们生成一个普通二维码: $ myqr "http://weixin.qq.com/r/PnUmPg7E8lONrUpd9yAs" line 16: mode: byte Succeed! Check out your 2-H QR-code: /mnt/d/code/Python/learn/myqr/qrcode.png 这时就会在当前目录下生成一个名称为 qrcode.png 的二维码。 如果 myqr 后面传入的是普通字符串,那么扫描后会现在字符串。若是一个网址,扫描后会自动跳转。 大家可以扫描下看看,是不是我们设置的字符串。 需要注意的时,这里的字符串不能指定中文,否则会抛出 ValueError('Wrong words! Make sure the characters are supported!') 的异常。 1、使用 -d

[WeGit 微信小程序 1st] 为什么要做一个小程序

你。 提交于 2019-11-27 12:10:39
项目地址: https://github.com/mirrorhanyu/WeGit 扫码体验<br> 这是一个非常棒的问题。 我经常听到这样的对话。<br> “我准备做个…”<br> ”等等,你觉得有多少人会用,能给别人带来什么价值?“ 如果你在服务型的公司呆久了,你会直觉的对于新产品总会问这么个问题,它会有哪些用户人群,它对于用户的价值是什么?<br> 如果你要问我同样的问题,Github 微信小程序有多少人会用,带来什么价值。<br> 我只能说,目标人群就是我自己,它可以填充我的碎片时间。<br> 做一个自己需要的工具,不考虑市场,这就是 WeGit 产生的初衷。 随着项目的推进,我捡起了之前接触过但逐渐淡忘的知识点,发现之前对于知识思考和理解很浅,甚至有很多偏差。<br> 所以做这个项目,一方面是回顾之前的知识,一方面是借此机会对每个技术能有个重新思考。除了如何使用这项技术,要更能理解这下技术的出现是解决了什么问题,它的使用场景,如何在多个技术方案中做抉择,如何在现有架构上做演进。<br> 这已是超离初衷了,可以说是高中了。 至于后来如何想到写成博客记录下来。<br> 也是希望学着能把输入凝练成输出,分享出来如果能顺带帮助到某些人就更好了,做个对社会对国家对世界有贡献的人(愿景)。<br> 行程一个学习闭环。输入,消化,输出,获得反馈。 这是非常”自私"的项目

面试 LockSupport.park()会释放锁资源吗?

北战南征 提交于 2019-11-27 02:24:11
(手机横屏看源码更方便) 引子 大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。 我:说说AQS的大致流程? 他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala…… 我:AQS中除了同步队列,还有什么队列? 他:还有个Condition,Condition中有个条件队列…… 我:条件队列和同步队列有什么区别? 他:条件队列balabala,然后调用LockSupport.park()进入休眠,等待被唤醒,……,balabala 咦,这时我灵感突发:LockSupport.park()和Thread.sleep()有什么区别? 他:Thread.sleep()不会释放锁资源,……,balabala 我:LockSupport.park()会释放锁资源吗? 他:会吧。(估计和Object.wait()搞混淆了) 我:会吗?会吗?会吗? 他(羞涩地低下了头):彤哥,不知道,你的文章里没写。(这段我瞎写的哈^^) OK,今天我们就来看看LockSupport.park()到底会不会释放锁资源。 Thread.sleep()和Object.wait()的区别 首先,我们先来看看Thread.sleep()和Object.wait()的区别,这是一个烂大街的题目了,大家应该都能说上来两点。 (1

死磕 java线程系列之线程池深入解析——构造方法

核能气质少年 提交于 2019-11-26 16:03:37
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 ThreadPoolExecutor的构造方法是创建线程池的入口,虽然比较简单,但是信息量很大,由此也能引发一系列的问题,同样地,这也是面试中经常被问到的问题,下面彤哥只是列举了一部分关于ThreadPoolExecutor构造方法的问题,如果你都能回答上来,则可以不用看下面的分析了。 问题 (1)ThreadPoolExecutor有几个构造方法? (2)ThreadPoolExecutor最长的构造方法有几个参数? (3)keepAliveTime是做什么用的? (7)核心线程会不会超时关闭?能不能超时关闭? (4)ConcurrentLinkedQueue能不能作为任务队列的参数? (5)默认的线程是怎么创建的? (6)如何实现自己的线程工厂? (7)拒绝策略有哪些? (8)默认的拒绝策略是什么? 构造方法 好了,我们直接上代码。 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<runnable> workQueue) { this(corePoolSize, maximumPoolSize,