路上–(玩大的)–吉他谱

歌曲名:路上
歌手/乐队:杨佳
编配者(转载来源):okdaxiong
——————————————————————————-

E      B        #cm        #Gm
昨日的 阳光撒在我们简单的脸庞
A     #cm       #fm          B
回家的 路上藏着许多欢笑的地方
E      B        #cm        #Gm
任时光 流淌我们都已变换了模样
A     #cm       #fm          E
过往少年轻狂此刻多了一些沧桑

  #Gm       #cm     A        B
每个人都一样人生路上总有迷惘
   #Gm     #cm           A       A          B
这个世界太复杂,我们应该学会把 学会把它变得简单

    E      B     #cm     #Gm 
烦过吧 想过吧 未来是什么形状
    #cm      #Gm       A     B
累了吗 困了吧 我们才真的起航
     E      B     #cm     #Gm
不去烦 不去想 憧憬在等我们前往
     #cm      #Gm       A     E
别停下 坚持吧,美丽在为我们绽放

E      B        #cm        #Gm
昔日的屋顶上还有鸟儿在飞翔
A     #cm       #fm          B
门前的火车站放佛还在记忆中鸣响
E      B        #cm       #Gm
我们都已长大,不在拥有童年的幻想
A     #cm       #fm          E
时常独自感伤,时常温习欢乐的时光

http://www.xiyxf.com/?p=124

评论关闭
2012年5月3日 | 归档于 随便说说
标签:

一条SQL语句查出各科分数最高2名学生

有表 chengji (成绩) 有字段 name(姓名),point(分数),coures(科目) 。用一条语句查出各科目最高分的两名学生。

我的方法是这样,不知还有没更好的方法

SELECT
a.coures
,a.name
,a.point
a.nOrder
FROM (
SELECT
coures
,name
,point
,ROW_NUMBER() OVER (PARTITION BY coures ORDER BY point DESC) AS nOrder
FROM chengji ) a
WHERE a.nOrder <= 2

2012年3月26日 | 归档于 雕虫小技
标签:

两名神九女航天员选出 要求已婚育身体无异味

 中国已挑选了两名“神”女,参加今年晚些时候的航天飞行任务。

身份尚未透露

据说,这两名女航天员的身体条件毫无瑕疵,比如牙齿洁白无瑕,没有任何身体异味。她们属于新选拔出的7名航天员中的其中两名。

但她们的身份尚未透露,要到今年6月至8月某个时候,“神舟九号”飞船发射升空前夕揭晓。

不过,媒体对女航天员的兴趣有增无减。她们经过多年残酷训练,然后从15名候选人中挑选而出。

官方媒体近日报道说,选拔女航天员就好比从鸡蛋里挑骨头,“甚至皮肤上的疤痕、口气、蛀牙及脚茧都不能有。”报道解释说,在太空中,最细小的瑕疵都可能造成大麻烦,甚至灾难事件。严酷的条件可能引起疤痕出血,密闭舱室会加剧身体异味。

目前还有15名女性和30名男性预备航天员,他们也达到同样的身体和精神素质方面的苛刻标准。中国所有的航天员必须没有病史,没有过敏性反应。

 男女接受同样的基础训练

这45名男女预备航天员都要接受同样的基础训练,比如学习50多种包括数学、电子和系统工程、心理学和英语等在内的理论课,并且接受艰苦训练。

据说,一周训练6天,为的是提高耐力和韧性。一些教员曾在俄罗斯宇航员训练中心接受过培训。

观察人士说,如果中国借鉴了一点苏联经验,那也不意外。近50年前,苏联第一个将女航天员送上太空。

前中国航天员李庆龙公开讲到他在俄罗斯荒野的生存技能训练。

据媒体报道,他当时仅穿一件薄衣服,必须在零下50摄氏度的户外待上48个小时,每顿饭只有一块压缩饼干。

最后,他体重减少2.5公斤。

 一律经历过自然分娩

眼下尚不清楚,是否女航天员也要接受类似的残酷训练。不过,她们一律经历过自然分娩的痛苦。

据解放军空军总医院徐先荣教授介绍,所有女航天候选人必须已婚,有孩子,年龄超过25岁。这是为了确保她们身体和心理素质更成熟。

