一、定时导出Excel并定时发送到邮箱

 

首先我们先分析一下该功能有多少个小的任务点:1.Windows计划服务

2.定时导出Excel定指定路径

3.定时发送邮件包含附件

 

接下来我们一个个解决,

 

1.1发送邮件

 

  1. 现提供一下相关资料:

 

http://www.cnblogs.com/ForEvErNoME/archive/2012/06/05/2529259.html

 

  1. 了解SMTP服务器

 

SMTP具体是指什么?

SMTP的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

  1. 了解常用邮件服务器(例如:QQ邮箱,网易邮箱,新浪邮箱,163邮箱

这里以QQ邮箱为例讲解如何注册邮件服务器:

首先需要注册对应服务提供商免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。

 注册方式:打开QQ上的QQ邮箱,点击设置,选择账号,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,第一个pop3、SMTP服务,点击后面的 开启,会弹出密保验证,根据要求发短信到号码,发送至后会给你一个密码(一定要记住此密码,这是登陆的凭证)

相关参数:QQ邮箱STMP服务器地址为stmp.qq.com,端口为25(别的邮箱自行百度)

到此,注册邮箱服务器就完成了。

 

 

  1. 接下来我们看如何用程序发送邮件

这里可以参考相关资料:

再次,附上自己的源代码,仅供参考

   需要导入命名空间 using System.Net.Mail;

  1. public static void SendEmail()
  2. {
  3. //声明一个Mail对象
  4. MailMessage mymail = new MailMessage();
  5. mymail.Attachments.Add(new Attachment("D:\\mail.txt")); //为该电子邮件添加附件 附件的路径
  6. //如果是多个附件 继续.Add()
  7. mymail.Attachments.Add(new Attachment("C:\\mail.txt"));
  8. //发件人地址
  9. //如是自己,在此输入自己的邮箱
  10. mymail.From = new MailAddress(“发件人邮箱号”)
  11. //收件人地址
  12. mymail.To.Add(new MailAddress(“收件人邮箱号”));
  13. //邮件主题
  14. mymail.Subject = “邮件主题…”;
  15. //邮件标题编码
  16. mymail.SubjectEncoding = System.Text.Encoding.UTF8;
  17. //发送邮件的内容
  18. mymail.Body =“邮件内容…”;
  19. //邮件内容编码
  20. mymail.BodyEncoding = System.Text.Encoding.UTF8;
  21. //抄送到其他邮箱
  22. mymail.CC.Add(new MailAddress(“抄送邮箱号”));
  23. //是否是HTML邮件
  24. mymail.IsBodyHtml = true;
  25. //邮件优先级
  26. mymail.Priority = MailPriority.High;
  27. //创建一个邮件服务器类
  28. SmtpClient myclient = new SmtpClient();
  29. myclient.Host = "SMTP.qq.com"; //qq邮箱服务器地址,不同的邮箱不同
  30. //SMTP服务端口s
  31. myclient.Port = ;
  32. myclient.EnableSsl = true;
  33. //验证登录
  34. myclient.Credentials = new NetworkCredential(EmailKey, PasswordKey);//"@"输入有效的邮箱名, "*"输入有效的密码(此密码就是注册邮箱服务器是发送短信后给的密码)
  35. myclient.Send(mymail);
  36. Console.WriteLine("导出Excel成功!");
  37. }
  38. 然而这种方法有一定的弊端,程序发布后,.cs文件不可编辑,而配置文件可以用记事本的方式打开编辑,所以跟数据库的连接字符串一个性质,我们把相关可变的信息放到连接字符串。
  39. 在配置文件中进行以下操作:
  40. <appSettings> 节点添加以下内容:key value 的形式
  41. <appSettings>
  42. <add key="FromKey" value="727472902@qq.com" /> <!—发件人 -->
  43. <!--如果发给多个人 改这里 NPOI 教程 http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html "-->
  44. <add key="ToAddKey" value="727472902@qq.com" /> <!—收件人 -->
  45. <!—主题 -->
  46. <add key="SubjectKey" value="仓鲜智能便利店" />
  47. <!—内容-->
  48. <add key="BodyKey" value="今日销售报表相关情况" />
  49. <!--抄送人-->
  50. <add key="CCAddKey" value="222222@qq.com" />
  51. <!—邮箱服务器 -->
  52. <add key="EmailKey" value="222****222@qq.com" />
  53. <!—邮箱服务器 密码 -->
  54. <add key="PasswordKey" value="cau****yudhi" />
  55. </appSettings>
  56. 接下来看看后台代码如何使用它:
  57. public static void SendEmail()
  58. {
  59. //声明一个Mail对象
  60. MailMessage mymail = new MailMessage();
  61. mymail.Attachments.Add(new Attachment(ExportExcelSaleDetail())); //为该电子邮件添加附件
  62. mymail.Attachments.Add(new Attachment(ExportExcelStorage()));
  63. //发件人地址
  64. //配置文件的方式读取 在这里读取配置文件中的内容 需要引入
  65. //using System.Configuration;
  66. var FromKey = ConfigurationManager.AppSettings["FromKey"].ToString();
  67. //对应配置文件中的key
  68. var ToAddKey = ConfigurationManager.AppSettings["ToAddKey"].ToString();
  69. var SubjectKey = ConfigurationManager.AppSettings["SubjectKey"].ToString();
  70. var BodyKey = ConfigurationManager.AppSettings["BodyKey"].ToString();
  71. var CCAddKey = ConfigurationManager.AppSettings["CCAddKey"].ToString();
  72. var EmailKey = ConfigurationManager.AppSettings["EmailKey"].ToString();
  73. var PasswordKey = ConfigurationManager.AppSettings["PasswordKey"].ToString();
  74. //----在这里用configuration 那个类 和读取连接字符串似得 读取刚才的key ---
  75. mymail.From = new MailAddress(FromKey);
  76. //收件人地址
  77. mymail.To.Add(new MailAddress(ToAddKey));
  78. //邮件主题
  79. mymail.Subject = SubjectKey;
  80. //邮件标题编码
  81. mymail.SubjectEncoding = System.Text.Encoding.UTF8;
  82. //发送邮件的内容
  83. mymail.Body = BodyKey;
  84. //邮件内容编码
  85. mymail.BodyEncoding = System.Text.Encoding.UTF8;
  86. //抄送到其他邮箱
  87. mymail.CC.Add(new MailAddress(CCAddKey));
  88. //是否是HTML邮件
  89. mymail.IsBodyHtml = true;
  90. //邮件优先级
  91. mymail.Priority = MailPriority.High;
  92. //创建一个邮件服务器类
  93. SmtpClient myclient = new SmtpClient();
  94. myclient.Host = "SMTP.qq.com";
  95. //SMTP服务端口s
  96. myclient.Port = ;
  97. myclient.EnableSsl = true;
  98. //验证登录
  99. myclient.Credentials = new NetworkCredential(EmailKey, PasswordKey);//"@"输入有效的邮件名, "*"输入有效的密码
  100. myclient.Send(mymail);
  101. Console.WriteLine("导出Excel成功!");
  102. }
  103. 再次发送邮件的相关内容就完成了…下面我们学习.net MVC + NPOI 导出Excel

1.2导出Excel到定指路径

1.去官网下载 NPOI相关dll文件:http://npoi.codeplex.com/downloads/get/1572743

2.在项目中添加引用

把Net40文件夹下的NPOI.Dll文件复制到自己的项目中的相关文件夹下,添加引用,浏览,找到刚刚的NPOI.Dll文件,确定

  1. 下面直接上代码:
  2. public FileResult ExportExcel(string wareName, string date1, string date2)
  3. { //创建一个工作簿
  4. NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
  5. //添加一个sheet //创建一个页
  6. NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
  7. //设置单元格 的宽高
  8. sheet1.DefaultColumnWidth = * ; //宽度
  9. sheet1.DefaultRowHeightInPoints = ; //高度
  10. //创建一行
  11. IRow row = sheet1.CreateRow();
  12. //创建一列
  13. ICell cell = row.CreateCell();
  14. ICellStyle cellStyle = book.CreateCellStyle();////创建样式对象
  15. IFont font = book.CreateFont(); //创建一个字体样式对象
  16. font.FontName = "方正舒体"; //和excel里面的字体对应
  17. font.FontHeightInPoints = ;//字体大小
  18. font.Boldweight = short.MaxValue;//字体加粗
  19. cellStyle.SetFont(font); //将字体样式赋给样式对象
  20. cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直对齐
  21. cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平对齐
  22. cell.CellStyle = cellStyle; //把样式赋给单元格
  23. //给sheet1添加第一行的头部标题
  24. NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow();
  25. row1.CreateCell().SetCellValue("商品编号");
  26. row1.CreateCell().SetCellValue("商品名称");
  27. row1.CreateCell().SetCellValue("销售数量");
  28. row1.CreateCell().SetCellValue("商品售价");
  29. row1.CreateCell().SetCellValue("出售总金额");
  30. //将数据逐步写入sheet1各个行
  31. for (int i = ; i < listSale.Count; i++)
  32. {
  33. NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
  34. //创建单元格并设置它的值 ID
  35. rowtemp.CreateCell().SetCellValue(listSale[i].waresCode);
  36. rowtemp.CreateCell().SetCellValue(listSale[i].waresName);
  37. rowtemp.CreateCell().SetCellValue(listSale[i].saleNum);
  38. rowtemp.CreateCell().SetCellValue(listSale[i].waresPrice.ToString());
  39. rowtemp.CreateCell().SetCellValue(listSale[i].saleMoney.ToString());
  40. }
  41. // 写入到客户端
  42. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  43. book.Write(ms);
  44. ms.Seek(, SeekOrigin.Begin);
  45. string a = DateTime.Now.ToString("yyyyMMddHHmmssffff");//这个路径 有 :等符号,路径不支持
  46. //这里是导出到指定的路径
  47. string PPath = @"C:\Users\Administrator\Desktop\新建文件夹 (2)\Yuan\Manager\TestWinPlane\Excel\" + a + "商品销售明细报表.xls";
  48. using (FileStream fs = new FileStream(PPath, FileMode.Create, FileAccess.Write))
  49. {
  50. byte[] datab = ms.ToArray();
  51. fs.Write(datab, , datab.Length);
  52. fs.Flush();
  53. }
  54. ms.Close();
  55. ms.Dispose();
  56. return File(ms, "application/vnd.ms-excel", a + "销售明细统计.xls");
  57. }
  58. }

