分布式分为分布式缓存(Redis)、分布式锁(Redis或Zookeeper)、分布式服务(Dubbo或SpringCloud)、分布式服务协调(Zookeeper)、分布式消息队列(Kafka、RabbitMq)、分布式Session、分布式事务、分布式搜索(elastaticSearch)等。
不可能所有分布式内容都熟悉,一定要在某个领域有所专长。

分布式理论

Q:分布式有哪些理论?
CAP、BASE。
分布式CAP理论,任何一个分布式系统都无法同时满足Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性) 这三个基本需求。最多只能满足其中两项。
而Partition tolerance(分区容错性) 是必须的,因此一般是CP,或者AP。
Q:你怎么理解分布式一致性?
数据一致性通常指关联数据之间的逻辑关系是否正确和完整。
在分布式系统中,数据一致性往往指的是由于数据的复制,不同数据节点中的数据内容是否完整并且相同。
一致性还分为强一致性,弱一致性,还有最终一致性。
强一致性就是马上就保持一致。
最终一致性是指经过一段时间后,可以保持一致。
Q:你怎么理解分布式事务?分布式事务的协议有哪些?
分布式事务是指会涉及到操作多个数据库的事务。目的是为了保证分布式系统中的数据一致性。
分布式事务类型:二阶段提交2PC,三阶段提交3PC。
2PC:第一阶段:准备阶段(投票阶段)和第二阶段:提交阶段(执行阶段)。
3PC:三个阶段:CanCommit、PreCommit、DoCommit
分布式事务解决方案:补偿机制TCC、XA、消息队列MQ。
详情见:https://www.cnblogs.com/expiator/p/9841703.html

Rpc

Q:讲一下Dubbo
服务提供者提供服务,服务消费者可以通过Rpc进行服务消费。
Q:Dubbo支持哪些协议?
Dubbo支持Dubbo、rmi、hessian、http、webservice、thrift、Redis等多种协议
Q:Dubbo默认的协议是什么?
Dubbo协议。
Q:Dubbo的序列化有哪些方式?
Dubbo协议。
连接方式:长连接。默认协议:dubbo协议。序列化:hession二进制。
其他协议:
rmi协议。连接方式:短连接。序列化:java自带的二进制
hessian。连接方式:短连接。序列化:表单序列化
Q:Dubbo和SpringCloud有哪些区别?
Dubbo是Soa(面向服务的架构),SpringCloud是微服务架构,除了服务,还有注册中心、熔断、配置中心。
Dubbo基于Rpc(远程过程调用),SpringCloud基于restFul,基于http协议。
Q:Soa和微服务架构,有哪些区别?
Q:除了Zookeeper,你用过哪些注册中心?有什么区别?
Zookeeper,Redis,Eureka
Zookeeper,是分布式中的CP,能够更好地保证分布式一致性。
Redis基于发布/订阅模式。
Eureka在SpringCloud中应用较多。Eureka是分布式中的AP,也就是注重可用性。
Q:如果想实现一个Rpc框架,需要考虑哪些东西?
动态代理、反射、序列化、反序列化、网络通信(netty)、编解码、服务发现和注册、心跳与链路检测
Q:Dubbo的服务提供者、服务消费者需要配置哪些信息?
服务提供者需要配置ip、端口、Dubbo协议、注册中心地址等
Q:Dubbo有哪些负载均衡策略?
一致性Hash均衡算法、随机调用法、轮询法、最少活动调用法。
Q:你们用的是哪个版本的Dubbo?
Q:你们的服务划分了几个模块?分别是哪些模块?

Redis

