毕业设计上线啦!----跳蚤部落与基于Comet的WebIM系统开发

  我不清楚把我的毕业设计的东西放上来之后,毕业论文答辩的时候会不会说我是在网上抄袭的,不过我还是果断的发上来与大家分享了!!呵呵,请大家支持!高手就绕道吧!

  现在已经放到公网上,并且开始使用,兼容IE6以上各IE浏览器,Chrome,Firefox等。欢迎大家注册账号测试,注意如有使用特殊字符进行测试的,请测试完以后即使删除相关内容,以免给网站带来不美观的影响。谢谢!

  这是访问地址:http://www.yestz.com    由于iis连接数有限制,可能会出现问题,如遇到问题请关闭页面,稍后再试,谢谢。

  其中涉及到的有:Server-Push(Comet),smtp,jQuery,jQueryUI,XHTML+CSS,Json,Jcrop,图形图像处理技术,Ajax,ADO.NET,kindeditor

开发工具包括:Visual Studio 2010、SqlServer 208、Notepad++、Editplus、SVN版本控制、Chrome、Firefox、IEtest、flashFXP、IIS6.0、IIS7.5

整个项目的流程图如下:

在这里与大家分享几个部分源代码:自己封装的类库与jQuery方法:

取出html标签的类:点击这里下载

/** 陈盛泰 2011.10.18,写于韶关学院,图形图像处理的类*/
using System;
using System.Collections.Generic;
using System.Web;
using System.Text.RegularExpressions;/// <summary>
///DeleteHtmlElement 的摘要说明
/// </summary>
public class DeleteHtmlElement
{public DeleteHtmlElement(){////TODO: 在此处添加构造函数逻辑//}public static string RemoveHtmlTags(string html){html = Regex.Replace(html, "<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);html = Regex.Replace(html, "<[^>]*>", "", RegexOptions.IgnoreCase);return html;}
}

  

图像处理的类:点击这里下载

/** 陈盛泰 2011.10.15,写于韶关学院,图形图像处理的类*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Drawing.Drawing2D;/// <summary>
///ImageHelper 的摘要说明
/// </summary>
public class ImageHelper
{public ImageHelper(){////TODO: 在此处添加构造函数逻辑//}#region 生成略缩图/// <summary>/// 生成略缩图/// </summary>/// <param name="fullpath">图片保存的路径,如:Server.MapPath("~/uploadFile/pro_picture/")</param>/// <param name="filename">文件名</param>/// <param name="saveWidth">保存的宽度</param>/// <param name="saveHeight">保存的高度</param>public static void ThumbnailImageAndSave(string fullpath, string filename, int saveWidth, int saveHeight){//开始处理图像,将图像缩小到saveWidth*saveHeightusing (System.Drawing.Image originalImage = System.Drawing.Image.FromFile(fullpath + filename)){int originalHeight = originalImage.Height;int originalWidth = originalImage.Width;using (System.Drawing.Image bitmap = new Bitmap(saveWidth, saveHeight)){using (Graphics graphic = Graphics.FromImage(bitmap)){graphic.Clear(Color.White);graphic.SmoothingMode = SmoothingMode.AntiAlias;graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;graphic.DrawImage(originalImage, new Rectangle(0, 0, saveWidth, saveHeight), new Rectangle(0, 0, originalWidth, originalHeight), GraphicsUnit.Pixel);//保存略缩图bitmap.Save(fullpath + "small_" + filename, originalImage.RawFormat);}}}}#endregion#region ThumbnailImageAndSave重载方法,将图片名加上"small_"保存/// <summary>/// ThumbnailImageAndSave重载方法,将图片名加上"small_"保存/// </summary>/// <param name="fullpath"></param>/// <param name="filename"></param>public static void ThumbnailImageAndSave(string fullpath, string filename){//开始处理图像,将图像缩小到saveWidth*saveHeightusing (System.Drawing.Image originalImage = System.Drawing.Image.FromFile(fullpath + filename)){int originalHeight = originalImage.Height;int originalWidth = originalImage.Width;using (System.Drawing.Image bitmap = new Bitmap(originalWidth, originalHeight)){using (Graphics graphic = Graphics.FromImage(bitmap)){graphic.Clear(Color.White);graphic.SmoothingMode = SmoothingMode.AntiAlias;graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;graphic.DrawImage(originalImage, new Rectangle(0, 0, originalWidth, originalHeight), new Rectangle(0, 0, originalWidth, originalHeight), GraphicsUnit.Pixel);//保存略缩图bitmap.Save(fullpath + "small_" + filename, originalImage.RawFormat);}}}}#endregion#region 剪切图片file,保存好已删除的图片后,并将原图片删除/// <summary>/// 剪切图片file,保存好已删除的图片后,并将原图片删除/// </summary>/// <param name="file">文件路径</param>/// <param name="X">起点X坐标</param>/// <param name="Y">起点Y坐标</param>/// <param name="Width">原图片剪切的宽度Width</param>/// <param name="Height">原图片剪切的高度Height</param>/// <param name="SaveWidth">要保存的宽度</param>/// <param name="SaveHeight">要保存的高度</param>public static void CutImageAndSave(string file, int X, int Y, int Width, int Height, int SaveWidth, int SaveHeight){using (Bitmap OriginalImage = new Bitmap(file)){using (Bitmap bmp = new Bitmap(SaveWidth, SaveHeight, OriginalImage.PixelFormat)){bmp.SetResolution(OriginalImage.HorizontalResolution, OriginalImage.VerticalResolution);using (Graphics Graphic = Graphics.FromImage(bmp)){Graphic.SmoothingMode = SmoothingMode.AntiAlias;Graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;Graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;Graphic.DrawImage(OriginalImage, new Rectangle(0, 0, SaveWidth, SaveHeight), X, Y, Width, Height,GraphicsUnit.Pixel);//保存已剪切的图片string value = file.Substring(file.LastIndexOf('.'));bmp.Save(file.Replace(value, "_cut" + value));}}}//删除用来剪切的图片File.Delete(file);}#endregion}

  

生成随机数的类,用于验证码:点击这里下载

/** 陈盛泰 2011.10.18,写于韶关学院,图形图像处理的类*/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// randomCode 的摘要说明
/// </summary>
public class randomCode
{public randomCode(){//// TODO: 在此处添加构造函数逻辑//}/// <summary>/// 验证码/// </summary>/// <param name="n">验证码的个数</param>/// <returns>返回生成的随机数</returns>public string RandomNum(int n) //{string strchar = "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";string[] VcArray = strchar.Split(',');string VNum = "";                    //int temp = -1;                       //记录上次随机数值,尽量避免产生几个一样的随机数//采用一个简单的算法以保证生成随机数的不同Random rand = new Random();for (int i = 1; i < n + 1; i++){if (temp != -1){rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));}int t = rand.Next(61);if (temp != -1 && temp == t){return RandomNum(n);}temp = t;VNum += VcArray[t];}return VNum;//返回生成的随机数}
}

  

使用smtp发送邮件的类(推荐使用Jmail比较稳定):点击这里下载

/*创建人:阿泰*创建时间:2011-10-15*说明:通过smtp协议发送邮件*/
using System;
using System.Collections.Generic;
using System.Web;
using System.Net.Mail;
using System.Net;/// <summary>
///EmailHelper 的摘要说明
/// </summary>
public class EmailHelper
{public EmailHelper(){////TODO: 在此处添加构造函数逻辑//}/// <summary>/// 发送邮件/// </summary>/// <param name="toAddress">要发送到的邮箱地址</param>/// <param name="strSubject">邮件主题</param>/// <param name="strBody">邮件内容</param>/// <param name="isBodyHtml">是否显示html格式的文本,true为html格式,false则为text格式</param>/// <returns>发送成功返回Success,失败返回错误信息</returns>public static string SendMail(string toAddress, string strSubject, string strBody, bool isBodyHtml){try{MailAddress fromAddress = new MailAddress("tiaozaobuluo@126.com", "跳蚤部落");MailAddress to = new MailAddress(toAddress);MailMessage msg = new MailMessage();msg.From = fromAddress;msg.To.Add(toAddress);//邮件主题msg.Subject = strSubject;msg.IsBodyHtml = isBodyHtml;msg.Body = strBody;SmtpClient smtpClient = new SmtpClient();smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;smtpClient.Credentials = new NetworkCredential("tiaozaobuluo@126.com", "邮箱密码");smtpClient.Port = 25;smtpClient.Host = "smtp.126.com";smtpClient.Send(msg);return "Success";}catch (Exception ex){return ("error:" + ex.Message);}}
}

  

别人的Json序列化类:点击这里下载

//-----------------------------------------------------------------------// Coding by: AC     Created date: 2010-8-5 13:10:09
// Description:   
// Others desc:     
// Alter History:
//     [By]           [Date]           [Version]      [Purpose]
//     AC   2010-8-5 13:10:09      1.0           Create
//----------------------------------------------------------------using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;
using System.Text;
using System.Data;/// <summary>/// JSON序列器/// </summary>
public class JSONSerializer
{private readonly StringBuilder _output = new StringBuilder();public static string ToJSON(object obj){return new JSONSerializer().ConvertToJSON(obj);}private string ConvertToJSON(object obj){WriteValue(obj);return _output.ToString();}private void WriteValue(object obj){if (obj == null)_output.Append("null");else if (obj is sbyte || obj is byte || obj is short || obj is ushort || obj is int || obj is uint || obj is long || obj is ulong || obj is decimal || obj is double || obj is float)_output.Append(Convert.ToString(obj, NumberFormatInfo.InvariantInfo));else if (obj is bool)_output.Append(obj.ToString().ToLower());else if (obj is char || obj is Enum || obj is Guid)WriteString("" + obj);else if (obj is DateTime)WriteString(((DateTime)obj).ToString("yyyy-MM-dd"));else if (obj is string)WriteString((string)obj);else if (obj is IDictionary)WriteDictionary((IDictionary)obj);else if (obj is Array || obj is IList || obj is ICollection)WriteArray((IEnumerable)obj);else if (obj is DataTable)WriteDataTable((DataTable)obj);elseWriteObject(obj);}private void WriteObject(object obj){_output.Append("{ ");bool pendingSeparator = false;foreach (FieldInfo field in obj.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance)){if (pendingSeparator)_output.Append(" , ");WritePair(field.Name, field.GetValue(obj));pendingSeparator = true;}foreach (PropertyInfo property in obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)){if (!property.CanRead)continue;if (pendingSeparator)_output.Append(" , ");WritePair(property.Name, property.GetValue(obj, null));pendingSeparator = true;}_output.Append(" }");}private void WritePair(string name, object value){WriteString(name);_output.Append(" : ");WriteValue(value);}private void WriteArray(IEnumerable array){_output.Append("[ ");bool pendingSeperator = false;foreach (object obj in array){if (pendingSeperator)_output.Append(',');WriteValue(obj);pendingSeperator = true;}_output.Append(" ]");}private void WriteDictionary(IDictionary dic){_output.Append("{ ");bool pendingSeparator = false;foreach (DictionaryEntry entry in dic){if (pendingSeparator)_output.Append(" , ");WritePair(entry.Key.ToString(), entry.Value);pendingSeparator = true;}_output.Append(" }");}private void WriteString(string s){_output.Append('\"');foreach (char c in s){switch (c){case '\t': _output.Append("\\t"); break;case '\r': _output.Append("\\r"); break;case '\n': _output.Append("\\n"); break;case '"':case '\\': _output.Append("\\" + c); break;default:{if (c >= ' ' && c < 128)_output.Append(c);else_output.Append("\\u" + ((int)c).ToString("X4"));}break;}}_output.Append('\"');}private void WriteDataTable(DataTable table){List<Hashtable> data = new List<Hashtable>();foreach (DataRow row in table.Rows){Hashtable dic = new Hashtable();foreach (DataColumn c in table.Columns){dic.Add(c.ColumnName, row[c]);}data.Add(dic);}WriteValue(data);}
}

  

javascript脚本注册类:点击这里下载

/*创建人:陈盛泰,阿泰*创建时间:2011-7-15*说明:弹出对话框的类*/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;/// <summary>
///弹出对话框的类
/// </summary>
public class Jscript
{public Jscript(){////TODO: 在此处添加构造函数逻辑//}//弹出对话框/// <summary>/// 弹出对话框/// </summary>/// <param name="msg">输入弹出内容</param>/// <param name="page">指在那个页面,一般用this,表示当前页</param>public static void AlertMsg(string msg, Page page){string js = @"<script>alert('" + msg + "')</script>";page.ClientScript.RegisterStartupScript(page.GetType(), "提示 ", js);}//弹出对话框并转向其他页面/// <summary>/// 弹出对话框并转向其他页面/// </summary>/// <param name="msg">输入弹出内容</param>/// <param name="url">转向网页路径</param>/// <param name="page">指在那个页面,一般用this,表示当前页</param>public static void AlertMsg(string msg, string url, Page page){string js = @"<script>alert('" + msg + "');location.href='" + url + "'</script>";page.ClientScript.RegisterStartupScript(page.GetType(), "提示 ", js);}//跳转页面/// <summary>/// 跳转页面/// </summary>/// <param name="url">转向网页路径</param>/// <param name="page">指在那个页面,一般用this,表示当前页</param>public static void windowOpen(string url, Page page){string js = @"<script>window.open('" + url + "','_blank');</script>";page.ClientScript.RegisterStartupScript(page.GetType(), "", js);}//弹出提示对话框后关闭窗口/// <summary>/// 弹出提示对话框后关闭窗口/// </summary>/// <param name="msg">提示文字</param>/// <param name="page">指在那个页面,一般用this,表示当前页</param>public static void windowClose(string msg, Page page){string js = @"<script>alert('" + msg + "');window.close();</script>";page.ClientScript.RegisterStartupScript(page.GetType(), "", js);}/// <summary>/// 调用js客户端函数/// </summary>/// <param name="functionName">函数名</param>/// <param name="page">指在那个页面,一般用this,表示当前页</param>public static void ClientFunction(string functionName, Page page){//阿泰 2011.10.11 加入 拦截片段,//防止  页面因 UI 库的重复渲染 引起脚本重复执行。string interruptedScript = @"if(window.__yltlClientScriptRegistKey == null ||window.__yltlClientScriptRegistKey == undefined ||window.__yltlClientScriptRegistKey !='js') {  " +"window.__yltlClientScriptRegistKey = 'js' ;\r\n" +functionName + "();\r\n}";string js = @"<script>" + interruptedScript + "</script>";page.ClientScript.RegisterStartupScript(page.GetType(), "js ", js);}
}

  

Forms身份验证数据读写类:点击这里下载

/*创建人:阿泰*创建时间:2011-9-15*说明:获取、写入forms身份验证所存储的票据,为Forms身份验证登录所用(VS2010版本)*/
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;/// <summary>
///FormsData 的摘要说明
/// </summary>
public class FormsData
{public FormsData(){////TODO: 在此处添加构造函数逻辑//}/// <summary>/// 获取登录用户的权限/// </summary>/// <param name="UserName">用户名</param>/// <param name="IsAdmin">否0,是1</param>/// <param name="IsSuperAdmin">否0,是1</param>/// <returns>返回含有权限的用户登录的票据</returns>public static string GetUserData(string UserName,string IsAdmin,string IsSuperAdmin) {string userData = UserName + "," + IsAdmin+","+IsSuperAdmin;return userData;}/// <summary>/// 获取forms身份验证所存储的票据,未登录则放回空/// </summary>/// <param name="i">一般情况下,0为用户名,1为是否普通管理员,2为是否超级管理员</param>/// <returns>返回forms身份验证票据</returns>public static string GetFormsTicket(int i){if (HttpContext.Current.Request.IsAuthenticated){FormsIdentity identity = (FormsIdentity)HttpContext.Current.User.Identity;string[] userData = identity.Ticket.UserData.Split(',');return userData[i].ToString();}else{return "";}}/// <summary>/// 写入forms身份验证所存储的票据,一般为登录所用/// </summary>/// <param name="username">用户名</param>/// <param name="IsAdmin">是否管理员,是则为1,否则为0</param>/// <param name="IsSuperAdmin">是否超级管理员,是则为1,否则为0</param>/// <param name="expirationDay">票据的期限,以“天”为单位</param>public static void SetFormsTicket(string username, string IsAdmin, string IsSuperAdmin, int expirationDay){//获取票据string userData = GetUserData(username,IsAdmin,IsSuperAdmin);FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddDays(expirationDay), true, userData);string authTicket = FormsAuthentication.Encrypt(ticket);HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);cookie.Expires = ticket.Expiration;HttpContext.Current.Response.SetCookie(cookie);}/// <summary>/// 写入forms身份验证所存储的票据,一般为登录所用(重载版本,无权限控制的登录)/// </summary>/// <param name="username">用户名</param>/// <param name="expirationDay">票据的期限,以“天”为单位</param>public static void SetFormsTicket(string username, int expirationDay){SetFormsTicket(username, "0", "0", expirationDay);}
}

  

