听力单词笔记

2019.09.26

English

听力单词记录 2019/09/26 democracy n. 民主,民主主义;民主政治 pro-democracy 支持民主的 take to the street 走上街头(抗议、游行等) baton n. 指挥棒;接力棒;警棍;司令棒 detain vt. 拘留;留住;耽搁 demonstrator n. 示威者;论证者;指示者;证明者 demonstration n. 示范;证明;示威游行 barricade n. 街垒;路障;争论之处vt. 设路障;阻碍 suspension n. 悬浮;暂停;停职 suspend vt. 延缓,推迟;使暂停;使悬浮vi. 悬浮;禁赛 parliament n. 议会,国会 rally v. 召集;(军队)重新集合;复原;价格回升;集结;联合;(使)重新振作;参加汽车拉力赛;对……善意打趣;嘲笑n. 公众集会;汽车拉力赛;往返拍击;止跌回升;竞赛 coup n. 政变;妙计;出乎意料的行动;砰然的一击vt. 使…颠倒;使…倾斜vi. 推倒;倾斜;溢出 set out 出发;动身;开始;摆放 militant adj. 好战的n. 富有战斗性的人;好斗者;激进分子 rebel n. 反叛者,叛徒;叛逆者;反抗权威者v. 反叛,反抗,造反;抗命;不接受,不听使唤adj. 反抗的;造反的n. (Rebel) (美、德、荷、法、俄)勒贝尔(人名) militia /məˈlɪʃə/ n. 民兵组织;自卫队;义勇军;国民军 Democratic Republic of Congo 刚果民主共和国 demobilize vt. 遣散;使复员;使退伍(demobilise) undermine vt. 破坏,渐渐破坏;挖掘地基 revise vt. 修正;复习;校订vi. 修订;校订;复习功课n. 修订;校订 decree n. 法令;判决vt. 命令;颁布;注定;判决vi. 注定;发布命令 legislation n. 立法;法律 formula two racing driver 二级方程式赛车手 2019/10/08 Secretary of State n. 国务卿 congressional adj. 国会的;会议的;议会的 committee n. 委员会 intimidate vt. 恐吓,威胁;胁迫 bully n. 欺凌弱小者;土霸adj. [口]第一流的;特好的vt. 欺负;威吓vi. 欺侮人adv. 很;十分 impeachment n. 弹劾;控告;怀疑;指摘 inquiry n. 探究;调查;质询 the House Foreign Affairs Committee 众议院外交事务委员会 controversial adj. 有争议的;有争论的 clash n. 冲突,不协调;碰撞声,铿锵声vi. 冲突,抵触;砰地相碰撞,发出铿锵声vt. 使碰撞作声 corruption n. 贪污,腐败;堕落 implication n. 含义;暗示;牵连,卷入 volcanic adj. 火山的;猛烈的;易突然发作的n. 火山岩 fire tear gas 引燃催泪瓦斯 protest vi. 抗议;断言vt. 抗议;断言n. 抗议adj. 表示抗议的;抗议性的 rule on sth 对sth作出裁决 be due to do sth 预计做sth;预定做sth; priest n. 牧师;神父;教士vt. 使成为神职人员;任命…为祭司 smuggle vt. 走私;偷运vi. 走私,私运;偷带 metropolitan adj. 大都市的;大主教辖区的;宗主国的n. 大城市人;大主教;宗主国的公民 2019/10/09 stock market have closed 3% down 股票市场收盘跌落3% recession n. 衰退;不景气;后退;凹处 US goverment bonds 美国国债 inverted yield curve 反向收益曲线 harbinger n. 先驱;前兆;预告者vt. 预告;充做…的前驱 parliamentary ethics commissioner 议会伦理委员 Attorney General 司法部长 settle a criminal case 结案 alleviate vt. 减轻,缓和 impact n. 影响;效果;碰撞;冲击力vt. 挤入,压紧;撞击;对…产生影响vi. 影响;撞击;冲突;压紧(on,upon,with) presidential primary 总统预选 sustain a defeat 遭遇失败 pristine adj. 崭新的,清新的,干净的;未开发的,原始的 contaminate vt. 污染,弄脏 interior minister 内政部长 migrant n. (为工作)移居者;候鸟;流动季节工adj. 有迁徙习性的 grant the permission 授予许可 ultimatum n. 最后通牒;最后结论;基本原理 legal proceeding 司法程序 penalty n. 罚款,罚金;处罚;(penalties 点球) 2019/10/10 exploitation n. 开发,开采;利用;广告推销;剥削 cleric n. (基督教的)教牧人员;(任一宗教的)牧师adj. 牧师的,教士的 controversial adj. 有争议的;有争论的 religious adj. 宗教的;虔诚的;严谨的;修道的n. 修道士;尼姑 undercover adj. 秘密的,秘密从事的;从事间谍活动的 shrine n. 圣地;神殿;神龛;圣祠vt. 将…置于神龛内;把…奉为神圣 carry out vt. 执行,实行;贯彻;实现;完成 ceremony n. 典礼,仪式;礼节,礼仪;客套,虚礼 unrest n. 不安;动荡的局面;不安的状态 tackle v. 应付,处理(难题或局面);与某人交涉;(足球、曲棍球等)抢球;(橄榄球或美式足球)擒抱摔倒;抓获;对付,打(尤指罪犯)n. (足球等中的)抢断球;(橄榄球或美式足球)擒抱摔倒;(美式橄榄球的)阻截队员;体育器械(尤指渔具);男性性器官 grant v. (合法地)授予,允许;(勉强)承认,同意n. (政府)拨款,补助金;授予,给予;合法转让,正式授予 grave n. 墓穴,坟墓;死亡;沉音符;(废旧机器等的)堆积处adj. 重大的;严肃的;黯淡的;有沉音符的;(乐)缓慢的v. 雕刻;铭记;拷铲油漆(船底)adv. (乐)缓慢地,庄严地 mounting a campaign 发起一场运动 rival n. 竞争对手;可与……匹敌的人;同行者v. 与…竞争;比得上某人;赶上(某人);竞争adj. 竞争的 ethical adj. 伦理的;道德的;凭处方出售的n. 处方药 patriotic adj. 爱国的 quid pro quo (拉丁)补偿物;相等物;交换条件;让步条件 encrypt v. 把……加密,将……译成密码 chief executive officer 首席执行官 halt v. (使)停止,(使)立定;突然停下;完全停止;(口令)立定;阻止(新闻报道);跛行;(尤指逻辑或诗韵)有缺陷;踌躇,犹豫n. 停止;(英)小火车站;跛,瘸;(口令)立定adj. 跛的,瘸的 recipient n. 容器,接受者;容纳者adj. 容易接受的;容纳的 law enforcement agencies 执法机构 child sexual exploitation 儿童性剥削 erode vt. 腐蚀,侵蚀vi. 侵蚀;受腐蚀 2019/10/12 rocketry n. 火箭学,火箭技术;火箭(集合称);火箭研究 interstellar adj. [航][天] 星际的 interplanetary adj. 太阳系内的;行星间的 ferry n. 渡船;摆渡;渡口vt. (乘渡船)渡过;用渡船运送;空运vi. 摆渡;来往行驶 The firm’s ultra-low prices have seen it grab a dominant share of the commercial satellite-launching market. 该公司的超低价格使其在商业卫星发射市场占据了主导地位。 colony n. 殖民地;移民队;种群;动物栖息地 pair with 与…成对,与…配对 orbit n. 轨道;眼眶;势力范围;生活常规vi. 盘旋;绕轨道运行vt. 绕…轨道而行 squeak vi. 告密;吱吱叫;侥幸成功n. 吱吱声;机会vt. 以短促尖声发出

