用户接口

shop--12.微信测试号的申请和获取微信用户信息

你说的曾经没有我的故事 提交于 2020-03-11 09:36:22
在咱们自己的程序里面编写servlet以响应微信号 在接下来的步骤中,我们将在测试号里面设置接口配置信息的URL,一经设置,微信公众号便会发请求到我们设置好的URL去,我们必须编写程序应答才能顺利连通微信公众号,因此咱们需要编写相应的响应程序 需要编写两个类 【SignUtil】 1 /** 2 * 微信请求校验工具类 3 */ 4 public class SignUtil { 5 // 与接口配置信息中的Token要一致 6 private static String token = "myo2o"; 7 8 /** 9 * 验证签名 10 * 11 * @param signature 12 * @param timestamp 13 * @param nonce 14 * @return 15 */ 16 public static boolean checkSignature(String signature, String timestamp, String nonce) { 17 String[] arr = new String[] { token, timestamp, nonce }; 18 // 将token、timestamp、nonce三个参数进行字典序排序 19 Arrays.sort(arr); 20 StringBuilder content =

SpringBoot集成JWT实现token验证

不问归期 提交于 2020-03-11 02:10:37
JWT官网: https://jwt.io/ JWT(Java版)的github地址: https://github.com/jwtk/jjwt 什么是JWT Json web token (JWT) , 是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519). 定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 对象的形式安全的传递信息。 因为数字签名的存在,这些信息是可信的, JWT可以使用 HMAC 算法或者是 RSA 的公私秘钥对进行签名。 JWT请求流程 image.png 1. 用户使用账号和面发出post请求; 2. 服务器使用私钥创建一个jwt; 3. 服务器返回这个jwt给浏览器; 4. 浏览器将该jwt串在请求头中像服务器发送请求; 5. 服务器验证该jwt; 6. 返回响应的资源给浏览器。 JWT的主要应用场景 身份认证在这种场景下,一旦用户完成了登陆,在接下来的每个请求中包含JWT, 可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。 由于它的开销非常小,可以轻松的在不同域名的系统中传递,所有目前在 单点登录(SSO) 中比较广泛的使用了该技术。 信息交换在通信的双方之间使用JWT对数据进行编码是一种非常安全的方式, 由于它的信息是经过签名的,可以确保发送者发送的信息是没有经过伪造的。 优点 1.简洁

java基础篇---Servlet监听器

南楼画角 提交于 2020-03-10 11:35:27
在写此篇前,看了一下园友写的,感觉其基础知识归纳的十分全面,我在此就不累赘的写了,链接地址(http://www.cnblogs.com/sherryueda/p/4273169.html), 我就写一下关于监听器的具体应用: 功能是负责监听WEB的各种操作,当相关的事件触发之后将产生事件,并对此事件进行处理,在WEB中可以对application、session、request三种操作进行监听。 对application监听: 对application监听,实际上就是对ServletContext(Servlet上下文)监听,主要使用以下两个接口:ServletContextListener ,ServletContextAttributeListener package com.oumyye.监听器; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServletContextListenerDemo implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // 上下文初始化时触发 System

Linux系统结构详解(转)

試著忘記壹切 提交于 2020-03-09 12:58:37
Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序 。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核 Linux内核是世界上最大的开源项目之一,内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图: 系统调用接口:SCI 层提供了某些机制执行从用户空间到内核的函数调用。这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。 1. 内存管理 对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。Linux 将内存划分为容易处理的“内存页”

人人都是 API 设计师:我对 RESTful API、GraphQL、RPC API 的思考

独自空忆成欢 提交于 2020-03-05 15:58:08
原文地址: 梁桂钊的博客 博客地址: http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 有一段时间没怎么写文章了,今天提笔写一篇自己对 API 设计的思考。首先,为什么写这个话题呢?其一,我阅读了《阿里研究员谷朴:API 设计最佳实践的思考》一文后受益良多,前两天并转载了这篇文章也引发了广大读者的兴趣,我觉得我应该把我自己的思考整理成文与大家一起分享与碰撞。其二,我觉得我针对这个话题,可以半个小时之内搞定,争取在 1 点前关灯睡觉,哈哈。 现在,我们来一起探讨 API 的设计之道。我会抛出几个观点,欢迎探讨。 一、定义好的规范,已经成功了一大半 通常情况下,规范就是大家约定俗成的标准,如果大家都遵守这套标准,那么自然沟通成本大大降低。例如,大家都希望从阿里的规范上面学习,在自己的业务中也定义几个领域模型:VO、BO、DO、DTO。其中,DO(Data Object)与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。 而 DTO(Data Transfer Object)是远程调用对象,它是 RPC 服务提供的领域模型。对于 BO(Business Object),它是业务逻辑层封装业务逻辑的对象,一般情况下,它是聚合了多个数据源的复合对象。那么,VO(View Object)

Linux-Pam总结

ぐ巨炮叔叔 提交于 2020-03-02 17:02:26
Pam 总结 概述 linux下PAM模块全称是Pluggable Authentication Module for linux(可插入式授权管理模块),该由Sun公司提供,在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。PAM应用在许多程序与服务上,比如登录程序(login、su)的PAM身份验证(口令认证、限制登录),passwd强制密码,用户进程实时管理,向用户分配系统资源等。 简介 Linux-PAM(即linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制,这种方式下,就算升级本地认证机制,也不用修改程序。 PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式进,像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的。 配置文件 PAM配置文件有下面两种写法: 1)写在/etc/pam.conf文件中,但centos6之后的系统中,这个文件就没有了。 2)将PAM配置文件放到 /etc/pam.d/ 目录下,其规则内容都是不包含

微信JSSDK上传多张图片

丶灬走出姿态 提交于 2020-03-02 01:28:55
做过微信开发的都知道,在部分android机型里微信不支持网页上传图片的,这是由于这些机型的文件上传存在内存泄漏,会导致微信闪退,所以微信内置浏览器将文件上传屏蔽。这就导致这些机型的用户在使用微信浏览器访问某些需要上传图片的网页时功能不正常。 前不久微信公开了一些接口,其中有一个uploadImage接口用于上传图片,一般和chooseImage接口配合使用。先调用chooseImage接口让用户选择一张或者多张图片,用户选择完毕后微信会返回被选中图片的id,再把图片id传给uploadImage接口上传图片。 由于uploadImage一次只能上传一张图片,因此当用户选择多张图片时,需要多次调用uploadImage接口来上传图片。 但是在实践的过程中发现,不管用户选中多少张图片,只有第一张能够上传成功。 查看了一下微信的文档,在常见问题中找到了相关的描述 uploadImage怎么传多图(目前只支持一次上传一张,多张图片需等前一张图片上传之后再调用该接口) 也就是说,如果想要上传多张图片,需要将之前并行上传改成串行。 代码如下: $('#filePicker').on('click', function () { wx.chooseImage({ success: function (res) { var localIds = res.localIds; syncUpload

细谈c#开发微信语音接口

巧了我就是萌 提交于 2020-03-02 00:52:26
现在是微信时代 微信最开始就是做语音聊天而使得其更加流行的,因此语音的识别处理自然也就成为微信交流的一个重要途径,微信的开发接口,也提供了对语音的消息请求处理。本文主要介绍如何利用语音的识别,对C#开发的微信门户应用的整个事件链的处理操作,使得在我们的微信账号里面,更加方便和多元化对用户的输入进行处理。开发环境visual studio one、微信语音接口的定义 微信的API这么定义语音的识别的: 开通语音识别功能,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段 。 语音的消息格式如下所示。 < xml > < ToUserName > <![CDATA[ toUser ]]> </ ToUserName > < FromUserName > <![CDATA[ fromUser ]]> </ FromUserName > < CreateTime > 1357290913 </ CreateTime > < MsgType > <![CDATA[ voice ]]> </ MsgType > < MediaId > <![CDATA[ media_id ]]> </ MediaId > < Format > <![CDATA[ Format ]]> </ Format > < MsgId >

# IT明星不是梦 # Ceph持久化存储为k8s应用提供存储方案(1)

笑着哭i 提交于 2020-03-01 23:04:27
目录:1)Ceph介绍 2)部署Ceph集群 采用版本【2020最新nautilus (stable)14.2.7】 为什么使用Ceph? ceph其实早在2004年的时候写的第一行代码,它是到2012年才有的第一个开发版本,到2014年的时候ceph才慢慢有公司在生产上应用了,那时候一般有的版本也不是很稳定,也是进行一些二次的研发,包装成一些自己的东西,不过现在ceph的版本已经很稳定了,已经适合在生产用了,目前用的比较多的,社区影响比较好的是这个luminous版本,这个版本也是比较稳定,也是比较流行,目前也是用的比较多。 另外就是ceph和其他存储有些不一样的地方,它可扩展,有很好的性能,有稳定存储的计算模块,在没用ceph之前用的一般都是一些传统的存储或者就是商业的存储,像商业的成本一般比较高,需要一些设备或者存储到云端,另外就是拿服务器做挂载共享,这种一个是不利于横向扩展,它很难保证数据的稳定性,数据的访问速率,因为用挂载模式的话,它挂载的模式访问是比较差的,所以基于这种原因来采用ceph,目前像腾讯、乐视、新浪、国外的公司雅虎也都是用的ceph,像国内用的比较成功的x-sky这个用的也比较多,所以这个ceph已经很稳定了,目前市面的ceph人员也比较缺少。 GlusterFS和ceph的区别 分布式存储的话无疑就是横向扩展,任何一个节点挂了的话,可以不整体影响一个运行

wpa_supplicant与kernel交互

﹥>﹥吖頭↗ 提交于 2020-03-01 09:50:06
wpa_supplicant与kernel交互的操作,一般需要先明确驱动接口,以及用户态和kernel态的接口函数,以此来进行调用操作。这里分为4个步骤讨论。 1. 首先需要明确指定的驱动接口。 因为有较多的驱动接口可以使用,如 wext 、 nl80211 等。指定了之后,才能调用相应接口的方法。 2. 保存驱动接口 3. 接口函数的实现 ( 分为用户态和 kernel 态 ) 。系统已经定义了,我们只需找到定义的地方,了解有哪些函数。 4. 交互 (a) 用户态向 kernel 态发送请求 ( 通过 ioctl) (b)kernel 态向用户态发送事件通知 ( 通过 netlink) 1. 首先需要明确指定的驱动接口 (1) 查看 init.XX.rc 中指定的 driver 的命令参数; (2) 根据命令参数,在 wpa_driver_ops *wpa_drivers[] 中查找对应接口。 wpa_drivers[] 的定义是在 [-->external/wpa_supplicant_8/src/drivers/drivers.c] 2. 保存驱动接口 在 wpa_supplicant 初始化过程中,在 wpa_supplicant_init_iface 方法中会调用 wpa_supplicant_set_driver 方法。该方法中又会调用 select_driver 方法