All posts by dotte

Overview of ECMAScript 6 features

Introduction

ECMAScript 6, also known as ECMAScript 2015, is the latest version of the ECMAScript standard. ES6 is a significant update to the language, and the first update to the language since ES5 was standardized in 2009. Implementation of these features in major JavaScript engines is underway now.

See the ES6 standard for full specification of the ECMAScript 6 language.

ES6 includes the following new features:

ECMAScript 6 Features

Arrows

Arrows are a function shorthand using the => syntax. They are syntactically similar to the related feature in C#, Java 8 and CoffeeScript. They support both statement block bodies as well as expression bodies which return the value of the expression. Unlike functions, arrows share the same lexical this as their surrounding code.

// Expression bodies
var odds = evens.map(v => v + 1);
var nums = evens.map((v, i) => v + i);
var pairs = evens.map(v => ({even: v, odd: v + 1}));

// Statement bodies
nums.forEach(v => {
  if (v % 5 === 0)
    fives.push(v);
});

// Lexical this
var bob = {
  _name: "Bob",
  _friends: [],
  printFriends() {
    this._friends.forEach(f =>
      console.log(this._name + " knows " + f));
  }
}

More info: MDN Arrow Functions

Classes

ES6 classes are a simple sugar over the prototype-based OO pattern. Having a single convenient declarative form makes class patterns easier to use, and encourages interoperability. Classes support prototype-based inheritance, super calls, instance and static methods and constructors.

class SkinnedMesh extends THREE.Mesh {
  constructor(geometry, materials) {
    super(geometry, materials);

    this.idMatrix = SkinnedMesh.defaultMatrix();
    this.bones = [];
    this.boneMatrices = [];
    //...
  }
  update(camera) {
    //...
    super.update();
  }
  get boneCount() {
    return this.bones.length;
  }
  set matrixType(matrixType) {
    this.idMatrix = SkinnedMesh[matrixType]();
  }
  static defaultMatrix() {
    return new THREE.Matrix4();
  }
}

More info: MDN Classes

Enhanced Object Literals

Object literals are extended to support setting the prototype at construction, shorthand for foo: foo assignments, defining methods, making super calls, and computing property names with expressions. Together, these also bring object literals and class declarations closer together, and let object-based design benefit from some of the same conveniences.

var obj = {
    // __proto__
    __proto__: theProtoObj,
    // Shorthand for ‘handler: handler’
    handler,
    // Methods
    toString() {
     // Super calls
     return "d " + super.toString();
    },
    // Computed (dynamic) property names
    [ 'prop_' + (() => 42)() ]: 42
};

More info: MDN Grammar and types: Object literals

Template Strings

Template strings provide syntactic sugar for constructing strings. This is similar to string interpolation features in Perl, Python and more. Optionally, a tag can be added to allow the string construction to be customized, avoiding injection attacks or constructing higher level data structures from string contents.

// Basic literal string creation
`In JavaScript '\n' is a line-feed.`

// Multiline strings
`In JavaScript this is
 not legal.`

// String interpolation
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

// Construct an HTTP request prefix is used to interpret the replacements and construction
POST`http://foo.org/bar?a=${a}&b=${b}
     Content-Type: application/json
     X-Credentials: ${credentials}
     { "foo": ${foo},
       "bar": ${bar}}`(myOnReadyStateChangeHandler);

More info: MDN Template Strings

Destructuring

Destructuring allows binding using pattern matching, with support for matching arrays and objects. Destructuring is fail-soft, similar to standard object lookup foo["bar"], producing undefined values when not found.

// list matching
var [a, , b] = [1,2,3];

// object matching
var { op: a, lhs: { op: b }, rhs: c }
       = getASTNode()

// object matching shorthand
// binds `op`, `lhs` and `rhs` in scope
var {op, lhs, rhs} = getASTNode()

// Can be used in parameter position
function g({name: x}) {
  console.log(x);
}
g({name: 5})

// Fail-soft destructuring
var [a] = [];
a === undefined;

// Fail-soft destructuring with defaults
var [a = 1] = [];
a === 1;

More info: MDN Destructuring assignment

Default + Rest + Spread

Callee-evaluated default parameter values. Turn an array into consecutive arguments in a function call. Bind trailing parameters to an array. Rest replaces the need for arguments and addresses common cases more directly.

function f(x, y=12) {
  // y is 12 if not passed (or passed as undefined)
  return x + y;
}
f(3) == 15
function f(x, ...y) {
  // y is an Array
  return x * y.length;
}
f(3, "hello", true) == 6
function f(x, y, z) {
  return x + y + z;
}
// Pass each elem of array as argument
f(...[1,2,3]) == 6

More MDN info: Default parameters, Rest parameters, Spread Operator

Let + Const

Block-scoped binding constructs. let is the new var. const is single-assignment. Static restrictions prevent use before assignment.

function f() {
  {
    let x;
    {
      // okay, block scoped name
      const x = "sneaky";
      // error, const
      x = "foo";
    }
    // error, already declared in block
    let x = "inner";
  }
}

More MDN info: let statement, const statement

Iterators + For..Of

Iterator objects enable custom iteration like CLR IEnumerable or Java Iterable. Generalize for..in to custom iterator-based iteration with for..of. Don’t require realizing an array, enabling lazy design patterns like LINQ.

let fibonacci = {
  [Symbol.iterator]() {
    let pre = 0, cur = 1;
    return {
      next() {
        [pre, cur] = [cur, pre + cur];
        return { done: false, value: cur }
      }
    }
  }
}

for (var n of fibonacci) {
  // truncate the sequence at 1000
  if (n > 1000)
    break;
  console.log(n);
}

