开发经验总结
2018-8-29
1. 尽量不要在循环方法里面查询数据库 应该使用join或者union将数据统一查询出来后,循环处理数据
2.添加或者更新数据时,addtime 和updatetime 的值不要写在dal层,统计数据时不好控制
3.如果你程序里面使用的sql语句的话。insert 语句 应该写明添加的哪些字段。insert into table (i1,i2) values(v1,v2) 拒绝写成 insert into table values(v1,v2)。。否则表新增字段,又只能发新服务端时,旧服务端会报错的。你就哭吧
4.一定要写好注释,否则代码突然出现问题,你都不知道自己写的是啥。(容我哭会)
5.要有自己的命名习惯,比如查询方法用X_Query 就一直用X_Query。 数据列表叫X_datalist 就一直叫X_datalist 虽然没有啥卵用,但至少看着代码规范会感觉舒服
6.要经常考虑到数据的安全性。没有领导希望自己公司的数据随便一个连接就可以被访问到
7.任何对象或者变量一定要考虑空值的情况。
2018-9-20
1. jquery 下获取标签下标 $(this).index() 一直为-1 。当时使用的版本是 1.3.1 ,换成了更高的1.9.1.1版本解决了
2. 页面自适应 手机端
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="initial-scale=1, width=device-width, maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="applicable-device" content="mobile">
<meta name="apple-mobile-web-app-title" content="">
<meta name="apple-mobile-web-app-capable" content="yes" />
3.数据库中保存的字段值 <p> 这是一个p标签</p> 如何显示再MVC页面上 使用 @MvcHtmlString.Create("<p> 这是一个p标签</p> ")
2019-3-14
1. 任何固定的东西最好配置再config文件中,因为说不定什么时候就改了,你以为的并不是你以为的,老板以为的也并不是老板以为的。
2. select 标签 消除默认样式
select {
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
}
3. 网页定位--百度
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=oswMM5p4hySG5nU6A3ZGG5TZSkcPXjPG"></script>
var myCity;
function getCityName() {
myCity = new BMap.LocalCity();
myCity.get(myFun);
}
function myFun(result) {
consolo.log(result.name)
}
4.jquery ajax 方法
$.ajax({
type: 'post',
url: url,
datatype: 'text',
success: function (result) {},
error:function(){}
});
ajax 生成的标签,添加click或者其他事件时,最好添加在ajax的内部
5.判断当前系统类型
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
6. 常见的加密方法
SHA1 加密
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(paramStr));
StringBuilder secpwd = new StringBuilder();
foreach (byte b in hash)
{
secpwd.AppendFormat("{0:x2}", b);
}
return secpwd.ToString();
MD5加密
MD5 md5 = new MD5CryptoServiceProvider();
byte[] data = Encoding.UTF8.GetBytes(src);
byte[] md5data = md5.ComputeHash(data);
md5.Clear();
var retStr = BitConverter.ToString(md5data);
retStr = retStr.Replace("-", "").ToUpper();
return retStr;
7.对字符串url编码 HttpUtility.UrlEncode(value, Encoding.UTF8)
8.最简单的http post 请求
if (method.ToLower() == "post")
{
HttpWebRequest req = null;
HttpWebResponse rsp = null;
System.IO.Stream reqStream = null;
System.IO.Stream stream = null;
StreamReader reader = null;
try
{
req = (HttpWebRequest)WebRequest.Create(url);
req.Method = method;
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.Timeout = 1000 * 60 * 5;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
reqStream = req.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
}
catch (Exception ex)
{
throw;
}
finally
{
if (reqStream != null) reqStream.Close();
if (rsp != null) rsp.Close();
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
else
{
//创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));
//GET请求
request.Method = "GET";
request.ReadWriteTimeout = 5000;
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
//返回内容
string retString = myStreamReader.ReadToEnd();
return retString;
}
9. cookie 的保存与获取
if (Request.Cookies["tokencookie"] != null)
{
HttpCookie cok = Request.Cookies["tokencookie"];
cok.Values.Set("token",UserToken);
Response.AppendCookie(cok);
}
else
{
HttpCookie cookie = new HttpCookie("tokencookie");//初使化并设置Cookie的名称
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(30, 0, 0, 0, 0);//过期时间为30天
cookie.Expires = dt.Add(ts);//设置过期时间
cookie.Values.Add("token", UserToken);
Response.AppendCookie(cookie);
}
if (Request.Cookies["tokencookie"] != null)
{
HttpCookie cok = Request.Cookies["tokencookie"];
string token = cok["token"]
string idmobile = cok["idmobile"]
}
10.获取 post过来的数据
StreamReader reader = new StreamReader(System.Web.HttpContext.Current.Request.InputStream);
string postdatastr = reader.ReadToEnd();
11. 记录日志一定要记录的尽可能详细,为后期查找问题原因搭好基础
12. timespan
DateTime time = DateTime.Parse("2019-3-11 12:30:25");
TimeSpan ts = DateTime.Now.Subtract(time);
int days = ts.Days;//3
double totaldays = ts.TotalDays;//3.1039638617893517
int hours = ts.Hours;//2
double totalhours = ts.TotalHours;//74.495132682944444
DateTime time1 = DateTime.Parse("2019-3-14 12:30:25");
TimeSpan ts1 = DateTime.Now.Subtract(time1);
int days1 = ts1.Days;//0
double totaldays1 = ts1.TotalDays;//0.10460842411921296
int hours1 = ts1.Hours;//2
double totalhours1 = ts1.TotalHours;//2.5106021788611108
DateTime time2 = DateTime.Parse("2019-3-14 15:01:25");
TimeSpan ts2 = DateTime.Now.Subtract(time2);
int days2 = ts2.Days;//0
double totaldays2 = ts2.TotalDays;//0.000508108837962963
int hours2 = ts2.Hours;//0
double totalhours2 = ts2.TotalHours;//0.01219461211111111
int min = ts2.Minutes;//0
double totalmin = ts2.TotalMinutes;//0.73167672666666672
DateTime time3= DateTime.Parse("2018-3-10 15:01:25");
TimeSpan ts3 = DateTime.Now.Subtract(time3);
int days3 = ts3.Days;//369
double totaldays3 = ts3.TotalDays;//369.00227576781248
int hours3 = ts3.Hours;//0
double totalhours3 = ts3.TotalHours;//8856.054618427499
int min3 = ts3.Minutes;//3
double totalmin3 = ts3.TotalMinutes;//531363.27710565
timespan 的 days属性是包含所有的天数, hours属性只与小时数有关 例如 18年3月10号 15:05---19年3月14号 16:05 days=369 hours=1 .
13. span 标签赋值
比如有3个span,你需要给第三个赋值,你可能会这么写 $("#wangdai").find("span")[2].html("命中"); 但是浏览器不认识的,要用eq(2).html() 才行;

14 cookie 问题
当你发现你要的cookie不存在时,请查看下生成cookie时的域名和你当前判断cookie的域名是否一致 !!!!!
2019-7-11
15 apsx 页面 获取 aspx.cs 里面的值
比如后台有一个 protected string type="1"; 那么在前台页面 如果是在集合里面例如repearter 里面可以使用<%#type%> 获取到值,在html标签, 非服务器控件,可以使用<%=type%> 获取到值,但如果是在单独的服务器控件是无法获取到值的,只能后台赋值
************都是些很基本的东西,想起来会记一下。
浙公网安备 33010602011771号