前端Js引用:

  1. <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  2. <script type="text/javascript">
  3. var data = '<%=JsApiirray %>';
  4. data = eval("(" + data + ")");//实例化
  5. wxconfig(data);
  6. </script>
  7. <script>
  8. function wxconfig(data) {
  9. wx.config({
  10. // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  11. debug: false,
  12. // 必填,公众号的唯一标识
  13. appId: data.appId,
  14. // 必填,生成签名的时间戳
  15. timestamp: data.timestamp,
  16. // 必填,生成签名的随机串
  17. nonceStr: data.nonceStr,
  18. // 必填,签名
  19. signature: data.signature,
  20. // 必填,需要使用的JS接口列表
  21. jsApiList: [
  22. 'checkJsApi',
  23. 'onMenuShareTimeline',
  24. 'onMenuShareAppMessage',
  25. 'onMenuShareQQ',
  26. 'onMenuShareWeibo'
  27. ]
  28. });
  29. }
  30. // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  31. wx.ready(function () {
  32. wx.checkJsApi({
  33. jsApiList: [
  34. 'onMenuShareTimeline',
  35. 'onMenuShareAppMessage',
  36. 'onMenuShareQQ',
  37. 'onMenuShareWeibo'
  38. ]
  39. });
  40. var title = "上海长宽神游戏“神龟不掉线”,千万别小看它!";
  41. var des = "我玩过了上海长宽的游戏神作“神龟不掉线”,真的比想象中更难,你快来试试并领取电影红包吧!";
  42. wx.onMenuShareTimeline({
  43. title: title, //分享标题
  44. link: 'http://m.gwbnsh.net.cn/sgbdx/', //分享链接
  45. desc: des, //分享描述
  46. imgUrl: 'http://m.gwbnsh.net.cn/sgbdx/img/logo.png',//分享图片地址
  47. trigger: function (res) {
  48. //alert('用户点击分享到朋友圈');
  49. },
  50. success: function (res) {
  51. $.ajax({
  52. type: "POST",
  53. url: "User.ashx", //处理页的相对地址
  54. data: { isshare: 1 },
  55. async: true,
  56. success: function (data) {
  57. location = "http://m.maizuo.com/act/lucky-package/?__locate=false#!/active/NUxySmNbvQFF";
  58. }
  59. });
  60. },
  61. cancel: function (res) {
  62. //alert('已取消');
  63. }
  64. });
  65. wx.onMenuShareAppMessage({
  66. title: title, //分享标题
  67. link: 'http://m.gwbnsh.net.cn/sgbdx/', //分享链接
  68. desc: des, //分享描述
  69. imgUrl: 'http://m.gwbnsh.net.cn/sgbdx/img/logo.png',//分享图片地址
  70. trigger: function (res) {
  71. //alert('用户点击分享到朋友圈');
  72. },
  73. success: function (res) {
  74. $.ajax({
  75. type: "POST",
  76. url: "User.ashx", //处理页的相对地址
  77. data: { isshare: 1 },
  78. async: true,
  79. success: function (data) {
  80. location = "http://m.maizuo.com/act/lucky-package/?__locate=false#!/active/NUxySmNbvQFF";
  81. }
  82. });
  83. },
  84. cancel: function (res) {
  85. //alert('已取消');
  86. }
  87. });
  88. wx.onMenuShareQQ({
  89. title: title, //分享标题
  90. link: 'http://m.gwbnsh.net.cn/sgbdx/', //分享链接
  91. desc: des, //分享描述
  92. imgUrl: 'http://m.gwbnsh.net.cn/sgbdx/img/logo.png',//分享图片地址
  93. trigger: function (res) {
  94. //alert('用户点击分享到朋友圈');
  95. },
  96. success: function (res) {
  97. $.ajax({
  98. type: "POST",
  99. url: "User.ashx", //处理页的相对地址
  100. data: { isshare: 1 },
  101. async: true,
  102. success: function (data) {
  103. location = "http://m.maizuo.com/act/lucky-package/?__locate=false#!/active/NUxySmNbvQFF";
  104. }
  105. });
  106. },
  107. cancel: function (res) {
  108. //alert('已取消');
  109. }
  110. });
  111. wx.onMenuShareQZone({
  112. title: title, //分享标题
  113. link: 'http://m.gwbnsh.net.cn/sgbdx/', //分享链接
  114. desc: des, //分享描述
  115. imgUrl: 'http://m.gwbnsh.net.cn/sgbdx/img/logo.png',//分享图片地址
  116. trigger: function (res) {
  117. //alert('用户点击分享到朋友圈');
  118. },
  119. success: function (res) {
  120. $.ajax({
  121. type: "POST",
  122. url: "User.ashx", //处理页的相对地址
  123. data: { isshare: 1 },
  124. async: true,
  125. success: function (data) {
  126. location = "http://m.maizuo.com/act/lucky-package/?__locate=false#!/active/NUxySmNbvQFF";
  127. }
  128. });
  129. },
  130. cancel: function (res) {
  131. //alert('已取消');
  132. }
  133. });
  134. wx.error(function (res) {
  135. // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  136. alert("errorMSG:" + res);
  137. });
  138. });
  139. </script>