Iteration is based on these duck-typed interfaces (using TypeScript type syntax for exposition only):

interface IteratorResult {
  done: boolean;
  value: any;
}
interface Iterator {
  next(): IteratorResult;
}
interface Iterable {
  [Symbol.iterator](): Iterator
}

More info: MDN for…of

Generators

Generators simplify iterator-authoring using function* and yield. A function declared as function* returns a Generator instance. Generators are subtypes of iterators which include additional next and throw. These enable values to flow back into the generator, so yield is an expression form which returns a value (or throws).

Note: Can also be used to enable ‘await’-like async programming, see also ES7 await proposal.

var fibonacci = {
  [Symbol.iterator]: function*() {
    var pre = 0, cur = 1;
    for (;;) {
      var temp = pre;
      pre = cur;
      cur += temp;
      yield cur;
    }
  }
}

for (var n of fibonacci) {
  // truncate the sequence at 1000
  if (n > 1000)
    break;
  console.log(n);
}

The generator interface is (using TypeScript type syntax for exposition only):

interface Generator extends Iterator {
    next(value?: any): IteratorResult;
    throw(exception: any);
}

More info: MDN Iteration protocols

Unicode

Non-breaking additions to support full Unicode, including new Unicode literal form in strings and new RegExp u mode to handle code points, as well as new APIs to process strings at the 21bit code points level. These additions support building global apps in JavaScript.

// same as ES5.1
"

社保医保报销

有朋友在后台咨询小新:朋友圈最近疯狂转发的医保报销V型图,看的不太懂,能不能解释一下?

v2-a1f5b9ee32ee36a906660215590871df_b

La disfunción eréctil puede causar un impacto significativo en la calidad de vida de una persona, afectando no solo su salud física, sino también su bienestar emocional y relaciones interpersonales. Sorprendentemente, muchos hombres no buscan ayuda debido a la vergüenza o el estigma asociado. Sin embargo, es importante destacar que hay tratamientos disponibles y que algunas opciones, como los medicamentos, pueden ser perjudiciales si no se utilizan adecuadamente. Por ejemplo, algunas personas consideran alternativas como el uso de ciertos antidepresivos, entre ellos el tofranil, que a menudo puede estar disponible para aquellos que deciden “. Este enfoque puede ofrecer resultados positivos, aunque siempre es recomendable consultar a un médico antes de comenzar cualquier tratamiento. La concienciación y la educación sobre este tema son cruciales para ayudar a quienes lo padecen a buscar las soluciones adecuadas.

在回答用户的问题之前,我们需要知道社保医保的报销比例:

以北京医保卡为例:

v2-8e9a22f964f02a6905beb7779e662c75_b

简单说,社保医保的门诊报销比例中,有一定的起付线和报销比例,最高限额为2万;而在社保医保的住院报销比例中,同样有一定的起付线和报销比例,最高限额为10万,一旦超过10万,便属于大病报销的范围, 最高为30万。

而用户提到的医保报销V型图就是医疗费用进行项目分类细化,分析社保医保报销。

于是小新进行以下分解,内容如下:

v2-8b903b263a5f1e67f97d81fd244c5238_b

V型图的面积代表我们所有的医疗费用,这些全部都是可以报销的吗?

假设马大姐生病住院花费了40万,那么这个红色部分就代表马大姐花费的40万医药费。

v2-4f54f084200eb4290efb4a22c02ae84a_b

医保报销是有起付线的,起付线以下的部分都需自己承担。门诊和住院的起付线是不同的,不同的地区起付线也是不同的,医院级别不同,起付线也是不同的,一般起付线设置在300-1800元不等。

以北京社保医保为例,马大姐在40万的医疗费用中要分开门诊和住院费用,在报销门诊费用时,扣除掉起付线,剩余的部分才能进行报销,同理,住院费用亦是。

v2-b67e5337ac57e45f798946883b15b40a_b

起付线以上的费用就可以全部报销了?不是,社保医保报销还有限额,就是封顶线,在最高限额以上的部分也需自己承担。每个地区的社保医保设置限额是不同的,社保保险类别不同,最高限额也不同,住院报销一般最高限额为30万,门诊报销一般为2万。

马大姐在疾病住院医疗方面花费超过了30万,那么超过的部分,就需要马大姐自己承担了。

v2-050e9ae465afc17dca1fbb4e423c16f7_b

封顶线以下,扣除起付线后的费用是不是就可以报销了。答案肯定是否。小新在上面也说了,社保医保报销是有报销比列的,也就是在报销的金额中还需自己承担一部分,就是自付比例。地区不同、社保保险类别不同、医院等级不同,自付比例都不同,一般会设在10%左右。

马大姐报销的项目:门诊报销=(门诊医疗费用-起付线)×(100%-自付比例);住院报销=(封顶线-起付线)×(100%-自付比例)。

v2-4f2fbb7529e12bd4c4325059a591cc9b_b

是不是觉得经过一番扣除之后,剩下的部分应该全报了吧?社保医保对药品和治疗项目有严格的规定,也就说在治疗过程中用到一些进口药、特效药、医疗设备、医疗服务项目等,费用昂贵不说,社保医保完全不报,称为自费项目,所以说最中间的部分才是真正报销的部分。

马大姐:住院报销=(封顶线-起付线-自费内容)×(100%-自付比例)。

经过这样重重计算和扣除之后,对于小病来说,报销还是可以的,因为很难用到一些自费项目。而一旦生的是大病,自费内容会占比很大,其实报销下来,患者仍然要承担很大的医疗费用,又应该怎么办呢?

v2-69db43caa988a100cae92ea399e8e481_b

现今商业保险的作用已不能忽视,社保医保不能报销的部分,商业保险可以进行二次报销,给予补偿。

