随笔- 98
文章- 5
评论- 555
阅读-
51万
随笔分类 - 算法 * 技巧 * 思想 * 经典
无赖就是无赖, 绝不是君子--关于盗版
摘要:写在前面:在中国,绝大多数人都在使用盗版,我自己电脑里好像除了几个免费小软件,其他的也都是盗版,但这里我还是要引入正题:无赖就是无赖,绝不是君子!为了使自己不与大众为敌,这里表达会格外小心.好了,现在我们来想这样一件很普通的事情:宝马100万您觉得贵不贵?贵!是吧?您可能会想:"现在没钱买不起,等以后捡到金块了再买吧";OK,这里先不说以后您会不会捡到金子,暂且认为您跟我一样还是没多少钱吧.但是您...
阅读全文
共享关于动态创建超复杂导航树的体验
摘要:说明: 这是我刚刚解决的一个工作中的问题. 一种超复杂的动态创建导航树的创建方法.为了更好的说明后面的示例, 这里就从最普通的导航树的动态创建开始吧:一.最普通的导航树创建:一般情况下,动态创建导航树(我们平时称为资源树)是利用递归完成的,因为要操作的全部信息只存储在一张表中,这种情况下,我们常常会在表中增加一个标识父结点的字段(暂且称为parentID吧),同时表中的主键也是必须的(此处记为UI...
阅读全文
字符串处理技术
摘要:说明: 这些字符串处理小技巧在平时的编程中会普遍遇到, 总结了很多, 这里只提供一些比较好玩供大家参考. 实现的基本方法都是C#提供的关于字符串处理的常用方法, 此处不再一一说明. 一. 根据标点符号分行某一字符串 输入: abc,defg,hijklmn,opq,rstuv (测试时按逗号分行, 可自定义分行符)输出: abc defghijklmnopq rstuv[代码]2. 将字符串颠倒输...
阅读全文
由软件工程看中国人急功近利的心态
摘要:首先我声明, 我很爱国, 而且因为爱, 所以气, 所以急.公司上周接了一个很大的项目,因为每年年底公司要进行财务结算,一般情况下年底的财务结算都会影响各个部门(或每个项目组)当年的业务评审和下一年的财务分配计划,当然对一些产品经理,项目经理以及部门经理来说结算的好坏还直接影响着他们的晋升之路.这就是说如果你所在的公司现在(九月份)接了一个项目,那么就意味着你很可能会跟我现在一样可怜,一样无奈.因为...
阅读全文
常用数字处理小技巧
摘要:说明: 平时编程中总会遇到数字处理问题, 这里将自己平时总结的一些数字处理小技巧结合MSDN上相关的介绍, 列举一些常用的数字处理技术.原理非常简单, 不再细说, 只图自己和大家引用或参考时方便. 1.对计算结果四舍五入(d:数,i小数位数)效果: 233.8763-->233.88[代码]2.将商品金额小写转换成大写效果: 1234566789 -->壹拾贰亿叁仟肆佰伍拾陆万陆仟柒佰...
阅读全文
软件使用与制作: 懂得原理才是王道--自己动手制件个性化的图像处理软件之所得
摘要:开源从出现的那天起就注定一直要被关注下去. 一些非常优秀的软件我们使用起来游刃有余,但是我们对它的运行机制或者源码了解很少; 这样的结果是当我们使用的越好, 对其中的运行机制了解的欲望就越少;其实一个资深的编程人员, 不应该过于迷恋于别人开发好的软件或组件, 这会使我们对更深层的原理知道的机会减少. 这里不是否定大家去使用现成的优秀的软件或组件, 而是至少应该明白其中的一些原理或运行机制, 然后再...
阅读全文
如何正确理解 SQL 中的 NULL
摘要:在 SQL 语句中, NULL 值与字符列中的空格, 数字中的零, 字符列中的 NULL ASCII 字符都不相同. 当DBMS在一列中发现一个 NULL 值时, 就将其翻译为未定义或是不可用的. DBMS不能在一列中做出有关 NULL 的假设, 也不能假设 NULL 值等于 NULL, 造成某一列成为 NULL 的因素可能是: (1),值不存在;(2), 值未知; (3), 列对表不可用. 所以...
阅读全文
SQL 中 SELECT 语句的执行顺序
摘要:好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 "拼凑", 那您是不是得好好反省一下呢?, 呵呵). 确实是爽了自己, 可苦了机器, 服务器还需要在我们的杂乱无章的 SQL 语句中寻找它下一句需要执行的关键字在哪里. 效率嘛, 由于我们的感觉神经对秒以下的变化实在不敏感, 暂且...
阅读全文
谈谈防 SQL 注入式攻击策略
摘要:SQL 注入式攻击是指利用设计上的漏洞, 在目标服务器上运行 SQL 命令以及进行其他方式的攻击, 动态生成 SQL 语句时没有对用户输入的数据进行验证. SQL 注入式攻击是一各常规性的攻击, 可以允许一些不法用户检索他人的数据或改变服务器的设置或者在他人不小心的时候破坏其服务器. SQL 注入式攻击不是 SQL Server 问题, 而是不适当的程序. 要防范 SQL 注入式攻击, 应该注意以...
阅读全文
特殊窗体制作: 制作任意形状窗体
摘要:原理:重写当前窗体 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....
阅读全文
特殊类型窗体制作: 实现类似 Windows XP 的程序界面
摘要:思路: 2到3个 pictureBox 控件, 控制是否显示并确定显示的坐标. 截图: 上传较慢, 效果类似于 windows XP 左侧导航界面 如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using Sy...
阅读全文
数据结构-排序: 各种排序算法全分析
摘要:排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。 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]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在...
阅读全文