netty http protocol

netty http协议实现的抽象,对http实现是基于非servlet的异步 IO 实现。

请求request的抽象描述,response对象的抽象比较类似

HttpMethod:主要是对method的封装,包含method序列化的操作
HttpVersion: 对version的封装,netty包含1.0和1.1的版本
QueryStringDecoder: 主要是对url进行封装,解析path和url上面的参数。(Tips:在tomcat中如果提交的post请求是application/x-www-form-urlencoded,则getParameter获取的是包含url后面和body里面所有的参数,而在netty中,获取的仅仅是url上面的参数)
HttpHeaders:包含对header的内容进行封装及操作
HttpContent:是对body进行封装,本质上就是一个ByteBuf。如果ByteBuf的长度是固定的,则请求的body过大,可能包含多个HttpContent,其中最后一个为LastHttpContent(空的HttpContent),用来说明body的结束。
HttpRequest:主要包含对Request Line和Header的组合
FullHttpRequest: 主要包含对HttpRequest和httpContent的组合

request的流程处理,只需要在netty的pipeLine中配置HttpRequestDecoder和HttpObjectAggregator。

原理

1:如果把解析这块理解是一个黑盒的话,则输入是ByteBuf,输出是FullHttpRequest。通过该对象便可获取到所有与http协议有关的信息。
2:HttpRequestDecoder先通过RequestLine和Header解析成HttpRequest对象,传入到HttpObjectAggregator。然后再通过body解析出httpContent对象,传入到HttpObjectAggregator。当HttpObjectAggregator发现是LastHttpContent,则代表http协议解析完成,封装FullHttpRequest。
3:对于body内容的读取涉及到Content-Length和trunked两种方式。两种方式只是在解析协议时处理的不一致,最终输出是一致的。

性能优化:
1:使用堆外内存,也就是DirectBuffer。来减少GC的次数。
2:使用buffer pool,避免频繁的申请及释放内存。一般pool有两层,ThreadLocal的pool和全局的pool。 申请buffer空间时,先看ThreadLocal是否有未使用的buffer,如果没有,再从全局的pool中获取buffer。一般的内存管理策略是pool里面的buffer大小全部一致(比如1k),但是 如果需要申请2k的空间,必须要新建2k空间的buffer。如果频繁申请大于1K空间内存,则性能比较低下。 netty为了解决该问题,使用了较为复杂的内存管理策略,具体可参考 http://blog.csdn.net/youaremoon/article/details/47910971 
3:零拷贝:前面提到拷贝数据的性能问题,采用零拷贝机制可有效解决该问题
CompositeByteBuf(组合): 比如读取request Line,申请1k的空间ByteBuf,如果没有发现边界(CRLF)。再申请1k的空间ByteBuf到JDK的io中读取数据。将老的ByteBuf和新申请的ByteBuf组合成CompositeByteBuf,更改CompositeByteBuf的读写指针来避免数据的拷贝。
slice(切分):  比如在1k的ByteBuf里面先读取requestLine,Header进行解析对象,最后读取body。由于body的数据还需要保存在内存里面供业务使用。一般的做法是新申请一块空间,将body的数据拷贝到新申请的空间上。这里通过虚拟一个ByteBuf,然后将读写的指针指向真实的ByteBuf的body区域上面,来避免数据的拷贝。

压缩实现,在HttpResponseEncoder之前加上 HttpContentCompressor 。response对象先进过HttpContentCompressor 压缩后,再经过HttpResponseEncoder进行序列化。
1:压缩主要是针对body进行压缩。http1.1不支持对header的压缩。
2:压缩后body的输出是trunked,而不是Content-length的形式。
Gzip格式,gzip压缩后主要包含三部分:
gzip头:主要存储的是gzip的压缩方式
deflate编码:内容采用的是deflate压缩算法
gzip尾:主要是采用CRC32算法对编码内容进行校验。

安全配置

参数推荐返回错误码描述
requst Line size2k414主要是限制url的长度
header size4k414避免header过长
body size60M413此处一般和业务关联,一般设置相对较大
keepalive timeout75 如果连接在设定时间内没有使用,则关闭掉连接,避免维护的连接过多

http协议解析

http协议主要使用CRLF进行分割。

标示ASCII描述字符
CR 13Carriage return (回车) \n
LF 10Line feed character(换行)\r
SP 32Horizontal space(空格) 
COLON 58COLON(冒号):

请求包,主要包含三部分:请求行(line),请求头(header),请求正文(body) 

请求行(Line):主要包含三部分:Method ,URI ,协议/版本。 各部分之间使用空格(SP)分割。整个请求头使用CRLF分割。(比如:POST /1.0.0/_health_check HTTP/1.1 CRLF)

请求头(Header): 格式为(name :value),用于客户端请求的描述信息。header之间以CRLF进行分割。最后一个header会多加一个CRLF。( 比如:Connection: keep-alive CRLF CRLF)

请求正文(body) :里面主要是Post提交的数据(可支持多种格式,格式在Content-Type定义,长度是在Content-Length里面定义)。

响应包,主要包含三部分:状态行(line),响应头(header),响应正文(body)

状态行(line):包含三部分:http版本,服务器返回状态码,描述信息。以CRLF进行分割。 ( 比如:HTTP/1.1 200 OK CRLF)

响应头(header) : 格式为(name :value),用于服务器返回的描述信息。header之间以CRLF进行分割。最后一个header会多加一个CRLF (比如:Content-Type: text/html CRLF Content-Encoding:gzip CRLF CRLF) 

响应正文(body):里面主要是返回数据(可支持多种格式,格式在Content-Type定义,长度是在Content-Length里面定义)。

truncked协议

1:主要包含三部分:chunk,last-chunk和trailer。如果分多次发送,则chunk有多份。
2:chunk主要包含大小和数据,大小表示这个这个trunck包的大小,使用16进制标示。其中trunk之间的分隔符为CRLF。
3:通过last-chunk来标识chunk发送完成。 一般读取到last-chunk(内容为0)的时候,代表chunk发送完成。
4:trailer 表示增加header等额外信息,一般情况下header是空。通过CRLF来标识整个chunked数据发送完成。

HTTP协议通常使用Content-Length来标识body的长度,在服务器端,需要先申请对应长度的buffer,然后再赋值。接收数据时,发现header中有Content-Length属性,则读取Content-Length 的值,确定需要读取body的长度。

如果需要一边生产数据一边发送数据,就需要使用”Transfer-Encoding: chunked” 来代替Content-Length,也就是对数据进行分块传输。按照truncked协议分批读取数据。

压缩类型

1:压缩需要客户端,服务器端同时支持。在chrome中,请求默认会加上Accept-Encoding: gzip, deflate,客户端默认开启数据压缩。而tomcat默认关闭压缩,如果开启需要增加配置。
2:在请求时,需要通过header的Accept-Encoding: gzip, deflate 来告诉服务器客户端支持的压缩类型。
3:在返回时,http server会在返回的header中添加Content-Encoding: gzip 来告诉客户端数据的压缩方式。
4:压缩类型主要包含如下几种:
         gzip      说明body采用GNU zip编码
         compress  说明body采用Unix的文件压缩程序
         deflate  说明body是用zlib的格式压缩的
         identity  说明没有对实体进行编码。
