coding

coding老师分享:单点登录项目实战教学(视频专辑)

时光怂恿深爱的人放手 提交于 2020-01-17 00:27:14
分享多场景下的单点登录实战应用解决方案 【学完本节课你将掌握以下知识】 1. 单点登录在不同场景下的应用以及SSO; 2. 单机、集群部署,Cookie和分布式Session单点登录; 3. 解决方案实战:cas , oauth2 , jwt (客户端token) SpringSecurity,Shiro; 4. 主流 spring-security + oauth2 和 shiro + cas 实现单点登录; 5. 纯手写单点登录+单点登出实现开发; 6. CAS解析,配置https , 1、单点登录原理、Http通信实现 2、sso登录中心、淘宝、天猫实现单点登录 3、单点登出手写实现及CAS 演示 来源: CSDN 作者: icodingedu 链接: https://blog.csdn.net/icodingedu/article/details/104011378

【 ECUG 演讲分享】吴海黎:CODING 微服务架构演进之路

百般思念 提交于 2020-01-16 13:08:52
近日,CODING 平台技术总监吴海黎参加了由 ECUG 社区举办的技术大会,与听众一同分享了 CODING 微服务架构的演进历程。让我们一起来欣赏精彩的演讲内容吧。 大家好!我是来自 CODING 的吴海黎,今天我给大家分享的内容是微服务拆分的实践,微服务几乎可以说是当下的一个主流架构,希望今天的分享能给大家落地微服务带来帮助。整个分享分为三个部分: 第一是单体架构的简介,第二是微服务架构落地方案,第三是 DevOps 之于微服务的重要性。 一、单体架构简介 虽然第一部分是介绍单体架构的主要痛点,但是还是应该跟大家分享一下,单体应用对于我们在业务早期,业务处理单一,团队规模较小,单体应用的中心化处理方案是能够降低团队的沟通成本,降低架构的复杂度,从而提高研发效率的这么一个架构。所以是否升级微服务架构,取决于我们所处的业务阶段和组织架构。介绍完单体架构的优势,我们一起来看看 CODING 微服务改造前的 Backend Service 是什么样的。 首先这个架构应该是 0.5 版本的微服务架构,可以看出这个架构有一部分服务已经是拆分成独立的微服务了,并且服务之间的注册和发现是依赖于 ETCD 去做服务发现与注册的事情。服务之间的通讯方式是 GRPC,我们选 GRPC 的原因是部分的服务是架在 GO 上面的,部分的服务是放在 Java 上面,所以我们需要跨语言的通讯方式。

Skr-Eric的数据分析课堂(四)--Numpy的常用函数(上)

a 夏天 提交于 2020-01-16 05:34:07
Numpy的常用函数 1.读取矩阵文件 xxx,xxx,xxx,xxx xxx,xxx,xxx,xxx xxx,xxx,xxx,xxx 由若干行若干列的数据项组成,每行数据的项数必须相等,每列数据项的类型必须相同,而且数据项之间有明确的分隔符。 np.loadtxt( 文件路径, delimiter=分隔符字符串, usecols=选择列集, unpack=是否按列展开(缺省False), dtype=目标类型(缺省float), converters=转换器字典)-> 一个二维(unpack=False)或多个一维数组(unpack=True) # -*- coding: utf-8 -*- from __future__ import unicode_literals import datetime as dt import numpy as np import matplotlib.pyplot as mp import matplotlib.dates as md # 将日-月-年格式的日期变为年-月-日格式的转换器函数 def dmy2ymd(dmy): # 将UTF-8编码的字节串转换为UCS-4编码字符串 dmy = str(dmy, encoding='utf-8') ''' d, m, y = dmy.split('-') ymd = y + "-" + m +

Python学习笔记(四)之Python函数

旧巷老猫 提交于 2020-01-14 11:48:57
思维导图: 链接: Python函数思维导图 截图效果如下:有点大,截图一个大概,具体看链接。 1. 函数定义和调用 实例1.1: #!/user/bin/python #coding=utf-8 #author@ zjw #函数定义 def printSth(sth): print(sth) #main方法,程序运行时一开始直接进入到该函数 if __name__ == "__main__": printSth("Hello World!") #函数调用 输出: Hello World! 分析:上面是一个简单的函数定义和调用的实例。 函数代码块通过def关键字开头,后接函数标识符号名称和圆括号()。 将传入参数放在圆括号中,这和C语言和java是一致的。 函数主体以冒号开始,并且需要缩进。 return语句可有可无,没有return语句默认返回None,单独的一个return也是返回None。return语句可以一次性返回多个变量,在外部用一个变量接收时,获得的类型是Tuple。 例1.2:(return语句可以一次性返回多个变量,在外部用一个变量接收时,获得的类型是Tuple) #!/user/bin/python #coding=utf-8 #author@ zjw #函数定义 def loc(x, y): cx = x + 1 cy = y + 1 return cx,

哈夫曼编码的理解(Huffman Coding)