现在看来,几乎肯定会有一名女航天员参加下一次的航天飞行。在中国,女航天员受到广泛赞誉,据称她们相比男航天员具有不少优点。

《国际太空》杂志副主编庞之浩介绍,“女航天员感觉更敏锐,心更细,语言表达和沟通能力也比较强。”

她们还更善于“处理人际关系”,如果有朝一日中国航天员飞向火星,这就是一个尤其重要的素质。

报道称,这是因为火星之旅将是漫长和枯燥的,男女航天员搭配有助于消除紧张。

评论关闭
2012年3月26日 | 归档于 随便说说
标签:

系统盘越来越大

如果你的系统盘(C盘)越来越大了,并且你在使用VS2010,那请看如下方法:
1.打开以下地址:C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging
2.删除里面所有东西
就这么简单,vs2010把每次编译的临时文件放在这个目录下,所以系统盘越来越大。

评论关闭
2012年3月26日 | 归档于 随便说说
标签:

SQL 拼音查询

Sql Serve 的拼音查询, 我不知道有没有现成的函数调用。在网上找到一个比较好的函数,转载一下。
–创建取拼音函数
create function fGetPy(@Str varchar(500)=”)
returns varchar(500)
as
begin
 declare @strlen int,@return varchar(500),@ii int
 declare @n int,@c char(1),@chn nchar(1)

 select @strlen=len(@str),@return=”,@ii=0
 set @ii=0
 while @ii<@strlen
 begin
 select @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)
 if @chn>’z’
   begin
  select @n = @n +1
  ,@c = case chn when @chn then char(@n) else @c end
  from(
  select top 27 * from (
  select chn = ‘吖’
  union all select ‘八’
  union all select ‘嚓’
  union all select ‘咑’
  union all select ‘妸’
  union all select ‘发’
  union all select ‘旮’
  union all select ‘铪’
  union all select ‘丌’ –because have no ‘i’
  union all select ‘丌’
  union all select ‘咔’
  union all select ‘垃’
  union all select ‘嘸’
  union all select ‘拏’
  union all select ‘噢’
  union all select ‘妑’
  union all select ‘七’
  union all select ‘呥’
  union all select ‘仨’
  union all select ‘他’
  union all select ‘屲’ –no ‘u’
  union all select ‘屲’ –no ‘v’
  union all select ‘屲’
  union all select ‘夕’
  union all select ‘丫’
  union all select ‘帀’
  union all select @chn) as a
  order by chn COLLATE Chinese_PRC_CI_AS
 ) as b
   end
 else
   begin
    set @c=@chn
   end
 set @return=@return+@c
 end
 return(@return)
end

go
–测试
select dbo.fgetpy(‘嘻跃相逢’) as 姓名拼音,dbo.fgetpy(‘ab中c国人’) as 中国人
select dbo.fgetpy(‘小何’) as 姓名拼音,dbo.fgetpy(‘ab中c国人’) as 中国人
select dbo.fgetpy(‘KentHo’) as 姓名拼音,dbo.fgetpy(‘ab中c国人’) as 中国人
select dbo.fgetpy(‘东北’) as 姓名拼音,dbo.fgetpy(‘ab中c国人’) as 中国人

评论关闭
2011年4月28日 | 归档于 雕虫小技

Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用(转载)

        CheckForIllegalCrossThreadCalls和control.Invoke有什么不同,哪个更好用,更高效呢?
        占在任何角度讲,都不要使用CheckForIllegalCrossThreadCalls,即便他运行和代码编写的确实比Invoke效率高
        感兴趣的,可以参考我后面贴出的代码来测试对比一下两者的不同。这里我只简单说一下结论:
        1、性能CheckForIllegalCrossThreadCalls=false时比invoke高,而且代码比较优雅。
        测试时间如下:
        Button1 —————————
        00:00:01.0760900
        00:00:01.0771200
        Button2 ————————–
        00:00:01.0812499
        00:00:01.0813443
        效率差多少?在这里时间还不到1%,代码少写一个if字句
        看到有文章说这种方法在大量更新ui时会引发大量异常,导致性能下降
        我测试了一下,耗时和循环次数是很平稳的线性关系,而且也没有发现几个Exception相关性能计数器有问题,这说明这又是某老外朋友想当然的说法。

        2、CheckForIllegalCrossThreadCalls在.net1.x中默认是false,也就是不检查,.net2.0和3.x默认是true
        说明这是ms有意的引导,说不定以后不让你改了。这也是很多1.x用户在刚用2.0时不习惯跨线程更新ui的原因之一。

        3、死穴:安全性
        CheckForIllegalCrossThreadCalls容许子线呈随时更新ui,在同一个test函数体内,不能保证自身事务的一致性。给label1付了值
        一回头,就已经被别人改了,这和超市的踩踏事件的后果一样严重。
        当然你可以自己加锁,用信号量,这样还不如直接使用Invoke了,你只是又把别人做好的事情做了一遍。

        如果你觉的你的应用不会考虑在写入ui的同时来读取ui,而倾向使用CheckForIllegalCrossThreadCalls来追求效率的话,也是不恰当的做法。
        首先CheckForIllegalCrossThreadCalls并不能让效率发生本质的变化。
        其次需求永远是变化的,现在不考虑不等于以后不会碰到
        听从ms的引导。否则以后要在高版本的.net framework中移植代码的时候需要花费数倍的人工。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication34
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //模拟一个实际应用
        //对label1付值后立马检查他的值,如果已经被改过则抛出异常

        void test()
        {
            string strText = Guid.NewGuid().ToString();
            this.label1.Text = strText;
            if (this.label1.Text != strText)
            {
                //测试性能时把这一句注释掉!!!!!!!!!!!!!!!!!!!!!!1
                throw new Exception(“label1的值意外改变”);
            }
        }

        //不使用invoke方法直接进入Control
        void doThread()
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Reset();
            sw.Start();
            for (int i = 0; i < 100; i++)
            {
                test();
                System.Threading.Thread.Sleep(10);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
        }

        //使用invoke方法
        public delegate void dTest();
        void invokeThread()
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Reset();
            sw.Start();
            for (int i = 0; i < 100; i++)
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new dTest(test));
                }
                else
                {
                    test();
                }
                System.Threading.Thread.Sleep(10);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
        }
        //通过CheckForIllegalCrossThreadCalls的值忽略跨线程错误,这时会抛出异常
        private void button1_Click(object sender, EventArgs e)
        {
            Form1.CheckForIllegalCrossThreadCalls = false;
            new System.Threading.Thread(new System.Threading.ThreadStart(doThread)).Start();
            new System.Threading.Thread(new System.Threading.ThreadStart(doThread)).Start();
           
        }
        //通过invoke方法,在主线程排队,lable1的值在test函数体内永远是线程安全的.
        private void button2_Click(object sender, EventArgs e)
        {
            new System.Threading.Thread(new System.Threading.ThreadStart(invokeThread)).Start();
            new System.Threading.Thread(new System.Threading.ThreadStart(invokeThread)).Start();
        }
    }
}

 http://www.xiyxf.com/?p=108

评论关闭
2011年1月25日 | 归档于 雕虫小技
标签: ,

Invalid Cast (check your mapping for property type mismatches); setter of NHibernateSample.Domain.Entities.Customer

Invalid Cast (check your mapping for property type mismatches); setter of NHibernateSample.Domain.Entities.Customer

今天在学习NHibernate之旅,博客园的这篇文章真的是不错,正依葫芦画瓢。谁知有个错误就是解决不了。就是上面那个,类型转换失败。不可能的呀,我抄的原文呀。看下我的代码先:

实体类:
namespace NHibernateSample.Domain.Entities
{
    public class Customer
    {
        public virtual int Id
        {
            get;
            set;
        }
        public virtual string FirstName
        {
            get;
            set;
        }
        public virtual string LastName
        {
            get;
            set;
        }
        public virtual int Version
        {
            get;
            set;
        }
        public virtual Name Name
        {
            get;
            set;
        }
        //一对多关系:Customer有一个或多个Orders
        public virtual ISet<Order> Orders
        {
            get;
            set;
        }

    }

}

配置文件:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.2″
   assembly=”NHibernateSample.Domain”
   namespace=”NHibernateSample.Domain.Entities”>
 <class name =”NHibernateSample.Domain.Entities.Customer,NHibernateSample.Domain” table=”Customer”>
  <id name=”Id” column =”CustomerId”>
   <generator class =”native”/>
  </id>
  <version name=”Version” column=”Version” type=”integer” unsaved-value=”0″/>
  <property name =”FirstName”/>
  <property name =”LastName”/>
  <component name=”Name”>
   <property name=”FirstName” column =”FirstName” type=”string”
         length=”50″ not-null=”false” unique-key=”UC_CustomerName”/>
   <property name =”LastName” column=”LastName” type=”string”
         length=”50″ not-null=”false” unique-key=”UC_CustomerName”/>
  </component>
  <set name=”Orders” table=”[Order]“  generic=”true” inverse=”true”>
   <key column=”CustomerId”  foreign-key=”FK_CustomerOrders”/>
   <one-to-many/>
  </set>
 </class>
</hibernate-mapping>

看起来没问题咧,但是就是报错。找了一天,终于被我发现了。额,想死了。

原因如下:

using Iesi.Collections.Generic;

不明白?再看下面的资料:

set
集合中的对象是唯一的,无序的,不能通过索引、key值访问,只能使用enumerator列举集合对象。
.Net没有原生的set类,所以NHibernate使用Iesi.Collections的set。
不同的set实现可能存在一些差异,因此导致set表现出来的特性不大一样,但在设计、使用上的主要原则是将set看作唯一、无序的。
Iesi.Collections中,基于System.Collections.SortedList实现的ListSet在列举集合对象时顺序跟添加到set的顺序一致,但基于System.Collections.HashTable实现的HashSet就不一致了。HashSet根据对象的GetHashCode()返回值判断对象是否相等,而ListSet则使用对象的Equals()方法进行判断,所以如果没有注意重载GetHashCode()和Equals()方法,在保证唯一性上就有问题。HybridSet是Iesi.Collections中的一个混合类型,基于System.Collections.Specialized.HybridDictionary实现,主要是出于性能的考虑,内部实现会根据集合中对象的数量,自动在ListSet和HashSet两种类型间转换。
另外Iesi.Collections中的SortedSet允许提供一个IComparer接口,这样在列举集合对象时将按照IComparer提供的方法排序。

明白一点了吗?

其实就是因为:NHibernate里支持的ISet 是using Iesi.Collections.Generic;里的,不是System.Collections.Generic;里的。晕倒。

http://www.xiyxf.com/?p=105

评论关闭
2011年1月21日 | 归档于 雕虫小技
标签:

SqlServer 查看锁 删除锁

今天做个查询,不知道怎么的就锁了表。

还不知道怎么查,找了好久都没有找到办法。

问了数据组的高手。方法很简单,我还不确定在什么情况下可以用,先记下来。

先是查看:

exec sp_who2

然后删除:

比如 148把152锁了,就可以:

kill  148

http://www.xiyxf.com/?p=103

2011年1月19日 | 归档于 雕虫小技

SET IDENTITY_INSERT 设插入自增列

想要将值插入到自动编号(或者说是标识列,IDENTITY)中去,需要设定 SET IDENTITY_INSERT
 示例:
 1.首先建立一个有标识列的表:
CREATE TABLE XiyxfTable(id int IDENTITY PRIMARY KEY, product varchar(40))
 2.尝试在表中做以下操作:
INSERT INTO XiycfTable(id, product) VALUES(3, ‘garden shovel’)
 结果会导致错误:“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 ‘XiyxfTable’ 中的标识列插入显式值。”
 3.改用:
SET IDENTITY_INSERT XiyxfTable ON
INSERT INTO XiyxfTable(id, product) VALUES(1, ‘garden shovel’)
 返回正确。
 4.建立另外一个表XiyxfTable2,尝试相同插入操作:

阅读全文…

2010年12月22日 | 归档于 雕虫小技
标签:

练习琴

哇咔咔,作为一个有着多年初学经验的吉他初学者,终于有了一把自己的练习琴

2010年12月12日 | 归档于 随便说说
标签: