02 2017 档案
摘要:1 array变量 Type[] array_virable_name; 2 array对象 2.1 new Type[] array_virable_name = new Type[NUM]; 2.2 initializer {1,2,3,4} 3 array对象存放的内存 无论是new出的数组对
阅读全文
摘要:1 Vector and ArrayList 它们都是可以随机访问的。它们的区别是Vector是线程安全的,而ArrayList不是线程安全的。 2 HashMap的底层实现机制 2.1 底层数据结构 每一对key-value pair都有一个专门的数据结构来表示,即一个内部类Node<K,V>,
阅读全文
摘要:https://www.smslit.top/2015/11/14/macSTctags-Develop/ ctags插件for sublime text项目和ctags源码项目都在github上。
阅读全文
摘要:1 git fetch git fetch就是把远程分支的最新的版本拉到本地的cache中,但是并不同本地的任何分支合并。要合并的话,还要人工git merge一下。 merge之前需要比较一下两个分支,不是随便就merge的。merge两个分支的时候有很多要注意的地方。 2 git pull gi
阅读全文
摘要:1 将远程分支的commit fetch到本地 git fetch 2 查看远程分支的log git log <remote-branch>
阅读全文
摘要:1 git删除local branch git branch -d <local-branch> 2 git删除远程分支 git push origin --delete <remote-branch-to-be-deleted> //将"--delete <remote-branch-to-be-
阅读全文
摘要:1 detached HEAD state指的是什么 正常情况下,HEAD指向一个branch,而branch又指向一个commit。 detached HEAD state指的是HEAD指针没有指向任何的branch,比如说它指向了一个commit。比如我在某次commit处设置了一个tagXXX
阅读全文
摘要:1 what is spring spring是一个轻量级的容器。 它使用依赖注入技术来构建耦合性很低的系统。 2 what is spring for 用于系统的依赖解耦合。在一个系统中,A类依赖于B类,那么我在使用A类的时候,需要先用B来创建一个对象,然后再创建A类的对象。如果现在我换了一个C类
阅读全文
摘要:1 什么情况下需要新建一个分支 分支说白了就是一个新的版本,比如需要往主线分支中加一个feature,或者修改一个bug,最好是新建一个分支,开发好了,测试好了,然后再合入主线。 新建一个分支是一种开发方法论,是一种非常保守,非常可靠的开发方法。 2 远程仓库为什么需要多个远程分支 远程仓库需要多个
阅读全文
摘要:1 about "origin/master tracks the remote branch" 1.1 what does tracking mean? after "git clone", local "master" branch atomatically tracks the remote
阅读全文
摘要:1 github的提供给用户操作和交流的几个对象 commit, issue, pull request and project 2 commit and commit comment commit就是git里面的普通的提交,而对于任何一次的提交,都可以进行comment。 3 pull reque
阅读全文
摘要:1 git fork git clone原版本的话,只有读权限,是不能直接把修改提交到服务器的。 git fork会创建一个副本,然后就可以在这个上面进行开发了,开发了之后可以通过pull request向原作者发出合并请求,原作者会检查代码,如果接受的话,就可以合并到原版本上。 也就是说,如果自己
阅读全文
摘要:1 简单插入排序 假设前面的n个元素已经排好序了,然后要排下一个元素,就依次遍历比较这n个元素和该元素的大小,将该元素放在比它小和比它大的两个元素之间。n^2 2 冒泡排序 依次比较两个相邻的元素,将大的放在后面,一轮之后,最大的元素就冒泡到最后了。n^2 3 快速排序 拿出一个元素,将它和所有的元
阅读全文
摘要:1 图的表示 1.1 邻接矩阵 一个矩阵表示各个顶点的连接关系,如果1到2是连接的,那么A[0][1]=1。 1.2 邻接链表 将某个定点的所有邻接点放在以其开头的一个链表中。 2 深度优先搜索 2.1 什么是深度优先搜索 先处理根,然后处理它的一个邻接点,然后再处理邻接点的一个邻接点,直到没有邻接
阅读全文
摘要:1 什么是适配器模式 当我要使用一个类时,但是我发现它的接口不是我想要的模样,这个时候,我可以使用适配器模式,新设计一个类,然后这个类提供我想要的接口,在它里面引用原来的类。 2 什么是装饰模式 当我想要给一个类的增加功能时,但是我又不想继承,那么我就可以用装饰模式。 3 适配器模式和装饰模式的区别
阅读全文
摘要:1 什么是代理模式 代理模式就是说,不要你直接访问一个对象,而是通过代理去访问这个对象。 2 什么时候需要用到代理模式 不想把对象全部暴露给客户的时候。 3 代理模式的结构 让代理和被代理者实现同一个接口,然后,代理中含有被代理对象的引用。用户调用代理的方法,间接完成对被代理对象的调用。
阅读全文
摘要:1 单观察者模式 只有一个观察者。 只有一个观察者的时候,会对类的继承关系进行简化。 在主题中定义一个接口,这即时主题约定的和观察者的回调。 主题中只需要保存一个观察者即可,主题需要提供接口让观察者注册自己。 一般情况下观察者实现主题定义的接口,然后把自己注册给主题。 2 多观察者模式 多个观察者,
阅读全文
摘要:1 什么是策略模式 实现同一个功能可以有很多不同的策略,我为这些策略提取统一的接口。不同的算法再用不同的类去实现,这就是策略模式。 比如sort,有很多算法。 2 使用策略模式的时机 策略模式可以让算法独立于使用它的客户而变化,可以任意扩展算法,改进算法,而不需要修改原有的代码。非常符合开闭原则和单
阅读全文
摘要:1 factory pattern本质上就是对对象创建进行抽象 抽象的好处是显然的,可以方便用户去获取对象。 2 使用factory pattern的时机 第一,当一个对象的创建依赖于其它很多对象的时候,即一个对象的创建背后存在很多的依赖关系,如果用户要自己去创建这个对象的话,需要首先花很多时间去理
阅读全文
摘要:1 jvm中是有专门的字符串池的内存空间的,这块空间和栈和堆不同。 2 String s = "string constant"; 这个时候,如果string pool中没有"string constant"这个字符串的话,这个字符串会被放在这个字符串池中。 如果再定义一个变量String t =
阅读全文
摘要:1 assembler instruction depends,有的汇编指令会被assemble成多条机器指令。 2 机器指令 depends,有的机器指令也不是atomic的。 所以,不要希望在单条语句上面实现atomic。
阅读全文
摘要:1 多线程环境下的构造函数调用 构造函数本身并没有隐式的同步,因为各个线程构建的是自己的对象,它们之间是不存在竞争关系的。 2 class loader在load class时被了sychronized java.lang.ClassLoader->loadClass(String name)->s
阅读全文
摘要:1 final关键字修饰不同的java概念,其作用不同。 2 当final修饰变量时 那么这个变量一旦被赋值,就不能再改变了,也就是说,这个变量永远指向同一个地址处。比如一个指向对象的final引用,这个引用永远得指向这个对象,如在代码中修改了,那么编译器会报错,编译不过。但是对这个对象本身的修改是
阅读全文
摘要:1 jvm默认有3类class loader bootstrap class loader,启动类加载器,负责加载${java_home}/jre/lib目录下的库,比如java基础类库包rt.jar extension class loader,扩展类加载器,负责加载${java_home}/jr
阅读全文
摘要:1 path很明显是unix shell的环境变量,比如bash shell,输入一个命令,它会先去path指定的目录下查找是不是有该命令的可执行文件。 2 -classpath 只是用在下面这种不发布jar包的场合。用于告诉虚拟机去该目录下查找用户用到的class文件以及第三方库的位置,虚拟机默认
阅读全文
摘要:jar -cmf file1 file2 file3中的参数c、m、f和file1、file2、file3是一一对应的。 也就是说,file1是输出的.jar文件,file2是往META-INF/MANIFEST.MF中写入键值对的文件,file3是输入文件,一般情况下这是一个目录,是包 名的第一个
阅读全文
摘要:mf就是manifest的缩写。
阅读全文
摘要:1 META是元的意思,比如meta data,元数据。 2 什么是meta data 元数据就是描述其它数据的数据,比如web page中的meta data,包括关键字,对该网页的描述等等。 3 INF是information的缩写 4 META-INF 就是meta information
阅读全文
摘要:1 英文名字 dependence inversion principle 2 本质 上层模块不直接依赖于下层模块,而是上下层模块都依赖于抽象接口。上层模块中保存抽象接口的引用,而下层模块实现该抽象接口。 原理图如下: 原来的依赖关系,上层模块依次依赖下层模块 新的依赖关系,上下层模块都依赖于抽象接
阅读全文