《自卑与超越》

题记:

没有了解一个人的童年,是不会了解他的现在的。

1、不理智的行为是如何产生的:

在日常生活中,你是否会做出一些自己明知道并不理智的行为?比如沉迷于忙碌的状态中,逃避可能出现的困难,刻意在他人面前表现自己,不想与任何人产生交流,对别人的优秀感到痛苦,无法忍受别人的忽视,想方设法报复他人,或是突然间大发脾气甚至是伤害他人……等等。我们经常会把这些行为归结于各种各样的原因,但其实这些行为的本质,都是源于我们的自卑。

2、自卑是如何产生的:

我们拥有的自卑感,往往源于童年的经历:家庭的贫困、父母的忽视、他人的欺凌、生理的缺陷等等。这是因为当我们还是孩子的时候,对世界的感知能力很强,但是解读能力很差。当我们感受到痛苦的时候,如果没有得到正确的引导,甚至于遭到父母的责骂,我们就很容易将这些痛苦当成自己的过错,把这些痛苦内化成我们自己的一部分,从而形成自卑。

3、我们每个人都有自卑

我们每个人都会有或多或少的自卑感,当我们对面临的问题没有做好恰当的准备或应对,而且认为自己无法解决时,自卑感就出现了。我们常常会因为自卑而感到紧张,不过,正是因为有着自卑感我们才会超越,正是因为超越才得到成长,所以自卑本身并不可怕,可怕的是我们所做的绝大多数行为,其实都是在错误地面对自卑

4、错误面对自卑的方式——寻找优越感:

我们往往会选择两种方式来面对内心的自卑。一种是营造内心的优越感:比如我只要不去努力,就不会暴露自己的能力不足。一种是追求外在的优越感,比如我必须要比别人努力和成功,才可以掩盖自己的能力不足。这两种表现的原因其实是一样的,都是害怕自己能力不足带来的自卑感。同理,当我们害怕受到别人伤害时,既可能通过封闭自己来营造内心的优越感,也可能通过伤害和报复他人来追求外在的优越感。所以,我们绝大多数不理智的行为,本质上都是通过寻找优越感来掩盖自卑的行为。

5、正确面对自卑的第一种方式——认清自卑:

所以,如果想要正确面对我们的自卑,第一种方法是从根本上认清我们的自卑:当我们不认为自己的能力不足时,或者我们不把别人的态度当作伤害时,我们的自卑感自然就迎刃而解了,只要没有自卑感,很多都只是普通的事情而已,这也正是我们为什么很难理解他人痛苦的原因。但当局者迷,如果想要正确认识自己的自卑感,首先要找到自己自卑的根源所在,还要通过学习来掌握认清它的知识,再加上这种自卑感通过长年的积累,已经深深地内化成了我们自身的一部分,所以仅靠我们自己是很难做到的,必须要得到他人的帮助,这也就是正确面对自卑的第二种方法——学会合作。

6、正确面对自卑的第二种方式——学会合作:

虽然我们的自卑感很难避免,但我们还有另外一种面对自卑的方式,那就是——通过与他人的合作来超越自卑。我们每个人其实都是生活在社会中的,职业、同伴和爱人都是我们与社会的连接。如果我们的职业目标是为社会产生价值,与同伴之间更多的是合作关系而不是竞争意识,并且与爱人平等相处、相互关爱的话,我们就能真正跳出寻找优越感的陷阱,从而坦然面对自己的自卑和不足,因为我们将明白人无完人,而我们的不足是可以通过他人的力量弥补的

7、正确的职业目标——价值

一个正确的职业目标,应该是为社会创造价值。如果我们职业目标只是为了活出优越感,那么我们无论做什么都不会满意。如果我们努力的方向不符合社会的需求,那么我们就会陷于忙碌和焦虑之中,而如果我们的行动不考虑他人的利益,我们的行为就会相当不明智,所有的犯罪都是来自于寻找优越感的捷径

8、正确的同伴关系——合作

我们从小受到的教育,培养的都是我们的竞争意识,伤害的却是我们的合作能力。自卑情结往往告诉我们,合作中的成功不属于你,我们总是以竞争意识来面对朋友或同事的关系,但这样只会让我们在寻找优越感的错误上越走越远。相反,如果我们以合作关系来对待我们的同伴,在努力过程中也使别人受益,我们就会更加容易获得他人的合作,也不会发现别人很难被说服。所有的失败者只有一个共同的特点:那就是和他人的合作能力非常差。

