
2、SVN checkout本删除本file服务器影响
影响服务器执行svn updatezai再自载;删除再执行svn commit服务器应删除
3、连接服务器
点击file-》repositories-》点击坐边+-》名字及svn服务器址type选subversionnext等等
4、Xcode4,SVN用命令
Commit 提交
checkout 服务器载本(我使用电脑)
update 更新文件
File------->SourceController------->update
第3按钮,视图比按钮
5、SVN用详解注意事项
①提交自代码
SVN更新原则要及更新及提交完功能能够通编译并且并且自测试尽量早提交保存历史版本必要候滚;始工作前update项目
②保持原提交(要经意间修改并提交别文件)
仅提交修改部要整项目提交;
完功能或文件提交我遇完某功能没提交做更改结代码现bug恢复代码
③要提交自文件
VisualStudio等发工具程产自文件suo等配置文件Debug,Release,Obj等编译文件及其些自同编译代码关文件些文件提交候应该签入签入需要仓库删除
④要提交能通编译代码
代码提交前首先要确认自能够本编译进行SVN提交更新代码提交前已经通自测试
SVN用命令详解
1、文件checkout本目录
svn checkout path(path服务器目录)
例:svn checkout svn://19216811/pro/domain
2、往版本库添加新文件
svn add file
例:svn add testphp(添加testphp)
3、删除文件
svn delete path -m delete test fle
例:svn delete svn://19216811/pro/domain/testphp -m delete testfile
4、查看志
svn log path
5、比较差异
svn diff path(修改文件与基础版本比较)
6、两版本间差异合并前文件
svn merge -r m:n path
SVN使用
更新(update)经update没坏处特别项目每提交(commit)前进行更新(update)新版本svn提示前拷贝期需要更新
提交(commit)定要写提交内容摘要便于查阅
文件checkout本目录
svn checkout path(path服务器目录)
svn update命令自用服务器版本替换本版本控制文件
6、Xcode使用SVN问题及提交解决冲突问题
XcodeSVN功能Eclipsesubclipse或者windowstortoiseSVN比较起功能差
我索性用直接用命令行我看朋友用subclipse其实挺使用SVN功能要单独耗费资源Eclipse
论使用SVN工具都遇Xcode固问题即projectpbxproj文件提交冲突问题
projectpbxproj文件面包含构建程所需所文件项目目录增加新文件比没通Xcode该文件projectpbxproj文件app同理SVN更新其项目员增加文件没更新projectpbxproj文件(或者该员根本没提交文件)则现相同现象
项目员提交新projectpbxproj文件边没项目增加新文件直接svn update
7、Xcode更新代码项目文件打
若选择更新整项目经现冲突问题尤其projectpbxproj文件文件包含构建程所需所文件项目目录增加新文件没通Xcode
该文件projectpbxproj文件app同理SVN更新其项目员增加文件
没更新projectpbxproj文件(或者该员根本没提交文件)则现相同现象文件冲突直接导致项目文件打
解决更新代码打项目文件:
项目文件tobaccoxcodeproj打右键选择'显示包内容'看三文件projectpbxproj/usermodelv3/userpbxuser
其projectpbxproj三版本解决普通svn文件冲突解决冲突即
8、SVN 更新 提交 合并 区别
本文件没改服务器文件改候更新服务器取文件覆盖前文件
本文件改服务器文件没改更新文件
本文件改服务器文件改改部冲突合并文件本冲突提示文件冲突需要自手修改传服务器
讲解合并:
服务器本同文件(所谓同文件应该SVN相路径相同文件名相同文件由SVN留本信息决定)已经修改且修改部重合重叠
满足面条件候再更新SVN自合并
SVN奥妙处于别提交修改文件再提交允许提交滴
>>>>
<<<
面标记冲突区域冲突区域删除掉能提交
解决办1:
删掉没解决冲突文件面几文件名相同缀同文件
知道用SVN解决冲突简单办
文件改名字文件所目录更新服务器文件自修改部添加更新文件面提交
解决办2:
文件面点击右键SVN菜单应该编辑冲突按钮选择现窗口边服务器版本边自修改版本
9、xcode自带svn使用
1、代码 某文件面 M 标记表示该文件已修改需要 commit
(右键该文件 -> source control -> commit selected file)
2、代码 某文件面 A 标记表示该文件新添加已受SVN管理需要 commit
(右键该文件 -> source control -> commit selected file)
3、代码 某文件面 标记表示该文件新添加并且脱离SVN管理首先需要add commit
(右键该文件 -> source control -> Add该文件标记变 A commit)FileInfo file = new FileInfo("filepath1");
fileCopyTo("filepath2",true)
filepath1为服务器文件路径,可以为虚拟路径,如d:\atxt或\\computer1\book\atxt
filepath2为另一文件路径,如\\computer2\book\米讯SDK,主要提供各种即时通讯服务。帮助游戏和app快速实现 实时聊天,私信留言,音视频通话,群聊等im功能。
目前我们提供了Android、iOS的客户端SDK,同时提供了各个平台的详细文档和Demo,帮助快速入门。
我们强烈建议你阅读完本篇指南之后,再去查看以上的详细文档。
接入方需要通过唯一的appid、appkey、guid来向米讯服务器绑定用户,后续交互通过这个guid来标志一个用户。
米讯服务器不关心guid的业务逻辑,接入方只需要保证guid独立性。
米讯服务器提供open-api,接入方服务器需要随时和米讯服务器同步群组关系。
支持 room(聊天室)和group(群组)两种群聊模式。
room:只提供在线消息收发,用户离线时自动退出。不保存记录。(频道聊天,房间聊天等)
group:稳定的群组关系,提供云端消息存储和离线消息等功能。(工会聊天、邮件等)
支持单聊、聊天室、群聊。并且具备完善的群组管理功能。
支持文字、语音、自定义文件、小视频、(开发中)等多种自定义类型消息。
聊天记录保存在云端,允许自由获取。
支持系统向指定用户和群组发送消息。
提供最多16人的 多人实时语音通话功能
支持通话中的各种设定
支持根据带宽情况,只能调整流量消耗
支持最多4人的多人视频功能(开发中)
如果不需要使用实时通话功能:可以删掉lib中的 rtc-sdk-jniso 和 libHDACEngineso 文件以减小SDK体积。
离线消息推送
敏感词过滤
资料和关系链托管
其他个性化业务
如有需求请单独联系我们
原生的 Android、iOS、的客户端 SDK
服务器帐号绑定、群组管理、系统消息发送的open api
可以实时监控用户数、消息数的开发者控制台(开发中)
为方便unity游戏接入,我们提供了unity的SDK封装和样例工程。
unityDemo分为展示基础功能的appDemo和演示游戏中实时通话的SpaceShooter。接入方可以按需参考。
接入方从米讯获取 appID和appkey。
所有服务端的接口鉴权,都要通过appID和appkey来实现。请妥善保存。
客户端接口需要的token、publicID、publickey,需要由接入方服务器,用appID和appkey来换取。再转发给客户端保存。
2、账户绑定(guid、token、pubkey)
接入方需要提供唯一的id来标识一个用户端。这个id,在米讯SDK中,称之为guid(最长128个字符)。
接入方服务器需要调用米讯服务器的bind_account(appid,appkey,guid)来进行注册。米讯服务器将返回对应这个guid的 token、publicID、publickey。
接入方app,在初始化米讯SDK提供的服务时,需要提供 (guid,token,publicID,publickey)。
米讯服务器不关心guid的业务逻辑,接入方只需要保证guid独立性。
3、群聊(room,group)
米讯SDK提供两种模式的消息群聊服务。分别适合不同的场景。
所有群组的管理,需要接入方服务器和米讯服务器实时交互,保证用户在正确的群里。
接入方app,调用米讯sdk消息 *** 作,负责向群里的用户收发消息。SDK暂时不提供群组管理功能。
聊天室(Room)
只提供在线消息收发,用户离线(超过5min没心跳)自动退出room。再次上线需要重新加入。不保存消息记录。
适合频道聊天、聊天室、随机配对聊天等场景。
一个room,最多同时在线10000人。
rid:接入方定义,要保证不同room的rid唯一性。(128个字符内)
roomtype:接入方定义,方便用户屏蔽某一类room的消息。
群组(Group)
稳定的群组关系,提供云端消息存储和离线消息等功能。需要接入方服务器控制成员进出和群组创建销毁。
适合工会聊天,固定群聊等。
一个group,最多有1000个成员。
gid:接入方定义,要保证不同group的gid唯一性。(128个字符内)
grouptype由业务方定义,方便用户屏蔽某一类group的消息。
4、消息(Message)
Message是SDK用来传输消息的基本对象。需要接入放app构造,然后调用sdk的send接口进行发送。
Message的关键信息如下:
属性类型说明
messageID
String发送方填写的消息ID,用于本地消息去重
fromString发送方ID
targetString接收方ID ,单聊时为对方guid,群聊时为roomID或groopID
bodyMessageBody消息体。不同类型的消息,消息体内容不同,详见下方说明
bodyTypeint消息体枚举类型。暂时包括文本、语音。决定如何解释消息。
messageSeqlong服务端分配的消息序号,用于消息同步,离线消息拉取等
MessageBody
我们提供一下几种类型的MessageBody,后续会持续扩展
0、CustomMessageBody:data
1、TextMessageBody:text
2、AudioMessageBody:audioFilePath;audioUrl;duration
请接入方注意,控制每个Message最大不超过 5KB 的数据。
关于语音消息的录制工具,和自定义消息的方法,请参考详细说明文档。
4、语音通话(VOIP)和会议(Conference)
1、使用语音通话时,接入方服务器,需要先和米讯服务器交互,创建conference。并维护Conference里面的成员。
2、接入方客户端,通过joinconf(confid,guid)来加入确定的conference(前提是,这个conference的成员里面有这个人)
3、客户端加入房间成功后,可以使用各种接口控制音频通话 和 实时获取成员状态。
4、离开conference和确定conference不再使用时,需要及时leave和destroy。
如果不需要使用实时通话功能:可以删掉lib中的 rtc-sdk-jniso 和 libHDACEngineso 文件以减小SDK体积。
五、调用流程概要
1、发消息
2、实时语音通话
交互示意
调用流程图
六、详细文档和Demo
Android SDK 详情
iOS SDK 详情
服务端的 OpenAPI
七、
业务对接和常见问题:
韩尚佑;QQ:271843826;e-mail:hanshangyou@xiaomicom
服务端API:
张友明;QQ:179818827;e-mail:zhangyouming@xiaomicom
Android-SDK:
连冬阳;QQ:2460572865;e-mail:liandongyang@xiaomicom
刘飞;QQ:276985107;e-mail:liufei3@xiaomicom
iOS-SDK:
柯洪峰;QQ:249082954;e-mail:kehongfeng@xiaomicom这行代码只是定义了一个名为serverpath的字符串。
serverpath的意思是服务器地址,所以可能是用来做拼接用的。
一般常用方法是
String server=“>#region 文件上传(普通上传不生成文件夹)
/// <summary>
/// 文件上传(普通上传不生成文件夹)
/// </summary>
/// <param name="hifile">上传控件</param>
/// <param name="strAbsolutePath">绝对路径</param>
/// <param name="TYPE">文件类型(在WebConfig中配置)</param>
/// <param name="FileSize">文件大小单位:Mb(在WebConfig中配置)</param>
/// <returns></returns>
public string SaveFile(HtmlInputFile hifile, string strAbsolutePath, string TYPE, string FileSize)
{
bool filetype = false;
string /文件的完整路径/strOldFilePath = "", /文件类型/strExtension = "", /新文件名称/strNewFileName = "";
//如果上传文件的文件名不为空
if (hifilePostedFileFileName != stringEmpty)
{
strOldFilePath = hifilePostedFileFileName;//文件的完整路径
Path = strAbsolutePath;//服务器路径
//取得上传文件的扩展名
strExtension = strOldFilePathSubstring(strOldFilePathLastIndexOf("") + 1);
file_type = strExtension;
//文件大小单位Mb
double sizes = hifilePostedFileContentLength / (double)10240 / (double)10240;//文件大小
thisfile_size = sizesToString("f4");//文件大小单位Mb精确到小数点后4位
//文件格式
string[] types = TYPESplit('|');//文件格式集合
for (int i = 0; i < typesLength; i++)
{
if (types[i]ToString()Trim()ToLower() == strExtensionTrim()ToLower())
{ filetype = true; break; }
else { filetype = false; }
}
if (filetype)//判断文件类型是否错误
{
if (sizes < ConvertToDouble(FileSize))
{
//文件上传后的命名
strNewFileName = GetUniqueString() + "" + strExtension;
file_name = strNewFileName;
if (!DirectoryExists(strAbsolutePath))//文件的完整路径
{
DirectoryCreateDirectory(strAbsolutePath);//按月份创建文件夹
}
hifilePostedFileSaveAs(strAbsolutePath + strNewFileName);//保存文件
return "文件上传成功!" + file_name;
}
else
{ return "文件大小不能超过" + FileSize + "00Mb!"; }
}
else
{ return "文件格式错误!"; }
}
else
{ return "请选择要上传的文件!"; }
}首先你需要安装一个ftp服务端程序,启动起来,然后下载一个ftp客户端程序,测试能不能连接,首先这一块儿需要测试通过。
代码ftp上传下载
21 上传代码:
import javaioFile;
import javaioFileInputStream;
import orgapachecommonsnetftpFTPClient;
import orgapachecommonsnetftpFTPReply;
public class test {
private FTPClient ftp;
/
@param path 上传到ftp服务器哪个路径下
@param addr 地址
@param port 端口号
@param username 用户名
@param password 密码
@return
@throws Exception
/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftpconnect(addr,port);
ftplogin(username,password);
ftpsetFileType(FTPClientBINARY_FILE_TYPE);
reply = ftpgetReplyCode();
if (!FTPReplyisPositiveCompletion(reply)) {
ftpdisconnect();
return result;
}
ftpchangeWorkingDirectory(path);
result = true;
return result;
}
/
@param file 上传的文件或文件夹
@throws Exception
/
private void upload(File file) throws Exception{
if(fileisDirectory()){
ftpmakeDirectory(filegetName());
ftpchangeWorkingDirectory(filegetName());
String[] files = filelist();
for (int i = 0; i < fileslength; i++) {
File file1 = new File(filegetPath()+"\\"+files[i] );
if(file1isDirectory()){
upload(file1);
ftpchangeToParentDirectory();
}else{
File file2 = new File(filegetPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftpstoreFile(file2getName(), input);
inputclose();
}
}
}else{
File file2 = new File(filegetPath());
FileInputStream input = new FileInputStream(file2);
ftpstoreFile(file2getName(), input);
inputclose();
}
}
public static void main(String[] args) throws Exception{
test t = new test();
tconnect("", "localhost", 21, "yhh", "yhhazr");
File file = new File("e:\\uploadify");
tupload(file);
}
}
22 下载代码
这里没有用到filter,如果用filter就可以过滤想要的文件。
public class Ftp { / @param args / public static void main(String[] args) { // TODO Auto-generated method stub Ftp ftp = new Ftp(); String hostname = ">比如
1写个webservice 在客户端调用一点一点传
2开个ftp在server上 客户端使用ftp命名空间 *** 作上传
3服务器开启个socket 客户端连接并且把文件转成byte发过去
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)