Zookeeper的容错为什么是2/n + 1求大家说明下

Zookeeper的容错为什么是2/n + 1求大家说明下 如题求大神。

3个回答

zookeeper集群节点数一般设置为奇数个,3,5,7,9....。集群中有一个leader和若干个follower。当 leader崩溃或者leader失去大多数(超过半数节点)的follower,这时候zookeeper进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的节点都恢复到一个正确的状态。为了触发恢复模式,就需要对节点数进行合理配置。就拿三个节点与四个节点做比较。当集群中宕机两个节点后,集群已经不能保证以后继续正常工作,这个时候就要启动恢复模式。明显可以看出,配置三个节点与四个节点的容错数量是一致的,为了节省成本,配置三个节点肯定比配置四个节点要节约很多。五节点与六节点也是如此,五节点集群中挂掉两个节点时,剩下三个节点依然能保证集群正常工作,如果再挂掉一个节点,虽然还剩下两个节点(可能你会有这样的疑问:在三节点中,两个节点正常工作并不会触发恢复模式,为何这里两个节点就会触发),但是正常工作的节点数只占节点总数的较少一部分,已经出现隐患。而在六节点集群中,宕机三个,正常工作的也是三个,刚好各占一半,这就不好决定该不该触发恢复模式。偶数个就会出现这样的尴尬情况,设置成奇数个就没有这样的情况出现。在商业中,zookeeper集群数量相对个人配置的数量肯定要多很多,任何一个节点都有可能在任何时候宕机,在兼顾工作效率与节约成本的情况下,集群节点设置为奇数个,而设置n/2 +1(超过半数) 个容错节点是最合理的。设置奇数个在生活中也是很常见有用的规则,比如某些机构中拥有投票权的人数是奇数个或者投票总数为奇数个,超过半数的机制可以有效的避免出现平局的情况。计算机领域中也有这样的机制,毕竟这些东西都是人设计出来的。

所谓的zookeeper容错是指,当宕掉几个zookeeper服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的服务数必须大于n/2,zookeeper才可以继续使用,无论奇偶数都可以选举leader。5台机器最多宕掉2台,还可以继续使用,因为剩下3台大于5/2。说为什么最好为奇数个,是在以最大容错服务器个数的条件下,会节省资源,比如,最大容错为2的情况下,对应的zookeeper服务数,奇数为5,而偶数为6,也就是6个zookeeper服务的情况下最多能宕掉2个服务,所以从节约资源的角度看,没必要部署6(偶数)个zookeeper服务。

一、Zookeeper
1.Zookeeper概述
Zookeeper是一个工具,可以实现集群中的分布式协调服务。
所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作。

    Zookeeper之所以能够实现分布式协调服务,靠的就是它能够保证分布式数据一致性。
    所谓的分布式数据一致性,指的就是可以在集群中保证数据传递的一致性。

    Zookeeper能够提供的分布式协调服务包括:数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能

2.Zookeeper的特点
    Zookeeper工作在集群中,对集群提供分布式协调服务,它提供的分布式协调服务具有如下的特点:
        顺序一致性
            从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到zookeeper中
        原子性
            所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了改事务,另外一部分没有应用的情况。
        单一视图
            无论客户端连接的是哪个zookeeper服务器,其看到的服务端数据模型都是一致的。
        可靠性
            一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。
        实时性
            zookeeper并不是一种强一致性,只能保证顺序一致性和最终一致性,只能称为达到了伪实时性。

3.zookeeper的数据模型
    zookeeper中可以保存数据,正是利用zookeeper可以保存数据这一特点,我们的集群通过在zookeeper里存取数据来进行消息的传递。
    zookeeper中保存数据的结构非常类似于文件系统。都是由节点组成的树形结构。不同的是文件系统是由文件夹和文件来组成的树,而zookeeper中是由ZNODE来组成的树。
    每一个ZNODE里都可以存放一段数据,ZNODE下还可以挂载零个或多个子ZNODE节点,从而组成一个树形结构。