其中 gzip, compress, 以及deflate编码都是无损压缩算法,不会导致信息损失。 gzip效率最高,使用较为广泛。

http解决粘包拆包

1:请求行的边界是CRLF,如果读取到CRLF,则意味着请求行的信息已经读取完成。
2:Header的边界是CRLF,如果连续读取两个CRLF,则意味着header的信息读取完成。
3:body的长度是有Content-Length 来进行确定。如果没有Content-Length ,则是chunked协议(具体参考前面的trunked协议)。

Android AndroidX的迁移

Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,将原来的android.*替换成androidx.*;只有包名和Maven工件名受到影响,原来的类名,方法名和字段名不会更改。接下来我们来看看使用 AndroidX的扩展库需要哪些配置。

1. AndroidX变化

1)常用依赖库对比:

Old build artifactAndroidX build artifact
com.android.support:appcompat-v7:28.0.2androidx.appcompat:appcompat:1.0.0
com.android.support:design:28.0.2com.google.android.material:material:1.0.0
com.android.support:support-v4:28.0.2androidx.legacy:legacy-support-v4:1.0.0
com.android.support:recyclerview-v7:28.0.2androidx.recyclerview:recyclerview:1.0.0
com.android.support.constraint:constraint-layout:1.1.2androidx.constraintlayout:constraintlayout:1.1.2

 更多详细变化内容,可以下载CSV格式映射文件;

2)常用支持库类对比:

Support Library classAndroidX class
android.support.v4.app.Fragmentandroidx.fragment.app.Fragment
android.support.v4.app.FragmentActivityandroidx.fragment.app.FragmentActivity
android.support.v7.app.AppCompatActivityandroidx.appcompat.app.AppCompatActivity
android.support.v7.app.ActionBarandroidx.appcompat.app.ActionBar
android.support.v7.widget.RecyclerViewandroidx.recyclerview.widget.RecyclerView

 更多详细变化内容,可以下载CSV格式映射文件。

2. AndroidX配置

1)更新升级插件

  • 将AS更新至 AS 3.2及以上;
  • Gradle 插件版本改为 4.6及以上;
    项目下 gradle/wrapper/gradle-wrapper.propertie 文件中的distributionUrl改为:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
  • compileSdkVersion 版本升级到 28及以上;
  • buildToolsVersion 版本改为 28.0.2及以上。

插件更新提示

2)开启迁移AndroidX
 在项目的gradle.properties文件里添加如下配置:

android.useAndroidX=true
android.enableJetifier=true

 表示项目启用 AndroidX 并迁移到 AndroidX。

3)替换依赖库
 修改项目app目录下的build.gradle依赖库:

implementation 'com.android.support:appcompat-v7:28.0.2' → implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.android.support:design:28.0.2'  → implementation 'com.google.android.material:material:1.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2' → implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
...

4)修改支持库类
 将原来importandroid.**包删除,重新import新的androidx.**包;

import android.support.v7.app.AppCompatActivity; → import androidx.appcompat.app.AppCompatActivity;

5)一键迁移AndroidX库
 AS 3.2 及以上版本提供了更加方便快捷的方法一键迁移到 AndroidX。选择菜单上的ReFactor —— Migrate to AndroidX… 即可。(如果迁移失败,就需要重复上面1,2,3,4步手动去修改迁移)

AndroidX 迁移

注意:如果你的项目compileSdkVersion 低于28,点击Refactor to AndroidX…会提示:

You need to have at least have compileSdk 28 set in your module build.gradle to refactor to androidx

提示让你使用不低于28的sdk,升级最新到SDK,然后点击 Migrate to AndroidX…,AS就会自动将项目重构并使用AndroidX库。

3. AndroidX迁移问题

《Android Support库和AndroidX冲突问题》

4. AndroidX影响

  虽然说目前对我们没有多大影响,我们可以不使用仍然使用旧版本的支持库,毕竟没有强制,但长远来看还是有好处的。AndroidX重新设计了包结构,旨在鼓励库的小型化,支持库和架构组件包的名字也都简化了;而且也是减轻Android生态系统碎片化的有效方式。

参考

AndroidX 官方文档,开启传送门

三生有幸遇见你纵使悲凉也是情

三生有幸遇见你纵使悲凉也是情

三生有幸遇见你纵使悲凉也是情是什么意思:

1、不论结局如何,很高兴能认识你

2、很庆幸能够与你相遇,与你相识,与你相知,并与你相爱。今生有你,不论在一起会遇到什么样的困难,甚至离别,都不会后悔,情之所至。

三生有幸遇见你下一句是什么:

1、三生有幸遇见你,纵然悲凉也是情,知卿心系在我心,不枉今生爱一场!

2、大千世界,处处繁花似锦,能够遇见你三生有幸。

3、三生有幸遇见你,人生只有两次幸运就好,一次遇见你,一次走到底。

4、醒时捕光,睡时捉梦 ,不如遇见你三生有幸。

5、城南小陌又逢春,只见梅花不见人。

人有生老三千疾,唯有相思不可医

本是青灯不归客,却因浊酒恋红尘。

三里清风三里路,步步风雨再无你。

终是庄周梦了蝶,你是恩赐也是劫。

三生有幸遇见你,纵使悲凉也是情。

6、三生有幸遇见你,十里桃花马蹄急; 只闻锦瑟风乍起,但将心事付瑶琴。

7、道生一,一生二,二生三,三生有幸遇见你。太极生两仪,两仪生四象,四象生八卦,八卦衍万象,万象不如你。

8、三生有幸遇见你,一直相随永不弃。

9、三生有幸遇见你,无关风月也是情。

10、听一曲风声,画两道身影,说三生有幸遇见你。

Centos7 切换 GCC 版本

查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5

gcc -v

升级gcc到5.3及以上,如下:升级到gcc 9.3

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
这样退出shell重新打开就是新版的gcc了
以下其他版本同理,修改devtoolset版本号即可。

胡不归问题

胡不归问题,是一个非常古老的数学问题,曾经是历史上非常著名的“难题”。近年来陆续成为各地中考模拟题的小热门考点,学生不易把握,今天给大家普及讲解一下。

话说,从前有一小伙子外出务工,某天不幸得知老父亲病危的消息,便立即赶路回家.小伙子略懂数学常识,考虑到“两点之间线段最短”的知识,就走布满沙石的路直线路径,而忽视了走折线虽然路程多但速度快的实际情况,当赶到家时,老人刚咽了气,小伙子追悔莫及失声痛哭.邻居告诉小伙子说,老人弥留之际不断念叨着“胡不归?胡不归?…”

这个问题引起了人们的思索,小伙子能否节省路上时间提前到家?如果可以,他应该选择一条怎样的路线呢?这就是流传千百年的“胡不归问题.

