密码是明文存储的

sig错误是因为params没拼接上md5后的秘钥,测试时候可以在 Api\Controller\CommonController\_initialize 方法里注释掉效验的代码

代码使用的是thinkphp,将ThinkPHP\Conf\convention.php

'URL_MODEL'             =>  2,

API接口:

提交方式为GET

http://api.map.baidu.com/direction/v1?mode=driving&origin=上地五街&destination=北京大学&origin_region=北京&destination_region=北京&output=json&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N

http://api.map.baidu.com/direction/v2/transit?origin=40.056878,116.30815&destination=31.222965,121.505821&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N

可去该网站http://coolaf.com/测试

Hpa7sMY1Wk8GpcBjnVsxW9DVsQeCaGGd ios ak key

1、分类数据库增加图片字段,分类功能增加编辑功能;对应第2个需求;2017年3月3日已完成
2、动态广告添加百度地图code; 对应第4个需求; 2017年3月2日已完成
3、添加地铁城市,包括地铁城市和图片;2017年3月3日已完成
4、增加城市地铁,各个线路;2017年3月3日已完成

查询线路:
http://api.map.baidu.com/direction/v1?mode=transit&origin=上地五街&destination=北京大学&origin_region=北京&destination_region=北京&output=json&ak=UlYjliwEjM637Wsr1GgZRsUSvPDvD20N
method为get
参数:
origin 起点名称或经纬度
destination 终点名称或经纬度
mode 包括:driving(驾车)、walking(步行)、transit(公交)、riding(骑行)}}
region 必填 北京 公交、步行导航时该参数必填。
origin_region 必填 北京 起始点所在城市,驾车导航时必填。
destination_region 必填 北京 终点所在城市,驾车导航时必填。
output 选填,默认为xml json 表示输出类型,可设置为xml或json,默认为xml。

http://api.map.baidu.com/line?region=北京&name=13地铁线&output=html&src=北京题加教育科技有限公司
region 城市名或县名 必选
name 线路名称 必选
output 表示输出类型,web上必须指定为html才能展现地图产品结果。 必选 手机客户端忽略此参数
zoom 展现地图的级别,默认为视觉最优级别。 可选
src appName。 必选 此参数不传值,不保证服务。

高德支持查询所有线路:
http://lbs.amap.com/api/subway-api/reference/

上传七牛,参考:

http://www.thinkphp.cn/code/1533.html

http://www.thinkphp.cn/topic/46397.html

添加模块之后需要添加权限,添加如下的SQL语句:

INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("Student", "学生控制器", 1, 100, 1, 2);
插入的id为38
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("index", "学生列表", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("add", "学生列表添加", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("do_add", "学生列表请求添加", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("edit", "学生列表编辑", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("do_edit", "学生列表编辑请求", 1, 100, 38, 3);
INSERT INTO think_node (name, title, status, sort, pid, level) VALUES ("dodelete", "学生列表编辑请求", 1, 100, 38, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 38, 2);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 39, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 40, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 41, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 42, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 43, 3);
INSERT INTO think_access (role_id, node_id, level) VALUES (3, 44, 3);

thinkphp导出excel:

http://www.thinkphp.cn/code/403.html

百度编辑器添加,参考这篇文章

http://www.thinkphp.cn/topic/32633.html

1、把百度编辑器放到项目的Public目录下 命名为:UEditor
2、在ThinkPHP/Library/Think/Template/Taglib 目录下编辑 Html.class.php 加上下面的代码:

  1. switch(strtoupper($type)) {
  2. case 'FCKEDITOR':
  3. //.......
  4. break;
  5. case 'FCKMINI':
  6. //.......
  7. break;
  8. case 'EWEBEDITOR':
  9. //.......
  10. break;
  11. case 'NETEASE':
  12. //.......
  13. break;
  14. case 'UBB':
  15. //.......
  16. break;
  17. case 'KINDEDITOR':
  18. //.......
  19. break;
  20. case 'UEDITOR':
  21. $parseStr   =  "\n".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.config.js"></script>'."\n".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.all.js"></script>'."\n".'<script type="text/plain" id="'.$id.'" name="'.$name.'" style="'.$style.'">'.$content.'</script>'."\n".'<script type="text/javascript">var ue_'.$id.' = UE.getEditor("'.$id.'");</script>'."\n";
  22. break;
  23. //.......
复制代码

3、在需要用到编辑器的模板head内加上:

  1. <taglib name="html" />
复制代码

在用到编辑器的地方加上:

  1. <html:editor id="info" name="info" type="UEDITOR" >{$info.info}</html:editor>
复制代码

4、在百度编辑器目录的ueditor.config.js文件内修改:

  1. // 服务器统一请求接口路径
  2. , serverUrl: URL + "../../index.php/Home/Index/ueditup"
复制代码

5、就是你需要的用TP自带上传类处理上传了,在Home模块的Index控制器里加上下面的方法:

  1. public function ueditup(){
  2. header("Content-Type: text/html; charset=utf-8");
  3. $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  4. //dump($editconfig);
  5. $action = I('get.action');
  6. //echo $action;
  7. switch ($action) {
  8. case 'config':
  9. $result =  json_encode($editconfig);
  10. break;
  11. /* 上传图片 */
  12. case 'uploadimage':
  13. $result = $this->editup('img');
  14. break;
  15. /* 上传涂鸦 */
  16. case 'uploadscrawl':
  17. $result = $this->editup('img');
  18. break;
  19. case 'uploadvideo':
  20. $result = $this->editup('video');
  21. break;
  22. case 'uploadfile':
  23. $result = $this->editup('file');
  24. //$result = include("action_upload.php");
  25. break;
  26. /* 列出图片 */
  27. case 'listimage':
  28. $result = $this->editlist('listimg');
  29. break;
  30. /* 列出文件 */
  31. case 'listfile':
  32. $result = $this->editlist('listfile');
  33. break;
  34. /* 抓取远程文件 */
  35. case 'catchimage':
  36. //$result = include("action_crawler.php");
  37. break;
  38. default:
  39. $result = json_encode(array(
  40. 'state'=> '请求地址出错'
  41. ));
  42. break;
  43. }
  44. /* 输出结果 */
  45. if (isset($_GET["callback"])) {
  46. if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
  47. echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
  48. } else {
  49. echo json_encode(array(
  50. 'state'=> 'callback参数不合法'
  51. ));
  52. }
  53. } else {
  54. echo $result;
  55. }
  56. }
  57. public function editup($uptype){
  58. if($this->islogin==false){
  59. $_re_data['state'] = '请登陆';
  60. return json_encode($_re_data);
  61. }
  62. $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  63. switch ($uptype) {
  64. case 'img':
  65. $upload = new \Think\Upload();// 实例化上传类
  66. $upload->rootPath  =     '.';
  67. $upload->maxSize   =     $editconfig['imageMaxSize'];
  68. $upload->exts      =     explode('.', trim(join('',$editconfig['imageAllowFiles']),'.'));
  69. $upload->savePath  =     $editconfig['imagePathFormat'];
  70. $upload->saveName  =     time().rand(100000,999999);
  71. $info   =   $upload->uploadOne($_FILES[$editconfig['imageFieldName']]);
  72. break;
  73. case 'file':
  74. $upload = new \Think\Upload();// 实例化上传类
  75. $upload->rootPath  =     '.';
  76. $upload->maxSize   =     $editconfig['fileMaxSize'];
  77. $upload->exts      =     explode('.', trim(join('',$editconfig['fileAllowFiles']),'.'));
  78. $upload->savePath  =     $editconfig['filePathFormat'];
  79. $upload->saveName  =     time().rand(100000,999999);
  80. $info   =   $upload->uploadOne($_FILES[$editconfig['fileFieldName']]);
  81. break;
  82. case 'video':
  83. $upload = new \Think\Upload();// 实例化上传类
  84. $upload->rootPath  =     '.';
  85. $upload->maxSize   =     $editconfig['videoMaxSize'];
  86. $upload->exts      =     explode('.', trim(join('',$editconfig['videoAllowFiles']),'.'));
  87. $upload->savePath  =     $editconfig['videoPathFormat'];
  88. $upload->saveName  =     time().rand(100000,999999);
  89. $info   =   $upload->uploadOne($_FILES[$editconfig['videoFieldName']]);
  90. break;
  91. default:
  92. return false;
  93. break;
  94. }
  95. if(!$info) {// 上传错误提示错误信息
  96. $_re_data['state'] = $upload->getError();
  97. $_re_data['url'] = '';
  98. $_re_data['title'] = '';
  99. $_re_data['original'] = '';
  100. $_re_data['type'] = '';
  101. $_re_data['size'] = '';
  102. }else{// 上传成功 获取上传文件信息
  103. $_re_data['state'] = 'SUCCESS';
  104. $_re_data['url'] = $info['savepath'].$info['savename'];
  105. $_re_data['title'] = $info['savename'];
  106. $_re_data['original'] = $info['name'];
  107. $_re_data['type'] = '.'.$info['ext'];
  108. $_re_data['size'] = $info['size'];
  109. }
  110. return json_encode($_re_data);
  111. }
  112. public function editlist($listtype){
  113. $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
  114. switch ($listtype) {
  115. case 'listimg':
  116. $allowFiles = $editconfig['imageManagerAllowFiles'];
  117. $listSize = $editconfig['imageManagerListSize'];
  118. $path = $editconfig['imageManagerListPath'];
  119. break;
  120. case 'listfile':
  121. $allowFiles = $editconfig['fileManagerAllowFiles'];
  122. $listSize = $editconfig['fileManagerListSize'];
  123. $path = $editconfig['fileManagerListPath'];
  124. break;
  125. default:
  126. return false;
  127. break;
  128. }
  129. /* 获取参数 */
  130. $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
  131. $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
  132. $end = $start + $size;
  133. /* 获取文件列表 */
  134. $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "":"/") . $path;
  135. $files = $this->getfiles($path, $allowFiles);
  136. if (!count($files)) {
  137. return json_encode(array(
  138. "state" => "no match file",
  139. "list" => array(),
  140. "start" => $start,
  141. "total" => count($files)
  142. ));
  143. }
  144. /* 获取指定范围的列表 */
  145. $len = count($files);
  146. for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){
  147. $list[] = $files[$i];
  148. }
  149. //倒序
  150. //for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){
  151. //    $list[] = $files[$i];
  152. //}
  153. /* 返回数据 */
  154. $result = json_encode(array(
  155. "state" => "SUCCESS",
  156. "list" => $list,
  157. "start" => $start,
  158. "total" => count($files)
  159. ));
  160. return $result;
  161. }
  162. /**
  163. * 遍历获取目录下的指定类型的文件
  164. * @param $path
  165. * @param array $files
  166. * @return array
  167. */
  168. public function getfiles($path, $allowFiles, &$files = array())
  169. {
  170. if (!is_dir($path)) return null;
  171. if(substr($path, strlen($path) - 1) != '/') $path .= '/';
  172. $handle = opendir($path);
  173. while (false !== ($file = readdir($handle))) {
  174. if ($file != '.' && $file != '..') {
  175. $path2 = $path . $file;
  176. if (is_dir($path2)) {
  177. $this->getfiles($path2, $allowFiles, $files);
  178. } else {
  179. if(in_array('.'.pathinfo($file, PATHINFO_EXTENSION), $allowFiles)){
  180. $files[] = array(
  181. 'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])),
  182. 'mtime'=> filemtime($path2)
  183. );
  184. }
  185. }
  186. }
  187. }
  188. return $files;
  189. }
复制代码

记得把 ueditconfig.json这个文件放到配置文件目录下也就是Home/Conf/这个目录下
这个文件的内容如下:

  1. /* 前后端通信相关的配置,注释只允许使用多行方式 */
  2. {
  3. /* 上传图片配置项 */
  4. "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
  5. "imageFieldName": "upfile", /* 提交的图片表单名称 */
  6. "imageMaxSize": 2048000, /* 上传大小限制,单位B */
  7. "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
  8. "imageCompressEnable": true, /* 是否压缩图片,默认是true */
  9. "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
  10. "imageInsertAlign": "none", /* 插入的图片浮动方式 */
  11. "imageUrlPrefix": "", /* 图片访问路径前缀 */
  12. /* "imagePathFormat": "/Uploads/editor/image/{time}{rand:6}", */
  13. "imagePathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  14. /* 涂鸦图片上传配置项 */
  15. "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
  16. "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
  17. "scrawlPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  18. "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
  19. "scrawlUrlPrefix": "", /* 图片访问路径前缀 */
  20. "scrawlInsertAlign": "none",
  21. /* 截图工具上传 */
  22. "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
  23. "snapscreenPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  24. "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
  25. "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
  26. /* 抓取远程图片配置 */
  27. "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
  28. "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
  29. "catcherFieldName": "source", /* 提交的图片列表表单名称 */
  30. "catcherPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  31. "catcherUrlPrefix": "", /* 图片访问路径前缀 */
  32. "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
  33. "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
  34. /* 上传视频配置 */
  35. "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
  36. "videoFieldName": "upfile", /* 提交的视频表单名称 */
  37. "videoPathFormat": "/Uploads/editor/video/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  38. "videoUrlPrefix": "", /* 视频访问路径前缀 */
  39. "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
  40. "videoAllowFiles": [
  41. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  42. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
  43. /* 上传文件配置 */
  44. "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
  45. "fileFieldName": "upfile", /* 提交的文件表单名称 */
  46. "filePathFormat": "/Uploads/editor/file/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  47. "fileUrlPrefix": "", /* 文件访问路径前缀 */
  48. "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
  49. "fileAllowFiles": [
  50. ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  51. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  52. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  53. ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  54. ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  55. ], /* 上传文件格式显示 */
  56. /* 列出指定目录下的图片 */
  57. "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
  58. "imageManagerListPath": "/Uploads/editor/image/", /* 指定要列出图片的目录 */
  59. "imageManagerListSize": 1000, /* 每次列出文件数量 */
  60. "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
  61. "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
  62. "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
  63. /* 列出指定目录下的文件 */
  64. "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
  65. "fileManagerListPath": "/Uploads/editor/file/", /* 指定要列出文件的目录 */
  66. "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
  67. "fileManagerListSize": 1000, /* 每次列出文件数量 */
  68. "fileManagerAllowFiles": [
  69. ".png", ".jpg", ".jpeg", ".gif", ".bmp",
  70. ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
  71. ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
  72. ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
  73. ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
  74. ] /* 列出的文件类型 */
  75. }
复制代码

差不多就这样了,这点点东西花了我大半天来集成

如果出现错误 后端配置项没有正常加载,上传插件不能正常使用! 请配置如下:

"imageUrlPrefix": "http://localhost:8080/xxxx", /* 图片访问路径前缀 */

kindeditor编辑器

http://www.thinkphp.cn/topic/34153.html

已经完成的功能 2017年3月10日:

已经完成功能:
1、分类数据库增加图片字段,分类功能增加编辑功能;
2、动态广告添加百度地图code;
3、添加城市管理模型,可以添加、修改、删除城市,并上传城市图片.图片上传直接上传到七牛,;
4、添加地铁模型,在此模型中可以选择对应的城市并增删改地铁名称、图片、描述.图片上传直接上传到七牛,;
5、增加了订阅分类模型,管理员自定义需要订阅的分类;
6、增加了订阅文章模型,分类对应订阅分类,在此模型中增加了kindeditor编辑器,配置了图片上传功能,使得图片上传直接上传到七牛,减少服务器的存储,直接图片的加载速度.

配置文件:vim /etc/apache2/sites-available/default

百度地图 ijintui以及七牛、百度编辑器、kindeditor的更多相关文章

  1. 通过百度地图API定位--第三方开源--百度地图(一)

    1.把百度地图定位API(下载地址:http://lbsyun.baidu.com/sdk/download?selected=location)里面的libs复制到自己的项目libs里面 2.进行相 ...

  2. Android之旅十八 百度地图环境搭建

    在android中使用百度地图,我们能够先看看百度地图对应的SDK信息:http://developer.baidu.com/map/index.php? title=androidsdk,它里面基本 ...

  3. 百度地图API开发----手机地图做导航功能

    第一种方式:手机网页点击打开直接进百度地图APP <a href="baidumap://map/direction?mode=[transit:公交,driving:驾车]& ...

  4. 百度地图总结第二篇--POI检索功能

    简单介绍: 眼下百度地图SDK所集成的检索服务包含:POI检索.公交信息查询.线路规划.地理编码.行政区边界数据检索.在线建议查询.短串分享(包含POI搜索结果分享.驾车/公交/骑行/步行路线规划分享 ...

  5. C# 程序中嵌入百度地图

    本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点: WebB ...

  6. 去百度API的百度地图准确叠加和坐标转换的解决方案研究

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百 ...

  7. Android开发之百度地图--环境搭建

    这篇文章总结自极客学院张浩老师的android教学课程,在此对张浩老师和崔爽老师表示非常感谢. (一)基础知识 在申请百度地图开发密钥的时候需要用到数字签名证书的内容,所以这里先对此做一下介绍. (1 ...

  8. 百度地图与HT for Web结合的GIS网络拓扑应用

    在<HT for Web整合OpenLayers实现GIS地图应用>篇中介绍了HT for Web与OpenLayers的整合,不少朋友反应国内用得比较多的还是百度地图,虽然HT整合百度地 ...

  9. 百度地图API使用方法详解

    最近做了个项目,其中项目中有个需求需要用到百度地图进行导航,通过查阅相关资料参考百度地图api完成了一个例子. API地址:http://developer.baidu.com/map/jsdemo. ...

随机推荐

  1. Uniform and Interpolator Packing的作用

    All of the packing that is done is completely transparent to the user of the OpenGL ES Shading Langu ...

  2. Android 显示网络图片

    本文内容 环境 演示显示网络图片 本文演示 Android 如何显示网络图片.学习一门新的语言,最好办法就先了解该语言的语法和库,以及设计思想,再着手现实一些常用功能,毕竟以后用该语言是要写程序的,而 ...

  3. JavaScript:如何获得 Private、Privileged、Public 和 Static 成员(属性和方法)【翻译+整理】

    本文内容 背景 把我们的对象放在一起 添加一个私有(Private)的属性 添加一个特权(Privileged)的方法 添加一个公共(Public)的属性和方法 添加一个静态(Static)的属性 我 ...

  4. 配置Oracle访问SQL地理数据库

    Oracle访问空间数据 ArcSDE是ArcGIS的空间数据引擎,它是在关系数据库管理系统(RDBMS)中存储和管理多用户空间数据库的通路.以前连接方式有两种,服务连接与直接连接(简称"直 ...

  5. iOS xcodebuile 自动编译打包ipa

    xcodebuild -alltargets clean 首先进入到工程文件所在的目录.比如我的文件某个工程放在(.xcodeproj文件所在的目录) /Users/xxx/xxx 然后ce /Use ...

  6. ZH奶酪:PHP的cURL库

    原文链接:http://coolshell.cn/articles/664.html 参考链接:http://www.runoob.com/php/php-ref-curl.html 使用PHP的cU ...

  7. Go语言类型转换库【github.com/demdxx/gocast】的用法

    一.导入库: go get github.com/demdxx/gocast 二.测试代码: // main.go package main import ( "fmt" &quo ...

  8. POI3.10读取Excel模板填充数据后生成新的Excel文件

    private final DecimalFormat df = new DecimalFormat("#0.00"); public void test(){ String fi ...

  9. Velocity使用总结

    一.载入Velocity依赖包 <dependency> <groupId>org.apache.velocity</groupId> <artifactId ...

  10. nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)

    题目119 题目信息 执行结果 本题排行 讨论区 士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描写叙述 南将军统率着N个士兵,士兵分别编号为1~N,南将军常 ...