zoukankan      html  css  js  c++  java
  • 笔记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;
    	}
    }
    
  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/hejunhong/p/10526960.html
Copyright © 2011-2022 走看看