4.zookeeper集群的搭建
    需要先安装jdk,并且配置jdk的环境变量

    下载zookeeper的安装包
    上传到linux集群环境下
    解压安装包
        tar -zxvf zookeeper-3.4.7.tar.gz
    进入conf目录,复制zoo-sample.cfg为zoo.cfg,通过修改zoo.cfg来对zookeeper进行配置
        修改1:dataDir 指定zookeeper将数据保存在哪个目录下,如果不修改,默认在/tmp下,这个目录下的数据有可能会在磁盘空间不足或服务器重启时自动被linux清理,所以一定要修改这个地址
        修改2:修改服务器列表
            单机模式:在zoo.cfg中只配置一个server.id就是单机模式了
            伪集群模式:在zoo.cfg中配置多个server.id,其中ip都是当前机器,而端口各部相同,启动时就是伪集群模式了  启动:zkServer.sh start zoo1.cfg。进入zookeeper/conf/目录下,将改目录下的zoo_sample.cfg配置文件拷贝4份,依次为zoo.cfg  zoo1.cfg  zoo2.cfg  
            集群模式:多台机器各自配置
                server.1=xxx.xxx.xxx.xxx:2888:3888  
                server.2=xxx.xxx.xxx.xxx:2888:3888  
                server.3=xxx.xxx.xxx.xxx:2888:3888
        如果是完全分布模式,还要进行修改3:到之前配置的zookeeper数据文件所在的目录下生成一个文件叫myid,其中写上一个数字表明当前机器是哪一个编号的机器

netstat -an | grep 2181 #查看端口是否占用
1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

                顺序节点    普通节点
    临时节点    顺序临时节点  普通临时节点  
    持久节点    顺序持久节点  普通持久节点

    顺序节点:指定叫什么,除了前缀是指定的名字外,在名字后会会自带一个独一无二自动增长的的编号 普通节点:指定叫什么就叫什么

    临时节点:一个客户端连接创建的临时节点,会在当客户端会话结束时立即自动删除。 持久节点:创建出来后只要不删除就不会消失,无论客户端是否连接。


5.zookeeper的shell下操作
    进入%ZK_HOME%/bin
    执行zkCli.sh [-server ip:port] #如不指定,则连接本机

    创建:
        create [-s] [-e] path data [acl] #创建数据节点
            --其中 -s表示顺序节点 -e表示临时节点,两个都不加则是持久节点
            --acl 指定权限控制,不赋值则不进行任何权限控制

        练习:创建/zk-book 其中数据为123
            Create /zk-book 123

    列出:
        ls path [watch] #列出所有数据节点

        练习:列出根目录下所有数据节点
            ls /

    获取:
        get path [watch]

        练习:列出 /zk-book中的数据
            get /zk-book

    更新:
        set path data [version]
            --data 为要更新的内容 version指定要基于哪个版本的数据进行更新

    删除:
        delete path [version]
            --path 为要删除的路径 version指定要基于哪个版本进行删除
            --注意,要删除的节点下必须没有任何子节点才能删除成功


