zookeeper 如何保证半数提交后剩下的节点上最新的数据呢? 40C

zookeeper 的leader和follower的prepare和commit时,只要半数的节点通过就算同意,leader就会commit,那么剩下的半数节点的数据如何同步到最新的呢?

2个回答

剩下的节点,会进行版本比对,发现版本不一致的话,会更新节点的数据。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
zookeeper功能求指教大神进

zookeeper是怎么调用服务端的服务的? 比如: 之前有一台服务器提供http服务,浏览器请求服务器的方式为get请求url+参数 现在假设有三台服务器提供相同的http服务,使用zookeeper后,zookeeper是怎么把ger方式请求的url+参数传到服务器的?在项目zookeeper的代码里没找到和发送http请求相关的zookeeper代码。。

如何保护zookeeper中kafka的元数据节点

我现在分别有kafka和zookeeper的集群, zookeeper我单独使用的时候自己建立的节点可以设置权限,但是kafka在zookeeper中创建的元数据节点怎么办?这些节点都是anyone权限,肯定不可能手动去一个一个加,因为zookeeper子节点不继承父节点的权限,所以除非产生的每个节点都有权限否者没有意义。 我查资料按照步骤给zookeeper启用了jaas文件,然后zookeeper集群也可以正常启动与使用,但是kafka启动的时候报错: java.lang.SecurityException: zookeeper.set.acl is true, but the verification of the JAAS login file failed. 主要就是下面这句话,到底是什么情况下才会报这个错? zookeeper.set.acl is true, but the verification of the JAAS login file failed. 我现在zookeeper的jaas配置方式是: 1.给zoo.cfg文件配置了 authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000 2.zookeeper的jaas文件如下: Server { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="adminpwd"; }; 这个文件conf文件夹中 3. 并且org.apache.kafka.common.security.plain.PlainLoginModule 需要用到的jar也都添加到了 classpath中, 4. zkEnv.sh 也设置了SERVER_JVMFLAGS=" -Djava.security.auth.login.config=$ZOOCFGDIR/zk_server_jaas.conf" kafka的broker的jaas文件内容如下: KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="adminpwd" user_admin="adminpwd"; }; 配置文件server.properties中设置了zookeeper.set.acl=true 请问我是不是哪里弄错了,为什么就是不行呢 zookeeper.set.acl 这个怎么用,根据我查资料理解,这样设置了以后kafka就可以创建的节点是带ACL的

zkclient监控不到zookeeper节点数据的问题

zkclient可以监控到自己框架上传到节点的数据,而检测不到其他方式上传到同一个节点的数据,这一点很奇怪,有大神解释下吗

zookeeper关于顺序节点

顺序号:是10位数字,同级共用一套 那么超过10位怎么处理

zookeeper的根节点在哪里找不到求指教

我用如下命令create /testZNODE 创建了一个节点,却怎么也找不到我创建的这个节点,请问zookeeper的根节点在硬盘上哪里保存呢?

Zookeeper的Curator客户端异步创建节点,没有先后顺序吗?

