当前位置:  互联网>综合
本页文章导读:
    ▪Unique Binary Search Trees II      题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example, Given n = 3, your program should return all 5 unique BST's shown below. 1 3 3 2 1 \ / / /.........
    ▪OSX: 实用脚本程序(bash scripts)系列-20      下面的代码可以将AppStore里面下载安装的iLife组件的升级变更为使用Software Update Server. 这对企业中使用SUS服务器用于管理软件升级的网络环境, 尤其有用. 不过, 慎用 rm -rf "/Applications/iMovie.ap.........
    ▪C#基于Udp的分包传输         因为要远做程摄像头监控,要用到网络数据传输,百度了一下,很多就是基于Tcp的,因为QQ是用Udp,所有我也尝试用Udp。 要用Udp传输数据,就免不了分包和重包,因为Udp最大只能传.........

[1]Unique Binary Search Trees II
    来源: 互联网  发布时间: 2013-10-24

题目:

Given n, generate all structurally unique BST's (binary search trees) that store values 1...n.

For example,
Given n = 3, your program should return all 5 unique BST's shown below.

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

代码如下:

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<TreeNode *> getalltrees(int begin,int end)
    {
        vector<TreeNode *> result;
        if(begin>end)
        {
            result.push_back(NULL);
            return result;
        }
        vector<TreeNode *> lefttree;
        vector<TreeNode *> righttree;
        for(int i=begin;i<=end;i++)
        {
            lefttree=getalltrees(begin,i-1);
            righttree=getalltrees(i+1,end);
            for(int j=0;j<lefttree.size();j++)
            {
                for(int t=0;t<righttree.size();t++)
                {
                    TreeNode *root=new TreeNode(i+1);
                    root->left=lefttree[j];
                    root->right=righttree[t];
                    result.push_back(root);
                }
            }
        }
        return result;
    }
    vector<TreeNode *> generateTrees(int n) {
        vector<TreeNode *> result;
        result=getalltrees(0,n-1);
        return result;
    }
};

作者:chunxia75qin 发表于2013-5-30 14:13:57 原文链接
阅读:0 评论:0 查看评论

    
[2]OSX: 实用脚本程序(bash scripts)系列-20
    来源: 互联网  发布时间: 2013-10-24

下面的代码可以将AppStore里面下载安装的iLife组件的升级变更为使用Software Update Server. 这对企业中使用SUS服务器用于管理软件升级的网络环境, 尤其有用. 不过, 慎用

rm -rf "/Applications/iMovie.app/Contents/_MASReceipt"
rm -rf "/Applications/GarageBand.app/Contents/_MASReceipt"
rm -rf "/Applications/iPhoto.app/Contents/_MASReceipt"
mv /Applications/iPhoto.app/Contents/Frameworks/iLife*.framework
/Library/Frameworks/




作者:afatgoat 发表于2013-5-30 13:26:59 原文链接
阅读:76 评论:0 查看评论

    
[3]C#基于Udp的分包传输
    来源: 互联网  发布时间: 2013-10-24

   因为要远做程摄像头监控,要用到网络数据传输,百度了一下,很多就是基于Tcp的,因为QQ是用Udp,所有我也尝试用Udp。

要用Udp传输数据,就免不了分包和重包,因为Udp最大只能传输64KB的数据!下面给出分包的代码:

   首先定义一个包类:

using System;
using System.Collections.Generic;

namespace Packet_Library
{

    /// <summary>
    /// 包类
    /// </summary>
    public class Packet
    {
        private int  _index;
        private byte[]  _data;
        private int  _state;
        public Packet(int index, byte[] buffer,int state)
        {
            this._index = index;
            this._data = buffer;
            this._state = state;
        }
        /// <summary>
        /// 索引序号
        /// </summary>
        public int Index
        {
            get { return _index; }
            set { _index = value; }
        }
        /// <summary>
        /// 数据
        /// </summary>
        public byte[] Data
        {
            get { return _data; }
            set { _data = value; }
        }
        /// <summary>
        /// 状态,用来记录包的开始和结束。1:开始,2:中间,3:包尾。
        /// </summary>
        public int State
        {
            get { return _state; }
            set { _state = value; }
        }
    }

}

 

再定义一个处理包的类:

using System;
using System.Collections.Generic;

namespace Packet_Library
{
    /// <summary>
    /// 分包
    /// </summary>
    public class PacketSplitter
    {
        private static int defaultPartSize = 1024;
        /// <summary>
        /// 分包
        /// </summary>
        /// <param name="datagram">数据包</param>
        /// <param name="partSize">块大小(小于1024*64)</param>
        /// <returns>分包列表</returns>
        public static List<Packet> Split(byte[] datagram, int partSize)
        {
            defaultPartSize = partSize;
            return Split(datagram);

        }

        /// <summary>
        /// 分包
        /// </summary>
        /// <param name="datagram">数据包(使用默认块大小:1024 byte)</param>
        /// <returns>分包列表</returns>
        public static List<Packet> Split(byte[] datagram)
        {
            List<Packet> packets = new List<Packet>();
            if (datagram == null)
                return null;
            if (datagram.Length <= defaultPartSize)
            {
                packets.Add(new Packet(0, datagram, 1));
                return packets;
            }
            int _length = datagram.Length;
            int counts = _length / defaultPartSize;
            int remainder = _length % defaultPartSize;
            int tatal = counts;
            if (remainder > 0)
                counts++;
            for (int i = 0; i < counts; i++)
            {
                int _size = defaultPartSize;
                if (_length - defaultPartSize * i < defaultPartSize)
                    _size = _length - defaultPartSize * i;
                byte[] tmp = new byte[_size];
                Buffer.BlockCopy(datagram, defaultPartSize * i, tmp, 0, _size);
                int state = 2;
                if (i == 0)
                    state = 1;
                if (i == counts - 1)
                    state = 3;
                packets.Add(new Packet(i, tmp, state));
            }
            return packets;
        }
    }
}

 

因为Udp是无连接的,所以我也模拟握手方式来进行数据传输,不要跟我说什么是握手,如果真的不知道的话,那我就再啰嗦几句。所谓握手是一个连接方式,就像我们打电话,首先你拔号,再等待,如果对方接了,你们才可以通话。Tcp就是这样的!

在Udp[中,我们可以先定义几个指令:

public Enum Commands{

requestVideoCapital=1,//请求获取视频

requestSendPacket=2,//请求发送数据包

ResponseSendPacket=3,//回应发送数据包

ResponseEndPacket=4//数据包传送结束

}

通过这几个指令,我们就可以远程视频了。这是一个这样的过程:

首先接收端请求视频(requestVideoCapital)-->发送端收到并获取摄像头的图片进行分包(ResponseSendPacket),再发送第一个包-->接收端收到包并请求下一个包(requestSendPacket)-->发送端判断是否包尾,如果包尾,就通知客户(ResponseEndPacket)-->接收端判断是否包尾,如果是,就重包,并再请求(requestVideoCapital)形成一个循环的网络传输,这样就是一个视频实时监控了!

 

下面说说接收端重包的方法:

我们首先定义一个存储包的数组:

 private byte[] imageBuffer;

在重新请求的时候,将 imageBuffer=null;

当收到包的时候:CopyData(data);

 private void CopyData(byte[] data)
      &n

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3