如图,A是出发点,B是目的地,直线AC是一条驿道,而驿道靠目的地一侧全是砂土,为了选择合适的路线,根据不同路面速度不同(驿道速度为a米/秒,砂土速度为b米/秒),小伙子需要在AC上选取一点D,再折往至B.

上述数学解释用到了三角函数知识将两个线段的系数权重都化为1,从而降低了求最值难度。聪明的同学或许一下就发现转化成了我之前讲过的“将军饮马(小河取水)”模型,进而作对称求得最值。

spring cloud config server

配置使用 git 时候 http 方式比较容易,证书有问题时加上skip-ssl-validation: true ssh 方式,配置尽量使用本地配置方式,配置文件要简单,只配置 uri 使用 git 协议就行
不要配置其他参数,特别是username,我配置时候踩坑了

世道与人心

两个不同故事,同样的选择,简明解释世道与人心

故事1:一个富二代看下一个穷姑娘,假装穷小子接近,后来成为情侣, 有一天男子家境暴漏
故事2:一个穷小子看下一个穷姑娘,假装富二代接近,后来成为情侣, 有一天男子家境暴漏

姑娘的选择:A)我不在乎钱,只想和他一起 B)渣男,欺骗我感情,分手

故事1,多数选 A 这就是世道
故事2,多数选 B 这就是人心

JDK 14 正式发布,新特性关注

2020年3月17日JDK 14 正式发布了,其中还是有一些值得关注的新特性。如果你觉得我写的东西对于您有帮助,希望得到您的关注!

一、instanceof的模式匹配:

Instanceof是java中用于检查对象引用是否为给定Type类型的实例,并返回布尔值。在Java 14之前,我们在完成判断之后,经常需要做一下类型的强制转换,如下:

if (obj instanceof String) {
    String str = (String) obj; // 需要强转
    .. str.contains(..) ..
}else{
     ....
}

Java 14增强功能特性:

if (!(obj instanceof String str)) {
    .. str.contains(..) .. // 不再需要转换代码,实际发生了转换
} else {
    //.. str.... 这里 str 会是未定义
}

更多示例:

if (obj instanceof String str && str.length() > 5) {.. str.contains(..) ..}

if (obj instanceof String str || str.length() > 5) {.. str.contains(..) ..}

注意:仅当object不为null时,instanceOf才会匹配,然后仅将其分配给str。在instanceof中使用模式匹配可以减少Java程序中显式强制转换的数量。

二、NullPointerExceptions(注意带s)

在java 14之前,我们经常在调试代码的时候,发现一行代码中有多个对象,抛出异常之后你也无法确定到底是哪个对象为null。假设此代码中出现一个NullPointerException:

 a.b.c.i = 0;

//下面是异常信息
Exception in thread "main" java.lang.NullPointerException
                            at Prog.main(Prog.java:5)

文件名和行号不能精确指出哪个变量为空。是a还是b或c?JDK14对此做了改进。

Exception in thread "main" java.lang.NullPointerException:
        Cannot read field 'c' because 'a.b' is null.
    at Prog.main(Prog.java:5)

但是,这也存在一些风险。空指针异常消息包含源代码中的变量名。暴露此信息可能被视为程序的安全风险。

三、switch表达式

在Java 14之前*

switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}

Java 14增强功能

switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}

四、record

Java 14使用record关键字来减少类声明语法,这有点像lombok。我们有时候需要编写许多低价值的重复代码来实现一个简单的数据载体类:构造函数,访问器,equals(),hashCode(),toString()等。为了避免这种重复代码,Java 14推出record。 java14之前的代码:

final class Point {
    public final int x;
    public final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    // 很多的equals, hashCode, toString,getters、setters
}

Java 14中就用这一行代码

record Point(int x, int y) { }

五、文本块

在Java中,要将HTML,XML,SQL或JSON代码片段嵌入到代码中通常很难阅读,为了克服此问题,Java 14引入了Text Block。 java14之前,没有文本块的HTML示例

String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, world</p>\n" +
              "    </body>\n" +
              "</html>\n";

java14,带文本块的HTML示例,下面的代码看上去是多行的,实际上字符串的拼接结果仍然是一行的。

String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

如果你希望字符串中有换行,在每行的行尾加上“\”,这样字符串就是换行的了,可以打印出来看一下。

String html = """
              <html>  \
                  <body>  \
                      <p>Hello, world</p>  \
                  </body>  \
              </html>
              """;

IDEA2019.3安装和激活

之后进到这个界面,点击 Configure -> Edit Custom VM Options

在最后加上   -javaagent:/data/jetbrains-agent.jar

 这个jar包是需要用来破解的jar包:   https://files.cnblogs.com/files/quyf/jetbrains-agent.zip

IntelliJ IDEA 破解之后,用了一段时间后,打开软件提示 no suitable licenses left on the license server

需要让我们重新注册,原来是之前的地址服务更改为了新的地址: http://fls.jetbrains-agent.com

所以我们在使用服务器激活的时候使用新的地址代替原来的地址即可:http://jetbrains-license-server/

沟通难四个原因

《PMBOK 指南》将沟通管理划为一个专门的知识领域,建议项目经理花 75% 以上的时间在沟通上。根据美国普林斯顿大学的调查报告,在所有对工作产生影响的因素中,沟通占的比例高达 75%。而我们工作中出现的 80% 问题都是由沟通不当造成的,可见沟通的重要性,因为沟通实在太难了。多数时候,我们只想着表达自己的观点,只关注自己想说什么,我们会尽量使用漂亮的 PPT、华美的语言、一堆的数据、甚至引章据典,而不关心别人听懂没有,没有思考别人是否想听,别人是否听得懂。

沟通难主要出于以下四个原因:

第一种是由于立场、利益、背景的原因,当双方缺乏信任,或处于敌对状态时是无法沟通的,这个时候的沟通和所说内容的对错没有必然的关系,对方只想找差错,找到了就会理解为阴谋论,并且非常兴奋,所谓道不同不相为谋。这是最困难的沟通场景,越沟通,矛盾分歧会越大,实际是无效沟通。在公司中,经常会因为组织架构设计的不合理,造成团队利益的冲突,从而产生很多的无效沟通。

第二种是由于语言、专业知识、职位、环境的巨大差异,造成沟通方面的巨大鸿沟,本质上是思维方式、常识、知识储备的不一致造成的认知差异,这样的沟通成本非常巨大,需要恶补相关知识,参加专业培训消除鸿沟才能够创造沟通的条件。