起付线:现在很多医疗险中都含门诊报销,意外门诊报销和疾病门诊报销都可,这样可以报销起付线的部分,减少开支。

自付部分:住院医疗险中大多都含有住院津贴,每天支付患者一定的金额,进行补偿。

自费内容和封顶线(最高限额)以外:因为涉及两者的,一般都是大病或重病,可以进行投保健康险和重疾险。一旦确诊,立即给付。比如:百万医疗险(1年期)可以进行疾病报销治疗;重大疾病保险有长有短,一经确诊,符合保险合同,根据约定保额进行赔付,帮助治疗,后期康复和弥补损失。

小新提醒:社保医保是事后报销,也就是花费过大量的金额后才给予报销,而商业保险先赔付后治疗。

看完上面的分解图,你明白了吗?

from:https://zhuanlan.zhihu.com/p/28145934

jvm知识点总览

在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么打。同样两者也是相辅相成的,内功深厚之后,原来普通的一招一式威力也会倍增。

对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,内功的修炼却越发的重要,比如算法、设计模式、底层原理等,只有把这些基础熟练之后,才能在开发过程中知其然知其所以然,出现问题时能快速定位到问题的本质。

对于Java程序员来讲,spring全家桶几乎可以搞定一切,spring全家桶便是精妙的招式,jvm就是内功心法很重要的一块,线上出现性能问题,jvm调优更是不可回避的问题。因此JVM基础知识对于高级程序员的重要性不必言语,我司在面试高级开发的时候,jvm相关知识也必定是考核的标准之一。本篇文章会根据之前写的jvm系列文章梳理出jvm需要关注的所有考察点。

jvm 总体梳理

jvm体系总体分四大块:

  • 类的加载机制
  • jvm内存结构
  • GC算法 垃圾回收
  • GC分析 命令调优

当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理

这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以在公众号回复“jvm”进行查看。

JVM

类的加载机制

主要关注点:

  • 什么是类的加载
  • 类的生命周期
  • 类加载器
  • 双亲委派模型

什么是类的加载

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

类的生命周期

类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载,其中前三部是类的加载的过程,如下图;

640

  • 加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象
  • 连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用
  • 初始化,为类的静态变量赋予正确的初始值
  • 使用,new出对象程序中使用
  • 卸载,执行垃圾回收

几个小问题?
1、JVM初始化步骤 ? 2、类初始化时机 ?3、哪几种情况下,Java虚拟机将结束生命周期?
答案参考这篇文章jvm系列(一):java类的加载机制
类加载器

640

  • 启动类加载器:Bootstrap ClassLoader,负责加载存放在JDK\jre\lib(JDK代表JDK的安装目录,下同)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库
  • 扩展类加载器:Extension ClassLoader,该加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载DK\jre\lib\ext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。
  • 应用程序类加载器:Application ClassLoader,该类加载器由sun.misc.Launcher$AppClassLoader来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器

类加载机制

  • 全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入
  • 父类委托,先让父类加载器试图加载该类,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类
  • 缓存机制,缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区寻找该Class,只有缓存区不存在,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓存区。这就是为什么修改了Class后,必须重启JVM,程序的修改才会生效

jvm内存结构

主要关注点:

  • jvm内存结构都是什么
  • 对象分配规则

jvm内存结构

642
方法区和堆是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。

  • Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
  • 方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
  • 程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。
  • JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
  • 本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。

对象分配规则

  • 对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。
  • 大对象直接进入老年代(大对象是指需要大量连续内存空间的对象)。这样做的目的是避免在Eden区和两个Survivor区之间发生大量的内存拷贝(新生代采用复制算法收集内存)。
  • 长期存活的对象进入老年代。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值对象进入老年区。
  • 动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可以直接进入老年代。
  • 空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查HandlePromotionFailure设置,如果true则只进行Monitor GC,如果false则进行Full GC。

如何通过参数来控制个各个内存区域
参考此文章:jvm系列(二):JVM内存结构

GC算法 垃圾回收

主要关注点:

  • 对象存活判断
  • GC算法
  • 垃圾回收器

对象存活判断

判断对象是否存活一般有两种方式:

  • 引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。
  • 可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,不可达对象。

GC算法

GC最基础的算法有三种:标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。

  • 标记 -清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。
  • 复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。
  • 标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存
  • 分代收集算法,“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。

垃圾回收器

  • Serial收集器,串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。
  • ParNew收集器,ParNew收集器其实就是Serial收集器的多线程版本。
  • Parallel收集器,Parallel Scavenge收集器类似ParNew收集器,Parallel收集器更关注系统的吞吐量。
  • Parallel Old 收集器,Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法
  • CMS收集器,CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。
  • G1收集器,G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征

GC算法和垃圾回收器算法图解以及更详细内容参考: jvm系列(三):GC算法 垃圾收集器

GC分析 命令调优

主要关注点:

  • GC日志分析
  • 调优命令
  • 调优工具

GC日志分析

摘录GC日志一部分

Young GC回收日志:

  1. 2016-07-05T10:43:18.093+0800: 25.395: [GC [PSYoungGen: 274931K->10738K(274944K)] 371093K->147186K(450048K), 0.0668480 secs] [Times: user=0.17 sys=0.08, real=0.07 secs]

Full GC回收日志:

  1. 2016-07-05T10:43:18.160+0800: 25.462: [Full GC [PSYoungGen: 10738K->0K(274944K)] [ParOldGen: 136447K->140379K(302592K)] 147186K->140379K(577536K) [PSPermGen: 85411K->85376K(171008K)], 0.6763541 secs] [Times: user=1.75 sys=0.02, real=0.68 secs]