先上代码: ``` package book.chapter05.$5_4_2; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.api.BackgroundCallback; import org.apache.curator.framework.api.CuratorEvent; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.CreateMode; //使用Curator的异步接口 public class Create_Node_Background_Sample { static String path = "/zk-book"; static CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("domain1.book.zookeeper:2181") .sessionTimeoutMs(5000) .retryPolicy(new ExponentialBackoffRetry(1000, 3)) .build(); static CountDownLatch semaphore = new CountDownLatch(2); static ExecutorService tp = Executors.newFixedThreadPool(2); public static void main(String[] args) throws Exception { client.start(); System.out.println("Main thread: " + Thread.currentThread().getName()); // 此处传入了自定义的Executor client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).inBackground(new BackgroundCallback() { @Override public void processResult(CuratorFramework client, CuratorEvent event) throws Exception { System.out.println("One event[code: " + event.getResultCode() + ", type: " + event.getType() + "]"); System.out.println("One Thread of processResult: " + Thread.currentThread().getName()); semaphore.countDown(); } }, tp).forPath(path, "init".getBytes()); // 此处没有传入自定义的Executor client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).inBackground(new BackgroundCallback() { @Override public void processResult(CuratorFramework client, CuratorEvent event) throws Exception { System.out.println("Two event[code: " + event.getResultCode() + ", type: " + event.getType() + "]"); System.out.println("Two Thread of processResult: " + Thread.currentThread().getName()); semaphore.countDown(); } }).forPath(path, "init2".getBytes()); semaphore.await(); System.out.println("通过CountDownLatch主线程一直等待,直到计数减到0"); tp.shutdown(); } } ``` 运行结果情况(1): Main thread: main Two event[code: 0, type: CREATE] Two Thread of processResult: main-EventThread One event[code: -110, type: CREATE] One Thread of processResult: pool-3-thread-1 通过CountDownLatch主线程一直等待,直到计数减到0 运行结果情况(2): Main thread: main Two event[code: -110, type: CREATE] Two Thread of processResult: main-EventThread One event[code: 0, type: CREATE] One Thread of processResult: pool-3-thread-1 通过CountDownLatch主线程一直等待,直到计数减到0 问题内容: 请问一下,主线程中是 One先创建的节点,然后才是Two创建的节点,zookeeper对于同一客户端的会话请求不是顺序执行的吗?为什么有时候是Two先创建的节点,有时候是One先创建成功节点呢?

zookeeper锁节点的并发问题

初识zookeeper,说锁定znode来处理事务,节点都被锁了,并发岂不是有性能问题?

zookeeper集群,宕掉1个后,都不能用了

我用VMWare搭建了3个主机的zookeeper,已经实现了数据同步了(在一个主机创建了数据,在其他主机,启动客户端,都能查看了)。但,其中一个kill -9 id后,其他的都不能用了。 ``` [root@wqb99 ~]# /itcast/zookeeper-3.4.9/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /itcast/zookeeper-3.4.9/bin/../conf/zoo.cfg Mode: leader [root@wqb99 ~]# jps 2739 Jps 2531 QuorumPeerMain [root@wqb99 ~]# kill -9 2531 [root@wqb99 ~]# jps 2749 Jps [root@wqb99 ~]# ``` 发现其他节点也宕机了 (1) [root@wqb88 ~]# /itcast/zookeeper-3.4.9/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /itcast/zookeeper-3.4.9/bin/../conf/zoo.cfg Mode: follower [root@wqb88 ~]# /itcast/zookeeper-3.4.9/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /itcast/zookeeper-3.4.9/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@wqb88 ~]# (2) [root@wqb66 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /itcast/zookeeper-3.4.9/bin/../conf/zoo.cfg Mode: follower [root@wqb66 bin]# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /itcast/zookeeper-3.4.9/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@wqb66 bin]#

zookeeper leader崩溃恢复后,事务同步问题

假如A B C三个节点zookeeper,A节点是leader,某一时刻A节点提出一个提议P1,然后收到ACK以后,就在发出commit之前(A已经提交了P2)A崩溃了,这样B和C就会重新选主,想问一下当A恢复后,leader怎样处理P1

zookeeper使用java用客户端创建临时节点,控制台卡在一个地方不动了?