1.3 定时计划任务

1.新建项目à 创建控制台应用程序

把定时导出跟定时发送邮件的代码写在这里面:(下面直接上代码)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Manager.BLL;
  7. using NPOI.SS.UserModel;
  8. using System.IO;
  9. using System.Linq.Expressions;
  10. using System.Web;
  11. using System.Web.Mvc;
  12. using Manager;
  13. using System.Net;
  14. using System.Net.Mail;
  15. using System.Configuration;
  16. using System.Diagnostics;
  17.  
  18. namespace TestWinPlane
  19. {
  20. public class Program
  21. {
  22.  
  23. public static BaseBll<usersorder> bllorder
  24. {
  25. get
  26. {
  27. return new UsersOrderBll();
  28. }
  29. }
  30. static Wares2Bll wareBll = new Wares2Bll();
  31. public static UserBll userbll = new UserBll();
  32. public static void Main(string[] args)
  33. {
  34. //这个里面写你发送邮件的代码 让 win计划去执行他
  35. Console.WriteLine("发送邮件!!");
  36. ExportExcelSaleDetail();
  37. ExportExcelStorage();
  38. SendEmail();
  39. //DeleteIO();
  40. }
  41. //当前货架商品统计
  42. public static Manager.BLL.BaseBll2<wares> bll
  43. {
  44. get
  45. {
  46. return new Wares2Bll();
  47. }
  48. }
  49.  
  50. public class ListSalePro
  51. {
  52. public string waresCode { get; set; }
  53. public string waresName { get; set; }
  54. public decimal waresPrice { get; set; } //单价
  55. public decimal saleMoney { get; set; } // 出售总金额
  56. public int saleNum { get; set; } //出售数量
  57. public decimal buyonePrice;
  58. public decimal buyMoney;
  59. public decimal ProfitMoney;
  60. }
  61. public class ListWare
  62. {
  63. public string waresCode { get; set; }
  64. public string waresName { get; set; }
  65. public long saleNum { get; set; }
  66.  
  67. }
  68. static string a = DateTime.Now.ToString("yyyyMMddHHmm");//这个路径 有 :等符号,路径不支持
  69.  
  70. static string pathUnchange = @"C:\Excel\" + a; //导出的Excel 要存放的路径
  71.  
  72. static string ExportExcelSaleDetailPath = "";//商品销售明细报表路径
  73.  
  74. static string ExportExcelStoragePath = "";//货架上商品统计报表路径
  75.  
  76. static OrderDetailsBll orderDetailBll = new OrderDetailsBll();
  77. /// <summary>
  78. /// 当前货架商品统计报表
  79. /// </summary>
  80. /// <returns></returns>
  81. public static string ExportExcelStorage()
  82. {
  83. // 1.先筛选出 有效的商品 == 1 ? "有效" : "已下架"
  84. Expression<Func<wares, bool>> condition1 = x => x.validstatus == ;
  85. var listCode = bll.Search2(condition1).Select(x => new { x.waresCode, x.waresName, x.waresActual, x.waresBid, x.waresPrice, x.waresSum, x.waresSpec, x.waresUnit, x.validstatus , x.waresWarning }).ToList();
  86. //创建一个工作簿
  87. NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
  88. //添加一个sheet //创建一个页
  89. NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
  90. //设置单元格 的宽高
  91. sheet1.DefaultColumnWidth = * ; //宽度
  92. sheet1.DefaultRowHeightInPoints = ; //高度
  93. //创建一行
  94. IRow row = sheet1.CreateRow();
  95. //创建一列
  96. ICell cell = row.CreateCell();
  97. ICellStyle cellStyle = book.CreateCellStyle();////创建样式对象
  98. IFont font = book.CreateFont(); //创建一个字体样式对象
  99. font.FontName = "方正舒体"; //和excel里面的字体对应
  100. font.FontHeightInPoints = ;//字体大小
  101. font.Boldweight = short.MaxValue;//字体加粗
  102. cellStyle.SetFont(font); //将字体样式赋给样式对象
  103. //设置单元格的样式:水平对齐居中
  104. cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直对齐
  105. cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平对齐 这两个在这里不起作用
  106. cell.CellStyle = cellStyle; //把样式赋给单元格
  107. //给sheet1添加第一行的头部标题 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
  108. row1.CreateCell().SetCellValue("商品编号");
  109. row1.CreateCell().SetCellValue("商品名称");
  110. row1.CreateCell().SetCellValue("商品售价");
  111. row1.CreateCell().SetCellValue("商品进价");
  112. row1.CreateCell().SetCellValue("商品单位");
  113. row1.CreateCell().SetCellValue("商品规格");
  114. row1.CreateCell().SetCellValue("货架承载量 ");
  115. row1.CreateCell().SetCellValue("商品预警值");
  116. row1.CreateCell().SetCellValue("当前货架商品数量 ");
  117. // row1.CreateCell(9).SetCellValue("有效标志 ");
  118. //将数据逐步写入sheet1各个行
  119. for (int i = ; i < listCode.Count; i++)
  120. {
  121. NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
  122. //创建单元格并设置它的值 ID
  123. rowtemp.CreateCell().SetCellValue(listCode[i].waresCode);
  124. rowtemp.CreateCell().SetCellValue(listCode[i].waresName);
  125. rowtemp.CreateCell().SetCellValue(listCode[i].waresPrice.ToString());
  126. rowtemp.CreateCell().SetCellValue(listCode[i].waresBid.ToString());
  127. rowtemp.CreateCell().SetCellValue(listCode[i].waresUnit);
  128. rowtemp.CreateCell().SetCellValue(listCode[i].waresSpec);
  129. rowtemp.CreateCell().SetCellValue(listCode[i].waresSum.ToString());
  130. rowtemp.CreateCell().SetCellValue(listCode[i].waresWarning.ToString());
  131. rowtemp.CreateCell().SetCellValue(listCode[i].waresActual.ToString());
  132. // rowtemp.CreateCell(9).SetCellValue(listCode[i].validstatus==1?"有效":"已下架");
  133. }
  134. // 写入到客户端
  135. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  136. book.Write(ms);
  137. ms.Seek(, SeekOrigin.Begin);
  138. string completePath = pathUnchange + "当前货架商品报表.xls";
  139.  
  140. using (FileStream fs = new FileStream(completePath, FileMode.Create, FileAccess.Write))
  141. {
  142. byte[] datab = ms.ToArray();
  143. fs.Write(datab, , datab.Length);
  144. fs.Flush();
  145. fs.Dispose();
  146. }
  147. ms.Close();
  148. ms.Dispose();
  149. ExportExcelStoragePath = completePath;
  150. return ExportExcelStoragePath;
  151. }
  152.  
  153. /// <summary>
  154. ///发送邮件 导入命名空间 using System.Net.Mail;
  155. /// </summary>
  156. public static void SendEmail()
  157. {
  158. //声明一个Mail对象
  159. MailMessage mymail = new MailMessage();
  160. mymail.Attachments.Add(new Attachment(ExportExcelSaleDetailPath)); //为该电子邮件添加附件
  161. mymail.Attachments.Add(new Attachment(ExportExcelStoragePath));
  162. //发件人地址
  163. //如是自己,在此输入自己的邮箱
  164. //配置文件的方式读取
  165. var FromKey = ConfigurationManager.AppSettings["FromKey"].ToString();
  166. var ToAddKey = ConfigurationManager.AppSettings["ToAddKey"].ToString();
  167. var SubjectKey = ConfigurationManager.AppSettings["SubjectKey"].ToString();
  168. var BodyKey = ConfigurationManager.AppSettings["BodyKey"].ToString();
  169. var CCAddKey = ConfigurationManager.AppSettings["CCAddKey"].ToString();
  170. var EmailKey = ConfigurationManager.AppSettings["EmailKey"].ToString();
  171. var PasswordKey = ConfigurationManager.AppSettings["PasswordKey"].ToString();
  172. //----在这里用configuration 那个类 和读取连接字符串似得 读取刚才的key ---
  173. mymail.From = new MailAddress(FromKey);
  174. //收件人地址
  175. mymail.To.Add(new MailAddress(ToAddKey));
  176. //邮件主题
  177. mymail.Subject = SubjectKey;
  178. //邮件标题编码
  179. mymail.SubjectEncoding = System.Text.Encoding.UTF8;
  180. //发送邮件的内容
  181. mymail.Body = BodyKey;
  182. //邮件内容编码
  183. mymail.BodyEncoding = System.Text.Encoding.UTF8;
  184. //添加附件
  185. //Attachment myfiles = new Attachment(tb_Attachment.PostedFile.FileName);
  186. //mymail.Attachments.Add(myfiles);
  187. //抄送到其他邮箱
  188. mymail.CC.Add(new MailAddress(CCAddKey));
  189. //是否是HTML邮件
  190. mymail.IsBodyHtml = true;
  191. //邮件优先级
  192. mymail.Priority = MailPriority.High;
  193. //创建一个邮件服务器类
  194. SmtpClient myclient = new SmtpClient();
  195. myclient.Host = "SMTP.qq.com";
  196. //SMTP服务端口s
  197. myclient.Port = ;
  198. myclient.EnableSsl = true;
  199. //验证登录
  200. myclient.Credentials = new NetworkCredential(EmailKey, PasswordKey);//"@"输入有效的邮件名, "*"输入有效的密码
  201. myclient.Send(mymail);
  202. Console.WriteLine("导出Excel成功!");
  203. }
  204. }
  205. }