通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。其中PSYoungGen表示gc回收前后年轻代的内

通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。其中PSYoungGen表示gc回收前后年轻代的内存变化;ParOldGen表示gc回收前后老年代的内存变化;PSPermGen表示gc回收前后永久区的内存变化。young gc 主要是针对年轻代进行内存回收比较频繁,耗时短;full gc 会对整个堆内存进行回城,耗时长,因此一般尽量减少full gc的次数

Young GC日志:

643

 

Full GC日志:

 

644

Java GC分析参考:jvm系列(五)Java GC 分析

调优命令

Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo

  • jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
  • jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
  • jmap,JVM Memory Map命令用于生成heap dump文件
  • jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看
  • jstack,用于生成java虚拟机当前时刻的线程快照。
  • jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。

详细的命令使用参考这里:jvm系列(四):jvm调优-命令篇
调优工具

常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(Memory Analyzer Tool)、GChisto。

  • jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控
  • jvisualvm,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。
  • MAT,Memory Analyzer Tool,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗
  • GChisto,一款专业分析gc日志的工具

工具使用参考: jvm系列(七):jvm调优-工具篇

参考:

JVM体系结构与GC调优

from:https://mp.weixin.qq.com/s/ebg0bT_xBahGV7OAKorBAw

彦君婚礼

彥君典礼汇总

吴姝菡(小师妹)15611289962,k617 ✔
胡雪晖155-9915-0690 GX8827 1:20✔

博瑞、于欣 集宁 15:50到

葛蔚宁188-1033-6706,1号k617✔

黄丹娜152-5807-1188,1号 k617✔
婚礼流程:

1号

14:00 布置宾馆婚房

17:00 出发接媳妇儿

20:00~21:00 到宾馆吃饭,吃完休息(确认哪几个房间)

00:00 吃翻身饼长寿面(可酌情取消)
2号

6:00 贴囍、压井盖

7:00 羊宝宝在宾馆化妆,抽空我也化妆。

8:00 布置家里囍房

9:00 婚车到家,摄像到位。

9:30 出发娶亲。哥嫂子抱着红毯子秀禾服。侄儿提两瓶红酒,3到5根肋条,红纸包住。我拿手捧花,响炮的拿上炮,其他每车一人压车

10:00 到达宾馆。伯母把红酒倒了,装上红豆还给抱酒瓶的,并且插上两根大葱。报酒瓶的偷一对酒樽回来(?不能空手回)。剔骨肉把骨头返还(酌情取消,由伯父伯母定)。其余按照司仪安排

10:30 宾馆出发回家。下车后抱上楼(开车门可能会有人抢首饰或者鞋袜,全程不能脚落地,可能同学们会玩儿一会儿)。到家后都休息吃饭,燕飞领羊宝宝洗手(给燕飞红包)

11:30 从家出发到达婚礼现场。换衣服,准备正式开席(安排响炮的,准备好戒指,讲话内容)

12:00 正式开席,举行仪式。(记住安排扔捧花环节)

12:30 仪式结束,准备敬酒。(换敬酒服)

13:30 敬酒结束,准备照相。

14:00 欢送宾客,安排未走亲属。
3号

10:00 出发去白塔机场送伯父伯母

13:00 ✈️
待办:

1、吊花2个、囍字(大5个,玻璃10个,台阶小的)、对联2付、红纸、炮、红布包行李、红包、

胸花21朵(新郎*1,新娘*1,父亲*2,母亲*2,哥哥*1,嫂子*1,代东*4,先生*4,叔叔*4,司仪*1)✔

2、租车接亲用(平平哥哥)✔

3、糖盒60个✔

4、给总管记账员衬衫胸花领带领结(39cm:2个;40cm:1个;41cm:4个;43cm:1个。M*2,L*1,XL*4,3XL*1)✔

5、预定宾馆房间标间15间套房1间(有福哥)✔

6、我和羊宝宝红内衣袜子等✔

7、提前将服装造型照片发给化妆师✔

8、准备红酒绿豆肋骨肉

9、布置酒店婚房和家里婚房(家里吊花囍字红床单被罩,酒店红床单水果一次性水杯好茶酒樽等)

10、和司仪要手捧花

11、500红包给羊宝宝侄儿(压车的)

12、电子秤

13、给化妆师600红包

人员职责:

所有的红包:哥

宾馆房卡:四叔

娶亲:哥嫂子(或者大姐和姐夫,待定),拿酒瓶的弟弟(待定),响炮(待定),压车的(同学)

陪亲吃饭:哥嫂子,三叔三婶,四叔四婶,三舅四舅等

烟酒管理:五叔六叔

压井盖:皮圈石头

娶亲压车人员:哥嫂子(拿上被子及秀禾服),大龙(拿酒瓶),其余待定(每个车上一个同学)。

响炮:卯宴席开始、娶亲走的时候、到达宾馆、宾馆出发、娶到家、正席开始

婚房布置:哥嫂子我

订好婚庆了,总共7400,包含了卯宴席表演。摄像300。头车奔驰,免费送的,前提是烟酒饮料从他们那儿拿,能优惠,酒拿到一定量免费送饮料。车队320每辆,共5辆奥迪A6,车队总共1600。卯宴席表演有一个主持人,一男一女歌手,一个专业表演人员包括扮演猴子,魔术,杂技等等。正席表演有一个主持人,一男一女歌手,四个人组成的女子乐团,乐队表演总共4000。还有舞台灯光要1500。总共7400。剩下就剩烟酒了,要多少用多少,宴席办完一块儿结账。还有用富华的住宿也可以联系他,打7折,标间差不多打完折一间100。

蛋糕

苹果葡萄香蕉
任务分工:

哥嫂子-1号:

1、负责安排所有亲戚同学宾馆(统计房间个数及天数,以及房间号),临时接一些重要来宾(待定,接人期间,宾馆房间统计交由嫂子接管);

2、中午吃完饭收集8个身份证去富华开8个房间,其中包含一个套房。套房一天,标间两天;

2.1、将以下物品带到套房:一个红布袋(睡衣、两双鞋子、内衣)、一个透明塑料袋(红床单、红枕巾)、一个箱子(婚房装饰品外加一袋囍)、坚果水果盘子6个(分别装蛋糕、月饼、香蕉葡萄、坚果、苹果、糖和茶)、一次性水杯一袋50个、两包玉溪烟、一袋莲豆、两个空酒瓶、两根葱;

2.2、将以下物品带到宾馆的另一个房间(第二天用):白色婚纱一袋、红色敬酒服一件、首饰袋(头饰耳钉项链两戒指)、西服一套、易拉宝、八件衬衫、八个领结、一个薄纸箱(账本*2喷花*6记账笔一盒等)、胸花一袋;

2.3、将以下物品带到卯宴席现场:装好的糖果烟袋、炮;

3、暂定下午5点出发,哥和我接洋洋她们,回来后陪洋洋家人们吃完饭安顿好他们结束。
哥嫂子-2号:

1、上午9点娶亲,嫂子带上秀禾服包,哥抱上行李

2、拿上一些红包和新钱(已经准备好了),如果有耍笑的用

3、11点半去宾馆后将昨天带到宾馆的那些东西放到换衣房,拿上戒指仪式前给我。4、正席陪洋洋爸妈及亲戚

5、宴席后送宾客,统计剩余住宾馆人数
哥嫂子-3号:

上午10点和我送洋洋爸妈及亲戚们

中午12点家族聚餐

医学小常识

我来说几条普通的医学小常识。

1. 普通的病毒性感冒并不能被治疗,也不需要治疗。
抗生素对病毒性感冒毫无作用,而普通感冒大多数是由病毒引起的。所有吃下去的药物都是用来缓解症状的,比如鼻塞时用麻黄碱,是一种减充血剂通过收缩鼻黏膜血管缓解症状,发热时用解热镇痛药对乙酰氨基酚降热,流鼻涕时用抗组胺药物缓解。

而市面上大多数感冒药都是复方感冒药,意思就是同时含有好几种缓解不同感冒症状的成分。例如泰诺叫做“复方酚麻美敏片”,叫这个名字就是因为同时添加了对乙酰氨基酚伪麻黄碱右美沙芬氯苯那敏这些成分,取了每种成分里的一个字组合了药名。其中对乙酰氨基酚是退热药物,伪麻黄碱对缓解鼻塞很有效,右美沙芬是现在最常用的镇咳药,而氯苯那敏是一种抗组胺药,用来缓解鼻炎症状。

白加黑感冒药白片叫氨酚伪麻美芬片就是对乙酰氨基酚+伪麻黄碱+右美沙芬,黑片叫氨麻苯美片,就是对乙酰氨基酚+伪麻黄碱+右美沙芬+苯海拉明,多出来的这个苯海拉明对中枢神经系统有较强的抑制作用,晚上吃黑片睡得香靠的就是这个苯海拉明。

很多人感冒一次买一盒药吃不完,下次感冒时很自然地掏出来再吃,结果发现不怎么管用,求求你们了对症下药好不好。如果以鼻炎症状为主鼻塞流涕就选含有抗组胺药成分或伪麻黄碱成分的,如果主要症状是发热直接吃对乙酰氨基酚,如果主要是咳嗽光吃右美沙芬就够了。

而我的意见是普通感冒是一种自限性疾病,正常的情况下会在一个星期左右(5~7天)可痊愈。
如果感冒症状不是很严重,可以通过一般的生活治疗就可以了,就是注意休息,多喝热水,清淡的饮食,多喝热水不是没情商是真的为你好。

一些情况下,病毒性感冒发生后,免疫系统被破坏,细菌乘虚而入,合并细菌感染,比如扁桃体感染,肺部感染,这时候就需要抗生素治疗了。如果没有细菌感染的话别瞎吃什么阿莫西林,头孢氨苄,罗红霉素,破坏你的免疫系统了,答应我好吗?

2.我上一条说了感冒症状不严重的时候不需要特殊处理,那严重的时候呢?比如发热。

正常的体温口腔36.8±0.5℃,直肠(肛门)37.0±0.5℃和鼓膜(使用耳温枪测量)36.5±0.5℃,医学上称为发热,是指人体口腔温度(口温)大于 37.3℃,腋下温度(腋温)大于 37℃,或者直肠温度(肛温)大于 37.6℃,而 37.3℃~38℃为低热,38℃~39℃为中热,高于39℃为高热,所以再也不要说高烧38度多还坚持工作了好吗!?那根本不算高烧。

人类属于恒温动物,我们的体温是恒定的。我们的身体也有一套调温系统,我们大脑里有一块区域专门负责控制体温,叫做体温中枢,这个中枢有一个初始设定值,就是刚才说的正常体温37度,如果体温低于这个值了,中枢会指挥肌肉抽动产热,就是我们感觉到的寒战,同时使外周血管收缩,皮肤上的毛孔收缩,减少散热,慢慢的体温又重新升回去了,直到回升到那个设定的体温,就是我们说的取暖基本靠抖。而如果体温过高,这个中枢就指挥人体出汗,毛孔散开,毛细血管扩张,充分降温,降回到那个合适的温度,这就是我们说的发热,身体散热基本上靠流汗。而什么情况下会导致体温升高呢,就是外来微生物细菌病毒入侵身体,激活免疫系统,白细胞释放白介质刺激体温中枢,引起发热。