Q:Redis有哪些优势?
1.速度快,因为数据存在内存中
2.支持丰富数据类型,支持string,list,set,sorted set,hash
3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
4.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
5.单线程,单进程,采用IO多路复用技术。
Q:Redis支持哪些数据结构?
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Q:Redis的数据结构,有哪些应用场景?
string,简单地get/set缓存。
hash,可以缓存用户资料。比如命令: hmset user1 name "lin" sex "male" age "25" ,缓存用户user1的资料,姓名为lin,性别为男,年龄25。
list,可以做列表。往list里面push数据,然后再pop出来。
zset,可以用来做排行榜。
详情见:https://www.cnblogs.com/expiator/p/10274151.html
Q:Redis的持久化方式有哪些?有哪些优缺点?
aof,就是备份操作记录。aof由于是备份操作命令,备份快,恢复慢。
rdb,就是备份所有数据,使用了快照。rdb恢复数据比较快。
Q:aof文件过大,怎么处理?
会进行aof文件重写。
1.随着AOF文件越来越大,里面会有大部分是重复命令或者可以合并的命令
2.重写的好处:减少AOF日志尺寸,减少内存占用,加快数据库恢复时间。
执行一个 AOF文件重写操作,重写会创建一个当前 AOF 文件的体积优化版本。
详情见: https://blog.csdn.net/stevendbaguo/article/details/82855726
Q:讲一下Redis的事务
先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令。
Redis事务无法回滚,那怎么处理?
Q:怎么设置Redis的key的过期时间?
key的的过期时间通过EXPIRE key seconds命令来设置数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。
Q:Redis的过期策略有哪些?
Redis key过期的方式有三种:
被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key
当前已用内存超过maxmemory限定时,触发主动清理策略,也就是Redis的内存回收策略。
Q:Redis 的内存回收机制都有哪些?
LRU、TTL。
noeviction:默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息,此时Redis只响应读操作。
volatitle-lru:根据LRU算法删除设置了超时属性的键,知道腾出足够空间为止。如果没有可删除的键对象,回退到noeviction策略。
allkeys-lru:根据LRU算法删除键,不管数据有没有设置超时属性,直到腾出足够空间为止。
allkeys-random:随机删除所有键,知道腾出足够空间为止。
volatitle-random:随机删除过期键,知道腾出足够空间为止。
volatitle-ttl:根据键值对象的ttl属性,删除最近将要过期数据。如果没有,回退到noeviction策略
Q:手写一下LRU算法 。
Q:Redis如何实现分布式锁?
使用setnx命令。
setnx key value,当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经存在,则setnx不做任何动作,返回0。
当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败。
Q:Redis实现的分布式锁,如果某个系统获取锁后,宕机了怎么办?
Redis宕机的话,会通过Redis集群的哨兵模式,将某个从机变成新的主机。
系统模块宕机的话,可以通过设置过期时间(就是设置缓存失效时间)解决。系统宕机时锁阻塞,过期后锁释放。
Q:设置缓存失效时间,那如果前一个线程把这个锁给删除了呢?
Q:Redis做分布式锁,Redis做了主从,如果设置锁之后,主机在传输到从机的时候挂掉了,从机还没有加锁信息,如何处理?
可以使用开源框架Redisson,采用了redLock。(待补充)
Q:讲一下Redis的redLock。
Q:Redis的搭建有哪些模式?
主从模式、哨兵模式、Cluster(集群)模式。
最好是用集群模式。
详情见:https://new.qq.com/omn/20180126/20180126G00THE.html
Q:你用过的Redis是多主多从的,还是一主多从的?集群用到了多少节点?用到了多少个哨兵?
集群模式。三主三从。
Q:Redis采用多主多从的集群模式,各个主节点的数据是否一致?
Q:Redis集群有哪些特性?
master和slaver。主从复制。读写分离。哨兵模式。
Q:Redis集群数据分片的原理是什么?
Redis数据分片原理是哈希槽。
Redis 集群有 16384 个哈希槽。 每一个 Redis 集群中的节点都承担一个哈希槽的子集。
哈希槽让在集群中添加和移除节点非常容易。例如,如果我想添加一个新节点 D,我需要从节点 A,B, C 移动一些哈希槽到节点 D。同样地,如果我想从集群中移除节点 A,我只需要移动 A 的哈希槽到 B 和 C。 当节点 A 变成空的以后,我就可以从集群中彻底删除它。 因为从一个节点向另一个节点移动哈希槽并不需要停止操作,所以添加和移除节点,或者改变节点持有的哈希槽百分比,都不需要任何停机时间(downtime)。
Q:集群的拓扑结构有没有了解过?集群是怎么连接的?
无中心结构。Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
Q:讲一下Redis主从复制的过程。
从机发送SYNC(同步)命令,主机接收后会执行BGSAVE(异步保存)命令备份数据。
主机备份后,就会向从机发送备份文件。主机之后还会发送缓冲区内的写命令给从机。
当缓冲区命令发送完成后,主机执行一条写命令,就会往从机发送同步写入命令。
更详细的步骤见: https://www.cnblogs.com/expiator/p/9881989.html
Q:讲一下Redis哨兵机制。
下面是Redis官方文档对于哨兵功能的描述:
监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移(Automatic Failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
配置提供者(Configuration Provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
通知(Notification):哨兵可以将故障转移的结果发送给客户端。

缓存

Q:缓存雪崩是什么?
如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。这就是缓存雪崩。
怎么解决缓存雪崩?
解决方法:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。
Q:缓存穿透是什么?
缓存穿透是指查询一个一定不存在的数据。由于缓存不命中,并且出于容错考虑,如果从数据库查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,失去了缓存的意义。
怎么解决缓存穿透?
Q:什么是缓存与数据库双写一致问题?

Zookeeper

Q:Zookeeper的原理是什么?
zab协议。
zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab就进入了恢复模式,当领导者被选举出来,且大多数server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。
Q:Zookeeper有哪些应用场景?
Zookeeper可以作为服务协调的注册中心。还可以做分布式锁(如果没有用过分布式锁就不要说)
Q:Zookeeper为什么能做注册中心?
Zookeeper的数据模型是树型结构,由很多数据节点组成,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听(watch命令)。这些特点决定了zk特别适合作为注册中心
Q:Zookeeper的节点有哪些类型?有什么区别?
临时节点,永久节点。 更加细分就是临时有序节点、临时无序节点、永久有序节点、永久无序节点。  
临时节点: 当创建临时节点的程序停掉之后,这个临时节点就会消失,存储的数据也没有了。
Q:Zookeeper做为注册中心,主要存储哪些数据?
ip、端口,还有心跳机制。
Q:心跳机制有什么用?
Q:Zookeeper的广播模式有什么缺陷?
广播风暴。
Q:Zookeeper是怎么实现分布式锁的?
分布式锁:基于Zookeeper一致性文件系统,实现锁服务。锁服务分为保存独占及时序控制两类。
保存独占:将Zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除自己创建的distribute_lock 节点就释放锁。
时序控制:基于/distribute_lock锁,所有客户端在它下面创建临时顺序编号目录节点,和选master一样,编号最小的获得锁,用完删除,依次方便。
更详细的回答如下:
其实基于Zookeeper,就是使用它的临时有序节点来实现的分布式锁。
原理就是:当某客户端要进行逻辑的加锁时,就在Zookeeper上的某个指定节点的目录下,去生成一个唯一的临时有序节点, 然后判断自己是否是这些有序节点中序号最小的一个,如果是,则算是获取了锁。如果不是,则说明没有获取到锁,那么就需要在序列中找到比自己小的那个节点,并对其调用exist()方法,对其注册事件监听,当监听到这个节点被删除了,那就再去判断一次自己当初创建的节点是否变成了序列中最小的。如果是,则获取锁,如果不是,则重复上述步骤。
当释放锁的时候,只需将这个临时节点删除即可。
Q:讲一下Zookeeper的读写机制。Zookeeper是怎么保持一致性的?
Leader主机负责读和写。
Follower负责读,并将写操作转发给Leader。Follower还参与Leader选举投票,参与事务请求Proposal投票。
Observer充当观察者的角色。Observer和Follower的唯一区别在于:Observer不参与任何投票。
Q:讲一下Zookeeper的选举机制。
Leader不可用时,会重新选举Leader。超过半数的Follower选举投票即可,Observer不参与投票。
Q:你们的zookeeper集群配置了几个节点?
3个节点。注意,zookeeper集群节点,最好是奇数个的。
集群中的zookeeper节点需要超过半数,整个集群对外才可用。
这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来,zookeeper默认采用quorums来支持Leader的选举。
如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2->0;3->1;4->1;5->2;6->2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。

消息队列

Q:为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMq、RocketMQ 都有什么优点和缺点?
消息队列解耦,削峰,限流。
Q:如何保证消息队列的高可用?
Q:如何保证消息不被重复消费?(如何保证消息消费的幂等性)
Q:如何保证消息的可靠性传输?(如何处理消息丢失的问题)
Q:如何保证消息的顺序性?
Q:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
Q:如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。

Kafka

Q:讲一下Kafka。
Kafka的简单理解
Q:Kafka作为消息队列,有哪些优势?
分布式的消息系统。
高吞吐量。即使存储了许多TB的消息,它也保持稳定的性能。
数据保留在磁盘上,因此它是持久的。
Q:Kafka的偏移量是什么?
消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置。等到下次消费时,他会接着上次位置继续消费
Q:Kafka的消费者群组Consumer Group订阅了某个Topic,假如这个Topic接收到消息并推送,那整个消费者群组能收到消息吗?
http://kafka.apache.org/intro
Kafka官网中有这样一句"Consumers label themselves with a consumer group name, and each record published to a topic is delivered to one consumer instance within each subscribing consumer group. "
表示当topic上的record被发送到已订阅的消费者群组里面的一个消费者实例。
Q:Kafka为什么要分区?
实现负载均衡和水平扩展。
Kafka可以将主题(Topic)划分为多个分区(Partition),会根据分区规则选择把消息存储到哪个分区中,只要如果分区规则设置的合理,那么所有的消息将会被均匀的分布到不同的分区中,这样就实现了负载均衡和水平扩展。另外,多个订阅者可以从一个或者多个分区中同时消费数据,以支撑海量数据处理能力。
Q:Kafka如何保证消息的顺序性?
Kafka 可以保证同一个分区里的消息是有序的。也就是说消息发送到一个Partition 是有顺序的。
Q:Kafka消息消费者宕机了,怎么确认有没有收到消息?
ack机制,如果接收方收到消息后,会返回一个确认字符。
Q:讲一下Kafka的ack机制。
request.required.acks有三个值 0 1 -1
0:生产者不会等待broker的ack,这个延迟最低但是存储的保证最弱当server挂掉的时候就会丢数据
1:服务端会等待ack值 leader副本确认接收到消息后发送ack但是如果leader挂掉后他不确保是否复制完成新leader也会导致数据丢失
-1:同样在1的基础上 服务端会等所有的follower的副本受到数据后才会受到leader发出的ack,这样数据不会丢失
仅设置acks=-1也不能保证数据不丢失,当Isr列表中只有Leader时,同样有可能造成数据丢失。要保证数据不丢除了设置acks=-1, 还要保证ISR的大小大于等于2,具体参数设置:
request.required.acks:设置为-1 等待所有ISR列表中的Replica接收到消息后采算写成功;
min.insync.replicas: 设置为大于等于2,保证ISR中至少有两个Replica
Q:Kafka如何避免消息丢失?
Q:Kafka怎么保证可靠性?(存疑)
在Kafka中主要通过ISR机制来保证消息的可靠性。
ISR(in sync replica):是Kafka动态维护的一组同步副本,在ISR中有成员存活时,只有这个组的成员才可以成为leader,内部保存的为每次提交信息时必须同步的副本(acks = all时),每当leader挂掉时,在ISR集合中选举出一个follower作为leader提供服务,当ISR中的副本被认为坏掉的时候,会被踢出ISR,当重新跟上leader的消息数据时,重新进入ISR。
详情见: https://www.jianshu.com/p/ebeaa7593d83
Q:Kafka怎么保证一致性?(存疑)
一致性定义:若某条消息对client可见,那么即使Leader挂了,在新Leader上数据依然可以被读到。
HW-HighWaterMark: client可以从Leader读到的最大msg offset,即对外可见的最大offset, HW=max(replica.offset)
对于Leader新收到的msg,client不能立刻消费,Leader会等待该消息被所有ISR中的replica同步后,更新HW,此时该消息才能被client消费,这样就保证了如果Leader fail,该消息仍然可以从新选举的Leader中获取。
对于来自内部Broker的读取请求,没有HW的限制。同时,Follower也会维护一份自己的HW,Folloer.HW = min(Leader.HW, Follower.offset)
详情见:https://www.jianshu.com/p/f0449509fb11
Q:Kafka怎么处理重复消息?怎么避免重复消费?
一般情况下,kafka重复消费都是由于未正常提交offset造成的。
使用的是spring-Kafka,所以把Kafka消费者的配置enable.auto.commit设为false,禁止Kafka自动提交offset,从而使用spring-Kafka提供的offset提交策略。spring-Kafka中的offset提交策略可以保证一批消息数据没有完成消费的情况下,也能提交offset,从而避免了提交失败而导致永远重复消费的问题。
如何去重:将消息的唯一标识保存起来,每次消费时判断是否处理过即可。
Q:Kafka消息是采用pull模式,还是push模式?
pull模式。
Q:pull模式和push模式,各有哪些特点?
pull模式,准确性?可以较大保证消费者能获取到消息。
push模式,即时性?可以在broker获取消息后马上送达消费者。
Q:讲一下Kafka集群的Leader选举机制。
Kafka在Zookeeper上针对每个Topic都维护了一个ISR(in-sync replica---已同步的副本)的集合,集合的增减Kafka都会更新该记录。如果某分区的Leader不可用,Kafka就从ISR集合中选择一个副本作为新的Leader。

分库分表

Q:数据库如何处理海量数据?
分库分表,主从架构,读写分离
Q:数据库分库分表,何时分?怎么分?
水平分库/分表,垂直分库/分表
水平分库/表,各个库和表的结构一模一样。
垂直分库/表,各个库和表的结构不一样。
Q:读写分离怎么做?
主机负责写,从机负责读。

分布式、高并发场景

Q:在实践中,遇到过哪些并发的业务场景?
秒杀。比如抢商品,抢红包。
Q:如何设计一个秒杀/抢券系统?
可以通过队列配合异步处理实现秒杀。
使用redis的list,将商品push进队列,pop出队列。
异步操作不会阻塞,不会消耗太多时间。
Q:如何提高抢券系统的性能?
使用多个list。
使用多线程从队列中拉取数据。
集群提高可用性。
MQ异步处理,削峰。
Q:秒杀怎么避免少卖或超卖?
redis是单进程单线程的,操作具有原子性,不会导致少卖或者超卖。
另外,也可以设置一个版本号version,乐观锁机制。

系统架构与设计

Q:设计一个红包系统,需要考虑哪些问题,如何解决?
Q:如果让你设计一个消息队列,你会怎么设计?

SpringCloud

Q:你用过SpringCloud的哪些组件?
服务协调,注册中心,熔断,降级,配置中心,网关。
Q:讲一下熔断和降级的区别?
Q:熔断有哪几种方隔离方式?
线程池隔离。信号量隔离。
Q:Zuul能干嘛?除了网关还有哪些?
参考资料:
https://github.com/doocs/advanced-java

java面试题:分布式的更多相关文章

  1. 2019百度阿里Java面试题(基础+框架+数据库+分布式+JVM+多线程)

    前言 很多朋友对面试不够了解,不知道如何准备,对面试环节的设置以及目的不够了解,因此成功率不高.通常情况下校招生面试的成功率低于1%,而社招的面试成功率也低于5%,所以对于候选人一定要知道设立面试的初 ...

  2. 2020年大厂Java面试题(基础+框架+系统架构+分布式+实战)

    前言 作为一个Java开发者,Java架构师应该是大家的一个职业目标了吧. 要成为Java架构师,首先你要是一个高级Java工程师,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得 ...

  3. 18家大厂Java面试题整理了350道(分布式+微服务+高并发)

    一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大 ...

  4. java面试题及答案(转载)

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...

  5. 115个Java面试题和答案——终极列表(下)

    第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...

  6. Java笔试题解答和部分面试题

    面试类  银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...

  7. 100+经典Java面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  8. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络         投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考, ...

  9. 115个Java面试题和答案——终极列表

    from http://www.importnew.com/10980.html#collection http://www.importnew.com/11028.html 下面的章节分为上下两篇, ...

  10. java面试题及答案(基础题122道,代码题19道)

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

随机推荐

  1. python学习笔记_week14

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. s1 import socket def handle_reques ...

  2. GPUImage中对比度调整的实现——GPUImageContrastFilter

    对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,图像越鲜亮,差异范围越小代表对比越小,图像越灰. GPUImage中实现了对比度调整的Filter,其 ...

  3. PHP 获取文件扩展名的五种方式

    第一种 substr(strrchr("http://www.xxx.com/public/abc.jpg", '.'), 1); string strrchr('string', ...

  4. TCP的窗口滑动机制

    TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性.同时滑动窗口机制还体现了TCP面向字节流的设计思路. 可靠:对发送的数据进行确认 流控制:窗口大小随链路变化. 一.t ...

  5. Erlang 笔记

    集成开发环境:IntelliJ IDEA的Erlang插件 教程:www.erlang-cn.com/462.html,寻找erlang程序设计第2版pdf f():释放之前绑定过的所有变量. -ex ...

  6. Java 配置环境变量教程

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  7. 找某個ColumnName在那些Tables

    想找ColumnName叫CRE_USR的欄位在那些Table呢? (For SQL Server) SELECT o.name, o.* FROM syscolumns c INNER JOIN s ...

  8. Android 设备,如何root,执行adb shell,查看设备中的数据库信息等【转】

    原文地址: Android 设备,如何root,执行adb shell,查看设备中的数据库信息等

  9. Hibernate 再接触 一对多单向关联

    在1的方向加多的集合 Group.java package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; i ...

  10. quartz整合spring框架service层对象注入为null解决方案

    Job实现类代码 package cn.itcast.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; imp ...