第三种是由于沟通信息衰减造成的,语言文字是我们主要的沟通方式,但是很多时候光靠语言文字会有歧义,比如我们对名词概念的理解可能会有不同,甚至可能会完全相反,对语言中所带情绪的理解也不同,而这些都会造成信息的压缩。有研究表明,对话沟通中语言起到的作用仅占 38%,而肢体语言所占的比例高达 55%。你想表达的意思和你说出来的话语会有差异,对方听到的信息和对方理解的意思又会有差异,这就形成了我们通常说的沟通漏斗:
第一个漏掉 20%:你想表达的是 100%,实际表达的只有 80%,主要原因有语言词汇的限制等;
第二个漏掉 20%:听者只接收了 60%,主要原因有信息衰减、听得不仔细等;
第三个漏掉 20%:听者只理解、听懂了 40%,主要原因有词语理解能力、注意力不集中等;
第四个漏掉 20%:最后听者只记住了 20%,主要原因是没有反馈、容易忘记等;而随着时间的推移,如果不持续做交流沟通,最后的 20% 也会被忘记。

第四种沟通障碍是沟通交流者的心态,这个又和企业、团队的组织架构及文化有关,以下举例一下可能存在的心态对沟通的影响:刚刚进入

充满信任的技术团队

LinkedIn 首席执行官杰夫·韦纳(Jeff Weiner)认为,“在时间的流逝中保持一致就是信任”,这个“一致”有很多含义,如目标的一致、行动的一致等;微软首席执行官萨提亚·纳德拉(Satya Nadella)认为,“信任 = 同理心 + 共同价值观 + 安全可靠”,他把“同理心”放在了信任等式的第一位,认为无论做什么事情,都需要大家对所做的事情产生共鸣。

团队合作中,每个成员的工作多多少少都会和其他人有一些上下游交互,如果上游的人总是能够对下游人的诉求快速响应,无疑会让下游的人感觉更加安心。以我们的交付团队为例,我们有专职的集成测试团队,他们要负责软件发布前的最后一轮验收,但是开发团队的交付延迟总是会把集成测试团队搞得手忙脚乱,团队内的相互指责也从来没有停止过。后来,我们引入了统一研发看板系统,使得每一个员工的任务都在看板上可见,任何下游的同事都可以看到其依赖的上游员工的进展和潜在的风险。通过这套实时反馈系统,下游员工可以提前了解风险,以便及时采取应对措施,那种一无所知的不信任感很容易就消除了。可见,员工之间要及时进行沟通,才能及时获取自己关切的信息,团队人越多,沟通效率越低,越要想办法增加沟通的带宽,而构建可以透明呈现所有人信息的系统是一个不错的实践。

1994 年,心理学家 Freeston 等人提出了“无法容忍不确定的程度(The Intolerance of Uncertainty)”这一概念,简称 IU。一系列研究认为,IU 是担心、焦虑产生和维持的关键影响因素,也是焦虑及焦虑障碍的最重要预测指标。对于不确定的焦虑,会影响我们的知觉控制水平,也就是我们所感知到的“自己能够在多大程度上影响事情的结果”。当我们对不确定的焦虑越高时,我们就会越不相信自己能够影响事情的结果,对自己的贡献就会越不信任。

广告名词 CPA、CPS、CPM、CPT、CPC 、CVR、OCPC、OCPM是什么

1.CPA(Cost Per Action) 每行动成本,这个行为可以是注册、咨询、放入购物车等等。CPA是一种按广告投放实际效果计价方式的广告,即按回应的有效问卷或注册来计费,而不限广告投放量。电子邮件营销(EDM)现在有很多都是CPA的方式在进行。

2.CPS(Cost Per Sales):以实际销售产品数量来换算广告刊登金额。CPS是一种以实际销售产品数量来计算广告费用的广告,这种广告更多的适合购物类、导购类、网址导航类的网站,需要精准的流量才能带来转化。

3.CPC(Cost Per Click) 每点击成本。CPC是一种点击付费广告,根据广告被点击的次数收费。如关键词广告一般采用这种定价模式,比较典型的有Google广告联盟的AdSense for Content和百度联盟的百度竞价广告。

4.CPT(Cost Per Time) 每时间段成本。CPT是一种以时间来计费的广告,国内很多的网站都是按照“一个星期多少钱”这种固定收费模式来收费。这种广告形式很粗糙,无法保障客户的利益。但是CPT的确是一种很省心的广告,能给你的网站、博客带来稳定的收入。阿里妈妈的按周计费广告和门户网站的包月广告都属于这种CPT广告。

5.CPM(Cost Per Mille) 每千人成本。CPM是一种展示付费广告,只要展示了广告主的广告内容,广告主就为此付费。这种广告的效果不是很好,但是却能给有一定流量的网站、博客带来稳定的收入。有人认为,CPM的计算不能按照被看到作为衡量标准,如果一个Banner在页面底部,需要滚屏才能看到,只要这个Banner在该页面中被展示了1000次,即使1000次中没人滚屏到页面底部看这个广告,也应该计算为一个CPM。

fb42c445749f46eab0a100b06b816873_th

(1)CPT和CPM只在第一步收取广告费用,即媒体只需要将广告对广告受众进行了展示,即可向广告商收取广告费用。

(2)CPC只收取第二步费用,消费者看到广告后并进行了点击行为以后,媒体向广告商收取广告费用。

(3)CPA和CPS处于第三步,即消费者有看到广告后并点击了广告,进一步了解活动情况后在广告主的网站完成某些特定行为(例如付款消费,填表注册等)。

f403828429794c43a893db96b1e19925_th

相比而言,CPM和CPT对网站有利,而CPC、CPA、CPS则对广告主有利。目前比较流行的计价方式是CPM和CPC,最为流行的则为CPM。

从广告价格上来分,CPT和CPM的表面价格相对较为低廉,而CPC居中,CPA和CPS的价格则似乎要高很多。需要指出的是,这里说的价格只是表面价格,不等于性价比。一般情况下,CPA和CPS的性价比相对固定,而CPC和CPT、CPM则根据网站对用户的粘性不同而有区别。

从作弊难易程序来看,CPT和CPM的选择,通常取决于网站的质素,而网站的质素,衡量标准似乎只有网站统计和第三方统计,但这些都是很容易作弊的,国内满天飞的刷流量软件和网站,就是CPT和CPM作弊的最佳工具,尽管站长们都知道,但是广告商却只能在一段时间内广告效果不如意时才能有所察觉。

对于CPC广告,尽管存在一定的技术防范措施,作弊也相对容易,国内甚至有网站出售点击广告包月,这也是导致国内CPC广告联盟式微的原因吧。而CPA也相对较为容易,只要有足够多的时间和精力去注册和验证虚假用户。唯CPS广告几乎不在乎作弊,也是几个广告类型中唯一很难作弊的广告模式。

7dd98d1001e93901abaa5c1e75ec54e736d19662

1.CVR (Click Value Rate): 转化率,衡量CPA广告效果的指标

2.CTR (Click Through Rate): 点击率

3.ROI: Return On Investment,投资回报率,或者说 投资利润率。指通过投资而应返回的价值,它涵盖了企业的获利目标。利润和投入的经营所必备的财产相关,因为管理人员必须通过投资和现有财产获得利润。又称会计收益率、投资利润率。

spring boot 配置加载优先级

Spring Boot property resolution property order is described here.

