keys

在Linux虚拟机上搭建git

假装没事ソ 提交于 2019-12-04 12:54:53
一.安装Git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 1.服务端: # yum install -y git “”“ 安装完成显示如下 。。。。。。 Installed: git.x86_64 0:1.7.1-9.el6_9 Dependency Installed: perl-Error.noarch 1:0.17015-4.el6 perl-Git.noarch 0:1.7.1-9.el6_9 Complete! ”“” 查看git版本 # git --version git version 1.7.1 2.客户端,下载 Git for Windows (win64位获取地址),其他地址: https://git-for-windows.github.io/ 默认安装就可以,安装完后可以查看版本。 $ git --version git version 2.9.3.windows.2 二、服务端创建用户 [root@localhost home]# id git id: git:无此用户 [root@localhost home]# useradd git # 设置用户名 [root@localhost home]# passwd git # 设置用户密码 三、服务端创建Git仓库 [root@localhost home]#

selenium模块基础用法详解

[亡魂溺海] 提交于 2019-12-04 12:07:15
目录 selenium模块 官方文档 介绍 安装 有界面浏览器 无界浏览器 selenium+谷歌浏览器headless模式 基本使用 选择器 基本用法 xpath 获取标签属性 等待元素被加载 隐式等待 显式等待 元素交互操作 点击,清空 Action Chains 在交互动作比较难实现的时候可以自己写JS(万能方法) frame的切换 其他 模拟浏览器的前进后退 cookies 选项卡管理 异常处理 selenium模块 官方文档 http://selenium-python.readthedocs.io/ 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器 from selenium import webdriver browser=webdriver.Chrome() browser=webdriver.Firefox() browser=webdriver.PhantomJS() browser=webdriver.Safari() browser=webdriver.Edge() 安装 有界面浏览器 selenium+chromedriver #安装

通过xargs实现redis cluster批量keys操作

纵饮孤独 提交于 2019-12-04 09:41:47
通过xargs实现redis cluster批量keys操作 为什么会出现批量删除keys的脚本,那是因为redis不支持删除(DEL)带有通配符“ * ”的key,而查询支持带通配符“ * ”。 [root@localhost ~]# redis-cli -c -h 10.1.37.113 -p 7002 -a PASSWORD KEYS hello* 1) "hello8" 2) "hello5" [root@localhost ~]# redis-cli -c -h 10.1.37.113 -p 7002 -a PASSWORD DEL hello* (integer) 0 工具简介 xargs This manual page documents the GNU version of xargs. xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments

redis编写lua脚本实现商品秒杀

↘锁芯ラ 提交于 2019-12-04 08:47:22
编写lua脚本 --是否秒杀 local hasBuy = redis.call('sismember',KEYS[1],ARGV[1]) if hasBuy~=0 then return 0; end --校验库存 for goodsIndex=2,#KEYS do local goodStock = redis.call('get',KEYS[goodsIndex]) if tonumber(goodStock) < tonumber(ARGV[goodsIndex]) then return 2; end end --扣库存 for goodsIndex=2,#KEYS do redis.call('decrby',KEYS[goodsIndex],ARGV[goodsIndex]) end --抢单成功 redis.call('sadd',KEYS[1],ARGV[1]) return 1 测试用例 Jedis jedis = jedisPool.getResource(); jedis.select(2); String luaStr = "local hasBuy = redis.call('sismember',KEYS[1],ARGV[1])\n" + "if hasBuy~=0 then\n" + "return 0;\n" + "end \n"+ "for

Redis 作为分布式锁(一):SpringBoot集成Redisson分布式锁

試著忘記壹切 提交于 2019-12-04 05:48:26
文章目录 一、项目Demo 1.1 项目依赖 1.2 项目配置-redis 1.3 Redisson的配置类RedissonConfig 1.4 定义一个Loker接口,用于分布式锁的一些操作 1.5 基于Redisson的实现类RedissonLocker 1.6 定义一个分布式锁工具类LockUtil 1.7 单元测试 1.8 源码 二、Redisson 之 Redlock 2.1 基于Redis命令的分布式锁 2.2 Redlock实现 2.3 Redlock源码 2.3.1 唯一ID 2.3.2 获取锁 2.3.2 释放锁 Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 一、项目Demo 1.1 项目依赖 <!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- redis --> <dependency>

Redisson分布式锁实现

