• 笔记01


    Synchronized(this) 
    锁住该代码块的对象,等访问该对象的线程执行完,其他线程才可以执行。
    Synchronized(xxx.class) 
     锁住该类,所有访问该类的线程,一次只有一个可以执行。
    其他
    A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。 
    B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。 
    C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制
    
    
    package kafka.producer
    
    //kafka默认的分区 进行msg的keyhash分区
    import kafka.utils._
    import org.apache.kafka.common.utils.Utils
    
    @deprecated("This class has been deprecated and will be removed in a future release. " +
                "It has been replaced by org.apache.kafka.clients.producer.internals.DefaultPartitioner.", "0.10.0.0")
    class DefaultPartitioner(props: VerifiableProperties = null) extends Partitioner {
      private val random = new java.util.Random
      
      def partition(key: Any, numPartitions: Int): Int = {
        Utils.abs(key.hashCode) % numPartitions
      }
    }
    
    
    
    
    
    
    
    
    
    
    
    kafka的自定义分区
    import kafka.producer.Partitioner;
    import kafka.utils.VerifiableProperties;
    
    public class KafkaPartitioner implements Partitioner{
    	
    	public KafkaPartitioner(VerifiableProperties properties) {
    	}
    
    	@Override
    	public int partition(Object obj, int numPartitions) {
    		int partition = 0;  
            if (obj instanceof String) {
                String key=(String)obj;  
                int offset = key.lastIndexOf('.');  
                if (offset > 0) {  
                    partition = Integer.parseInt(key.substring(offset + 1)) % numPartitions;  
                }  
            }else{  
                partition = obj.toString().length() % numPartitions;  
            }  
            return partition;
    	}
    }
    
  • 相关阅读:
    第21周六
    第21周五
    第21周四
    第21周三
    C/C++中各种类型int、long、double、char表示范围(最大最小值)
    插入排序
    面向对象的5个基本设计原则
    红黑树
    Cocos2d-x学习笔记(六) 定时器Schedule的简单应用
    SNMP协议具体解释
  • 原文地址:https://www.cnblogs.com/hejunhong/p/10526960.html
Copyright © 2020-2023  润新知