 自定义jQuery方法:widgetUI 1.0   点击这里下载

/*
* widgetUI 1.0
* Copyright (c) 2011 陈盛泰,阿泰  http://www.cnblogs.com/chenshengtai
* Date: 2011-11-1
* 在FireFox、Chrome、IE8、IE7、IE6中通过测试
*《 使用说明》
* 1、基于jQuery的函数封装,需要在页面中引入jQuery以及jQueryUI样式。
* 2、使用widgetUI可以方便地将表格提示使用体验,给body加上蒙层,弹出当前对话框,若不定义width、height,默认值为300px;
* 3、若再iframe中使用,需要设置iframe值为其id的值,不是很灵活,需要将内部的触发函数写在该页面的父页面上。
* 4、该div中事件应该这样处理,
如:$(".testbtn").click(function () {alert("成功!");});
修改成:$(".testbtn").live("click",function () {alert("成功!");});
*/
(function ($) {$.fn.widgetUI = function (data) {this.each(function () {var tags = $(this);//若不定义width或者height,默认值为300px;var data_width, data_height, _body = "body", _top = "150px", iframe_top = 0;if (data) {if (data.width) {data_width = data.width;} else {data_width = "300px";}if (data.height) {data_height = data.height;} else {data_height = "300px";}if (data.top) {_top = data.top;}if (data.iframe) {_body = window.parent.document.body;iframe_top = $(_body).find("iframe:[id='" + data.iframe + "']").offset().top;_top = _top.substring(0, _top.indexOf("px"));_top = (parseInt(_top) + parseInt(iframe_top)) + "px";}} else {data_width = "300px";data_height = "300px";}//加入蒙层var body_width = $(_body).css("width");var body_height = $(_body).css("height");$(_body).append("<div id='cst_ui_overlay' style='width:" + body_width + ";height:" + body_height + ";z-index:994;opacity:0.8;' class='ui-widget-overlay' ></div>");$(_body).append("<div id='cst_ui_overlay_all' style='position:absolute;top:0px;left:0px;width:" + body_width + ";height:" + body_height + ";z-index:995;' ></div>");//加入阴影_top = _top.substring(0, _top.indexOf("px"));var shadow_init_top = ($(window).scrollTop() + _top).toString() + "px";$(_body).find("div:[id='cst_ui_overlay']").append("<div id='cst_ui_shadow' style='width: " + data_width + ";height:" + data_height + "; margin:0px auto;padding: 0px;z-index:996;position:relative;top:" + shadow_init_top + ";' class='ui-widget-shadow' ></div>");//加入展示层var shadow_left = ($(_body).find("div:[id='cst_ui_shadow']").offset().left - 10).toString() + "px";var shadow_top = ($(_body).find("div:[id='cst_ui_shadow']").offset().top - 10).toString() + "px";$(_body).find("div:[id='cst_ui_overlay_all']").append("<div style='background:White;width: " + data_width + ";height:" + data_height + ";position:absolute; left:" + shadow_left + ";top:" + shadow_top + ";z-index:997;overflow:hidden;' class='ui-widget-content'>" +"<div style='height:20px;position:relative;padding:5px;background-color:#EEE;'>" +"<div style='float:left;color:Black;font:bold 15px 微软雅黑;'>" + $(tags).attr("title") + "</div>" +"<div style='width:17px;float:right;' >" +"<span class='ui-icon ui-icon-closethick' id='cst_close' ></span>" +"</div>" +"</div>" +"<div style='margin:10px;'id='cst_inner_html'>" + $(tags).html() + "</div>" +"</div>");$(tags).html("");//加载一次,关闭后再打开则不加载if (window.__yltlClientScriptRegistKey == null || window.__yltlClientScriptRegistKey == undefined || window.__yltlClientScriptRegistKey != 'widgetUI') {window.__yltlClientScriptRegistKey = 'widgetUI';$(_body).find("span:[id='cst_close']").live("click", function () {$(tags).html($(_body).find("div:[id='cst_inner_html']").html());$(_body).find("div:[id='cst_ui_overlay']").html("").attr("style", "display:none;").attr("class", "").attr("id", "");$(_body).find("div:[id='cst_ui_overlay_all']").html("").attr("style", "display:none;").attr("id", "");});}});};
})(jQuery);

  

效果图如下:

 

顺便把WebIM即时通信部分的截图发一下,呵呵

 

就先写这么多吧,等毕业论文答辩结束以后再与大家分享源代码,多谢支持啊!呵呵~~~

 

 技术交流请直接加我QQ:1039189349

转载于:https://www.cnblogs.com/chenshengtai/archive/2011/12/10/2283267.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj2032Square Carpets(IDA* + dancing links)

题目请戳这里 题目大意:给一个H行W列的01矩阵,求最少用多少个正方形框住所有的1. 题目分析:又是一个红果果的重复覆盖模型.DLX搞之! 枚举矩阵所有的子正方形,全1的话建图.判断全1的时候,用了一个递推,dp[i][j][w][h]表示左上角(i,j)的位置开始长h宽w的矩形中1的个数,这样后面可…

具有Overlord的WildFly 8.1中的API管理

昨天&#xff0c;我简要介绍了霸王项目家族。 今天该试驾了。 API管理子项目两天前发布了1.0.0.Alpha1&#xff0c;并根据18个月的路线图介绍了第一组功能。 APIMan到底是什么&#xff1f; 它是一个API管理系统&#xff0c;可以嵌入现有框架或应用程序中&#xff0c;甚至可以作…

设计模式学习笔记-代理模式

1. 概述 为其它对象提供一种代理以控制对这个对象的访问。 解决的问题&#xff1a;如果直接访问对象比较困难&#xff0c;或直接访问会给使用者或系统带来一系列问题。这样对于客户端&#xff08;调用者&#xff09;来说&#xff0c;就不需要直接与真实对象进行交互&#xff0c…

Tomcat配置自签名https

从JDK中找到keytool.exe&#xff0c;随便复制到一个方便的目录&#xff0c;在命令行中进入这个目录。 第一步&#xff1a;为服务器生成证书 tomcat.keystore&#xff0c;名字就是域名&#xff0c;其他的看着写。 keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650…

MFC学习之路之多媒体 --(1) DirectShow

可以说整个Windows的多媒体编程都是以DirectShow为基础&#xff0c;那好&#xff0c;来吧&#xff0c;我们直接看DirectShow的一段基础代码。 bool Mp3::Load(LPCWSTR szFile) {Cleanup();ready false;if (SUCCEEDED(CoCreateInstance( CLSID_FilterGraph,NULL,CLSCTX_INPROC_…

游戏大厅 从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1

上一篇我们大致的了解了几种聊天室的行为模式 最简单明了的推模式 几乎不需要任何多余的语言来描述它的实现 这一篇我们看看如何实现拉模式更有效。 本图清晰的表现了"拉"模式聊天室的行为。 并发多用户向数据池写数据 并发多用户从数据池读书据 数据最好以时间为…

开发自上而下的Web服务项目

这是从Alessio Soldano编辑的Advanced JAX-WS Web Services手册中摘录的示例章节。 第一章介绍了自底向上创建Web服务端点的方法。 它允许非常快地将现有bean作为Web Service端点公开&#xff1a;在大多数情况下&#xff0c;将类转换为端点只需在代码中添加少量注释即可。 但…

垃圾收集:提高吞吐量

这篇文章的灵感来自于在内存管理术语中的“ Pig in the Python ”定义。 显然&#xff0c;该术语用于解释GC反复促进大对象世代相传的情况。 据推测&#xff0c;这样做的效果类似于Python吞下整个猎物&#xff0c;只是在消化过程中被固定住了。 在接下来的24小时里&#xff0c…

大叔手记(12):我的一次面试经历(谈大叔如何应对面试官)

本文目的 写本文的目的&#xff0c;大叔不是为了装逼&#xff08;虽然说话的口气有时候也确实有点装逼&#xff0c;性格导致的&#xff0c;咳。。。我得改&#xff09;&#xff0c;其实大叔在公司也只是小罗罗&#xff0c;本文的目的主要是为了向大家展示如何通过各种软技能应对…

认识Mahout下的云计算机器学习

认识Mahout下的云计算机器学习 Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序&#xff0c;并且&#xff0c;在 Mahout 的最近版本…

NetBeans 8.0的五个新性能提示

NetBeans 8.0引入了几个新的Java提示 。 尽管有许多与Java Persistence API相关的新提示&#xff0c;但我还是关注Performance类别中的五个新提示。 NetBeans 8.0引入的五个新的“性能提示”是&#xff1a; 已装箱价值的装箱 冗余String.toString&#xff08;&#xff09; …

机智云小程序启蒙:WebSocket网页控制

机智云小程序启蒙&#xff1a;WebSocket网页控制 机智云Web版的JS远程控制设备&#xff0c;是调用了机智云开放的Open API和WebSocket API来实现的。这个是设计小程序最好的基础&#xff0c;也可以使无安卓设备的用户用网页远程控制设备。 其中&#xff0c;Open API用到的接口…

Web service 超过了最大请求长度错误解决

Web service 超过了最大请求长度错误解决 System.Web.Services.Protocols.SoapException: 运行配置文件中指定的扩展时出现异常。 ---> System.Web.HttpException: 超过了最大请求长度。 在 System.Web.HttpRequest.GetEntireRawContent() 在 System.Web.HttpRequest.ge…

动态规划--图像压缩

<算法设计与分析> --王晓东 题目描述和解析参照&#xff1a;http://blog.csdn.net/liufeng_king/article/details/8648195 他在那里分析得非常的详细。我也是按照这种思路来解的&#xff0c;而且算法设计与实现的课件上也是这么个解法。 主要是理解这个公式&#xff0c;…

oracle 存储过程的基本语法 及注意事项

oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :0;变量2 DATE;BEGIN END 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中&#xff0c;可以同时将多个列存…

function——函数声明头的提升和预解析

函数&#xff1a; 即function语句的集合&#xff0c;就是将多个语句封装到一起&#xff1b; 函数的执行要会自己遍历&#xff0c;遇见函数 a&#xff08;&#xff09;&#xff1b;执行语句&#xff0c;就要移交控制权&#xff0c;函数执行完毕之后&#xff0c;控制权又移交回…

在JDeveloper 12.1.3中将Java API用于WebSockets

介绍 最新版本的JDeveloper 12c&#xff08;12.1.3.0&#xff09;和WebLogic Server 12.1.3一起提供了一些新的Java EE 7功能。 其中之一是对用于WebSocket的JSR 356 Java API的支持。 实际上&#xff0c;从12.1.2.0版本开始就支持WebSocket协议&#xff08;RFC 6455&#xff0…

【HBuilder】手机App推送至Apple App Store过程

一、前言 最近由于公司同事离职&#xff0c;顶替这位同事从事手机App的研发工作&#xff0c;BIM数据平台部门采用的是HBuilder作为手机App的制作环境。本篇介绍我是如何将HBuilder的Release包发布至App Store的。 二、内容 1. 首先登录Apple Developer网站 2. 点击iTunes Conn…

Java性能调优调查结果(第四部分)

这是系列文章中的最后一篇&#xff0c;我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您还没有阅读第一篇文章&#xff0c;我建议您首先阅读以下内容&#xff1a; 性能问题的频率和严重性 最受欢迎的监控解决方案 查找根本原因的工具和技术 …

android eclipse 配置 在项目右击选择properties

转载于:https://www.cnblogs.com/guoxiaoyue/p/3485243.html