减脂学习笔记

2019.08.22

Fitness

Life

学习参考内容:《不交智商税系列》 —— 可爱小韬韬 1. 减重速度 体脂含量为25~30%的男性,周减重值建议为0.9kg。 2. 三大营养素摄入 2.1 蛋白质 2.1.1 优质蛋白质的食物来源 鸡肉、牛肉、深海鱼类、鸡蛋、蛋白粉。 2.1.2 什么时候补充蛋白质? 早上起床后; 早饭后和晚饭前加餐补充; 训练后30~60min补充; 2.2 脂肪 待补充。 2.3 碳水化合物 待补充。 3. 平台期 3.1 如何判断平台期? 连续测量三周平均体重,基本无变化。 3.2 平台期如何处理? 减少卡路里摄入(碳水减15-25g)[ Caution 1 ]; 加入有氧运动[ Caution 2 ]; 加入无氧运动; 【 Caution 】 在第一个平台期,选择上述一个措施即可,不要全部实施。如果选择有氧或无氧运动,一周一两次即可,需要为减脂留有余地。在第二个平台期可以加入另一种措施,第三个加入剩下的一种措施。 有氧运动:心率为最大心率的55%~85%,且坚持20min以上的运动。简易最大心率计算公式:220 - 年龄。 4. Refeed Days: 补碳日 4.1 什么时候才需要补碳日? 体重掉的太快; 有超过两周时间没有发生任何体重变化; 每次训练都没劲,头晕眼花低血糖。 如何称体重? 保证每天进食和结束进食的时间基本固定; 测量选取在每天的同一时刻; 每天记录一次自己的体重,一周求一次平均值; 只有周与周的平均值之间才能互相比较,每天的体重波动不具意义。 4.2 如何规划自己的补碳日? 必须满足条件:减脂已经进行到8~24周时间区间内; 听从自己身体感受; 初期每10天一个补碳日; 当减脂进行到3个月的时间,可以调整到每5~7天一个补碳日。 4.3 如何计算补碳日的三大营养素摄入值? 碳水(克g):体重(磅lbs)× (1.5~2.8)[ Notice 1 ]; 脂肪(克g):体重(磅lbs)× 0.28; 蛋白质(克g):体重(磅lbs)× 0.85; 【 Notice 1 】 碳水需要根据实际情况进行调整,方法为:检查补碳日间隔一天后,第三天的体重值。如果仍未恢复至补碳前体重,说明碳水摄入过多,则应适量降低碳水系数(1.5~2.8)。

ECMAScript6 学习笔记

2019.08.21

BLOG

JavaScript

FrontEnd

Web

学习内容:《ECMAScript 6 入门》 —— 阮一峰 Ps:仅用于个人学习笔记使用,大量内容和实例可能直接复制原文。 1. 块级作用域、let 与 const 声明变量 1.1 let 命令 只在其所在的代码块(花括号)内起作用; 可以用于声明for循环的计数器i,使得i只作用于for的代码块里,每一轮都生成新的i而不是将i泄露于全局; 不存在变量提升现象; 一旦let在块级作用域中声明,就与这个代码块绑定,外部同名变量不能在这个代码块内使用; 块级作用域在let声明前,对于同名变量是"暂时性死区",不可使用,否则报错; let不允许在相同块级作用域内,重复声明同名变量; 1.2 块级作用域 ES6引入了块级作用域,明确允许在块级作用域之中声明函数; ES6规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用; 应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。 1.3 const 命令 const声明一个只读的常量。一旦声明,常量的值就不能改变; const一旦声明变量,就必须立即初始化,不能留到以后赋值; 与let具有相同的属性; const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。当const保存的是基本类型变量,可以保证其值不被修改。但如果保存的是对象等引用类型变量,因为本质上变量只是一个指向实际对象堆内存地址的指针,只能保证const变量所指向的内存地址固定,const声明不能约束指向的对象本身是否可改变(给const声明的对象修改属性是可以的); 2. 解构赋值 2.1 数组解构赋值 let [a,b,c] = [1,2,3]; 按照先后位置给数组内变量赋予相应的值。 let [x, y = 'b'] = ['a']; // x='a', y='b' let [x, y = 'b'] = ['a', undefined]; // x='a', y='b' 可以给数组内元素设定默认值。当给变量赋予的值严格等于undefined时,默认值生效。 默认值也可以是函数,此时函数是惰性求值的,也就是说只有真的模式匹配失败变量被赋予默认值时才会执行。 2.2 对象解构赋值 let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; foo // "aaa" bar // "bbb" 对象解构赋值的依据是对象的属性名,必须属性同名的变量才能发生赋值。 如果因找不到相同属性名而不能解构,则变量会被赋予undefined。 变量名也可以与属性名不一致,此时变量名必须作为属性的值在左边对象中标明。 let { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa" let obj = { first: 'hello', last: 'world' }; let { first: f, last: l } = obj; f // 'hello' l // 'world' 对象的解构赋值也可以取到对象继承的属性。 2.3 字符串解构赋值 字符串可以像数组一样进行解构赋值,赋值规则是按先后位置。 const [a, b, c, d, e] = 'hello'; a // "h" b // "e" c // "l" d // "l" e // "o" 2.4 数值、布尔值解构赋值 数值和布尔值,解构赋值会先转为对象。只能赋值其中的toString等属性。 undefined和null无法解构赋值,会报错。 2.5 函数参数的解构赋值 function move({x = 0, y = 0} = {}) { return [x, y]; } move({x: 3, y: 8}); // [3, 8] move({x: 3}); // [3, 0] move({}); // [0, 0] move(); // [0, 0] 解释:函数的参数是一个对象{x,y},x,y都有默认值0,函数参数对象的默认值是空对象{}。当函数未传入参数时,函数参数对象默认取值{},则此时进行解构赋值,x,y都找不到同名属性用来赋值,则均取默认值0。因此输出为[0,0]。 2.6 解构赋值注意事项 尽量不要用圆括号(); 只有赋值语句的非模式部分才允许使用圆括号()。 3. 模板字符串 3.1 模板字符串说明 模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量(用${}包裹)。 let text = '我勒个去~'; `我说: ${text}`; // 我说: 我勒个去~ 模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。 ${}中表示的变量可以进行运算,也可以引用对象的属性,或者调用函数。 let x = 1; let y = 2; `${x} + ${y} = ${x + y}` // "1 + 2 = 3" `${x} + ${y * 2} = ${x + y * 2}` // "1 + 4 = 5" let obj = {x: 1, y: 2}; `${obj.x + obj.y}` // "3" function fn() { return "Hello World"; } `foo ${fn()} bar` // foo Hello World bar 模板字符串中引用未声明的变量,会报错。 模板字符串中的变量如果内部是一个字符串,则会原样输出。 3.2 标签模板字符串 所谓标签模板字符串,就是模板字符串跟在一个函数名后面。 当标签模板字符串中没有变量时,相当于普通字符串作为参数传入了函数并执行。、 let a = 5; let b = 10; tag`Hello ${ a + b } world ${ a * b }`; // 等同于 tag(['Hello ', ' world ', ''], 15, 50); 当标签模板字符串中含有变量,情况会变复杂。模板字符串中没被变量替换的部分会组合成一个字符串数组作为第一项参数传入。然后是各变量值作为独立参数依次传入。 let total = 30; let msg = passthru`The total is ${total} (${total*1.05} with tax)`; function passthru(literals) { let result = ''; let i = 0; while (i < literals.length) { result += literals[i++]; if (i < arguments.length) { result += arguments[i]; } } return result; } msg // "The total is 30 (31.5 with tax)" 解释:passthru函数只接受一个参数literals,而最后一行msg调用后传入了模板字符串`The total is ${total} (${total*1.05} with tax)`,由上一个例子,实际上是传入了["The total is ", " (", " with tax)"],30,31.5,而literals接受第一个赋值,被赋值["The total is ", " (", " with tax)"]。arguments则包含全部接收参数,为["The total is ", " (", " with tax)"],30,31.5。第七行的i++正好导致错开arguments里第一位的字符串数组,从而可以正确插入变量。 4. 字符串新增方法 4.1 String.raw() String.raw()一般用于处理模板字符串,返回模板字符串的原始值,且其中的每一个斜杠都被转义,每一个变量都被替换完毕。 String.raw`Hi\n${2+3}!`; // 返回 "Hi\\n5!" String.raw`Hi\u000A!`; // 返回 "Hi\\u000A!" 4.2 String.fromCodePoint() 和 String.codePointAt() String.fromCodePoint()接受一个Unicode 码点,返回对应的实际字符,且可识别码点大于0xFFFF的字符。 如果接受的参数大于1个,则返回由参数码点实际字符组成的字符串。 String.fromCodePoint(0x20CC5) // "𠳅" String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y' // true String.codePointAt() 接受一个位置数值,返回该字符串位置的Unicode码点。 4.3 includes(), startsWith() 和 endsWith() 接受一个字符串,返回Boolean值。 includes():检查传入字符串是否为原字符串的子字符串。 startsWith():检查原字符串是否以传入字符串开头。 endWith():检查原字符串是否以传入字符串结尾。 4.4 repeat() repeat() 函数接受一个数值N,返回一个新字符串,表示将原字符串重复N次。 如果N为小数,则向下取整。如果N为负数,则报错。 4.5 padStart() 和 padEnd() 'x'.padStart(5, 'ab') // 'ababx' 'x'.padStart(4, 'ab') // 'abax' 'x'.padEnd(5, 'ab') // 'xabab' 'x'.padEnd(4, 'ab') // 'xaba' padStart() 和 padEnd()接受两个参数,第一个为数值N,第二个为字符串string。 分别表示将原字符串调整为N位,不足的位数以string补齐。 padStart() 表示在原字符串前面补齐, padEnd()表示在原字符串后补齐。 如果只传入一个数值,则默认以空格补齐。 'x'.padStart(4) // ' x' 'x'.padEnd(4) // 'x ' 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。 'abc'.padStart(10, '0123456789') // '0123456abc' 4.6 trimStart() 和 trimEnd() 用法同trim(),区别在于仅去除字符串前面或后面的空格。 4.7 matchAll() matchAll()方法返回一个正则表达式在当前字符串的所有匹配。 5. 函数的扩展 5.1 允许为函数赋默认值 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello 函数具有一个length属性,返回函数第一个赋予了默认值的参数前,未赋予默认值参数的个数(不包括rest 参数)。 (function abc(r,t,s,x){}).length // 4 (function abc(r,t,s,x = 1){}).length // 3 (function abc(r,t,s = 1,x){}).length // 2 函数参数的默认值拥有一个单独的作用域,等到函数初始化完毕,这个作用域消失。如果作用域内存在同名变量,则优先使用参数作用域变量进行赋值。 var x = 1; function f(x, y = x) { console.log(y); } f(2) // 2 函数内部作用域内的变量不能影响参数的初始化赋值,如果参数作用域内没有用于赋值的同名变量,则会向上级作用域寻找。 let x = 1; function f(y = x) { let x = 2; console.log(y); } f() // 1 5.2 rest 参数 形如...[变量名]被称作rest 参数,表示函数多余的参数。其中[变量名]为一个数组,保存了多余的参数。 rest 参数只能是最后一个参数,否则报错。 function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, 5, 3) // 10 5.3 函数体内严格模式的使用注意事项 当函数存在解构赋值、参数默认值、扩展运算符时,不能在函数体内显式声明严格模式,否则报错。 5.4 name 属性 函数的name属性返回函数的函数名,函数表达式声明的匿名函数也能返回函数名,匿名函数返回空字符串''。 5.5 箭头函数 箭头(“=>”)可用于定义函数。 var f = v => v; // 等同于 var f = function (v) { return v; }; var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1 + num2; }; 如果返回是一个对象,则返回对象外必须用圆括号括起来。 // 报错 let getTempItem = id => { id: id, name: "Temp" }; // 不报错 let getTempItem = id => ({ id: id, name: "Temp" }); 可以结合变量的解构赋值一起使用,例如: const full = ({ first, last }) => first + ' ' + last; // 等同于 function full(person) { return person.first + ' ' + person.last; } 箭头函数内部this的指向是固定的,就指向定义时候的那个对象。 实际上箭头函数没有自己的this,它的this来源于外部this的引用。 函数内部同样没有arguments,它也为外部arguments的引用。 function Timer() { this.s1 = 0; //line1 this.s2 = 0; // 箭头函数 setInterval(() => this.s1++, 1000); // 普通函数 setInterval(function () { this.s2++; }, 1000); } var timer = new Timer(); setTimeout(() => console.log('s1: ', timer.s1), 3100); setTimeout(() => console.log('s2: ', timer.s2), 3100); // s1: 3 箭头函数内的this.s1就指向Timer实例定义时的s1(line1). // s2: 0 没有箭头函数,则this.s2在Timer实例被创建后指向外部,而不是实例内部的s2. 不应该使用箭头函数的三种场合: 定义对象的方法时; 需要动态使用this时; 函数体很复杂,有很多行时。 6. 函数尾调用的优化 尾调用的优化 7. Symbol 7.1 Symbol特性 Symbol是一种新的原始数据类型,表示一种独一无二的值。(目前JavaScript中的七种数据类型:null、undefined、Number、String、Boolean、Object、Symbol) Symbol值通过Symbol函数生成。(注意:Symbol函数前不能使用new命令,否则会报错。) let s = Symbol(); typeof s // "symbol" Symbol可用于对象属性名,可完全保证不与任何其他属性名冲突。 Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。 let s1 = Symbol('foo'); let s2 = Symbol('bar'); s1 // Symbol(foo) s2 // Symbol(bar) s1.toString() // "Symbol(foo)" s2.toString() // "Symbol(bar)" 两个独立生成的Symbol彼此是不相等的,即使是相同参数生成的Symbol值也是一样。 // 没有参数的情况 let s1 = Symbol(); let s2 = Symbol(); s1 === s2 // false // 有参数的情况 let s1 = Symbol('foo'); let s2 = Symbol('foo'); s1 === s2 // false Symbol值不能与其他类型的值进行运算,会报错。但是Symbol 值可以显式转为字符串,也可以转换为Boolean值。 let sym = Symbol('My symbol'); "your symbol is " + sym // TypeError: can't convert symbol to string `your symbol is ${sym}` // TypeError: can't convert symbol to string String(sym) // 'Symbol(My symbol)' sym.toString() // 'Symbol(My symbol)' let sym = Symbol(); Boolean(sym) // true !sym // false if (sym) { // ... } Number(sym) // TypeError sym + 2 // TypeError 读取Symbol的描述值:Symbol.description const sym = Symbol('foo'); sym.description // "foo" 7.2 作为对象属性名的Symbol 将Symbol用于对象属性名的几种方式: let mySymbol = Symbol(); // 第一种写法 let a = {}; a[mySymbol] = 'Hello!'; // 第二种写法 let a = { [mySymbol]: 'Hello!' }; // 第三种写法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' }); // 以上写法都得到同样结果 a[mySymbol] // "Hello!" 将Symbol用于对象属性名的几个注意事项: Symbol 值作为对象属性名时,不能用点运算符,因为这样会将点后面的Symbol名误认作字符串。 在对象的内部,使用 Symbol 值定义属性时,Symbol 值必须放在方括号之中。 Symbol 作为属性名,该属性不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。 7.3 Symbol.for() Symbol.for()方法接受一个字符串作为参数,然后搜索有没有以该参数作为名称的Symbol值。如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。 Symbol.for("bar") === Symbol.for("bar") // true Symbol("bar") === Symbol("bar") // false 7.4 内置的Symbol值 除了定义自己使用的 Symbol 值以外,ES6 还提供了 11 个内置的 Symbol 值,指向语言内部使用的方法。具体见:ES6提供的11个内置的Symbol值 8. Set和Map数据结构 8.1 Set数据结构 ES6 提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

JavaScript BOM

2017.02.20

BLOG

JavaScript

FrontEnd

BOM

《JavaScript 高级程序设计第八章》:BOM ————2017.2.20 Mars 北航三馆314教研室 BOM 什么是BOM? BOM(Browser Object Document)即浏览器对象模型。 BOM提供了独立于内容 而与浏览器窗口进行交互的对象; 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window; BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性; BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。 1.窗口关系和框架 window:当前框架的Global对象 top:最高层框架的Global对象 parent:当前框架的直接上层框架 1.窗口位置 screenLeft、screenRight、screenX、screenY 2.窗口大小 innerWidth、outerWidth、innerHeight、OuterHeight、document.documentElement.clientWidth、document.documentElement.clientHeight、document.body.clientWidth、document.body.clientHeight 3.导航和打开窗口 window.open("url","_target"); 返回新打开标签页的指针。可以这样跟踪新标签页: var newTag = window.open("www.marswiz.com","_blank"); 关闭新标签页: newTag.close(); 默认由一个页面打开的另一个页面,新页面保存着opener属性以建立联系,彼此通信。 设置newTag.opener = null切断联系,让新页面独立运行。 4.间歇调用和超时调用 重点  超时调用:setTimeOut() 接受两个参数:第一个是包含要执行的JavaScript的字符串或者一个函数。第二个是要等待多长时间的毫秒数。 //不推荐 setTimeout("alert('Hello world!') ", 1000); //推荐 setTimeout(function() { alert("Hello world!"); }, 1000); 为啥时间到了也不一定执行? JavaScript是一个单线程的解释器,为控制要执行的代码,就有一个JavaScript任务队列,这些任务会按照他们添加到队列的顺序执行。setTimeOut()第二个参数告诉JavaScript再过多长时间把当前任务添加到队列。如果队列是空的,添加的代码会立即执行。如果队列不是空的,要等前面的代码都执行完毕才会执行。 间歇调用:setInterval() 用法与setTimeOut()相同,到时间间隔重复执行代码。 5.系统对话框 alert():显示一个提示框,只有一个OK按钮。 confirm():用于确认,有Ok和cancel两个按钮。会返回boolean值,ok-ture,cancel-false。 prompt():向用户提出一个问题并让用户输入结果,最后返回值。 6.location 对象 重点  location对象既是window对象的属性,也是document对象的属性。 保存着当前文档的信息,还将URL解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。 每次修改location对象属性,页面会以新的URL重新加载。 location方法:replace(),传入一个url并且直接转到,且无法后退。 reload():以最有效的方式重新加载当前页面,如果传入参数true,则强制重新加载。 7.navigator对象 识别客户端浏览器的标准。常用来检测浏览器类型。 常用功能: 7.1 检测插件 利用navigator.plugins数组,每一项都包含name description filename length四个属性。 //plugin detection - doesn't work in IE function hasPlugin(name){ name = name.toLowerCase(); for (var i=0; i < navigator.mimeTypes.length; i++){ if (navigator.mimeTypes[i].name.toLowerCase().indexOf(name) > -1){ return true; } } return false; } //detect flash alert(hasPlugin("Flash")); //detect quicktime alert(hasPlugin("QuickTime")); //detect Java alert(hasPlugin("Java")); 8.screen 对象 保存浏览器窗口外部显示器的信息。 9.history 对象 保存着用户的上网记录,从window被打开的一刻算起。 常用方法: history.go()按历史记录跳转。接受一个数值,正数表示向前,负数表示向后。 history.back()向后 history.forward()向前