或者

  1. <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  2. <script type="text/javascript">
  3. var data = '<%=JsApiirray %>';
  4. data = eval("(" + data + ")");//实例化
  5. wxconfig(data);
  6. </script>
  7. <script>
  8. function wxconfig(data) {
  9. wx.config({
  10. // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  11. debug: false,
  12. // 必填,公众号的唯一标识
  13. appId: data.appId,
  14. // 必填,生成签名的时间戳
  15. timestamp: data.timestamp,
  16. // 必填,生成签名的随机串
  17. nonceStr: data.nonceStr,
  18. // 必填,签名
  19. signature: data.signature,
  20. // 必填,需要使用的JS接口列表
  21. jsApiList: [
  22. 'checkJsApi',
  23. 'onMenuShareTimeline',
  24. 'onMenuShareAppMessage',
  25. 'onMenuShareQQ',
  26. 'onMenuShareWeibo'
  27. ]
  28. });
  29. }
  30. /*
  31. * 注意:
  32. * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
  33. * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
  34. * 3. 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/1c97470084b73f8e224fe6d9bab1625b.html
  35. * 如有问题请通过以下渠道反馈:
  36. * 邮箱地址:weixin-open@qq.com
  37. * 邮件主题:【微信JS-SDK反馈】具体问题
  38. * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
  39. *config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  40. */
  41. wx.ready(function () {
  42. wx.checkJsApi({
  43. jsApiList: [
  44. 'onMenuShareTimeline',
  45. 'onMenuShareAppMessage',
  46. 'onMenuShareQQ',
  47. 'onMenuShareWeibo'
  48. ],
  49. success: function (res) {
  50. alert(JSON.stringify(res));
  51. }
  52. });
  53. var shareData = {
  54. title: '标题',
  55. desc: '描述',
  56. link: '链接',
  57. imgUrl: '图片',
  58. trigger: function (res) {
  59. alert('用户点击发送给朋友');
  60. },
  61. success: function (res) {
  62. alert('已分享');
  63. },
  64. cancel: function (res) {
  65. alert('已取消');
  66. },
  67. fail: function (res) {
  68. alert(JSON.stringify(res));
  69. }
  70. };
  71. wx.onMenuShareAppMessage(shareData);
  72. wx.onMenuShareTimeline(shareData);
  73. wx.onMenuShareQQ(shareData);
  74. wx.onMenuShareWeibo(shareData);
  75. });
  76. wx.error(function (res) {
  77. // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  78. alert("errorMSG:" + res);
  79. });
  80. </script>

验证JsAPI权限配置:

  1. #region 验证JsApi权限配置
  2. /// <summary>
  3. /// 获取JsApi权限配置的数组/四个参数
  4. /// </summary>
  5. /// <returns></returns>
  6. public string GetJsApiInfo(string Appid, string Appsecret)
  7. {
  8. string timestamp = CommonMethod.ConvertDateTimeInt(DateTime.Now).ToString();//生成签名的时间戳
  9. string nonceStr = CommonMethod.GetRandCode();//生成签名的随机串
  10. string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.ToString();//当前的地址
  11. string jsapi_ticket = "";
  12. //ticket 缓存7200秒
  13. if (System.Web.HttpContext.Current.Session["jsapi_ticket"] == null)
  14. {
  15. jsapi_ticket = CommonMethod.WebRequestPostOrGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + BasicApi.GetTokenSession(Appid, Appsecret) + "&type=jsapi", "");
  16. System.Web.HttpContext.Current.Session["jsapi_ticket"] = jsapi_ticket;
  17. System.Web.HttpContext.Current.Session.Timeout = ;
  18. }
  19. else
  20. {
  21. jsapi_ticket = System.Web.HttpContext.Current.Session["jsapi_ticket"].ToString();
  22. }
  23. Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(jsapi_ticket);
  24. jsapi_ticket = respDic["ticket"].ToString();//获取ticket
  25. string[] ArrayList = { "jsapi_ticket=" + jsapi_ticket, "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + url };
  26. Array.Sort(ArrayList);
  27. string signature = string.Join("&", ArrayList);
  28. signature = Md5Hash(signature).ToLower();
  29. return "{\"appId\":\"" + Appid + "\", \"timestamp\":" + timestamp + ",\"nonceStr\":\"" + nonceStr + "\",\"signature\":\"" + signature + "\"}";
  30. }
  31. /// <summary>
  32. /// 32位MD5加密
  33. /// </summary>
  34. /// <param name="input"></param>
  35. /// <returns></returns>
  36. private string Md5Hash(string input)
  37. {
  38. MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
  39. byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
  40. StringBuilder sBuilder = new StringBuilder();
  41. for (int i = ; i < data.Length; i++)
  42. {
  43. sBuilder.Append(data[i].ToString("x2"));
  44. }
  45. return sBuilder.ToString();
  46. }
  47.  
  48. #endregion