99封情书 提交于 2019-12-04 05:47:33
转: 分布式锁和Redisson实现 概述 分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。 在微服务系统中,一个请求存在多级跨服务调用,往往需要牺牲强一致性老保证系统高可用,比如通过分布式事务,异步消息等手段完成。但还是有的场景,需要阻塞所有节点的所有线程,对共享资源的访问。比如并发时“超卖”和“余额减为负数”等情况。 本地锁可以通过语言本身支持,要实现分布式锁,就必须依赖中间件,数据库、redis、zookeeper等。 分布式锁特性 不管使用什么中间件,有几点是实现分布式锁必须要考虑到的。 互斥 :互斥好像是必须的,否则怎么叫锁。 死锁 : 如果一个线程获得锁,然后挂了,并没有释放锁,致使其他节点(线程)永远无法获取锁,这就是死锁。分布式锁必须做到避免死锁。 性能 : 高并发分布式系统中,线程互斥等待会成为性能瓶颈,需要好的中间件和实现来保证性能。 锁特性 :考虑到复杂的场景,分布式锁不能只是加锁,然后一直等待。最好实现如Java Lock的一些功能如:锁判断,超时设置,可重入性等。

【转】基于Redis Lua脚本实现的分布式锁(Java实现)

℡╲_俬逩灬. 提交于 2019-12-04 01:24:35
最近项目中需要用到一个分布式的锁,考虑到基于会话节点实现的zookeeper锁性能不够,于是想使用redis来实现一个分布式的锁。看了网上的几个实现方案后,发现都不够严谨。比如这篇: 用Redis实现分布式锁 里面设计的锁有个最大的问题是锁的超时值TTL会一直被改写,“尽管C3没拿到锁,但它改写了C4设置的锁的超时值,不过这一点非常微小的误差带来的影响可以忽略不计”,其实在高并发的时候会导致进程“饿死”(也有文章称为死锁)。还有这篇文章“ 两种分布式锁实现方案2 ”里面的v2=getset(key,时间戮+超时+1),其加1秒操作在大并发下也会触发同样的问题。网上 这篇文章 解决了这个“无休止的TTL”问题,我简单翻译了下。 锁是编程中非常常见的概念。在维基百科上对锁有个相当精确的定义: 在计算机科学中,锁是一种在多线程环境中用于强行限制资源访问的同步机制。锁被设计用于执行一个互斥的并发控制策略。 In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce

persistence registry run keys

喜夏-厌秋 提交于 2019-12-03 17:18:31
简介: 在Windows登录期间创建将执行任意负载的注册表项是红队游戏手册中最古老的技巧之一。 实现原理: 注册表项可以从终端添加到运行键以实现持久性。这些键将包含对用户登录时将执行的实际负载的引用,已知使用此持久性方法的威胁因素和红队使用以下注册表位置。 在注册表中以下四个注册表项中都可以进行自启的操作。 1、reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe" 2、reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe" 3、reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe" 4、reg add

项目常见bug

早过忘川 提交于 2019-12-03 16:54:15
Invalid prop: type check failed for prop "disabled". Expected Boolean, got String with value "true" 无效属性:属性disabled类型检查失败。 需要Boolean值 获得的ture是字符串类型 Duplicate keys detected: 'xxx'. This may cause an update error.(检查到重复的keys,这可能会导致更新错误) 重复 秘钥 检查 这可能会导致更新错误。 来源: https://www.cnblogs.com/javascript9527/p/11803420.html

SaltStack入门

纵饮孤独 提交于 2019-12-03 16:40:57
一、配置epel源并yum安装salt: 配置salt的epel源(可根据自己的操作系统和salt版本去官网找适合的eple源:http://repo.saltstack.com/) yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.3-2.el7.noarch.rpm 国内因为网络原因可能官方epel源报"Failed connect to repo.saltstack.com:443; Operation now in progress"; 如果官方不行可尝试阿里等国内的源; [root@linux-node1 yum.repos.d]# yum -y install salt-master salt-minion #其他机器只安装minion即可 [root@linux-node1 yum.repos.d]# rpm -qa salt* salt-repo-2016.3-2.el7.noarch salt-master-2015.5.10-2.el7.noarch salt-2015.5.10-2.el7.noarch salt-minion-2015.5.10-2.el7.noarch 二、配置启动salt服务 [root@linux-node1 yum.repos.d]# systemctl