比较标准的做法就是使用SoapHeader。
一般把用户的登入凭证使用MD5加密后,直接存储在SoapHeader中,如果你在服务器端使用Cache缓存管理,也可以分配临时会话ID(相当于SessionID),管理你对此客户的服务资源——主要是状态信息。
使用Enterlib的Security,Cache库,很容易实现这个方案。
re: SQLite.NET提供程序的选择 海天一鸥 2008-02-19 21:39
目前还不支持;
实际上,很多SQL特性也不支持,诸如:
update tableA set
c1=tableB.c2
where tableB.c3=tableA.c3
这类联合更新等,都不支持。
它定位于嵌入式数据库,有很多功能精简了。
但目前的发展非常迅速,功能越来越强大,未来还真不好说。
re: 技术算几斤几两又值几个钱? 海天一鸥 2007-12-28 08:31
呵呵,关键是拍板的人大多不懂技术,或者远离技术好多年了....
面向对象值得提倡,但仅在它适合的领域。微程序,汇编,C,应用依然广泛,仅因它们适合。
楼主提的这个问题,Win32 API很容易实现的,代码量也不多的,直接Direct X绘图好了,不过使用这种技术,没有所谓的Label的概念了,只有绘图设备句柄,屏幕缓冲区这些东西了。要知道,.NET的所有绘图API都是平台调用实现的。这个问题的解与OO并无关系。
Anytao 兄的无私风险精神很是让人敬佩。
望Anytao不要理会那些无聊谩骂,坚持创作的勇气。引述Steven Jobs的一段话,共勉之:
......
你们的时间有限,所以不要浪费时间活在别人的生活里。不要被教条所局限--盲从教条就是活在别人思考结果里。不要让别人的意见淹没了你内在的心声。最重要的,永远追随自己内心与直觉的勇气,你的内心与直觉多少已经知道你真正想要成为什么样的人(have the courage to follow your heart and intuition. They somehow already know what you truly want to become),任何其它事物都是次要的。
........
求知若饥,虚心若愚(Stay Hungry, Stay Foolish)。
re: ICE源码研究 海天一鸥 2007-09-04 23:03
用的还不多,研究纯属爱好。
最新负责的一个项目,很多地方需要分布式通信,ICE作为跨平台的方案,是不错的。
@Anders06
自然不错。但是,往往不能都兼顾。
在C++的STL设计中,容器间要快速的Copy,那么内存必须对齐才最快;
但是要快速插入,那么内存中最好能够总预留些slot,特别是为了支持快速排序,这种slot的分配算法尤为复杂。
Array原则上是内存对齐的,而List不是,它应该是稀疏的,我估计Csharp的模块库和C++原理上是差不多的,因此,你的测试结果刚好证明了这一点:BigList是个稀疏链表,大量插入很快,检索效率较高;
List主要用于需要可变长容器的地方,如果只是比较CopyTo,应该不能说明问题吧。
要比较List的实现性能,我觉得应该比较:
1、大批量插入执行的效率(内存使用量和CPU变化,以及执行时间),主要看看二者分配内存方面的效率
2、随机取的效率;
re: VS2005集成VSS2005的方法 海天一鸥 2007-06-15 06:58
re: VS2005集成VSS2005的方法 海天一鸥 2007-06-12 20:05
dudu能否屏蔽 “工控展览网 ”这样的帐号?
re: ICE专题:实现简单的聊天室(一) 海天一鸥 2007-05-11 20:19
通过.NET Remoting,xmpp都可以实现
现在,聊天多基于 xmpp协议
re: Linux销售代表的“抗议” 海天一鸥 2007-04-20 21:22
从照片上看,Bill真的老了
re: XML注释导致VS2005崩溃 海天一鸥 2007-04-16 09:23
@无常
又有一位发现了,呵呵!看来是个问题。
re: 电子书下载链接整理 海天一鸥 2007-04-15 20:51
声明:link已经很久远,无效是有可能的。但用 迅雷 下载,大多能成功。
re: XML注释导致VS2005崩溃 海天一鸥 2007-04-15 20:45
@GlacialStar
总算又有人见过这个现象。
不是CFO
re: XML注释导致VS2005崩溃 海天一鸥 2007-04-15 17:39
可能是我安装了什么插件导致的。
------------------------------------------------------
Function 加班吗(条件 condition)
IF(condition==加班能让房价降低 OR condition==加班能让贷款降息)
{
return 愿意加班;
}
ELSE (condition==房价在疯涨 or condition==银行在加息)
{
return 必须加班;
}
@crystal
最近很多朋友询问有关JasperReport的技术,有关这类技术的讨论,请到群
QQ:25935569
提问讨论。
最近很多朋友询问有关JasperReport的技术,有关这类技术的讨论,请到群
QQ:25935569
提问讨论。
最近很多朋友询问有关JasperReport的技术,有关这类技术的讨论,请到群
QQ:25935569
提问讨论。
但一旦采用ODP,则很难应用微软的DAAB了。这就是一把双刃剑,一旦应用了Oracle的高级特性,那么就必须抛弃 兼容多种数据库 的能力。
re: 一个关于.Net程序的巨大疑惑。 海天一鸥 2007-03-20 07:28
卸载,重新安装,安装时用FileMon和RegMon跟踪,原因即明。
有兴趣阿。
@Dflying Chen
你常用什么CAT阿?
Trados 么?
对了,我有几个关于翻译出版的问题,希望能得到你的指点阿:)
sgsoft at 163 dot com
TO: 公平点来说,.NET对超大量循环的效率表现真的有点不让人满意
在编写数据库测试案例中,必须要求循环产生的效果是一次性的,也就是说1万次循环必须在一个尽可能短的时段扔给数据库,这才能产生真正的压力。
.NET对于循环的支持和其他语言一样,造成循环很慢的原因在于循环内部执行的逻辑,而非循环本身吧,个人愚见。
如何动态增长批量提交量来对数据库进行强度测试,测试结果才有意义。DBA能很容易的对数据库产生压力——使用SQL循环即可,但DBA不容易找到数据库的最佳运行点,特别是对于OLAP系统。相反,这对于用程序编写压力测试的程序员来说,实现就方便了,因为可以动态调整压力。(LoadRunner有这样高级的功能,但这个软件太贵了^_^)
这个比较结果恐怕不会很真实,实际情况应该相反才对。
O/R mapping的最快速度是直接执行SQL的速度,可以接近,但永远无法达到,它存在的目的是为了简化数据访问,而不是提高数据访问速度。
是一种解决办法。
我用论坛搜索过滤的语句测试了一下,数据量少<5000,没有区别。
Where子句处于索引中时,NOT IN快
Where子句没有索引,都很慢
全文检索,改造后的快,这个我还真没搞清楚,难道全文检索的IN与NOT IN差别这么大?
我觉得这个句子的最大好处是,对于Access这类不支持IN关键字的数据库,有了另外一种方案。Access在数据量5万条以下时是很快的。
re: 程序员的生活--如何办理护照 海天一鸥 2005-02-03 20:16
去办理一次就知道了。
所有证件都时有时间限制的。中国规定的,若时旅行类,那么有效期限很短,发下来也快。
若时其他类型,商务,学习,等等,发下来很慢,但有效期很长,大约是3年或5年。
如果是第一次办,应该是5年,续的话,一般是3年。
文章来源于台湾技术论坛,未作修改,引起误会,遗憾之至!!
关于元数据对象的定义,请大家早些决定,参考三个规范IMS(上面那个)和RDF(idior发的)。
定义的原则是刚好够用,足够简单,适度冗余(低于20%)。
由任何建议和意见,请电子邮件联系。
re: 因为项目的原因,要学习J2EE了 海天一鸥 2005-01-22 11:49
到BlogJava去开个分站吧。最近我很少来 博客园 了,就是被那边的站点管理给畔住了。
现在我在blog中加入了很多JAVA文章,不能称随笔啊,呵呵。
/*
功能描述: 通用分页显示查询
如果有自增标识字段,在@strGetFields中不要加入此字段信息,
如果非要加入的话,要 (fldName + 0) AS fldName 这样处理;
输入参数:
@tblName: 表名
@strGetFields: 需要返回的列 '*':返回所以列信息
@PageSize: 页尺寸
@PageIndex: 页码
@doCount: 返回记录总数, 非 0 值则返回
@strOrderBy: 排序字段信息,(注意: 不要加 ORDER BY)
格式: Field1 DESC, Field2 ASC
@strWhere: 查询条件,(注意: 不要加 WHERE)
输出参数: @RecordCount: 记录总数
作 者: ningfeiyang
创建时间: 2005-01-21
更改纪录:
*/
ALTER PROCEDURE Pagination2
(
@tblName varchar(255),
@strGetFields varchar(1000) = '*',
@PageSize int = 10,
@PageIndex int = 1,
@doCount bit = 0,
@strOrderBy varchar(500) = '',
@strWhere varchar(1500) = '',
@RecordCount int output
)
AS
-- 主语句
DECLARE @strSQL varchar(5000) SET @strSQL = ''
-- 排序变量
DECLARE @strOrder varchar(400) SET @strOrder = ''
SET @RecordCount = 0
--如果@doCount传递过来的不是0,就执行总数统计
IF (@doCount != 0)
BEGIN
DECLARE @sWhere varchar(2000)
SET @sWhere = ''
IF (@strWhere != '')
SET @sWhere = ' WHERE ' + @strWhere
SET @strSQL = 'if exists (select * from dbo.sysobjects where id = object_id(''[dbo].[tmpTable]'') and OBJECTPROPERTY(id, ''IsUserTable'') = 1) '
SET @strSQL = @strSQL + ' UPDATE tmpTable SET Total = (SELECT COUNT(*) FROM [' + @tblName + '] ' + @sWhere + ') '
SET @strSQL = @strSQL + ' ELSE SELECT COUNT(*) AS Total INTO tmpTable FROM [' + @tblName + '] ' + @sWhere
EXEC (@strSQL)
SELECT @RecordCount=Total FROM tmpTable
--删除总数统计临时表
EXEC ('DROP TABLE tmpTable')
END
PRINT @RecordCount
--排序字段信息
IF (@strOrderBy != '')
SET @strOrder = ' ORDER BY ' + @strOrderBy
--如果是第一页就执行以上代码,这样会加快执行速度
IF (@PageIndex = 1)
BEGIN
IF (@strWhere != '')
SET @strSQL = 'SELECT TOP ' + str(@PageSize) + ' ' + @strGetFields + ' FROM [' + @tblName + '] WHERE ' + @strWhere + @strOrder
ELSE
SET @strSQL = 'SELECT TOP ' + str(@PageSize) + ' ' + @strGetFields + ' FROM ['+ @tblName + '] '+ @strOrder
END
ELSE
BEGIN
--为搜索表建立自动编号 保存到临时表中
SET @strSQL = 'SELECT TOP ' + str(@PageIndex*@PageSize) + ' IDENTITY(int,1,1) AS IID, ' + @strGetFields + ' INTO #tmpTable FROM [' + @tblName + ']'
IF (@strWhere != '')
SET @strSQL = @strSQL + ' WHERE ' + @strWhere + @strOrder
ELSE
SET @strSQL = @strSQL + @strOrder
--以下代码赋予了@strSQL以真正执行的SQL代码
SET @strSQL = @strSQL + ' SELECT ' + @strGetFields + ' FROM #tmpTable WHERE IID > ' + str((@PageIndex-1)*@PageSize) + ' DROP TABLE #tmpTable'
END
PRINT @strSQL
--执行分页查询
EXEC (@strSQL)
一般的,企业级别软件都是通过lisence授权的,是一个加密文件,用于计算过期时间,这样的方法,已经很难破解了,不过 Nordon已经被搞定了,也没有什么更好的办法!
没有绝对的安全,Windows系统都可以破解,何况使用Windows底层服务的应用软件呢?
但是,以下方法可以增大难度或绕过破解:
1、数据服务分离,绕过破解
将你的程序要使用的一部分数据从RPC获得--至于使用ACE,Remoting,随你便,获取的方法为提供用户名和密码,返回二进制数据对象,使用通用解密算法解密数据即可。
这样的程序就失去了破解的意义。如同Rising的升级服务一样。
2.入口验证,这就是认证码的方法
但这也不足够安全,因为呵呵,Windows已经被破解了!
3.硬件加密
入口验证机制写在加密光盘中,启动时候需要光盘,嘿嘿,这个俄罗斯人做的非常成功了,现在的游戏加密基本使用这类方法,破解有一定难度,但仍然有人搞定了,哭~~
正版Windwos 2000没有问题,但是Windows XP2下,无法安装,会转到OS授权页,然后自动更新打开并关不了了,我只好从新安装了个Windows 2000。其它XP2不知道是否如此!
建议XP2暂时不要测试。
re: [征求意见]关于增加Java技术区 海天一鸥 2005-01-07 16:06
这个站点,专注些好。
要不,搞个
www.javablogcn.com
也不错!
re: Web项目解决方案框架(一) 海天一鸥 2005-01-05 13:53
多谢!
这里的HTML排版好像有几个Bug,导致粘贴的内容全乱了!
re: 也谈观察者Observer 海天一鸥 2004-12-31 10:52
TO idior:
我看的是《Microsoft .NET 框架应用程序设计》第二版,说错了。
《.NET 程序设计技术内幕》好像也有第二版了,Amozon有介绍。
中文的好像还没有。
《Microsoft .NET 框架应用程序设计》这个书是个参考用的好书,不过要再高深一些的书籍,那就得看JAVA的了,毕竟JAVA和.NET很接近。
re: 也谈观察者Observer 海天一鸥 2004-12-30 13:29
同意idior的看法。
在一个类中包含太多的委托(事件),违反了轻量级类的设定原则。
如果以一种动态的方式,解决:我需要那些event,就实例化那些对应的delegate,还真是个难点。
《.NET Framwork开发内幕》第二版 好像有很详细的解决方案,可惜没有时间来得急完全搞懂。是否有人详细论述过这个问题呢?!
re: 也谈观察者Observer 海天一鸥 2004-12-30 09:31
已经撤了下来了,因为不放首页,大家可能看不见耶,呵呵!
好东西就是要分享阿!
最近要协作开发一个大项目,发现网上有这么个文章,照作了一下,确实省了不少事情。
推荐给大家分享。
文章中的表格大家应该根据自己的项目定制,最好和Project 2003结合,那就比较强了。
Access的报表功能真是强,不得不服微软!
你把需求写一个发邮件给我不就可以呢?!
文章只能抛砖引玉。
已经发出,jeacey@gmail.com
chnwin@gmail.com
请注意查收。
每个人默认是5个邀请,请收到invite的朋友,贡献自己的invite,我已经没有了。
这种技术是蠕虫病毒技术的最初原型,不过是用在善的方面。
支持。
是的,我测试了你提出的问题,这个动态拼接的SQL确实有问题,我写了另一片关于动态分页的文章,就是在结果集合中插入序号,一次返回所有数据,在内存中缓存,然后用序号取得数据,是一种减少数据库行程的有效方法,你可以参考那个SQL存储过程,我在项目中已经使用了这种技术,如果你发现新的bug,希望一切讨论。
感谢你的回复。
re: 常用SQL说明 海天一鸥 2004-11-13 13:35
好棒的资料!
re: 笔试题系列之三 海天一鸥 2004-10-02 09:54
//这是个递归函数,自己调用自己,永远无法返回,就如上面的跟踪信息所得到的一样!楼主果然强,以前从来没有思考过这么古怪的问题。
public override string ToString()
{
return string.Format("my name is {0}",this.ToString());
}
re: 笔试题系列之三 海天一鸥 2004-10-02 09:52
> MyTest.exe!MyTest.Class1.ToString() 行24 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.ToString() 行24 + 0xd 字节 C#
MyTest.exe!MyTest.Class1.Main(string[] args = {Length=0}) 行17 + 0x7 字节 C#
持续跟踪,会发现调用对准上的死循环,厉害!
re: [导入]立即将转载的文章放到转载区 海天一鸥 2004-09-22 10:35
已经更改。