密码是明文存储的

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. mahout安装

    mahout是hadoop的一种高级应用.运行mahout需要提前安装好hadoop.hadoop的安装网上很多.而且也不复杂,这里不再讲述.这里默认hadoop已经安装完成. 1:下载二进制解压安装 ...

  2. Cognos11第三方权限认证之OpenDJ

      一.安装OpenDJ 安装java环境,配置OPENDJ_JAVA_HOME环境变量指向java,然后傻瓜安装,出现下面的界面则说明安装成功 注意安装的过程中会指定管理用户cn的密码,默认的cn是 ...

  3. (转)SVN服务器搭建和使用(三) 附vs2013 svn插件

    转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html vs 2013 svn插件:http://www.visua ...

  4. 解决IPOD NANO7无法开机

    确定是没电了,按着开关键都没反应,网上求了一招 按住没有反应的ipod nano [开关] + [home] 大概10s钟,开机,然后赶紧充电吧,这哥们进入了深度睡眠模式了!

  5. [Algorithm] Circular buffer

    You run an e-commerce website and want to record the last N order ids in a log. Implement a data str ...

  6. windows系统tomcat日志输出至catalina.out配置说明

    转自:https://blog.csdn.net/liubowin/article/details/48001947 1.修改bin/startup.bat文件 修改前:call "%EXE ...

  7. 线程:主线程、子线程 同步线程、异步线程 单线程、多线程 System.Threading与System.Windows.Threading

    入门-------------------------------------------------------------------------------- 概述与概念    一个C#程序开始 ...

  8. ReactJS.NET 之 Demo 初探

    ReactJS.NET 是专对 .NET 平台开发者设计,让我们不只可以在前端去Render出页面,也可以在Server端去Render页面.开发 ReactJS 可以用一般JS 库,也可以通过类似X ...

  9. 使用SqlBulkCopy类实现导入excel表格

    前言: 上篇博客介绍了SqlBulkCopy类批量操作数据库的相关操作,最后提到了可以使用这个类实现excel文件导入数据库,接下来我做简单介绍. 首先说一下思路: 把excel中的数据读出来并放入到 ...

  10. Linux中最常用的JAVA_HOME配置

    一.配置 更改下面配置中的JAVA_HOME路径为你的路径. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.144-0.b01.el7_ ...