JavaScript 变量、作用域、和内存问题学习笔记

2017.02.08

BLOG

JavaScript

FrontEnd

《JavaScript 高级程序设计第四章》:变量值的基本类型和引用类型、类型检测、执行环境、作用域链、垃圾收集。 这应该是JavaScript最重要的部分,理解这些概念真的很重要。 ————2017.2.8 Mars 北航三馆314教研室 1. 变量 1.1 JavaScript 的松散变量类型 JavaScript的变量是松散类型的:变量名称只是用于在特定时间内保存特定值的一个名字,并非定义某一类型变量必须存放该类型的数据。因此同一变量名的变量值和类型都可以在生存周期内被改变。 1.2 变量值的基本类型与引用类型 基本类型值:简单的数据段。(undefined\null\boolean\number\string),按值访问,操作的是保存在变量中的实际的值。 引用类型值:保存在内存中的对象。JavaScript 不支持直接访问内存空间,操作对象访问的都是对象的引用。 什么是引用?引用可以理解为对象的另一个复制品,并且与对象捆绑,同时更改或变化。(就是对象的分身) 1.3 变量值的复制 1.3.1 基本类型值的复制 var mars1=5; var mars2=mars1; 创建mars2之后,内存为其分配了新空间,并把mars1的值5和类型number复制到新空间中,从此mars1和mars2这两个变量互不干扰。 1.3.2 引用类型值的复制 var mars1 = new Object(); var mars2 = mars1; // 复制mars1对象 mars1.name = "mars1"; alert(mars2.name); //mars1 mars2复制了mars1之后,实际上只是指向mars1所指向对象的一个指针被复制到mars2的新内存空间中,并不是mars1指向对象的实际值。 所以复制之后,mars1与mars2共同指向同一个堆内存中的对象,所以name属性被同时修改了。 1.4 变量值向函数参数的传递 ECMAScript 所有函数的参数都是按值传递的。 1.4.1 基本类型值的传递 基本类型值在传递过程和基本类型值复制过程一样。函数内部对参数的操作不影响函数外部变量本体。 1.4.2 引用类型值的传递 引用类型值在传递给函数参数的时候是按值传递的,这个值是原对象的内存地址,因此函数参数在函数中的操作可以直接影响到外部的变量本体。 function mars1(obj){ obj.name = "mars"; } var mars2 = new Object(); mars1(mars2); alert(mars2.name); // mars obj是函数mars1的参数(局部变量),mars2的内存地址作为值传给obj在mars1中运算,增添了name属性,实际上就是增添了堆内存中mars2所代表对象的name属性。 function mars1(obj){ obj.name = "mars"; obj = new Object(); obj.name = "whatthehell"; } var mars2 = new Object(); mars1(mars2); alert(mars2.name); //mars 上述例子表明,这种传递并不是按引用传递。 如果是按引用传递,那么mars2的指向对象会随着obj(mars2指针)的重新赋值而随之指向新的对象,实际上并不会。 1.5 类型检测 1.5.1 typeof() 操作符 typeof() 操作符可以用来检测基本类型值。 typeof()操作符是确定变量是string、number、boolean、undefined的最佳方法。用typeof()来检测null和object都会返回Object。 1.5.2 instanceof 操作符 用于检测引用类型值,instanceof 根据原型链来识别。 alert(person instanceof Object); // true alert(colors instanceof Array); // true alert(pattern instanceof RegExp); // true 所有引用类型的值都是Object 的实例。 2. 执行环境与作用域 2.1 执行环境 执行环境 定义了变量或函数有权访问的其他数据,决定了它们各自的行为。 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。 全局环境是最外层的执行环境。Web浏览器中是Windows对象,全局环境中的变量只有在应用程序退出(关闭浏览器或者网页)才会销毁。 每执行一个函数,函数的执行环境就会被推入一个环境栈中,函数执行完毕,栈将其环境弹出,把控制权交给之前的执行环境。 2.2 作用域链 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问。 作用域链的前端是当前执行的代码所在环境的变量对象,最后端是全局环境的变量对象。 2.3 标识符解析 沿着作用域链一级一级搜索标识符的过程,从前端开始,一直到找到标识符为止。 2.4 if 和 for 语句中定义变量的注意事项 var x=true; if(x){ var y="mars"; } alert(y); //mars 这里if语句内定义的变量y被保存在当前的执行环境(全局)中,所以在{}外面也可以访问。 for(var i=0;i<10;i++){ ... } alert(i); 这里i在for循环内定义,结束后并不会释放,因为在全局环境中。 3. 垃圾收集与内存管理 垃圾收集的两种方式:标记清除和引用计数。 所有浏览器都是用标记清除式的垃圾收集策略。 内存管理:对所有的全局变量,在不再有用的时候应该设置为null以便使其脱离工作环境让垃圾回收器回收