我说这么多就是要强调一点,发热的时候不要捂热发汗,尤其是小婴幼儿时期的孩子。临床上有个病症叫捂热综合征,又称婴儿蒙被缺氧综合征婴儿闷热综合征,就是由于过度保暖、捂闷过久引起婴儿缺氧、高热、脱水、抽搐昏迷,尤其是秋冬季节感冒高发期,孩子一发烧家长拼命捂着,结果送到医院来孩子不是在惊厥抽搐,就是脱水,最严重的还会导致孩子死亡。

出汗是人体退热的过程,是身体自发散热的结果,正是因为身体在退热才出汗,而不是出了汗才能退得了热,发汗根本退不了热。很多人搞错了这个因果关系,相反的身体在散热过程中你拼命捂着热散不出去,才是对身体的伤害。你发汗之后出了一身汗,身体很轻松那是因为出汗的过程本身就是身体自发性的散热,不是你捂出来的,捂的过程还干扰了散热的进程。百害无一利的事情,还折腾自己,答应我,不要再傻傻地发汗了好吗

3.一定要好好刷牙。我虽然不是口腔医生,但我平日里跟口腔医生打交道特别多,因为我从小就在马不停蹄地治牙。在这里不推荐任何牙刷牙膏以及清洁牙齿的产品,就以我的血泪史告诉你们,刷牙是我们自己能做的最高效最经济的保护牙齿措施。一定要用含氟牙膏(高氟地区处于牙齿发育期的小朋友不适用含氟牙膏,其他情况使用含氟牙膏是预防龋齿最有效且普遍的手段),质量好点的牙刷,用巴氏刷牙法,认真地刷牙,真的是为你好。

从我七八岁时候开始,就因为龋齿牙痛天天跑医院,每次看完牙,牙医都会认真叮嘱我一句“回去好好刷牙”,然而那时候没有听进去,直到我开始做根管,又在根管修复期把牙咬劈了,再去做种植才知道没保护好牙齿的悲哀。再好的种植体也不是自己的牙,没有神经血管的供应,随着时间的变化,牙龈会不可避免地发生退化萎缩,等到老了牙齿必然就会脱落。而且口腔科所有的项目都不能走医保,修复一颗牙前前后后要将近两万块,经济压力大身体承受的痛苦也无法言喻。

还有就是希望家长们多关注一下换牙期的孩子,牙齿该脱落时无法及时脱落就带他去看牙医好吗,不要一味地讲究瓜熟蒂落,我的右上颌尖牙在换牙期间乳牙没有及时脱落,所以它萌出后没有地方长,只能突出来,成了一颗龅牙。我小时候被这个龅牙折磨的又自卑又痛苦,在零几年的时候去整牙的时候,已经没有正常的牙间隙给它了,只能拔掉旁边一颗正常的健康牙,用箍牙的方式拔它强行摁了进去,同样的为了对称和咬合,把对面的那颗正常牙也拔除了,实在是痛苦又可惜。如果当时发现乳牙没有脱落的时候,能去及时地看牙医,就没有后面这些事了。零几年的时候,为了整这个牙前后共耗费了两年的时间,花费6000余元,那是那时候我们全家一年的收入。所以做家长的朋友们,在孩子换牙期请关照一下他们,多了解一下换牙期的常识,不要给自己的孩子造成这种悲剧。

4.贫血有很多种原因。但是阿胶红枣,红糖这些东西都是没有用的
本人就是中度贫血,属于非常典型的小细胞低色素性贫血,也就是缺铁性贫血,结果直男送了我很多红糖。真的不补血,中国古人(注意!!!我这里说的是中国古人,古代传统,没有提到半个字的中医,麻烦中医粉们不要自行精神高潮,真的跟你们没关系)讲究以形补形,总以为吃猪脑猴脑补脑,吃虎鞭鹿鞭壮阳,吃这些红色的食物补血,真的不!!!
缺铁性贫血就补铁,吃含铁丰富的食物,如果铁吸收障碍就直接静脉滴注液态铁,造血系统疾病引起的贫血请及时去医院血液科就诊。

看评论区有人说红枣确实含铁丰富,能补血,这是一个错误观念。中国食物成分表中显示,干枣每百克含铁2.3mg鲜枣每百克含铁1.2 mg。而相对猪肝每百克22.6mg的铁含量而言,红枣并无补铁优势可言。鲜枣晒干成红枣后,所含维生素C会随水分流失,其铁含量也不如动物肝脏及猪、牛、羊等瘦肉,因此不会有补血功效。所以医生和营养师所建议的首选补铁补血食品是动物肝脏,而不是红枣。

我不想跟中医粉们撕逼,我这里说的补血,补的是“贫血”,是指通过增加铁元素的吸收,改善血的具体有形成分,包括红细胞、白细胞、血小板等。跟你们说的补气血不是一回事,你们爱吃就使劲吃呗,没人拦着。

5.洗洗不能更健康

上面已经有人说了,我再重复一遍吧。

患有阴道炎症的女性在治疗时一般在局部用药前先用阴道冲洗,然后再塞药,可以提高疗效,还能去除局部不适感。于是就有部分女性经常自己进行阴道冲洗,她们认为阴道冲洗能够治疗阴道瘙痒,增加阴道抗菌能力,特别是配合各种品牌宣传广告,“洗洗更健康”之类的,就给部分女性形成了这样一个错误的观点。

