github

深度剖析分布式单点登录框架XXL-SSO

蓝咒 提交于 2021-02-16 20:47:38
于2018年初,在github上创建XXL-SSO项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… 于2018-12-05,XXL-SSO参与" 2018年度最受欢迎中国开源软件 "评比,在当时已录入的一万多个国产开源项目中角逐,最终排名第55名。 于2019-01-23,XXL-SSO被评选上榜" 2018年度新增开源软件排行榜之国产 TOP 50 "评比,排名第8名。 至今,XXL-SSO已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和核心中间件配置动态化等,截止2018-03-15为止,XXL-SSO已接入的公司包括不限于: 湖南创发科技 深圳龙华科技有限公司 摩根国际 印记云 一、简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,可以做到开箱即用。 1.2 特性 1、简洁:API直观简洁,可快速上手; 2、轻量级:环境依赖小,部署与接入成本较低; 3、单点登录:只需要登录一次就可以访问所有相互信任的应用系统。 4、分布式:接入SSO认证中心的应用,支持分布式部署; 5、HA:Server端与Client端,均支持集群部署,提高系统可用性; 6、跨域

Only run GitHub Actions manually while blocking Pull Request

只愿长相守 提交于 2021-02-16 20:08:49
问题 I have a set of GitHub Actions configured to block pull requests from being merged until the Actions complete successfully. However, every time a new commit is pushed to a PR, the Actions are run again, which can be very wasteful if the author is not yet ready to merge, and intends to make future changes. Is there any way to have a GitHub Action still block a PR being merged but also not run the Action automatically? 回答1: With this recent update you can now convert pull requests back to draft

Only run GitHub Actions manually while blocking Pull Request

梦想的初衷 提交于 2021-02-16 20:08:33
问题 I have a set of GitHub Actions configured to block pull requests from being merged until the Actions complete successfully. However, every time a new commit is pushed to a PR, the Actions are run again, which can be very wasteful if the author is not yet ready to merge, and intends to make future changes. Is there any way to have a GitHub Action still block a PR being merged but also not run the Action automatically? 回答1: With this recent update you can now convert pull requests back to draft

go 和 rust 设计模式对比

倾然丶 夕夏残阳落幕 提交于 2021-02-16 19:06:45
定义 工厂模式可分为三类: 简单工厂模式 工厂方法模式 抽象工厂模式 简单工厂模式 属于创建型模式,不属于 23 种 GOF 设计模式之一,由一个工厂对象决定创建出哪一种产品类实例,逻辑为定义一个工厂类,根据传入的参数不同返回不同的产品实例,被创建的实例具有共同的父类或接口。 工厂方法模式 跟简单工厂模式的区别就是,定义了一些工厂子类,每个工厂子类都可以创建相对应的产品类实例,而不用工厂父类去根据参数创建,一般在产品类比较多的情况下,不想太多复杂的逻辑封装在工厂父类里面,可以用这种模式。 抽象工厂模式 顾名思义,把工厂抽象出来,根据具体的业务需求组合工厂创建产品实例的逻辑,通常为创建多个产品实例类。抽象工厂一旦要增加创建产品实例的逻辑,就需要修改抽象工厂接口的具体产品组合逻辑,所以并不符合开闭原则,如果是需要频繁增加(修改)产品实例的话,要衡量是否采用这种模式 基本结构 工厂模式从源码上总的来说可以分为 4 部分: 抽象产品: 通过声明接口(特性),定义了产品的业务方法。 具体产品: 通过 implement 接口(特性),定义了业务方法的具体逻辑。 抽象工厂: 按照相应的业务逻辑,声明了创建产品对象的业务方法(多数为组合方式)。 具体工厂: 通过 implement 接口(特性),定义了创建产品对象的具体逻辑。 结构设计的关键点: 产品只负责产品对象的创建,其他什么都不关心,

Caffe的solver参数介绍

…衆ロ難τιáo~ 提交于 2021-02-16 18:50:45
版权声明:转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/59109447 1. Parameters solver.prototxt 文件是用来告诉caffe如何训练网络的。 solver.prototxt 的各个参数的解释如下: base_lr 这个参数是用来表示网络的初始学习率的。这个值是一个浮点型实数。 lr_policy 这个参数是用来表示学习率随着时间是如何变化的。值是字符串,需要加 "" 。学习率变化的可选参数有: “step”——需要设置 stepsize 。根据 gamma 参数和 stepsize 参数来降低学习率, base_lr * gamma ^ (floor(iter / stepsize)) 。 iter 是当前迭代次数。学习率每迭代 stepsize 次变化一次。 “multistep”——与 step 类似,需要设置 stepvalue ,学习率根据 stepvalue 进行变化。 “fixed”——学习率 base_lr 保持不变。 “inv”——学习率变化公式为 base_lr * (1 + gamma * iter) ^ (- power) “exp”——学习率变化公式为 base_lr * gamma ^ iter} “poly”——学习率以多项式形式衰减

3 分钟看懂如何判断括号的合法性

