`
backend-develop
  • 浏览: 24105 次
社区版块
存档分类
最新评论
文章列表
Java程序运行于Java虚拟机之上,JVM屏蔽了底层细节,使得Java程序能够“一次编译,到处运行”。在Java语言中,一切皆是对象,代码一般由类、接口、enum等构成,是一种面向对象的编程语言。本文将为你揭示Java虚拟机如何加载类,一窥Java底层的秘密。 类在虚拟机中的生命周期,可以分为加载、验证、准备、解析、初始化、使用、卸载几个阶段,其中的验证、准备、解析统称为连接。在这里,读者可以回忆一下以C语言为代表的面向过程语言如何实现动态链接库,以更好地理解Java面向对象编程。 通常情况下,虚拟机都会按照上图流程管理类的生命周期。然而,Java语言的一大特性——多态支持方法的动 ...
Java 8并发工具包简介 Java 8并发工具包由3个包组成,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks,提供了大量关于并发的接口、类、原子操作类、锁相关类。借助java.util.concurrent包,可以非常轻松地实现 ...
Apache Flume是一个分布式、可靠、可用的系统,用于从大量不同的源有效地收集、聚合、移动大量日志数据进行集中式数据存储。   Flume简介 Flume的核心是Agent,Agent中包含Source、Channel、Sink。Agent是最小的独立运行单位。在Agent中,数据流向为Source->Channel->Sink。 其中, Source:收集数据,传递给Channel。支持多种收集方式,如RPC、syslog、监控目录。 Channel:数据通道,接收Source的数据并储存,传递给Sink。Channel中的数据在被Sink消费前会一直保 ...
今天的技术管理会议探讨了一些技术团队管理的思路和想法,稍微总结一下。   团队间合作 一般稍有规模的软件开发都会细分为多个团队,各个团队分工不同。这样的分工,既提高了开发效率,也增加了沟通成本,而且一定会在某个问题上发生争执。比如用户反馈的APP的Bug,可能APP或服务端需要一方做兼容或两者一起修改,这时,在哪个团队承担风险和成本进行bug修复的问题上就有可能产生争执。针对这种问题,需要从两方面着手解决。 针对不同的解决方案,各个团队都列出优缺点,按照产品的发展目标共同决策出性价比最高的方案。这种情况下,要求各个团队能够换位思考,以实现共同的目标为原则进行选择。平时需要注意加强各个团 ...
Redis事务 Redis事务是一组命令的集合,也是Redis的最小执行单位之一。一个事务的所有命令,要么都执行,要么都不执行。Redis能保证事务执行期间不会有其他命令插入。   相关命令 命令 格式 说明 DISCARD DISCARD 取消事务 EXEC EXEC 执行事务中的命令 MULTI MULTI 标记一个事务的开始 UNWATCH UNWATCH
Redis发布订阅 发布订阅模式中发布消息的为publisher即发布者,接收消息的为subscriber即订阅者。在Redis中,所有的消息通过channel即频道进行发布,一个发布者可以向多个channel发布消息,一个订阅者也可以订阅多个channel。Redis不对消息进行持久化,如果消息发布时订阅者还没有进行订阅,则不会再收到此消息。   发布订阅命令 命令 格式 说明 PUBLISH PUBLISH channel message 发布message到指定的channel SUBSCRIBE SUBSCRIBE channel [channel ...
ZADD 格式:ZADD key score member [[score member] [score member] ...] 作用:向有序集合key中插入一个或多个元素。如果元素已经存在,更新score的值并移动member的位置。 返回值:新插入的成员的个数,不包括已经存在的member。   ZCARD 格式:ZCARD key 作用:返回有序集合key的元素个数。 返回值:元素个数。   ZCOUNT 格式:ZCOUNT key min max
SADD 格式:SADD key member [member ...] 作用:在集合key中插入一个或多个元素。如果member已经存在,则忽略member。如果key不存在则先创建集合key。 返回值:成功插入的元素个数。   SCARD 格式:SCARD key 作用:返回集合中的元素个数。 返回值:元素个数。如果集合不存在返回0。   SDIFF 格式:SDIFF key [key ...]
BLPOP 格式:BLPOP key [key ...] timeout 作用:从列表左侧弹出元素,超时时间为timeout,单位为秒。如果timeout为0则一直阻塞直到列表中有元素。如果同时操作多个列表,按照列表顺序从左到右依次检查列表,遇到第一个非空列表时弹出元素并返回。 返回值:列表元素。超时后返回nil和等待时间。   BRPOP 格式:BRPOP key [key ...] timeout 作用:从列表右侧弹出元素,超时时间为timeout,单位为秒。如果timeout为0则一直阻塞直到列表中有元素。如果同时操作多个列表,按照列表顺序从左到右依次检查列表,遇到第一个非 ...
HDEL 格式:HDEL key field [field ...] 作用:删除哈希表中的一个或多个域。 返回值:删除的域的个数。   HEXISTS 格式:HEXISTS key field 作用:判断哈希表中是否包含某个域field。 返回值:包含返回1,不包含返回0.   HGET 格式:HGET
APPEND 格式:APPEND key value 作用:在key的键值后追加value,如果key不存在,则创建key,并存入value。 返回值:追加value后的字符串长度。 示例: 192.168.1.100:6379> set testkey hello OK 192.168.1.100:6379> append testkey " word" (integer) 10 192.168.1.100:6379> get testkey "hello word"  
DEL 格式:DEL key [key ...] 作用:删除一个或多个 key。不存在的 key 会被忽略。 返回值:被删除 key 的数量。 示例: 192.168.1.100:6379> set testkey 1 OK # 删除成功返回删除key的个数 192.168.1.100:6379> del testkey (integer) 1 # key不存在返回0 192.168.1.100:6379> del testkey (integer) 0
Global site tag (gtag.js) - Google Analytics