9、正确的家庭关系——平等

在一个家庭之中,最好的关系就是平等——夫妻之间平等,父母与子女之间同样平等。夫妻之间应明白双方的所承担的责任只不过是家庭劳动分工的结果,绝不应让自己所做的看起来像是在给予。父母还要帮助孩子去正确的解读在生活中面对的各种各样的问题,让孩子能够感受到自身的能力是可以通过不断训练得到进步的,让孩子感受到来自父母真正的关怀,这样才可以帮孩子正确认识自己,学会合作,学会关爱别人,学会和他人之间建立连接和关系,用父母对待他的方法去对待别人。

10、自卑与超越

我们在心底对价值观和成功的所有评判,最终都建立在合作的基础上,这就是人类最伟大的共同点。心理学就是对合作中缺陷的理解,如果自己和社会、朋友、家人在合作中没有缺陷,那么自己的心理就很健康。所以自卑并不是我们的心理问题,有问题的是当我们感受到自卑的时候去寻找优越感的行为。所以如果想要真正超越自卑,实现自我价值的成长,秘诀就在于这三个词:合作、平等和连接

———————————————–篇二——————————————

1、家庭成员间平等的地位

我们现在常常在提到,要给孩子真正的接纳和爱,讨论如何激发和鼓励孩子的自发成长,然而还有一个重要的问题需要学习:到了孩子从婴幼儿变成儿童时,我们如何不以越位的母爱来宠溺和禁锢孩子

事实上,感情的地位是任何其他经验都无法比拟的。母亲的第一职责就是,当孩子出生时,就让孩子感受到她是可以被依赖的,然后,她会将这种依赖之情扩大,直至它涵盖儿童所接触的环境之中的一切事物。 p.18

更好地完成这一过渡,需要父亲的参与:

当一个母亲成功地和孩子建立联系后,她第二个工作就是将孩子的兴趣引导到父亲身上。

母亲们需要警醒的是:

在问题儿童中,我们发现了各种各样被宠坏的儿童。他们采取一切手段来获得母亲的注意,并拼命排斥与世界的任何联系。

紧接着,阿德勒谈了父亲在家庭中的责任和态度,这在近一个世纪前,无疑的理念领先:

婚姻是一种合作关系,所以两个人都不应该试图驾驭对方。

作为父亲,他必须证明他是妻子的好丈夫、孩子的好父亲、社会的好公民。他必须通过正确的方式应对生活中的三个问题:事业、友情、爱情。他必须以平等的地位与妻子合作,并照顾保护他的家庭。他要记得,在家庭生活中女性的创造性地位是要受到尊重的,他的责任不是贬低妻子的母亲角色,而是和她一起工作。在金钱方面,我们要特别强调,即使父亲是家庭的主要经济来源,财富仍然是家庭共有的,父亲绝对不应该表现出他在施舍,别人在接受。在理想的婚姻生活中,由男人提供主要的家庭经济来源不过是家庭成员之间分工合作的结果。

父亲对孩子的影响非常大。很多孩子一生都把父亲当作自己的偶像,还有一些孩子则将父亲当作自己的敌人。处罚,尤其是体罚,对孩子的伤害是很大的。最正确的教育方式就是友善的方式。

2、判断的形成

但坦率来说,这本书其实不那么容易读懂,显得零散且逻辑脉络不够突出,甚至在通读完整本书,并在尝试读书笔记的时候,仍不能更好地把握什么是「自卑」,什么又是「超越」。书中有这么一段:

当一个人面对一个他解决不了的问题时,他明确表示无法解决这个问题,此时便是自卑心理,此时出现的所有情绪都叫做自卑情绪。由此我们可以看出,眼泪、愤怒、道歉都是自卑心理的表现。自卑心理会让人感到紧张,因此他们会通过优越感来进行补偿,但是他们的目的并不是要解决问题。他们通常把真正要解决的问题放置在一边,通过小事情来寻找优越感。他会限制自己的活动,努力避免导致失败的因素,在困难面前,他们不是表现得勇于进取,解决困难,而是犹豫、彷徨,甚至是退却。

这样的表述似乎不容易答对考试时的名词解释,对吗?

但这本书妙在看似杂而乱,却能成功触碰你的心灵,你感觉一些飘动的成长感受被一击而中,产生了原来如此的感受。