Use of application.properties and application.yaml is not expected. Use one format or the other but not both. Whichever one you use will be handled at position 12 or 13 (depending on whether the file is packaged in the application JAR or not) in property precedence order.

Including an extract from the above link here to avoid link rot …

Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:

  1. Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
  2. @TestPropertySource annotations on your tests.
  3. @SpringBootTest#properties annotation attribute on your tests.
  4. Command line arguments.
  5. Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
  6. ServletConfig init parameters.
  7. ServletContext init parameters.
  8. JNDI attributes from java:comp/env.
  9. Java System properties (System.getProperties()).
  10. OS environment variables.
  11. A RandomValuePropertySource that only has properties in random.*.
  12. Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
  13. Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
  14. Application properties outside of your packaged jar (application.properties and YAML variants).
  15. Application properties packaged inside your jar (application.properties and YAML variants).
  16. @PropertySource annotations on your @Configuration classes.
  17. Default properties (specified using SpringApplication.setDefaultProperties).

佛遗教经

佛遗教经原文;姚秦三藏法师鸠摩罗什译

  释迦牟尼佛,初转法轮,度阿若憍陈如;最后说法,度须跋陀罗。所应度者,皆已度讫。于娑罗双树间,将入涅槃。是时中夜,寂然无声,为诸弟子略说法要。

  汝等比丘!于我灭后,当尊重珍敬波罗提木叉,如闇遇明,贫人得宝当知此则是汝等大师,若我住世无异此也,持净戒者。不得贩卖贸易,安置田宅,畜养人民奴卑畜生,一切种植及诸财宝,皆当远离,如避火坑。不得斩伐草木,垦土掘地。合和汤药,占相吉凶,仰观星宿,推步盈虚,历数算计,皆所不应,节身时食,清净自活,不得参预世事,通致使命,咒术仙药,结好贵人,亲厚媟慢,皆不应作。当自端心,正念求度,不得包藏瑕疵,显异惑众,于四供养,知量知足,趣得供事,不应畜积。

  此则略说持戒之相,戒是正顺解脱之本,故名波罗提木叉。因依此戒,得生诸禅定,及灭苦智慧。是故比丘,当持净戒,勿令毁缺。若能持净戒,是则能有善法。若无净戒,诸善功德皆不得生。是以当知,戒为第一安隐功德住处。

  汝等比丘!已能住戒,当制五根,勿令放逸,入于五欲。譬如牧牛之人,执杖视之,不令纵逸,犯人苗稼。若纵五根,非唯五欲,将无涯畔,不可制也。亦如恶马,不以辔制,将当牵人墬于坑陷。如被劫贼,苦止一世,五根贼祸,殃及累世,为害甚重,不可不慎。是故智者制而不随,持之如贼,不令纵逸,假令纵之,皆亦不久见其磨灭。此五根者,心为其主,是故汝等,当好制心。心之可畏,甚于毒蛇、恶兽、怨贼、大火越逸,未足喻也。譬如有人,手执蜜器,动转轻躁,但观其蜜,不见深坑。譬如狂象无钩,猿猴得树腾跃踔踯,难可禁制,当急挫之,无令放逸。纵此心者,丧人善事,制之一处,无事不办。是故比丘,当勤精进,折伏汝心。

  汝等比丘!受诸饮食,当如服药,于好于恶,勿生增减。趣得支身,以除饥渴。如蜂采华,但取其味,不损色香。比丘亦尔,受人供养,趣自除恼,无得多求,坏其善心。譬如智者,筹量牛力所堪多少,不令过分,以竭其力。

  汝等比丘!昼则勤心修习善法,无令失时,初夜后夜,亦勿有废。中夜诵经,以自消息,无以睡眠因缘,令一生空过,无所得也。当念无常之火,烧诸世间,早求自度,勿睡眠也。诸烦恼贼,常伺杀人,甚于怨家,安可睡眠,不自警寤。烦恼毒蛇,睡在汝心,譬如黑蚖,在汝室睡,当以持戒之钩,早摒除之。睡蛇既出,乃可安眠。不出而眠,是无惭人也。惭耻之服,于诸庄严,最为第一。惭如铁钩,能制人非法,是故常当惭愧,无得暂替。若离惭耻,则失诸功德。有愧之人,则有善法;若无愧者,与诸禽兽无相异也。

  汝等比丘!若有人来,节节支解,当自摄心,无令嗔恨,亦当护口,勿出恶言。若纵恚心,即自妨道,失功德利。忍之为德,持戒苦行,所不能及,能行忍者,乃可名为有力大人。若其不能欢喜忍受恶骂之毒,如饮甘露者,不名入智慧人也。所以者何,嗔恚之害,则破诸善法,坏好名闻。今世后世,人不喜见。当知嗔心,甚于猛火,常当防护,无令得入。劫功德贼,无过嗔恚,白衣受欲,非行道人,无法自制,嗔犹可恕。出家行道,无欲之人,而怀嗔恚,甚不可也。譬如清冷云中,霹雳起火,非所应也。

  汝等比丘!当自摩头,已舍饰好,著坏色衣,执持应器,以乞自活,自见如是。若起憍慢,当疾灭之。增长憍慢,尚非世俗白衣所宜,何况出家入道之人,为解脱故,自降其身而行乞耶。

  汝等比丘,谄曲之心与道相违,是故宜应质直其心。当知谄曲,但为欺诳,入道之人,则无是处。是故汝等,宜当端心,以质直心为本。汝等比丘,当知多欲之人,多求利故,苦恼亦多。少欲之人,无求无欲,则无此患。直尔少欲,尚宜修习,何况少欲,能生诸功德。少欲之人,则无谄曲以求人意,亦复不为诸根所牵。行少欲者,心则坦然,无所忧畏,触事有余,常无不足。有少欲者,则有涅槃,是名少欲。

  汝等比丘!若欲脱诸苦恼,当观知足。知足之法,即是当乐安隐之处。知足之人,虽卧地上,犹为安乐;不知足者,虽处天堂,亦不称意。不知足者,虽富而贫;知足之人,虽贫而富。不知足者,常为五欲所牵,为知足者之所怜愍,是名知足。

  汝等比丘,欲求寂静无为安乐,当离愦闹,独处闲居,静处之人,帝释诸天,所共敬重,是故当舍己众他众,空闲独处,思灭苦本。若乐众者,则受众恼,譬如大树众鸟集之,则有枯折之患。世间缚者,没于众苦,譬如老象溺泥,不能自出,是名远离。

  汝等比丘,若勤精进,则事无难者,是故汝等当勤精进。譬如小水长流,则能穿石。若行者之心,数数懈废,譬如钻火,未热而息,虽欲得火,火难可得,是名精进。

  汝等比丘,求善知识,求善护助,无如不忘念。若有不忘念者,诸烦恼贼则不能入。是故汝等,常当摄念在心。若失念者,则失诸功德。若念力坚强,虽入五欲贼中,不为所害。譬如著铠入阵,则无所畏,是名不忘念。

  汝等比丘!若摄心者,心则在定。心在定故,能知世间生灭法相,是故汝等,常当精勤修习诸定。若得定者,心则不散,譬如惜水之家,善治堤塘。行者亦尔,为智慧水故,善修禅定,令不漏失,是名为定。

  汝等比丘,若有智慧,则无贪著。常自省察,不令有失,是则于我法中,能得解脱。若不尔者,既非道人,又非白衣,无所名也。实智慧者,则是度老病死海坚牢船也,亦是无明黑暗大明灯也,一切病者之良药也,伐烦恼树之利斧也。是故汝等,当以闻思修慧而自增益。若人有智慧之照,虽是肉眼,而是明见人也,是名智慧。

  汝等比丘,若种种戏论,其心则乱,虽复出家,犹未得脱。是故比丘,当急舍离乱心戏论。若汝欲得寂灭乐者,唯当善灭戏论之患,是名不戏论。

  汝等比丘!于诸功德,常当一心,舍诸放逸,如离怨贼。大悲世尊,所说利益,皆已究竟。汝等但当勤而行之。若于山间,若空泽中,若在树下,闲处静室,念所受法,勿令忘失,常当自勉,精进修之,无为空死,后致有悔。我如良医!知病说药,服与不服,非医咎也。又如善导,导人善道,闻之不行,非导过也。

  汝等若于苦等四谛有所疑者,可疾问之,毋得怀疑,不求决也。尔时世尊,如是三唱,人无问者,所以者何?众无疑故。时阿免楼驼,观察众心,而白佛言:‘世尊!月可令热,日可令冷,佛说四谛,不可令异。佛说苦谛实苦,不可令乐。集真是因,更无异因,苦若灭者,即是因灭。因灭故果灭,灭苦之道,实是真道。更无余道。世尊!是诸比丘,于四谛中,决定无疑。’

  于此众中,所作未办者,见佛灭度,当有悲感。若有初入法者,闻佛所说,即皆得度。譬如夜见电光,即得见道。若所作已办,已度苦海者,但作是念:‘世尊灭度,一何疾哉!’

  阿免楼驼虽说此语,众中皆悉了达四圣谛义。世尊欲令此诸大众皆得坚固,以大悲心,复为众说:‘汝等比丘,勿怀悲恼,若我住世一劫,会亦当灭。会而不离,终不可得。自利利他,法皆具足,若我久住,更无所益。应可度者,若天上人间,皆悉已度。其未度者,皆亦已作得度因缘。自今以后,我诸弟子,展转行之,则是如来法身,常在而不灭也。是故当知,世皆无常,会必有离,勿怀忧恼,世相如是。当勤精进,早求解脱;以智慧明,灭诸痴暗。’

  世实危脆、无坚牢者,我今得灭,如除恶病。此是应舍之身,罪恶之物,假名为身,没在老病生死大海,何有智者,得除灭之,如杀怨贼,而不欢喜。

  汝等比丘!常当一心,勤求出道。一切世间动不动法,皆是败坏不安之相。汝等且止,勿得复语,时将欲过,我欲灭度,是我最后之所教诲。

