2008年4月9日
摘要: 使用BackgroundWorker组件进行异步操作编程原文发布日期:2008-06-18 | 更新日期:2008-06-18原文作者:郑佐原文地址:http://blog.csdn.net/zhzuo/archive/2008/07/23/2699305.aspx摘要:本文介绍了BackgroundWorker组件的功能及在基于事件的异步操作编程中的应用,并对组件的实现原理进行简述。下载与本文相...
阅读全文
今天,就在刚才公司的总经理找我谈话,说是经过一段时间的考察,决定提拔我当个Team Leader,虽然我们现在的项目快要结束了,但是正好通过这段时间锻炼一下,为下一个项目做些准备,这个项目的最后内容,老大会帮助我过渡,然后下个项目就会放手我自己干了。
而且还说待遇上面,如果表现的好,很快会有提高,因为公司和甲骨文也签订了合作,准备送我学习些oracle的东西,毕竟oracle在企业数据库应用领域是无人可比的,会为我提供学习的环境,包括书籍,考试费用,听课。
本来是应该高兴的事情,可是我的心情却很复杂,不知道该高兴还是该不高兴。
主要是前一段时间,家里人觉得我年龄也大了,27了,刚毕业一年,搞这一行已经怕不行了,帮我联系了一家银行的工作,我也有点心动了,可是我不想放弃计算机,虽然我的能力还一般,但是毕竟是我的选择,我觉得我还有兴趣和动力。那边好像有了希望了,前几天报名天了表格。
当然,对公司我是非常感谢的,能在刚来的半年就得到公司的肯定,我非常高兴。
我不知道该如何选择了,选择哪一个我都怕自己后悔,有时候真希望公司看不上我算了,又或者银行那边办不好算了,唉,做人怎么这么难呢。我做事从来不后悔,比如我选择了我现在的老婆,虽然我们的生活很普通,有时候也会为生活的事情吵架,但是我们没有后悔,我爱老婆,我们一起很快乐。选择,这可能是我人生第一个面临的艰难选择吧,该如何呢?还是顺其自然呢?可是我还不想放弃我的梦想,不想让它真的成为梦想,我还想试一试,就算失败也好,可是。。。。。。。。。。。。。。。
还是我真的老了,。。。。。。。。工作以后才发现生活真的很艰难,远没有想像中的那么简单,柴米油盐酱醋茶,样样都要操心的,不知道大家有没有碰到我这样的情况呢?
摘要: 需要在c盘下先建立一个data.txt文件,然后在文件的第一行写上你要导出的列,不如说要导出id和name这两列,就在第一行写上id,name[代码]完整的sql代码如下[代码]SQL Server SQL语句导入导出大全,bcphttp://www.pconline.com.cn/pcedu/empolder/db/sql/0502/551039.htmlbcphttp://liss.javae...
阅读全文
摘要: 本文转载自:http://www.cnblogs.com/terrylee/articles/253667.html原文作者:网名:TerryLee本名:李会军位置:中国 北京我们知道,用SQLDMO可以实现对数据库的备份与恢复,下面给出简单的实现方法。首先需要添加对SQLDMO引用1.实现数据库的备份:1/**////<summary>2///数据库备份3///</summar...
阅读全文
摘要: 最近在做一个和U盘有关的项目,有一个需求是要求显示插入的U盘的盘符,当然了,如果拔出U盘,也应该更新显示,就是显示U口上插入的全部移动设备的全部盘符。其实就是重写[代码]方法,根据得到的系统消息来处理,但是如果要实时更新的话,最好加上定时查询U口设备,将查询结果更新,时间的间隔可以自己定义,根据项目情况吧。下面是完整的代码,如果大家有什么好的建议,欢迎大家一起交流。[代码]简单封装了一下,封装类如...
阅读全文
这个是一个讨论帖子,放到首页是想让更多的老鸟来参加讨论,没有别的意思,希望可以。
谢谢大家
最近的项目使用存储过程比较多,所以出现了很多的想法。
比如说一个系统要求操作都要记录系统日志,记录相应的操作人,时间等等
也就是说添加用户的同时要两步操作,第一步,添加用户信息表,第二步,添加系统日志表,这两个是用两个存储过程,然后在业务层调用两次呢,还是写在一个存储过程,一次调用让数据库都做了呢?
个人认为应该让数据库都做了算了,调用两次还要链接两次数据库,浪费资源,传输资源增加,不如都交给数据库来处理,但是又担心处理的效率,有点迷茫啊,希望有高人指点。
顺便问一下,如何用MSSQL分析sql语句的效率之类的东西,
还有就是登录验证,因为登录成功之后要用到登录用户的其他信息,是应该分开两个操作:
1、验证登录,
2、验证成功,取用户信息
还是坐在一个存储过程中呢,验证的同时,如果成功,就返回相应的用户信息,如果失败,就返回失败
这样的类型的多步操作在系统中很多,我们该如何权衡呢,欢迎老鸟指导,大家也可以讨论说出自己的观点。
这几天我可能不会上网了,希望大家留下宝贵意见,星期一回来我会和大家一起讨论的,谢谢。
本人
email:jorden008@163.com
msn:jorden008@hotmail.com
大家一起交流吧,谢谢
补充一点东西,大家帮个忙吧
下面这个的存储过程中的if。。。。else。。。如何写呢,谢谢
create procedure ValidatingLogin
@LoginName varchar(50),
@Password varchar(50),
@AutoID int output,
@RealName nvarchar(50) output
as
declare @count int;
select count(*) from SysUserInfo where LoginName=@LoginName and Password=@Password
if(个数大于0)
begin
返回用户其他信息
返回1
end
else
begin
返回0
end
go
create procedure ValidatingLogin
@LoginName varchar(50),
@Password varchar(50),
@AutoID int output,
@RealName nvarchar(50) output
as
declare @count int;
select count(*) from SysUserInfo where LoginName=@LoginName and Password=@Password
if(个数大于0)
begin
返回用户其他信息
返回1
end
else
begin
返回0
end
go
摘要: 本文转载:http://www.cnblogs.com/morsh/archive/2008/08/04/1259764.htmlmorsh[代码]
阅读全文
本文转载:http://www.cnblogs.com/kwklover/archive/2007/03/19/679425.html
原作者:kwklover
感谢作者写这么好的文章
我开发的中文分词程序,开源发布 ,
其实哪个中文分词的整体架构是比较糟糕的。架构是否优秀决定了很多构思无法实现,思考了比较久,最近准备开发第二版,抛弃以前的架构,重新实现。下面是一
些设计和构思。计划是两周时间开发完成beta版(如果因为工作关系,也有可能放弃),主要是希望和大家交流下设计思想,我觉得构思很重要,想得实现不
了,可以慢慢研究,想不到才是头大的问题,希望能和大家一起交流下:
新版中文分词构想(面向搜索):
分解流程:
1,分段,根据基本的分隔符号对文本进行分段,比如,。;!!,; \r\n等分解文本
2,分字符区,即分解成纯粹的 中文文本区 ,数字区 ,综合字符区(包括英文,数字或者其他符号),分割符号区
3,对中文文本区调用中文分词算法,对数字区区按空格分词,对综合字符区调用英文分词算法,分割符号区保留
4,对初步分解的单字中文进行中文姓名识别。
5,结合前后词,对单字中文和数字做日期识别分析
6,未登陆词分析与识别
算法构想:
1,中文分词算法
匹配模式:正向最大化,反向最大化,概率最大化
也会考虑参考SharpICTCLAS系统的NShortpath分词算法(不过目前还没看懂,迟钝的很)
2,中文姓名识别算法
主要根据中文姓,加上初步分解出的单字中文进行分析:基于词库分析单字中文作为名的概率。
3,日期识别算法
将分解出的单字中文结合前后字符,判断是否为以下格式之一:
数字+年+数字+月+数字+日
数字+年+数字+月
数字+月+数字+日
数字+月
数字+日
4,新词识别(未登陆词识别)
1,将分解出的单字中文判断排除常用单词(StopWords)外,作为单字出现的概率。所以需要一个单字字库,包括单字出现概率的信息。
当然也可以将现有词库对词进行分解成单字概率分布模型库(具体如何设计还没考虑好),提出来和大家交流下:
单字出现在第一个字符概率 出现在中间的概率 出现在尾部的概率
2,将上叙分析的新词进行概率分析,比如在全文中出现超过N次(比如2次,次数越大,作为一个词的可能性越高),以提高新词识别的准确度;
不过如此大动作的分析,性能估计有很大问题。
5,英文分词算法
1,将全部字符处理为半角字符。
2,将全部字符处理为小写字符。
3,识别各种英文字符格式,比如电子邮件格式,网址格式等等。(用正则表达式)
4,处理英文形式问题:比如将所有英文复数形式转换成单数形式。将各种简写形式处理为同一形式等等(这部分有兴趣可以参考dotlucene和snowball.net对英文处理的方式,这个部分我也没有深入研究过。)
一个简单的英文分词程序
转载:
http://west263.com/info/html/chengxusheji/Javajishu/20080404/57978.html在实验室接手的第一个任务,写一个英文分词程序,要将形如:Books in tuneBoxes are for
Chinese-Children!断为:Book in tune Box are for Chinese
child,也就是说要将复数转为单数,将连写的首字母大写的单词分开等等。复数转单数考虑的比较周全了应该,基本囊活了绝大多数情况。根据大写断词上考
虑有些欠妥,比如NEC这样的词显然应该保留,但是这儿会被拆为三个单词。正在试图改进
/**
* 分词
*
* @param source
* 待分的字符串
* @return String[]
*/
public String[] fenci(String source) {
/* 分隔符的集合 */
String delimiters = " \t\n\r\f~!@#$%^&*()_ |`1234567890-=\\{}[]:\";'<>?,./'";
/* 根据分隔符分词 */
StringTokenizer stringTokenizer = new StringTokenizer(source,
delimiters);
Vector vector = new Vector();
/* 根据大写首字母分词 */
while (stringTokenizer.hasMoreTokens()) {
String token = stringTokenizer.nextToken();
int index = 0;
flag1: while (index < token.length()) {
flag2: while (true) {
index ;
if ((index == token.length())
|| !Character.isLowerCase(token.charAt(index))) {
break flag2;
}
}
vector.addElement(token.substring(0, index));
//System.out.println("识别出" token.substring(0, index));
token = token.substring(index);
//System.out.println("剩余" token);
index = 0;
continue flag1;
}
}
/*
* 复数转单数 参考以下文档:
* http://ftp.haie.edu.cn/Resource/GZ/GZYY/DCYFWF/NJSYYY/421b0061ZW_0015.htm
*/
for (int i = 0; i < vector.size(); i ) {
String token = (String) vector.elementAt(i);
if (token.equalsIgnoreCase("feet")) {
token = "foot";
} else if (token.equalsIgnoreCase("geese")) {
token = "goose";
} else if (token.equalsIgnoreCase("lice")) {
token = "louse";
} else if (token.equalsIgnoreCase("mice")) {
token = "mouse";
} else if (token.equalsIgnoreCase("teeth")) {
token = "tooth";
} else if (token.equalsIgnoreCase("oxen")) {
token = "ox";
} else if (token.equalsIgnoreCase("children")) {
token = "child";
} else if (token.endsWith("men")) {
token = token.substring(0, token.length() - 3) "man";
} else if (token.endsWith("ies")) {
token = token.substring(0, token.length() - 3) "y";
} else if (token.endsWith("ves")) {
if (token.equalsIgnoreCase("knives")
|| token.equalsIgnoreCase("wives")
|| token.equalsIgnoreCase("lives")) {
token = token.substring(0, token.length() - 3) "fe";
} else {
token = token.substring(0, token.length() - 3) "f";
}
} else if (token.endsWith("oes") || token.endsWith("ches")
|| token.endsWith("shes") || token.endsWith("ses")
|| token.endsWith("xes")) {
token = token.substring(0, token.length() - 2);
} else if (token.endsWith("s")) {
token = token.substring(0, token.length() - 1);
}
/* 处理完毕 */
vector.setElementAt(token, i);
}
/* 转为数组形式 */
String[] array = new String[vector.size()];
Enumeration enumeration = vector.elements();
int index = 0;
while (enumeration.hasMoreElements()) {
array[index] = (String) enumeration.nextElement();
index ;
}
/* 打印显示 */
for (int i = 0; i < array.length; i ) {
System.out.println(array[i]);
}
/* 返回 */
return array;
}

Code
private void maintainLoginUserMenuItem_Click(object sender, EventArgs e)
{
if (tvRole.SelectedNode != null)
{
TreeNode node = tvRole.SelectedNode;
frmAddUserToRole addUserToRole = new frmAddUserToRole();
addUserToRole.RoleName = node.Text;
if (addUserToRole.ShowDialog() == DialogResult.OK)
{
}
}
}
private void tvRole_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && tvRole.SelectedNode != null)
{
this.contextMenuTVRole.Show(tvRole, e.X, e.Y);
}
}
private void tvRole_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
tvRole.SelectedNode = tvRole.HitTest(e.Location).Node;
}
}

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

namespace WindowsApp


{
public partial class Form1 : Form

{
private string proName = string.Empty;

public Form1()

{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)

{
proName = txtProcess.Text.Trim();
timer1.Interval =Convert.ToInt32( this.numericUpDown1.Value) * 1000;

if (timer1.Enabled == false)
timer1.Enabled = true;
this.Hide();
notifyIcon1.Visible = true;
}

private void Form1_Load(object sender, EventArgs e)

{
lblSecond.Text = Convert.ToString(this.numericUpDown1.Value);
lblSecond.Refresh();

if (timer1.Enabled == false)
timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)

{
if (!string.IsNullOrEmpty(proName))

{
foreach (Process p in Process.GetProcesses())

{
if (p.ProcessName == proName)

{
p.Kill();

return;
}
}
}
}

private void MenuItemOpen_Click(object sender, EventArgs e)

{
if(timer1.Enabled==false)
timer1.Enabled = true;
}

private void MenuItemClose_Click(object sender, EventArgs e)

{
if(timer1.Enabled)
timer1.Enabled = false;
}

private void MenuItemExit_Click(object sender, EventArgs e)

{
Application.Exit();
}

private void numericUpDown1_ValueChanged(object sender, EventArgs e)

{
lblSecond.Text = Convert.ToString(this.numericUpDown1.Value);
lblSecond.Refresh();
}

private void MenuItemSetting_Click(object sender, EventArgs e)

{
this.Show();
//foreach (Form form in Application.OpenForms)
//{
// if (form.Name == "Form1")
// {
// form.Activate();
// form.WindowState = FormWindowState.Normal;
// form.StartPosition = FormStartPosition.CenterScreen;
// return;
// }
//}
}

}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;
using System.Threading;

namespace WinSer


{
public partial class Service1 : ServiceBase

{
System.Threading.Timer timer1=null;
public Service1()

{
InitializeComponent();
}

protected override void OnStart(string[] args)

{
// TODO: 在此处添加代码以启动服务。
timer1 = new System.Threading.Timer(new TimerCallback(timer1_Tick), null, 0, 60000);
}

void timer1_Tick(object obj)

{

foreach (Process p in Process.GetProcesses())

{
if (p.ProcessName == "Client")

{
p.Kill();
return;
}
}
}

protected override void OnStop()

{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
}
}
}

摘要: 分页用户控件,使用效果如上图,可以用在查询窗体,代码如下:[代码]
阅读全文
摘要: 最近做一个项目的安装部署程序,要求有安装的验证,安装的授权,要输入授权吗才可以安装,禁止非法安装。一开始看见用户界面不错,可是添加了用户界面不能控制他,只能接受输入,然后根据输入创建数据库,修改配置之类的东西,网上的资料也多是这类型的,我就自己写了一个,还不是不太满意的,这些窗体都是在安装的过程中弹出来的,我本意是想在安装之前就验证这些内容,可是弄不出来,不知道大家有没有什么好的办法。这是需要验证...
阅读全文
摘要: [代码]菜单的xml文件如下所示:这个是我从别人的博客中摘抄的。<?xmlversion="1.0"encoding="utf-8"?><Menus><MenuItem><Text>资料管理</Text><ItemID>1000</ItemID><ParentItemID>0</ParentIte...
阅读全文
winForm中应用带CheckBox的TreeView
引用地址:
http://faq.csdn.net/read/216930.html如题;
1、如何实现当子节点全部选中/取消,则父节点选中/取消
2、如何实现当父节点选中/取消,则子节点全部选中/取消
哪位能慷慨相助,最好能有源码实例,先谢谢了!
---------------------------------------------------------------
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
CheckAllChildNodes(e.Node,e.Node.Checked);
//选中父节点
bool bol=true;
if(e.Node.Parent !=null)
{
for(int i=0;i<e.Node.Parent.Nodes.Count;i++)
{
if(!e.Node.Parent.Nodes[i].Checked)
bol = false;
}
e.Node.Parent.Checked = bol;
}
}
}
//选中子节点
public void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach(TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if(node.Nodes.Count > 0)
{
this.CheckAllChildNodes(node, nodeChecked);
}
}
}
---------------------------------------------------------------
1、如何实现当子节点全部选中/取消,则父节点选中/取消
楼主是想子节点都选中的时候,所有的父节点都选中吗?如果是的话稍微改一下即可
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
CheckAllChildNodes(e.Node,e.Node.Checked);
//选中父节点
bool bol=true;
if(e.Node.Parent !=null)
{
for(int i=0;i<e.Node.Parent.Nodes.Count;i++)
{
if(!e.Node.Parent.Nodes[i].Checked)
bol = false;
}
TreeNode tn=e.Node;
while ( tn.Parent != null )
{
tn = tn.Parent;
tn.Checked = bol;
}
tn.Checked = bol;
}
}
}
摘要: Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 表16 AuthorizeMenuInfo权限菜单表 列名 类型 大小 说明 MenuID Int 4 菜单ID MenuName Varchar 50 菜单名称 ParentID Int 4 为此菜单的父菜单ID如果是顶级菜单则为0 FormName Varc...
阅读全文

/**//*
插入角色的同时插入角色拥有的权限,权限使用权限列表表示,列表用逗号分隔权限的id
*/
create procedure AddRole
@RoleName varchar(50),
@Remark varchar(200),
@AuthorizeList varchar(8000),
@lastID int output
as
begin tran
insert into dbo.RoleInfo(RoleName,Remark) values(@RoleName,@Remark)
select @lastID=scope_identity()
declare @i int
set @AuthorizeList=@AuthorizeList+','
set @i=charindex(',',@AuthorizeList)
while @i>0
begin
insert into RoleAuthorizeInfo values(cast(@lastID as int),convert(int,left(@AuthorizeList,@i-1)))
set @AuthorizeList=substring(@AuthorizeList,@i+1,8000)
set @i=charindex(',',@AuthorizeList)
end
if @@error<>0
begin
rollback tran
end
else
begin
commit tran
end
go


declare @id int
exec AddRole 'sdfsdf','sfsdfsf','111,222',@id output
select @id
go/*
更新角色信息,同时更新权限信息
*/
create procedure UpdateRoleAuth
@RoleID int,
@RoleName varchar(50),
@Remark varchar