这种感觉很奇妙,举个例子,阿德勒在这本书中重点讨论了三种容易形成错误人生意义的儿童:身体缺陷、被溺爱、被忽视。也许我们在成长过程中都有不同程度或浅或深的体验——比如说对接纳自己身高或容貌的不完美,童年有一位因疼爱自己而特别容易松动底线的长辈,又或者是生活在多子女家庭中、有被忽视的感受。

孩子在童年时期心情压抑,往往就是因为父母过于关心其他兄弟姐妹而忽视了他。

书中紧接着讨论了兄弟姐妹出生次序对成长的影响,这让我产生了强烈的个人生活经验代入感。从生活中来说,有被忽视感觉的可能不是一个孩子——大的觉得小的更受呵护,小的觉得大的拥有更多的自由和权利,中间的觉得自己没有受到足够关注,两头的却羡慕这样不受约束的自由……父母也难做。如果是有一些有公平意识、懂得平衡艺术、并且关心爱护子女的父母,自然是好,然而常有父母双方、或父母中的一方并没有如何教养孩子的意识,也缺乏爱的能力(多是因为他们自己的童年也鲜有得到)。

这样的分析,无疑有助于正在做父母的人,正视子女教育中自己的责任,也让已经成年的人能够了解自己的过往心结。

书中关于「选择性记忆」部分也有很精到的描述:

记忆不是偶然存在的,每个人从自己接收到的、多得不可计数的印象中选择出来进行记忆的,肯定是那些对他所处的情境具有极其重要意义的事件。所以,一个人的记忆是他的生活故事,他会不停地用这个故事安慰自己或警告自己,来使自己集中精力实现自己的目标,并根据过去的经验,让自己以一种成熟的姿态面对未来

记忆的正确性并不是重要的,其最大的价值在于他们代表了一个人的判断

我们看到,经验本身所留下的感受和判断,在童年时期形成,将对一生产生巨大的影响(和束缚)。

3、学校教育的延伸意义

阿德勒非常强调好教师的重要性,认为学校教育是家庭教育的补充,其意义也在于提供比家庭更广阔的领域,让孩子学会与人合作。他对教育目标的立意很高:

我们让孩子接受教育,不仅仅是为了让他找到一份工作或习得一种谋生的技巧,而且让他们在人类的发展历程中贡献自己的力量。

他以成长思维来看待孩子的成长和发展,认为能力不是固定不变的,最差的孩子也有进步的可能,而兴趣点和自信心是可以培养的,「优秀的人具有的不是超出常人的基因,而是不断的努力和丰富的兴趣」。提出思想束缚所能造成的危害,对基因论、先天论、宿命论提出了有力的反驳。

爱因斯坦:《我的世界观》

Maven编译指定module

今天在项目里新添加了一个Module, 但是在jenkins编译的时候会将这个Module也编译, 问题是这个Module根本不需要编译而且巨慢。

因此我只想编译指定模块 ModuleA以及它依赖的必须模块, 以下是相关的命令

-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects <arg> 构建制定的模块,模块间用逗号分隔;
-rf -resume-from <arg> 从指定的模块恢复反应堆。
    <modules>
        <module>ModuleA</module>
        <module>ModuleB</module>
        <module>ModuleC</module>
        <module>ModuleD</module>
        <module>ModuleE</module>
    </modules>

首先查看一下依赖关系

mvn dependency:tree

当不然不是上面这句, 所有的依赖关系太复杂了, 会列出依赖的所有的包

自己打开各个module的pom看一下互相之间的依赖就行

假如只想编译ModuleB及其依赖的模块, 那么在编译的时候

mvn clean install -pl ModuleB -am

假设Module依赖了A和C, 那么在编译的时候就只会编译A B C三个模块~

如果ModuleD依赖了B, 然后在编译的时候使用了-amd的话, 那么ModuleD也会被编译, 这个意思就是编译依赖了所列模块的模块

mvn clean install -pl ModuleB -am -amd

使用上面的命令会同时编译 A B C D ~

-rf 选项用于选择起始位置(发现结合-rf的时候, -am和-amd是需要后置的)

假设ModuleA和ModuleC都依赖ModuleB, 那么如果在ModuleB截断, 整个流程不会变, 如果在ModuleA截断, 那么只会从ModuleA开始执行后面的构建流程。

mvn install -pl ModuleB -am -amd -rf ModuleA

上面的命令是从ModuleA开始截断的

总结

一般来说经常用到的命令, 你想编译的Module: ModuleX

mvn clean install ModuleX -am
mvn clean package install -pl 模块的名称 -am

JDK中jstack、jmap、jstat工具使用说明

  • jstack 查看线程
  • jmap 查看内存
  • jstat 性能分析

jmap摘要

jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP

jmap参数

option
选项是互斥的。如果使用了选项,则应紧随命令名称之后。

pid
要为其打印内存映射的进程ID。该进程必须是Java进程。要获取机器上运行的Java进程的列表, 可以使用jps。

executable
Java executable from which the core dump was produced.(生成核心转储的Java可执行文件。)

core
core file for which the memory map is to be printed.(要为其打印内存映射的核心文件。)

remote-hostname-or-IP
远程调试服务器的主机名或IP地址。

server-id
如果多个调试服务器在同一远程主机上运行,​​则为可选的唯一ID。

描述
jmap打印给定进程或核心文件或远程调试服务器的共享对象内存映射或堆内存详细信息。如果给定进程在64位VM上运行,则可能需要指定-J-d64选项,例如:
jmap -J-d64 -heap pid

注意:
此实用程序不受支持,在JDK的将来版本中可能可用,也可能不可用。在不存在dbgeng.dll的 Windows系统中,需要安装“ Windows调试工具”才能使这些工具正常工作。另外,PATH环境变量应包含目标进程使用的jvm.dll的位置或从中生成故障转储文件的位置。

For example, set PATH=<jdk>\jre\bin\client;%PATH%

jmap参数选项

    <no option>
    如果不使用任何选项,则jmap将打印共享对象映射。对于目标VM中加载的每个共享库,将打印起始地址,映射的大小以及共享库文件的完整路径。这类似于Solaris pmap实用程序。

    -dump:[live,]format=b,file=<filename>
    Dumps the Java heap in hprof binary format to filename. The live suboption is optional. If specified, only the live objects in the heap are dumped. To browse the heap dump, you can use jhat (Java Heap Analysis Tool) to read the generated file.
    (将hprof二进制格式的Java堆转储到文件名。该live参数是可选的,如果指定,则仅转储堆中的活动对象。要浏览堆转储,可以使用jhat (Java堆分析工具)读取生成的文件。)

    -finalizerinfo
    Prints information on objects awaiting finalization.(在等待完成的对象上打印信息。)

    -heap
    Prints a heap summary. GC algorithm used, heap configuration and generation wise heap usage are printed.
    (打印堆摘要。打印使用的GC算法,堆配置和生成明智的堆用法。)

    -histo[:live]
    Prints a histogram of the heap. For each Java class, number of objects, memory size in bytes, and fully qualified class names are printed. VM internal class names are printed with '*' prefix. If the live suboption is specified, only live objects are counted.
    (打印堆的直方图。对于每个Java类,将打印对象数量,以字节为单位的内存大小以及完全限定的类名称。VM内部类名称以“ *”前缀打印。如果指定了live子选项,则仅计算活动对象。)

    -permstat
    Prints class loader wise statistics of permanent generation of Java heap. For each class loader, its name, liveness, address, parent class loader, and the number and size of classes it has loaded are printed. In addition, the number and size of interned Strings are printed.
    (打印永久生成的Java堆的类加载器明智的统计信息。对于每个类加载器,将打印其名称,活动性,地址,父类加载器以及已加载的类的数量和大小。此外,还会打印实习字符串的数量和大小。)

    -F
    Force. Use with jmap -dump or jmap -histo option if the pid does not respond. The live suboption is not supported in this mode.

    -h
    Prints a help message.

    -help
    Prints a help message.

    -J<flag>
    Passes <flag> to the Java virtual machine on which jmap is run.

jstack摘要

jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP

jstack参数

option
选项是互斥的。如果使用了选项,则应紧随命令名称之后。

pid
要为其打印内存映射的进程ID。该进程必须是Java进程。要获取机器上运行的Java进程的列表, 可以使用jps。

executable
Java executable from which the core dump was produced.(生成核心转储的Java可执行文件。)

core
core file for which the memory map is to be printed.(要为其打印内存映射的核心文件。)

remote-hostname-or-IP
远程调试服务器的主机名或IP地址。

server-id
如果多个调试服务器在同一远程主机上运行,​​则为可选的唯一ID。