男人心智成熟的表现

1、对孤独和寂寞有足够的抵御能力;

不管你愿不愿意承认,作为人我们终其一生其实都是孤独的。

那些为了显得自己不孤独而去盲目“合群”的人,或许内心多半更加孤独。

寂寞也是。有些人谈恋爱其实并不是因为有多喜欢对方,而是受不了节日氛围下一个人空寂的状态,孤零零的面对无人温暖的被窝。

但是现实就是,就算是有对象的人们,他们大部分时间其实也是一个人度过的。因为,生命的底色就是孤独。

所以,接受孤独,学会享受独孤,是成熟的第一步。

不再因为孤独或是寂寞盲目的选择谁,是心智强大的前提。

2、有足够的心智去面对追求的拒绝或是恋爱的失败;

不管是男生还是女生,但凡认为那些:

我谈恋爱就一定要成功或我追女/追男神一定要成功的人,希望你们在行动之前在心里做好或许会失败的准备再去行动。

所谓的心智成熟第二条就是:

我愿意喜欢你,我也愿意花精力时间去追求你,然而我也愿意去接受你最终会拒绝我的风险,因为这是你的权利。

无论是恋爱还是追求,对方都有离开和拒绝的权利的,同样你也有。

有了这样的心理素质,再去尝试开始一段关系。否则,稍微有点小打击就甩锅的人,在对方看来就容易变成一个笑话。

3、懂得如何对自己不喜欢的事情说“不”;

一颗强大的内心,除了有胸怀可以去接受任何人的拒绝之外,同时还应该勇气去对自己不愿意的事情说“不”。

不知道是不是国内的家长从小对小孩的教育就是“你不要惹事”或是“你要做个乖孩子”(庆幸我家不是),以至于很多人即便生理上达到了成年的状态,心理上依旧跟个孩子没有任何的区别。

事实就是,一个不懂拒绝的“老好人”并不会被人尊重,发自内心的认为他真的“好”。相反,他的来者不拒在别人眼中其实就是一种没有原则的表现。

另外,不懂拒绝的人骨子里多半是畏惧自己拒绝之后,万一对方不喜欢自己怎么办?这样试图通过讨好来赢得一段关系的人,最终即便得到了一段关系,结果也多半不会长久。

因为讨好给人的观感就是:我对自己底气不足。

4、有能力过好漫长的单身生涯;

其实大部分人在遇见自己生命中那个对的人之前,都要遇见至少几个错的人。有些有精神洁癖的人,则会选择高傲的单身,也不愿意将就的去恋爱。

所以,其实对于多数人来说,在没有结婚前,单身是一个不可逃避的阶段。

而一个心智成熟的人,则不会浪费时间在单身的日子里天天上yp软件去找聊骚对象,更不会时刻沉迷于酒吧里的纸醉金迷。

那是自制力不够且抵抗不了寂寞的人,才会去做的选择。

一个对自己人生负责的成年人,一定会抓紧利用好自己生命有限的单身时光。趁自己单身的时候,尽情的去做只有单身的日子才可以做的事情:无论是看书,听音乐会,学习画画或是环游世界。

当你抱着一种享受的姿态去经营好你有限的单身生涯的时候,我相信你会更强大。

5、即便遇见爱情,也依旧保持自己的“单身力”;

很多人为什么一恋爱就会变得不像自己,或是一遇见爱情,就把自己的日子过糟了?这只能说明他还不能够算是一个真正意义上独立和成熟的个体。

所谓的成熟的个体,很重要的一个特征就是:不会因为恋爱或是结婚失去个人的独立性。

但凡恋爱后天天和自己的另一半泡在一起的人,闺蜜也不找了,工作也不好做了的人,过不了多久,就会发现自己的感情出现问题了。

为什么呢?对方很容易觉得厌倦。

因为你已经为了他放弃了你自己。

