男人注定要扮演更多的角色,承担更多的社会与家庭责任与压力,
无论如何要努力顶住,《一个男人该有的气质》来自阿里巴巴马云的分享
一个男人,一定要有一个男人的样子,利利索索、痛痛快快,千万不要扭扭捏捏、婆婆妈妈。
一个男人,要懂得保护女人和尊重女人,尤其是后者,千万不要强迫她做她不愿意的事情,不要打女人,无论她伤过你还是骗过你……
一个男人,要说话算话,吐出去的东西再咽回来,自己都会觉得恶心。
一个男人,可以不帅,但是一定要有风度,要有修养,要有内涵,要有底蕴,男人可以丑,但决不能丑陋。
一个男人,可以不用才高八斗,学富五车,但是应该有自己的一技之长,无论怎样,你总要养家糊口。
一个男人,要有自己的目标和追求,人也就这一辈子,头顶的天都是一样的,你可以失败,但是不能自甘平庸。
一个男人,要有责任感,无论是对事业还是对家庭,无论是对父母妻儿还是朋友兄弟,都要担当起自己的职责,自私自利的不是好男人,推脱逃避的不是男人!
一个男人,还应该强悍,社会上鱼龙混杂,充满了危机和诱惑,意志力不够坚定,很容易被击败,被打垮。一个随随便便就会被击败打垮的人,其他一切也无从谈起,也无需谈起。
一个男人,应该学会赚钱,千万不要以为攒钱可以发家致富,钱都是赚出来的,而不是攒出来的……
一个男人,要勤奋果敢,天道酬勤的道理已属老生常谈,而自己觉得对的事情就要努力去做。
一个男人,要沉稳冷静,沉稳,是男人区别于男孩的标志,而冷静,可以让你最大限度发挥优势,降低风险,也让你显得更加成熟一个男人,不要习惯于解释。做了就是做了,无论好坏成败,都是自己做的,解释这东西是最最没用的,你想当初干吗去了!再者,有些时候,沉默确实是金。
互联网产品不是闭门造车,不是苦思冥想,而是快速上线,直接面对用户。发布上线后不断听取用户的意见,不断的迭代开发,不断改进用户体验,小步快跑,不断试错,才能得到想要的结果。
白鸦,真名朱宁,男。UCDChina 发起人,五季咨询成员,UPA中国团队成员。专注于用户体验的产品设计顾问、博客。支付宝首席用户体验规划师;UCDChina发起人,五季咨询合伙人,UPA(可用性专业协会)中国团队成员;专注于用户体验的互联网产品设计师;Blogger。
将用户在某个界面的使用习惯进行保存的一种配置,实现形如快捷方式的功能,例如经常去淘宝,而淘宝有个复杂的选择界面,什么价格区间,颜色,产地等,而我习惯看某个范围内的,可以一次性选择好了,保存选得,下次来就方便了!
具体使用可以建立一个用户配置表,保存配置,然后使用jquery等重现表单状态!
一、数据集基本应用
1.表格新增记录
//新增记录,推荐使用,光标位置处于当前新增记录,且正处理编辑状态
DataRow thisRow = ((DataRowView)usersBindingSource.AddNew()).Row;
thisRow["OID"] = 5;
thisRow["CNAME"] = "新增用户";
thisRow["sex"] = "m";
方式二:利用DataTable的NewRow
//新增记录(不建议使用,因为这种方式Rows.Add时并不处于编辑状态时会受约束影响,且新增时光标不会自动移动该条记录)
DataRow thisRow = userDataSet.Tables["Users"].NewRow();
thisRow["OID"] = 5;
thisRow["CNAME"] = "新增用户";
thisRow["sex"] = "m";
userDataSet.Tables["Users"].Rows.Add(thisRow);
2.表格删除记录
方式一:利用BindingSource的RemoveCurrent
if (usersBindingSource.Current != null)
//删除当前记录,推荐使用
usersBindingSource.RemoveCurrent();
方式二:利用DataRowCollection的Remove
//删除当前记录,不推荐使用,这种方式不会记录到RowState中,保存时不会更新
DataRow thisRow = getCurrentDataRow(usersBindingSource);
if (thisRow != null)
userDataSet.Tables["Users"].Rows.Remove(thisRow);
方式三:利用DataRow的Delete
//删除当前记录,不推荐使用,BindingSource可以更简洁
DataRow thisRow = getCurrentDataRow(usersBindingSource);
if (thisRow != null)
thisRow.Delete();
3.表格修改记录
方式一:利用DataRowObject[列名]直接修改
DataRow thisRow = getCurrentDataRow(usersBindingSource);
if (thisRow != null)
{
thisRow.BeginEdit();
thisRow["CNAME"] = "修改的名称";
thisRow.EndEdit();
}
4.表格查找和筛选记录
方式一:利用DataRowCollection.find查找
DataColumn[] keys = new DataColumn[1];
keys[0] = userDataSet.Tables["Users"].Columns["OID"];
userDataSet.Tables["Users"].PrimaryKey = keys;
DataRow findRow = userDataSet.Tables["Users"].Rows.Find("1");
if (findRow == null)
{
MessageBox.Show("没有找到");
}
else
{
MessageBox.Show("成功找到,CNAME = " + findRow["CNAME"]);
}
方式二:利用BindingSource.find查找
int i = usersBindingSource.Find("OID", "1");
if (i >= 0)
MessageBox.Show("成功找到,CNAME = " +
userDataSet.Tables["users"].Rows[i]["CNAME"]);
方式三:利用DataTable.Select获得DataRow数组
DataRow[] AryDr = userDataSet.Tables["users"].Select("OID > 1");
for (int i = 0; i < AryDr.Length; i++)
{
DataRow dr = AryDr[i];
MessageBox.Show(Convert.ToString((int)dr["OID"]));
}
5.表格记录的移动
方式一:采用BindingSource的方法或position属性实现。
//指定定位到哪一行,Position不会随表格列排序而变化,0不一定就是表格的第一行
usersBindingSource.Position = 0;
//移动到上一条,对于表格列排序后,上一条不定是界面显示表格的上一条
usersBindingSource.MovePrevious();
usersBindingSource.MoveNext();//移动到下一条
usersBindingSource.MoveFirst();
usersBindingSource.MoveLast();
6.表格的过滤
方式一:利用BindingSource的Filter来实现
usersBindingSource.Filter = "OID > 1";
7.数据集清空
方式一:利用DataTable.Clear(),注意这种不会保留删除状态,保存时不会真正删除
userDataSet.Tables["users"].Clear();
方式二:利用DataTable.Rows.Clear删除,注意这种不会保留删除状态,保存时不会真正删除
userDataSet.Tables["users"].Rows.Clear();
方式三:利用BindingSource.RemoveCurrent循环删除全部记录,这种就会保留删除状态。
while (usersBindingSource.Current != null)
usersBindingSource.RemoveCurrent();
8.数据集数据和结构的复制
方式一:整个数据集的复制
DataSet copyDS = userDataSet.Copy();
方式二:只复制单个表
DataSet copyDS = new DataSet();
copyDS.Tables.Add(userDataSet.Tables["users"].Copy());
方式三:只复制数据集的结构
copyDS = userDataSet.Clone();
MessageBox.Show(copyDS.Tables["users"].Rows.Count.ToString());
9.获取脏数据
方式一:整个数据集的脏数据
copyDS = userDataSet.GetChanges();
方式二:获取单个表的脏数据
DataTable dt = userDataSet.Tables["users"].GetChanges();
10.数据集的数据合并
方式一:整个数据集的DataSet.Merge合并
ds.Merge(userDataSet);
方式二:单个表的DataTable.Merge合并
ds.Merge(userDataSet.Tables["users"]);
11.数据集的数据回滚
方式一:数据集的数据回滚
userDataSet.RejectChanges();
方式二:数据表的数据回滚
userDataSet.Tables["users"].RejectChanges();
方式三:数据行的数据回滚
DataRow dr = getCurrentDataRow(usersBindingSource);
if (dr != null)
dr.RejectChanges();
12.数据集从数据库取数
方式一:利用SqlDataAdapter.Fill来填充数据表
this.usersTableAdapter.Fill(this.userDataSet.Users);
13.数据集更新到数据库
方式一:利用SqlDataAdapter.Update来更新到数据库
this.Validate();
this.usersBindingSource.EndEdit();
if (this.userDataSet.HasChanges())
{
this.usersTableAdapter.Update(this.userDataSet.Users);
MessageBox.Show("保存成功!");
}
14.判断数据集变更
方式一:利用DataSet.HasChanges()
15获取数据集表列集合
方式一:利用DataTable.Columns
DataColumnCollection dcc = userDataSet.Tables["users"].Columns;
for (int i = 0; i < dcc.Count; i++)
{
DataColumn dc = dcc[i];
MessageBox.Show(dc.ColumnName);
}
16获取属于该表的行的集合
方式一:利用DataTable.Rows
DataRowCollection drc = userDataSet.Tables["users"].Rows;
for (int i = 0; i < drc.Count; i++)
{
DataRow dr = drc[i];
MessageBox.Show((string)dr["CNAME"]);
}
然后在DAL(数据层)中新建一个.xsd数据集(名字可以自己定义):如下图
创建好了如下:
打开这个已创建好的TestDataSet.xsd:如下图
这里我选择从服务器资源管理器添加表进去,如下图
直接从右侧这些表中拉一张表到这个.xsd这个工作区中,例如我这拉了hg_ad表过去:
这就是.xsd自动生成的。
二:在BLL层就可以调用DAL层这里同的.xsd数据集中里面的GetData()这方法.
最近的一个项目:采用mysql 数据库,xsd做DAL层。在访问的时候把sqlconnection 等 用xsd(数据集)通过ODBC访问,其实在ASP.net和Mysql连接还可以通过 MySql.Data.dll去访问。具体请参照上一篇 asp.net+mysql.关于对象的访问,如xsd中的对象 可以通过objectdatasource 访问xsd中的表和方法等对象。
用MYSQL通过ODBC连接:但是在写XSD的时候需要加参数,其中的变量必须写出?才能执行.其中表名user是关键字,所以要写成`user`.UserID
webservice从字面上分解就是web service----一个提供web服务的系统,可以通过web方式访问这些服务。
而从现实中,webservice可以说是一套标准:分布式,跨平台,跨语言等; 标准实现采用SOAP协议,SOAP
协议是基于流行的XML表达的,具有一个套封envlope, envlope里包含一个必须的body和一个可选的head;
就是在这个body里,我们声明了访问的方法、方法的参数或返回值。
webservice实现, C++系统上采用开源的gSoap,而java采用apache的Axis。这两个框架都提供工具来
生成C++代码或Java代码,不管是gSoap或者Axis,他们生成的最终代码,客户端只需要调用简单的对象就
可以访问服务器,而服务器生成一样的接口,开发者实现这些接口就行,中间的通讯过程全部由框架解决了。
其实这种技术架构并不新颖,早期的CORBA和DCOM, 后来java的RMI, 这些基本上都是RPC技术,大同
小异而已。而它们的背后设计模式,可以说就是23种模式之一的代理模式Proxy。简言之就是,一个客户不想
或者不能直接引用一个对象(接口),而代理对象(接口)可以在客户端和目标对象之间起到中介作用。
按目的划分代理模式有8种:
1、远程代理:为位于不同的地址空间的对象提供一个局域代表对象
2、虚拟代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建
3、Copy-on-Write代理:把复制拖延到只有在客户需要时才真正采取行动
4、保护代理:控制对象的访问,提供使用权限检查
5、Cache代理:为某个目标操作的结果提供临时的存储空间,以便多客户共享
6、防火墙代理:保护目标,防止恶意用户
7、同步化代理:能同时访问对象而没有冲突
8、智能引用代理:提供一些额外操作,如访问次数统计
显然RPC方式属于第1种远程代理模式。
可以看出,在面对一种技术时,我们从它的定义、实现、引入目的、类似相关技术、背后理论基础来
细细分析,就比较容易掌握了。
母亲给了我们鲜活的生命,给了我们斑斓的世界,为我们的身体健康,为我们的学业,为我们的爱情,为我们的家庭,为我们的宝宝,母亲就是这样,无私的奉献,为了子女一定努力做的更好!
记得小的时候家里很穷,平常很少有零用钱,母亲养了很多的鸡,在农村里会有很多挑着箩筐收鸡蛋的大叔,收农家的土鸡蛋到城镇去卖,而也是母亲零用钱的唯一来源了,鸡蛋两毛钱一个,攒了钱就给我和姐姐买好吃的,记得有一次母亲看到很多别家的孩子穿了那种漂亮的条纹的秋裤秋衣,母亲便用那攒了许久的卖鸡蛋的钱到邻村的店里也买了,我和姐姐放学回来,欣喜的拿出来给我们试穿,我的那件有些小因此不是很喜欢说了一些嫌弃的话,我看母亲当时的神情,很伤心的样子,这么多年来,一直记得当时的情形,想想非常不应该,只叹年少不懂事,伤了母亲的心……
母亲节,春夏秋冬,每一天,祝福天下所有的母亲,健康快乐!












