箱根
3月初不是一个去箱根的合适季节,只是为了将青春18车票的回数用完,但结果是搭进去更多的车费。
坐JR到了小田原后开始换乘箱根登山铁道,強羅之后需要换乘另外一条很独特的异常陡峭的爬山铁道,到早雲山还要换乘缆车才能抵达芦之湖,三段线路属于三家公司,交通费非常贵。由于没查清楚,其实从小田原坐公交就能直到芦之湖,还便宜很多
下降。芦之湖海拔只有700多米,开始可以见到高大的杉树林
传说每棵杉树都吸附着一个灵魂(好恐怖)

终于到湖边啦。这个方向不是富士山方向,要反过来。不过那天阴天,整一天都没看到富士山。箱根富士是日本百景之一,可惜这一趟了

温度大概在七八度左右,冷得耳朵发疼,还有人跑到湖里钓鱼
回来时飘起了雪花

箱根园。那颗应该是箱根相当有名的一本樱吧,远处是駒ケ岳,缆车可达山顶

船上有一个铃铛,说是经过九头龙神社时弄响,就能把愿望传达到神社(这种参拜方式…

这次箱根之旅挺失望的
名古屋
3月5日利用青春18车票沿东海道线前往名古屋,3月6日返回东京。本科时代的同鞋中,在日本工作学习的含余共3人(其实算不算不少了呢)。在名古屋的是班长,毕业后立刻来了日本,都已经买车了,现在丰田工作。三年多没见过面,去探访一下他。
乘坐电车从东京到名古屋,同事说日本人都不会这样做,余虽然一来是为了省钱,但也为了体验一下。车程6个小时,去时换乘4次,回来少一次,但基本不会站着,只是真的坐到屁股疼。刚开始时很兴奋,但很快就开始发困,回程时更是觉得劳累。
不过要在电车上拍一张较好的照片,不是那么容易呢,要避开电线、屋顶

到达名古屋。受姬玩得太狠,打了电话说是在樱通出口然后没电了,同鞋找余找了一个小时,原来他一直在lobby找,余则在改札处不敢动(掩面,下次再也不能这样了)。坐上同鞋的车

天守阁

阅读全文…
伊東・伊豆高原・城ケ崎海岸・富戸
今天和同事去伊豆半島(いずはんとう)旅行。说到伊豆,不得不提起的是川端康成的《伊豆的舞女》,估计很多人知道伊豆这个名字也是因为这部小说,但余实在还没拜读过。从东京出发的旅行电车还有踊り子号(舞女号),可以直到最南端的下田。
但余利用的是青春十八的最后两次机会。
东海道线到热海之后沿伊東(いとう)線接续伊豆急行線到伊豆高原(いずこうげん)。早上下着小雨,下午时天放晴。只在伊豆半岛的东边活动,没有去西边。
先在伊豆高原赏完三公里长的桜並木(さくらなみき)。然后坐巴士到海洋公园,沿着城ケ崎海岸(じょがさきかいがん)的小路一直步行到富戸(ふと),坐电车回到伊东泡温泉最后返回东京。来日本后玩得最尽兴的一次。
因为电力供应不足的缘故,伊豆急行线只有2/3程度的车次,要等半个小时才有一趟车。在伊东等前往伊豆高原的电车时,在周围溜达了一下。
见到一只三色猫。这个猫非常怕生人,一走近她便会躲起来。据主人介绍,这只猫是被扔掉的7只小猫中唯一幸存下来的,当时这群猫被遗弃在店的门前,似乎是被喂了毒馒头,已经奄奄一息。这只猫因此心理受到创伤,自此不再相信人类。日本有见到三色公猫表示运气真好的说法(见到三只黑猫代表厄运),因为三色公猫非常罕见。略微可惜,这只三色猫是母的

伊东这边的海岸基本没有沙滩,这个勉强算沙滩了,但砂子是很罕见的黑色

开始在伊豆高原的三公里长的樱花道赏樱花。下着小雨,很影响拍照

看完樱花返回伊豆高原站一点多,本想沿步行道一直沿着海岸到富户,但仔细看看地图,距离实在太恐怖,于是折回伊豆高原坐公交到海洋公园,以节省一半的路程
Oracle数据库的TX锁
以前很讨厌Oracle数据库,做DML(insert/update/delete)操作还要commit,但深入理解Oracle数据库的锁机制后,才认识到Oracle数据库的优秀和commit/rollback的合理性。Oracle数据库对并发操作的支持做得非常好,但如果不合理利用,后果同样很严重。
Oracle数据库的锁粒度上分为表级锁和行级锁,但实际上通常考虑行级锁就可以了。表级锁应用在建立表,修改表结构,建立索引,删除表等操作上,这是重大操作,一般的后台不会提供这样的权限。因此本文只谈行级锁。
行级锁仅有一个锁类型,就是TX锁。TX锁的T代表transaction,表面上一个TX锁对应一条记录,但实际上整个DML操作无论做多少遍,只要没commit,加在记录上的TX锁状态就不会改变。X代表排斥(exclusive),表级锁X不允许没持有权限的session(会话)进行任何相关表(包括表中记录)的读和写操作,但TX锁允许没持有权限的session读取记录,这涉及到Oracle副本机制,实际上session读取到的是原始记录,而非副本中的修改记录。
TX锁权限的获得方法有:
1.DML操作(insert/update/delete)
2.使用SQL语句:select *** from TableName (where ***) for update nowait;
不要小看第二种方法。
session释放当前持有的全部TX锁权限的方法有:commit和rollback。commit是合并副本到本体,rollback是抛弃副本。
启动两个Oracle SQL Plus窗口,这将是两个不同的session,可以用来模拟两个客户的行为。用这两个窗口做下面的实验,将会得出一些重要的认识。
Oracle数据库的副本机制
1.表的操作create/drop不会产生副本,倘若操作成功,作用是立刻反映到本体上。因此create和drop操作事实上无需补上commit
session甲:
create table test(
id number(5) primary key,
value NVARCHAR2(10));
session乙:select * from test;
session乙没有错误产生。
session甲:drop table test;
session乙:select * from test;
session乙将发生错误。
重新在session甲创建test表,继续下面的实验。
Oracle数据库的sequence
Oracle中的主键不会自动递增,需要手动创建sequence,插入新记录时使用sequence的nextval
2.sequence和事务无关,不需要锁。
session甲:create sequence test_seq increment by 1 start with 1 maxvalue 99999;
session甲:commit;
session甲:insert into test values(test_seq.nextval, 'test');
session甲:select * from test;
ID VALUE
---------- --------------------
1 test
session乙:insert into test values(test_seq.nextval, 'test2');
session乙:select * from test;
ID VALUE
---------- --------------------
2 test2
session甲和session乙都commit后,select * from test的结果是
ID VALUE
---------- --------------------
1 test
2 test2
Oracle数据库的TX锁机制和副本机制
3.Oracle数据库的记录差异会保存到副本中(借用一下网游的名词),每个session对记录的修改都会产生各自的副本,只有在commit后,副本才会合并到本体中。
session乙:delete from test where id=2;
session乙:select * from test;
ID VALUE
---------- --------------------
1 test
session甲:select * from test;
ID VALUE
---------- --------------------
1 test
2 test2
session乙:commit;
session甲:select * from test;
ID VALUE
---------- --------------------
1 test
4.仅有差异化会保存到副本,也即只有持有TX权限的记录的修改结果会保存到副本。一个session commit后,差异化合并到本体,另外的session的select仍然会发生变化,也即session对记录的select是同时根据本体和当前持有的副本。
session乙:insert into test values(test_seq.nextval, 'test3');
session甲:update test set value='test111' where id=1;
session乙:select * from test;
ID VALUE
---------- --------------------
1 test
3 test3
session甲:commit;
session乙:select * from test;
ID VALUE
---------- --------------------
1 test111
3 test3
session甲:insert into test values(test_seq.nextval, 'test4');
session甲:commit;
session乙:select * from test;
ID VALUE
---------- --------------------
1 test111
3 test3
4 test4
session甲:select * from test;
ID VALUE
---------- --------------------
1 test111
4 test4
session乙:commit;
session甲:select * from test;
ID VALUE
---------- --------------------
1 test111
3 test3
4 test4
5.一个记录的TX权限被session乙取得后,session甲对这个记录的DML操作会进入等待状态,直到TX锁被释放,session甲才能获得这个记录的TX权限,这是Oracle数据库解决操作冲突的机制。
session乙:update test set value='test1' where id=1;
session甲:update test set value='test1111' where id=1;
session甲会进入等待状态
session乙:commit;
session甲会执行SQL语句(同时获得了TX锁权限)
session甲:commit;
session乙:delete from test where id=1;
session甲:update test set value='test' where id=1;
session甲会进入等待状态
session乙:commit;
session甲会执行SQL语句,但要修改的记录已经不存在,所以影响了0条记录
session甲:commit; (是否执行commit已经没所谓,但在商业程序中,在DML操作后一定要commit,不管是否记录数为0,DML操作如果失败,则执行rollback)
6.第5条中的DML操作包括insert,对存在primary key insert具有相同key值的记录,同样会产生TX权限冲突。
session乙:insert into test values(0, 'test0');
session甲:insert into test values(0, 'test000');
session甲会进入等待状态
session乙:commit;
session甲会执行SQL语句,但产生了错误
session甲:rollback;
7.程序设计不合理将会产生死锁
下面的操作请谨慎进行,余不负责解决导致的后果
session甲:update test set value='test33' where id=3;
session乙:update test set value='test44' where id=4;
session甲:update test set value='test444' where id=4;
session乙:update test set value='test333' where id=3;
因为都没执行commit,session甲和session乙都将进入等待对方释放锁权限的状态,是为死锁
终止这两个session都不能释放id=3和id=4这两条记录的锁状态,因为锁状态是保存在Oracle数据库的数据表中(请搜索Google大神解决也同时学习一下)
合理使用Oracle数据库的锁权限,解决锁冲突
因为DML操作是自动获得TX权限,很多人会被这表面蒙蔽,从而写程序时不留意导致死锁。
如何合理解决锁冲突?
8.不能滥用高等级锁
TX锁的粒度是单条记录,是粒度很细的锁,倘若如果觉得解决锁冲突很麻烦而使用高等级的锁,如表级锁X(X是完全排斥的锁,不允许没持有权限的session做任何操作),死锁是没有了,但这是滥用。越高级的锁,所影响的范围越大,虽然拿使用X来做比喻,但使用X是极端的行为,普通的后台管理严禁使用X锁,后台管理之间的完全排斥不说,前台比如一个购物系统,顾客就不能购买任何东西。
9.那是否应该在一条DML操作后立刻进行commit?
这还是不值得推荐的做法。因为DML/commit操作会在数据库服务器产生和注销副本,商业系统面临的并发数不是小数目,频繁产生和注销副本会加重服务器负担。
10.将DML操作缓存在本地程序内存中是一个很好的做法,批量执行之后才commit,可以节省服务器开销。
11.但缓存方法的执行时间间隔就算再小,如果并发度很高,还是有死锁的危险。因此后台管理程序应该提供终止长时间没响应的锁的功能。
12.如何在缓存方法的基础上彻底泯灭死锁的危险?答案就是使用select for update nowait;
for update nowait仅对select操作有效,DML无法使用for update nowait。虽然DML操作会自动申请TX锁,但倘若锁已经被别人获得,DML操作会进行等待状态,这是死锁的根源所在。在DML操作前,首先使用select *** from TableName (where ***) for update nowait申请TX权限,如果申请失败,会返回异常,不会进入等待状态,只要select语句中的where条件子句和DML的条件子句一样,就能保证所影响的记录范围不会扩大。使用try…catch…语句捕捉异常,可以确保事务执行的正确性。事实上select for update nowait如果成功,已经为session建立了相关记录的副本,这对服务器的开销影响不大,因为DML最终还是要使用副本中的这些记录。
注意:insert操作倘若可能造成冲突,比如第6条,在操作前也应当使用select for update nowait(session甲就不会进入等待状态),倘若没有冲突危险,比如使用sequence.nextval作为primary key的值,不需要在操作前select for update nowait。
最后请思考一下下面的问题(深入理解select for update nowait):
session甲:select * from test where id=4 for update nowait;
session乙:update test set value='test44' where id=4;
session乙仍然会进入等待状态。为什么?
[JSMC]奥華子 一夜限りのSpeclal Session -2010.12.25 Christmas- [mp4/mkv+bk][2.9g]

内容
12 月25日 中野サンプラザホールにて行われた”奥華子クリスマスコンサート’10 一夜限りのSPECIAL SESSION”の模様を収録。奥華子 (pf)、設楽博臣 (guitar)、ha-j (bass+key)、sugarbeans (drums)、伊藤彩 (violin)の5人編成。
収録曲
1 きよしこの夜
2 変わらないもの
3 羽
4 ガラスの花
5 フェイク
6 逢いたいときに逢えない
7 春夏秋冬
8 愛のしずく
9 恋人がサンタ・クロース
10 泡沫
11 パズル
12 他人の涙
13 伝えたい言葉
14 初恋
15 元気でいてね
16 サンタに願いを
17 僕のクリスマス
我倒,终于搞定
rip设置什么的不是很懂,将就下吧
阅读全文…
[115 30d]ニンテンドー3DS 最速音体験[TAK+PNG+LOG]369m
DEAD OR ALIVE Dimensions
01 D.O.A. ~dimensions mix~
02 Hitohira ~dimensions mix~
03 The shooted ~dimensions mix~
戦国無双Chronicle
04 覇者
とびだす!バブルボブル3D
05 マザーランド
スーパーモンキーボール 3D
06 E.Y.N !!!
07 SEA OF CLOUDS
08 FREAK 2 NITE
タッチ!!ダブルペンスポーツ
09 タイトルBGM
10 メインメニューBGM
11 アーチェリー・ランクマッチ競技中BGM
12 ボクシング・スコアトライ競技中BGM
13 競技終了後用BGM
プロ野球ファミスタ2011
14 青空をかっとばせ! N.D.mix
アニマルリゾート 動物園をつくろう!!
15 動物園ライフ
16 アニマル・コミュニケーション
17 園長のお仕事
レイドン教授と奇跡の仮面
18 モンテドール~夜のカーニバル~
19 謎7
青春18きっぷ
きっぷ(切符),票的意思
日本真是一个什么都来“放題”的国家,飲み放題、食べ放題,还有乗り放題,这青春18きっぷ就是24小时内任意乘坐JR(全国范围)普通列车的车票,共可使用5次,或5人同时使用,11500日元。每次的车费仅相当于2300日元。

东京坐到藤泽的普通车票要900多,坐到热海估计就要两千多了,坐到名古屋居然要6000多,相比起来青春18非常实惠了。
和同事聊起的时候,都基本在当学生时利用过青春18来周游日本。一是没钱,二是时间多。
同事还说起一个蹭特急(非新干线)列车的窍门,特急列车都是需要买指定席票(车上会查票),但仍然和普通列车停靠同样的站台,上车后就躲进厕所,停靠下一站时下来,就可以躲避查票XD(事实上在过青森海峡时,因为不开行普通列车,这一区间持青春18是允许坐特急的,这样的区间全日本只有两个)
明天利用它去名古屋,虽然只是坐6个小时,但2300日元比坐巴士的一半还要便宜,物超所值了



























































最新评论