一旦当一个人失去自己最初的独立性和独特性,转而成为另外一个人的依附的时候,这就是他开始失去这段关系的时候。

6、无论结不结婚,都可以经营好自己的人生;

心智成熟的人还有一个很重要的特质:

他们不会把婚姻当成人生的必选项。

但凡认为自己如果不结婚就是失败者的人,多半即便最终成功结婚了,也不会过得太幸福。

很多人对于婚姻存在一种重大的误区:

总认为说,只要我找到一个人,我此生就完美了。

然而事实就是,找到那个人,这只意味着你万里长征刚刚开始第一步而已。之后两个人的日子过得好不好,完全取决于双方有没有努力,有没有花心思去经营和维护。

一个总是指望把婚姻当作保险箱的人,作为个体来说,他依旧是残缺的。因为他只是渴望另一半来弥补自己而已。

只有当你有一天真正明白:其实结不结婚,我都可以过得很好的时候。

或许此刻,是你真正有能力走进婚姻的时候。

7、明白珍惜的重要性,不再把任何人对你的付出当作理所当然;

幼稚的人和成熟的人最大的区别之一就是:是否明白感恩意味着什么。

或许是现在年轻人中大部分从小都生活在一个得天独厚的环境里,所以在原生家庭中的时候,多数人都是习惯“被无私对待”的那个。

以至于有些人就养成了一种自私自利的坏毛病,认为所有人都应该像自己的爹自己的妈一样无私的对待自己。

然而社会某种程度上就是一所最大的大学。

尤其是在亲密关系里,多数人之所以恋爱总是出问题,其实就是过于肆无忌惮他人的付出。

  • 但是现实就是,这个世界上只有一种方法可以赢得一段真正的关系。那就是:等价交换。

也就是只有你花费了同等的时间和精力得来的关系,这个关系才会真正属于你。

但凡想在关系里不劳而获的人,其实内心深处仍旧只是一个长不大的小孩。

最后的结果就是,他终究什么也不会得到。

8、有自爱的能力,不再把爱自己的权利交给其它人;

一个真正心智成熟的人,他一定是一个自爱的人;

什么叫做自爱?并不是给自己买包包或是买奢侈品或是满足自己的一切物质需求,这只会让自己越来越空虚。

真正的自爱只有一种标准:知道什么选择对自己来说是最好的。

比如在彻夜打游戏和早早休息之间的选择,就可以看出一个人到底是否明白自爱为何物。

至少我相信,一个缺乏自爱能力的人,也终究无法成为一个好的爱人。

所以爱别人之前,请先学会爱自己。

9、面对困难,首先思考的是如何解决问题,而不是一味地发泄情绪。

有句话叫做“小孩子只讲对错,但是大人是权衡利弊”的。

毕竟成年人的世界从来没有容易二字。既然我们是活在同一个地球上,你以为你遭受的痛苦,别人就不会遭受吗?

那既然大家都不容易,为什么有些人稍微遇到点打击就要死要活?

因为他还没有长大。

所以那些惯性的自我怜悯,认为自己是全世界最不容易、最委屈以及最脆弱的人,如果你哪天睁开眼睛去其它世界看看战争里难民的遭遇,你会发现你些小痛苦只能叫做“矫情”以及“无病呻吟”。

所有的强大,都不是一天变成的。然而想要独当一面的面对这个世界的残酷之前:先学会解决问题,而不是抱怨问题。

满纸荒唐言,一把辛酸泪,都云作者痴,谁解其中味

红楼梦原版序言

满纸荒唐言,一把辛酸泪。

都云作者痴,谁解其中味。

释义:

意思就是他自己觉得写这本书很辛苦,但人们都不了解,把这本书说成是乱写甚至是反书、禁书.但他自己却沉迷其中,这种体会可能只有他自己才能真切知道。该诗表达了作者难以直言又深怕被世俗所不解的苦闷心情。

红楼梦中经典四句诗句:

1、作者缘起 

说到辛酸处,荒唐愈可悲。

由来同一梦,休笑世人痴。

2、青埂峰偈 

无材可去补苍天,枉入红尘若许年。

此系身前身后事,倩谁记去作奇传。

3、癞头僧 疯话

惯养娇生笑你痴,菱花空对雪澌澌。

好防佳节元宵后,便是烟消火灭时。

4、中秋对月 

时逢三五便团圆,满把晴光护玉栏。

天上一轮才捧出,人间万姓仰头看。

夫天地者,万物之逆旅也;光阴者,百代之过客也。

唐代 李白《春夜宴桃李园序 / 春夜宴从弟桃花园序》

夫天地者,万物之逆旅也;光阴者,百代之过客也。而浮生若梦,为欢几何?古人秉烛夜游,良有以也。况阳春召我以烟景,大块假我以文章。会桃花之芳园,序天伦之乐事。群季俊秀,皆为惠连;吾人咏歌,独惭康乐。幽赏未已,高谈转清。开琼筵以坐花,飞羽觞而醉月。不有佳咏,何伸雅怀?如诗不成,罚依金谷酒数。

译文
  天地是万物的客舍,时间是古往今来的过客。死生的差异,就好像梦与醒的不同,纷纭变换,不可究诘,得到的欢乐,又能有多少呢?古人夜间执着火炬游玩,实在是有道理啊。况且温和的春天以秀美的景色来招引我们,大自然又给我们展现锦绣风光。相聚在桃花飘香的花园中,畅叙兄弟间快乐的往事。弟弟们英俊优秀,个个都有谢惠连那样的才情,而我作诗吟咏,却惭愧不如谢灵运。清雅的赏玩不曾停止,高谈阔论又转向清言雅语。摆开筵席来坐赏名花,快速地传递着酒杯醉倒在月光中。没有好诗,怎能抒发高雅的情怀?倘若有人作诗不成,就要按照当年石崇在金谷园宴客赋诗的先例,谁咏不出诗来,罚酒三杯。

注释
桃花园,疑在安陆兆山桃花岩。从:cóng(旧读zòng),堂房亲属。从弟:堂弟。
逆旅:客舍。 逆:迎接。 旅:客。 迎 客止歇,所以客舍称逆旅。
过客:过往的客人。李白《拟古十二首》其九:“生者为过客。”
浮生若梦:意思是,死生之差异,就好像梦与醒之不同,纷纭变化,不可究诘。
秉烛夜游:谓及时行乐。秉:执。《古诗十九首》其十五:”昼短苦夜长,何不秉烛游。”曹丕《与吴质书》:”少壮真当努力,年一过往,何可攀援!古人思秉烛夜游,良有以也。有以:有原因。这里是说人生有限,应夜以继日的游乐。秉,执。以,因由,道理。
阳春:和煦的春光。召:召唤,引申为吸引。烟景:春天气候温润,景色似含烟雾。
大块:大地。大自然。假:借,这里是提供、赐予的意思。文章:这里指绚丽的文采。古代以青与赤相配合为文,赤与白相配合为章。
序:通“叙”,叙说。天伦:指父子、兄弟等亲属关系。这里专指兄弟。
群季:诸弟。兄弟长幼之序,曰伯(孟)、仲、叔、季,故以季代称弟。季:年少者的称呼。古以伯(孟)、仲、叔、季排行,季指同辈排行中最小的。这里泛指弟弟。
惠连:谢惠连,南朝诗人,早慧。这里以惠连来称赞诸弟的文才。
咏歌:吟诗。
康乐:南朝刘宋时山水诗人谢灵运,袭封康乐公,世称谢康乐。
“幽赏”二句:谓一边欣赏着幽静的美景,一边谈论着清雅的话题。
琼筵(yán):华美的宴席。坐花:坐在花丛中。
羽觞(shāng):古代一种酒器,作鸟雀状,有头尾羽翼。醉月:醉倒在月光下。
金谷酒数:金谷,园名,晋石崇于金谷涧(在今河南洛阳西北)中所筑,他常在这里宴请宾客。后泛指宴会上罚酒三杯的常例。▲

