Let spirit guide you

thinking in life.

常用链接

统计

API

Forum

Site

WiKi

最新评论

it seems simple

生活当中我们经常会遇到这样一些英语句子,这些句子看似简单,但能够像母语人士那样用得恰到好处的人还真是不多,很多人都容易望文生义,曲解这些句子的含义。

我们一起来看一下吧!

1. That'll be the day。

  那绝不可能/哪有这样的事!

  这句话表示的意思类似于“That's impossible!”或者“It can't be true!”,说话人在说这句话时表达的是一种强烈的否定。

2. How about that!

      那可太好了,太棒了!/真是令人难以置信!

  很多人理解这句话的意思就是“what do you think of it?(你觉得怎么样?)”。其实,“how about it”的意思才是“你觉得怎么样”。当你听到一些令人难以置信或难以理解的事时你就可以说“Wow, how about that”,翻译过来就是“竟然会有这种事!”或“真是令人难以置信!”。当然,这句话也可以在肯定对方的建议或事情时使用,表示“那可太好了,太棒了”。

3. What a day!

  多....。.的一天啊!

  这句话在不同的情境下含义不同。比如你在单位折腾了一天,累得要死,回家把自己往床上一扔,然后意味深长的说what a day! 意思就是“这一天把我累的!”。再有,如果你早上摔了一跤,中午吃饭时又丢了钱包。总之,倒霉的事都赶到一天了,你也可以用这句话来表示“What a day! Just my luck!”(今天真倒霉!就这命了!)还有,如果你向女朋友求婚成功,晚上回家前又捡了一个iPhone4,你也可以说“What a day!”(今天真是太走运了!)。这句话还可以改成what a night!/What a weekend!/What a man!等等。

4. What's your story, morning glory?

      瞧你高兴的,有什么好事啊?

  先说一下,morning glory就是“牵牛花”。如果你看一个熟人从远处走来,一脸的笑容,你就可以说这句话,翻译过来就是“这是有什么好事啊,看你高兴的!”说话的感觉是轻松幽默的。

5. If I tell you, I'd have to kill you。

  就不告诉你。

  这句话通常是在一种轻松的环境下,你不愿意回答对方问题而说的话,字面意思很容易懂,翻译成汉语的感觉就是“嘿嘿,我就不告诉你!”

6. I need it like a hole in my head。

  我根本就不需要这个。

  这句话表面上没有否定词,表达得确是实强烈的否定含义。

7. He is a real go-better。

  他的确是个能成事的人。

  这句话里go-better是个关键词,表示越来越好。英语里表达“成功”就是get there,所以口语里说“now we are getting somewhere”表达的意思就是“看来我们的谈话(努力,尝试等等)有了进展。”鼓励别人时也可以说You are going places。(你会成功的。)

8. That's all there's to it。

  事情大概就是这样。

  它表达的就是“事情大概就是这样”。其实类似这样的句子很多,单词都是小学生都认识,可是真正能恰到好处的用出来的人却寥寥无几。比如:I don’t know what came over me。(我不知道自己哪根筋不对。)等等。

9. She doesn't like this a little。

  这句话应该翻译成“她可不仅是喜欢而已”。英语中有很多有否定词但含义却截然不同的表达。比如I'm not a little cold。(我很冷)、It is a good father that knows his son。(再好的父亲也未必了解自己的孩子)、No wisdom like silence。(智者寡言)、That's the last thing I want to do。(我最不愿意做那件事)等等。

10. Nice guys finish last。

  好人不得志啊!

  你有没有发现,生活中总是有一群人,人品差不说,长相也属于“龙飞凤舞”型。可是人家的女朋友就是比你的漂亮;还有就是平时花钱大手大脚,可是一买彩票就中大奖,这种“狗屎运”的人比比皆是。而自己呢,努力了,拼搏了,奋斗了,结果总是不如人意。这种情况就可以用这句“nice guys finish last”来形容了,这句话中有点“好人不得志”或“好人难做”的味道。



posted on 2011-03-19 15:08 cary 阅读(351) 评论(9)  编辑  收藏 所属分类: english

评论

# re: it seems simple 2012-01-10 09:54 nick1462572426

ok  回复  更多评论   

# re: it seems simple 2012-01-10 16:18 dynamic

