1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 ######################################################################## ### Counter ######################################################################## class Counter(dict): '''Dic…
1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 我们从中挑选一些相对常用的方法来举例: 在上面的例子我们可以看出,counter方法返回的是一个字典,它将字符串中出现的所有字符都进行了统计.在这里再介绍一下update方法,这个update方法是将两次统计的结果相加,和字典的update略有不同. 2.有序字典(orderedDict ) orderdDict是对字典类型的补充,他记住了字典元素添加的顺序 我们都知…
String类下的compareTo(String otherString)方法的源码解析 一. 前言 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识, 也让我更加理解了设计者的算法思想. 我也推荐大家多读读源码, 我相信大家也会有意想不到的收获. 二. 实战 今天我分析的是String类的compareTo(String otherString)方法, 以下是我个人的分析观点, 如有哪里分析不到位的地方, 欢迎大家指出, 相互学习, 共同进步 !…
马云说:大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了. 然而,我看到的是:在PC时代搞PC的,移动互联网时代搞移动互联网的,大数据时代搞大数据的,都是同一伙儿人. 我就是一个做业务方向的,而回忆起真正做技术的时光,也就是大数据时代刚来临的时候做搜索了. 搜索用的是solr框架,solr就是包装了lucene实现了近实时索引.所以源头还是lucene.而且lucene是java写的全文检索库,源码是一定要研究一下的. 刚才提到全文检索,要说它的概念先来谈谈数…
本文转载上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/04/382131.html.感谢作者的分享. Layout负责将LoggingEvent中的信息格式化成一行日志信息.对不同格式的日志可能还需要提供头和尾等信息.另外有些Layout不会处理异常信息,此时ignoresThrowable()方法返回false,并且异常信息需要Appender来处理,如PatternLayout. Log4J自身实现了7个Layout类…
JUnit 的概念及用途 JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个开源的单元测试框架.它属于白盒测试,只要将待测类继承 TestCase 类,就可以利用 JUnit 的一系列机制进行便捷的自动测试了. JUnit 的设计精简,易学易用,但是功能却非常强大,这归因于它内部完善的代码结构. Erich Gamma 是著名的 GOF 之一,因此 JUnit 中深深渗透了扩展性优良的设计模式思想. JUnit 提供的 API 既可以让您写出测试结果明确的可重用单元测试…
在java中,Stack类继承了Vector类.Vector类和我们经常使用的ArrayList是类似的,底层也是使用了数组来实现,只不过Vector是线程安全的.因此可以知道Stack也是线程安全的. Vector为Stack提供了大部分的操作,Stack只需要对添加和取出操作加以限制即可,Stack类的底层源码是非常简单的. public E push(E item) { addElement(item); return item; } 首先是新增了一个push操作,这个方法并没有用sync…
查看源码: 这是一个线程控制的类,这个类可以被子类化(继承)在一定的条件限制下,这里有两种方式去明确活动:第一通过传入一个callable 对象也就是调用对象,一种是通过重写这个Thread类的run方法 def  add(): pass print(callable(add))从的上面实现多线程方式可以看出要理解Thread类的实现,我们主要看下构造函数__init__()和run方法这两部分核心代码就可以明白如何清晰的去使用这threading.Thread类的调用实现多线程:2.1先看下构…
前言: Spring用了这么久,虽然Spring的两大核心:IOC和AOP一直在用,但是始终没有搞懂Spring内部是怎么去实现的,于是决定撸一把Spring源码,前前后后也看了有两边,很多东西看了就忘记,于是便决定开个记录 转博,帮助自己记忆,同时也分享给大家. Spring中核心类的介绍: 首先我们看一下一般我们通过如下代码从spring容器中获取实例: File file = new File("fileSystemConfig.xml"); Resource resource…
logger: class logger { }; 在说这个logger类之前,先看1个关键的内部类 Impl private: //logger内部数据实现类Impl,内部含有以下成员变量 //时间戳,logstream数据流,日志级别,源文件行号,源文件名字. class Impl { public: typedef logger::loglevel LogLevel; //构造函数,最重要的地方,负责把日志头信息写入到m_stream中 //m_stream<<日志级别,old_errn…
FixedBuffer和logstream class FixedBuffer:noncopyable { }: class logstream:noncopyable { }: 先说一下包含的头文件有一个StringPiece.h 个人感觉这个stringpiece没有必要实现啊,直接用std::string就好了内部实现的操作,基本上std::string都能完成.后面有关stringpiece我都直接放弃了 const char* data() const { return ptr_; }…
1.bool类 2.int类 3.long类 4.float类 5.str类 6.list类 7.tuple类 8.dict类 9.collections类 Counter类:为hashable对象计数,是字典的子类.引入自2.7. defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键.引入自2.5. OrderedDict类:排序字典,是字典的子类.引入自2.7. namedtuple()函数:命名元组,是一个工厂函数.引入自2.6. deque:双向队列.引入自2.4. 详细…
原文出处:http://www.blogjava.net/DLevin/archive/2012/06/28/381667.html.感谢上善若水的无私分享. 在简单的介绍了Log4J各个模块类的作用后,以下将详细的介绍各个模块的具体作用以及代码实现. Logger类 Logger是对记录日志动作的抽象,它提供了记录不同级别日志的接口,日志信息可以包含异常信息也可以不包含:  1 public void debug(Object message) {  2     if(isLevelEnabl…
前提知识点: 1.Serializable接口 作用:表示可序列化的语义.就是Java提供的通用数据保存和读取接口.任何类型实现了Serializeable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方,也可以用管道来传输到系统的其他地方.在Java中的序列化,只需要实现serializable接口,然后,你可以使用objectOutputStream将该对象保存到文件或者发送到其他主机,所有的non-transient和non-static字段都将被序列化,所有我们想自己处理…
XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinitionReader 中梳理一下资源文件读取.解析及注册的大致脉络,来看下各个类的功能. ResourceLoader: 定义资源加载器,主要用于根据给定的资源文件地址返回对应的 Resource. BeanDefinitionReader: 主要定义资源文件读取并转换为 BeanDefinition…
DefaultListableBeanFactory XmlBeanFactory 继承自 DefaultListableBeanFactory , 而 DefaultListableBeanFactory 是整个 bean 加载的核心部分,是 Spring 注册及加载 bean 的默认实现,而对于 XmlBeanFactory 与 DefaultListableBeanFactory 不同的地方其实是在 XmlBeanFactory 中使用了自定义的 XML 读取器 XmlBeanDefini…
timezone class timezone:public copyable { }: 作用: 感觉有点看不懂,detail内部实现文件类不明白跟时区有什么关系.timezone类主要是完成各个时区之间的转换,感觉自己用不到,一个时区就够了.内部成员变量就一个,是个Data结构体的共享智能指针提供了3个构造函数,TimeZone(const char* zonefile)构造函数,构造函数是explicit的,内置指针不能隐式的转换,只能使用初始化的形式TimeZone(int eastOfU…
exception class exception:public std::exception { }; 作用: 实现了一个异常类,继承于std::exception,主要用于实现打印线程调用栈信息. 成员变量: private: string m_message; string m_stack; 主要含有异常消息以及线程栈信息两个数据成员, 调用栈信息通过currentthread::stackTrace(false)获取. 成员函数: public: exception(string wha…
timestamp class timestamp:public mymuduo::copyable, public boost::equality_comparable<timestamp>, public boost::less_than_comparable<timestamp> { }: 作用: 主要是实现了时间戳的相关操作,例如时间戳的格式化,返回当前时间戳等等. 成员变量: private: int64_t m_microSeconds;//数据成员,表示时间戳的微秒数…
1. Future内部还是用了condition这个锁 2. Cancel # future在执行时,会一直更新这个状态 def cancel(self): """Cancel the future if possible. Returns True if the future was cancelled, False otherwise. A future cannot be cancelled if it is running or has already complet…
future: 未来对象,或task的返回容器 1. 当submit后: def submit(self, fn, *args, **kwargs): with self._shutdown_lock: # lock是线程锁 if self._shutdown: raise RuntimeError('cannot schedule new futures after shutdown') f = _base.Future() # 创建future对象 w = _WorkItem(f, fn,…
date class date:copyable { }: 作用: 此类作用主要是实现年月日和julianDay的互相转换内部最重要的一个数据成员m_julianDayNumber在mymuduo::detail中提供了相互转换的两个函数getJulianDayNumber和getYearMonthDay具体如何转换的内容没有深究.注意构造函数可以用julianday,年月日,struct tm三种类型去初始化,实际上都是年月日和julianDay之间的相互转换.toIosString 返回 格…
countdownlatch class countdownlatch:noncopyable { }; 作用: countdownlatch和mutex,condition一样,用于线程之间的同步,主要用于这样一种情况: 有一组线程,计算线程,IO线程1,IO线程2, 我们规定计算线程必须在所有的IO线程都结束后才能执行. 如果单纯使用mutex,计算线程可能比其他IO线程先抢到mutex,这不符合计算线程最后执行的要求. 但是可以使用条件变量来完成,当然条件变量不能单独使用,需要配套一个mu…
condition class condition:noncopyable { }; 作用: 实现了最简单condtion操作,包括init,destroy,wait,notify,notifyAll,waitforseconds操作,内部数据也很简单,mutexlock& m_mutex和pthread_cond_t m_cond使用方法和std::cond一样 成员变量: private: mutexlock& m_mutex; pthread_cond_t m_cond; 成员函数:…
AtomicIntegerT template<typename T> class atomicTntergerT:public noncopyable { }; 作用: 与std::aotmic<int> 类似,主要实现对 int32_t 和 int64_t 类型的原子操作. 在内部并不是使用互斥锁实现原子性,而是利用__sync_val_compare_and_swap和__sync_fetch_and_add在内部实现原子操作. 成员变量: private: volatile…
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 Android热更新开源项目Tinker源码解析系类之三:so文件热更新 转载请标明本文来源:http://www.cnblogs.com/yyangblog/p/6252855.html更多内容欢迎star作者的github:https://github.com/LaurenceYang/artic…
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:https://github.com/Tencent/tinker 首先向微信致敬,感谢毫无保留的开源出了这么一款优秀的热更新项目. 因Tinker支持Dex,资源文件及so文件的热更新,本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更…
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源热更新 Android热更新开源项目Tinker源码解析系类之三:so热更新 转载请标明本文来源:http://www.cnblogs…
转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代码效果不好...... 为了满足实时性的要求,前面文章中介绍过快速提取特征点算法Fast,以及特征描述子Brief.本篇文章介绍的ORB算法结合了Fast和Brief的速度优势,并做了改进,且ORB是免费. Ethan Rublee等人2011年在<ORB:An Efficient Alternat…
一 简介 Integer是int基本类型的包装类,同样继承了Number类,实现了Comparable接口,String类中的一些转化方法就使用了Integer类中的一些API,且fianl修饰不可继承: public final class Integer extends Number implements Comparable<Integer> { Number传送门 二 源码解析 Integer类API比较多也比较重要,分开几个部分解析: 1 属性 // 包装类的int类型值 priva…