频繁的阴道冲洗会破坏阴道内的酸碱平衡。 正常阴道内虽有多种细菌存在,但由于阴道与这些菌群之间形成生态平衡并不致病。在维持阴道生态平衡中,乳杆菌、雌激素及阴道PH起重要作用。生理情况下,雌激素使阴道上皮增生变厚,并增加细胞内糖原含量,阴道上皮细胞分解糖原为单糖,阴道乳杆菌将单糖转化为乳酸,维持阴道正常点的酸性环境(ph≤4.5,多为3.8~4.4),抑制其他病原体生长,称成为阴道自净作用。正常阴道菌群中,抗微生物因子可抑制或杀灭其他细菌。而阴道洗剂,消毒护垫等就会消灭掉一部分阴道内正常的乳杆菌吗,打破阴道的酸碱平衡。阴道生态平衡一旦被打破或外源性病原体侵入,即可导致阴道炎症发生。

除此之外,病原菌还可以沿宫颈上行至输卵管和子宫,大大提高了患输卵管炎症、盆腔炎、不孕症、宫外孕等疾病的风险。市售的洗剂有消毒不严甚至未消毒的可能性,再加上冲洗器具消毒不充分,冲洗方法不当,这种污染溶液进入输卵管后,可导致不明显的输卵管感染,引起输卵管炎症、盆腔炎症。而且冲洗液的本身,经常是强酸性,具有一定的刺激性,可能损害输卵管的纤毛上皮细胞。另外,原先已存在与阴道或子宫颈的感染病原体,在阴道冲洗时可能被冲到输卵管,引起输卵管感染。

而输卵管炎症,就是导致不孕症和宫外孕的罪魁祸首,所以啊,身体有不适要及时就医,没事别自己瞎洗。

6.术后不要瞎吃补品

术后医生都会给予饮食指导,让你吃啥你就吃啥,没事别瞎吃补品,先撇开营养价值不谈,各种中草药里面的成分不明,毒副作用不明。尤其是人参,关于“人参”是药品还是食品,我们中国一直没有认真研究过。欧洲列强侵入我们中国后,欧洲人才知道中国人用人参来维持和增强人的精力,于是,就对人参的这种“药用价值”进行了研究。出人意外的是,欧洲医学界得出了否定的结论。美国也是产人参较多的国家之一。为了确证人参的药用价值和营养价值,也从19世纪开始了与欧洲医学界相同目的的研究。直到20世纪70年代,美国药品和食品管理局才最后做出结论,把人参列为“一般认为安全的食品”(不属于药品)。90年代,国际医学界还继续发表了相关论文,国内也有比较多的报道。闲着没事可以自己去看看。

人参里的皂苷成分,有抗凝血作用,术后真是创口愈合期,吃了人参,术后容易出血。

中医粉们麻烦你们自己去查查人参里有没有皂苷成分,皂苷是不是抗凝血,况且我说的术后不要吃,因为容易引起术后出血,没拦着你们平时里不让你们吃,不要再争论这个问题了好吗?

7.不要相信任何能快速治愈严重皮肤病的方法。

对于银屑病、白癜风之类的疾病,病因主要是自体免疫的异常,所有能快速缓解症状的方式在本质上都一样:摧毁患者的免疫系统。所以这类的祖传秘方大多使用了重金属毒剂如铅和汞,再者就是一些免疫毒剂如雷公藤。这类方法无异于杀鸡取卵,如果你不服,可以看看冯小刚,论社会地位和财力,他比普通人高出太多。而他的白癜风,至今未治愈。

8.每天真的没有必要喝8杯水。

最开始营养协会建议我们的是,人民应该每天摄入8杯相当于64盎司的液体,这些液体包括饮水,喝粥,菜汤,蔬菜,水果里面的液体,传着传着就成了每天要喝8杯水。到了今天还被一些微商利用拿这个口号打广告,喝那么多水除了加重肾脏和膀胱的负担之外,并没有什么多余的好处。

先说这几点吧,等我想起来再补充,希望对大家有用。

应评论区要求,再补充一条关于咳嗽的吧。

9.咳嗽一定要对症下药

一进入秋冬季,就进入了呼吸道疾病的高发期,医院里最忙的科室莫过于呼吸内科和儿科了,只要一走进这俩科室,在走廊上就能听到此起彼伏声声不绝的“吭吭吭”咳嗽声。这是因为秋冬天空气寒冷干燥,空气污染加剧,冷空气、粉尘、刺激性气体或雾霾(如二氧化硫、二氧化氮、氨气、氯气等)的吸入可以刺激气管—支气管黏膜引起急性损伤和炎症反应。

这种气管—支气管炎通常起病较急,全身症状轻,主要症状表现为干咳或咳少量黏液痰,可延续2-3周,如果治疗不及时,迁延不愈就有演变成慢性支气管炎的风险。

很多人一咳嗽就联想到感冒了,去药店按感冒开了一大把一大把的抗生素,不仅没有效果不说还破坏了自身的免疫功能。还有的人咳嗽了靠自己的经验去买药,糖浆浸膏喝了好几瓶,作用一点都没有。在大学时候有一年放寒假,我得了一场小感冒,感冒好了后咳嗽一直不见好,我爸给我买了五六瓶枇杷膏喝下去后还是一直咳不停,前后持续了一个月左右,最后去医院开了药之后三天就好了。也有人说咳嗽一个月吃了两三百块咳嗽药,最后一瓶止咳糖浆好了,这就是典型的药不对症。

首先不是所有的咳嗽都需要治疗

咳嗽其实是人体的一种保护性生理反应,当呼吸道受到某种刺激,如有害的气体(雾霾)、痰液、异物等,人体就会咳嗽,从而可以避免有害物质深入呼吸道对人体造成伤害。咳嗽一方面能够清除呼吸道大量吸入物,另一方面能清除过度分泌或纤毛打扫呼吸道产生的大量粘液。像这种咳嗽,是一种力量,有着帮机体去干致病因素的作用,我们就不需要对这种轻微咳嗽用药。