Mars Windows系统优化流程

2017.01.14

BLOG

PC

1. 优化视觉效果→关闭”视觉效果”中不需要的效果 右键单击”我的电脑”→点击”属性”→点击”高级”→在”性能”一栏中→点击” 设置”→点击”视觉效果”→在这里把所有特殊的外观设置都关闭掉。 2. 优化启动和故障恢复 右键单击”我的电脑”→“属性”→“高级”→“启动和故障修复”中点击”设置”→ 去掉”将事件写入系统日志”→“发送管理警报”→“自动重新启动”选项 将”写入 调试信息”设置为”无”,显示操作系统时间改为0S。 3. 禁用错误报告 单击”我的电脑”→“属性”→“高级”→“错误报告”→点选”禁用错误汇报”,勾选”但在发生严重错误时通知我”→确定。 4. 关闭系统还原 右键单击”我的电脑”→点击”属性”→会弹出来系统属性对话框→点击”系统 还原”→在”在所有驱动器上关闭系统还原”选项上打勾。 5. 关闭自动更新 右键单击”我的电脑”→“属性”→“自动更新”→在”通知设置”一栏选择”关闭 自动更新。选出”我将手动更新计算机”一项。 6. 关闭远程桌面 右键单击”我的电脑”→“属性”→“远程”→把”远程桌面”里的”允许用户远程 连接到这台计算机”勾去掉。 7. 禁用休眠功能 单击”开始”→“控制面板”→“电源管理”→“休眠”→将”启用休眠”前的勾去 掉。 8. 关闭”Internet时间同步”功能 依次单击”开始”→“控制面板”→“日期、时间、语言和区域选项”→然后单 击”Internet时间”→取消”自动与Internet时间服务同步”前的勾。 9. 设置虚拟内存 虚拟内存最小值物理内存1. 5-2倍→最大值为物理内存的2-3倍的固定值→ 并转移到系统盘以外的其他分区。虚拟内存设置方法是右击我的电脑-属性→ 高级→性能设置→高级→虚拟内存更改→在驱动器列表中选中系统盘符→自定义大小→在”初始大小”和”最大值”中设定数值→然后单击”设置”按钮→最后点击”确定”按钮退出。 10. 自动释放系统资源 在Windows中每运行一个程序→系统资源就会减少。有的程序会消耗大量 的系统资源→即使把程序关闭→在内存中还是有一些没用的DLL文件在运行→ 这样就使得系统的运行速度下降。不过我们可以通过修改注册表键值的方法→ 使关闭软件后自动清除内存中没用的DLL文件及时收回消耗的系统资源。打开 注册表编辑器→找到”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explore r”主键→在右边窗口单击右键→新建一个名为”AlwaysUnloadDll”的”字符串值”→ 然后将”AlwaysUnloadDll”的键值修改为”1”→退出注册表重新启动机器即可达 到目的。 11. 关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态 用不到家庭组可以直接把家庭组服务也给关闭了:控制面板 – 管理工具 – 服务 – HomeGroup Listener 和 HomeGroup Provider 禁用。 12. 关闭Windows Defender 全盘扫描系统 然后可以排除信任的EXE程序,建议排除explorer.exe(资源管理器进程),如果你不用系统自带的杀毒软件,也可以直接关闭它。 Win+X – 控制面板 – Windows Defender – 设置 – 实施保护 -去掉勾 和 管理员 – 启用 Windows Defender – 去掉勾。 控制面板 – 管理工具 – 服务 - Windows Defender Service 禁用。 13. 用好索引选项,减少硬盘压力 控制面板 – 索引选项 – 选中索引项 – 修改 – 取消不想索引的位置。(索引服务对系统性能的影响)。 14. 关闭磁盘碎片整理计划 用好磁盘碎片整理可以提高磁盘性能,如果习惯手动整理,可以关闭整理计划,避免在你工作的时候自动整理,影响性能。 资源管理器,选中磁盘 - 属性 – 工具 – 对驱动器进行优化和碎片整理 – 优化 – 更改设置 – 取消选择按计划运行 菜鸟必看的10个Win10优化技巧 15. 设置好Superfetch服务 控制面板 – 管理工具 – 服务 – Superfetch - 启动类型 – 自动(延迟启动),可以避免刚启动好Win10对硬盘的频繁访问。 16. 如果覆盖或者升级安装Win10,需要清理产生的Windows.old文件夹,腾出C盘空间 C盘 – 右键 – 属性 - 磁盘清理 - 选中 以前的 Windows 安装 复选框 – 确定清理。 17. 设置Win10 自动登陆,省去输入密码步骤,开机更快 快捷键Win+R – 输入 netplwiz  - 取消使用计算机必须输入用户名和密码的选项 – 然后双击需要自动登录的账户 – 输入你的密码。 18. 开启Hybrid Boot win10启动飞快 。默认是启动的,如果没有启动,可以到控制面板 – 电源选项 – 选择电源按钮的功能 – 更改当前不可用的设置 – 关机设置 – 勾上启用快速启动。

DNF PK 系统有什么特点?

2016.12.30

BLOG

DNF

Game

Zhihu

相关:DNF8年老玩家,曾获2011南京高校联赛冠军,四川四区 擅长职业:战斗法师 ID:⑨⑨归① 2016年F1天王赛刚刚结束,恭喜59 4:0 拿下OGC捍卫中国主场,同时也证明了在网络环境逐渐变好的情况下,中国DNF选手基本功扎实的优势愈发体现出来。作为8年老玩家(7年PK) ,对DNFPK系统有一定的理解,在此盘点一下DNFPKC的特点。PS:因为比赛服没有装备差异,相对更为公平,所以说的以比赛服为主。 一代版本一代神,版本与BUG共存 DNF老玩家应该都还记得最早的剑魂无限里鬼,战法碎霸一半血、伪连一套秒版本(怀念!),到后来的机械G3崛起,冰结破冰秒人的BUG,DNF的发展过程中,版本与 BUG绝对是一个重要的组成部分。不过这里的BUG不是游戏代码的错误,而一般指的是某版本,人为对某个技能过度的加强影响了职业间强弱公平性。技能BUG也影响了一 部分职业强弱的排名变化,比如冰结师的破冰飞刃高伤BUG,让当时的冰结师在国服几乎无人能敌,被大家屏蔽。第三赛季前的女气功在PK场一直很弱势,而第三赛季初为加强 女气功PK能力设置的手动引爆分身技能,使女气功一跃成为当时PK场霸主的存在(后来因为太BT而和谐)。 也因为这个原因,为了维护公平性,在BUG不能修复之前,这些不幸的职业在该版本一般会被禁止参加比赛。国服第一冰结师安心在破冰技能BUG版本期间两 次无缘格斗大赛,最终导致他放弃冰结而转玩魔皇。 现在的知名PK职业选手,早期刚出道的时候都或多或少地借了版本的东风。凤凰羽成名于机械G3高伤版本他创造的G3打法,逍遥尊的格斗天王大半 要感谢当时的高网络延迟,二海当年在高伤时代线上赛伪连一套秒等等。不过好在第三赛季以来(尤其是Neople回归之后),降低了各职业伤害(尤其是比赛服), 游戏公平性大大增强,网络改善,游戏流畅度提高,版本BUG也越来越少了。 比赛服与国服、线上与线下的巨大差异 游戏高昂的代理费用和运营成本导致网络代理商必然要从玩家身上吸取利润,国服刺激玩家消费的主要途径就是各种节日装扮和收费道具附带的增强属性,这些收费道具部分在PK场也同样有效, 是造成国服与比赛服差别的原因。与比赛服相比,国服提升属性的途径主要是:宠物装备、强化增幅锻造、宠物属性、武器装扮和称号。 顶级的PK装备带来的速度和伤害上的提升巨大,是装备一般的平民玩家不能抗衡的,因此国服想要玩到高分段装备绝对是决定因素之一。 角色属性对于连招、战术和跑位方面同样有影响。例如:力法的天击和落花掌滑行距离和发动速度受到人物攻击速度的影响, 攻速越快,天击的滑行距离越长,相应扫过的范围也就越大,因此也就更容易命中对方和逃跑。 格斗系的4X扫地接技能如果没有一定的攻速做支持是不能成立的(当然手速也很重要)。释放速度直接影响发动速度和收招速度,硬直影响人物被命中后僵直时间(黄金套玩家基本不能平推),因为保护系统的存在,高属性的角色伤害更高,因此保护出的更快,相应的连招过程更短,连招方式倾向于高爆发打法,是平民玩家做不到的。 而比赛服装备统一,伤害回归到较低的水平,比拼的是选手的战术策略、对职业的理解和临场心态与稳定程度。很多网络主播在国服风生水起,战斗力排名也非常高,而一到了比赛服就 成绩平平,甚至打不进区域赛,就是因为在国服打的太久适应了高属性的角色玩法,跑位意识以及连招方式已经不适用于比赛服环境。同样这种差异也影响职业的对战策略,很多职业在国服高属性条件下具有强大的优势,而比赛服就相对弱很多,比如现版本元素、机械、大枪等。在这方面,最典型职业的莫过于召唤师和红眼。国服高伤版本召唤基本都会选择加满献祭以提供高爆发的献祭流打法,红眼则一般会选择放弃一些基础技能(如邪光斩),加满崩山裂地斩等高爆发技能一套打残对手。这样的打法在比赛服是不合适的,因为在面对像散打蓝拳力法这样的高机动性职业时会有较大的弱势,CD长收招慢(献祭会导致召唤本体暴露),一旦打空是很大的损失。还有比赛服的速度条件下,如果鬼剑士利用扫地波最大范围将对手扫倒地,立刻跑过去接上挑是很难成立的,而这种起手方式在国服基本占主流。因此比赛选手一般会均衡加点,利用各种技能的优势,增强综合能力而不是依赖高伤技能打爆发。 还有一个不得不提的重要因素就是国服连发插件的普遍存在。按键连发导致普通攻击连招稳定性大大增加,很多玩家(尤其是红眼玩家)在国服PKC依赖普通攻击输出,对技能衔接节奏已经生疏。在比赛服, 这样的输出方式显然是不可取的。一是正规比赛连发的禁止导致普通攻击浮空连、扫地连都会出现一定程度的不稳定性;二是在比赛服装备环境下普通攻击的伤害太低,输出太慢,过度依赖普攻输出会导致命中保护出现的时候还没有打 出伤害保护,导致后面爆发技能不能命中,输出太慢,伤害不足。这也是很多打惯了国服环境玩家在比赛服不能适应的原因。 网络环境与硬件条件要求高 DNFPVP的网络格斗游戏属性决定了对网络延迟和硬盘读取速度的高要求。毫不夸张地说,一个100ms以上延迟和一个50ms以下延迟的DNF完全是两个游戏。 早期机械硬盘时代的DNF和SSD时代的DNF在游戏体验上完全不同(同时装有SSD和机械硬盘的同学可以亲自尝试一下)。 不同网络延迟和硬盘读取速度甚至 可以直接影响PK的连击效果,乃至意外成为很多玩家追求的操作技巧。 最典型的莫过于力法的伪连技术:在人物角色倒地即将起身的一刹那,DNF系统设定 默认存在一个时间极短的蹲伏动作,然后才是真正的站立姿态。伪连成功秘诀就在于:利用力法炫纹的释放节奏,在这个起身蹲伏的瞬间击中对手,造成 对方已经起身被攻击的判定,从而清零保护系统,可以继续打出下一套伤害。 伪连的难易程度取决于延迟高低。延迟非常低的时候(30以下),伪连非常难,需要极好的节奏感。延迟过高(大于150)的时候,伪连相对容易,但是破保护后的 连接容易出现问题。在有一定的Ping值但是又不至于使连招不成立的条件下,力法伪连的优势才能体现出来。可以看到早期月与海的比赛大量应用伪连破保护 连招打出极高伤害,而近期比赛由于网络环境的改善,伪连成功率下降,力法基本不会冒险选择伪连的激进打法。 很多玩家会发现国服在不同位置网吧、不同配置机器上连击节奏有一定差别,就是网络延迟与硬件延迟造成的。所以国服DNF想要玩得流畅不 吃延迟的亏,还需要一个配备高速SSD的硬盘和提高自己的上传速度才行。另外,这一差异体现基本只限于国服,由于比赛使用相同的机器以及 线下基本归零的延迟,网络环境和硬件的差别在比赛中基本可以忽略不计。 职业差异显著,存在相生相克,天花板高可开发性强 DNF的游戏角色设计非常出色。首先是各职业之间(这里不包括现在仍不能参赛的职业),无论是在操作难度、节奏速度、人物属性上还是从攻击方式、 类型、与范围上都差异显著,各具特色,这使得不同类型玩家的需求都可以得到满足。(这里不得不吐槽一下nexon接盘的那段时间出的几个职业,不 知道是不懂DNF还是纯粹的鹅厂为了更快的圈钱透支,真的不要太恶心。) 同时职业设计上可以看出早期的开发者的用心,在职业技能设计上存在明显的相生相克关系,这在某种程度上维持了一种游戏平衡,也让PVP更具有趣味性和挑战性。格斗 系的武神职业具有超高的爆发力和短时间的霸体buff,对于男女大枪这种近身防御技能少、 收招速度慢依赖远程输出的职业简直是噩梦,然而面对同门柔道的强力抓取技,武神的霸体就基本成为废柴。被武神克制的大枪在面对召唤、机械、驱魔师等职业的时候 ,利用其技能的穿透力和良好的远程输出能力,反而具有相当大的优势。这样的相生相克在DNF中比比皆是,职业特性和技能间的克制让DNF比赛偶然性增加(所谓抽签决定 成败),同时也意味着如果想取得好成绩,则必须在打法上攻克对自己克制的职业,更具挑战性。 虽然职业强弱随着版本起伏,也存在相生相克,但和所有竞技游戏一样,最终决定比赛成败的永远不是角色职业,是选手本身。今年的F1天王赛, 剑魂OGC刚刚结束自己的兵役期,回归比赛面对克制自己的近身物理克星、强势金身玩家凡神金度勋,依然以3:0横扫对手,足以证明OGC的强大实力。 高水平的操作可以让一个不被看好的三线职业变成超一流。近几年的比赛也可以看出,比赛结果越来越出人意料,高水平比赛上职业差距的影响越来越小——强的不是职业,而是选手本身。 竞技元素丰富,节奏快,充满偶然性与戏剧性 DNF比赛有丰富的竞技元素。首先是游戏本身的元素设计,角色姿态有站立、浮空、倒地三种,角色状态有霸体、抓取、无敌、僵直、折颈等,异常态有中毒、冰冻、灼烧、束缚 、睡眠、诅咒、失明等。每个技能释放和命中的过程都是这些元素的组合,这导致每个职业的每个状态与技能,都具有相应的应对方式,即没有绝对无解的绝对克制技能。 DNF比赛个人赛每场总时长最多3分钟,基本比赛会在两分三十秒之内结束,而这短短的150S时间内,两方会起手3-5次,也就是每回合交手,从跑位到起手至连击结束, 平均仅有三十秒左右时间。在这短短三十秒不仅需要跑位,同时要随时对对手施放技能时机与附带的效果进行准确的判断,估计连击保护与对手的HP值位置,并及时调整自己的应对策略,因此非常考验选手的反应速度 。这种快节奏也是所有格斗游戏的通用特点,DNF相比于传统的格斗游戏在技能操作上稍稍简单,但技能数目更多,竞技元素更多 ,比赛具有偶然性和戏剧性,充满各种亮眼的操作,可看性强。 总之,DNF作为独树一帜的格斗类游戏,在PVP系统制作方面还是比较优秀的。每年的赛事也给喜欢PK的玩家带来了无数印象深刻的精彩瞬间,希望有更多的选手参 与比赛,体验惊险刺激的PK乐趣。同时希望中国能保持这次F1天王赛的好成绩。

人际交往的几项基本原则与技巧

2016.11.22

BLOG

Growth

Science

1. 价值交换原则 人与人之间最稳固的是价值交换关系,互相能交换彼此的想要的价值,才能长久保持稳定的关系。这里的价值包括精神价值和物质价值。所以在你进行人际交往的时候最好心里打一个小算盘,我能从他这里得到些什么,我能给他什么,如果两者相差太大那么就要当心了,这段关系可能不会很稳定。 2. 双方相关原则 谈话交流和活动的内容需要是双方都相关的,不能涉及到别人的私人生活或者围绕着自己的私事交谈。 3. 变好原则 / 解决问题原则 双方遇到了问题,或者对方向你倾诉问题,要知道对于这种情况怎样会变得更好,然后交流向着变好/能解决问题的方向进行,不要进行无助于解决问题的交流。 4. 不甩包袱原则 当自己有事情需要求助于对方,而又暂时没有对方的需求可以交换。做到在自己这一边尽量多的解决部分问题,至少把前期资料准备充分,而不要把问题直接甩给对方。 5. 最高默认原则 谈及一个新领域,不知道对方在这一领域建树如何的时候,默认对方具有最高级别的认知,直到对方告知自己的实际水平再进行调节,这样不会因为低估别人而显得不礼貌。 6. 不挖苦原则 / 自黑别描原则 对方有痛楚,有不快,有坎坷被你知道或者向你倾诉,在关系不是无话不谈非常熟悉的情况下,最好不要把对方的痛处做谈资,或开对方的玩笑。同样,在对方对自己的缺点痛点进行自嘲的时候,千万不要随声附和同意他,这一描可能会让对方信以为真。 7. 留有选择原则 邀请对方做事情,或者让对方做出决策的时候,不要替对方做出选择,也不要把话说死,定好了本来应该双方商量决策的事情。该让对方选择的时候一定要给对方留有选择的余地。 8. 见微知著原则 人们通常不喜欢把观点说的太过绝对,但是并非没有看法。当对方在赞赏的同时稍稍表现出一点点反对时,其实他的内心是完全反对你的观点的。所以察觉这种微小的信号可以让你更容易掌握对方的立场。 9. 自嘲技巧 自嘲可以引起对方暂时的优越感,让你降低姿态博取对方一定的信任,也让对方对你产生临时的好感,因此在交往初期适时的自嘲很有利于人际关系的发展。 10. 观点后言原则 一般情况下,与人交流时不能确定真伪的主观观点要放在对方发表观点之后说,尤其是向别人讨教问题,或者对方在该话题有一定话语权的情况下。主观性很强的观点一般而言具有一定的锋利性,放在后面说就体现出是一种试探性、探究性语态,而不是让对方以为你对此坚信不疑,也是尊重对方的一种非暴力沟通方式。

木有找到Der~~