![图片说明](https://img-ask.csdn.net/upload/201904/13/1555128663_784871.png) 服务端已经启动成功,然后建了一个springboot项目,添加好注解@RestController@SpringBootApplication@EnableDiscoveryClient后,启动程序,控制台卡在图片红色框哪里不动了,请大神帮忙解决下。

spark主节点配置一定与hadoop主节点配置一样吗?依赖zookeeper吗?

我用的是hadoop-2.5cdh5.3,集群namenode在01主机上,在配置spark的时候我将spark master指向了03节点, 配置完毕后,将hadoop集群,yarn依次启动,然后启动spark做示例运行总是出现启动不正常的问题,所以请有经验的人指明一下,是不是一定要和hadoop的主节点一样呢?zookeeper是不是也一定要启动。图是我的示例运行,页面查询发现此任务运行是被killed的状态。 ![图片说明](https://img-ask.csdn.net/upload/201510/21/1445391119_876804.png) ![图片说明](https://img-ask.csdn.net/upload/201510/21/1445391055_88906.png) ![图片说明](https://img-ask.csdn.net/upload/201510/21/1445391145_543234.png) ![图片说明](https://img-ask.csdn.net/upload/201510/21/1445391080_514411.png) worker的deploy日志 ![图片说明](https://img-ask.csdn.net/upload/201510/21/1445398054_94598.png)

使用dubbo时,zookeeper做集群有意义吗?

最近项目中使用dubbo+zookeeper,zookeeper做了集群配置,有3个节点nodeA,nodeB,nodeC,三个节点配置完毕启动成功,但是项目项启动时,只向其中一个节点注册服务,如果把注册服务的节点停掉,消费者启动时会找不到服务。 问题: 1、zookeeper做了集群以后,数据是否会自动同步,比如注册到一个节以后,另外两个节到是否也会有同样的注册信息存在? 2、如果项目启动时,dubbo只向主节点中注册服务,那么主节点宕掉,其它节点没法有数据,那么zookeeper做集群有什么意义? 谢谢!

zookeeper启动之后无故被杀死(单节点启动也是)

zookeeper启动之后无故被杀死 是什么原因 其他俩台机器正常 百度一下 说法不一 端口也没有被占用 myid文件数量也对 主机名也对 也提升了zoo.cfg配置文件tickTime值,或者initLimit值 日志说是 无法运行仲裁服务器,我把端口号改了也不行 ![图片说明](https://img-ask.csdn.net/upload/201911/24/1574560902_148595.jpg)

zookeeper挂掉了,是什么情况

我的重启了自己dubbo上的服务,然后zookeeper就挂掉了,导致我所有的服务都连接不上 zookeeper? 这是什么原因导致的?还是踩到坑了

zookeeper死了后,dubbo上的服务要重启吗

zookeeper死了后,重启了zk,dubbo上的服务一定要重启吗

如果配置了网关的话,zookeeper 或 eureka 和节点通信 会经过网关吗

![](http://blog.didispace.com/content/images/2016/07/-----.png) 在这个图中,网关怎么画呢,所有的节点‘出门’都会遇到网关在外面 ‘巡逻’吗?

关于zooKeeper,下面这个例子能保证数据安全吗

package zooKeeper.zooKeeperLock; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; /** DistributedLock lock = null; try { lock = new DistributedLock("127.0.0.1:2182","test"); lock.lock(); //do something... } catch (Exception e) { e.printStackTrace(); } finally { if(lock != null) lock.unlock(); } * @author xueliang * */ public class DistributedLock implements Lock, Watcher{ private ZooKeeper zk; private String root = "/build";//根 private String lockName;//竞争资源的标志 private String waitNode;//等待前一个锁 private String myZnode;//当前锁 private CountDownLatch latch;//计数器 private int sessionTimeout = 30000; private List<Exception> exception = new ArrayList<Exception>(); /** * 创建分布式锁,使用前请确认config配置的zookeeper服务可用 * @param config 127.0.0.1:2181 * @param lockName 竞争资源标志,lockName中不能包含单词lock */ public DistributedLock(String config, String lockName){ this.lockName = lockName; // 创建一个与服务器的连接 try { zk = new ZooKeeper(config, sessionTimeout, this); Stat stat = zk.exists(root, false); if(stat == null){ // 创建根节点 zk.create(root, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); } } catch (IOException e) { exception.add(e); } catch (KeeperException e) { exception.add(e); } catch (InterruptedException e) { exception.add(e); } } /** * zookeeper节点的监视器 */ public void process(WatchedEvent event) { if(this.latch != null) { this.latch.countDown(); } } public void lock() { if(exception.size() > 0){ throw new LockException(exception.get(0)); } try { if(this.tryLock()){ System.out.println("Thread " + Thread.currentThread().getId() + " " +myZnode + " get lock true"); return; } else{ waitForLock(waitNode, sessionTimeout);//等待锁 } } catch (KeeperException e) { throw new LockException(e); } catch (InterruptedException e) { throw new LockException(e); } } public boolean tryLock() { try { String splitStr = "_lock_"; if(lockName.contains(splitStr)) throw new LockException("lockName can not contains \\u000B"); //创建临时子节点 myZnode = zk.create(root + "/" + lockName + splitStr, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL); System.out.println(myZnode + " is created "); //取出所有子节点 List<String> subNodes = zk.getChildren(root, false); //取出所有lockName的锁 List<String> lockObjNodes = new ArrayList<String>(); for (String node : subNodes) { String _node = node.split(splitStr)[0]; if(_node.equals(lockName)){ lockObjNodes.add(node); } } Collections.sort(lockObjNodes); System.out.println(myZnode + "==" + lockObjNodes.get(0)); if(myZnode.equals(root+"/"+lockObjNodes.get(0))){ //如果是最小的节点,则表示取得锁 return true; } //如果不是最小的节点,找到比自己小1的节点 String subMyZnode = myZnode.substring(myZnode.lastIndexOf("/") + 1); waitNode = lockObjNodes.get(Collections.binarySearch(lockObjNodes, subMyZnode) - 1); } catch (KeeperException e) { throw new LockException(e); } catch (InterruptedException e) { throw new LockException(e); } return false; } public boolean tryLock(long time, TimeUnit unit) { try { if(this.tryLock()){ return true; } return waitForLock(waitNode,time); } catch (Exception e) { e.printStackTrace(); } return false; } private boolean waitForLock(String lower, long waitTime) throws InterruptedException, KeeperException { Stat stat = zk.exists(root + "/" + lower,true); //判断比自己小一个数的节点是否存在,如果不存在则无需等待锁,同时注册监听 if(stat != null){ System.out.println("Thread " + Thread.currentThread().getId() + " waiting for " + root + "/" + lower); this.latch = new CountDownLatch(1); this.latch.await(waitTime, TimeUnit.MILLISECONDS); this.latch = null; } return true; } public void unlock() { try { System.out.println("unlock " + myZnode); zk.delete(myZnode,-1); myZnode = null; zk.close(); } catch (InterruptedException e) { e.printStackTrace(); } catch (KeeperException e) { e.printStackTrace(); } } public void lockInterruptibly() throws InterruptedException { this.lock(); } public Condition newCondition() { return null; } public class LockException extends RuntimeException { private static final long serialVersionUID = 1L; public LockException(String e){ super(e); } public LockException(Exception e){ super(e); } } }

zookeeper 分布式 leader挂 掉,后其它人能拿到锁?

zookeeper做分布试锁 当client1在zookeeper上获取到锁,这时leader消息还没有同到到其它的follower上,leader挂掉了,client2可以拿到锁吗? 问题1:当leader挂掉时这个数据会同步到其它的follower上吗? 问题2:client2可以拿到锁吗? 问题3:如果client2访问到其中一个follower拿锁,但 这时leader还没有将数据同步到该节点上,会导制锁不住的情况,如何解决 主要考虑zk宕机,数据未同步到其它节点上。

zookeeper启动后自关闭

之前一直好好的,三个虚拟机,现在两个都启动不起来,第一次启动的时候还会有QuorumPeerMain进程,但基本上三秒就自动关闭了,之后再启动就启动不起来了,连这个进程也不会出现了。重装也试过了,还是一样。 出问题的是master和slave01节点,slave02正常。打开hadoop的时候,slave01也无法正常启动。 dataLogDir=/usr/zookeeper/var/datalog 但是我把之前的日志都清空之后,再启动也没有新的日志产生 zookeeper的日志怎么查看?

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问