但是,当刺激对气管-支气管黏膜造成了急性损伤和炎症反应时,呼吸道出现充血和水肿的时候,或者说由于长期咳嗽刺激,使得咳嗽中枢持久处于高度兴奋状态,也就是我们说的咳得久了咳嗽变成了一种习惯,有事没事都要咳嗽几下而且根本不受喉咙控制时,还有就是剧烈咳嗽影响到了心血管和泌尿生殖系统时,这样的咳嗽就不是具有保护作用的生理反射了,而是疾病的表现,就需要用药治疗。

止咳药的选择主要看痰

按理说,怎样用药是医生的事情,患者只要做到遵医嘱服药就行了,可是实际情况是很多人不会因为咳嗽这种小问题去医院就医,通常会为了简单省事不麻烦去药店买两盒药自己吃,了解一些用药知识选择药品时十分重要,有了知识基础才能做到心中有数,用着踏实,从而达到理想的治疗效果。

根据咳痰的量,把咳嗽分为干性咳嗽、湿性咳嗽两种情况。所谓的干性咳嗽是指仅有咳嗽症状而无痰或咳痰量极少,干性咳嗽常见于急性咽炎、慢性咽喉炎、急性支气管炎初期等;湿性咳嗽就是咳痰较多,痰有时候黏稠,有时候稀薄,有些是黄痰,有些是白痰。湿性咳嗽常见于慢性支气管炎、支气管扩张、肺炎、肺脓肿等疾病。

咳嗽无痰或者咳嗽少痰时,可应用中枢性镇咳药。中枢性镇咳药是一种特殊药品,有严格的适应症,对于剧烈的无痰干咳有非常强大立竿见影的效果。

常用的成分为右美沙芬,可待因,喷托维林等。

可待因虽然有非常强大的镇咳作用,但是服用一段时间后会成瘾,而且很难戒掉,大据报道有大量的青少年偶然接触这种药物后上瘾,后果十分严重,所以可待因这种成分在自己选购时一定要谨慎使用才是,最好是自己不要用。在临床上多应用于难以耐受的伴胸痛的干咳或其他镇咳药物无效的剧烈干咳,老人孕妇小孩禁用。

右美沙芬是临床上应用最广效果最好的成分,它通过抑制延髓咳嗽中枢而发挥中枢性镇咳作用,其镇咳作用比可待因还要略强,且不会产生成瘾性。根据临床数据显示,长期服用未见产生耐受性,服用治疗剂量内不抑制呼吸,药物代谢半衰期短,起效较快,血浆中原型药物浓度低。适应于感冒、急性或慢性支气管炎、支气管哮喘、咽喉炎、肺结核以及其他上呼吸道感染。副作用是引起轻微嗜睡,驾驶汽车或高空危险作业慎用,妊娠3月内禁用。

喷托维林就是我们以前去药店经常给开的小白片,味道很苦,一口水没有咽下去药片在嘴里化掉的那种苦味想必很多人都体验过。喷托维林的镇咳作用强度大概为可待因的1/3,无成瘾性但有轻度的阿托品反应和局麻作用(阿托品反应:1、松弛内脏平滑肌2、减少腺体分泌3、兴奋中枢4、升高眼内压;扩瞳孔;调解麻痹5、心率加快;传导加快;血管扩张等)。喷托维林在国内使用史较久,目前在临床上正逐渐淘汰,不过它对小儿咳嗽效果显著。

多痰或痰液黏稠的患者,禁用中枢性镇咳药,中枢性镇咳药可因抑制咳嗽反射而引起痰液阻塞,加重病情,甚至发生窒息。要选择祛痰或化痰的止咳药,因为痰液潴留在体内,不仅会使呼吸道致病原生长繁殖,导致炎症的恶化,还会阻塞支气管,发生缺氧、呼吸困难等情况。

祛痰药包括刺激性祛痰药、黏痰溶解剂和黏液稀释剂,主要成分如盐酸氨溴索、溴己新、桃金娘油等。

盐酸氨溴索能增加呼吸道黏膜浆液腺的分泌,减少粘液腺分泌,从而降低痰液粘度,促进肺表面活性物质的分泌,增加支气管纤毛运动,使痰液易于咳出。但是同样的化痰药对于治疗干咳也没有效果这就是为什么你反反复复咳嗽了一个月,光枇杷露就喝了五六瓶但是咳嗽一直好不了的原因。

溴己新属于黏痰溶解剂,主要作用于气管/支气管腺体细胞分泌粘滞性较低的小分子粘蛋白,改变分泌的流变学特性和抑制多糖合成,使黏痰减少,从而稀释痰液,易于咳出。

桃金娘油的主要作用是重建上、下呼吸道德黏液纤毛清除系统的清除功能,从而稀释和碱话粘液,增强粘液纤毛运动,使粘液移动速度显著增加,促进痰液排出,主要适用于急慢性支气管炎、鼻窦炎。

其他药物如复方甘草合剂有化痰功效但不能止咳,而且副作用较强,一方面甘草有着较强的升血作用,糖尿病患者禁用,另一方面因为含有甘草流浸膏,易导致水钠储溜,低钾血的假性醛固酮增多和升高血压,高血压患者也要慎重使用。适用于伤风感冒于急性支气管炎初期,幼儿和孕妇禁用。

还有一些急支糖浆和川贝枇杷膏等中成祛痰药的主要作用也是在化痰而非止咳,且这些药物尚未说清楚毒副作用,选择时也要谨慎。

from:https://www.zhihu.com/question/58939688/answer/236836066