动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法,在解决实际问题中经常被使用。
然而它本身或许不是很好理解,这里做一下本人对它的理解。
动态规划三要素:阶段,状态,决策
1、阶段是对整个过程的自然划分
2、状态表示每个阶段开始时过程所处的自然状况
3、当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策
找出此类问题的关键:
1、能够用动态规划来求解(这是基本前提)
利用最优性原理来进行判断(这里不做解释)
2、获得状态转移方程(这是重点)
可以看做动态规划求解实际问题的时候,就是来获得当某阶段的状态和决策为已知,下阶段的状态可以通过该阶段来表示出来,而且它们之间满足一个状态转移方程:X[k+1]=T[k](X[k],U[k](X[k]))
3、根据题目要求对决策过程中产生的中间状态进行选取(如0/1背包问题中要求不超过重量上限的情况下获得最大效益,这里面获得大效益便是一个限制条件,可以用来在中间决策中产生的状态中进行选择

这里总结一下一般思路:
拿到多阶段决策最优化问题后,第一步要判断这个问题是否可以用动态规划解决,如果不能就要考虑搜索或贪心了。当确定问题可以用动态规划后,就要用下面介绍的方法解决问题了:
(1)模型匹配法:
最先考虑的就是这个方法了。挖掘问题的本质,如果发现问题是自己熟悉的某个基本的模型,就直接套用,但要小心其中的一些小的变动,现在考题办都是基本模型的变形套用时要小心条件,三思而后行。这些基本模型在先面的分类中将一一介绍。
(2)三要素法
仔细分析问题尝试着确定动态规划的三要素,不同问题的却定方向不同:
先确定阶段的问题:数塔问题,和走路问题
先确定状态的问题:大多数都是先确定状态的。
先确定决策的问题:背包问题
(3)寻找规律、拼凑法:
这个方法很简单,耐心推几组数据后,看他们的规律,总结规律间的共性,这里一般可以比较容易的得到状态转移方程,也就是确定下一阶段与前一阶段之间的联系
(4)边界条件法
找到问题的边界条件,然后考虑边界条件与它的领接状态之间的关系。这个方法也很起效。
(5)放宽约束和增加约束
这个思想是在陈启锋的论文里看到的,具体内容就是给问题增加一些条件或删除一些条件使问题变的清晰  回复  更多评论   

# re: it seems simple 2012-01-10 18:32 dynamic

原文地址http://www.bianceng.cn/Programming/Java/201102/24426_3.htm


JAVA高级:多核线程-volatile原理与技巧
时间:2011-02-14

为什么使用volatile比同步代价更低?

同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.

而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.

volatile原理是什么?

volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)

因此, 当多核或多线程在访问该变量时, 都将直接操作主存, 这从本质上, 做到了变量共享.

volatile的有什么优势?

1, 更大的程序吞吐量

2, 更少的代码实现多线程

3, 程序的伸缩性较好

4, 比较好理解, 无需太高的学习成本

volatile有什么劣势?

1, 容易出问题

2, 比较难设计

volatile运算存在脏数据问题

volatile仅仅能保证变量可见性, 无法保证原子性.

volatile的race condition示例:

public class TestRaceCondition {
private volatile int i = 0;
public void increase() {
i++;
}
public int getValue() {
return i;
}
}

当多线程执行increase方法时, 是否能保证它的值会是线性递增的呢?

答案是否定的.

原因:

这里的increase方法, 执行的操作是i++, 即 i = i + 1;

针对i = i + 1, 在多线程中的运算, 本身需要改变i的值.

如果, 在i已从内存中取到最新值, 但未与1进行运算, 此时其他线程已数次将运算结果赋值给i.

则当前线程结束时, 之前的数次运算结果都将被覆盖.

即, 执行100次increase, 可能结果是 < 100.

一般来说, 这种情况需要较高的压力与并发情况下, 才会出现



JAVA高级:多核线程-volatile原理与技巧(2)
时间:2011-02-14

如何避免这种情况?

解决以上问题的方法:

一种是 操作时, 加上同步.

这种方法, 无疑将大大降低程序性能, 且违背了volatile的初衷.

第二种方式是, 使用硬件原语(CAS), 实现非阻塞算法

从CPU原语上, 支持变量级别的低开销同步.

CPU原语-比较并交换(CompareAndSet),实现非阻塞算法

什么是CAS?

cas是现代CPU提供给并发程序使用的原语操作. 不同的CPU有不同的使用规范.

在 Intel 处理器中,比较并交换通过指令的 cmpxchg 系列实现。

PowerPC 处理器有一对名为“加载并保留”和“条件存储”的指令,它们实现相同的目地;

MIPS 与 PowerPC 处理器相似,除了第一个指令称为“加载链接”。

CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)

什么是非阻塞算法?

一个线程的失败或挂起不应该影响其他线程的失败或挂起.这类算法称之为非阻塞(nonblocking)算法

对比阻塞算法:

如果有一类并发操作, 其中一个线程优先得到对象监视器的锁, 当其他线程到达同步边界时, 就会被阻塞.

直到前一个线程释放掉锁后, 才可以继续竞争对象锁.(当然,这里的竞争也可是公平的, 按先来后到的次序)

CAS 原理:

我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现

在的值即可。