6.zookeeper的java api操作
    创建会话:
        Zookeeper(String connectString,int sessionTimeout,Watcher watcher)
        Zookeeper(String connectString,int sessionTimeout,Watcher watcher,boolean canBeReadOnly)
        Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd)
        Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd,boolean canBeReadOnly)
        参数说明:
            connectString -- host:port[,host:port][basePath] 指定的服务器列表,多个host:port之间用英文逗号分隔。还可以可选择的指定一个基路径,如果指定了一个基路径,则所有后续操作基于这个及路径进行。
            sessionTimeOut -- 会话超时时间。以毫秒为单位。客户端和服务器端之间的连接通过心跳包进行维系,如果心跳包超过这个指定时间则认为会话超时失效。
            watcher -- 指定默认观察者。如果为null表示不需要观察者。
            canBeReadOnly -- 是否支持只读服务。只当一个服务器失去过半连接后不能再进行写入操作时,是否继续支持读取操作。略
            sessionId、SessionPassword -- 会话编号 会话密码,用来实现会话恢复。

        **注意,整个创建会话的过程是异步的,构造方法会在初始化连接后即返回,并不代表真正建立好了一个会话,此时会话处于"CONNECTING"状态。
        **当会话真正创建起来后,服务器会发送事件通知给客户端,只有客户端获取到这个通知后,会话才真正建立。

        代码:
            //TODO

    创建节点:
        String create(final String path,byte data[],List<ACL> acl,CreateMode createMode);//同步方式创建   
        void create(final String path,byte data[],List<ACL> acl,CreateMode createMode,StringCallback cb,Object ctx);//异步方式创建
        参数说明:
            path 要创建的数据节点的路径
            data [] 节点创建时初始数据内容
            acl 节点acl安全策略
            createMode 创建模式
                PERSISTENT 持久
                PERSISTENT_SEQUENTIAL 持久顺序
                EPHEMERAL 临时
                EPHEMERAL_SEQUENTIAL 临时顺序
            cb 回调接口
            ctx 传递对象,用来在回调方法中使用 通常是个上下文对象

            **注意:不支持递归创建,即不能在无父节点的情况下创建出子节点
            **尝试创建已经存在的节点将失败并抛出异常
            **在不需要进行任何权限控制时,只需传入Ids.OPEN_ACL_UNSAFE即可

        代码:
            //TODO

    删除节点:
        public void delete(final String path,int version)
        public void delete(final String path,int version,VoidCallback cb,Object ctx)

            **注意:无法删除存在子节点的节点,即如果要删除一个节点,必须要先删除其所有子节点

    读取数据:
        getChildren
            //同步方式
            List<String> getChildren(final String path,Watcher watcher)
            List<String> getChildren(String path,boolean watch)
            List<String> getChildren(final String path,Watcher watcher,Stat stat)
            List<String> getChildren(String path,boolean watch,Stat stat)
            //异步方式
            void getChildred(final String path,Watcher watcher,ChildrenCallback cb,Object ctx)
            void getChildred(String path,boolean watch,ChildrednCallback cb,Object ctx)
            void getChildred(final String path,Watcher watcher,Children2Callback cb,Object ctx)
            void getChildred(String path,boolean watch,Children2Callback cb,Object ctx)

            参数说明:
                path 要创建的数据节点的路径
                watcher 观察者,一旦在本子节点获取之后,子节点列表发生变更,服务器端向客户端发送消息,触发watcher中的回调。注意,仅仅是通知而已,如果需要新的子节点列表,需要自己再次去获取。允许传入null。
                watch 表明是否需要注册一个Watcher。为true则通知默认到默认watcher,如果为false则不使用
                cb 回掉函数
                ctx 上下文对象
                stat 指定数据节点的状态信息。用法是在接口中传入一个旧的stat变量,该stat变量会在方法执行过程中,被来自服务端响应的新stat对象替换。

        getData
            //同步方式
            byte [] getData(final String path,Watcher watcher, Stat stat)
            byte [] getData(String path,boolean watch, Stat stat)
            //异步方式
            void getData(final String path,Watcher watcher, DataCallback cb,Object ctx) 
            void getData(String path,boolean watch, DataCallback cb,Object ctx) 

            *可以通过注册Watcher进行监听,一旦该节点数据被更新会通知客户端

    更新数据
        //同步方式
        Stat setData(final String path,byte data[],int version)//version可以传入-1,表明要基于最新版本进行更新操作
        //异步方式
        void setData(final String path,byte data[],int version,StatCallback cb,Object ctx)

    检查节点是否存在
        //同步方式
        public Stat exists(final String path,Watcher watcher)
        public Stat exists(String path,boolean watch)
        //异步方式
        public Stat exists(final String path,Watcher watcher,StatCallback cb,Object ctx)
        public Stat exists(String path,boolean watch,StatCallback cb,Object ctx)

        *可以通过注册Watcher进行监听,一旦节点被创建、删除、数据被更新都会通知客户端

    zookeeper权限控制:
        addAuthInfo(String schema,byte [] auth)
        参数说明;
            schema 权限模式,可以是world auth digest ip super,我们使用digest
            byte[] auth 权限控制标识,由"foo:123".getByte()方式组成,后续操作只有auth值相同才可以进行

            **注意删除操作,如果在增加节点时指定了权限,则对于删除操作,认为权限加在了子节点上,删除当前结点不需要权限,删除子节点需要权限。

    图形化工具:第一阶段/Zebra/Day03/资料/zookeeper/Zoolnspector/build/zookeeper-dev-ZooInspector.jar


    7.zookeeper原理   
        zookeeper为了保证可靠性,不能用一台机器,而应该是一个集群

        为了保证zookeeper集群数据能够一致,必须有一个拍板说了算的人,这就是leader,其他的是follower。
        某一时刻集群里只能有且仅有一个leader。
        leader可以执行增删改和查询操作,而follower只能进行查询操作。
        所有的更新操作都会被转交给leader来处理,leader批准的任务,再发送给follower去执行来保证和leader的一致性。
        由于网络是不稳定的,为了保证执行顺序的一致,所有的任务都会被赋予一个唯一的顺序的编号,一定是按照这个编号来执行任务,保证任务顺序的一致性。

        那么什么时候leader可以认为一个客户端的请求可以算是处理成功了呢?
        如果只有leader或少数机器来认可这个任务,则leader和这些少量机器如果挂掉,则选出来的新的leader并不知道之前批准过的这个任务,最终会违反数据的可靠性。
        所以要求leader在批准一个任务之前应该保证集群里大部分的机器应该是知道这个提案的,这样即使自己挂掉,根据过半同意选出来的leader肯定是知道这个提案的。
        而如果leader一定要等到所有follower都同一才执行提案也不好,因为知道有一个机器挂掉,leader就无法工作,也相当于单节点了,无法保证集群可靠性。
        所以,只要过半同一leader就可以认为一个提案通过。       

        所以,
        leader在收到客户端提交过来的任务后,会向集群中所有的follower发送提案等待follower的投票,follower们收到这个提议后,会进行投票,同意或者不同意,
        leader会回收follower的投票,一旦受到过半的投票表示同意,则leader认为这个提案通过,再发送命令要求所有的follower都进行这个提案中的任务。

        由于需要过半的机器同一才能执行任务,所以一旦集群中过半的机器挂掉,整个集群就无法工作了。

        从而可以推导出:
            zookeeper集群必须保证过半存活才能工作
            zookeeper的集群中的机器数量最好应该是奇数个,因为需要过半存活集群才能工作,所以偶数个机器提供的集群可靠性其实和偶数-1个机器提供的集群可靠性是一样的。

        leader选举的问题:
            最开始集群启动时,会选择最先启动的机器作为leader。
            当leader挂掉后,会通过过半投票选出具有最高任务编号的称为新的leader。

    8.zookeeper工具

