Lingmoumou's Blog

きっといつかって愿うまま

0%

微服务安全面临的挑战

  • 跨多个微服务的请求难以追踪
  • 容器化不熟导致的证书和访问控制问题
  • 如何在微服务间共享用户登录状态
  • 多语言架构要求每个团队都有一定的安全经验

matrix关注两个关键要素,一个是时间窗口,一个是指标,如流量,每秒钟有多少个请求。

日志、matrix、tracing都是难点。

常见的微服务安全整体架构

OAuth2协议与微服务安全

Zuul网关安全

Gateway网关安全

基于Spring Security的控制授权

基于数据库RBAC数据模型的控制权限

权限表达式

表达式 说明
permitAll 永远返回true
denyAll 永远返回false
anonymous 当前用户是anonymous时返回true
rememberMe 当前用户是rememberMe用户时返回true
authenticated 当前用户不是anonymous时返回true
fullAuthenticated 当前用户既不是anonymous也不是rememberMe用户时返回true
hasRole(role) 用户拥有指定的角色权限时返回true
hasAnyRole([role1,role2]) 用户拥有任意一个指定的角色权限时返回true
hasAuthotity(authority) 用户拥有指定的权限时返回true
hasAnyAuthority([authority1,authority2]) 用户拥有任意一个指定的权限时返回true
hasIpAddress(‘192.168.1.0/24’) 请求发送的IP匹配时返回true

基本的Token参数配置

使用JWT替换默认的Token

JWT 简介

JWT(Json Web Token)

  • 自包含
  • 密签
  • 可扩展

扩展和解析JWT的信息

基于JWT实现SSO

SSO 简介

授权表达式

卷积神经网络基础

笔记整理

通过观察互相关运算可知,输入数据(这里以二维数组为例)的边缘部分相较于中间部分来说,使用的次数较少,对于一些存储重要信息的边缘数据来说,这无疑是重大的损失,这里可以通过填充来解决这一问题吗??也就是在输入数据的边缘填充0,使得原来的边缘数据中心化???
padding解决不了这个问题,因为padding的内容其实是不包含信息量的0。
这个问题感觉是个不错的思考~但是又感觉很奇怪,平时是遇不到这个问题的。
比如给你一张狗的图片,shape 224224,你换成 222222,你不可能不认识它了。
比如即使你使用77的大卷积核,损失的也仅仅是边缘的3个像素而已。
更何况现在都是3
3的卷积核,那1个像素是不会包含什么重要信息的。

padding的用途之一就是弥补特征提取时可能造成的边缘信息缺失。我们人在观察图片内容的过程,其实也是就是一个特征提取的过程。人在拍摄照片时,习惯将重要的事物放在图片中央,所以,在用卷积操作提取图片特征时,中间运算次数多,两边少,这是能满足大多数图像重要信息提取的。但是,当你的图片中边缘有重要信息,而卷积核又取得相对较大时,为了更好的保留边缘信息,我们可以考虑使用SAME padding,保持特征图不缩小(具体计算公式见我给出的PPT)。楼上这位朋友解释说“padding解决不了这个问题,因为padding的内容其实是不包含信息量的0。”,这不太对。因为他忽略了虽然padding的0不含信息,但是原始图片(或是FM)的边缘是包含信息的啊,而且你认为边缘信息对你当前要处理的任务来说是重要的,所以,你在要SAME padding处理,以尽可能多提取边缘信息啊。

阅读全文 »

机器翻译及相关技术

笔记整理

数据预处理

  1. 读取数据,处理数据中的编码问题,并将无效的字符串删除
  2. 分词,分词的目的就是将字符串转换成单词组成的列表。目前有很多现成的分词工具可以直接使用,也可以直接按照空格进行分词(不推荐,因为分词不是很准确)
  3. 建立词典,将单词组成的列表编程单词id组成的列表,这里会得到如下几样东西
    1. 去重后词典,及其中单词对应的索引列表
    2. 还可以得到给定索引找到其对应的单词的列表,以及给定单词得到对应索引的字典。
    3. 原始语料所有词对应的词典索引的列表
  4. 对数据进行padding操作。
  5. 制作数据生成器,但是需要注意的是对于翻译任务的数据格式,机器翻译的输入是一段文本序列,输出也是一段文本序列。
阅读全文 »

过拟合、欠拟合及其解决方案

模型选择、过拟合和欠拟合

训练误差和泛化误差

在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。

机器学习模型应关注降低泛化误差。

阅读全文 »

文本预处理

文本预处理步骤:
1.读取文本 2.分词 3.构建字典 建立索引
Vocab字典构建步骤:
1.统计词频,去重筛选掉低频词
2.根据需求添加特殊的token
3.建立字典,将每个token建立映射到唯一的索引
4.建立索引到token的映射

建立词典:
词典的主要作用是将每一个词映射到一个唯一的索引号,主要构建了一个idx_to_token列表来存储所有的词,一个token_to_idx来存储所有词的索引。
在实现的的流程上是:
对语料进行分词,生成一个token列表,里面包含了语料的分词结果
对分好的词统计词频,然后根据词频来构建词典(统计好的词频完成了去重的操作,同时也保留了词的频率,方便后续的操作)
其中有一些名词的作用是视频里提出来的
pad的作用是在采用批量样本训练时,对于长度不同的样本(句子),对于短的样本采用pad进行填充,使得每个样本的长度是一致的
bos( begin of sentence)和eos(end of sentence)是用来表示一句话的开始和结尾
unk(unknow)的作用是,处理遇到从未出现在预料库的词时都统一认为是unknow ,在代码中还可以将一些频率特别低的词也归为这一类

  1. 建立字典,设置阈值
  2. 去重筛选词,特殊需求token
  3. count_corpus统计词频,得到counter
  4. 增删,利用空列表
    • pad:二维矩阵长度不一,短句子补token利用pad
    • bos:开始token
    • eos:结束token
    • unk:未登录词当作unk
  5. 词到索引号
    阅读全文 »