基础接口BasicApi.cs:

  1. using System.Collections.Generic;
  2. using System.Net;
  3. using System.Text;
  4. using System.Web;
  5. using System.Web.Script.Serialization;
  6. using Newtonsoft.Json.Linq;
  7. using Newtonsoft.Json;
  8. namespace Web
  9. {// <summary>
  10. /// 基础接口
  11. /// </summary>
  12. public class BasicApi
  13. {
  14. public static string SessionAccessToken = "";//access_token缓存 其他接口的通行证
  15.  
  16. public BasicApi() { }
  17.  
  18. #region 获取access_token缓存
  19. public static string GetTokenSession(string AppID, string AppSecret)
  20. {
  21. string TokenSession = "";
  22.  
  23. if (System.Web.HttpContext.Current.Session[SessionAccessToken] == null)
  24. {
  25. TokenSession = AddTokenSession(AppID, AppSecret);
  26. }
  27. else
  28. {
  29. TokenSession = System.Web.HttpContext.Current.Session[SessionAccessToken].ToString();
  30. }
  31.  
  32. return TokenSession;
  33. }
  34. /// <summary>
  35. /// 添加AccessToken缓存
  36. /// </summary>
  37. /// <param name="AppID"></param>
  38. /// <param name="AppSecret"></param>
  39. /// <returns></returns>
  40. public static string AddTokenSession(string AppID, string AppSecret)
  41. {
  42. //获取AccessToken
  43. string AccessToken = GetAccessToken(AppID, AppSecret);
  44. HttpContext.Current.Session[SessionAccessToken] = AccessToken;
  45. HttpContext.Current.Session.Timeout = ;
  46. return AccessToken;
  47. }
  48.  
  49. /// <summary>
  50. /// 获取AccessToken
  51. /// </summary>
  52. /// <param name="AppID"></param>
  53. /// <param name="AppSecret"></param>
  54. /// <returns></returns>
  55. public static string GetAccessToken(string AppID, string AppSecret)
  56. {
  57. JavaScriptSerializer Jss = new JavaScriptSerializer();
  58. string respText = CommonMethod.WebRequestPostOrGet(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret), "");
  59. Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(respText);
  60. string accessToken = respDic["access_token"].ToString();
  61. return accessToken;
  62. }
  63. /// <summary>
  64. /// 用code换取获取用户信息(包括非关注用户的)
  65. /// </summary>
  66. /// <param name="openid"></param>
  67. /// <param name="access_token"></param>
  68. /// <returns></returns>
  69. public static JObject GetUserInfo(string openid, string access_token)
  70. {
  71. JavaScriptSerializer Jss = new JavaScriptSerializer();
  72. string url = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", access_token, openid);
  73. WebClient wc = new WebClient();
  74. byte[] bytes = wc.DownloadData(url);
  75. wc.Encoding = Encoding.UTF8;
  76. string jsonText = Encoding.UTF8.GetString(bytes);
  77. JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
  78. return jo;
  79. }
  80. #endregion
  81. }
  82. }