二、zebra中zookeeper的应用
1.监测集群中集群的存活状态
在一级引擎和二级引起启动时 要求去zookeeper中创建临时节点,表明自己已经启动了
zebra
|-jb
|--jb_000001
|-engin1
|--engin1_0000001 - xxx :xx
|--engin1_0000002
|-engin2
|--egin2_0000001

2.数据的订阅与发布 -- 将zebra的配置信息提取到zookeeper中来管理

    zebra - paths:/root/work/data/zebra/103_20150615143630_00_00_000.csv
        |-jb - port:6666
            |--jb_00001 - ip:xxxx
        |-engin1 - port:9999
            |--engin1_000001 - ip:xxxxx,port:9999
        |-engin2 - port:8888,dirverName=com.mysql.jdbc.Driver,jdbcUrl=jdbc:mysql://192.168.242.1:3306/zebra,username=root,password=root

    **jt engin1 engin2在启动时通过读取zookeeper中的自己的节点来获取配置信息
    **jt engin1 engin2在启动时需要在 对应目录下 创建顺序临时节点表明自己存活,并且要在其中写入自己的ip 和 端口
    **jt 在启动时还要获取 zk中/zebra/engin1的所有子节点 从而获知一级引擎有几个,以及每个的ip和端口
    **engin1 在启动时还需要获取 zk中的/zebra/engin2的所有子节点 从而获知二级引擎有几个,以及每个的ip和端口
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Zookeeper的容错为什么是2/n + 1求大家说明下

Zookeeper的容错为什么是2/n + 1求大家说明下 如题求大神。

kafka启动报错,java.lang.NoSuchMethodError: org.apache.zookeeper.ZooKeeper.multi(Ljava/lang/Iterable;Lorg/apache/zookeeper/AsyncCallback$MultiCallback;Ljava/lang/Object;)V