妖精的绣舞 提交于 2021-02-16 18:50:28
点击上方 蓝字 设为星标 东哥带你手把手撕力扣~ 作者:labuladong 公众号:labuladong 若已授权白名单也必须保留以上来源信息 对括号的合法性判断是一个很常见且实用的问题,比如说我们写的代码,编辑器和编译器都会检查括号是否正确闭合。而且我们的代码可能会包含三种括号 [](){} ,判断起来有一点难度。 本文就来聊一道关于括号合法性判断的算法题,相信能加深你对 栈 这种数据结构的理解。 题目很简单,输入一个字符串,其中包含 [](){} 六种括号,请你判断这个字符串组成的括号是否合法。 Input: "()[]{}" Output: true Input: "([)]" Output: false Input: "{[]}" Output: true 解决这个问题之前,我们先降低难度,思考一下, 如果只有一种括号 () ,应该如何判断字符串组成的括号是否合法呢? 一、处理一种括号 字符串中只有圆括号,如果想让括号字符串合法,那么必须做到: 每个右括号 ) 的左边必须有一个左括号 ( 和它匹配 。 比如说字符串 ()))(( 中,索引为 2 和 3 的两个右括号 左边 就没有左括号匹配,所以这个括号组合是不合法的。 所以我们可以一边遍历一边记录遇到左括号的个数,每次遇到右括号就匹配一个左括号数。根据这个思路,我们可以写出算法: bool isValid (

小蜜蜂连接池断网后自动恢复测试

廉价感情. 提交于 2021-02-16 17:51:07
刚刚有网友说,光连接池存在断网后,重新创建连接存在问题( https://github.com/brettwooldridge/HikariCP/issues/1736 )。因此一时兴趣,也来测试检验一下小蜜蜂连接池是否也存在类似问题。 测试步骤 1:初始创建10个连接,启动截屏 2:从池中借一个连接并执行SQL 3: 停掉数据库,并立即重启,再重新执行SQL 执行效果描述:10个坏的连接自动关闭,并重新创建一个新连接 结论:小蜜蜂连接池很健壮! 来源: oschina 链接: https://my.oschina.net/u/3918073/blog/4953186

redis系列:基于redis的分布式锁

ε祈祈猫儿з 提交于 2021-02-16 17:22:49
一、介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息。 二、分布式锁 2.1 什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 2.2 分布式锁需要具备哪些条件 互斥性:在任意一个时刻,只有一个客户端持有锁。 无死锁:即便持有锁的客户端崩溃或者其他意外事件,锁仍然可以被获取。 容错:只要大部分Redis节点都活着,客户端就可以获取和释放锁 2.4 分布式锁的实现有哪些? 数据库 Memcached(add命令) Redis(setnx命令) Zookeeper(临时节点) 等等 三、单机Redis的分布式锁 3.1 准备工作 定义常量类 public class LockConstants { public static final String OK = "OK"; /** NX|XX, NX -- Only set the key if it does not already exist. XX --

[提权]Windows UAC 提权(CVE-2019-1388)

自闭症网瘾萝莉.ら 提交于 2021-02-16 16:46:52
0x00 UAC简介 首先来理解一下什么是 UAC : 用户账户控制UAC:UAC 是 win10 操作系统中非常重要的安全功能,它起源于 windows vista 操作系统,流行于 windows7、windows8 。各种功能策略得到了完善的修订和开发,应用在 win10 操作系统中,目的是减少恶意软件对系统的侵害。 操作系统默认情况下是启用UAC,当用户运行软件就会触发UAC规则。执行的时候就需要权限,否则是不会运行的。 不涉及到更改计算机操作的项目是不会触发UAC规则的,能够触发UAC规则的常用操作包括以下内容: 运行应用程序 修改注册表文件 安装或者卸载程序 安装设备驱动程序 增加或者删除用户账户 复制文件到windows目录 用户操作以上内容时就会触发UAC规则,系统会弹出提示对话框。简单来说,弹出对话框操作就是临时提升用户权限,允许程序运行。 控制 UAC 的4种级别: 1、始终通知(最高级别) 在最高级别中,用户安装和卸载应用程序、更改系统设置等操作时,都会触发UAC并弹出提示框。此级别是系统的最高安全级别,禁止用户随意更改设置和卸载应用程序等操作。 2、仅在程序尝试对我的计算机进行更改时通知我(默认级别) 在这个级别下,只有应用程序操作时会触发UAC规则,用户对电脑的其它设置操作不会触发UAC。所以,在此规则下既不影响用户的正常操作

干货 | 京东云Kubernetes集群+Traefik实战

放肆的年华 提交于 2021-02-16 16:41:03
摘要 Traefik支持丰富的annotations配置,可配置众多出色的特性,例如:自动熔断、负载均衡策略、黑名单、白名单。所以 Traefik对于微服务来说简直就是一神器。 利用Traefik,并结合京东云Kubernetes集群及其他云服务(RDS,NAS,OSS,块存储等), 可快速构建弹性扩展的微服务集群。 Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台(Kubernetes,Docker,Swarm,Marathon,Mesos,Consul,Etcd,Zookeeper等)。 本文大致步骤如下: Kubernetes权限配置(RBAC); Traefik部署; 创建三个实例服务; 生成Ingress规则,并通过PATH测试通过Traefik访问各个服务; Traefik配置域名及TLS证书,并实现HTTP重定向到HTTS。 本文部署Traefik使用到的Yaml文件均基于Traefik官方实例,并为适配京东云Kubernetes集群做了相关修改: https://github.com/containous/traefik/tree/master/examples/k8s 基本概念 1 Ingress边界路由 虽然Kubernetes集群内部署的pod、server都有自己的IP,但是却无法提供外网访问