通用方法CommonMethod.cs:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net;
  5. using System.Web;
  6.  
  7. namespace Web
  8. {
  9. /// <summary>
  10. /// 通用方法类
  11. /// </summary>
  12. public class CommonMethod
  13. {
  14. #region Post/Get提交调用抓取
  15. /// <summary>
  16. /// Post/get 提交调用抓取
  17. /// </summary>
  18. /// <param name="url">提交地址</param>
  19. /// <param name="param">参数</param>
  20. /// <returns>string</returns>
  21. public static string WebRequestPostOrGet(string sUrl, string sParam)
  22. {
  23. byte[] bt = System.Text.Encoding.UTF8.GetBytes(sParam);
  24.  
  25. Uri uriurl = new Uri(sUrl);
  26. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uriurl);//HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + (url.IndexOf("?") > -1 ? "" : "?") + param);
  27. req.Method = "Post";
  28. req.Timeout = * ;
  29. req.ContentType = "application/x-www-form-urlencoded;";
  30. req.ContentLength = bt.Length;
  31.  
  32. using (Stream reqStream = req.GetRequestStream())//using 使用可以释放using段内的内存
  33. {
  34. reqStream.Write(bt, , bt.Length);
  35. reqStream.Flush();
  36. }
  37. try
  38. {
  39. using (WebResponse res = req.GetResponse())
  40. {
  41. //在这里对接收到的页面内容进行处理
  42.  
  43. Stream resStream = res.GetResponseStream();
  44.  
  45. StreamReader resStreamReader = new StreamReader(resStream, System.Text.Encoding.UTF8);
  46.  
  47. string resLine;
  48.  
  49. System.Text.StringBuilder resStringBuilder = new System.Text.StringBuilder();
  50.  
  51. while ((resLine = resStreamReader.ReadLine()) != null)
  52. {
  53. resStringBuilder.Append(resLine + System.Environment.NewLine);
  54. }
  55.  
  56. resStream.Close();
  57. resStreamReader.Close();
  58.  
  59. return resStringBuilder.ToString();
  60. }
  61. }
  62. catch (Exception ex)
  63. {
  64. return ex.Message;//url错误时候回报错
  65. }
  66. }
  67. #endregion Post/Get提交调用抓取
  68.  
  69. #region unix/datatime 时间转换
  70. /// <summary>
  71. /// unix时间转换为datetime
  72. /// </summary>
  73. /// <param name="timeStamp"></param>
  74. /// <returns></returns>
  75. public static DateTime UnixTimeToTime(string timeStamp)
  76. {
  77. DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(, , ));
  78. long lTime = long.Parse(timeStamp + "");
  79. TimeSpan toNow = new TimeSpan(lTime);
  80. return dtStart.Add(toNow);
  81. }
  82.  
  83. /// <summary>
  84. /// datetime转换为unixtime
  85. /// </summary>
  86. /// <param name="time"></param>
  87. /// <returns></returns>
  88. public static int ConvertDateTimeInt(System.DateTime time)
  89. {
  90. System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(, , ));
  91. return (int)(time - startTime).TotalSeconds;
  92. }
  93. #endregion
  94.  
  95. #region 记录bug,以便调试
  96. /// <summary>
  97. /// 记录bug,以便调试
  98. /// </summary>
  99. public static bool WriteTxt(string str)
  100. {
  101. try
  102. {
  103. string LogPath = HttpContext.Current.Server.MapPath("/err_log/");
  104. if (!Directory.Exists(LogPath))
  105. {
  106. Directory.CreateDirectory(LogPath);
  107. }
  108. FileStream FileStream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("/err_log//lwf_" + DateTime.Now.ToLongDateString() + "_.txt"), FileMode.Append);
  109. StreamWriter StreamWriter = new StreamWriter(FileStream);
  110. //开始写入
  111. StreamWriter.WriteLine(str);
  112. //清空缓冲区
  113. StreamWriter.Flush();
  114. //关闭流
  115. StreamWriter.Close();
  116. FileStream.Close();
  117. }
  118. catch (Exception)
  119. {
  120. return false;
  121. }
  122. return true;
  123. }
  124. #endregion
  125.  
  126. #region 生成随机字符
  127. /// <summary>
  128. /// 生成随机字符
  129. /// </summary>
  130. /// <param name="iLength">生成字符串的长度</param>
  131. /// <returns>返回随机字符串</returns>
  132. public static string GetRandCode(int iLength)
  133. {
  134. string sCode = "";
  135. if (iLength == )
  136. {
  137. iLength = ;
  138. }
  139. string codeSerial = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
  140. string[] arr = codeSerial.Split(',');
  141. int randValue = -;
  142. Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
  143. for (int i = ; i < iLength; i++)
  144. {
  145. randValue = rand.Next(, arr.Length - );
  146. sCode += arr[randValue];
  147. }
  148. return sCode;
  149. }
  150. #endregion
  151. }
  152. }