试过很多方法,降级zk使其和kafka依赖的版本保持一致; zk3.414 ,kafka2.3 删除了scala的环境变量,依然不行; java_home只有一个 java.lang.NoSuchMethodError: org.apache.zookeeper.ZooKeeper.multi(Ljava/lang/Iterable;Lorg/apache/zookeeper/AsyncCallback$MultiCallback;Ljava/lang/Object;)V at kafka.zookeeper.ZooKeeperClient.send(ZooKeeperClient.scala:238) at kafka.zookeeper.ZooKeeperClient.$anonfun$handleRequests$2(ZooKeeperClient.scala:160) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:253) at kafka.utils.CoreUtils$.inReadLock(CoreUtils.scala:259) at kafka.zookeeper.ZooKeeperClient.$anonfun$handleRequests$1(ZooKeeperClient.scala:160) at kafka.zookeeper.ZooKeeperClient.$anonfun$handleRequests$1$adapted(ZooKeeperClient.scala:156) at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62) at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55) at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49) at kafka.zookeeper.ZooKeeperClient.handleRequests(ZooKeeperClient.scala:156) at kafka.zk.KafkaZkClient.retryRequestsUntilConnected(KafkaZkClient.scala:1660) at kafka.zk.KafkaZkClient.retryRequestsUntilConnected(KafkaZkClient.scala:1647) at kafka.zk.KafkaZkClient.retryRequestUntilConnected(KafkaZkClient.scala:1642) at kafka.zk.KafkaZkClient$CheckedEphemeral.create(KafkaZkClient.scala:1712) at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1689) at kafka.zk.KafkaZkClient.registerBroker(KafkaZkClient.scala:97) at kafka.server.KafkaServer.startup(KafkaServer.scala:262) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38) at kafka.Kafka$.main(Kafka.scala:84) at kafka.Kafka.main(Kafka.scala)

zookeeper启动失败,求大神助攻

Zookeeper启动之后出现 [root@localhost bin]# ./zkServer.sh start JMX enabled by default Using config: /root/zookeeper-3.4.6/bin/../conf/zoo.cfg ./zkServer.sh: line 84: grep: command not found mkdir: 无法创建目录"": 没有那个文件或目录 Starting zookeeper ... STARTED 但是输入命令  zkServer.sh  status时候出现 ./zkServer.sh: line 164: grep: command not found ./zkServer.sh: line 169: grep: command not found ./zkServer.sh: line 173: grep: command not found Error contacting service. It is probably not running. 纠结了好几天了求大神知道   解决必粉

linux zookeeper 启动错误

linux 系统32 位 jdk 32位 安装zookeeper ./zkServer.sh start 显示启动成功 ./zkServer.sh status 报错 [root@root bin]# ./zkServer.sh status JMX enabled by default Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running. 查看日志发现,/root/software/java/jdk1.8.0_144/bin/java: /root/software/java/jdk1.8.0_144/bin/java: cannot execute binary file 求大神帮忙看下~~

启动 zookeeper时,出现如下错误,

