Entry

redis 6.0 redis-cluster-proxy代理尝试

夙愿已清 提交于 2020-05-06 15:26:25
伴随着Redis6.0的发布 ,作为最令人怦然心动的特性之一,Redis官方同时推出Redis集群的proxy了:redis-cluster-proxy, https://github.com/RedisLabs/redis-cluster-proxy 相比从前访问Redis集群时需要制定集群中所有的IP节点相比: 1,redis的redis-cluster-proxy实现了redis cluster集群节点的代理(屏蔽),类似于VIP但又比VIP简单,客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群。 2,不仅如此,还是具有一些非常实用的改进,比如在redis集群模式下,增加了对multiple操作的支持,跨slot操作等等(有点关系数据库的分库分表中间件的感觉)。 redis-cluster-proxy主要特性 以下信息来自于官方的说明: redis-cluster-proxy是Redis集群的代理。Redis能够在基于自动故障转移和分片的集群模式下运行。 这种特殊模式(指Redis集群模式)需要使用特殊的客户端来理解集群协议:通过代理,集群被抽象了出来,可以实现像单实例一样实现redis集群的访问。 Redis集群代理是多线程的,默认情况下,它目前使用多路复用通信模型,这样每个线程都有自己的集群连接,所有属于线程本身的客户端都可以共享该连接。 无论如何

Dubbo(六):zookeeper注册中心的应用

走远了吗. 提交于 2020-05-06 14:50:28
  Dubbo中有一个非常本质和重要的功能,那就是服务的自动注册与发现,而这个功能是通过注册中心来实现的。而dubbo中考虑了外部许多的注册组件的实现,zk,redis,etcd,consul,eureka...   各自实现方式各有不同,但是对外表现都是一致的:都实现了 Registry 接口!   今天我们就来看看最常用和注册中心 Zookeeper 的接入实现吧! 1. dubbo在 zookeeper 中的服务目录划分   注册中心的作用主要分发服务的发布,与服务订阅,及服务推送,服务查询!而zk中,则以服务主单位进行目录划分的。   整个zookeeper的路径概览:     /dubbo: root 目录, 持久化目录 (可通过 group=xxx 自定义root目录)     /dubbo/xxx.xx.XxxService: 每个服务一个路径,持久化目录     /dubbo/xxx.xx.XxxService/configurators: 配置存放路径,默认为空     /dubbo/xxx.xx.XxxService/providers: 服务提供者目录,所有提供者以其子路径形式存储,持久化目录。各服务提供者以临时目录形式存在,路径样例如: dubbo%3A%2F%2F192.168.56.1%3A20880%2Forg.apache.dubbo.demo

redis 6.0 redis-cluster-proxy代理尝试

爱⌒轻易说出口 提交于 2020-05-06 12:48:27
伴随着Redis6.0的发布 ,作为最令人怦然心动的特性之一,Redis官方同时推出Redis集群的proxy了:redis-cluster-proxy, https://github.com/RedisLabs/redis-cluster-proxy 相比从前访问Redis集群时需要制定集群中所有的IP节点相比: 1,redis的redis-cluster-proxy实现了redis cluster集群节点的代理(屏蔽),类似于VIP但又比VIP简单,客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群。 2,不仅如此,还是具有一些非常实用的改进,比如在redis集群模式下,增加了对multiple操作的支持,跨slot操作等等(有点关系数据库的分库分表中间件的感觉)。 redis-cluster-proxy主要特性 以下信息来自于官方的说明: redis-cluster-proxy是Redis集群的代理。Redis能够在基于自动故障转移和分片的集群模式下运行。 这种特殊模式(指Redis集群模式)需要使用特殊的客户端来理解集群协议:通过代理,集群被抽象了出来,可以实现像单实例一样实现redis集群的访问。 Redis集群代理是多线程的,默认情况下,它目前使用多路复用通信模型,这样每个线程都有自己的集群连接,所有属于线程本身的客户端都可以共享该连接。 无论如何

Bug记录,Duplicate entry '**' for key 'PRIMARY'

家住魔仙堡 提交于 2020-05-06 11:52:24
出现这个就代表添加的数据主键有重复 看看我的情况是啥样的。 在调用添加的方法时,第一次可以添加到数据库,但是第二次显示主键重复的错误,而重复的主键就是刚刚添加的那条数据的主键,每重启服务器就可以品尝一下这酸爽的体验。 数据表主键已经设置自动递增。 这个是主键,在自动生成的sql中有添加,但是已经设置自增,虽然业务层并没有给主键数据初始化,但是在解决问题的时候还是考虑到会有冲突, 如有遇到这种可以试试将主键的添加操作删掉,同时考虑被删的还有上面selectKey里的 SELECT LAST_INSERT_ID() 很多人是因为数据表中没有添加主键的自动递增,如果你遇到的话可以看看主键的递增是否打开, 你可以试试将表中的主键先换成其他字段试试,或者将表中的数据删除至你的自增序列之前or之后(多试)。 再试试将这张表的主键序列值增加到数据表最大id之后,下面是sql语句。 alter table 表名 AUTO_INCREMENT=数值; 考虑数据库sql问题,转自其他遇到这个问题的大佬 1.IGNORE INSERT IGNORE INTO Table_name(…..) VALUES(1,1),(2,2),(3,3); 使用IGNORE,如果插入的记录中存在重复值会忽略重复值的该记录行,不影响其他行的插入。 2.REPLACE REPLACE INTO Table_name()