2.代码完成之后,运行看看能不能正常运行,正常之后 就该开始部署Windows计划任务了,

1.打开电脑的控制面板-->选择小图标-->管理工具-->任务计划程序-->新文件夹-->创建任务

2.选择触发器选项卡,点击新建,根据自己的需求选择执行的时间

3.选择操作选项卡,点击下方的新建,点击浏览,选择自己项目下的bin文件夹àDebugà选择自己项项目的.exe文件,下面添加参数 可以忽略,点击确定

4.还有条件 跟 设置选项卡,在这里根据需求自己选择。

到此,定时导出跟发送邮件的相关信息就完成了。

C#/Net定时导出Excel并定时发送到邮箱的更多相关文章

  1. 一、SQL系列之~使用SQL语言导出数据及实现定时导出数据任务

    一般情况下,SQL数据库中带有导入与导出数据的直接按键操作,点击数据表所在的数据库--任务--导出/导入数据,根据导入/导出向导直接将数据导出即可. 但导出的数据格式多为Excel格式,如果需要导出的 ...

  2. MS SQLServer相关自动化程序的问题汇总 (SQLServer每天定时输出EXCEL或xml的格式的问题等 )

    · MS SQLServer相关问题 1. 使用MS SQLServer每天定时输出EXCEL格式的文件,实现每天的Excel报表导出 2. 使用MS SQLServer每天定时输出xml格式的文件, ...

  3. NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头

    虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误: “服务器无法在发送 HTTP 标头之后追加标头” 后来也查询了很多其他同学的文章,都没 ...

  4. 定时导出用户数据(expdp,impdp)

    一 定时导出数据: #!/bin/bash############################################################################### ...

  5. 通过Linux定时任务实现定时轮询数据库及发送Http请求

    通过Linux定时任务实现定时轮询数据库及发送Http请求 概述 有时需要临时增加一个定时任务(需要根据数据库查询结果然后发送HTTP请求),如果在项目中额外增加(Java+Spring+Quartz ...

  6. ROS 5.x自动定时备份并发送到邮箱(实用)

    博主使用ROS已经有很长一段时间了,但经常会忘记备份配置与数据库,加上ROS本身自带的User-Man数据库并不是非常稳定,1年中总会出现1-2次数据丢失的情况.所以费了一定功夫才找到真正可用自动备份 ...

  7. 使用Apache poi来编写导出excel的工具类

    在JavaWeb开发的需求中,我们会经常看到导出excel的功能需求,然后java并没有提供操作office文档的功能,这个时候我们就需要使用额外的组件来帮助我们完成这项功能了. 很高兴Apache基 ...

  8. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  9. PHP导入导出Excel方法

    看到这篇文章的时候,很是惊讶原作者的耐心,虽然我们在平时用的也 有一些,但没有作者列出来的全,写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xm ...

随机推荐

  1. (转)通过 Javacore 诊断线程挂起等性能问题

    原文:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuzy ...

  2. 一道JS面试题引发的血案

    刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时. BI项目组长给我看了一道面试别人的JS面试题. 虽然答对了,但把理由说错了,照样不及格. 话不多说,直接上题: var a = 1; s ...

  3. php -- 配置与安装

    1.php与apache安装路径 2.安装Apache服务 httpd -k install 开启关闭重启服务 http -k start/stop/restart 3.php.ini-develop ...

  4. Shell脚本 | 抓取log文件

    在安卓应用的测试过程中,遇到 Crash 或者 ANR 后,想必大家都会通过 adb logcat 命令来抓取日志定位问题.如果直接使用 logcat 命令的话,默认抓取出的 log 文件包含安卓运行 ...

  5. mysql关于timestamp字段相关内容

    发现5.6和5.7版本的创建表不一致,从5.6导出数据表创建sql文件,然后导入到5.7表会报错,timestamp不能为空 查看的sql_mode mysql5.0以上支持的三种模式 1. ANSI ...

  6. 玩转mongodb(七):索引,速度的引领(全文索引、地理空间索引)

    本篇博文主要介绍MongoDB中一些常用的特殊索引类型,主要包括: 用于简单字符串搜索的全文本索引: 用于球体空间(2dsphere)和二维平面(2d)的地理空间索引. 一.全文索引 MongoDB有 ...

  7. Spring Security 之 Remember-Me (记住我)

    效果:在用户的session(会话)过期或者浏览器关闭后,应用程序仍能记住它.用户可选择是否被记住.(在登录界面选择)   “记住”是什么意思?     就是下次你再访问的时候,直接进入系统,而不需要 ...

  8. 开源方案搭建可离线的精美矢量切片地图服务-6.Mapbox之.pbf字体库

    项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.ht ...

  9. 递推、数位DP解析(以HDU 2089 和 HDU 3555 为例)

    HDU 2089 不要62 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人 ...

  10. oracle中scott/tiger、sys、SYSDBA、system都是什么用

    scott 是个演示用户,是让你学习ORACLE用的 SYSDBA 不是用户,可以认为是个权限,超级权限详细点说吧            超级用户分两种 SYSDBA和SYSOPTSYSOPT 后面3 ...