女人的心情短语

一、有时你自己可能都没察觉,在你经历一些事或遇到某个人后,你就像换了一种性格,悄悄地告别了从前的自己。
二、愿你早日学会逢场作戏,愿你早点习惯物是人非,毕竟不是每一个人都和天真的你一样容易动真情。
三、因为无能为力,所以顺其自然,因为心无所恃,所以随遇而安。
四、好说话但别太善良,心狠点但别不留余地,不以最大的恶意去揣测别人,但也绝对不要毫无原则地释放爱意。
五、做最真实最漂亮的自己,依心而行,别回头,别四顾,别管别人说什么。比不上你的,才议论你;比你强的,人家忙着赶路,根本不会多看你一眼。
六、别把我的个性和态度混为一谈,我的个性是源于我是谁,而我的态度则取决于你是谁。
七、你备胎无数,你感情不断,并不是因为你很迷人,而是你廉价又百搭。
八、人们日常所犯最大的错误,是对陌生人太客气,而对亲密的人太苛刻。
九、你一直在练习微笑,倒不是说变成了自己讨厌的人,而是在世故中变得沉稳,总不能累了就放弃,痛了就喊疼。相信别人不如依赖自己,他人报以伤害,时光会给你温暖。
十、我不屑与任何一个人去争。爱我的,不用争,不爱的,争来也没用。任何事情,总有答案,与其烦恼,不如顺其自然。
十一、不要让那些真正对你好的人,慢慢的从你的生活中消失,无论爱情还是友情,不去经营,都会形同陌路。
十二、有人说,如果你很想要一样东西,就放它走。如果它回来找你,那么它永远都是你的。要是它没有回来,那么不用再等了,因为它根本就不是你的。
十三、拼命对一个好,生怕做错一点对方就不喜欢你。这不是爱。而是取悦。分手后觉得更爱对方,没他就活不下去,这不是爱情,是不甘心。
十四、一个女人最酷的样子,应该是风情万种,吻不同的唇,喜欢不同的人,却不爱任何人。
十五、没有能力养活爱情的时候,就别恋爱,不然你只会越来越穷。
十六、总有一天,你会对着过去的伤痛微笑。你会感谢离开你的那个人,他配不上你的爱、你的好、你的痴心。他终究不是命定的那个人。幸好他不是。
十七、你是不是也是经常,独自一个人咽下所有悲伤和委屈,见人还要微笑着,装作看上去过得很好。
十八、生活如果不宠你,更要自己善待自己。这一生,风雨兼程,就是为了遇见最好的自己,如此而已。
十九、有的人来到你身边,是告诉你什么是真情;有的人,是告诉你什么是假意;就像有的人来到你身边是为了给你温暖,有的人是为了使你心寒。这一切都是生命的礼物,无论你喜欢与否也要接受,然后学着明白它们的意义。
二十、心中纵有万语千言想对你说,却找不到一个打扰你的理由,有千万次想关心你,却找不到一个合适的身份。
二十一、不要着急,最好的总会在最不经意的时候出现。那我们要做的就是:怀揣希望去努力,静待美好的出现。

可爱句子,简短走心

一、余生,祝我快乐,不会为了琐事烦恼,不会为了金钱苦恼,不会为了遗憾后悔。
二、有时候挺讨厌自己的,不会说话,太过善良,没什么心眼,还这么可爱。
三、生命中许多的错失,是因为我们不坚持、不努力、不挽留,然后欺骗自己说一切都是命运。
四、从今往后,做个明白人,分得出友情,拎得清爱情。
五、最好的地方,是没去过的地方。最好的时光,是回不来的时光。
六、与其违心赔笑,不如一人安静,与其在意别人的背弃和不善,不如经营自己的尊严和美好。
七、对待生命要认真,对待生活要活泼。
八、喜欢一个人,总想要朝朝暮暮。喜欢一个地方,总喜欢去了又去。
九、等你生活中真有了生老病死这样的大事,才会知道自己以前半夜的忧伤都是狗屁。
十、愿你安枕无忧,愿你好梦常在,愿你爱的人总守护着你。
十一、时间会告诉我们,简单的喜欢,最长远;平凡中的陪伴,最心安;懂你的人,最温暖。
十二、没事就想想如何致富吧,别总在感情的世界里伤春悲秋,捏在手心的钱永远要比那抓不住的心踏实。
十三、我坚信这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活。
十四、愿你能在准备犯傻前,及时意识到自己的傻,否则当你回首往事时,你会感到很尴尬。
十五、把情绪克制下来,把心情平静下来,把秘密收进心里,把微笑打开,要相信,没什么坎是过不去的。
十六、别嫌弃一直陪你的人,别陪一直嫌弃你的人。——善良,但不盲目。
十七、生活上不坚定,感情不够洒脱,患得患失,敏感多疑,所以你才那么不快乐。
十八、你要相信,这个世界这么大,如果,有人对你的爱不屑一顾,那肯定也会有人将你的爱小心收藏。
十九、自己喜欢的东西,就不要问别人好不好看。喜欢胜过所有道理,原则抵不过我乐意!
二十、让来的人来,让去的人去。顺其自然,是对生活最大的成全。
二十一、愿你有好运气,如果没有,愿你在不幸中学会慈悲;愿你被很多人爱,如果没有,愿你在寂寞中学会宽容。
二十二、你若是有勇气跟过去说再见,生活也许真的会给你一个崭新的开始。
二十三、愿你有深夜的酒,也有清晨的吻和粥,愿你想念时可以拥抱,深爱时不必躲藏。
二十四、喜欢就百分之百的投入和温柔,离开的时候就摆摆手,大步向前走,那个爱的洒脱又利落的你,不知道有多酷。
二十五、愿你被生活温柔以待,愿你温柔地对待生活。
二十六、你的好运气藏在你的实力里,也藏在你不为人知的努力里,你越努力,就越幸运。
二十七、每个人的人生里都会遇到一场措手不及的大雨,若你身陷雨中,愿有人为你撑伞;如果没有,也愿你有听雨的心情。