ES报错:"illegal_argument_exception"

假如想象 提交于 2020-05-06 10:51:06
ES报错具体错误如下: { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [createHour] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "gmall1205_order", "node": "LCQa858ERH6qw_7asM2R3Q", "reason": { "type": "illegal_argument_exception

stm32启动文件ld md hd cl vl xl分析及选择

给你一囗甜甜゛ 提交于 2020-05-06 02:50:03
说的直白点就是以下区别,在选择启动文件的时候有选择性区别! startup_stm32f10x_cl.s 互联型的STM32F105xx,STM32F107xx startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_hd_vl.s 大容量的STM32F100xx startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_ld_vl.s 小容量的STM32F100xx startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_md_vl.s 中容量的STM32F100xx startup_stm32f10x_xl.s 超大容量FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx 疑问一:为什么需要选择启动文件? 1.建立中断服务入口地址,即把中断向量与中断服务函数链接起来。 我们知道在串口NVIC配置中我们只定义了个 NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

select、poll、epoll实现原理分析

独自空忆成欢 提交于 2020-05-06 01:52:13
本文转载自:https://blog.csdn.net/lishenglong666/article/details/45536611 poll/select/epoll的实现都是基于文件提供的poll方法(f_op->poll), 该方法利用poll_table提供的_qproc方法向文件内部事件掩码_key对应的的一个或多个等待队列(wait_queue_head_t)上添加包含唤醒函数(wait_queue_t.func)的节点(wait_queue_t),并检查文件当前就绪的状态返回给poll的调用者(依赖于文件的实现)。 当文件的状态发生改变时(例如网络数据包到达),文件就会遍历事件对应的等待队列并调用回调函数(wait_queue_t.func)唤醒等待线程。 通常的file.f_ops.poll实现及相关结构体如下 C代码 struct file { const struct file_operations *f_op; spinlock_t f_lock; // 文件内部实现细节 void *private_data; #ifdef CONFIG_EPOLL /* Used by fs/eventpoll.c to link all the hooks to this file */ struct list_head f_ep_links; struct list

从 vue-cli 到 webpack多入口打包(二)

隐身守侯 提交于 2020-05-05 23:22:22
完成多入口打包配置 上一节我说完了三个关键的plugin,通过三个plugin我们可以做到将代码进行分割,并且将分割的代码打包到我们指定的路径下,完成打包的模块可以被index.html文件正确引用。这里我们需要贯穿整个流程。 1、yargs yargs 是一个非常强大的命令行参数处理工具,这里我们用到的功能比较简单,只需要获取从命令行传入的modules数组,这个数组表示所需打包的入口chunk。在vue-cli的默认安装包中并没有安装yargs这个模块,所以我们需要首先安装yargs模块。 // 通过npm安装yargs npm install yargs -D 完成安装后,我们就能使用yargs进行命令行参数的获取,然后通过获取到的数组,按需打包我们需要的入口模块。例如:我们src下面有三个入口,分别为 moduleA 、 moduleB 、 moduleC ,但是本次我们发现 moduleC 的代码没有发生变动,我们只需要在打包时传入 moduleA 、 moduleB 这两个参数就能做到。首先我们需要将参数从命令行传入到我们的运行脚本中。 2、命令行传入参数 2.1 scripts 的命令行参数 我们打包时运行的命令是 npm run build ,实际上我们执行的是package.json中的scripts中的脚本配置,vue-cli中默认的build配置是

anacodna/python 安装 tensorflow

此生再无相见时 提交于 2020-05-05 22:21:49
study from : https://www.cnblogs.com/HongjianChen/p/8385547.html 执行1-6 7 安装jupyter 每次使用tensorflow,都要 事先 activate tensorflow 来启动tensorflow pip install --upgrade --ignore-installed tensorflow 安装时间较长,有可能出现刚开始出现网络问题,重新再试一遍就行 更快一点的操作 Cache entry deserialization failed, entry ignored 用管理员权限打开anaconda prompt (study from : https://blog.csdn.net/shanpenghui/article/details/80564268) tensorflow只不支持python 3.7,所以要使用python 3.6 anaconda内含python,不需要单独安装python ---恢复内容结束--- study from : https://www.cnblogs.com/HongjianChen/p/8385547.html 执行1-6 pip install --upgrade --ignore-installed tensorflow 安装时间较长

python GUI编程(tkinter)

大兔子大兔子 提交于 2020-05-05 19:58:44
python提供了多个图形开发界面的库,几个常用Python GUI库如下: tkinter: tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。 wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。 Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码. tkinter 编程 tkinter 是Python的标准GUI库。Python使用tkinter可以快速的创建GUI应用程序。 由于tkinter是内置到python的安装包中、只要安装好Python之后就能import tkinter库、而且IDLE也是用tkinter编写而成、对于简单的图形界面tkinter还是能应付自如。 创建一个GUI程序 1