本秂侑毒 提交于 2020-01-14 09:57:35
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。 哈夫曼编码,主要目的是根据使用频率来最大化节省字符(编码)的存储空间。 简易的理解就是,假如我有A,B,C,D,E五个字符,出现的频率(即权值)分别为5,4,3,2,1,那么我们第一步先取两个最小权值作为左右子树构造一个新树,即取1,2构成新树,其结点为1+2=3,如图: 虚线为新生成的结点,第二步再把新生成的权值为3的结点放到剩下的集合中,所以集合变成{5,4,3,3},再根据第二步,取最小的两个权值构成新树,如图: 再依次建立哈夫曼树,如下图: 其中各个权值替换对应的字符即为下图: 所以各字符对应的编码为:A->11,B->10,C->00,D->011,E->010 霍夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。 如果考虑到进一步节省存储空间,就应该将出现概率大(占比多)的字符用尽量少的0-1进行编码,也就是更靠近根(节点少),这也就是最优二叉树-哈夫曼树。 来源: https://www.cnblogs.com/linhaostudy/p/12190270

Python爬虫之requests库介绍(一)

我与影子孤独终老i 提交于 2020-01-14 09:20:28
一:Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:) Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。 requests 的底层实现其实就是 urllib3 Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6—3.5,而且能在PyPy下完美运行。 开源地址: https://github.com/kennethreitz/requests 中文文档 API: http://docs.python-requests.org/zh_CN/latest/index.html 二:安装方式  1.强烈建议大家使用pip进行安装:pip insrall requests  2.Pycharm安装:file-》default settings-》project

Python python的输入输出

橙三吉。 提交于 2020-01-13 16:41:37
#-*- coding:utf-8 -*- #屏蔽中文乱码方案一(官方推荐) #这个语句必须顶行写 #屏蔽中文乱码方案二(不建议使用) '''#coding=utf-8 ''' #input(),输入函数,参数是输入时显示的文本 ''' 在python3.x版本中,python解析器会将输入当做一个字符串 而在python2.x版本中,python解析器会将输入当做一个语句执行 例如: name = input("name:") --用户输入 name:tom --那么python解析器将会报错,提示tom这个变量未定义 --如果用户输入1+4 name:1+4 --python解析器将会成功编译,打印age的值是5 因此在python2.x中达到同样效果,需要使用raw_input()函数 ''' #请输入年龄 age = input("age:") #print(),打印函数 #打印数值类型 print("age is %d"%age) #打印字符串 name = "tom" print("name is %s"%name) #-*- coding:utf-8 -*- age = 10 name = "jack" #print()函数的另一种输出方式,可以直接输出变量的值 print(age) print(name) 来源: https://www.cnblogs.com

Python time模块

喜夏-厌秋 提交于 2020-01-12 13:01:46
1、在Python中,通常有这几种方式来表示时间: (1)、时间戳       时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。 (2)、格式化的时间字符串 (3)、元组(struct_time)共九个元素      元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素: 索引(Index) 属性(Attribute) 值(Values) 0 tm_year(年) 比如2011 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(时) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 61 6 tm_wday(weekday) 0 - 6(0表示周日) 7 tm_yday(一年中的第几天) 1 - 366 8 tm_isdst(是否是夏令时) 默认为-1 2、几种表现形式之间的转换关系 3、Time模块常用函数 time.time():

第三次作业——团队项目展示

一个人想着一个人 提交于 2020-01-12 02:41:10
团队介绍: 团队的特色 极佳的创意,极准的coding,极快的行动and极会吹水。 我们的名字 Boy Next Door 我们的队员 林 晗(Lin 吔 Han),031502124,队长兼产品经理。 黄显东(Van Dong),031502114,队员。 林松雄(Leen Van Long),031502126,队员。 队员风采 有为青年 --林 晗 I like coding --黄显东 做帅的IT精英 --林松雄 我们的项目 网上账单同步助手是一个管理网上主流支付平台的账单的网站,在这里你可以一目了然的知道你的钱包是如何被掏空的,然后合理的剁手。 来源: https://www.cnblogs.com/sunhan161/p/7554638.html

量子计算丨Superdense coding

只谈情不闲聊 提交于 2020-01-12 00:26:22
Superdense coding是一种量子通信的方式。A和B共享一个纠缠态,发送者A通过更改自己的量子比特从而向接收者B传输经典比特的信息如(00,01,10 or 11)。 起初有一个双量子比特 \(|B_{00}>=\frac{1}{\sqrt{2}}(|00>+|11>)\) ,它可以通过作用 \(CNOT(H\otimes I|00>)\) 获取。 假设A和B相距很远。我们将该 \(|B_{00}>\) 的第一个比特分给A、第二个比特分给B。因此A获得叠加态比特 \(q_A=\frac{1}{2}(|0>+|1>)\) ,B获得叠加态比特 \(q_B=\frac{1}{2}(|0>+|1>)\) ,且 \(q_A\) 和 \(q_B\) 之间存在纠缠关系(该描述方式可能有误,只为帮助理解)。因此 \(|B_{00}>=\frac{1}{2}(|0_A0_B+1_A1_B>)\) 。 现在A想向B传输信息 \(xy(xy=00,01,10 or 11)\) ,但其只能操作自己的比特 \(q_A\) ,他该怎么办? A通过量子门改变自己的比特 \(q_A\) 使 \(|B_{00}>\) 变为 \(|B_{xy}>\) ,并发送 \(q_A\) ;当B接收到 \(q_A\) 后即得到 \(|B_{xy}>\) 。 \(xy\) \(B_{00}\) \(q_A\) gate