附件为源码:微信分享Demo

.NET微信自定义分享标题、缩略图、超链接及描述的设置方法的更多相关文章

  1. H5微信自定义分享链接(设置标题+简介+图片)

    起源:最近公司在做招募广告的html5页面,然后做出来后,产品提出一个问题,需要分享出去的链接是卡片形式,内容也要自己定义,这下就难到我了,因为是第一次遇到这种需求,果断百度,然而,我就像大家一样,看 ...

  2. .netcore2.1 JS-SDK 从后台获取微信签名,实现自定义分享标题、描述、图片

    最近项目移动端需要实现微信自定义分享功能,包含分享自定义标题.描述等. 首先到公众号的后台,功能设置里面,添加将要被分享的域名,如图 后端签名算法实现 ,参考腾讯开发者文档https://mp.wei ...

  3. ThinkPHP5集成JS-SDK实现微信自定义分享功能

    最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...

  4. Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法

    简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...

  5. 生成二维码、微信自定义分享到朋友圈、ipa不从应用商店安装

    生成二维码网址:http://www.liantu.com/ 微信自定义分享到朋友圈:http://www.cnblogs.com/memor-y/p/6728179.html ipa不从应用商店安装 ...

  6. JSSDK微信自定义分享

    背景:15年之前的微信分享只需要加入一段js就可以实现.后来微信官方全部禁止了.现在的微信分享全部得使用jssdk. 一.分享功能: 在微信内(必须在微信里)打开网站页面,分享给朋友或者分享到朋友圈时 ...

  7. JSSDK微信自定义分享朋友圈

    服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议       ...

  8. H5页面分享微信自定义分享title和img

    前端开发H5 需分享到朋友圈和发给好友,想自定义分享的title和图表还有简短一句话,还需调用微信的api 首先需获取到微信的appId,timestamp,nonceStr,signature 微信 ...

  9. php 微信 自定义分享接口

    <?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appS ...

随机推荐

  1. android 导入自己的生成的jar,老是 could not find class

    最近开始学习android,开发一个小项目,功能很简单,就是从服务器上获取数据,之后显示在手机上.打算把访问服务器的功能打包成一个jar文件.然后android 引入jar包. 在eclipse 里 ...

  2. Windows—JDK安装与环境变量配置

    本文介绍JDK的安装与环境变量配置. 工具/原料 JDK1.8.0_65 WIN7 32bit jdk-8u65-windows-i586.exe 方法/步骤  安装JDK 选择安装目录 安装过程中会 ...

  3. SQL导出excel

    我在SQL 2008R2 里面用下面的命令成功导出excel 文件. EXEC master..xp_cmdshell 'bcp "select * from Car_data.dbo.Ca ...

  4. 使用 IN 的子查询

    通过 IN(或 NOT IN)引入的子查询结果是一列零值或更多值.子查询返回结果之后,外部查询将利用这些结果. 下列查询会找到所有曾出版过商业书籍的出版商的名称. USE pubs SELECT pu ...

  5. PHP 每天的总结(1)

    今天写博客的心情比以往还要糟糕,因为........................(完结). 1.获取某输入框的值,有两中获取方式,GET和POST .前者  没有为顾客的账户安全着想.而后者返之: ...

  6. linux kernel tainted

    日志中会有一些信息: dmesg | grep -i tainted 具体代码可以通过proc看到: cat /proc/sys/kernel/tainted 数字的意义: tainted: Non- ...

  7. vbs常用代码

    在网上查找资料的时候发现好多经典的vbs代码收集起来也为了以后学习. VBS播放音乐 Dim wmp Set wmp = CreateObject("WMPlayer.OCX") ...

  8. [安卓]windows下如何安装Android源码

    本文改写于:http://www.cnblogs.com/skyme/archive/2011/05/14/2046040.html 1.下载并安装git: 在git-scm.com上下载并安装git ...

  9. Redisson-Parent 2.5.0 和 3.0.0 发布

    Redisson-Parent 2.5.0 和 3.0.0 发布了,Redisson 是基于 Redis 服务之上构建的分布式.可伸缩的 Java 数据结构,高级的 Redis 客户端. Rediss ...

  10. Mybatis-动态 SQL

    MyBatis 的强大特性之一便是它的动态 SQL. 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省 ...