精华内容
下载资源
问答
  • 某Java大佬在地表最强Java企业(阿里)面试总结
    万次阅读 多人点赞
    2020-08-23 19:48:06

    面试题真的是博大精深,也通过这个面试题学到了很多东西,很多笔者也不是很懂,如有描述错误的地方还望大佬赐教,
    每一次面试都可能问到相同的问题,一面问到,二三面还可能会问到,笔者认为这一点是整理这篇面试题收获最大的一点。

    目录:

    一面

    1.1、HashMap和Hashtable的区别
    1.2、实现一个保证迭代顺序的HashMap
    1.3、 说一说排序算法,稳定性,复杂度
    1.4、 说一说GC
    1.5、 可以保证的实习时长
    1.6、 职业规划

    二面

    2.1、 自我介绍。
    2.2、 JVM如何加载一个类的过程,双亲委派模型中有哪些方法?
    2.3、 HashMap如何实现的?
    2.4、 HashMap和Concurrent HashMap区别, Concurrent HashMap 线程安全吗, Concurrent HashMap如何保证 线程安全?
    2.5、 HashMap和HashTable 区别,HashTable线程安全吗?
    2.6、 进程间通信有哪几种方式?
    2.7、 JVM分为哪些区,每一个区干吗的?
    2.8、 JVM如何GC,新生代,老年代,持久代,都存储哪些东西?
    2.9、 GC用的引用可达性分析算法中,哪些对象可作为GC Roots对象?
    2.10、 快速排序,过程,复杂度?
    2.11、 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
    2.12、 TCP如何保证可靠传输?三次握手过程?
    2.13、 TCP和UDP区别?
    2.14、 滑动窗口算法?
    2.15、 Linux下如何进行进程调度的?
    2.16、 Linux下你常用的命令有哪些?
    2.17、 操作系统什么情况下会死锁?
    2.18、 常用的hash算法有哪些?
    2.19、 什么是一致性哈希?
    2.20、 如何理解分布式锁?
    2.21、 数据库中的范式有哪些?
    2.22、 数据库中的索引的结构?什么情况下适合建索引?
    2.23、 Java中的NIO,BIO,AIO分别是什么?
    2.24、 用什么工具调试程序?JConsole,用过吗?
    2.25、 现在JVM中有一个线程挂起了,如何用工具查出原因?
    2.26、 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?
    2.27、 同步和异步有什么区别?
    2.28、 线程池用过吗?
    2.29、 如何创建单例模式?说了双重检查,他说不是线程安全的。如何高效的创建一个线程安全的单例?
    2.30、 concurrent包下面,都用过什么?
    2.31、 常用的数据库有哪些?redis用过吗?
    2.32、 了解hadoop吗?说说hadoop的组件有哪些?说下mapreduce编程模型。
    2.33、 你知道的开源协议有哪些?
    2.34、 你知道的开源软件有哪些?
    2.35、 你最近在看的书有哪些?
    2.36、 你有什么问题要问我吗?
    2.37、 了解哪些设计模式?说说都用过哪些设计模式
    2.38、 如何判断一个单链表是否有环?
    2.39、 操作系统如何进行分页调度?
    2.40、 匿名内部类是什么?如何访问在其外面定义的变量?

    三面

    3.1、 自我介绍,做过什么项目。
    3.2、java虚拟机的区域如何划分,
    3.3、 双亲委派模型中,从顶层到底层,都是哪些类加载器,分别加载哪些类?
    3.4、 有没有可能父类加载器和子类加载器,加载同一个类?如果加载同一个类,该使用哪一个类?
    3.5、 HashMap的结构,get(),put()是如何实现的?
    3.6、 ConcurrentHashMap的get(),put(),又是如何实现的?ConcurrentHashMap有哪些问题? ConcurrentHashMap的锁是读锁还是写锁?
    3.7、 sleep()和wait()分别是哪个类的方法,有什么区别?synchronized底层如何实现的?用在代码块和方法上有什么区别?
    3.8、 什么是线程池?如果让你设计一个动态大小的线程池,如何设计,应该有哪些方法?
    3.9、 什么是死锁?JVM线程死锁,你该如何判断是因为什么?如果用VisualVM,dump线程信息出来,会有哪些信息?
    3.10、 查看jvm虚拟机里面堆、线程的信息,你用过什么命令?
    3.11、 垃圾回收算法有哪些?CMS知道吗?如何工作的?
    3.12、 数据库中什么是事务?事务的隔离级别?事务的四个特性?什么是脏读,幻读,不可重复读?
    3.13、 数据库索引的结构有哪些? 介绍B+树的结构。
    3.14、 数据库中的分页查询语句怎么写?
    3.15、 什么是一致性哈希?用来解决什么问题?
    3.16、 Redis的存储结构,或者说如何工作的,与mysql的区别?有哪些数据类型?
    3.17、 项目中用到redis,为什么选用redis,了解其他NoSQL数据库吗?在你的项目中是如何运用redis的?key是什么,value是什么?
    3.18、 归并排序的过程?时间复杂度?空间复杂度?你平常用什么排序?快速排序。说说在那些场景下适用,哪些场景下不适用。
    3.19、 Solr是如何工作的?

    一面

    1.1、HashMap和Hashtable的区别

    继承:
    Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

    锁:
    Hashtable 中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。

    方法:
    HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。
    Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。

    是否可以为null:
    Hashtable中,key和value都不允许出现null值。
    HashMap中,null可以作为键,这样的键只有一个。
    Hashtable中有类似put(null,null)的操作,编译同样可以通过,因为key和value都是Object类型,但运行时会抛出NullPointerException异常,这是JDK的规范规定的。
    Tips:
    当get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

    遍历:
    Hashtable、HashMap都使用了 Iterator。但是,Hashtable还使用了Enumeration的方式 。
    计算Hash值:
    HashTable直接使用对象的hashCode。
    HashMap的Hash值:(key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    容量:
    HashTable在不指定容量的情况下的默认容量为11,而HashMap为16,
    Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。
    Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。

    1.2、实现一个保证迭代顺序的HashMap

    使用HashMap的一个子类LinkedHashMap(顺序遍历的HashMap)进行研究

    放入方法中:
    重写了最关键的Node<K, V> newNode(int hash, K key, V value, Node next)方法,该方法首先创建一个HashMap.Node的子类LinkedHashMap.Entry,它比Node多了两个指针Entry<K, V> before, after;//用于保存前后两个节点的信息。

    Tips:
    LinkedHashMap拥有两个瞬时的属性
    transient LinkedHashMap.Entry<K,V> tail;//用于保存上一个元素,即表尾;
    transient LinkedHashMap.Entry<K, V> head;//用于保存第一个元素,即表头。

    遍历:
    使用LinkedEntryIterator迭代器进行遍历,继承于 abstract class LinkedHashIterator抽象类。该迭代器拥有两个Entry的指针nextcurrent,并结合Entry中的beforeafter指针,实现了LinkedHashMap中元素的顺序遍历

    LinkedHashIterator的nextNode方法使用了LinkedHashMap.Entry<K, V>的after属性,使得iterator的遍历按照放入顺序进行的。

    取值方法:
    LinkedHashMap重写了Map接口的V get(Object key)方法,该方法分两个步骤:

    1. 调用父类HashMap的getNode(hash(key), key)方法,获取value;
    2. 如果accessOrder(访问后重排序)为true(默认为false),那么移动所访问的元素到表尾,并修改head和tail的值。

    1.3、 说一说排序算法,稳定性,复杂度

    在这里插入图片描述
    这个东西还是面试前把每个排序算法都看一看比较好

    1.4、 说一说GC

    堆(新生代和老生代)是Java虚拟机进行垃圾回收的主要场所,其次要场所是方法区(永久代)
    在堆中进行垃圾回收分为新生代和老生代;将新生代分成了三个独立的区域(这里的独立区域只是一个相对的概念,并不是说分成三个区域以后就不再互相联合工作了),
    分别为:Eden区、From Survivor区以及To Survivor,而Eden区分配的内存较大,其他两个区较小,每次使用Eden和其中一块Survivor。

    在进行垃圾回收时,将Eden和Survivor中还存活着的对象进行一次性地复制到另一块Survivor空间上,直到其两个区域中对象被回收完成,
    当Survivor空间不够用时,需要依赖其他老年代的内存进行分配担保。当另外一块Survivor中没有足够的空间存放上一次新生代收集下来的存活对象时,这些对象将直接通过分配担保机制进入老生代,大对象和长期存活的对象也会直接进入老年代。
    如果老生代的空间也被占满,当来自新生代的对象再次请求进入老生代时就会报OutOfMemory异常。

    新生代中的垃圾回收频率高, ,保存在JVM的方法区(永久代)中的对象一般不会被回收。
    其永久代进行垃圾回收的频率就较低,速度也较慢。
    永久代的垃圾收集主要回收废弃常量和无用类。 
    
    判断一个类是否被回收,则需同时满足的条件: 
    该类所有的实例和ClassLoader都已经被回收。
    该类的对象没有被引用,无法通过反射访问,这里说的是可以回收而不是必然回收。
      
    

    大多数情况下,对象在新生代Eden区中分配,当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC;
    同理,当老年代中没有足够的内存空间来存放对象时,虚拟机会发起一次Major GC/Full GC。只要老年代的连续空间大于新生代对象总大小或者历次晋升的平均大小就会进行Minor GC,否则将进行Full CG。

    虚拟机通过对象年龄计数器来判断存放在哪:
    如果对象在Eden出生并经过一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将该对象的年龄设为1。
    对象每在Survivor中熬过一次Minor GC,年龄就增加1岁,当他的年龄增加到最大值15(MaxTenuringThreshold)时,就将会被晋升到老年代中。
    如果在Survivor空间中所有相同年龄的对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无需等到MaxTenuringThreshold中要求的年龄。

    Jdk8开始废弃永久代:
    This is part of the JRockit and Hotspot convergence effort. JRockit customers do not need to configure the permanent generation (since JRockit does not have a permanent generation) and are accustomed to not configuring the permanent generation.
    (移除永久代是为融合HotSpot JVM与 JRockit VM而做出的努力,因为JRockit没有永久代,不需要配置永久代。)
    由于永久代内存经常不够用或发生内存泄露,爆出异常java.lang.OutOfMemoryError: PermGen
    字符串存在永久代中,容易出现性能问题和内存溢出。
    类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
    永久代会为GC带来不必要的复杂度,而且回收效率偏低。

    1.5、 可以保证的实习时长

    一般都是半年到一年,(太少的话,刚教会了你,你就可能走了,太多的话也不现实)
    还有可能问到什么时候去上班,建议的话,就是下个月,或者两周后,今天面试明天上班,肯定准备的不充分。(问这个的话,大多都是有个项目什么的着急要人,然后面试官用你应付,)

    1.6、 职业规划

    其实这个问题不只是回答面试官,更是回答自己,为什么做,想怎么做……

    说明自己对岗位的理解和从事这份工作的原因。
    说明自己愿意为这份工作付出努力。
    说明自己长远的目标和规划。

    下面以产品经理为例子回答:
    互联网行业是一个高速发展的行业,同时也有大量创新和尝试的机会(阐述自己看好行业)。
    而产品经理则是互联网企业的核心岗位之一,产品经理负责用户需求分析、竞品分析、产品设计和上下层需求的沟通,需要超强的逻辑思考和分析能力、用户洞察能力和沟通协作能力。(阐述自己对岗位的理解)。
    而我毕业于XXX大学,在大学里曾参加XXX产品设计比赛,拿下了XXX的成绩,个人非常擅长思考和分析问题,同时能处理好和团队成员的沟通协作…(阐述自己适合这个工作)。

    我认为自己非常适合这个岗位,为此,我也愿意付出努力。
    在过去,我曾阅读过XXX本产品书籍,自己设计过3款产品的原型,有一款在自己的努力下成功上线,并通过持续获取用户反馈,收获了XXX万的用户。(表达自己过去的努力)
    入职以后,我希望能从助理开始,系统学习产品的基本功,在一年的时间里面,成功掌握主流的产品设计方法论(表达自己愿意付出的努力)。
    我知道,优秀的产品经理不仅仅需要掌握产品设计的方法,还需要XXXX。
    我会努力培养自己的业务思维,站在全局业务的角度去思考和解决问题,为团队做好表率…(表达自己大致的努力方向)。

    每个产品经理都有自己的目标,我也一样。
    我希望在我的努力之下,在两年以后,能够独挡一面,负责好一个版块的功能;
    在三到五年左右,可以负责好一个产品的规划、设计和优化;
    在未来的五到八年,可以做好一个产品的全局规划、团队管理等等…

    二面

    2.1、 自我介绍。

    自我介绍在三到五分钟最好
    一两句话概括自己名字学校什么的,主学的什么,对什么有研究,了解什么(切忌:尽量别说“精通”),然后说一下以前做过的项目(具体说一些自己做的有技术的),或者什么别的奖项,然后谈一下自己对公司的了解以及对未来的规划,等等。(百度有很多,随便搜搜)

    2.2、 JVM如何加载一个类的过程,双亲委派模型中有哪些方法?

    类加载过程:
    加载
    (通过一个类的全限定名获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区域的运行时数据结构,在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区域数据的访问入口)、
    验证
    (验证阶段作用是保证Class文件的字节流包含的信息符合JVM规范,不会给JVM造成危害,如果验证失败,就会抛出一个java.lang.VerifyError异常或其子类异常。
    1.文件格式验证:
    验证字节流文件是否符合Class文件格式的规范,并且能被当前虚拟机正确的处理。
    2.元数据验证:
    是对字节码描述的信息进行语义分析,以保证其描述的信息符合Java语言的规范。
    3.字节码验证:
    主要是进行数据流和控制流的分析,保证被校验类的方法在运行时不会危害虚拟机。
    4.符号引用验证:
    符号引用验证发生在虚拟机将符号引用转化为直接引用的时候,这个转化动作将在解析阶段中发生。)、
    准备
    (准备阶段为(static)变量(不包括类的实例)分配内存并设置类变量的初始化,此初始化并不是赋值static int num =1,这时得num为0,并不是1)、
    解析
    (解析过程是将常量池内的符号引用替换成直接引用(类或接口的解析、字段解析、方法解析、接口方法解析。))、
    初始化
    (这里才是赋值阶段)
    使用过程:新线程—程序计数器----jvm栈执行(对象引用)-----堆内存(直接引用)----方法区。
    卸载靠GC

    双亲委派模型中方法:
    双亲委派是指如果一个类收到了类加载的请求,不会自己先尝试加载,先找父类加载器去完成。当顶层启动类加载器表示无法加载这个类的时候,子类才会尝试自己去加载。当回到最开的发起者加载器还无法加载时,并不会向下找,而是抛出ClassNotFound异常。

    方法:启动(Bootstrap)类加载器,标准扩展(Extension)类加载器,应用程序类加载器(Application ),上下文(Custom)类加载器。意义是防止内存中出现多份同样的字节码 。

    1)启动类加载器(Bootstrap ClassLoader):
    负责加载JAVA_HOME\lib目录中并且能被虚拟机识别的类库到JVM内存中,如果名称不符合的类库即使放在lib目录中也不会被加载。该类加载器无法被Java程序直接引用。
    2)扩展类加载器(Extension ClassLoader):
    按《深入理解java虚拟机》这本书上所说,该加载器主要是负责加载JAVA_HOME\lib\ext目录中的类库,但是貌似在JDK的安装目录下,没看到该指定的目录。该加载器可以被开发者直接使用。
    3)应用程序类加载器(Application ClassLoader):
    该类加载器也称为系统类加载器,它负责加载用户类路径(Classpath)上所指定的类库,开发者可以直接使用该类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。

    2.3、 HashMap如何实现的?

    关于HashMap还是看一下这一篇比较好

    HashMap的底层是数组+链表,(很多人应该都知道了)

    JDK1.7的是数组+链表
    首先是一个数组,然后数组的类型是链表
    元素是头插法
    JDK1.8的是数组+链表 或者 数组+红黑树
    首先是一个数组,然后数组的类型是链表

    在链表的元素大于8的时候,会变成红黑树
    (当链表长度大于8并且数组长度大于64时,才会转换为红黑树。
    如果链表长度大于8,但是数组长度小于64时,还是会进行扩容操作,不会转换为红黑树。因为数组的长度较小,应该尽量避开红黑树。因为红黑树需要进行左旋,右旋,变色操作来保持平衡,
    所以当数组长度小于64,使用数组加链表比使用红黑树查询速度要更快、效率要更高。 )

    在红黑树的元素小于6的时候会变成链表
    (这里需要注意,不是元素小于6的时候一定会变成链表,只有resize的时候才会根据UNTREEIFY_THRESHOLD 进行转换,同样也不是到8的时候就变成红黑树(不是等到扩容的时候) 链表与红黑树的转换详情)
    元素进行尾插

    2.4、 HashMap和Concurrent HashMap区别, Concurrent HashMap 线程安全吗, Concurrent HashMap如何保证 线程安全?

    关于HashMap还是看一下这一篇比较好

    使用ConcurrentHashMap(线程安全),
    JDK1.7的是分段数组,有Segment锁(继承于ReentrantLock)加速一小段保证并发
    JDK1.8 是和HashMap一样了,数组+链表(或者红黑树)
    Synchronized(锁)and CAS(compare and swap)
    (JVM在1.6对Synchronize的优化很好)

    CAS通俗易懂,比较并替换
    (CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做)
    (无锁化的修改值的操作,他可以大大降低锁代理的性能消耗。这个算法的基本思想就是不断地去比较当前内存中的变量值与你指定的 一个变量值是否相等,如果相等,则接受你指定的修改的值,否则拒绝你的操作。因为当前线程中的值已经不是最新的值,你的修改很可能会覆盖掉其他线程修改的结果。这一点与乐观锁,SVN的思想是比较类似的)

    2.5、 HashMap和HashTable 区别,HashTable线程安全吗?

    1.1、HashMap和Hashtable的区别
    HashTable(线程安全)就是把HashMap套上了一个Synchronized

    2.6、 进程间通信有哪几种方式?

    管道、消息队列、信号量、共享内存、套接字
    无名管道( pipe ):
    管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

    高级管道(popen):
    将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。

    有名管道 (named pipe) :
    有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

    消息队列( message queue ) :
    消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

    信号量( semophore ) :
    信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

    信号 ( sinal ) :
    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

    共享内存( shared memory ) :
    共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

    套接字( socket ) :
    套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

    2.7、 JVM分为哪些区,每一个区干吗的?

    线程独占 : 栈 , 本地方法栈 ,程序计数器
    线程共享 : 堆 , 方法区

    程序计数器PC
    线程私有的
    它可以看做是当前线程所执行的字节码的行号指示器
    内存区域中唯一一个没有规定任何OutOfMemoryError的区域

    Java虚拟机栈
    线程私有的
    每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息
    如果线程请求的栈深度大于虚拟机所允许的深度,将抛StackOverFlowError异常;
    如虚拟机扩展时仍无法申请到足够的内存,就会抛出OutOfMemoryError异常

    本地方法栈
    与虚拟机栈非常相似,区别是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为虚拟机使用Native方法服务
    也会抛出StackOverFlowError和OutOfMemoryError异常

    Java堆
    线程共享的
    Java堆是GC管理的主要区域
    在虚拟机启动时创建
    存放对象实例,几乎所有的对象实例和数组都在这里分配内存。
    如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常

    方法区
    线程共享的
    用于存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码等数据
    当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常

    运行时常量池
    是方法区的一部分
    用于存放编译器生成的各种字面量和符号引用
    相对于Class文件常量池的一个重要特征是,具备动态性
    运行时常量池是方法区的一部分,自然受到方法区内存的限制。当常量池无法再申请到内存时会抛出OutOfMemoryError异常

    2.8、 JVM如何GC,新生代,老年代,持久代,都存储哪些东西?

    1.4、 说一说GC

    2.9、 GC用的引用可达性分析算法中,哪些对象可作为GC Roots对象?

    可达性分析算法的思想:
    从一个被称为GC Roots的对象开始向下搜索,如果一个对象到GC Roots没有任何引用链相连时,则说明此对象不可用。
    在java中可以作为GC Roots的对象有以下几种:
    虚拟机栈中引用的对象、方法区类静态属性引用的对象、方法区常量池引用的对象、本地方法栈JNI引用的对象

    虽然这些算法可以判定一个对象是否能被回收,但是当满足上述条件时,一个对象 不一定会被回收。当一个对象不可达GC Roots时,这个对象并不会马上被回收,而是处于一个死缓的阶段,若要被真正的回收需要经历两次标记。如果对象在可达性分析中没有与GC Roots的引用链,那么此时就会被第一次标记并且进行一次筛选,筛选的条件是是否有必要执行finalize()方法。当对象没有覆盖finalize()方法或者已经被虚拟机调用过,那么就认为是没必要的。

    如果该对象有必要执行finalize()方法,那么这个对象将会放在一个称为F-Queue的队列中,虚拟机会触发一个finalize()线程去执行,此线程是低优先级的,并且虚拟机不会承诺一直等待它运行完,这还是因为如果finalize()执行缓慢或者发生了死锁,那么就会造成F-Queue队列一直等待,造成了内存回收系统的崩溃。GC对处于F-Queue中的对象进行第二次被标记,这时,该对象将被移除“即将回收”集合,等待回收。

    2.10、 快速排序,过程,复杂度?

    //快速排序
    void quick_sort(int s[], int l, int r)
    {
        if (l < r)
        {
            //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
            int i = l, j = r, x = s[l];
            while (i < j)
            {
                while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
                    j--;  
                if(i < j) 
                    s[i++] = s[j];
                
                while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
                    i++;  
                if(i < j) 
                    s[j--] = s[i];
            }
            s[i] = x;
            quick_sort(s, l, i - 1); // 递归调用 
            quick_sort(s, i + 1, r);
        }
    }
    

    快速排序,分治递归,对于每一段做如下处理:
    从右向左第一个小于x的数放在原来左位置+1得那个地方,相反,从左向右第一个大于x的数放到原来右位置-1,一直到坐位置》=右位置,然后中间位置=原来左面的那个位置的数,在递归调用(l,i-1)和(i+1,r)

    2.11、 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。

    对于每一个结点来说,子树和右子树都是二叉平衡树,左右子树的高度差不能大于1,如果插入删除使得高度差大于1了,就要进行旋转操作
    插入:
    如果有当前结点就返回false,就插入,如果还是二叉平衡树就返回true,插入的过程中如果不符合条件,就左旋右旋处理
    删除:
    (1)删除节点没有左子树,这种情况直接将删除节点的父节点指向删除节点的右子树。
    (2)删除节点没有右子树,这种情况直接将删除节点的父节点指向删除节点的左子树。
    (3)删除节点左右子树都存在,可以采用两种方式,
    1:让删除节点左子树的最右侧节点代替当前节点
    2:让删除节点右子树的最左侧节点代替当前节点

    2.12、 TCP如何保证可靠传输?三次握手过程?

    TCP为了提供可靠传输:
    (1)首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,从而保证建立的传输信道是可靠的。
    (2)其次,TCP采用了连续ARQ协议(回退N,Go-back-N;超时自动重传)(自动重传请求(Automatic Repeat-reQuest,ARQ))来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。
    (3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
    第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
    第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

    2.13、 TCP和UDP区别?

    TCP与UDP区别总结
    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
    3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
    4.每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。
    5、TCP对系统资源要求较多,UDP对系统资源要求较少。
    为什么UDP有时比TCP更有优势?
    UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。
    (1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
    (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。
    采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

    2.14、 滑动窗口算法?

    大概意思:在一个数组或者其他链表中,确认左端点和右端点,这中间用和或者其他的存起来,一个一个的向右移动右端点,这个过程中可能因不符合条件要把左端点也右移,在这个过程中一直记录最大值或者最小值,(向右移动左端点就是在这个范围的和或者其他记录的数值删去左端点这个值)

    2.15、 Linux下如何进行进程调度的?

    凉凉…………(这个不会,看也看不懂的那种)
    1.先来先服务调度算法
      先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,
    每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪
    队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
    该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
    2、基于优先级调度 (Priority Scheduling)
      在优先级调度算法中,每个进程都关联一个优先级,内核将CPU分配给最高优先级的进程。具有相同优先级的进程,按照
    先来先服务的原则进行调度。
    Aging就是指逐渐提高系统中长时间等待的进程的
    优先级。我们可以每15分钟将等待进程的优先级加1。最终
    经过一段时间,即便是拥有最低优先级的进程也会变成系统中最高优先级的进程,从而被执行。

    优先级调度可以抢占式或者非抢占式的。当一个进程在Ready队列中时,内核将它的优先级与正在CPU上执行的进程的优先级
    进行比较。当发现这个新进程的优先级比正在执行的进程高时:对于抢占式内核,新进程会抢占CPU,之前正在执行的进程
    转入Ready队列;对于非抢占式内核,新进程只会被放置在Ready队列的头部,不会抢占正在执行的进程。
    3、短进程优先(SCBF–Shortest CPU Burst First)
      最短CPU运行期优先调度算法(SCBF–Shortest CPU Burst First)
    该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。
    最短作业优先调度是优先级调度的特例。在优先级调度中我们根据进程的优先级来进行调度,在最短作业优先调度中我们
    根据作业的执行时间长短来调度。
    4、轮转法 (Round-Robin Scheduling) (RR)
      前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。
    简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪
    队列中所有进程均可获得一个时间片的处理机而运行。多级队列方法:将系统中所有进程分成若干类,每类为一级。
      RR调度算法转为分时系统设计,它与FCFS很像,但是加入了抢占。具体调度过程是:内核从Ready队列中选取第一个进程,
    将CPU资源分配给它,并且设置一个定时器在一个时间片后中断该进程,调度Ready队列中的下一进程。很明显,RR调度
    算法是抢占式的,并且在该算法的调度下,没有一个进程能够连续占用CPU超过一个时间片,从而达到了分时的目的。
    5、高响应比优先调度算法
      (1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业.
      (2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务.
      (3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高, 从而也可获得处理机.
      该算法照顾了短作业,且不会使长作业长期得不到服务
    6、抢占式调度算法

    1. 非抢占式调度算法
      为每一个被控对象建立一个实时任务并将它们排列成一轮转队列,调度程序每次选择队列中的第一个任务投入运行.该任务完成后便把它挂在轮转队列的队尾等待下次调度运行.
    2. 非抢占式优先调度算法.
      实时任务到达时,把他们安排在就绪队列的对首,等待当前任务自我终止或运行完成后才能被调度执行.
    3. 抢占式调度算法
      1)基于时钟中断的抢占式优先权调度算法.
      实时任务到达后,如果该任务的优先级别高于当前任务的优先级并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务.
      2)立即抢占的优先权调度算法.
      在这种调度策略中,要求操作系统具有快速响应外部时间中断的能力.一旦出现外部中断,只要当前任务未处于临界区便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务,实时进程调度,实时进程抢占当前。

    2.16、 Linux下你常用的命令有哪些?

    这个最好是多用用比较好,直接跳过看一下个题

    1、显示日期的指令: date
    2、显示日历的指令:cal
    3、简单好用的计算器:bc
    怎么10/100会变成0呢?这是因为bc预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个number就是小数点位数,
    4、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
    [Tab]按键—具有『命令补全』不『档案补齐』的功能
    [Ctrl]-c按键—让当前的程序『停掉』
    [Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
    5、man
    退出用q,
    man -f man
    6、数据同步写入磁盘: sync
    输入sync,那举在内存中尚未被更新的数据,就会被写入硬盘中;所以,这个挃令在系统关机戒重新启劢乀前, 径重要喔!最好多执行几次!
    7、惯用的关机指令:shutdown
    此外,需要注意的是,时间参数请务必加入指令中,否则shutdown会自动跳到 run-level 1 (就是单人维护的登入情况),这样就伤脑筋了!底下提供几个时间参数的例子吧:
    重启,关机: reboot, halt,poweroff
    8、切换执行等级: init
    Linux共有七种执行等级:
    –run level 0 :关机
    –run level 3 :纯文本模式
    –run level 5 :含有图形接口模式
    –run level 6 :重新启动
    使用init这个指令来切换各模式:
    如果你想要关机的话,除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的指令来关机:
    9、改变文件的所属群组:chgrp
    10、改变文件拥有者:chown
    他还可以顸便直接修改群组的名称
    11、改变文件的权限:chmod
    权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。
    –数字类型改变档案权限:
    –符号类型改变档案权限:
    12、查看版本信息等
    13、变换目录:cd
    14、显示当前所在目录:pwd
    15、建立新目录:mkdir
    不建议常用-p这个选项,因为担心如果你打错字,那么目录名称就回变得乱七八糟的
    16、删除『空』的目录:rmdir
    17、档案与目录的显示:ls
    18、复制档案或目录:cp
    19、移除档案或目录:rm
    20、移动档案与目录,或更名:mv
    21、取得路径的文件名与目录名:basename,dirname
    22、由第一行开始显示档案内容:cat
    23、从最后一行开始显示:tac(可以看出 tac 是 cat 的倒着写)
    24、显示的时候,顺道输出行号:nl
    25、一页一页的显示档案内容:more
    26、与 more 类似,但是比 more 更好的是,他可以往前翻页:less
    27、只看头几行:head
    28、只看尾几行:tail
    29、以二进制的放置读取档案内容:od
    30、修改档案时间或新建档案:touch
    31、档案预设权限:umask
    32、配置文件档案隐藏属性:chattr
    33、显示档案隐藏属性:lsattr
    34、观察文件类型:file
    35、寻找【执行挡】:which
    36、寻找特定档案:whereis
    37、寻找特定档案:locate
    38、寻找特定档案:find
    39、压缩文件和读取压缩文件:gzip,zcat
    40、压缩文件和读取压缩文件:bzip2,bzcat
    41、压缩文件和读取压缩文件:tar

    2.17、 操作系统什么情况下会死锁?

    死锁的4个必要条件
    (1) 互斥条件: 一个资源每次只能被一个进程使用。
    (2) 请求与保持条件: 一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    (3) 不剥夺条件: 进程已获得的资源,在末使用完之前,不能强行被剥夺。
    (4) 循环等待条件: 若干进程之间形成一种头尾相接的循环等待资源关系。
    这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

    竞争不可剥夺资源
    在系统中所配置的不可剥夺资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷于僵局。
    竞争临时性资源
    上面所说的打印机资源属于可顺序重复使用型资源,称为永久资源。还有一种所谓的临时资源,这是指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,

    2.18、 常用的hash算法有哪些?

    加法Hash;位运算Hash;乘法Hash;除法Hash;查表Hash;混合Hash;
    

    2.19、 什么是一致性哈希?

    一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织
    圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,
    0点的左侧是2的32次方-1,把这个圆环叫做Hash环
    然后把服务器ip或者主机名字作为关键字Hash,每个服务器都能确定位置,把数据进行相同的Hash算出的位置,顺时针访问的第一个就是对应的服务器

    一致性Hash算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。

    2.20、 如何理解分布式锁?

    分布式锁: 甲乙两人购买时剩余量都显示一个,如果同时下单可能会出现问题,这时就需要用到分布式锁
    分布式锁是实现有序调度不同的进程,解决不同进程之间相互干扰的问题的技术手段

    分布式锁的应具备的条件
    在分布式系统环境下,分布式锁在同一个时间仅能被同一个进程访问
    高可用的获取/释放锁
    高性能的获取/释放锁
    具备锁的重入性
    具备锁的失效机制,防止死锁
    具备非阻塞锁的特性,即使没有获取锁也能直接返回结果

    分布式锁的实现有哪些
    mechache:
    利用mechache的add命令,改命令是原子性的操作,只有在key 不存在的情况下,才能add成功,也就意味着线程拿到了锁
    Redis:
    和Mechache的实现方法相似,利用redis的setnx命令,此命令同样是原子性的操作,只有在key不存在的情况下,add成功
    zookeeper:
    利用他的顺序临时节点,来实现分布式锁和等待队列,zookeeper的设计初衷就是为了实现分布式微服务的

    使用Redis实现分布式锁的思路
    先去redis中使用setnx(商品id,数量) 得到返回结果
    这里的数量无所谓,它的作用就是告诉其他服务,我加上了锁
    发现redis中有数量,说明已经可以加锁了
    发现redis中没有数据,说明已经获得到了锁
    解锁: 使用redis的 del商品id
    锁超时, 设置exprie 生命周期,如30秒, 到了指定时间,自定解锁
    三个致命问题
    非原子性操作:setnx,宕机,expire
    因为 setnx和expire不是原子性的,要么都成功要么都失败, 一旦出现了上面的情况,就会导致死锁出现
    redis提供了原子性的操作 set ( key , value , expire)
    误删锁
    假如我们的锁的生命事件是30秒,结果我在30s内没操作完,但是锁被释放了
    jvm2拿到了锁进行操作
    jvm1 操作完成使用del,结果把jvm2 的锁删除了
    解决方法, 在删除之前,判断是不是自己的锁
    redis提供了原子性的操作 set ( key ,threadId, expire)
    超时为完成任务
    增加一个守护线程,当快要超时,但是任务还没执行完成,就增加锁的时间

    2.21、 数据库中的范式有哪些?

    第一范式----数据库中的表(所有字段值)都是不可分割的原子数据项。
    第二范式----数据库表中的每一列都和主键相关,而不能只和主键的某一部分相关。也就是说 一个表中只能只能包含一个,不能把多种数据保存在同一个表中。
    第三范式----数据库表中每一列数据都和主键直接相关,不能间接相关。

    2.22、 数据库中的索引的结构?什么情况下适合建索引?

    数据库中索引的结构是一种排序的数据结构。是通过B树和变形的B+树实现的。

    适合建索引: 经常查询,使用,用在表连接的字段(经常更改的字段不适合建索引)

    2.23、 Java中的NIO,BIO,AIO分别是什么?

    BIO: 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
    NIO: 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
    AIO: 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

    2.24、 用什么工具调试程序?JConsole,用过吗?

    JConsole在JDK/bin目录下面,对资源消耗和性能进行监控,提供图表和可视化界面,占内存小(具体的一些还是自己多打开看一看就差不多了)

    2.25、 现在JVM中有一个线程挂起了,如何用工具查出原因?

    通过Javacore了解线程运行情况:
    Javacore,也可以称为“threaddump”或是“javadump”,它是 Java 提供的一种诊断特性,能够提供一份可读的当前运行的 JVM 中线程使用情况的快照。即在某个特定时刻,JVM 中有哪些线程在运行,每个线程执行到哪一个类,哪一个方法。
    应用程序如果出现不可恢复的错误或是内存泄露,就会自动触发 Javacore 的生成。而为了性能问题诊断的需要,我们也会主动触发生成 Javacore。
    在 AIX、Linux、Solaris 环境中,我们通常使用 kill -3 产生该进程的 Javacore。

    2.26、 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?

    同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。
    线程同步不一定发生阻塞!!!线程同步的时候,需要协调推进速度,互相等待和互相唤醒会发生阻塞。
    同样,阻塞也不一定同步。

    2.27、 同步和异步有什么区别?

    同步交互: 指发送一个请 求,需要等待返回,然后 才能够发送下一个请求,有个等待过程;

    异步交互: 指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
    区别: 一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。

    2.28、 线程池用过吗?

    线程池做的工作
    主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。

    线程池的优势
    线程复用、控制最大并发数、线程管理
    (1)降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;
    (2)提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;
    (3)方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。
    (4)提供更强大的功能,延时定时线程池。

    public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
        this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
             Executors.defaultThreadFactory(), defaultHandler);
    }
    

    1、corePoolSize(线程池基本大小): 当向线程池提交一个任务时,若线程池已创建的线程数小于corePoolSize,即便此时存在空闲线程,也会通过创建一个新线程来执行该任务,直到已创建的线程数大于或等于corePoolSize时,(除了利用提交新任务来创建和启动线程(按需构造),也可以通过 prestartCoreThread() 或 prestartAllCoreThreads() 方法来提前启动线程池中的基本线程。)
    2、maximumPoolSize(线程池最大大小): 线程池所允许的最大线程个数。当队列满了,且已创建的线程数小于maximumPoolSize,则线程池会创建新的线程来执行任务。另外,对于无界队列,可忽略该参数。
    3、keepAliveTime(线程存活保持时间): 当线程池中线程数大于核心线程数时,线程的空闲时间如果超过线程存活时间,那么这个线程就会被销毁,直到线程池中的线程数小于等于核心线程数。
    4、workQueue(任务队列): 用于传输和保存等待执行任务的阻塞队列。
    5、threadFactory(线程工厂): 用于创建新线程。threadFactory创建的线程也是采用new Thread()方式,threadFactory创建的线程名都具有统一的风格:pool-m-thread-n(m为线程池的编号,n为线程池内的线程编号)。
    6、handler(线程饱和策略): 当线程池和队列都满了,再加入线程会执行此策略。

    线程池为什么需要使用(阻塞)队列?
    1、因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换。
    2、创建线程池的消耗较高。 (线程池创建线程需要获取mainlock这个全局锁,影响并发效率,阻塞队列可以很好的缓冲。)

    线程池为什么要使用阻塞队列而不使用非阻塞队列?
    阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。
    当队列中有任务时才唤醒对应线程从队列中取出消息进行执行。
    使得在线程不至于一直占用cpu资源。
    不用阻塞队列也是可以的,不过实现起来比较麻烦而已,有好用的为啥不用呢?

    如何配置线程池

    CPU密集型任务: 尽量使用较小的线程池,一般为CPU核心数+1。
    IO密集型任务: 可以使用稍大的线程池,一般为2*CPU核心数。
    混合型任务: 可以将任务分成IO密集型和CPU密集型任务,

    2.29、 如何创建单例模式?说了双重检查,他说不是线程安全的。如何高效的创建一个线程安全的单例?

    饿汉模式
    通过定义final型的对象,来让加载类的时候,直接创建对象,只加载一次,实现单例。
    懒汉式
    通过定义静态对象,加锁去实例化对象。
    枚举
    通过定义枚举类,来实现单例。

    Double-Check
    若有两个线程通过了第一个Check循环,进入第二个Check循环是串行化的,只能有一个线程进入,这样当这个线程创建完成后,另外的线程就无法通过第二个循环了,保证了实例的唯一性,随后的线程也不会通过第一个Check循环,也就不会有同步控制的环节了。但是,这种方法也伴随着一个缺点,它可能会引起空指针的异常。
    高效创建线程安全的单例

    Volatile+Double-Check
     volatile关键字可以防止重排序的发生,在此不对volatile作详细介绍,通过volatile关键字,这种模式可以说是满足懒加载、多线程下单例的唯一性、安全性的。

    public final class SingletonObject5 {
       
        private volatile static SingletonObject5 instance ;
     
        private SingletonObject5() {
        }
     
        public static SingletonObject5 getInstance() {
            if (null == instance) {
                synchronized (SingletonObject5.class) {
                    if (null == instance)
                        instance = new SingletonObject5();
                }
            }
            return SingletonObject5.instance;
        }
    }
    

    2.30、 concurrent包下面,都用过什么?

    (凉凉夜色为我思念成河……)

    1.executor接口,使用executor接口的子接口ExecutorService用来创建线程池
    2.Lock接口下的ReentrantLock类,实现同步,比如三个线程循环打印ABCABCABC…
    3.atomic包,使用AtomicInteger类的incrementAndGet()方法来实现原子操作,比如a++
    4.Callable接口,重写call方法,实现多线程
    5.concarrenHashMap,线程安全的HashMap

    2.31、 常用的数据库有哪些?redis用过吗?

    mysql 、SQL Server、Oracle、Sybase、DB2等
    Redis:
    1、纯内存操作
    2、核心是基于非阻塞的IO多路复用机制
    3、单线程反而避免了多线程的频繁上下文切换问题

    2.32、 了解hadoop吗?说说hadoop的组件有哪些?说下mapreduce编程模型。

       common、Hadoop Distributed File System(HDFS)、MapReduce、YARN
    

    编程模型:

    Mapper把复杂的任务分解为若干个小任务,分到存在所需数据结点上进行计算,这些任务可以一起,彼此没有依赖关系
    Reducer把Mapper的结果汇总
    eg:
    一共有100个汉堡,甲吃十个,乙吃是个,丙吃十个,,,这就是Mapper
    甲乙丙……放到一起就是Reducer

    2.33、 你知道的开源协议有哪些?

    • Mozilla Public License:
    MPL License,允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起
    者。这种授权维护了商业软件的利益,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得
    所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。
    • BSD开源协议:
    给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或
    者专有软件再发布。
    • Apache Licence 2.0 :
    Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样
    鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。
    • GPL:
    GPL许可证是自由软件的应用最广泛的软件许可证,人们可以修改程式的一个或几个副本或程式的任何部
    分,以此形成基於这些程式的衍生作品。必须在修改过的档案中附有明显的说明:您修改了此一档案及任何修改
    的日期。 您必须让您发布或出版的作品,包括本程式的全部或一部分,或内含本程式的全部或部分所衍生的作
    品,允许第三方在此许可证条款下使用,并且不得因为此项授权行为而收费。
    • LGPL:
    LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软
    件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代
    码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

    • Public Domain:
    公共域授权。将软件授权为公共域,这些软件包没有授权协议,任何人都可以随意使用它

    2.34、 你知道的开源软件有哪些?

    • JDK
    • eclipse
    • Tomcat
    • Spring
    • Hibernate
    • MySQL
    • MyBatis
    • struts

    2.35、 你最近在看的书有哪些?

    这个尽量说真话,最好不要搜一点简介就说看过什么书,否则被戳穿很难受,
    如果实在没看过可以这么说:
    最近没怎么看书,但是相对于书本,我更喜欢在B站学习,比如大学公开课和摄影栏目我就经常逛;知乎我也挺活跃的,关注……等话题,每天保持相当的阅读量,回答受赞也有几百了;我也参加了很多经验分享活动,我觉得从面对面的交流获得的知识,是阅读无法替代的。

    2.36、 你有什么问题要问我吗?

    严禁:没问题,提薪资,五年计划,某某产品被卖了等无关紧要的问题
    准备3-5个问题就行,太多或者太少都不好
    问题
    1、问工作内容
    这份工作比较大的挑战是?
    您希望我在短期内解决哪些问题?
    对于未来加入这个团队,您对我的期望是什么?
    我对这个职位工作的理解是XXX,不知道除了我的理解外,是否还有其他的工作职责?
    2、问职位差距
    对我此次应聘的表现有什么评价和建议?
    如果可以录用,我需要学习哪方面的知识?
    接下来的这段空档期,有什么值得注意或者建议学习的吗?
    3、问工作潜力
    请问该岗位都要经历哪些培训?
    这个岗位的晋升路径是什么样子的?
    咱们部门近期/未来有什么新动向/新举措?
    您对这个岗位三到五年职业规划的建议是什么呢
    4、问团队氛围
    能带我看一下办公区吗?
    您在公司的一天是如何度过的?
    可以介绍下一起工作的团队是什么样的吗?

    提问的原则
    1、探讨式发问
    提问不是只问不答,提问后,先抛出一点自己的理解,让面试官看出你对应聘的职位是做过功课的。透过发问,更了解公司的组织文化和工作上实际会遇到的问题。
    2、在其位谋其职
    提问要展现专业度,切忌太跳脱或者故意装高深,引发尴尬,又给人好高骛远的感觉。记住一点:不提和所聘岗位无关的问题。
    3、真诚
    提问环节也是考验情商的时候!关注他人感受,掌握好分寸感。要明白提问不是辩论,你不是为了和面试官互相切磋知识、技能,而是真诚、虚心请教。

    2.37、 了解哪些设计模式?说说都用过哪些设计模式

    设计模式的分类

    总体来说是三大类
    创建型模式 ,五种:工厂方法模式、 抽象工厂模式、单例模式、建造者模式、原型模式
    结构性模式 ,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介模式、解释器模式。

    其实还有两类:并发型模式和线程池模式

    2.38、 如何判断一个单链表是否有环?

    快慢指针查询,快指针每次跳两个,慢指针每次跳一个,如果两指针相等时,就证明有环
    环的入口:
    用两个指针,一个指向快慢指针相交点(这里就是慢指针走,慢指针在走快指针的一半就相当于快指针走的路了,还会到这个点),一个指向单链表的头结点(模拟慢指针从头走,也是走快指针的一半),一起走,当两个指针相等时,就是环的入口。

    数学思维:
    设从单链表头节点到环入口节点的距离是D,环入口到相交点的距离是X,设slow和fast第一次相遇时fast走了n圈环,slow走的距离为len,那么fast走的距离是2*len,可以得出下面的两个等式:

    len = D + X
    2 * len = D + X + n * R
    
    
    两个等式相减可以的到:len = n * R - X
    

    如果还不行的话,自己画个带环的单链表就明白了

    2.39、 操作系统如何进行分页调度?

    笔者不懂,凉凉……

    1.分页的作用: 高效率地利用内存,可以运行比物理内存空间更大的程序;
    2.分页机制的原理: 利用两级页表将内存分割成4KB/页的大小,强制内存对齐提高效率;
    3.页表结构: PDE与PTE在内存中各个位的主要作用,表项与页之间的对应关系。

    2.40、 匿名内部类是什么?如何访问在其外面定义的变量?

    匿名内部类:
    没有名字,通常用来简化代码,只能用一次(使用的话必须要继承父类或者实现接口)

    访问在其外面定义的变量:
    必须要final类型的变量(也可以不用final类型,但只能使用不能修改)

    三面

    3.1、 自我介绍,做过什么项目。

    这。就不说了,某度一搜一堆,项目要挑自己做的最有水平的拿出来

    3.2、java虚拟机的区域如何划分

    程序计数器(独立内存)
    当前线程所执行的字节码的行号指示器。
    Java虚拟机栈(独立内存)
    每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
    本地方法栈(独立内存)
    本地方法栈则为虚拟机使用到的Native方法(百度说是Java中声明的可调用的C/C++实现的方法)服务。
    Java堆(共享内存): 存放对象实例
    方法区(共享内存): 存储已被虚拟区加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
    运行时常量池: 存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

    3.3、 双亲委派模型中,从顶层到底层,都是哪些类加载器,分别加载哪些类?

    (1)启动类加载器(Bootstrap ClassLoader)
    这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用。
    (2)扩展类加载器(Extension ClassLoader)
    这个加载器负责加载JAVA_HOME/lib/ext目录中的,或者被java.ext.dirs系统变量所指定的路径中的所有类库,开发者可以直接使用扩展类加载器
    (3)应用程序类加载器(Application ClassLoader)
    这个加载器是ClassLoader中getSystemClassLoader()方法的返回值,所以一般也称它为系统类加载器。它负责加载用户类路径(Classpath)上所指定的类库,可直接使用这个加载器,如果应用程序没有自定义自己的类加载器,一般情况下这个就是程序中默认的类加载器

    3.4、 有没有可能父类加载器和子类加载器,加载同一个类?如果加载同一个类,该使用哪一个类?

    双亲委派,先在父类看能不能加载,如果能则由父加载,否则给子类加载

    3.5、 HashMap的结构,get(),put()是如何实现的?

    Put:
    1、先将key和value封装到Node节点中
    2、底层会调用key的hashcode()方法,通过hash函数将hash值转换为数组下标,下标位置上如果没有任何元素,就把该Node添加到该位置上(该下标处)
    如果该下标处对应的位置上已经存在元素或链表(多于一个元素变成链表),那么就会拿着新节点的key与链表上的每一个人节点中的key进行equals。
    1、 如果所有对比(equals)都返回false,那么这个新节点将会被添加到链表的尾部。(大于8个就会转换成红黑树)
    2、 如果其中有一个对比(equals)返回true,那么这个节点上的value将会被新节点的value覆盖。

    Get:
    1、底层会调用key的hashcode()方法,通过hash函数将hash值转换为数组下标,通过数组下标快速定位到数组的指定位置上,如果这个位置上没有任何元素,那么返回null。
    2、如果这个位置上有单向链表(该位置上有元素,或者有红黑树),那么会拿着我们get(key)中的key和单向链表中的每个节点的key进行equals,如果说所有的equals都返回false,那么这个get方法返回false。
    3、只要其中有一个节点的key和参数key的equals对比的结果返回true,那么这个节点的value就是我们想要找的value,get方法返回这个value.

    3.6、 ConcurrentHashMap的get(),put(),又是如何实现的?ConcurrentHashMap有哪些问题? ConcurrentHashMap的锁是读锁还是写锁?

    put 操作一上来就锁定了整个segment,这当然是为了并发的安全,修改数据是不能并发进行的,必须得有个判断是否超限的语句以确保容量不足时能够 rehash,
    而比较难懂的是这句int index = hash & (tab.length - 1),原来segment里面才是真正的hashtable,即每个segment是一个传统意义上的hashtable, 从两者的结构就可以看出区别,这里就是找出需要的entry在table的哪一个位置,之后得到的entry就是这个链的第一个节点,如果e!=null,说明找到了,这是就要替换节点的值(onlyIfAbsent == false),否则,我们需要new一个entry,它的后继是first,而让tab[index]指向它,什么意思呢?实际上就是将这个新entry 插入到链头,剩下的就非常容易理解了。

    get 方法(请注意,这里分析的方法都是针对桶的,因为ConcurrentHashMap的最大改进就是将粒度细化到了桶上),首先判断了当前桶的数据个数是 否为0,为0自然不可能get到什么,只有返回null,这样做避免了不必要的搜索,也用最小的代价避免出错。然后得到头节点(方法将在下面涉及)之后就 是根据hash和key逐个判断是否是指定的值,如果是并且值非空就说明找到了,直接返回;
    程序非常简单,但有一个令人困惑的地方,这句return readValueUnderLock(e)到底是用来干什么的呢?研究它的代码,在锁定之后返回一个值。但这里已经有一句V v = e.value得到了节点的值,这句return readValueUnderLock(e)是否多此一举?
    事实上,这里完全是为了并发考虑的,这里当v为空时,可能是一个线程正在改变节点,而之前的 get操作都未进行锁定,根据bernstein条件,读后写或写后读都会引起数据的不一致,所以这里要对这个e重新上锁再读一遍,以保证得到的是正确值,
    这里不得不佩服Doug Lea思维的严密性。整个get操作只有很少的情况会锁定,相对于之前的Hashtable,并发是不可避免的啊!

    ConcurrentHashmap只能保证自身数据在多线程的环境下不被破坏,而并不能保证业务逻辑的正确性。

    ConcurrentHashMap的锁是读锁

    3.7、 sleep()和wait()分别是哪个类的方法,有什么区别?synchronized底层如何实现的?用在代码块和方法上有什么区别?

    sleep方法是Thread类的静态方法,调用此方法会让当前线程暂停指定的时间,将执行机会(CPU)让给其他线程,但是不会释放锁,因此休眠时间结束后自动恢复(程序回到就绪状态)。
    wait是Object类的方法,调用对象的wait方法导致线程放弃CPU的执行权,同时也放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify或notifyAll方法才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。

    wait只能在同步控制方法中或者同步控制块中使用,而sleep可以在任何地方使用。
    wait 可以指定时间也可以不指定,指定时间 wait(time) 在 time时间内 有别的线程 notifyAll() 是不会唤醒到它 。sleep 必须指定时间

    synchronized代码块是由一对monitorenter/monitorexit指令实现的, Monitor对象是同步的基本实现单元。
    现代的(Oracle) JDK6中, JVM对此进行了大刀阔斧地改进,提供了三种不同的Monitor实现,也就是常说的三种不同的锁
    偏斜锁(Biased Locking)、轻量级锁和重量级锁,大大改进了其性能。

    同步方法直接在方法上加synchronized实现加锁,同步代码块则在方法内部加锁,很明显,同步方法锁的范围比较大,而同步代码块范围要小点
    一般同步的范围越大,性能就越差,一般需要加锁进行同步的时候,肯定是范围越小越好,这样性能更好。

    3.8、 什么是线程池?如果让你设计一个动态大小的线程池,如何设计,应该有哪些方法?

    线程池就是创建若干个可执行的线程放入一个池(容器)中,有任务需要处理时,会提交到线程池中的任务队列,处理完之后线程并不会被销毁,而是仍然在线程池中等待下一个任务。

    一个线程池包括以下四个基本组成部分:
    线程管理器 (ThreadPool): 用于创建并管理线程池,包括创建线程,销毁线程池,添加新任务;
    工作线程 (PoolWorker): 线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;
    任务接口 (Task): 每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;
    任务队列 (TaskQueue): 用于存放没有处理的任务。提供一种缓冲机制;

    所包含的方法

    
    //创建线程池
    private ThreadPool() 
    //获得一个默认线程个数的线程池
    public static ThreadPool getThreadPool() 
    //执行任务,其实只是把任务加入任务队列,什么时候执行有线程池管理器决定
    public void execute(Runnable task) 
    //批量执行任务,其实只是把任务加入任务队列,什么时候执行有线程池管理器决定
    public void execute(Runnable[] task)
    //销毁线程池,该方法保证在所有任务都完成的情况下才销毁所有线程,否则等待任务完成才销毁
    public void destroy()
    //返回工作线程的个数
    public int getWorkThreadNumber()
    //返回已完成任务的个数,这里的已完成是只出了任务队列的任务个数,可能该任务并没有实际执行完成
    public int getFinishedTasknumber()
    //在保证线程池中所有线程正在执行,并且要执行线程的个数大于某一值时。增加线程池中线程的个数
    public void addThread()
    //在保证线程池中有很大一部分线程处于空闲状态,并且空闲状态的线程在小于某一值时,减少线程池中线程的个数
    public void reduceThread()
    

    3.9、 什么是死锁?JVM线程死锁,你该如何判断是因为什么?如果用VisualVM,dump线程信息出来,会有哪些信息?

    (不懂还是不懂,😔)

    线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。
    常常需要在隔两分钟后再次收集一次thread dump,如果得到的输出相同,仍然是大量thread都在等待给同一个 地址上锁,那么肯定是死锁了。

    3.10、 查看jvm虚拟机里面堆、线程的信息,你用过什么命令?

    -heap : 打印jvm heap的情况,会列出堆的总体使用情况,还有新生代老生代的内存占用情况。
    -histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
    -histo:live : 同上,但是只答应存活对象的情况 
    -permstat: 打印permanent generation heap情况
    等等

    3.11、 垃圾回收算法有哪些?CMS知道吗?如何工作的?

    标记-清除算法
    从算法的名称上可以看出,这个算法分为两部分,标记和清除。首先标记出所有需要被回收的对象,然后在标记完成后统一回收掉所有被标记的对象。
    这个算法简单,但是有两个缺点:一是标记和清除的效率不是很高;二是标记和清除后会产生很多的内存碎片,导致可用的内存空间不连续,当分配大对象的时候,没有足够的空间时不得不提前触发一次垃圾回收。
    复制算法
    这个算法将可用的内存空间分为大小相等的两块,每次只是用其中的一块,当这一块被用完的时候,就将还存活的对象复制到另一块中,然后把原已使用过的那一块内存空间一次回收掉。这个算法常用于新生代的垃圾回收。
    复制算法解决了标记-清除算法的效率问题,以空间换时间,但是当存活对象非常多的时候,复制操作效率将会变低,而且每次只能使用一半的内存空间,利用率不高。
    标记-整理算法
    这个算法分为三部分:
    一是标记出所有需要被回收的对象;
    二是把所有存活的对象都向一端移动;三是把所有存活对象边界以外的内存空间都回收掉。
    标记-整理算法解决了复制算法多复制效率低、空间利用率低的问题,同时也解决了内存碎片的问题。
    分代收集算法
    根据对象生存周期的不同将内存空间划分为不同的块,然后对不同的块使用不同的回收算法。一般把Java堆分为新生代和老年代,新生代中对象的存活周期短,只有少量存活的对象,所以可以使用复制算法,而老年代中对象存活时间长,而且对象比较多,所以可以采用标记-清除和标记-整理算法。
    CMS工作过程
    初始标记 :在这个阶段,需要虚拟机停顿正在执行的任务,官方的叫法STW(Stop The Word)。这个过程从垃圾回收的"根对象"开始,只扫描到能够和"根对象"直接关联的对象,并作标记。所以这个过程虽然暂停了整个JVM,但是很快就完成了。
    并发标记 :这个阶段紧随初始标记阶段,在初始标记的基础上继续向下追溯标记。并发标记阶段,应用程序的线程和并发标记的线程并发执行,所以用户不会感受到停顿。
    并发预清理 :
    并发预清理阶段仍然是并发的。在这个阶段,虚拟机查找在执行并发标记阶段新进入老年代的对象(可能会有一些对象从新生代晋升到老年代, 或者有一些对象被分配到老年代)。通过重新扫描,减少下一个阶段"重新标记"的工作,因为下一个阶段会Stop The World。
    重新标记 : 这个阶段会暂停虚拟机,收集器线程扫描在CMS堆中剩余的对象。扫描从"跟对象"开始向下追溯,并处理对象关联。
    并发清理 : 清理垃圾对象,这个阶段收集器线程和应用程序线程并发执行。
    并发重置 : 这个阶段,重置CMS收集器的数据结构,等待下一次垃圾回收。

    3.12、 数据库中什么是事务?事务的隔离级别?事务的四个特性?什么是脏读,幻读,不可重复读?

    事务(transaction)是作为一个单元的一组有序的数据库操作。
    如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交

    数据库事务的隔离级别由低到高分别为
    Read uncommitted 、Read committed(大多数数据库) 、Repeatable read(Sql Server , Oracle。Mysql) 、Serializable

    事务的四个特性:
    1 、原子性
    事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
    2 、一致性
    (只有一种结果,不是全写入数据库,就是全都没写入数据库)
    事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
    3 、隔离性
    一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
    4 、持续性
    也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

    脏读 是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
    幻读 是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。
    不可重复读 是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。

    3.13、 数据库索引的结构有哪些? 介绍B+树的结构。

    哈希表和有序数组
    二叉树和多叉树
    B+树

    1.根结点至少有两个子女。
    2.每个中间节点都至少包含ceil(m / 2)个孩子,最多有m个孩子。
    3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m。
    4.所有的叶子结点都位于同一层。
    5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

    3.14、 数据库中的分页查询语句怎么写?

    select * from table limit (start-1)*limit,limit; --其中start是页码,limit是每页显示的条数。
    

    3.15、 什么是一致性哈希?用来解决什么问题?

    一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织
    圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,
    0点的左侧是2的32次方-1,把这个圆环叫做Hash环
    然后把服务器ip或者主机名字作为关键字Hash,每个服务器都能确定位置,把数据进行相同的Hash算出的位置,顺时针访问的第一个就是对应的服务器

    一致性Hash算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性可扩展性

    用来解决的问题:
    hash( key ) % N,N 为 Redis 的数量,在这里 N = 4 ;
    4 台 Redis 不够了,需要再增加 4 台 Redis ;那么这个求余算法就会变成:hash( key ) % 8 ;
    一部分%4一部分%8当前大部分缓存的位置都会是错误的,极端情况下,就会造成 缓存雪崩。

    (如果节点太少或分布不均匀的时候,容易造成 数据倾斜,也就是大部分数据会集中在某一台服务器上。,一致性 Hash 算法提出了【虚拟节点】解决数据倾斜问题)

    3.16、 Redis的存储结构,或者说如何工作的,与mysql的区别?有哪些数据类型?

    redis中以key-value的形式存储,key固定是字符串,使用字符串对象进行表示,value可以是字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(ZSet)

    redis和mysql的区别总结:
    (1)类型上
    从类型上来说,mysql是关系型数据库,redis是缓存数据库
    (2)作用上
    mysql用于持久化的存储数据到硬盘,功能强大,速度较慢,基于磁盘,读写速度没有Redis快,但是不受空间容量限制,性价比高
    redis用于存储使用较为频繁的数据到缓存中,读取速度快,基于内存,读写速度快,也可做持久化,但是内存空间有限,当数据量超过内存空间时,需扩充内存,但内存价格贵
    (3)需求上
    mysql和redis因为需求的不同,一般都是配合使用。
    需要高性能的地方使用Redis,不需要高性能的地方使用MySQL。存储数据在MySQL和Redis之间做同步。

    3.17、 项目中用到redis,为什么选用redis,了解其他NoSQL数据库吗?在你的项目中是如何运用redis的?key是什么,value是什么?

    (又是凉凉的一道题,😔)
    为什么选用redis

    高效性: Redis读取的速度是110000次/s,写的速度是81000次/s
    原子性: Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    支持多种数据结构: string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
    稳定性: 持久化,主从复制(集群)
    其他特性: 支持过期时间,支持事务,消息订阅。

    其他NoSQL数据库:

    memcache介绍
    很早出现的NoSql数据库数据都在内存中,一般不持久化支持简单的key-value模式一般是作为缓存数据库辅助持久化的数据库

    mongoDB介绍
    高性能、开源、模式自由(schema free)的文档型数据库数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能支持二进制数据及大型对象可以根据数据的特点替代RDBMS(关系数据库管理系统) ,成为独立的数据库。或者配合RDBMS,存储特定的数据。
    列式存储HBase介绍
    HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中。HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万列元素的数据表。

    如何运用redis

    冷热数据区分
    虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。
    业务数据分离
    不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。
    消息大小限制
    由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。
    连接数限制
    连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机当机。请确保使用了正确的 Redis 客户端连接池配置。
    缓存 Key 设置失效时间
    作为缓存使用的 Key,必须要设置失效时间。失效时间并不是越长越好,请根据业务性质进行设置。注意,失效时间的单位有的是秒,有的是毫秒,这个很多同学不注意容易搞错。
    缓存不能有中间态
    缓存应该仅作缓存用,去掉后业务逻辑不应发生改变,万不可切入到业务里。
    缓存的高可用会影响业务;
    产生深耦合会发生无法预料的效果;
    会对维护行产生肤效果。
    扩展方式首选客户端 hash
    如果应用太小就别考虑了,如单 redis 集群并不能为你的数据服务,不要着急扩大你的 redis 集群(包括 M/S 和 Cluster),集群越大,在状态同步和持久化方面的性能越差。优先使用客户端 hash 进行集群拆分。如:根据用户 id 分 10 个集群,用户尾号为 0 的落在第一个集群。

    操作限制

    严禁使用 Keys
    Keys 命令效率极低,属于 O(N)操作,会阻塞其他正常命令,在 cluster 上,会是灾难性的操作。严禁使用,DBA 应该 rename 此命令,从根源禁用。
    严禁使用 Flush
    flush 命令会清空所有数据,属于高危操作。严禁使用,DBA 应该 rename 此命令,从根源禁用,仅 DBA 可操作。
    严禁作为消息队列使用
    如没有非常特殊的需求,严禁将 Redis 当作消息队列使用。Redis 当作消息队列使用,会有容量、网络、效率、功能方面的多种问题。如需要消息队列,可使用高吞吐的 Kafka 或者高可靠的 RocketMQ。
    严禁不设置范围的批量操作
    redis 那么快,慢查询除了网络延迟,就属于这些批量操作函数。大多数线上问题都是由于这些函数引起。
    1、[zset] 严禁对 zset 的不设范围操作
    ZRANGE、 ZRANGEBYSCORE等多个操作 ZSET 的函数,严禁使用 ZRANGE myzset 0 -1 等这种不设置范围的操作。请指定范围,如 ZRANGE myzset 0 100。如不确定长度,可使用 ZCARD 判断长度
    2、[hash] 严禁对大数据量 Key 使用 HGETALL
    HGETALL会取出相关 HASH 的所有数据,如果数据条数过大,同样会引起阻塞,请确保业务可控。如不确定长度,可使用 HLEN 先判断长度
    3、[key] Redis Cluster 集群的 mget 操作
    Redis Cluster 的 MGET 操作,会到各分片取数据聚合,相比传统的 M/S架构,性能会下降很多,请提前压测和评估
    4、[其他] 严禁使用 sunion, sinter, sdiff等一些聚合操作
    禁用 select 函数
    select函数用来切换 database,对于使用方来说,这是很容易发生问题的地方,cluster 模式也不支持多个 database,且没有任何收益,禁用。
    禁用事务
    redis 本身已经很快了,如无大的必要,建议捕获异常进行回滚,不要使用事务函数,很少有人这么干。
    禁用 lua 脚本扩展
    lua 脚本虽然能做很多看起来很 cool 的事情,但它就像是 SQL 的存储过程,会引入性能和一些难以维护的问题,禁用。
    禁止长时间 monitor
    monitor函数可以快速看到当前 redis 正在执行的数据流,但是当心,高峰期长时间阻塞在 monitor 命令上,会严重影响 redis 的性能。此命令不禁止使用,但使用一定要特别特别注意。
    Key 规范
    Redis 的 Key 一定要规范,这样在遇到问题时,能够进行方便的定位。Redis 属于无 scheme 的 KV 数据库,所以,我们靠约定来建立其 scheme 语义。

    redis中以key-value的形式存储,key固定是字符串,使用字符串对象进行表示,value可以是字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(ZSet)

    3.18、 归并排序的过程?时间复杂度?空间复杂度?你平常用什么排序?快速排序。说说在那些场景下适用,哪些场景下不适用。

    这个就不总结了,大家面试之前要把排序的几大算法认真看看

    3.19、 Solr是如何工作的?

    solr是基于Lucence开发的企业级搜索引擎技术,而lucence的原理是倒排索引。

    倒排索引:
    	Demo1:A在吃饭
    	Demo2:B在睡觉
    记录就变成了这样
    关键词    段落号(出现频率)       出现位置
    吃饭       113112
    		   212
    A          111
    睡觉       213
    B          211
    

    整理不易,有描述的不对的地方还望大佬赐教

    更多相关内容
  • 卡片盒笔记(Zettelkasten)是最强的思考、写作的个人工具,和知识工作的整体方法、放大器。 将之发扬光大的,是社会学家卢曼,在 6 堆、4 个抽屉积累了 90000 个知识卡片。 他是工作狂,生前出版了 70 多本书、...

    版权归作者所有,任何形式转载请联系作者。
    作者:.(来自豆瓣)
    来源:https://www.douban.com/note/786406576/

    ——用斯蒂格勒的理论升级笔记法

    卡片盒笔记法(Zettelkasten)是最强的思考、写作的个人工具,和知识工作的整体方法、放大器。

    将之发扬光大的,是社会学家卢曼,在 6 堆、4 个抽屉积累了 90000 个知识卡片。
    在这里插入图片描述
    他是工作狂,生前出版了 70 多本书、600 多篇文章,还不包括译作。他有句名言:

    我的项⽬:社会理论学。研究时间:30 年。研究经费:0。 (My project: theory of society. Duration:
    30 years. Costs: zero.)

    29 年半后,他出版了社会学经典巨作《社会的社会》 。其间他也很少需要帮助。⼀位助⼿表⽰,能帮卢曼的就是发现⼏处拼写错误。

    而且,他的生产力甚至超越了出版的作品——遗产里还有 150 多份未完成的手稿,其中至少有一篇 1000+ 页。

    更有甚者,妻⼦早逝后,他⼀个⼈养三个孩⼦,⼀周 5 顿热饭。

    卡片盒笔记大法好!

    明确的流程,反而激发创造力。
    和许多人一样,我也畏惧写作,尤其是长篇大论。

    最有欺骗性的创造力神话之一,就是它是在面对一张白纸时,从无到有地发生。

    可没有人是真正从零开始。

    下笔前,必须下功夫研究。

    卡片盒笔记法不是技巧,来减免研究之功,而是以标准化流程,简化、统一想法的格式和思想的步骤,把“搞一个大工程”变成“文章妙手偶得之”:

    记笔记不难;

    而你要的信息在一个地方就可以找到,减少了整理素材的时间,混乱;

    有了一堆标准化、互相关联的笔记,就很容易以无穷无尽的形式快速组装,像伟大的现代作家纳博科夫,进行拼图一样的卡片式写作:

    索引卡片真是写作的绝佳纸张。我并不从开头写起,一章一章写到结尾,而只是填充画面上的空白,完成脑海中清晰的拼图玩具,这儿取一块,那儿取一块,拼一角天空,再拼山水景物,再拼出——
    我不知道,也许是喝得醉醺醺的猎手。

    在这里插入图片描述

    有了这个效率发动机,就可以聚焦于创造性的思考。

    卡片盒笔记法最重要的理念是:

    消费信息只是机会,不加以利用就不会产生任何知识、意义;
    只有积极与知识交流,才能更好掌握知识;
    笔记不是最终目的,运用知识才是。

    因为,用斯蒂格勒的话说:

    智能是社会性的,是跨个体化(transindividuation,西蒙东语)中个人的社会能力。

    所以,卢曼强调作为交流方式的写之重要:

    所有思考都是在写之中发生。

    而贝尔纳尔・斯蒂格勒(Bernard Stiegler)则在《阅读的时间和记忆的新工具》(?)中说:

    真正地读,是写,或者说从一种写的能力出发去读。 (Lire véritablement, c’est écrire, ou lire à
    partir d’un pouvoir-écrire)

    也就是说,要以外化、输出(思想)倒逼输入。

    读,要像导演为了编剧那样建构地读。

    写是唯一重要的事。

    写,才能直面自己,问自己到底明白了没,是对自己递归地使用自我技术;

    写出来,想法才脱离脑袋中含糊的上下文来示人;

    写多少,就思考了多少;想法没有经过写的检验,是不存在的,而且往往不成立。

    有许多种写法:

    高亮、摘抄片段,重读原文和笔记,还是在消极选择信息,学习效率低;

    费曼学习法——把道理翻译成自己的话,说给别人听,才是理解了,即教学相长(Learning by teaching);

    拆解知识——理解不同想法的关系;

    做问答卡片自测——思考知识的应用场景,训练检索能力;

    添加双向链接——寻找与已有的想法的联系。

    在这里插入图片描述

    此外,等到写作时再找素材,是胡子眉毛一把抓。先备菜,再做菜,才事倍功半。

    记笔记,是构思先行,为写作打草稿,像呼吸⼀样不为人察,又⾄关重要。

    作为渐进式的总结方法,这个笔记法会自下而上(bottom-up)地慢慢归纳你的写作主题,让作品自然生长——

    写什么,要看你有什么。

    最终写下论述,只是写作流程最⼩的⼀步。

    写作不是研究、学习最后的产物,⽽是它们生成的媒介。

    写作、思考的主要问题是无法长期遵循一条思路。
    而卡片盒笔记法让你集中处理问题的一部分,然后全局地看复杂问题,从而保持思想活力、乐于写作。

    卢曼说:

    我只做容易做的事,只在我知道怎么写的时候写。我不喜欢的事情,从不逼⾃⼰做。

    许多非常聪明的学生在学习上失败了,最常见的原因是他们看不到学习的意义(Balduf,2009) ,无法将其与个人目标联系起来(Glynn,2009),或者缺乏自控(Reeve 2006; Reeve,2009)。”

    这么说来,⾃律会让你鹤⽴鸡群。(Duckworth and Seligman, 2005; Tangney, Baumeister, and Boone, 2004)

    但意志⼒是有限的资源,⽽且会快速流失,长远看提升空间也不⼤。(Baumeister, Bratslavsky, Muraven, and Tice, 1998;Muraven, Tice, and Baumeister, 1998; Schmeichel, Vohs, and Baumeister, 2003;Moller, 2006)

    其实,⾃律更关乎环境(cf. Thaler, 2015, ch. 2):所有有趣、有意义、⽬标清晰的任务都有⼈抢着做,因为其长期利益和短期利益没有冲突——

    当人们选择(工作)时有自主意识,投入工作的精力就不会减少。 (心理学教授 Arlen Moller ,2006)

    成功不是靠用意志⼒、坚持,来和环境做对的结果,⽽是通过改造环境,确保任务有意义、⽬标明确,就没有意志⼒的事了,根本⽆需坚持。

    (cf. Neal et al. 2012;Painter et al. 2002; Hearn et al.1998;https://replicationindex.wordpress.com/2016/04/18/is-replicability-report-ego-depletionreplicability-report-of-165-ego-depletion-articles/)

    ⽽生物学家尤克斯考尔(Uexküll)认为,不只是环境根据物质性(physicality)选择生物,也被生物接纳(adopt),也就是说生物可以从现有的东西中选择、内化,来构造自己的环境(context),作为生存手段。

    也就是说,人和环境不只是互换信息、能量、物质,还会构成社群(community)。

    这就是为什么卡⽚箱能成为卢曼的谈话对象、“第二伙伴”:

    我不是⼀个⼈想出这些东西的。这些都是在我的卡⽚箱⾥产⽣的。 (I’m not thinking everything on my own.
    Much of it happens in my Zettelkasten. My productivity is largely
    explained by the Zettelkasten method. Luhmann, Baecker, and Stanitzek,
    1987, 142)

    那么,如何改造环境呢?

    神经科学家尼尔・列维(Neil Levy)在《⽜津神经伦理学⼿册》 (Oxford Handbook of Neuroethics)中写道:

    笔记让我们明白,无论(心理)内在的流程如何,⼤脑有多么依赖外部的知识架构。

    苹果的前用户体验架构师唐・诺曼在《让我们变聪明的事:在机器时代捍卫人类属性》(Things That Make Us Smart)一书提到:

    人们高估了独立思考的能力。没有外部帮助,记忆、思维和推理都会受限。 (… …)真正的力量来自于能提高认知能力的外部辅助设备。
    也就是说,改造环境,除了排除媒体、外界等的干扰——比如将手机调成静音,最重要的就是搭建外脑、第二大脑。而斯蒂格勒说,

    所有心智式(noetic)智能都是人工的(artificial)。
    (《人类世中的人工愚蠢和人工智能》Artificial Stupidity and Artificial Intelligence in the Anthropocene)
    这就意味着,外脑作为“人工智能”,其核心,就在于模仿人脑,尤其是人脑最令人惊叹的无限网状的、分布式的结构,而非让它屈从、受限于其他低级模式。

    或者说,通过不断累积算法,来把外脑升级成越来越复杂、开放的思维算法、“控制论系统”——卢曼对他的卡片盒方法的称呼,给人脑当门槛和陪练。

    分类是个坏主意!

    而分类的方法,却是从结构开始,自顶向下地归档材料。

    在这里插入图片描述

    但我们不会从已有的分类开始生活 —— 生活元初是混沌;

    而且分类一设计好,再改进就要重构;

    只把一个卡片隶属于一个分类,不但限制了卡片被发现的几率,而且卡片之间是割裂的。

    然而,知识工作是神经回路不断加强、减弱的个体化的过程。

    多线程工作!卢曼说:

    头脑的工作记忆只能处理 7±2 个组块(chunks),而且只能维持几秒钟。

    这样的多线程工作从⼀个任务跳到另⼀个,需要好的架构确保这不会威胁整个任务的完成,也不会失去⼤局观。

    戴维・艾伦的 GettingThings Done技巧放弃掌控一切的企图,把“长篇大论”这样的任务分解成⼀个个清晰、简单、可重复的⼩任务,让你集中注意⼒于内容,不让其他事占据宝贵的⼯作记忆;

    并且把任务⾃动、⽆缝地结合在一起,形成⼯作流(flow)。

    (cf. Mara, Todd, and Lippke,2010)

    这样就可以⼀次干⼀个事,⼀个接⼀个地完成(第三章3.1),每个任务都毫不费⼒,让你乐在其中,体验到艾伦说的“如⽔般的⼼智”。

    但 GTD 不能直接⽤于深度写作(insightfulwriting):

    • GTD 需要⽬标清晰,但有深度的洞察⽆法预知。通常⼀开始只是模糊的观点,在研究中生成,越来越清晰。(cf.Ahrens, 2014,
      134f)
    • 写作不是线性的,跳跃在不同任务之间,很难预知哪⼀步在前、哪⼀步在后。
    • 许多写作步骤太琐碎,不值得写下来分解成“下⼀步”——查询脚注、重读这⼀章、写⼀段,根本没必要微观管理。

    清晰的⼯作架构和提前计划,也完全是两回事。

    做计划,比如黑泽明要求“编剧从一天写一页开始”,是给⾃⼰强加了框架,于是不得不动⽤意志⼒。

    这不仅破坏深层动⼒,像是僵化的流程在逼我们做不想做的事,⽽且⽆法应对、吸纳意外的威胁,不适合研究、思考、学习这样的开放流程——

    其中,每个想法都可能改变下⼀步,问题会改变,新方向会出现。而这是洞察的本质。

    计划是为了得到控制感,但更重要的是真正掌控局面,把工作引向有趣、有意义的方向。

    我们的成就感来自持续前进。

    所以流程灵活,才能持续进行小调整;

    而且要将写作分解成独立的步骤,对每个步骤获得快速反馈;

    同时,架构简单,才能在该复杂的地方——内容深度上复杂。(cf. Sull and Eisenhardt,2015)。

    这样,才能在写中打开思想,始终遵循最深刻思考的路径,使意外的想法成为工作的驱动力,⽽非局限在最开始的观点,

    而且也能保持动力和工作方向一致,让⾟苦的⼯作也值得去做。

    那么,是不是有了一个卡片盒笔记法这样的外脑,就一劳永逸了呢?

    当你不假思索收集了一堆信息,或者只是按层级分类的时间一长,就会造成一个卡片无序、混乱的坟场,让人头大——哪怕卡片盒笔记法能根据问题大小自动调整。

    这是因为,在斯蒂格勒看来,人这样的

    心智式生命是关于人工制品(artifice)的智能;

    然而,一旦智能变成人工的,比如依存于笔记这样的记忆技术(mnemotechnics),就会产生人工愚蠢(Artificial Stupidity)——一味加速熵增的东西。他说:

    人工愚蠢是一种认知溢出综合征(cognitive overflow
    syndrome。注:指想做的事太多、时间又太少的感觉),也就是说,对关注(attention)的功能性毁灭。”

    也就是说,任何记忆的外化(exteriorisation),如果不经过时刻反思,就会造成信息过载等后果,使得这个体外化(exosomatic)系统趋向混乱,从而损害你的关注的能力。

    正因如此,卢曼要定期花时间和精力浏览卡片,而有人每周甚至两天的首要任务是卡片盒。

    这个外脑,乃至你自己的大脑和知识,需要你不断倾注关注(care),才能像树产生氧气一样,与时俱进地新陈代谢,而维持在亚稳态(metastability)。

    这也是斯蒂格勒对心智(noesis)的定义:

    它是与体外化的负面后果斗争的东西,而斗争也总是由另外的体外化过程实现的。

    即,思考、写作,作为理性的功能(怀特海语)的实现,是在与人类行为的熵增效应作斗争。

    这个关心的过程,斯蒂格勒也借艺术家博伊斯的话,称为“社会雕塑”。意思是说,我们记笔记、生产知识,不但是在塑造作为环境的外脑,也是在雕塑自己的大脑的官能(faculties)。

    读写是将脑放到桌上,用读写的材料雕刻它。如玛莉安・沃尔夫(Maryanne Wolf。出处可能误记)所说:

    大脑中没什么是原封不动的。读写能力以种种革命性的形式改变了大脑,从而改变了一个人,乃至人这个物种,最终改变了人性。 (Nothing is
    unaltered in the brain. Literacy alters the brain in profoundly
    transformative ways, which alters the person, which alters the
    species, which alters humanity itself)

    而且

    在更深的层次上,这个雕塑必然是园艺的问题,那么,这一雕塑的社会性以及采取的形式,首先关系到一种对世界的经验,而且也是一种教育——通过大脑的突触发生
    (synaptogenesis。注:神经系统中神经元之间突触的形成)所形成的修剪枝条(pruning)的过程,因为正如尚-皮埃尔・尚硕(Jean-Pierre
    Changeux)在《神经细胞的人:心灵生物学》(Neuronal Man: The Biology of
    Mind)中所说:“学习就是清除多余(eliminate)。” (《“从黑夜中诞生了白昼”,是不完全的克服》‘Night Gives
    Birth to Day’ as the ‘Conquest of Imperfection’)

    当卡片盒笔记法融入互相关联的总流程、移除了所有瓶颈,就会进入突飞猛进的正反馈循环,让一切变得可能。卢曼说:

    一开始(用这个方法),我们主要生产垃圾。

    但雪球就是这么滚起来的。稍加练习,就能聪明地做笔记,写得越来越顺;

    劲头足了,又可以愉快地做卡片,下一次笔头就更滑了,再也不会⾯对空⽩屏幕了。

    持续投入,就会越来越上瘾,像指挥乐队一样组织写作的材料,而卡片盒外脑也会变成你自己的越来越深邃的百科全书,源源不断地利滚利。

    从现在起,没必要重新整理之前的笔记,立即改变处理⽅式就好;

    也没必要重新发明轮⼦、针对⼀个主题做头脑风暴,卡⽚盒有现成的卡片链条。

    卡片盒笔记法的特点

    超文本(hypertext):

    可以从当前页面分支,将另一文本注入当前页面,同时隐藏其内容。

    这样就能用清晰地编织思想之网,建立新的洞察。

    在这里插入图片描述

    1. 强调卡片之间相互参照、解释、扩展,特别是远距、深层的、跨层的联系,而非收集。
    2. 非线性链接:“只要链接到新的卡片,把它放哪里并不重要。”
    3. 每个卡片都有固定、唯一的地址,以便引用。
    4. 文本是线性的,而超文本是有机的。

    在这里插入图片描述

    • 原子性(Atomicity)原则:

    内容和卡片的边界一致、明确。

    1. 每个卡片包含一个想法——卡片是最小的知识单元。卡片包含的想法,脱离了原来的上下文,也可以被独立理解。如果卡片有标题,更要高度概括。帕斯卡尔曾说:抱歉,我没功夫把信写得短一些。盒子、卡片的容量是有限的,放进去的是想清楚了的、高质量的线索,这样就会降低信息的负荷。
    2. 引用卡片时,你就知道它的想法是什么,没有猜测的余地。我们要用卡片的原子(note atoms)创造的什么样(文本)的分子?例如,书籍的章、节、页更像坐标,不能直接作为想法来引用;维基百科也不是思想的网、思考工具,而是百科全书、信息检索工具,因为只能链接一个主题的文章、章节,而非单个想法——没有匹配的地址。
    • 个人化,包括基于项目的、共享的项目卡片。

    在这里插入图片描述

    • 地址(address, orunique identifier)

    可以用标题作为地址,只要是唯一的,而且更改标题也不会改变对地址的引用。
    在这里插入图片描述
    卢曼的编号系统允许通过在末尾添加另一个记号来组成一个卡片序列,并在相邻卡片之间分置不同序列。

    • 正文

    包括一个简洁的关键句,来阐述概念,而且最好举一个以上的例子。

    1、最重要的是用自己的话重写(in your own words),卡片才成为你的知识、而非信息,才能增加理解、提高对处理的信息的记忆。

    2、专注当前项目,保持写作的心流状态,长远上更有生产力;

    同时允许一点偏差,其程度取决于截止日期。

    没有承诺目标,就不是项目,而是随便搞搞的爱好。不能随便记下感兴趣的东西,并期望有所收获。

    在这里插入图片描述

    不过,在完成项目的路上,会产生各种副产品。你添加的每个知识都有潜在用处,为未来项目作了准备,但写卡片时可能看不到。

    如果你知道每个知识是否与最终产品相关,就没有理由做笔记,因为你的脑海已经有了最终产品。
    在这里插入图片描述
    3、卡片长度——创造分子的原子的长度,是由目标决定的。

    • 参考文献(References)管理

    软件BibDesk

    在这里插入图片描述
    链接卡片

    • 每个新卡片都要链接另一卡片。

    这是主要知识创造机制之一:链接的意义、原因,是明确的。

    说明为什么,就是创造知识。卢曼在《与卡片盒交流》(Communicating with Slip Boxes)中说:

    可以按自己的意愿链接,重要的是放射状地捕捉链接(capture the connections
    radially)[……],同时记录被链接的卡片中的反向链接(backlinks)。

    链接知识碎片,会提高记忆力、增加知识,从而更好地观察、出现更多的普遍模式(universal patterns),并进入现实的各种一般模式(general models)。

    • 链接的上下文,是我向未来的自己解释,点这个链接,会发生什么。

    不解释,就不会创造知识,未来的自己也不知道为什么要点链接,于是会判断过去的自己是不可靠的。

    没有明确的意图、相关性时收集链接,不是知识生产,甚至有反作用,使肤浅的工作成为习惯,降低了创造性工作的技能。

    在这里插入图片描述
    卡片可以有好几种:

    在这里插入图片描述

    临时卡片(Fleeting notes):

    随时记录灵光一现的想法等,只用关键字、半句话、用词不准确也无妨。最好每天整理、清空。重点是记得及时、激发想法。

    文献卡片(Literature Notes):

    简洁、准确地概述原文有用的想法,打散其逻辑、次序。

    结构笔记(Structure Note)

    即元笔记(Meta-note)——关于其他卡片及其关系的卡片,从而也是最中心的卡片,是一个主题的切入点、创作的起点,让你获得更多信息,增加创造的潜力。

    如卢曼的中枢笔记(hub notes)或索引卡片,可以快速浏览卡片网络。

    每写一个主题的新卡片,都要在结构笔记上链接新卡片。

    • 形式

    1、嵌套的层级(hierarchical)目录;

    在这里插入图片描述

    2、顺序(sequential)结构,来捕获这样的论证思路:a > b > c 所以a > c,并且将每步论证链接到一个卡片;还有不同模版的结构笔记,每个都是一种心智模型(mental models):

    比如障碍模型(obstacle model)——从一种状态过渡到另一种,需要增加能量输出,比如在自然界,从饥饿过渡到饱食,需要狩猎或采集;

    化学模型(chemistry model),其完形是一个由不能分割的原子组成的分子。卡片盒方法就是化学模型的应用。化学模型既是模版的结构笔记的一部分,也是卡片盒方法的结构笔记的一部分。两者在结构笔记中重合,形成了半格(semilattice)结构,可以交叉连接两个分支,而区别于正则树形(strict tree)结构。

    在这里插入图片描述

    3、事实上,即使半格也不能反映卡片的真实情况。正确的模式应该是差异化(heterarchy)结构。
    在这里插入图片描述

    软件

    要求:

    • 卡片的导航,取决于超链接或强大的全文搜索功能。

    搜索功能随着时间推移和跨应用程序,会变得更强大。

    • 沙盒(sandbox)。

    卢曼方法的一部分是办公桌——他随便拿几个卡片,按喜欢的方式摆在桌上。

    • 开放平台,方便迁移数据。

    软件不可知论(software-agnosticism):与软件的目的背道而驰,即不要被软件的封闭性限制。

    可以让搜索负责很多功能,这样几乎所有纯文本编辑器都可以重现你的工作流程。

    • 全平台,包括移动端。
    • 沉浸式的阅读、写作体验。
    • 云存储。

    推荐:

    • Obsidian:本地数据,键入文本自动链接——

    可生成文件关系图,各种插件,可以同时铺开好几个文件。

    在这里插入图片描述
    暂无 iOS 版,只处理文字、无历史记录功能。

    • Roamedit
    • Remnote:双向链、大纲笔记。服务器在国外,无移动端。
    • Roam Research:革命性的双向链接(bi-directional
      linking,用双括号括住一段文本,会自动生成链接,可以转到这段文本为标题的页面)、块引用、全局可视化界面(Graph
      Overview),还有树形结构。国内速度较慢,用 VPN 快一些。只有在线版,订阅价贵。
    • Zettelkasten:唯⼀完全符合卢曼笔记原则的软件,各平台均免费。对中文支持不完善。
    • EverMemo:便签软件,实时同步到 Evernote。卡片视图时,卡片大小随着内容变化。Evernote
      可以根据关键词频率等自动发现笔记的关联,还可以图片 OCR,但非会员流量限制大、树形文件结构只有两层,功能不如为知笔记。

    在这里插入图片描述

    • Google Keep:卡片可变大小、颜色。点击每个卡片,搜索框的 URL 就是地址。手写功能。主动抓取卡片里网页链接的信息。可以在
      Google Calendar 上提醒。可以拖拽到Google doc。需要翻墙。

    • miro.com:视觉化的协同合作白板,结构化框架

    • Anki:抽认卡+复习安排,能加音频。

    • 微软的便签、微软桌面:无 iOS 版。

    • The Archive

    1、用最通用的纯文本作为主要格式。

    2、用结构笔记作为桌面,但不像实体卡片自由。

    3、支持 BibTeX 格式,可以将书目数据保存在纯文本文件中。

    • Zettlr:全平台,免费。 为知笔记:最强的笔记软件,全平台。没有沙盒。付费会员流量无限,可以分享文档,但每次修改后都要审核。
    • Zotero:⾃动⽣成各种格式的参考⽂献,无 iOS 版。
    • NotePlan:双向链接。
    • Devonthink:可以计算相关度,给笔记排序。
    • DokuWiki

    1、在线公开、众包

    2、每页中,每部分(section)作为卡片,都有地址。每小节(subsection)包含一个想法,可以被链接。不要每页面一个卡片,因为界面设计更适合长页

    3、基于时间的 ID 出现在每个页面或小节的地址中,而且可以被各种软件读取——尤其是文本编辑器,容易导出。也可以用基于标题的 ID。

    • iAWriter:仅 Mac。可以编辑 Dropbox 文件。
    • TiddlyRoam、Stroll、avAlT、Bear、Zkn
      3、3M、notebook、trello、Workflowy、Dynalist、Airtable、Coda、VS
      Code、Vim、Atom、SublimeText
    • 纸和笔:优势是可以平铺在桌面或墙上,实体化、视觉化。卢曼⽤的是带特殊线圈的活页卡片集,明信⽚⼤小——DIN
      A6、148x105mm。不能大到让你产生写作畏惧,不能小到写不下 50 字。
    展开全文
  • 最强的思考、写作的工具:超简单的卡片盒笔记! .2020-12-01 14:01:46 ——用斯蒂格勒的理论升级笔记 卡片盒笔记(Zettelkasten)是最强的思考、写作的个人工具,和知识工作的整体方法、放大器。 将之...

     

    . . 2020-12-01 14:01:46

    ——用斯蒂格勒的理论升级笔记法

    卡片盒笔记法(Zettelkasten)是最强的思考、写作的个人工具,和知识工作的整体方法、放大器。

    将之发扬光大的,是社会学家卢曼,在 6 堆、4 个抽屉积累了 90000 个知识卡片。

    他是工作狂,生前出版了 70 多本书、600 多篇文章,还不包括译作。他有句名言:

    我的项⽬:社会理论学。研究时间:30 年。研究经费:0。
    (My project: theory of society. Duration: 30 years. Costs: zero.)

    29 年半后,他出版了社会学经典巨作《社会的社会》 。其间他也很少需要帮助。⼀位助⼿表⽰,能帮卢曼的就是发现⼏处拼写错误。

    而且,他的生产力甚至超越了出版的作品——遗产里还有 150 多份未完成的手稿,其中至少有一篇 1000+ 页。

    更有甚者,妻⼦早逝后,他⼀个⼈养三个孩⼦,⼀周 5 顿热饭。

    油管视频:卢曼介紹卡片盒笔记法

    卡片盒笔记大法好!

    • 明确的流程,反而激发创造力。

    和许多人一样,我也畏惧写作,尤其是长篇大论。

    最有欺骗性的创造力神话之一,就是它是在面对一张白纸时,从无到有地发生。

    可没有人是真正从零开始。

    下笔前,必须下功夫研究。

    卡片盒笔记法不是技巧,来减免研究之功,而是以标准化流程,简化、统一想法的格式和思想的步骤,把“搞一个大工程”变成“文章妙手偶得之”:

    记笔记不难;

    而你要的信息在一个地方就可以找到,减少了整理素材的时间,混乱;

    有了一堆标准化、互相关联的笔记,就很容易以无穷无尽的形式快速组装,像伟大的现代作家纳博科夫,进行拼图一样的卡片式写作:

    索引卡片真是写作的绝佳纸张。我并不从开头写起,一章一章写到结尾,而只是填充画面上的空白,完成脑海中清晰的拼图玩具,这儿取一块,那儿取一块,拼一角天空,再拼山水景物,再拼出—— 我不知道,也许是喝得醉醺醺的猎手。

    纳博科夫在卡片上随意涂写。

    有了这个效率发动机,就可以聚焦于创造性的思考。

    卡片盒笔记法最重要的理念是:

    消费信息只是机会,不加以利用就不会产生任何知识、意义;

    只有积极与知识交流,才能更好掌握知识;

    笔记不是最终目的,运用知识才是。

    因为,用斯蒂格勒的话说:

    智能是社会性的,是跨个体化(transindividuation,西蒙东语)中个人的社会能力。

    所以,卢曼强调作为交流方式的写之重要:

    所有思考都是在写之中发生。

    而贝尔纳尔・斯蒂格勒(Bernard Stiegler)则在《阅读的时间和记忆的新工具》(?)中说:

    真正地读,是写,或者说从一种写的能力出发去读。
    (Lire véritablement, c'est écrire, ou lire à partir d'un pouvoir-écrire)

    也就是说,要以外化、输出(思想)倒逼输入。

    读,要像导演为了编剧那样建构地读。


    写是唯一重要的事。

    写,才能直面自己,问自己到底明白了没,是对自己递归地使用自我技术;

    写出来,想法才脱离脑袋中含糊的上下文来示人;

    写多少,就思考了多少;想法没有经过写的检验,是不存在的,而且往往不成立。

    有许多种写法:

    高亮、摘抄片段,重读原文和笔记,还是在消极选择信息,学习效率低;

    费曼学习法——把道理翻译成自己的话,说给别人听,才是理解了,即教学相长(Learning by teaching);

    拆解知识——理解不同想法的关系;

    做问答卡片自测——思考知识的应用场景,训练检索能力;

    添加双向链接——寻找与已有的想法的联系。

     


    此外,等到写作时再找素材,是胡子眉毛一把抓。先备菜,再做菜,才事倍功半。

    记笔记,是构思先行,为写作打草稿,像呼吸⼀样不为人察,又⾄关重要。

    作为渐进式的总结方法,这个笔记法会自下而上(bottom-up)地慢慢归纳你的写作主题,让作品自然生长——

    写什么,要看你有什么。

    最终写下论述,只是写作流程最⼩的⼀步。

    写作不是研究、学习最后的产物,⽽是它们生成的媒介。

    • 写作、思考的主要问题是无法长期遵循一条思路。

    而卡片盒笔记法让你集中处理问题的一部分,然后全局地看复杂问题,从而保持思想活力、乐于写作。

    卢曼说:

    我只做容易做的事,只在我知道怎么写的时候写。我不喜欢的事情,从不逼⾃⼰做。

    许多非常聪明的学生在学习上失败了,最常见的原因是他们看不到学习的意义(Balduf,2009) ,无法将其与个人目标联系起来(Glynn,2009),或者缺乏自控(Reeve 2006; Reeve,2009)。”

    这么说来,⾃律会让你鹤⽴鸡群。(Duckworth and Seligman, 2005; Tangney, Baumeister, and Boone, 2004)

    但意志⼒是有限的资源,⽽且会快速流失,长远看提升空间也不⼤。(Baumeister, Bratslavsky, Muraven, and Tice, 1998;Muraven, Tice, and Baumeister, 1998; Schmeichel, Vohs, and Baumeister, 2003;Moller, 2006)

    其实,⾃律更关乎环境(cf. Thaler, 2015, ch. 2):所有有趣、有意义、⽬标清晰的任务都有⼈抢着做,因为其长期利益和短期利益没有冲突——

    当人们选择(工作)时有自主意识,投入工作的精力就不会减少。
    (心理学教授 Arlen Moller ,2006)

    成功不是靠用意志⼒、坚持,来和环境做对的结果,⽽是通过改造环境,确保任务有意义、⽬标明确,就没有意志⼒的事了,根本⽆需坚持。

    (cf. Neal et al. 2012;Painter et al. 2002; Hearn et al.1998;https://replicationindex.wordpress.com/2016/04/18/is-replicability-report-ego-depletionreplicability-report-of-165-ego-depletion-articles/)


    ⽽生物学家尤克斯考尔(Uexküll)认为,不只是环境根据物质性(physicality)选择生物,也被生物接纳(adopt),也就是说生物可以从现有的东西中选择、内化,来构造自己的环境(context),作为生存手段。

    比起其他生物,人还有本事发明工具,来改变、人化(hominize)环境,与环境形成互惠关系(reciprocity),甚至一个有机体(organicity)。

    也就是说,人和环境不只是互换信息、能量、物质,还会构成社群(community)。

    这就是为什么卡⽚箱能成为卢曼的谈话对象、“第二伙伴”:

    我不是⼀个⼈想出这些东西的。这些都是在我的卡⽚箱⾥产⽣的。
    (I’m not thinking everything on my own. Much of it happens in my Zettelkasten. My productivity is largely explained by the Zettelkasten method.
    Luhmann, Baecker, and Stanitzek, 1987, 142)

    那么,如何改造环境呢?

    神经科学家尼尔・列维(Neil Levy)在《⽜津神经伦理学⼿册》 (Oxford Handbook of Neuroethics)中写道:

    笔记让我们明白,⽆论(心理)内在的流程如何,⼤脑有多么依赖外部的知识架构。

    苹果的前用户体验架构师唐・诺曼在《让我们变聪明的事:在机器时代捍卫人类属性》(Things That Make Us Smart)一书提到:

    人们高估了独立思考的能力。没有外部帮助,记忆、思维和推理都会受限。
    (… …)真正的力量来自于能提高认知能力的外部辅助设备。

    也就是说,改造环境,除了排除媒体、外界等的干扰——比如将手机调成静音,最重要的就是搭建外脑、第二大脑。而斯蒂格勒说,

    所有心智式(noetic)智能都是人工的(artificial)。
    (《人类世中的人工愚蠢和人工智能》Artificial Stupidity and Artificial Intelligence in the Anthropocene)

    这就意味着,外脑作为“人工智能”,其核心,就在于模仿人脑,尤其是人脑最令人惊叹的无限网状的、分布式的结构,而非让它屈从、受限于其他低级模式。

    或者说,通过不断累积算法,来把外脑升级成越来越复杂、开放的思维算法、“控制论系统”——卢曼对他的卡片盒方法的称呼,给人脑当门槛和陪练。


    分类是个坏主意!

    而分类的方法,却是从结构开始,自顶向下地归档材料。

    但我们不会从已有的分类开始生活 —— 生活元初是混沌;

    而且分类一设计好,再改进就要重构;

    只把一个卡片隶属于一个分类,不但限制了卡片被发现的几率,而且卡片之间是割裂的。

    然而,知识工作是神经回路不断加强、减弱的个体化的过程。


    多线程工作!卢曼说:

    有⼀丝迟疑,⼀件事停滞不前时,我就把它放⼀边,先做其它事。
    (Luhmann et al., 1987,154 f.)

    头脑的工作记忆只能处理 7±2 个组块(chunks),而且只能维持几秒钟。

    这样的多线程工作从⼀个任务跳到另⼀个,需要好的架构确保这不会威胁整个任务的完成,也不会失去⼤局观。

    戴维・艾伦的 GettingThings Done技巧放弃掌控一切的企图,把“长篇大论”这样的任务分解成⼀个个清晰、简单、可重复的⼩任务,让你集中注意⼒于内容,不让其他事占据宝贵的⼯作记忆;

    并且把任务⾃动、⽆缝地结合在一起,形成⼯作流(flow)。

    (cf. Mara, Todd, and Lippke,2010)

    这样就可以⼀次干⼀个事,⼀个接⼀个地完成(第三章3.1),每个任务都毫不费⼒,让你乐在其中,体验到艾伦说的“如⽔般的⼼智”。


    但 GTD 不能直接⽤于深度写作(insightfulwriting):

    • GTD 需要⽬标清晰,但有深度的洞察⽆法预知。通常⼀开始只是模糊的观点,在研究中生成,越来越清晰。(cf.Ahrens, 2014, 134f)
    • 写作不是线性的,跳跃在不同任务之间,很难预知哪⼀步在前、哪⼀步在后。
    • 许多写作步骤太琐碎,不值得写下来分解成“下⼀步”——查询脚注、重读这⼀章、写⼀段,根本没必要微观管理。

    清晰的⼯作架构和提前计划,也完全是两回事。

    做计划,比如黑泽明要求“编剧从一天写一页开始”,是给⾃⼰强加了框架,于是不得不动⽤意志⼒。

    这不仅破坏深层动⼒,像是僵化的流程在逼我们做不想做的事,⽽且⽆法应对、吸纳意外的威胁,不适合研究、思考、学习这样的开放流程——

    其中,每个想法都可能改变下⼀步,问题会改变,新方向会出现。而这是洞察的本质。

    图:黑泽明

    计划是为了得到控制感,但更重要的是真正掌控局面,把工作引向有趣、有意义的方向。

    我们的成就感来自持续前进。

    所以流程灵活,才能持续进行小调整;

    而且要将写作分解成独立的步骤,对每个步骤获得快速反馈;

    同时,架构简单,才能在该复杂的地方——内容深度上复杂。(cf. Sull and Eisenhardt,2015)。

    这样,才能在写中打开思想,始终遵循最深刻思考的路径,使意外的想法成为工作的驱动力,⽽非局限在最开始的观点,

    而且也能保持动力和工作方向一致,让⾟苦的⼯作也值得去做。


    那么,是不是有了一个卡片盒笔记法这样的外脑,就一劳永逸了呢?

    当你不假思索收集了一堆信息,或者只是按层级分类的时间一长,就会造成一个卡片无序、混乱的坟场,让人头大——哪怕卡片盒笔记法能根据问题大小自动调整。

    这是因为,在斯蒂格勒看来,人这样的

    心智式生命是关于人工制品(artifice)的智能;

    然而,一旦智能变成人工的,比如依存于笔记这样的记忆技术(mnemotechnics),就会产生人工愚蠢(Artificial Stupidity)——一味加速熵增的东西。他说:

    人工愚蠢是一种认知溢出综合征(cognitive overflow syndrome。注:指想做的事太多、时间又太少的感觉),也就是说,对关注(attention)的功能性毁灭。”
    (出处同上)

    也就是说,任何记忆的外化(exteriorisation),如果不经过时刻反思,就会造成信息过载等后果,使得这个体外化(exosomatic)系统趋向混乱,从而损害你的关注的能力。

    正因如此,卢曼要定期花时间和精力浏览卡片,而有人每周甚至两天的首要任务是卡片盒。

    这个外脑,乃至你自己的大脑和知识,需要你不断倾注关注(care),才能像树产生氧气一样,与时俱进地新陈代谢,而维持在亚稳态(metastability)。

    这也是斯蒂格勒对心智(noesis)的定义:

    它是与体外化的负面后果斗争的东西,而斗争也总是由另外的体外化过程实现的。
    (出处同上)

    即,思考、写作,作为理性的功能(怀特海语)的实现,是在与人类行为的熵增效应作斗争。

    这个关心的过程,斯蒂格勒也借艺术家博伊斯的话,称为“社会雕塑”。意思是说,我们记笔记、生产知识,不但是在塑造作为环境的外脑,也是在雕塑自己的大脑的官能(faculties)。

    读写是将脑放到桌上,用读写的材料雕刻它。如玛莉安・沃尔夫(Maryanne Wolf。出处可能误记)所说:

    大脑中没什么是原封不动的。读写能力以种种革命性的形式改变了大脑,从而改变了一个人,乃至人这个物种,最终改变了人性。
    (Nothing is unaltered in the brain. Literacy alters the brain in profoundly transformative ways, which alters the person, which alters the species, which alters humanity itself)

    而且

    在更深的层次上,这个雕塑必然是园艺的问题,那么,这一雕塑的社会性以及采取的形式,首先关系到一种对世界的经验,而且也是一种教育——通过大脑的突触发生 (synaptogenesis。注:神经系统中神经元之间突触的形成)所形成的修剪枝条(pruning)的过程,因为正如尚-皮埃尔・尚硕(Jean-Pierre Changeux)在《神经细胞的人:心灵生物学》(Neuronal Man: The Biology of Mind)中所说:“学习就是清除多余(eliminate)。”
    (《“从黑夜中诞生了白昼”,是不完全的克服》‘Night Gives Birth to Day’ as the ‘Conquest of Imperfection’)

    当卡片盒笔记法融入互相关联的总流程、移除了所有瓶颈,就会进入突飞猛进的正反馈循环,让一切变得可能。卢曼说:

    一开始(用这个方法),我们主要生产垃圾。

    但雪球就是这么滚起来的。稍加练习,就能聪明地做笔记,写得越来越顺;

    劲头足了,又可以愉快地做卡片,下一次笔头就更滑了,再也不会⾯对空⽩屏幕了。

    持续投入,就会越来越上瘾,像指挥乐队一样组织写作的材料,而卡片盒外脑也会变成你自己的越来越深邃的百科全书,源源不断地利滚利。

    从现在起,没必要重新整理之前的笔记,立即改变处理⽅式就好;

    也没必要重新发明轮⼦、针对⼀个主题做头脑风暴,卡⽚盒有现成的卡片链条。


    卡片盒笔记法的特点

    • 超文本(hypertext):

    可以从当前页面分支,将另一文本注入当前页面,同时隐藏其内容。

    这样就能用清晰地编织思想之网,建立新的洞察。

     

    1. 强调卡片之间相互参照、解释、扩展,特别是远距、深层的、跨层的联系,而非收集。
    2. 非线性链接:“只要链接到新的卡片,把它放哪里并不重要。”
    3. 每个卡片都有固定、唯一的地址,以便引用。
    4. 文本是线性的,而超文本是有机的。

    卢曼第一个登记簿(register)中,卡片下方的圆点、连线显示了卡片的关系。

     

    • 原子性(Atomicity)原则:

    内容和卡片的边界一致、明确。

    1. 每个卡片包含一个想法——卡片是最小的知识单元。卡片包含的想法,脱离了原来的上下文,也可以被独立理解。如果卡片有标题,更要高度概括。帕斯卡尔曾说:抱歉,我没功夫把信写得短一些。盒子、卡片的容量是有限的,放进去的是想清楚了的、高质量的线索,这样就会降低信息的负荷。
    2. 引用卡片时,你就知道它的想法是什么,没有猜测的余地。我们要用卡片的原子(note atoms)创造的什么样(文本)的分子?例如,书籍的章、节、页更像坐标,不能直接作为想法来引用;维基百科也不是思想的网、思考工具,而是百科全书、信息检索工具,因为只能链接一个主题的文章、章节,而非单个想法——没有匹配的地址。
    • 个人化,包括基于项目的、共享的项目卡片。

    每个卡片都有 3 部分

     

    • 地址(address, orunique identifier)

    可以用标题作为地址,只要是唯一的,而且更改标题也不会改变对地址的引用。

    卢曼的编号系统允许通过在末尾添加另一个记号来组成一个卡片序列,并在相邻卡片之间分置不同序列。

     

    • 正文

    包括一个简洁的关键句,来阐述概念,而且最好举一个以上的例子。

    1. 最重要的是用自己的话重写(in your own words),卡片才成为你的知识、而非信息,才能增加理解、提高对处理的信息的记忆。
    2. 专注当前项目,保持写作的心流状态,长远上更有生产力;

    同时允许一点偏差,其程度取决于截止日期。

    没有承诺目标,就不是项目,而是随便搞搞的爱好。不能随便记下感兴趣的东西,并期望有所收获。

    不过,在完成项目的路上,会产生各种副产品。你添加的每个知识都有潜在用处,为未来项目作了准备,但写卡片时可能看不到。

    如果你知道每个知识是否与最终产品相关,就没有理由做笔记,因为你的脑海已经有了最终产品。

    完成项目之路

     

    3. 卡片长度——创造分子的原子的长度,是由目标决定的。

    • 参考文献(References)管理

    软件BibDesk

    链接卡片

    • 每个新卡片都要链接另一卡片。

    这是主要知识创造机制之一:链接的意义、原因,是明确的。

    说明为什么,就是创造知识。卢曼在《与卡片盒交流》(Communicating with Slip Boxes)中说:

    可以按自己的意愿链接,重要的是放射状地捕捉链接(capture the connections radially)[……],同时记录被链接的卡片中的反向链接(backlinks)。

    链接知识碎片,会提高记忆力、增加知识,从而更好地观察、出现更多的普遍模式(universal patterns),并进入现实的各种一般模式(general models)。

     

    • 链接的上下文,是我向未来的自己解释,点这个链接,会发生什么。

    不解释,就不会创造知识,未来的自己也不知道为什么要点链接,于是会判断过去的自己是不可靠的。

    没有明确的意图、相关性时收集链接,不是知识生产,甚至有反作用,使肤浅的工作成为习惯,降低了创造性工作的技能。

     


    卡片可以有好几种:

    完整的卡片

    临时卡片(Fleeting notes):

    随时记录灵光一现的想法等,只用关键字、半句话、用词不准确也无妨。最好每天整理、清空。重点是记得及时、激发想法。

    文献卡片(Literature Notes):

    简洁、准确地概述原文有用的想法,打散其逻辑、次序。

    结构笔记(Structure Note)

    即元笔记(Meta-note)——关于其他卡片及其关系的卡片,从而也是最中心的卡片,是一个主题的切入点、创作的起点,让你获得更多信息,增加创造的潜力。

    如卢曼的中枢笔记(hub notes)或索引卡片,可以快速浏览卡片网络。

    每写一个主题的新卡片,都要在结构笔记上链接新卡片。

    • 形式
    1. 嵌套的层级(hierarchical)目录;

    2. 顺序(sequential)结构,来捕获这样的论证思路:a > b > c 所以a > c,并且将每步论证链接到一个卡片;还有不同模版的结构笔记,每个都是一种心智模型(mental models):

    比如障碍模型(obstacle model)——从一种状态过渡到另一种,需要增加能量输出,比如在自然界,从饥饿过渡到饱食,需要狩猎或采集;

    化学模型(chemistry model),其完形是一个由不能分割的原子组成的分子。卡片盒方法就是化学模型的应用。化学模型既是模版的结构笔记的一部分,也是卡片盒方法的结构笔记的一部分。两者在结构笔记中重合,形成了半格(semilattice)结构,可以交叉连接两个分支,而区别于正则树形(strict tree)结构。

    3. 事实上,即使半格也不能反映卡片的真实情况。正确的模式应该是差异化(heterarchy)结构。

    卡片盒笔记法的一种卡片分类和流程

     


    软件

    要求:

    • 卡片的导航,取决于超链接或强大的全文搜索功能。

    搜索功能随着时间推移和跨应用程序,会变得更强大。

    • 沙盒(sandbox)。

    卢曼方法的一部分是办公桌——他随便拿几个卡片,按喜欢的方式摆在桌上。

    《越狱》第 2 季剧照中,FBI 这面贴满了资料卡片的墙,就是沙盒。

    • 开放平台,方便迁移数据。

    软件不可知论(software-agnosticism):与软件的目的背道而驰,即不要被软件的封闭性限制。

    可以让搜索负责很多功能,这样几乎所有纯文本编辑器都可以重现你的工作流程。

    • 全平台,包括移动端。
    • 沉浸式的阅读、写作体验。
    • 云存储。

    推荐:

    • Obsidian:本地数据,键入文本自动链接——

    可生成文件关系图,各种插件,可以同时铺开好几个文件。

    暂无 iOS 版,只处理文字、无历史记录功能。

    • Roamedit
    • Remnote:双向链、大纲笔记。服务器在国外,无移动端。
    • Roam Research:革命性的双向链接(bi-directional linking,用双括号括住一段文本,会自动生成链接,可以转到这段文本为标题的页面)、块引用、全局可视化界面(Graph Overview),还有树形结构。国内速度较慢,用 VPN 快一些。只有在线版,订阅价贵。
    • Zettelkasten:唯⼀完全符合卢曼笔记原则的软件,各平台均免费。对中文支持不完善。
    • EverMemo:便签软件,实时同步到 Evernote。卡片视图时,卡片大小随着内容变化。Evernote 可以根据关键词频率等自动发现笔记的关联,还可以图片 OCR,但非会员流量限制大、树形文件结构只有两层,功能不如为知笔记。

     

    • Google Keep:卡片可变大小、颜色。点击每个卡片,搜索框的 URL 就是地址。手写功能。主动抓取卡片里网页链接的信息。可以在 Google Calendar 上提醒。可以拖拽到Google doc。需要翻墙。
    • miro.com:视觉化的协同合作白板,结构化框架。
    • Anki:抽认卡+复习安排,能加音频。
    • 微软的便签、微软桌面:无 iOS 版。
    • The Archive
    1. 用最通用的纯文本作为主要格式。
    2. 用结构笔记作为桌面,但不像实体卡片自由。
    3. 支持 BibTeX 格式,可以将书目数据保存在纯文本文件中。
    • Zettlr:全平台,免费。
    • 为知笔记:最强的笔记软件,全平台。没有沙盒。付费会员流量无限,可以分享文档,但每次修改后都要审核。
    • Zotero:⾃动⽣成各种格式的参考⽂献,无 iOS 版。
    • NotePlan:双向链接。
    • Devonthink:可以计算相关度,给笔记排序。
    • DokuWiki
    1. 在线公开、众包
    2. 每页中,每部分(section)作为卡片,都有地址。每小节(subsection)包含一个想法,可以被链接。不要每页面一个卡片,因为界面设计更适合长页
    3. 基于时间的 ID 出现在每个页面或小节的地址中,而且可以被各种软件读取——尤其是文本编辑器,容易导出。也可以用基于标题的 ID。
    • iAWriter:仅 Mac。可以编辑 Dropbox 文件。
    • TiddlyRoam、Stroll、avAlT、Bear、Zkn 3、3M、notebook、trello、Workflowy、Dynalist、Airtable、Coda、VS Code、Vim、Atom、SublimeText
    • 纸和笔:优势是可以平铺在桌面或墙上,实体化、视觉化。卢曼⽤的是带特殊线圈的活页卡片集,明信⽚⼤小——DIN A6、148x105mm。不能大到让你产生写作畏惧,不能小到写不下 50 字。

    参考

    《怎样聪明地做笔记:德国社会学家尼克拉斯卢曼的卡片盒》(How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking – for Students, Academics and Nonfiction),Sönke Ahrens

    《Zettelkasten 漫谈,Zettelkasten 方法详解系列一》Introduction to the Zettelkasten Method),萨沙(Sascha),2020/10/27

    展开全文
  • 一.记忆方法 1.遗忘曲线艾宾浩斯规律 遗忘曲线由德国心理学... 首先我们构建一个熟悉的空间,并将物体编号,如下图所示例子: 假设这是一个你非常熟悉的环境,我们现在用记忆宫殿来进行记忆。首先,我们按照从上到下,...

    一.记忆方法

    1.遗忘曲线艾宾浩斯规律

    遗忘曲线由德国心理学家艾宾浩斯研究发现,描述了人类大脑对新事物遗忘的规律。该曲线对人类记忆认知研究产生了重大影响。

    1、学习/记忆之后,遗忘的速度是先快后慢。随着时间的推移,遗忘的“量”大致是:刚学刚记住后遗忘率是0,20分钟后会遗忘42%,1小时后遗忘56%,8小时后遗忘64%,1天后遗忘66%,2天后遗忘72%,6天后遗忘75%,31天后遗忘79%。

    2、所以,在学习或记忆之后,要在24小时内及时复习,最晚不要超过2天,在这个区段内稍加复习即可恢复记忆。过了这个区段因已遗忘了材料的七成以上,复习起来就很容易“事倍功半”。

    3、按照曲线来讲,就是:在学习和记住之后,要在20分钟后、1小时后、8小时后、1天后、2天后、6天后、31天后等这些时间段再重复一遍,这样就可以把知识记得很牢(实现长久记忆)。

     

    艾宾浩斯曲线几个重要的周期:

    第四个记忆周期是1天,第五个记忆周期是2天,第六个记忆周期是4天,第七个记忆周期是7天,第八个记忆周期是15天。

    人的大脑是一个记忆的宝库,人脑经历过的事物,思考过的问题,体验过的情感和情绪,练习过的动作,都可以成为人们记忆的内容。例如英文的学习中单词、短语和句子,甚至文章的内容都是通过记忆完成的。从"记"到"忆"是有个过程的,这其中包括了识记、保持、再认和回忆。有很多人在学习英语的过程中,只注重了学习当时的记忆效果,孰不知,要想做好学习的记忆工作,是要下一番工夫的,单纯的注重当时的记忆效果,而忽视了后期的保持和再认,同样是达不到良好的效果的。

    在信息的处理上,记忆是对输入信息的编码、贮存和提取的过程,从信息处理的角度上,英文的第一次学习和背诵只是一个输入编码的过程。人的记忆的能力从生理上讲是十分惊人的,它可以存贮10的15次方比特(二进制数字中的位,信息量的度量单位,是由英文BIT音译而来,为信息量的最小单位)的信息,理论上可以将全世界图书馆的所有图书信息记住。这是因为,有些人只关注了记忆的当时效果,却忽视了记忆中的更大的问题--即记忆的牢固度问题,那就牵涉到心理学中常说的关于记忆遗忘的规律。

    遗忘的进程是不均衡的,其趋势是先快后慢、先多后少,呈负加速,且到一定的程度就几乎不再遗忘了。

    艾宾浩斯研究发现:遗忘在学习之后立即开始,而且遗忘的进程并不是均匀的。最初遗忘速度很快,以后逐渐缓慢。

    在学习过程中,对一种材料达到一次完全正确地背诵后仍然继续学习,叫做过度学习。适当的过度学习可以使学习的材料保持得更好。

    研究结果表明:过度学习达到50%,即学习的熟练程度达到150%时,学习的效果最好。学习的熟练程度超过150%,会因学习疲劳而发生“报酬递减”现象,学习的效果就会逐渐下降,出现注意分散、厌倦、疲劳等消极效应。

     

    影响遗忘进程的因素如下:

    (1)时间因素。遗忘在学习之后立即开始,而且遗忘的过程最初进展得很快,以后逐渐缓慢。

    (2)识记材料的性质与数量。一般认为,对熟练的动作和形象材料遗忘得慢,而无意义材料比有意义材料遗忘要快得多;在学习程度相等的情况下,识记材料越多,忘得越快,材料少,则遗忘较慢。

    (3)学习的程度。一般认为,对材料的识记没有一次能达到无误背诵的标准,称为低度学习的材料;如果达到恰能成诵之后还继续学习一段时间,这种材料称之为过度学习材料。实验证明,低度学习材料容易遗忘,而过度学习的材料比恰能背诵的材料,记忆效果要好一些。

    (4)识记材料的系列位置。人们发现在回忆系列材料时,回忆的顺序有一定的规律性。最后呈现的材料最易回忆,遗忘最少,叫近因效应。最先呈现的材料较易回忆,遗忘较少,叫首因效应。

    (5)识记者的态度。识记者对实际材料的需要、兴趣等,对遗忘的快慢也有一定的影响。

    2. 记单词的小妙招

    初记忆单词时需要记忆的内容

    a)单词外观,b)单词的中文释义,c)单词的记忆法,d)复习方法:遮住单词,看着中文释义,尽力回忆该单词的拼写,几遍下来都记不住的单词可以做记号重点记忆。

    1.单词拆分法

    2.以熟记新法

    3.形似比较法

    4.词根词缀法

    5.图像记忆法

            字母的排列顺序和画面结合起来,记忆会更快,因为大脑对于记忆图像比文字效率更高

    6.串联记忆法

            有很多的英语单词他有相同的部分,我们可以把不同部分串成一句话把它快速记忆下来

            他(t)是 tame (温顺的)

            认为伤害(sh)是shame(羞耻)

            打破玻璃(bl)会被blame(责备)

            还会废了(fl)flame(燃烧)

            你的fame(声誉)

    7.联想法

            英文单词和意思建立逻辑关系,建立联系,形成画面感,学方法的目的是记单词,方法只是一个途径,记住单词要英文单词和中文建立联系,人类对图像感知效率高于符号感知效率

            英文单词和汉字之间要建立联系,看到一个陌生的单词,先找熟悉的部分,看到单词==反映出表达的意思单词记不住是因为你短期的强硬的记忆,没有任何的联系

    示例一:

    看一个单词要看到这个单词的画面,Aviation,航空,看到这个单词要有航空的感觉

    Pregnant ---(扑来个男的)----怀孕的

    Ambulance –(俺不能死)--------救护车

    Ponderous—(胖得要死)--------笨重的

    Ambition -----(俺必胜) ----------雄心壮志

    Agony-------- (爱过你) ----------极大痛苦

    Hermit ------  (何觅他)--------- -隐士

    Coffin ------(靠坟)------------棺材

    Morbid-----(毛病的)---------病态的

    Lynch -----(凌迟)------------死刑处死

    Tantrum---(太蠢)-----------发脾气

    Shabby---(傻B) ------------卑鄙的破旧的

    Gauche---(狗屎)-----------粗鲁的

    示例二:

    Theme:主题—这个(the)主题是我(me)设计的

    Snake:蛇—蛇(s)是那(na)么 可(ke)怕

    Nuance:细微差别—暖(nuan)男在检测(ce)细微差别

    Staff:员工--丝塔芙(staf)的员工叫小飞(f)

    抖音英语老师总结的一些记忆单词的方法,仅作记录

    1. 字母象形法
    2. 拼音联想法
    3. 单词联想法
    4. 发音联想法
    5. 词根词缀法

    3.三大记忆方法

    配对联想法

    串联记忆法

    记忆宫殿法

    1.熟悉编码(单个编码,联接训练)

    2.掌握方法(

            配对联想法:年代,日期,数据;

            串联记忆法:电话号码,车牌号等,

            记忆宫殿法:超长数据)

    3.持续运用

    4.记忆黄金时间段

    早上六点到七点

    上午九点到十点

    晚上七点到八点

    晚上九点到睡觉前

    这时候记忆东西,记的清楚,记的牢固

    5.理查德费曼学习法

    1.确定要学习新的内容,然后快速的学完一遍。

    2.把你学会的内容交给其他人,自己讲解一下,如果其他人听不懂,或者自己描述不明白就继续重新来进行学习。

    3.把自己新学习的内容再讲给其他人听,直到别人能够听懂或者自己表述非常清晰为止。

    6.记忆宫殿

    练习关键点有三步

    转化,联结,定桩。

    假设你要记忆今天的购物清单,蛋,腌肉...想象你从你从家里客厅走到房间,你看到鞋子,帽子把他们定义成桩,进而想象蛋打碎了掉在鞋子上弄得很脏,腌肉一长条挂在帽沿上散发着腊肉的气息,把购物单的每一项东西都绑定在你的家存在的每个物品桩上,方法看似很蠢,但如果你使用过就会发现它的妙处.只需要你去脑海中走一遍客厅到房间,记忆就会像电脑般被检索。

    分类:

    1.身体记忆宫殿

    2.地点记忆宫殿

    7.让你背书过目不忘技巧

    1. 需要背诵的内容尽量放在早上和睡觉之前,早上六点-七点背诵新的内容,晚上睡觉之前复习早上背诵的内容。
    2. 阅读的语速要慢,要找关键词。
    3. 关键的地方要做出总结标记。
    4. 尽量要把要记的东西变为图片,在脑子当中形成画面感,因为我们大脑图像记忆速度至少比图像记忆速度快8倍以上。
    5. 背书之后要进行默写检查,因为检查能够促进你的快速的思考。

    8.一个小技巧,让你背书效率大大提升

    背书的时候,用手捂住耳朵,并大声的朗读,这个是有科学依据的,用手捂住耳朵进行朗读,声音是直接通过骨骼传输到我们内耳,对大脑的刺激更加强烈,使我们的记忆更加深刻。

    9.背书的时候做这个动作让你背书效率大大提升

    你只需要在背诵完十分钟之内用,用感官记忆法闭上眼睛回忆10~30秒,只是大脑会将短期记忆信息转移到长久记忆,大家记住一定要闭上眼睛,闭眼可以让大脑所有的感官都参与到复习。

    分段记忆法,把一段段内容分开去记忆分段,段与段之间联系。

    联系记忆法,就是把看似独立的知识点进行逻辑编排,因为大脑记忆并列概念是非常有限的,如果能够把有逻辑的联系起来,那么想到其中一点,就能把其他知识点能够想起来,这样记忆起来更加方便和牢固。

    记忆的时候,右手握拳90秒,有助于记忆形成,在回忆的时候,左手握拳90秒,可以帮忙唤醒记忆。

    10.你的大脑是否被绑架了呢

    比如说,晚上该到了睡觉的时候,但是刷视频停不下来,比如说在打游戏的时候,明知道作业还没写完,但是停不下来,这些行为的本质是因为.他们让你的大脑产生多巴胺,多巴胺能够让我们人类感到快乐,所以我们的身体就希望这状况持续下去,当一件事情发现自己根本停不下来的时候,就要思考一下,你的大脑是不是被绑架了。

    11.说话不清晰没重点怎么办

    一个万能的思维表达公式,PREP模型,也就是观点+理由+例子+重复观点。

    比如说你的朋友问你,今天晚上是吃火锅还是烤肉,你可以这么回答,去吃火锅吧,这是表名观点,烤肉太热气了,这是理由,上次吃烤肉的时候喉咙痛到现在还没好,这是例子,所以还是吃火锅吧,这是重复观点。

    12.四个方法解决拖延症

    1. 先挑最简单的做当你堆积了很多事情时,先解决最简单的事,可以先看一页书,先做一道题,因为你一旦开始行动,做成一件事情之后,你就会下意识的维护,自己成功者的身份,并着手解决更多的事情。
    2. 那如果拖延的是大任务怎么办,分解大的任务,把你接受不来的大的任务,分解成众多能够接受的小任务。
    3. 最小阻力的完成一件事情,但你想学习的时候,手机就是你的阻力,把手机放在家里,只带学习资料到自习室,把干扰降到最低。
    4. 用停字震醒自己,每当你赖在床上耍手机时,意识到自己在拖延的时候,你就在脑海里面主动大声的喊出一个停字,立即下命令给大脑,一旦想起就立即去做。

    13.上班时间犯困,打瞌睡怎么办?

    首先身体坐直双手放在桌子双脚离地保持悬空大于十mm,这样做能促进大脑血液循让我们的大脑很好的保持清醒,上课不再开小差。

    14.如何通过食补,提高大脑状态

    1. 多吃橘子,橘子当中含有维生素C和果胶能够加快毒素的排出还能够增强免疫力,让大脑快速恢复状态。
    2. 多吃菠菜,菠菜当中含有大量的叶绿素和苯丙氨酸,多食用具有益智健脑,提高记忆力的作用。
    3. 多喝绿茶,绿茶能够减轻大脑的疲劳感和提神。

    15.手指操,帮你提升记忆能力

    锻炼手脑协调能力:

    1. 一支枪打四只鸟。
    2. 双手反复做握拳和松开的动作。
    3. 一只手握拳,另一只手五指松开。
    4. 双手食指交叉握紧之后,然后突然猛烈拉开。
    5. 举起双手握拳,齐平放在自己的胸口,左手往身体里面画圈儿,右手往身体外面画圈,然后两个手同时画圈。

    坚持一段时间你的大脑状态就会越来越好,记忆力变得越来越强。

    16.交替用脑

    大脑的不同部位是交替工作和休息的,我们在学习一门功课的时候,一部分脑细胞在工作,而其余无关的脑细胞处于休息的状态,这一脑区疲劳并不意味着其他脑区也疲劳,所以在学习的时候要注意内容的交叉安排,脑力和体力活动交替同样可以活动我们的大脑当你感觉累的时候,从久坐的座位走开,去户外活动一下或者赶一下家务,这时候与肌肉有关的脑细胞处于兴奋状态,使大脑皮质当中管理思维的部分得到休息,并且体育锻炼可以促进血液循环,增加大脑供氧,大大提高工作效率不同性质的任务轮换进行,不仅不易疲劳,还可以增强记忆力和理解力交替用脑既可以防止一部分脑细胞过分疲劳,使人精力充足,又可以调节整个大脑的积极性提高其运转效率。

    17.写作业能听音乐吗

    大脑通常状态会呈现α(阿尔法),β(贝塔),θ(西塔),δ(德尔塔)四种不同状态的脑波,大脑在α脑波状态的时候学习效率是最高的,如果我们在写做作业的时候能够听一些特定的阿尔达脑波音乐. 有助于我们大脑处于阿尔法脑波状态,这时候写作业和记忆的效果是最高的,常见的阿尔法脑波清单,阿尔法脑波音乐就是音乐的节奏在每分钟60~70节拍,频率在8~14赫兹音乐。

    一些内容总结于最强大脑抖音讲师,李威,吴天胜等人

    二.记忆宫殿

    1.记忆宫殿到底是什么?带你快速认识它

    记忆方法千千万,记忆宫殿number one!

    记忆宫殿这个概念已经火热了半个世纪了,至今还在记忆方法的王座上,可惜在大多数人看来有点晦涩难懂。最近看了最强大脑吴天胜的直播,对记忆宫殿这个概念也是加深了很多。

    今天,我就带你沉浸式体验记忆宫殿的奇妙之处!

    首先我们要知道,记忆宫殿这个概念被提出,就是因为人们发现人的大脑对于视觉影响更容易记忆。而记忆是联结,联结有两种产生方式,创造和发现。我们通过这两种方式,将我们要记忆的信息转化为熟悉的联结从而进行记忆。

    所以所谓的记忆宫殿,也就是俗称的地点定桩法位置记忆法,根本上来说就是在脑子里储存我们熟悉的,有顺序,有特征的物体、空间、场景等信息。当我们要记忆信息的时候,就把要记忆的信息放在脑海中熟悉的位置上,一一对应,让他们建立联系,形成画面感。

    下面让我们一起来做记忆宫殿的训练,争取活学活用!

    示例一:

    按照顺序快速记忆下列词:蛋氨酸、缬氨酸、亮氨酸、苏氨酸、色氨酸、异亮氨酸、苯丙氨酸,谷氨酸、组氨酸、赖氨酸。

    首先我们构建一个熟悉的空间,并将物体编号,如下图所示例子:

    假设这是一个你非常熟悉的环境,我们现在用记忆宫殿来进行记忆。首先,我们按照从上到下,从左到右来找地点,依次是粉色窗帘、橙色沙发、窗户、桌上的笔筒、桌子右侧花瓶、橙色台灯、白色吊灯、墙上壁画、床头书柜和床。

    这样,一组十个地点的记忆宫就找到啦,现在请大家看一眼图片,闭上眼睛,回顾一下这十个地点,不清楚的再看一遍!

    现在我们开始进行联想记忆。

    1.蛋氨酸和窗帘:想象一下你的窗帘上印着一个硕大的荷包蛋!

    2.缬(xie)氨酸和沙发:沙发上竟然放着一只鞋

    3.亮氨酸和窗户:窗户透过来明亮的光

    4.书氨酸和笔筒:笔筒上系着一根流苏。

    5.色氨酸和花瓶:花瓶里放着五颜六色的花

    6.异亮氨酸和台灯:台灯散发着异常亮眼的光芒。

    7.苯丙氨酸和吊灯:吊灯上画着一只放在书本上的烧饼

    8.谷氨酸和壁画:壁画上画着金灿灿的谷田和袁爷爷

    9.组氨酸和书柜:书柜是爸爸用木板组合拼装的

    10.赖氨酸和床:一只猫赖在我的床上不肯起来!

    通过记忆宫殿的联想记忆,我们就可以很快速地记录这些没有规律的知识点了。

    示例二:theme、snake 、nuance、staff

    Theme:主题—这个(the)主题是我(me)设计的

    Snake:蛇—蛇(s)是那(na)么 可(ke)怕

    Nuance:细微差别—暖(nuan)男在检测(ce)细微差别

    Staff:员工--丝塔芙(staf)的员工叫小飞(f)

    记忆宫殿到底是什么?带你快速认识它 (baidu.com)

    2.如何使用身体人物记忆宫殿记忆12星座

    如何使用身体人物记忆宫殿记忆12星座

    我相信很多伙伴经常有与我一样的困惑:因为某个知识点太多而不能完全记住,在考试的时候无法完全回忆全部知识信息,但是在某个时刻突然就又记忆回来了。是不是很懊恼?其实这都是有方法的,今天就来讲讲我们经常用到的身体人物记忆宫殿法吧。

    记忆宫殿法好比储存柜一样,可以把要记的知识信息分门别类的放进大脑储存,这样回忆的时候就能快速的 通过储存柜提取出知识信息。身体人物记忆宫殿就是通过对人物身体部位进行定位,搭建路径,再将记忆信息与之进行连接记忆,通过身体部位快速回忆起所记忆的内容。

    接下来我们就通过身体宫殿记忆十二星座,我们从上往下依次记1头发,2眼睛,3鼻子,4嘴巴,5脖子,6肩膀,7前胸,8肚子,9大腿,10膝盖,11小腿,12脚,联想星座,得到以下表格图像。

    是不是觉得12星座的记忆简单多了呢?

    如何使用身体人物记忆宫殿记忆12星座 - 简书 (jianshu.com)

    3.什么可以当记忆宫殿?记忆从宫殿开始

    1 头发—白羊座

    头发突然变成了厚厚的白色羊毛,还长着一对羊角

    2 眼睛—金牛座

    眼睛像牛眼睛一样瞪得大大的,发出金色的光芒

    3 鼻子—双子座

    鼻孔里面插着两个子弹

    4 嘴巴—巨蟹座

    嘴巴吃着大闸蟹,动来动去的,很搞笑

    5 脖子—狮子座

    脖子上长满了狮子毛,很诡异

    6 肩膀—处女座

    放学回家很累,叫一个美女给我按摩肩膀

    7 前胸—天秤座

    前胸上顶着一个天秤,走路一晃一晃的

    8 肚子—天蝎座

    天上掉下来一只蝎子钻进了你的肚子里面

    9 大腿—射手座

    大腿突然被丘比特的神剑射中了

    10 膝盖—摩羯座

    膝盖磨破了,结了一个疤,用手一摸就是摩羯座

    11 小腿—水瓶座

    小腿粗得像水瓶一样

    12 脚—双鱼座

    脚上踩着两只大头鱼,很好笑

    注意: 在记忆的过程中一定要自己绘出画面。

    身体定位桩、汽车定位桩、教室定位桩,这3个记忆宫殿被我们称之为考试神器,可以在临考前,把记不住的重点知识信息提取出关键词,出图后保存在记忆宫殿里,考试的时候想不起来信息的话,通过记忆宫殿就可以轻松回忆起来啦。是不是“菲常”便捷?所以有了好的方法,学习、考试再不是难事啦!

    注意: 其实万事万物都可以成为我们的地点桩,除了上述的举例外,像人物地点桩、诗词地点桩、建筑地点桩等,只要是熟悉有序都可以帮助我们进行有效记忆。

    如果你问什么样的桩子适合记忆什么样的信息,如何区分的话,也不需要太过于纠结,假设这些桩子好比不同的路线,每一条路线都可以通往我们的目的地,那么就根据你的时间以及目的,选择最合适自己的路线即可,重点在于你要熟悉每条路线。桩子也是如此,把所有的桩子全部掌握,并且熟悉原理后,记忆起来就会更加便捷。

    什么可以当记忆宫殿?记忆从宫殿开始 - 知乎 (zhihu.com)

    4.揭开“记忆宫殿”的神秘面纱

    所谓“记忆宫殿”,又称定位联想法,其实是一种古老的记忆术,即用来提高记忆效果的记忆方法。相传古希腊诗人西蒙尼德斯参加一场宴会时中途离开,这时整栋建筑突然倒塌,除了他以外的所有人都没能幸存。废墟中的尸体面目全非,但西蒙尼德斯根据宾客们的座位将尸体一一辨别了出来,受此启发,发明了“记忆宫殿”法。这个故事来自罗马传说,实际上“记忆宫殿”的来源可以追溯至更久远的时代。这种方法曾被古希腊演讲家用来记忆讲稿,在现代则是记忆竞赛选手们常用的一种记忆方法。

    这种方法的原理是将一组熟悉的位置或地点与要识记的材料之间建立起联系,通过联想、利用视觉表象,以地点位置为以后提取的线索。

    具体的操作步骤是:

    1. 建立自己的宫殿,即选取一组熟悉的位置或地点

    这里的“宫殿”其实只是个听起来高大上的比喻,实际上可以是自己的房间,从家到学校的路,或是想象中的、虚构的空间。

    以图中的这个房间为例,在房间中选取几个有特点的物件或位置,并按一定顺序串联成一条路线。选定之后,需要做到对所选位点和路线十分熟悉。

    2. 将“记忆宫殿”中的位点与记忆内容一一对应

    假如要利用上图记忆以下一组词:机器,火鸡,兔子,花朵,台灯…

    想象一台机器悬浮在空中撞向柜子,把柜子撞坏了;电脑屏幕上跳出来一只兔子,正拿着相机拍照;窗外突然飞进来一只没有毛的火鸡…这样就把需要识记的一组无关词语和步骤1中选取的位点对应起来了。这些想象虽然听起来有些荒诞,但是恰恰利用了人们对新奇意外的、不同寻常的事物记忆比较深刻的规律,这就是奇特联想法。上述例子中的识记内容是比较简单的名词,而当记忆抽象词、数字等其他内容时,还需要多种多样的技巧,篇幅所限不能在这里一一列举。

    3.反复练习

    在想象中反复“参观”自己的“记忆宫殿“并回忆记忆内容。尤其是对新手来说,必须遵循记忆和遗忘的规律(如艾宾浩斯遗忘曲线)及时复习,否则也会遗忘。

    了解了“记忆宫殿”的具体操作方法,再回头看它的原理就更好理解了。记忆包括三个基本过程:信息编码(把来自感官的信息变成记忆系统能够接收和使用的形式),信息储存(编码阶段加工了的信息存贮于记忆系统中)和信息提取(存储在记忆系统中的信息被重现出来)。

    Ericsson(1988)提出,要想获得较高的记忆技能,必须满足以下三个条件:一是意义编码(meaning encoding),即信息应该在意义层面上加工,把信息和存储的知识联系起来。二是提取结构(retrieval structure),即线索应该与信息一起存储以利于之后的提取。三是加速(speed-up),即反复练习以使编码和提取的过程越来越快,直至达到自动化的程度。这正好对应了我们在上文中提到的“记忆宫殿”操作步骤。

    以“记忆宫殿”为例的各种记忆术在现代被应用于一些记忆竞赛,如世界记忆锦标赛,并通过《最强大脑》等影视作品进入大众视野。那么普通人能不能拥有“记忆宫殿”呢?在一项发表在Neuron上的研究中,研究者(Dresler et al.)从世界记忆竞技排行榜前五十中招募了23名记忆运动员,同时在从未受过记忆训练的普通人中选取对照组,对他们进行记忆测试,让他们在20min内记忆72个单词和fMRI扫描。对照组被试进行六周的“记忆宫殿”法训练后再次测试,他们能回忆出的单词个数显著增加,并且大脑功能网络与记忆运动员变得更相近。

    看到这里,“记忆宫殿“的神秘光环已经逐渐褪去了,原来它是一个可以被普通人掌握的记忆方法。然而小丘去了解“记忆宫殿”的初衷是想帮助学习、提高成绩,那么“记忆宫殿”到底有多大的实用价值呢?

    首先,同学们肯定希望这种方法能让自己记得更快、更轻松。而学习“记忆宫殿”的过程就像学开车、学下棋一样,需要付出一定的时间和精力。上文的操作步骤里只展示了一个房间,房间里只有10个位置,要做到闭上眼就能想象出来也需要花上一会儿。如果要记忆大量信息,就需要拓展“记忆宫殿”并定期维护,也就是选取更多位点并时常进行回忆。此外,单凭“记忆宫殿”法本身并不能起到提高记忆力的效果,还需要科学、系统地学习其他记忆方法。如果将这些学习的时间成本都计算在内,“记忆宫殿”能否提高效率这个问题就要打个问号。

    其次,“记忆宫殿”法不是万金油。这种记忆方法在记忆随机数字、无关联字词等散乱的信息时比较有效,常见的应用包括电话号码、扑克牌、英语单词、部分文科知识点等。而我们平时学习的知识常常是系统的、有组织的、有联系的。比如一本教科书的内容本身就具有章、节、小标题的结构,章与章、节与节之间也通常具有逻辑关系。在这种情况下应用系统记忆法(在理解的基础上对知识进行分类整理,构成系统)、图表记忆法(如绘制思维导图)、概括记忆法(对学习材料进行提炼化简,抓住重点)等就可以达到较好的记忆效果,如果要应用“记忆宫殿”法强行记忆,反而不利于将新知识纳入已有的知识体系。现在市面上有不少记忆术畅销书和课程,其中的理论知识包括“记忆宫殿”等记忆方法,但是讲到这些方法的具体应用时就草草带过,这或许也可以从侧面说明“记忆宫殿”法在应用范围上有一定局限性。

    最后,归根结底,“记忆宫殿”只是一个记忆方法,只能帮我们记住那些知识,却未必能让我们学会。举个极端点的例子,就算一个人背下了整本新华字典,他也不一定能写出好文章。如果只是想背书应付考试,“记忆宫殿”等记忆技巧可能有一定作用,而若想要将知识融会贯通、灵活应用,整理、理解、思考的过程还是省不得的。

    总而言之,“记忆宫殿”只是众多可能助益学习的方法之一,对于每个学习者来说,没有好不好用,只有适不适合。当然,如果就是想在某次晚会中技惊四座,比如表演个三分钟速记扑克牌,“记忆宫殿”倒也可以是个不太难的“小魔术”。

    揭开“记忆宫殿”的神秘面纱 (thepaper.cn)

    5.搭建“记忆宫殿”,增强孩子记忆力

    相信有的家长会发现自己的孩子,往往在背诵课文和记忆数学公式方面往往都十分吃力,记性差并且很容易遗忘知识,当然这个问题也存在于大部分学生身上,并且这个问题没有妥善解决的话会导致孩子的学习成绩下降,自信心受挫甚至是出现“厌学心理”等,今天就带家长们来了解一下如何给孩子搭建“记忆宫殿”。

    一.首先,我们来了解一下何为“记忆”?

    记忆,从心理学上的定义是过去所做过的事情、过去所积累的经验、对事物的思考、亦或者对某件事情所引发的情绪、亦或者是过去所做过的动作等在脑海中反映出来。

    通俗易懂地来说,记忆就是从人体大脑中提取知识的一个过程,如果能够了解何为“记忆”,了解记忆的过程并且采用有效的方法来记忆,那么记忆的效果一定不差。

    记忆的过程一共有三个环节:认识记忆、保持记忆、提取记忆,这三个环节是环环相扣的,少了一个都无法称之为记忆。

    二.其次,了解孩子记形差的原因

    有些家长人可能会认为,随着孩子年纪的增长,大脑发育不断完善后,他们的大脑记忆力会逐渐增强,其实从理论上来说这样的说法是没错,但是每个人每天要见的人有这么多,所经历的场景也有这么多,孩子很容易就将学过的知识遗忘。

    那么在增加孩子记忆力之前,不妨让我们就来了解一下孩子为什么会记性差吧。

    1.记忆过程太单调

    孩子的记忆过程太过单调,并且当记忆的知识量逐渐加大,树突轴突的连接也会随之增多,反过来说,连接增多了,记忆力也能够提高。

    如果记忆过程太过单调,那么树突轴突的连接也就会逐渐减少,那么孩子记忆的“线路”也就少了,所以家长应该引导孩子学会多元化的记忆方法。

    2.记忆方法不够科学

    关于记忆方法,可能有很多家长都很陌生,甚至不知道这是什么东西,这个不急,今天我们就来了解一下记忆方法。

    大部分孩子在背诵课文、公式等知识是毫无方法可言的,只是反复记忆,这样的方法效率低且容易遗忘,当然这其中最主要的原因还是因为孩子没人教授记忆方法,也导致了孩子只能通过反复记忆来背诵,这也是孩子记性差的主要原因。

    3.大脑疲劳

    我们都知道,人在疲劳的时候是无法集中精神的,而疲劳也容易导致孩子的记忆力下降,现如今的孩子课业压力大,所以经常会长时间休息无法得到休息,这也就致使人体大脑在运转过程中所产生的一些氨基酸、二氧化碳等“人体垃圾”无法释放出体外,造成孩子的记忆迟缓,所以学习虽好,可一定要制作科学的作息规划。

    孩子记性差并非无法改变,如果家长想帮助孩子改变现状,不妨试试帮孩子搭建“记忆宫殿”,教会孩子科学记忆方法,让孩子从此过目不忘。

    三.最后了解何为“记忆宫殿”?如何搭建“记忆宫殿”?

    “记忆宫殿”其实属于西方人的一种秘书,简单的来说就是运用一些寻常的事物来记忆一些不寻常的东西,从而达到提高记忆和增强记忆力的方法,这其中有现实经验,也有臆测和真假参半的记忆。

    记忆宫殿四部曲之一:带入思维逻辑

    带入思维逻辑的核心方法就是:抓住事物的大体骨架,梳理事物中所提供的杂乱信息,找寻其中规律,亦或者是将其结构化赋予更加容易记忆的规律。

    例如记忆一串数字,你可以将它分成几个部分分别记忆,让整个内容富有逻辑,将一段很长的记忆分段记忆,这样难度就下降了不少。

    记忆宫殿四部曲之二:强化记忆

    那么如何强化记忆呢?我们可以给这些信息注入一些生动有趣的意思,让它们更加容易被记忆,被感知。

    强化记忆:将一些没有思维逻辑、毫无规律、看不见摸不着的记忆转变成一些感官能够捕捉、能够想象得到的信息,感官反应越强烈,记忆就越深刻。

    记忆宫殿四部曲之三:将记忆场景化

    记忆场景化:我们可以将一些生涩难以记忆的东西代入一个比较生动的场景当中,并将这些记忆转化为“场景剧”,这个场景剧越荒谬,记忆就越加深刻。

    当一切记忆有了画面感之后,这些所想要记忆的问题就不单单只是文字性质了,而是转化成了生动的记忆场景。

    记忆宫殿四部曲之四:将记忆串联起来

    我们前面所倡导的将知识灵活运用,那么应该如何运用呢?那便是将记忆串联起来!只有这些新的记忆和旧的记忆有关联时,你才能记得更加深刻。

    把这些想要记忆的东西,和你曾经脑海中的记忆串联起来成为一个荒谬的故事路径,那么下次想要想起的时候只需要沿着这条故事路径便可以将这个东西回忆起来。

    以上的四部曲,就是大名鼎鼎的“记忆宫殿”法,不知道看到这里的你,是否对“记忆宫殿”有了些许兴趣呢。

    总而言之,“记忆宫殿”并非这么容易搭建的,但是这个方法也是确实有助于提高孩子的记忆力,所以父母不妨尝试帮孩子搭建“记忆宫殿”,提高孩子记忆力。

    孩子记性差记不住东西?搭建“记忆宫殿”,增强孩子记忆力|大脑发育_网易订阅 (163.com)

    6.记忆宫殿地点桩的记忆步骤

    一、地点桩介绍

    1.1地点桩定义

    一般来说,桩子包括数字桩、语句桩、人物桩、身体桩、地点桩等。在世界脑力锦标赛中,应用范围最广、应用数量最多的是地点桩,或者说是记忆宫殿。地点桩是一系列有固定顺序的空间或物体。它一是给我们的图像记忆提供了表演的舞台,一是给我们提供了回忆的线索,或者说是我们进行回忆的参照物。

    1.2地点桩类型

    地点桩一般分为空间地点和物体地点。一般来说,很多外国选手会使用大量的空间地点,比如八届总冠军多米尼克所使用的地点:隔壁邻居家的房子、公共汽车站、商 店、停车场等;而我们国内很多世界记忆大师往往会使用大量的物体地点:沙发、茶几、电视等,大都属于物体地点。这与国内外选手的成长经历、文化环境和所用 编码有密切关系。

    根据我们的教学、训练和比赛经验,我们推荐国内选手在备赛中优先选择大量的物体地点。

    1.3地点桩应用领域

    在世界脑力锦标赛中,地点桩可以应用于除人名头像以外的其他九个项目(人名头像项目一般采用视桩)。

    二、地点桩的选取原则

    2.1熟悉

    首先,从我们熟悉的环境中找地点桩,比如说我们的家庭、学校、公园、上班的公司等。其一,我们天生具备以熟记生的本领,地点桩法就是这种本领的应用;其二, 对于熟悉环境中的地点,通过回忆我们以往在这里的情景,会有情感上的感触与体悟,这种情感可以大大提升记忆效率和效果。

    其次,当熟悉地点的数量无法满足需要时,我们可以去新的地方寻找,比如说一个从未去过的旅游景点等;此时,可以用照相机将地点桩拍摄下来,供我们反复回忆强化,将这些不太熟悉的地点慢慢转化成熟悉的地点。

    2.2顺序

    一 般的,我们按照顺时针或者逆时针的顺序找地点桩,从而保证找出的地点桩天然具备了顺序的属性。在记忆活动中,记住材料的顺序是成功记忆的关键要素之一,地 点桩的顺序属性正好解决了记忆顺序这一问题。需要注意的是,其一,我们这里所说的顺序是指物体的空间顺序,而不是我们日常活动的时间顺序;其二,我们要选 择固定的物体(比如电视、马桶等,一般不会挪来挪去),而不要选择活动的物体(比如家里养的宠物或者跑来跑去的玩具汽车),因为活动的物体一旦变化位置, 就会打乱地点桩原有的顺序。

    2.3富于变化

    2.3.1地点桩本身富于变化

    个性鲜明、特征突出、变化多样(形状、颜色、大小等)、有趣味又有足够区分度的物体更受大脑的喜爱,所以一般选取一系列富于变化的物体作为地点桩,而不选择重复的物体作为地点桩。

    当然,也不是说重复的物体就一定不能选择,非得选择的话,最好从不同的方位、采用不同的视角去观察,比如床左右两侧各有一个床头柜,一个选择床头柜的表面, 另一个选择床头柜里拉出来的抽屉,或者在其中一个地点桩上虚拟出一个不同的物体,比如在另一个床头柜上摆放一个漂亮的花瓶(在此将花瓶作为地点桩,而不选 择重复性的床头柜)。

    2.3.2地点桩路径富于变化

    漫步在曲折变化的路径上,可以更加轻松愉快的欣赏沿途风景,而且记得又快又牢。所以,在同一条直线上一般不选取过多地点桩。

    2.4适中

    2.4.1大小适中

    一般可以参照台灯至写字台大小来选择地点桩,比如马桶、浴缸、洗手盆等。太大的地点(比如一栋楼),运用起来会有些空旷;太小的地点(比如一支钢笔),则无法给图像记忆提供足够大的表演舞台。

    2.4.2间距适中

    在备战比赛时,两个地点桩之间的距离,我们一般控制在0.5~15米的范围内。两个地点桩之间的距离太远,会影响记忆的匀速连续性,干扰我们的记忆节奏;两个地点桩之间的距离太近,临近两个地点桩上的图像很有可能会重叠、相互干扰。

    2.4.3高低适中

    我们一般选取正常视野范围内的物体作为地点桩。过高或过低的地点,由于不在我们正常的视野内,容易遗忘。

    2.4.4亮暗适中

    我们一般选取自然光亮度下的物体。亮度太高,就像照相机曝光过度那样,影响图像记忆的清晰度;非常黑暗,像黑夜般伸手不见五指,则根本无法看到东西,也就很难发挥图像记忆的威力。

    2.5立体感

    根据我们的经验,相对于比平面而言,拥有立体感的地点桩能够给图像记忆提供一个更好的表演舞台,从而提升记忆效果。

    2.6视角

    我 们启动大脑进行图像记忆,就好比导演拍摄电影、摄影师拍摄照片;只不过我们是在大脑中运用想象力展开虚拟演出,他们则是在现实中运用拍摄工具记录真实表 演。导演和摄影师在拍摄时,会选择最佳视角进行拍摄,以期拍出最好的效果;同样的,我们在进行图像记忆时,也要选择站在最佳位置以最佳视角去观看“演 出”。

    三、找寻地点桩的操作步骤

    3.1在熟悉场景中找寻地点桩

    3.1.1实地找寻地点桩

    3.1.1.0必备工具

    相机或具备拍照功能的手机、电脑或纸笔

    3.1.1.1进场前, 通过闭目回忆预选地点桩和预设行进路线

    闭目回忆,回想起那个熟悉的场所,以及场所里发生的往事,重新体验当时的那种情景与感受;然后,在这种情感中慢慢安静下来,想象自己重新回到了这个场所,并 走到合适的位置,按照选取规则选出第1个地点桩,全方位的观察这个3D 的地点桩,并选择一个最佳视角进一步仔细观察,同时体会那种身临其境的感受;按照以上方式选取和观察第2个地点桩……当走到第10个地点桩的时候,将前 10个复习回顾一下……以此类推,最后总复习完毕以后轻轻睁开眼睛。

    注意,在闭目回忆的时候,可能某些地点无法清晰准确的呈现出来,此时无需过多纠结,在后续步骤中采取措施弥补完善即可。

    3.1.1.2进场中,实地观察和取景

    进入现场,根据此前预选地点桩和预设行进路线,实地观察场景中的各个物品,根据选取规则确定地点桩,站在适当的位置从最佳视角对每一个地点桩拍摄取景(当然,一张照片中可以同时包含几个地点桩)。

    注 意:其一,我们不仅仅运用外在的工具进行拍摄,更重要的是要动用我们人体特有的带有五种感官(触觉、视觉、听觉以及味觉、嗅觉)的“照相机”进行拍摄,也 就是要摸一摸、看一看、听一听、尝一尝、闻一闻;其二,对于上一步中感觉模糊的地点,实地反复观察增强印象再拍摄取景;其三,与上一步一样,每10个地点 桩闭目回忆一下。

    3.1.1.3退场,整理地点桩

    在前两步的基础上,将拍摄的地点桩图片编号整理,方便日后复习回顾和实战应用。

    3.1.2回忆找寻地点桩

    3.1.2.0必备工具

    电脑或纸笔

    3.1.2.1通过闭目回忆找寻地点桩和设定行进路线

    此步可参照3.1.1.1。

    注意,在闭目回忆的时候,可能某些地点无法清晰准确的呈现出来,此时可以采取以下措施弥补完善:其一,跳过这些地点,继续往下找寻;其二,在模糊地带构建虚拟地点桩,建议通过网络等途径找寻出个性特征突出的图片作为虚拟地点,并通过反复观察进行强化。

    3.1.2.2整理地点桩

    按照顺序将地点桩的编号和名称整理成文稿,为日后的复习和运用打好基础。例如,我们按照以下方式进行整理:

    编号 地点桩名称

    1 盆栽

    2 窗户

    3 台灯

    4 雕塑饰品

    5 钢琴

    6 ……

    3.2在新地方找寻地点桩

    3.2.0必备工具

    相机或具备拍照功能的手机、电脑或纸笔

    3.2.1进场前, 预览并初步设定行进路线

    对于计划找寻地点桩的新地方,整体预览并按照顺时针或者逆时针的顺序初步设定行进路线,为正式进场做好准备。

    3.2.2进场中,实地观察和取景

    此步可参照3.1.1.2。

    3.2.3退场,整理地点桩

    此步可参照3.1.1.3。

    四、地点桩找寻示例与实践

    4.1地点桩找寻示例

    4.1.1进场前, 通过闭目回忆预选地点桩和预设行进路线

    4.1.2进场中,实地观察和取景

    进 入书房,我参照前期准备工作,站在左手边开始按照顺时针的方向观察找寻

    首先,我走到盆栽前,将其选取为第1个地点桩,稍微一侧身我看到旁边的窗户,将其 选取为第2个地点桩,在此,我没有选择盆栽和窗户之间的窗帘,主要是因为它与盆栽和窗户之间的距离都太近,在图像记忆时容易造成重叠和干扰;

    然后我走到书 桌旁边,在此,我们可以选择椅子、书桌以及书桌上的台灯和电脑作为地点桩,在我们的日常生活中桌椅出现的频率特别高,个性不够突出,在此略过,对于书桌上 的台灯和电脑,台灯个性鲜明且立体感很强,所以我选在台灯作为第3个地点桩;

    接下来我走到书桌前,选择书架上这个造型别致的雕塑饰品作为第4个地点桩,旁 边那架我深深喜爱的钢琴作为第5个地点桩……当走到第10个地点桩的时候,闭幕回忆一下,然后继续找寻……将当前所在环境找寻完毕以后,再次闭目回忆所有 找出的地点桩。

    注意:我可以对每一个地点桩单独拍照留念,也可以将这个小房间中所有选取的地点桩拍摄在一张照片中(为了便于课程讲授,在这里展示给大家一张合影)。

    4.1.3退场,整理地点桩

    对于将拍摄的地点桩图片编号整理(详见上图所示),方便日后复习回顾和实战应用。

    4.2地点桩实战演练

    现 在,我已经把选取地点桩的规则、找寻地点桩的操作步骤都告诉大家了,并结合实例给大家做了展示;接下来,轮到大家启动大脑,开始构建自己个性化的记忆宫殿 了。从参加世界脑力锦标赛的角度来说,如果想达到国际记忆大师(IMM)的标准,建议大家准备1800个地点桩。那么,我们先来找出300个地点桩吧。

    五、地点桩使用和完善

    5.1地点桩的使用方法

    地点桩的使用方法主要包括记忆方法和清洗方法两个方面。

    5.1.1运用地点桩记忆的方法

    详细内容参见图像记忆第四步——图像定桩章节的相关内容。

    5.1.2清洗地点桩的方法

    5.1.2.1自然遗忘

    我 们的大脑天然具备自然遗忘的神奇功能,我们训练时也主要运用这种清洗方法。一般情况下,我们只要按照较低的频率使用地点桩,就可以给我们的大脑留出足够的 时间进行自然遗忘。比如,在记忆快速数字和快速扑克等快速项目,我们按照每天一次的频率使用地点桩,这样,第二天再运用这套地点桩时,基本已经忘记了昨天 的记忆内容;在记忆马拉松项目的时候,我们按照每两周一次的频率使用地点桩,这样,下次再运用这套地点桩时,同样也可以忘记上次的记忆内容。

    5.1.2.2主动清洗

    有时候,我们可能等不及大脑自然遗忘,此时,我们可以主动出击,运用想象力清洗地点桩。比如,我们可以想象用橡皮擦或者抹布擦拭地点桩,用雨水或水枪冲洗地点桩,用大火燃烧地点桩,用冰雪覆盖地点桩……这样,也可以逐渐消除地点桩上残留的记忆图像。

    5.2地点桩的完善

    由于我们的地点桩主要是从现实场景中找寻的,在运用的过程中,难免会发现有各种各样的瑕疵,比如,有的地点桩之间间隔有些远、有的地点桩靠的太近显得拥挤、 有的重复但又不想舍弃……根据我们的经验,可以运用三板斧——“加、减、变化”解决以上问题。比如,两个地点间隔有点远,我们可以运用想象力虚拟增加一个 地点,建议通过网络等途径找寻出个性特征突出的图片作为虚拟地点,并通过反复观察进行强化;有的地点桩靠的太近或重复,我们可以删减;对于重复但又不想舍 弃的地点,我们可以从不同的视角观察或者说运用地点的不同部位,

    或者一个保持原样,在另一个上虚拟出一个不同的物体(虚拟方法同上)。

    5.3地点群

    根据多位世界记忆大师的经验,在备战世界脑力锦标赛的过程中,一般会对地点桩进行群组划分,并且将快速数字、快速扑克等比赛项目与地点群进行配比,这样可以帮助我们提高记忆效率和效果。

    记忆宫殿地点桩的记忆步骤 - 知乎 (zhihu.com)

    7.记忆宫殿(定桩)记忆法举例详解

    也许你不敢相信,世界上还有这样的人。

    一个小时记忆2500个无规律阿拉伯数字

    3天的时间记忆1000个单词

    81章的《道德经》可以倒背如流

    是的,世界上真的有这样的人,而且可以说还不少。那么很多人都会问了,能够达到这么大的记忆容量,他们是怎么做到的?有没有什么方法?

    当然有的。

    所有的记忆大师最后采用的都是一种叫做定桩法的记忆方法。

    何为定桩法?其实简单的说就是把需要记忆的东西放在已经记忆过的东西上,那么这个熟悉的东西就是“桩”。

    想想我们有多少“桩”,比如你桌子上面的摆放的物品,你房间的摆设,你的身体,你以前记过的文章,太多太多。也就是说你一切熟悉的东西,你都可以当做你的“桩”,只要你想找,无穷无尽。

    定桩法需要做的,就是将我们要记的信息分别与熟知的桩子配对,并且在回忆时可以通过桩子回忆起我们要记的信息。

    神通广大的夏洛克在自己脑海中构建了一座“记忆宫殿”,储存了海量知识、回忆、经历,成为了他侦破案件的最佳利器之一。事实上,不仅仅是天才夏洛克·福尔摩斯,每个人都可以构建自己的“记忆宫殿”,这就是目前最有效的记忆方法之一——“定桩记忆法”,掌握了这种记忆方法,不管是语文古诗词,还是数理公式,抑或是令人头疼的政史地,都是小菜一碟!

    据传,定桩记忆法最早由公元前5世纪古罗马时期的亚里士多德发明,作为一名喜好四处游学的辩论家,他脑海中要储存足够的事实、典籍、数据,这样在辩论的时候才能使言论更有说服力和无懈可击,而亚里士多德就擅长用宫殿的柱子作为定位的记忆方法。所谓的定桩记忆法,就是将一系列有一定秩序的事物作为记忆的钩子,用某种逻辑把这些事物和需要记忆的内容联系起来,每当想起这些事物,就对应地想到要记忆的信息。

    定桩法 可分为 身体桩,地点桩、物体桩,数字桩,字母桩,词语桩,熟悉文章桩,经历桩,时间桩等等。

    凡是熟悉的东西,已经在你脑中的东西,而且它是 有序的,都可以做为桩子,所以桩子可以说是无穷无尽的。

    定桩法如何应用:

    首先,我们先用档案柜的例子说明你的脑是如何储存资讯的,不妨把定桩的桩子当成档案夹的开关,你用标签注明每份档案,如此一来,你只要瞄一眼就可以知道其里面的内容是什么,有的人也将之视作壁橱或墙上的钩子,你可以挂上夹克或外套,此处指的是心里钩子,人们挂的是资讯。其实有很多资讯早已经储存在我们的心灵知识银行里面,而且这种资讯又不可能忘掉,比如:你的名字,你家里电器的摆放位置等等这些都是你的心灵知识银行。我们可以利用这些不可能忘记的资讯来结合自己想记住的资讯,这样日后我们想回想这些新资讯,就比较容易,因为我们已经将它固定在长期记忆中的资讯——桩子上了。

    在这些桩子上面,我们要放新资讯,我们会将你所知道的事(桩子)与你想记忆的事(新资讯)用心灵胶水(联想、想象等生动的影像等)永远的粘在一起,这样你以后想提取什么资讯,很轻松的就会通过这些桩子提取出来。

    下面我们结合一些具体的例子来学习几种简单易上手的定桩记忆法:

    一、身体部位定桩

    身体部位是最常用的“桩子”种类之一,因为我们对身体部位的熟悉程度十分充分,甚至可以直观地看到或感受到,这首先免去了我们记忆“桩子”的工夫。而且它也符合 有序这个条件,比如从下到上。先是脚,然后是膝盖, 大腿,腰,手,嘴,鼻,眼。额头.....

    不会有人额头在脚下的吧,呵呵,所以就可以用来做桩子,定好一些要记的信息,作为回忆时的线索。

    定桩法之身体桩的步骤:

    1.定桩,把作为桩子的身体部位顺序定下来。

    2.固桩, 感觉几遍,如果是自己的话,可以用手拍拍脑中想起的相应部位,使它的顺序固定。

    3.减法,提取关键词。

    4.乘法,就是想象,把关键词转换会适合右脑记忆的图像或场景甚至声音等。

    5.加法,把关键词转换来的图像和身体桩相联想。

    6.脑中成图回忆,顺序是:熟悉的身体部位,即身体桩 ――联想的图像――对应的关键词 ――文章

    7.定位。把作为桩子的那个人。可能是你自己,放到你的知识体系里面。(如知识有体系)

    8.零碎时间复习 ,活化。

    例如:记忆十二星座:

    1.定桩:脚趾,膝盖,大腿,腰,手,脖子,嘴,眼,头顶,肩,左

    耳,右耳。

    2.固桩:动动你的脚趾,感受一下动起来的感觉 ――摸摸你的膝盖 ――

    拍拍你的大腿 ――叉叉你的腰 ――摇摇你的手 ――摸摸你的脖子 ――

    努努你的嘴 ――眼放一下电 ――拍拍你的头顶 ――扯扯左耳朵 ――拉

    拉右耳朵 ――拍拍肩膀。

    3.减法:十二星座:白羊-金牛-双子-巨蝎-狮子-处女-水平-

    天蝎-射手-水瓶-三羊(魔羯)-双鱼

    4.乘法:因上面的都是实物名词,(实物名词就是能看见, 摸得着的)

    这步省略。

    5.加法:

    想象白羊舔你脚趾――好痒

    金牛顶你膝盖――牛顶回去了

    双子抱你双腿 ――舒服

    巨蝎夹你两腰――腰硬,巨蝎夹子断了

    五指梳理狮子头发――很顺手

    处女脖子带上戒指 ――闪着光

    嘴上放着天平――体验天平中间放在努起来的嘴上的感觉

    眼放电射焦飞来的 天蝎――臭味难闻

    射手站在头上射箭 ――威风

    水瓶放肩上――注意别掉了

    三羊咬你左耳朵 ――好疼啊( 魔羯的话,可以想象魔戒(谐音)带在左耳上)

    双鱼从右耳朵 游出来――痒痒的

    想得到么?

    Ps:红色为十二星座, 绿色为身体桩。

    6.脑中成图

    7.在想象这个场景时把自己放在星座知识的环境中进行。

    8.随时复习

    又例如我们用身体部位定桩法来记忆王安石变法的影响

    记忆内容为:一定程度上抑制了豪强地主的兼并势力;使农户所受的剥削有所减轻;促进了农业生产的发展;扭转了西北边防长期以来的屡战屡败的被动局面,使用的身体部位分别是头、眼睛、鼻子、嘴巴、耳朵。

    头——豪强在当地就像土匪头子一样,对人民的牵制作用很大,从头就联想到了豪强地主,可以结合拍打头部的动作,更加生动形象;

    眼睛——农民获得了好处,流下了喜悦的泪水,因而跟眼睛有关系;

    鼻子——农业在当时是国家发展的关键和基础,而谚语“牵牛要牵牛鼻子”说的也是寻找牛的关键部位,由此两者可以连接起来;

    嘴巴——嘴用来进食和摄入营养以维持人身体的运作,就像政府获取财政收入维持国家的运转;

    耳朵——耳朵可以代表获取信息的感官,守边需要保持顺畅及时的讯息来源,这和西北边防就联系在一起。

    想不到的时候就拍拍头、眨眨眼、摸摸鼻子,这样是不是就很好记了呢!

    二、地点定桩法

    这种方法的特点是可选用的“桩子”多,适宜记忆繁杂多样的内容,当然对熟练程度也要求更高。举一个简单的场景——最常去的一个公园,用来记忆李煜的《虞美人》。

    公园门口有一个大花坛,春天的时候花团锦簇,时常有人坐在旁边聊天赏花——春花秋月何时了,往事知多少;

    再往里走会看到几栋小阁楼,风吹过的时候挂在屋檐的铃铛会作响,晚上月光洒下也十分好看——小楼昨夜又东风,故国不堪回首明月中;

    继续前进就到了有着精致花雕的白桥,近几年刚刚翻修过——雕栏玉砌应犹在,只是朱颜改;

    最里面是一条人造河流,但因为人们不注意保护,水质非常不好——问君能有几多愁?恰似一江春水向东流。

    对于地点有几个要求:

    1、熟悉,我们生活中熟悉的地方开始,如自己家里、亲戚朋友家里、学校、公园等,多复习几遍。

    2、顺序,可以按顺时针或逆时针方向来找,找的地点最好能够连成一条不会交叉的线。而且这条线最好是曲线,髙低错落,而不是一条直线直到底,直线记忆起来很费劲。

    3、适中,地点要大小适中,太小了看不见,太大了看不全。

    4、固定,找的地点不能是经常移动的,如一只小狗。特別是在长期生活的家里找地点时,如果地点变动了,使用起来容易混淆。

    地点定桩法的想象力联想

    下面的练习是关于想象力,而不是记忆力的测试,不过,在仔细看完这张列表后,你应该能够全部记住这些事物。你将使用的是行程式的定桩法,或者轨迹法——古希腊人在两千多年前就已经知道并会使用这一方法来提高记忆。

    你必须注意以下几点:

    在头脑里设想一条包括12个场所的路线。比如,可以是从家到学校,或者到朋友家的路线。

    选择明显、难忘的标志物作为行程上的各个场所,如教堂、车站、邮局。

    确保路线有合理的方向性,这将保持列表内容的顺序。

    如果你对路线感到满意了,请在看列表之前先熟悉这一路线。

    路线也可以是这样:

    场所1 前门

    场所2 大门

    场所3 小商店

    场所4 红绿灯

    场所5 人行桥

    场所6 入站口

    场所7 第4站台

    场所8 火车

    场所9 教堂

    场所10 大学校门

    场所11 图书馆

    场所12 你的课桌

    接下来的事情:

    把列表上的每件事物,按顺序放入行程上的每个场所。比如,你选择的第一个场所是前门,那么相象你看到一个巨大的钟放在门阶上,堵住了路。到了第二个场所,你看到一长串熏肉吊在大门口,你闻到了明显的熏肉气味。在小商店的外面,你看到艾菲尔铁塔的身影。这只是一个模型,但它怎么会在这儿呢?......继续下去。

    你每天都会去学校,但是这次,你在路上会经历一些不同寻常的事件。除了在每一个场所浮现出每一件事物的形象,再试图想象那里的氛围。运用你的所有感官——听听交通的噪音;天气怎么样,温和还是寒冷......味觉、嗅觉和触觉也会有所帮助。同时,记下你看到每件事物时的反应。

    提示:不要设法去记忆这些词语,只要设法把它们带入到场景中来。记住,这是一个对相象力的测试。没有时间限制,不必着急。好好享受你的旅程

    1. 钟表 2. 熏肉 3. 铁塔 4. 孙悟空 5. 宠物 6. 小燕子

    7. 冰淇淋 8. 方便面 9. 糖葫芦10. 轮船 11. 公牛 12. 皇冠

    虽然我说过这只是对想象力的测试,但我相信想象力是记忆的关键,所以我认为你能够同时记住这12项内容。

    完整的回忆:

    要回忆起列表内容,你所要做的便是回顾你的行程。回放你头脑里的电影胶片,回忆那些不寻常的场景。如果你对某一个场所感觉是一片空白,这不是你的记忆力有缺陷,而是你对行程的安排出了点问题。当记录设备出故障时,不要去责备放映机。如果你漏掉了一个场景,是因为你描绘的图像没有对记忆产生足够强烈的冲击影响,不够刺激。所以,回到相关的场所,重新进行拍摄。你可能发现,记住那两个人物——孙悟空和小燕子比记住别的内容要更容易,原因我已经说过了。这就是为什么必须对场景进行夸张,以弥补这些内容不够生动的原因。

    这种方法的妙处在于,它是一种组织性很强的假想;当然,前提是你的线路也是这样。这是一个高效的心理整理系统,可以方便快捷地获取任何需要的资料。比如,如果你想知道"熏肉"后面出现的是什么事物,通过参考你的行程,便可以很容易地知道答案是"艾菲尔铁塔"。类似地,你还可以从后向前地复述列表内容,这只需将你的行程倒转过来,也就是,按照从学校回家的顺序回想。

    如果你觉得这个练习不难,那么你可以进一步开发使用行程法,使用这个方法,可以存储的信息数量是无限的,因为存储空间是足够大的——比如地理位置,这都是无限的。

    这是快速记忆最基本的方法,但也是最有效的方法之一。记忆宫殿的记忆方法是将信息转化为图像情景模式,把信息与物品串联起来,就是把要记的东西跟宫殿里之前记的东西联结起来。你唯一需要做的就反复练习,当你掌握这种方法之后,会很容易从前向后,或从后向前进行复述。就像大部分的记忆增强方式一样,记忆宫殿法通过形象化的联想起作用。过程很简单:你选择一个已知的图像——称为记忆挂钩——和你想记住的要素结合起来。对我们来说,一个记忆挂钩就是我们记忆宫殿里的一个明显的特征物。只要保持头脑中的画面联想,把要记忆的内容串在一起,直到搞定所有要记的项目。

    用这种方法去记忆一篇文章,先要忘记它讲的是什么,去把整篇文章,一堆堆的文字当成一幅画,然后去整体记住这幅画是什么样子的。记住一个画面,然后还原这个画面,要比你记住一个抽象的概念容易得多,而且能记住的信息量也要大得多。这种方法好处就是记忆的难度和记忆对象的复杂程度关系不大,背一篇古文和一篇现代文难度差不多,具体能记住多少内容就看你能记住多少细节了。缺点就是你如果想要调用这部分记忆,需要重新把它翻出来再看一遍,才能理解记住的这些内容。比如你用这种方法记住的文章,背诵的时候就要想象出这幅画,然后照着念一遍。

    三、人物定桩法

    顾名思义,人物定桩法就是使用我们熟悉的人,包括家庭成员、自己的好朋友、脍炙人口的文学影视作品的角色等等。比如中国的几种气候:热带季风气候、亚热带季风气候、温带季风气候、高原山地气候、温带大陆性气候,可以分别对应身边不同性格的朋友:过度热情甚至引起人不适;时而非常活泼多话,时而有些安静但不内敛;性格极为温和,只有在热闹的场合说几句话;个头很高,有些高冷;较为腼腆,少言寡语。

    除了这三种,还有很多可以用作“桩子”的物件,如标题、数字、扑克牌或者麻将花色等等,一般选用的桩子必须要自己足够熟悉或者很容易想起、不能够有大的变动、体量和所记忆的内容多少相对应、按照一定的顺序排列。

    良好的“桩子”选取是定桩记忆法成功的一半,当然也需要更多的练习、掌握一定的技巧,这样下来,人人都可以是拥有宏大“记忆宫殿”的夏洛克·福尔摩斯!

    这或许是目前最好用的记忆方法——记忆宫殿(定桩)记忆法举例详解|联想_网易订阅 (163.com)

    8.记忆宫殿之身体定位记忆法

    身体定位就是在我们的身体上按顺序选一些部位,我们称为记忆的桩子,然后把将要记忆的信息与我们身体的部位(桩子)分别进行连接,这样不仅可以帮助我们非常快的记住我们想要背的东西。

    如何运用选定位点

    1. 首先按顺序在自己身上寻找并记牢每一桩子,如脚指、小腿、膝盖等;
    2. 把要记的事物和桩子挂钩起来。脑海里要看到桩子和事物的图象;
    3. 在一个桩子上可以记忆几样事物。注:在初步练习时,最好一个地点记忆一件事物;
    4. 牢记桩子,以方便日常运用;举例:以下是一个人,你也可以选择自己身上的桩子。注意所选桩子的顺序。

    身体定位:

    1. 脚底 6、喉咙2、膝盖 7、嘴巴3、皮带 8、鼻子4、左手 9、眼睛5、胸口10、头顶

    现在我们来记住这十个身体代,将这些代排序,就是身体从下往上排。第一个,脚底,踩踩脚底,好!第二个,膝盖,拍拍膝盖!第三个,皮带,摸摸皮带,光滑的感觉。第四个,左手,伸伸左手,别伸了右手哦。第五个,胸口,拍拍胸口,我一定能记住。第六个,喉咙,摸摸喉咙,再捏一把,有点痛,记住了;第七个,嘴巴,张张嘴巴,深呼吸,好!第八个,鼻子,点点鼻尖,上面有豆豆吗?第九个,眼睛,眨眨眼睛。最后一个,头顶,摸摸头顶,希望上天的馅饼掉下来时不要砸到它!

    好,从脚到头我们都数了一遍,下靡们来测试,看看自己记住了没有?请按照数字顺序在横线上写上身体的部位:

    身体代测试

    1,6

    2,7

    3,8

    4,9

    5,10

       

    看看是不是全部记住了?

    如果没有,请再重复一次刚才的动作,如果记住了,进行下面的练习,我说数字,然后你说身体的部位。第4个?好!第7个?嘴巴,对了,第8个?第1个?第10个?第5个?第3个?第9个?第2个?第3个?

    好!现在我们对身体代已经很熟悉了,下面用身体定位记忆练习

    1. 纸巾 6、毛巾
    2. 拖鞋 7、啤酒
    3. 腊肠 8、词典
    4. 红鱼 9、钢笔
    5. 电饭锅 10、烫斗

    这个练习就是购物清单,如果我们学会了怎么记住,以后去超市就不需要再用纸啊笔啊写下来了。好!下靡们来学学怎么用身体代记住这个购物清单。

    我们第一个定位是脚底,要记的东西是纸巾,闭上眼睛,想象臭臭的脚底粘着很多香香的纸巾,一踩上去,软绵绵的,像棉花一样,非常舒服。第二个定位是膝盖,用膝盖像踢毽子一样踢拖鞋,飞上去,掉下来,砸在膝盖上,膝盖再用力,拖鞋又飞到了空中,再掉下来,砸在膝盖上……好,第二个需要购买的是拖鞋;第三个定位是什么?对了,皮带,忘记的朋友要摸摸皮带哦,噢!不好了,怎么我的皮带变成了腊肠,一条很大很大的红色的、摸上去硬硬的腊肠?不怕,这只是我们需要购买的第三个物品:腊肠!第四个定位是什么?左手,伸出左手,抓住一大把的红鱼,如果不知道什么是红鱼,不管了,红色的鱼就是红鱼啦。第五个,胸口,要跟电饭锅联系在一起,在胸口上用电饭锅煮饭怎样?是不是很烫?

    第六个,喉咙,要记住的是毛巾。开运动会时别人是在额头上绑个毛巾,可是你不同,你是在喉咙上绑的,在喉咙上绑条白色的毛巾,防止嘴巴里面的啤酒流下来,这啤酒什么味道的?甜甜的,有点苦涩,还很清凉,冰凉的感觉,第七个嘴巴的啤酒也记住了。第八个定位是鼻子,要记住的物品是词典,这本词典就放在鼻子上,闻到词典发出的书本特有的香味。第九个定位是眼睛,睁大眼睛,不好了!一支钢笔迎面飞来,快要飞进你的眼睛了!危险!第十个定位是头顶,理发师傅正在用烫斗帮你理发呢,滋滋地,你的头发一条条变得很直的同时也烧焦了~

    好!现在闭上眼睛,回想一下身体的各个部位分别放着什么?首先是脚底,踩着……对了,是柔软的纸巾,第二个,膝盖上上下跳动的是拖鞋。然后是皮带,绑着红鱼……

    回想一遍后,在下面按照顺序写下答案:

    1,6

    2,7

    3,8

    4,9

    5,10

           

    怎样?以后购物就不用拿清单了,直接将需要买的物品放到身上。同样的道理,请大家试着做下面的测试,依然是使用刚才的十个身体代记住下面两组信息,为自己计时哦。

    身体定位法记忆测试:

    准备一个秒表,试用身体定位法记忆下列词语,并记录时间成绩。

    1. 玫瑰花 6.插头
    2. 茶叶 7.吉他
    3. 电池 8.音箱
    4. 计算器 9.报纸
    5. 海报 10.保温瓶

    回想一遍后,在下面按照顺序写下答案:

    1,6

    2,7

    3,8

    4,9

    5,10

           

    共需时间: 分 秒


      顾名思义,身体定位就是在我们的身体上按顺序选一些部位,我们称为记忆的桩子,然后把将要记忆的信息与我们身体的部位(桩子)分别进行连接,这样不仅可以帮助我们非常快的记住我们想要背的东西。

    记忆宫殿法之身体定位记忆法 (xuexila.com)

    展开全文
  • 最强大脑解密

    2022-03-27 09:32:02
    最强大脑中的一些项目,属于看起来难,其实不难,我把我找到的技巧列出来。 最强大脑合集 一,盲填数独 这是最强大脑第一个模板题。 首先我们看到,填数字和填颜色的数学本质是一样的,只不过颜色的记忆可能...
  • 最强OLAP分析引擎-Clickhouse快速精通一 ==楼兰== 文章目录一、Clickhouse简介1、什么是Clickhouse2、Clickhouse适用场景。二、Clickhouse环境安装1、线上快速体验2、本地快速部署3、远程连接clickhouse3.1 打开远程...
  • LR分析及分析程序自动构造 概述 上下文无关文法的LR分析 LR:自左至右扫描,最右推导的逆过程(也就是最左归约) LR方法: 在归约的过程中,一方面记住移入和归约的整个符号串,另一方面通过产生式推测未来...
  • 史上最强C语言教程----万字初识C语言

    千次阅读 多人点赞 2022-01-02 20:07:17
    史上最强C语言教程系列----万字入门C语言
  • #起别名时,as都可以省略 select id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略"" select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略...
  • 测试用例构成要素:用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤预期结果。 二、黑盒测试用例设计方法 ​ ​ 1.等价类 概念:在所有测试的数据中心,具有某种共同特征的数据子集 ​ ​ ...
  • 一、前言:售价29999元 i9-9900K造就最强ROG游戏主机2018年10月9日,英特尔正式发布了第九代酷睿处理器,其中旗舰型号i9-9900K,这款主流平台最强的处理器产品是Intel第一次将i9序列引入到主流桌面市场、第一次为...
  • LR(1),它功能最强,但代价也最大。 简单的 LR 分析表: 简称 SLR ,最容易实现,但功能最弱。 向前看的 LR 分析表: 简称 LALR,功能和代价处于前两者之间,适用于绝大多数程序语言的文法 总结...
  • 经常有人把Java内存区分为堆内存(Heap)和栈内存(Stack),这种分比较粗糙,Java内存区域的划分实际上远比这复杂。这种划分方式的流行只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两...
  • 一、Java 基础知识 1、Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝...
  • 1、引言随着Android系统的不断升级,即时通讯网技术群和社区里的IM和推送开发的程序员们,对于进程保活这件事是越来越悲观,必竟系统对各种保活黑科技的限制越来越多了,想超越系统的挚肘,...
  • 科学把妹

    2019-09-24 17:02:37
    DATE A GIRL BY SCIENCE ...中文名:科学把妹 外文名:Date a Girl by Science 类别:行为心理学由来 其实,把妹是个脑力活。很多人以为,所谓泡妞秘籍就是港产片经常挂在口边的“胆大心细面皮厚”。大错特错,...
  • 史上最强数据结构----二叉树的概念及结构(附习题解析)
  • 最强前端笔记(没有之一)(^-^)

    千次阅读 2020-04-30 10:10:48
    MD 语法 链接 [淘宝网](http://www.taobao.com/) 图片 ![图片标题](file:///Users/wangjing/Desktop/511542077195.jpg) 标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ... *这是...
  • 以太网提供无连接,不可靠的服务 **无连接:**与UDP一样,发送方与接收方直接无“握手过程” 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧之间丢弃,差错纠正由高层负责 以太网只实现无差错...
  • 1.1、等价类划分: 根据软件测试原则可以知道,要做到穷举是不可能的,事实上也是不必要的。为了减少工作量,需要对测试用例进行适当选取。等价类划分便提供了一种选取测试用例的方法。 等价类划分把程序的...
  • VBA:完美解决数独问题----全网最强

    千次阅读 2020-11-27 11:42:22
    程序主界面: 我是在WPS的电子表格里设计的,可以看到最左边和最上边的数字编号,这是表格的行、列编号,是绝对定位编号,我设计的数独九宫格,是在上面空了两行,左边空了一列开始绘制表格的,所以我在上面标注了...
  • 疯狂架构师讲解最强:并发编程模式PDF篇,含并发编程面试及答案 2022-03-31 21:30·90后小伙的追梦之路 同步模式之保护性暂停 1.定义 即Guarded Suspension,用在一个线程等待另一个线程的执行结果要点 有...
  • 清单编号:10 课程内容:分治 学生们 登记 学生 1/1520371 布鲁诺·奥利维拉·丹塔斯(Bruno Oliveira Dantas) 17/0031438 达马索·尤尼奥·佩雷拉·布拉西利奥(DâmasoJúnioPereira Brasileo) 关于 Hero ...
  • 输出格式: 按照题目要求找到最合适的进攻路径(题目保证速度最快、解放最多、杀伤最强的路径是唯一的),并在第一行按照格式己方大本营->城镇1->…->敌方大本营输出。第二行顺序输出最快进攻路径的条数、最短进攻...
  • 错误推测 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在...
  • 集五福最强攻略2019

    2019-02-01 21:35:06
    今年的集五福推出了新的玩,“花花卡”和“沾福气”。 其中“花花卡”更是诚意满满,获得了小伙伴们的争相追捧。 按照支付宝官方规则,如果您的手里的花花卡编号与中奖号码一致,那么恭喜您中大奖了哦! 如果花呗...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,878
精华内容 751
关键字:

最强编号法

友情链接: artofembed.rar