随笔分类 - C#
SQL 中 SELECT 语句的执行顺序
摘要:好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 "拼凑", 那您是不是得好好反省一下呢?, 呵呵). 确实是爽了自己, 可苦了机器, 服务器还需要在我们的杂乱无章的 SQL 语句中寻找它下一句需要执行的关键字在哪里. 效率嘛, 由于我们的感觉神经对秒以下的变化实在不敏感, 暂且...
阅读全文
谈谈防 SQL 注入式攻击策略
摘要:SQL 注入式攻击是指利用设计上的漏洞, 在目标服务器上运行 SQL 命令以及进行其他方式的攻击, 动态生成 SQL 语句时没有对用户输入的数据进行验证. SQL 注入式攻击是一各常规性的攻击, 可以允许一些不法用户检索他人的数据或改变服务器的设置或者在他人不小心的时候破坏其服务器. SQL 注入式攻击不是 SQL Server 问题, 而是不适当的程序. 要防范 SQL 注入式攻击, 应该注意以...
阅读全文
正则表达式实现资料验证的技术总结
摘要:资料验证无论在C/S还是在B/S中的使用都是非常普遍的, 过去大家喜欢用一堆的 IF...else...判断输入的内容是否满足要求.如今很多语言都支持正则表达式, 它定义了一套自己的语法规则 (常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法)来完成各种资料的验证, 功能之强大在我看来几乎到了无敌的地步. 但是据我所了解(呵呵, 很可能是坐井观天, 如果有让哪位不爽请原谅我没见...
阅读全文
特殊窗体制作: 制作任意形状窗体
摘要:原理:重写当前窗体 OnPaint 方法 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime....
阅读全文
特殊类型窗体制作: 制作字形窗体
摘要:原理:重写当前窗体 OnPaint 方法, 如下: protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawImage((Image)bit, new Point(0, 0)); } 一. 窗体设计: #region Windows 窗体设计...
阅读全文
特殊类型窗体制作: 实现类似 Windows XP 的程序界面
摘要:思路: 2到3个 pictureBox 控件, 控制是否显示并确定显示的坐标. 截图: 上传较慢, 效果类似于 windows XP 左侧导航界面 如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using Sy...
阅读全文
特殊类型窗体制作: 实现类似 QQ 的程序界面
摘要:原理: n个 listView控件, n个button控件, 然后控制 listView和 button控件的 Dock 属性 如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;u...
阅读全文
特殊类型窗体制作: 用C#实现启动欢迎界面
摘要:第一步: 主程序启动主窗体(这里表示为 form1) 如下: static class Program { /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.EnableVisualStyl...
阅读全文
特殊类型窗体制作: 制作可以飘动的窗体
摘要:原理: (这里演示纵坐标不变的窗体移动), 两个 timer, 一个控制从左至右, 到达预先设定的点时触发另一个 timer, 当然另一个 timer 控制从右至左的移动( 其实质是横坐标的变化) 如果你希望上下左右或斜线移动甚至乱七八糟(呵呵, 应该叫随机)只要加足够的 timer 并控制好横纵坐标的变换即可. using System;using System...
阅读全文
数据结构-排序: 各种排序算法全分析
摘要:排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 1、插入排序(直接插入排序、折半插入排序、希尔排序); 2、交换排序(起泡排序、快速排序); 3、选择排序(直接选...
阅读全文
数据结构-算法: 分配排序(基数分配排序法)
摘要:基数排序(Radix Sort)是对箱排序的改进和推广。 1、单关键字和多关键字 文件中任一记录R[i]的关键字均由d个分量 构成。 若这d个分量中每个分量都是一个独立的关键字,则文件是多关键字的(如扑克牌有两个关键字:点数和花色);否则文件是单关键字的, (0≤j<d)只不过是关键字中其中的一位(如字符串、十进...
阅读全文
数据结构-算法: 分配排序(箱分配排序)
摘要:分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 1、箱排序的基本思想 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次将各非空的箱子首尾连接起来(收集)。 【...
阅读全文
数据结构-排序: 两路归并排序算法
摘要:归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 1、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。 (1)合并过程 合并过程...
阅读全文
数据结构-算法: 插入排序(希尔排序法)
摘要:希尔排序法基本思想 希尔排序(Shell Sort)又称为“缩小增量排序”。是1959年由D.L.Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率...
阅读全文
数据结构-排序: 插入排序(直接插入排序法)
摘要:插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序和希尔排序。 1.直接插入排序的基本思想 直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中...
阅读全文
数据结构-排序: 交换排序(快速排序法)
摘要:1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 (2)快速排序的基本思想 ...
阅读全文
数据结构-排序: 交换排序(冒泡排序法)
摘要:冒泡排序(Bubble Sorting)的基本思想是:设待排序n个元素存放在数组a[n]中,无序区范围初始为(a(0),a(1),a(2),...,a[n-1]),冒泡排序方法是在当前无序区内,从最上面的元素a[0]开始,对每两个相邻的元素a[i+1]和a[i](i=0,1,...,n-1)进行比较,且使值较小的元素换至值较大的元素之上(若a[i]>a[i+1],则a[i]和a[i+1]的值互换)...
阅读全文
数据结构-排序: 选择排序(堆选择排序法)
摘要:1.堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在...
阅读全文
数据结构-排序: 选择排序(直接选择排序法)
摘要:直接选择排序(Straight Selection Sort) 直接选择排序的基本思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有...
阅读全文
常用算法(C#): 二进制数转换为八进制, 十六进制数的算法
摘要:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExToD { public partia...
阅读全文
浙公网安备 33010602011771号