## 如题所示,设置以及出现的问题如下,求大神解答,跪求!!!! zoo.cfg如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/hadoop/zookeeper/data dataLogDir=/usr/local/hadoop/zookeeper/log clientPort=2184 server.1=192.168.59.10:2888:3788 server.2=192.168.59.11:2888:3788 server.3=192.168.59.12:2888:3788 启动时: JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED ![图片说明](https://img-ask.csdn.net/upload/201611/19/1479549351_651524.png) 查看状态: JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. ![图片说明](https://img-ask.csdn.net/upload/201611/19/1479549409_73529.png) zkookeeper.out 文件如下: 2016-11-19 16:54:33,948 [myid:] - INFO [main:QuorumPeerConfig@101] - Reading configuration from: /usr/local/zookeeper/bin/../conf/zoo.cfg 2016-11-19 16:54:33,956 [myid:] - INFO [main:QuorumPeerConfig@334] - Defaulting to majority quorums 2016-11-19 16:54:33,965 [myid:1] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3 2016-11-19 16:54:33,965 [myid:1] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0 2016-11-19 16:54:33,965 [myid:1] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled. 2016-11-19 16:54:33,984 [myid:1] - INFO [main:QuorumPeerMain@132] - Starting quorum peer 2016-11-19 16:54:33,998 [myid:1] - INFO [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2184 2016-11-19 16:54:34,038 [myid:1] - INFO [main:QuorumPeer@913] - tickTime set to 2000 2016-11-19 16:54:34,038 [myid:1] - INFO [main:QuorumPeer@933] - minSessionTimeout set to -1 2016-11-19 16:54:34,038 [myid:1] - INFO [main:QuorumPeer@944] - maxSessionTimeout set to -1 2016-11-19 16:54:34,038 [myid:1] - INFO [main:QuorumPeer@959] - initLimit set to 10 2016-11-19 16:54:34,071 [myid:1] - INFO [main:QuorumPeer@429] - currentEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation 2016-11-19 16:54:34,075 [myid:1] - INFO [main:QuorumPeer@444] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation 2016-11-19 16:54:34,088 [myid:1] - INFO [Thread-1:QuorumCnxManager$Listener@486] - My election bind port: 0.0.0.0/0.0.0.0:3788 2016-11-19 16:54:34,102 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2184:QuorumPeer@670] - LOOKING 2016-11-19 16:54:34,103 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2184:FastLeaderElection@740] - New election. My id = 1, proposed zxid=0x0 2016-11-19 16:54:34,108 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 1 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state) 2016-11-19 16:54:34,113 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot open channel to 2 at election address /192.168.59.11:3788 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365) at java.lang.Thread.run(Thread.java:745) 2016-11-19 16:54:34,117 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot open channel to 3 at election address /192.168.59.12:3788 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365) at java.lang.Thread.run(Thread.java:745) 2016-11-19 16:54:34,313 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2184:QuorumCnxManager@368] - Cannot open channel to 2 at election address /192.168.59.11:3788 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:388) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:765) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)

ubuntu zookeeper 启动报错 [[: not found -p: not found

panda@panda-VirtualBox:~/zookeeper-server/zk1/bin$ ls README.txt zkCli.cmd zkEnv.cmd zkServer.cmd zkServer.sh zkCleanup.sh zkCli.sh zkEnv.sh zkServer-initialize.sh panda@panda-VirtualBox:~/zookeeper-server/zk1/bin$ sh zkServer.sh start zkServer.sh: 80: /home/panda/zookeeper-server/zk1/bin/zkEnv.sh: [[: not found -p: not found java is /usr/jvm/jdk1.8/bin/java Error: JAVA_HOME is not set and java could not be found in PATH. panda@panda-VirtualBox:~/zookeeper-server/zk1/bin$ https://zhidao.baidu.com/question/1644189876595332740.html?entry=qb_uhome_tag

zookeeper 启动成功,zkServer.sh status 失败

zhjhtst02@inas:/inas/zookeeper01/zookeeper-3.4.6/bin>./zkServer.sh status JMX enabled by default Using config: /inas/zookeeper01/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running. zookeeper 版本3.4.6 jdk 1.6 linux zookeeper本身使用没有任何问题,只是./zkServer.sh status 无法执行。 其他命令都可以正常使用 有人说是nc问题,但3.4.6这个版本没有nc的语句了, 有人说是防火墙问题,但是停止了防火墙也没有作用。 status) # -q is necessary on some versions of linux where nc returns too quickly, and no stat result is output clientPortAddress=`grep "^[[:space:]]*clientPortAddress[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'` if ! [ $clientPortAddress ] then clientPortAddress="localhost" fi clientPort=`grep "^[[:space:]]*clientPort[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'` STAT=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \ -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain \ $clientPortAddress $clientPort srvr 2> /dev/null \ | grep Mode` if [ "x$STAT" = "x" ] then echo "Error contacting service. It is probably not running." exit 1 else echo $STAT exit 0 fi 应该是这里的脚步有问题,为什么"x$STAT" = "x" 会成立,

zookeeper启动成功了 查看status却错误连接 什么意思

[root@localhost bin]# ./zkServer.sh start JMX enabled by default Using config: /soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@localhost bin]# ./zkServer.sh status JMX enabled by default Using config: /soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@localhost bin]# ./zkServer.sh stop JMX enabled by default Using config: /soft/zookeeper-3.4.6/bin/../conf/zoo.cfg Stopping zookeeper ... ./zkServer.sh: line 143: kill: (3017) - 没有那个进程 STOPPED

关于Storm/Zookeeper集群配置

我在搭建一套Zookeeper+Kafka+Storm的集群环境,由于只有两台服务器,所以Zookeeper搭建 了三个节点,服务器1有两个zookeeper节点,端口分别是2181,2182。在Strom.yaml配置文件中,![图片说明](http://img.ask.csd n.net/upload/201707/31/1501469925_400368.png) 请问:1、storm的配置文件中的端口配置是否正确? 2、在服务器1中启动Storm的nimbus节点和UI,在服务器2启动Storm的supervisor节点,但是在Storm ui中并没有显的supervisor节点?

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]#

go-zookeeper Connect在没有有效连接的情况下返回

<div class="post-text" itemprop="text"> <p>I have a question regarding zookeeper, I am trying to implement simple service discovery with zookeeper in go, I am using go-zookeeper: <a href="https://github.com/samuel/go-zookeeper" rel="nofollow noreferrer">https://github.com/samuel/go-zookeeper</a></p> <p>My question is whenever I connect to zookeeper using for example:</p> <pre><code>zoo_keeper, _, err := zk.Connect(s, time.Second) </code></pre> <p>the function returns immediately and no error is reported, but there is no actual valid connection yet. Now for example if I want to create znodes, what do I need to check to make sure I have a valid connection before doing so?</p> </div>

dubbo 链接zookeeper问题

![图片说明](https://img-ask.csdn.net/upload/201707/24/1500835489_750636.png) 远程登陆linux 并启动zookeeper 正常 但是eclipse启动服务端的时候报错 无法连接zookeeper。。。求大神指点。。。已经困扰好几天了![图片说明](https://img-ask.csdn.net/upload/201707/24/1500835640_459219.png)![图片说明](https://img-ask.csdn.net/upload/201707/24/1500835664_234270.png)

zookeeper的实现原理是什么?

zookeeper的实现原理是什么?想了解一下,希望高手解答一下

Java原生api连接zookeeper特别慢,求问什么原因

zookeeper装在我的虚拟机里,虚拟机系统是centos7.0 下面是我java原生api连接zookeeper的代码段 ``` try{ zooKeeper =new ZooKeeper(connectString,timeout,new secondTry()); try { new Thread().sleep(19000); System.out.println(zooKeeper.getState()); } catch (InterruptedException e) { e.printStackTrace(); } }catch (IOException e){ e.printStackTrace(); if(zooKeeper!=null){ try{ zooKeeper.close(); }catch (InterruptedException e1){ e1.printStackTrace(); } } } ``` 最快也要十多秒,别人都是瞬间连上,zookeeper的配置文件也配了,虚拟机的网络也设置了好多遍,没有一点点起色。

Zookeeper在Centos下编译C客户端./configure出现失败,

hecking for gethostbyname... yes checking for gethostname... yes checking for getlogin... yes checking for getpwuid_r... yes checking for gettimeofday... yes checking for getuid... yes checking for memmove... yes checking for memset... yes checking for poll... yes checking for socket... yes checking for strchr... yes checking for strdup... yes checking for strerror... yes checking for strtol... yes configure: creating ./config.status ./config.status: line 331: syntax error near unexpected token `newline' ./config.status: line 331: `"'

solr集群搭建的zookeeper和之前学dubbo时的zookeeper放在一个虚拟机

之前学dubbo时的zookeeper,和现在solr搭建集群的zookepper(把之前的复制了三份到/usr/local/solr-cloud下,命名后缀01、02、03),放在同一虚拟机没关系吧? 如果没关系,现在出现了问题。配置好三个zookeeper0x/data/myid,zookeeper0x/conf/zoo.cfg(其中zookeeper01的zoo.cfg端口和之前dubbo的端口都是2181,不知道这样行不行,zookeeper02,03则分别配置了2182,2183)。用批处理文件开启三个zookeeper后,只有第一个是standalone,(不是leader或follower),其余两个都是It is probably not running

Zookeeper ACL 如何设置IP段

Zookeeper ACL 如何设置IP段,tonggSetAcl命令只能设置单ip,如果使用setAcl /123 ip:192.168.1.1/16:cdrwa提示 错误

zookeeper无法连接的问题,求大牛指教

前几天看某智的视频,做一个电商项目,但是不知道是哪出了问题报错,据一位大牛说我这是一台虚拟机的伪分布,意义不大,但那个项目的老师用Dubbo推荐的zookeeper Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection timed out: no further information 网上说配置文件有问题![图片说明](https://img-ask.csdn.net/upload/201709/14/1505374640_138192.png) 端口也启动了 ![图片说明](https://img-ask.csdn.net/upload/201709/14/1505374746_852425.png) ![图片说明](https://img-ask.csdn.net/upload/201709/14/1505374757_615612.png)

zkServer.sh status查看状态的时候出现错误

启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by default Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. jps查看进程,却发现进程已启动 7313 QuorumPeerMain 不知是哪的错误 版本是3.4.9 应该没有nc的错误 谢谢大家

habase 报错 ERROR: Can't get master address from ZooKeeper; znode data == null

hadoop + zookeeper +hbase 环境 hadoop 和 zookeeper 集群环境都ok,hbase启动之后,查看hbase状态报错 ![图片说明](https://img-ask.csdn.net/upload/201903/07/1551957383_266120.jpg) 网上的各种重启hbase 重启服务 修改配置文件都试过了,解决不了,跪求会的大神指导一下。 /etc/profile配置 ``` export JAVA_HOME=/opt/java/jdk1.8.0_201 export HADOOP_HOME=/opt/hadoop/hadoop-2.8.0 export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib" #export HIVE_HOME=/opt/hive/apache-hive-2.1.1-bin #export HIVE_CONF_DIR=${HIVE_HOME}/conf #export SQOOP_HOME=/opt/sqoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha export HBASE_HOME=/opt/hbase/hbase-1.4.9 export ZK_HOME=/opt/zookeeper/zookeeper-3.4.13 export CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${SPARK_HOME}/bin:${ZOOKEEPER_HOME}/bin:${HIVE_HOME}/bin:${SQOOP_HOME}/bin:${HBASE_HOME}:${ZK_HOME}/bin:$PATH ``` hbase/conf/hbase.xml 配置 ``` <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop1:9000/hbase</value> <description>The directory shared byregion servers.</description> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/hbase/zk_data</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect. </description> </property> <property> <name>zookeeper.session.timeout</name> <value>120000</value> </property> <property> <name>hbase.zookeeper.property.tickTime</name> <value>6000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop1,hadoop2,hadoop3</value> </property> <property> <name>hbase.tmp.dir</name> <value>/root/hbase/tmp</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration> ``` hbase/conf/conf/hbase-env.sh文件 ``` export HBASE_OPTS="-XX:+UseConcMarkSweepGC" # Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+ #export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m" #export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m" export JAVA_HOME=/opt/java/jdk1.8.0_201 export HADOOP_HOME=/opt/hadoop/hadoop-2.8.0 export HBASE_HOME=/opt/hbase/hbase-1.4.9 export HBASE_CLASSPATH=/opt/hadoop/hadoop-2.8.0/etc/hadoop export HBASE_PID_DIR=/root/hbase/pids export HBASE_MANAGES_ZK=false ``` zookeeper/zoo.cfg 配置文件 ``` tickTime=2000 initLimit=10 syncLimit=5 clientPort=2181 dataDir=/opt/zookeeper/data dataLogDir=/opt/zookeeper/dataLog server.1=hadoop1:2886:3881 server.2=hadoop2:2887:3882 server.3=hadoop3:2888:3883 quorumListenOnAllIPs=true ``` /opt/hadoop/hadoop-2.8.0/etc/hadoop/core-site.xml 文件 ``` <configuration> <property>         <name>hadoop.tmp.dir</name>         <value>/root/hadoop/tmp</value>         <description>Abase for other temporary directories.</description>    </property>    <property>         <name>fs.default.name</name>         <value>hdfs://hadoop1:9000</value>    </property> </configuration> ```

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

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

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

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

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

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

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