描述
jstack为给定的Java进程或核心文件或远程调试服务器打印Java线程的Java堆栈跟踪。对于每个Java框架,将打印完整的类名,方法名,“ bci”(字节码索引)和行号(如果有)。使用-m选项,jstack可以同时打印所有线程的Java和本机框架以及“ pc”(程序计数器)。对于每个本机帧,将打印与“ pc”最接近的本机符号(如果有)。C ++杂乱无章的名称不会被删除。要对C ++名称进行解密,可以将此命令的输出传递给c ++ filt。如果给定进程在64位VM上运行,则可能需要指定-J-d64选项,例如:
jstack -J-d64 -m pid

注意:
此实用程序不受支持,在JDK的将来版本中可能可用,也可能不可用。在不存在dbgent.dll的 Windows系统中,需要安装“ Windows调试工具”才能使这些工具正常工作。另外,PATH环境变量应包含目标进程使用的jvm.dll的位置或从中生成故障转储文件的位置。
For example, set PATH=<jdk>\jre\bin\client;%PATH%

参数选项

        -F
        Force a stack dump when 'jstack [-l] pid' does not respond.
        -l
        Long listing. Prints additional information about locks such as list of owned java.util.concurrent ownable synchronizers.
        -m
        prints mixed mode (both Java and native C/C++ frames) stack trace.
        -h
        prints a help message.

        -help
        prints a help message

 

Jstat概要

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。

  •  jstat -class pid:显示加载class的数量,及所占空间等信息。
  • jstat -compiler pid:显示VM实时编译的数量等信息。
  • jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
  • jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
  • jstat -gcnew pid:new对象的信息。
  • jstat -gcnewcapacity pid:new对象的信息及其占用量。
  • jstat -gcold pid:old对象的信息。
  • jstat -gcoldcapacity pid:old对象的信息及其占用量。
  • jstat -gcpermcapacity pid: perm对象的信息及其占用量。
  • jstat -util pid:统计gc信息统计。
  • jstat -printcompilation pid:当前VM执行的信息。

除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

jstat命令详解

jstat -gc pid
可以显示gc的信息,查看gc的次数,及时间。
其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity pid
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,
如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,
PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。
其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcutil pid
统计gc信息统计。
jstat -gcnew pid
年轻代对象的信息。
jstat -gcnewcapacity pid
年轻代对象的信息及其占用量。
jstat -gcold pid
old代对象的信息。
stat -gcoldcapacity pid
old代对象的信息及其占用量。
jstat -gcpermcapacity pid
perm对象的信息及其占用量。
jstat -class pid
显示加载class的数量,及所占空间等信息。
jstat -compiler pid
显示VM实时编译的数量等信息。
stat -printcompilation pid
当前VM执行的信息。

 一些术语的中文解释:

S0C:年轻代中第一个survivor(幸存区)的容量(字节)
S1C:年轻代中第二个survivor(幸存区)的容量(字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间(字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间(字节)
EC:年轻代中Eden(伊甸园)的容量(字节)
EU:年轻代中Eden(伊甸园)目前已使用空间(字节)
OC:Old代的容量(字节)
OU:Old代目前已使用空间(字节)
PC:Perm(持久代)的容量(字节)
PU:Perm(持久代)目前已使用空间(字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小(字节)
NGCMX:年轻代(young)的最大容量(字节)
NGC:年轻代(young)中当前的容量(字节)
OGCMN:old代中初始化(最小)的大小(字节)
OGCMX:old代的最大容量(字节)
OGC:old代当前新生成的容量(字节)
PGCMN:perm代中初始化(最小)的大小(字节)
PGCMX:perm代的最大容量(字节)
PGC:perm代当前新生成的容量(字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量(字节)
S1CMX:年轻代中第二个survivor(幸存区)的最大容量(字节)
ECMX:年轻代中Eden(伊甸园)的最大容量(字节)
DSS:当前需要survivor(幸存区)的容量(字节)

 

 

 

Go语言入门1 – 环境搭建

官方文档:https://golang.org/doc/install,被墙了,所以国内打不开,可以在这个网站下载:https://studygolang.com/dl 。本文以 windows 自动安装版为例:

一、下载:https://studygolang.com/dl/golang/go1.12.4.windows-amd64.msi

安装就不需要说了吧。

➜ ~ go version
go version go1.12.4 windows/amd64

 

二、第一个 Go 程序

使用 GoLand 进行开发,IDE下载地址:https://www.jetbrains.com/go/

package main

import (
   "fmt"
)

func init() {
   fmt.Printf("init\n")
}

func main() {
   fmt.Printf("main\n")
}

运行两种方式:

使用 GoLand 直接 debug / run
执行 go build,然后执行生成的可执行文件 ./helloworld 即可

123411
 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |