小十的个人博客

@小十

born for design, do what you want, and carpe diem

文章 343
朋友 17
来访 1840

LATEST POSTS

RANKINGS

    • http://www.xiaoten.com
    • 网站成立5377天

    小十

    • 收藏品

    若干笔记……

    今天加入苏苏的项目里面了。身为一个大水货……一头雾水听了项目介绍,就开始最基本的环境配置了……基本的要死。还是不会= =。

    昨天在新买的二手电脑上装了WIN8.1,今天就因为项目软件的原因要换成win7 32位,可怜了我的8G内存。。。

    嗯。首先是用到了ODBC数据源管理器。应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。

    具体的设置,就是打开ODBC数据源管理器。看是个人用了还是全用户用了,对于我这个个人电脑来说实际选哪个都无所谓,就选择系统DSN。然后添加,前提是装了MySQL数据库(这里使用的是南瑞专用的数据库),然后,添加的时候,选择MySQL ODBC 3.51 Driver 。如下图设置:

    1

    2

    数据库给了一个压缩包,直接将db文件夹复制到mysql程序目录下的data目录中即可。跟以前的执行SQL语句方式不同……不过db上一层目录的那个文件中有一个FDB文件,应该是FirebirdDB数据库文件。

    用到了两个插件,一个是形成Excel表格的插件,名字叫:Microsoft.Office.Interop.Excel,不过这个默认的时候,就可以直接引用。另外一个插件是MySQLDriverCS,需要另外安装。

    MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql .NET Data Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL .NET Data Provider。使用他不需要额外的去设置ODBC数据源,基本上只要能连接到MySQL就能通过MySQLDriverCS来访问。这个。没有测试不设置ODBC数据源是否能够访问。不过应该是可以的。。之前报错是因为一直没有安装插件的缘故。

    另外百度百科上说明,这个只支持32位,不支持64位。

     

    电力系统中限制短路电流的措施有:采用分裂绕组变压器、分裂电抗器、限流电抗器、变压器分列运行、环网解环运行等等

    n-1原则(N-1准则):判定电力系统安全性的一种准则。又称单一故障安全准则。按照这一准则,电力系统的N个元件中的任一独立元件(发电机、输电线路、变压器等)发生故障而被切除后,应不造成因其他线路过负荷跳闸而导致用户停电;不破坏系统的稳定性,不出现电压崩溃等事故。

    广度优先搜索与深度优先搜索

    广度优先搜索与深度优先搜索是两种针对图、树常用的搜索算法,前者的实现原理是利用queue的特性,其算法思想被称为“分枝定界”,后者的实现原理是利用stack的特性,其算法思想被称为回溯(backtracking),下面我们以数组定义的简化模型来实现这两种算法。

    假设我们用数组定义了一个迷宫,要找这个数组中两点之间的路径,比如{0,0}和{9,9}。

    char board[MAZE_SIZE][MAZE_SIZE] = {
            {0,1,1,1,1,1,0,0,0,0},
            {0,0,0,0,0,1,0,1,0,0},
            {0,0,0,1,0,1,0,0,0,0},
            {0,1,0,1,0,1,0,1,1,0},
            {0,1,0,1,0,1,0,1,0,0},
            {0,1,1,1,0,1,0,1,0,1},
            {0,1,0,0,0,1,0,1,0,1},
            {0,1,0,1,1,1,0,1,0,0},
            {1,0,0,0,0,0,0,1,0,0},
            {0,0,0,0,1,1,1,1,0,0}};
    

    首先我们定义一个Step函数,在某个point上的某个方向试图走出一步,如果能走则返回true,否则返回false。

    bool Step(Position& pos, int& dir)
        {
           int offsetx[DIRECTION] = {1,0,-1,0};
           int offsety[DIRECTION] = {0,-1,0,1};
           dir = dir%DIRECTION;
    
           int tempx = pos.x + offsetx[dir];
           int tempy = pos.y + offsety[dir];
    
           if(tempx<0 || tempx>=MAZE_SIZE || tempy<0 || tempy>=MAZE_SIZE
               || board[tempy][tempx]==1)
               return false;
    
           pos.x = tempx;
           pos.y = tempy;
           return true;
        }
    

    广度优先是将与当前位置相邻且尚未遍历的point push进queue中,然后不停的将queue中的element pop出来重复前面的动作,这样就使得跟起诉位置越近的点越先处理,能找出一条两点之间最短的路径。

        bool WFS(Position begin, Position& end)
        {
           std::queue<Position> posQueue;
           posQueue.push(begin);
           while(!posQueue.empty())
           {
               Position pos = posQueue.front();
               if(pos == end)
                  return true;
               board[pos.y][pos.x] = 1;
    
               int dir=0;
               while(dir < DIRECTION)
               {
                  pos = posQueue.front();
                  if(Step(pos, dir))
                      posQueue.push(pos);
                  dir++;
               }
               posQueue.pop();
           }
           return false;
        }

    深度优先是将与当前point相邻的某个element push进stack中,直到找不到要寻找的点才将stack中的element pop出来,再从该element其他方向的相邻element中寻找

     bool DFS(Position begin, Position end)
        {
           std::stack<Position> posStack;
           Position pos, lastpos;
           pos = begin;
           while(pos.x!=end.x || pos.y!=end.y)
           {
               lastpos = pos;
               int dir=0;
               while(dir < DIRECTION)
               {
                  if(Step(pos, dir))
                      break;
                  dir++;
               }
    
               if(!(pos==lastpos))
               {
                  board[pos.y][pos.x] = 1;
                  posStack.push(lastpos);
               }
               else
               {
                  if(posStack.empty())
                      return false;
                  pos = posStack.top();
                  posStack.pop();
               }
           }
    
           return true;
        }
    

    递归和stack的实现有着类似的逻辑,而且可以写的更加简洁:

    bool Recursion(Position pos, Position& end)
        {
           if(pos == end)
               return true;
    
           Position cur = pos;
           board[pos.y][pos.x] = 1;
           int dir=0;
           while(dir < DIRECTION)
           {
               pos = cur;
               if(Step(pos, dir) && Recursion(pos, end))
                  return true;
               dir++;
           }
           return false;
        }

    Comments | NOTHING

      游客,你好 修改资料

    *邮箱和昵称必须填写