CAS使用示例(jdk 1.5 并发包 AtomicInteger类分析

/**
* Atomically sets to the given value and returns the old value.
*
* @param newValue the new value
* @return the previous value
*/ public final int getAndSet(int newValue) {
for (;;) {
int current = get();
if (compareAndSet(current, newValue))
return current;
}
}
public final boolean compareAndSet(int expect, int update) {
return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}

JAVA高级:多核线程-volatile原理与技巧(3)
时间:2011-02-14

这个方法是, AtomicInteger类的常用方法, 作用是, 将变量设置为指定值, 并返回设置前的值.

它利用了cpu原语compareAndSet来保障值的唯一性.

另, AtomicInteger类中, 其他的实用方法, 也是基于同样的实现方式.

比如 getAndIncrement, getAndDecrement, getAndAdd等等.

CAS语义上存在的"ABA 问题"

什么是ABA问题?

假设, 第一次读取V地址的A值, 然后通过CAS来判断V地址的值是否仍旧为A, 如果是, 就将B的值写入V地址,覆盖A值.

但是, 语义上, 有一个漏洞, 当第一次读取V的A值, 此时, 内存V的值变为B值, 然后在未执行CAS前, 又变回了A值.

此时, CAS再执行时, 会判断其正确的, 并进行赋值.

这种判断值的方式来断定内存是否被修改过, 针对某些问题, 是不适用的.

为了解决这种问题, jdk 1.5并发包提供了AtomicStampedReference(有标记的原子引用)类, 通过控制变量值的版本来

保证CAS正确性.

其实, 大部分通过值的变化来CAS, 已经够用了.

jdk1.5原子包介绍(基于volatile)

包的特色:

1, 普通原子数值类型AtomicInteger, AtomicLong提供一些原子操作的加减运算.

2, 使用了解决脏数据问题的经典模式-"比对后设定", 即 查看主存中数据是否与预期提供的值一致,如果一致,才更新

.

3, 使用AtomicReference可以实现对所有对象的原子引用及赋值.包括Double与Float,

但不包括对其的计算.浮点的计算,只能依靠同步关键字或Lock接口来实现了.

4, 对数组元素里的对象,符合以上特点的, 也可采用原子操作.包里提供了一些数组原子操作类

AtomicIntegerArray, AtomicLongArray等等.

5, 大幅度提升系统吞吐量及性能.



JAVA高级:多核线程-volatile原理与技巧(3)
时间:2011-02-14

这个方法是, AtomicInteger类的常用方法, 作用是, 将变量设置为指定值, 并返回设置前的值.

它利用了cpu原语compareAndSet来保障值的唯一性.

另, AtomicInteger类中, 其他的实用方法, 也是基于同样的实现方式.

比如 getAndIncrement, getAndDecrement, getAndAdd等等.

CAS语义上存在的"ABA 问题"

什么是ABA问题?

假设, 第一次读取V地址的A值, 然后通过CAS来判断V地址的值是否仍旧为A, 如果是, 就将B的值写入V地址,覆盖A值.

但是, 语义上, 有一个漏洞, 当第一次读取V的A值, 此时, 内存V的值变为B值, 然后在未执行CAS前, 又变回了A值.

此时, CAS再执行时, 会判断其正确的, 并进行赋值.

这种判断值的方式来断定内存是否被修改过, 针对某些问题, 是不适用的.

为了解决这种问题, jdk 1.5并发包提供了AtomicStampedReference(有标记的原子引用)类, 通过控制变量值的版本来

保证CAS正确性.

其实, 大部分通过值的变化来CAS, 已经够用了.

jdk1.5原子包介绍(基于volatile)

包的特色:

1, 普通原子数值类型AtomicInteger, AtomicLong提供一些原子操作的加减运算.

2, 使用了解决脏数据问题的经典模式-"比对后设定", 即 查看主存中数据是否与预期提供的值一致,如果一致,才更新

.

3, 使用AtomicReference可以实现对所有对象的原子引用及赋值.包括Double与Float,

但不包括对其的计算.浮点的计算,只能依靠同步关键字或Lock接口来实现了.

4, 对数组元素里的对象,符合以上特点的, 也可采用原子操作.包里提供了一些数组原子操作类

AtomicIntegerArray, AtomicLongArray等等.

5, 大幅度提升系统吞吐量及性能.
  回复  更多评论   

# re: it seems simple[未登录] 2012-02-08 15:29 nick

architecture
http://www.codingthearchitecture.com/  回复  更多评论   

# re: it seems simple[未登录] 2012-02-09 13:50 nick

http://blog.csdn.net/lcw_202/  回复  更多评论   

# re: it seems simple[未登录] 2012-02-09 17:05 nick

javascript
http://www.directwebremoting.org/dwr/  回复  更多评论   

# re: it seems simple[未登录] 2012-03-31 12:14 nick

http://download.springsource.com/release/STS/2.9.1/dist/e3.7/springsource-tool-suite-2.9.1.RELEASE-e3.7.2-macosx-cocoa-x86_64-installer.dmg  回复  更多评论   

# re: it seems simple[未登录] 2012-03-31 14:54 nick

<Context
path="/demo" docBase="~/workspace/project/webapp"
debug="0">
</Context>  回复  更多评论   

# re: it seems simple[未登录] 2012-04-29 18:45 nick

<div class="bg"><div class="f1">sss</div><div class="f2">ddd</div><div class="f3">ggg</div></div>


.bg{
overflow: hidden;
width:300px;
margin: 0 auto;
padding: 0px 0px 0px 0px;
background: #FFFFFF;
}


.f2{
float: left;
width: 50px;

}

.f3{

float: left;
width: 150px;
}
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: