ASP.NET之JSONHelper操作

news/2025/2/6 4:37:23/文章来源:https://www.cnblogs.com/qigege/p/18204797
之前说到了Ext.Net中GridPanel行取值的问题(Ext.Net开发_GridPanel行选中取值),涉及到checkBox操作时,要留个心眼注意下取值的区别!返回值是Json格式。 现在用到了Json,就想自己也整一个Josn帮助类。在线帮助的资料很多,在巨人的身上东凑西凑也凑一个用用。   

 

一、介绍

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集

 

  方法有多种,我这边用到是DataContractJsonSerializer类,官方解释:“NET Framework 4 .NET Framework 3.5 Silverlight 将对象序列化为 JavaScript 对象表示法 (JSON),并将 JSON 数据反序列化为对象”。

 

  其命名空间如下:

 

 

  注意:如果是.NET Framework 3.5  光引用了“System.Runtime.Serialization”了这个还不行。运行时会发现:

 

 

 

所以还要引用下“System.ServiceModel.Web”即可。   .NET Framework 4则在System.Runtime.Serialization下。

 

二、对JSON数据操作

 源码:

复制代码
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;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Runtime.Serialization.Json;
namespace WebUI.CommonClass
{
public class JSONHelper
{

/// <summary>
/// JSON序列化
/// </summary>
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
//替换Json的Date字符串
string p = @"\\/Date\((\d+)\+\d+\)\\/";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
return jsonString;
}

/// <summary>
/// JSON反序列化
/// </summary>
public static T JsonDeserialize<T>(string jsonString)
{
//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式
string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}

/// <summary>
/// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
/// </summary>
private static string ConvertJsonDateToDateString(Match m)
{
string result = string.Empty;
DateTime dt = new DateTime(1970, 1, 1);
dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));
dt = dt.ToLocalTime();
result = dt.ToString("yyyy-MM-dd HH:mm:ss");
return result;
}

/// <summary>
/// 将时间字符串转为Json时间
/// </summary>
private static string ConvertDateStringToJsonDate(Match m)
{
string result = string.Empty;
DateTime dt = DateTime.Parse(m.Groups[0].Value);
dt = dt.ToUniversalTime();
TimeSpan ts = dt - DateTime.Parse("1970-01-01");
result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);
return result;
}
}
}
复制代码


实验下:

Product

复制代码
    public class Product
{
public string proName { get ;set ; }
public decimal proPrice { get; set; }
public string proAttr { get; set; }
public string proAddres { get; set; }
}
复制代码

操作

1:序列化

复制代码
Product pro = new Product();
pro.proAddres = "上海";
pro.proAttr = "cpu";
pro.proName = "电脑";
pro.proPrice = 3680;
string josn = JSONHelper.JsonSerializer<Product>(pro); //序列化
Message.ShowAlert("提示", josn);
复制代码

效果:


2,反序列化

string json = "{\"proAddres\":\"上海\",\"proAttr\":\"cpu\",\"proName\":\"电脑\",\"proPrice\":3680}";
Product pro = JSONHelper.JsonDeserialize<Product>(json);

 

 


 

 

 

  JSONHELP

  

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Collections;
using System.Data;
using System.Text;
using System.Reflection;
using System.Globalization;
using System.Text.RegularExpressions;namespace FumaCRM_BS.NewWeb.Common.Class
{public class JsonHelper{/// <summary>/// DataTable转Json/// </summary>/// <param name="dtb"></param>/// <returns></returns>public static string Dtb2Json(DataTable dtb){JavaScriptSerializer jss = new JavaScriptSerializer();ArrayList dic = new ArrayList();foreach (DataRow row in dtb.Rows){Dictionary<string, object> drow = new Dictionary<string, object>();foreach (DataColumn col in dtb.Columns){drow.Add(col.ColumnName, row[col.ColumnName]);}dic.Add(drow);}return jss.Serialize(dic);}/// <summary>/// Json转DataTable/// </summary>/// <param name="json"></param>/// <returns></returns>public static DataTable Json2Dtb(string json){JavaScriptSerializer jss = new JavaScriptSerializer();ArrayList dic = jss.Deserialize<ArrayList>(json);DataTable dtb = new DataTable();if (dic.Count > 0){foreach (Dictionary<string, object> drow in dic){if (dtb.Columns.Count == 0){foreach (string key in drow.Keys){//if (drow[key].GetType() != null)//    dtb.Columns.Add(key, drow[key].GetType());//else
                                dtb.Columns.Add(key);}}DataRow row = dtb.NewRow();foreach (string key in drow.Keys){row[key] = drow[key];}dtb.Rows.Add(row);}}return dtb;}public static string DataTable2Json(DataTable dt){if (dt == null || dt.Rows.Count == 0)return "[]";StringBuilder jsonBuilder = new StringBuilder();jsonBuilder.Append("[");for (int i = 0; i < dt.Rows.Count; i++){jsonBuilder.Append("{");for (int j = 0; j < dt.Columns.Count; j++){jsonBuilder.Append("\"");jsonBuilder.Append(dt.Columns[j].ColumnName);jsonBuilder.Append("\":\"");string value = dt.Rows[i][j].ToString().Replace("\r", "").Replace("\n", "").Replace("\t", "").Trim();if (dt.Columns[j].DataType.FullName == "System.DateTime")jsonBuilder.Append(value.Length == 0 ? value : Convert.ToDateTime(value).ToString("yyyy-MM-dd"));elsejsonBuilder.Append(value);jsonBuilder.Append("\",");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("},");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("]");return jsonBuilder.ToString();}#region JqueryEasyUI JSON  Method/// <summary>/// 生成表单编辑赋值 JSON格式/// </summary>/// <param name="dt"></param>/// <param name="displayCount"></param>/// <returns></returns>public static string CreateJsonOne(DataTable dt, bool displayCount){StringBuilder JsonString = new StringBuilder();//Exception Handling        if (dt != null && dt.Rows.Count > 0){for (int i = 0; i < dt.Rows.Count; i++){JsonString.Append("{ ");for (int j = 0; j < dt.Columns.Count; j++){if (j < dt.Columns.Count - 1){JsonString.Append("ipt_" + dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\",");}else if (j == dt.Columns.Count - 1){JsonString.Append("ipt_" + dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\"");}}if (i == dt.Rows.Count - 1){JsonString.Append("} ");}else{JsonString.Append("}, ");}}return JsonString.ToString();}else{return null;}}/// <summary>/// 将DataTable中的数据转换成JSON格式/// </summary>/// <param name="dt">数据源DataTable</param>/// <param name="displayCount">是否输出数据总条数</param>/// <returns></returns>public static string CreateJsonParameters(DataTable dt, bool displayCount){return CreateJsonParameters(dt, displayCount, dt.Rows.Count);}/// <summary>/// 将DataTable中的数据转换成JSON格式/// </summary>/// <param name="dt">数据源DataTable</param>/// <returns></returns>public static string CreateJsonParameters(DataTable dt){return CreateJsonParameters(dt, true);}/// <summary>/// 将DataTable中的数据转换成JSON格式/// </summary>/// <param name="dt">数据源DataTable</param>/// <param name="displayCount">是否输出数据总条数</param>/// <param name="totalcount">JSON中显示的数据总条数</param>/// <returns></returns>public static string CreateJsonParameters(DataTable dt, bool displayCount, int totalcount){StringBuilder JsonString = new StringBuilder();//Exception Handling        if (dt != null){JsonString.Append("{ ");JsonString.Append("\"rows\":[ ");for (int i = 0; i < dt.Rows.Count; i++){JsonString.Append("{ ");for (int j = 0; j < dt.Columns.Count; j++){if (j < dt.Columns.Count - 1){//if (dt.Rows[i][j] == DBNull.Value) continue;if (dt.Columns[j].DataType == typeof(bool)){JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" +dt.Rows[i][j].ToString().ToLower() + ",");}else if (dt.Columns[j].DataType == typeof(string)){JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" +dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\",");}else{JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\",");}}else if (j == dt.Columns.Count - 1){//if (dt.Rows[i][j] == DBNull.Value) continue;if (dt.Columns[j].DataType == typeof(bool)){JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" +dt.Rows[i][j].ToString().ToLower());}else if (dt.Columns[j].DataType == typeof(string)){JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" +dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\"");}else{JsonString.Append("\"JSON_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\"");}}}/*end Of String*/if (i == dt.Rows.Count - 1){JsonString.Append("} ");}else{JsonString.Append("}, ");}}JsonString.Append("]");if (displayCount){JsonString.Append(",");JsonString.Append("\"total\":");JsonString.Append(totalcount);}JsonString.Append("}");return JsonString.ToString().Replace("\n", "");}else{return null;}}#region object 2 jsonprivate static void WriteDataRow(StringBuilder sb, DataRow row){sb.Append("{");foreach (DataColumn column in row.Table.Columns){sb.AppendFormat("\"{0}\":", column.ColumnName);WriteValue(sb, row[column]);sb.Append(",");}// Remove the trailing comma.if (row.Table.Columns.Count > 0){--sb.Length;}sb.Append("}");}private static void WriteDataSet(StringBuilder sb, DataSet ds){sb.Append("{\"Tables\":{");foreach (DataTable table in ds.Tables){sb.AppendFormat("\"{0}\":", table.TableName);WriteDataTable(sb, table);sb.Append(",");}// Remove the trailing comma.if (ds.Tables.Count > 0){--sb.Length;}sb.Append("}}");}private static void WriteDataTable(StringBuilder sb, DataTable table){sb.Append("{\"Rows\":[");foreach (DataRow row in table.Rows){WriteDataRow(sb, row);sb.Append(",");}// Remove the trailing comma.if (table.Rows.Count > 0){--sb.Length;}sb.Append("]}");}private static void WriteEnumerable(StringBuilder sb, IEnumerable e){bool hasItems = false;sb.Append("[");foreach (object val in e){WriteValue(sb, val);sb.Append(",");hasItems = true;}// Remove the trailing comma.if (hasItems){--sb.Length;}sb.Append("]");}private static void WriteHashtable(StringBuilder sb, IDictionary e){bool hasItems = false;sb.Append("{");foreach (string key in e.Keys){sb.AppendFormat("\"{0}\":", key.ToLower());WriteValue(sb, e[key]);sb.Append(",");hasItems = true;}// Remove the trailing comma.if (hasItems){--sb.Length;}sb.Append("}");}private static void WriteObject(StringBuilder sb, object o){MemberInfo[] members = o.GetType().GetMembers(BindingFlags.Instance | BindingFlags.Public);sb.Append("{");bool hasMembers = false;foreach (MemberInfo member in members){bool hasValue = false;object val = null;if ((member.MemberType & MemberTypes.Field) == MemberTypes.Field){FieldInfo field = (FieldInfo)member;val = field.GetValue(o);hasValue = true;}else if ((member.MemberType & MemberTypes.Property) == MemberTypes.Property){PropertyInfo property = (PropertyInfo)member;if (property.CanRead && property.GetIndexParameters().Length == 0){val = property.GetValue(o, null);hasValue = true;}}if (hasValue){sb.Append("\"");sb.Append(member.Name);sb.Append("\":");WriteValue(sb, val);sb.Append(",");hasMembers = true;}}if (hasMembers){--sb.Length;}sb.Append("}");}private static void WriteString(StringBuilder sb, IEnumerable s){sb.Append("\"");foreach (char c in s){switch (c){case '\"':sb.Append("\\\"");break;case '\\':sb.Append("\\\\");break;case '\b':sb.Append("\\b");break;case '\f':sb.Append("\\f");break;case '\n':sb.Append("\\n");break;case '\r':sb.Append("\\r");break;case '\t':sb.Append("\\t");break;default:int i = c;if (i < 32 || i > 127){sb.AppendFormat("\\u{0:X04}", i);}else{sb.Append(c);}break;}}sb.Append("\"");}public static void WriteValue(StringBuilder sb, object val){if (val == null || val == DBNull.Value){sb.Append("null");}else if (val is string || val is Guid){WriteString(sb, val.ToString());}else if (val is bool){sb.Append(val.ToString().ToLower());}else if (val is double ||val is float ||val is long ||val is int ||val is short ||val is byte ||val is decimal){sb.AppendFormat(CultureInfo.InvariantCulture.NumberFormat, "{0}", val);}else if (val.GetType().IsEnum){sb.Append((int)val);}else if (val is DateTime){sb.Append("new Date(\"");sb.Append(((DateTime)val).ToString("MMMM, d yyyy HH:mm:ss",new CultureInfo("en-US", false).DateTimeFormat));sb.Append("\")");}else if (val is DataSet){WriteDataSet(sb, val as DataSet);}else if (val is DataTable){WriteDataTable(sb, val as DataTable);}else if (val is DataRow){WriteDataRow(sb, val as DataRow);}else if (val is Hashtable){WriteHashtable(sb, val as Hashtable);}else if (val is IEnumerable){WriteEnumerable(sb, val as IEnumerable);}else{WriteObject(sb, val);}}/// <summary>/// /// </summary>/// <param name="o"></param>/// <returns></returns>public static string Convert2Json(object o){StringBuilder sb = new StringBuilder();WriteValue(sb, o);return sb.ToString();}#endregion#endregion/// <summary>/// 转换对象为JSON格式数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="obj">对象</param>/// <returns>字符格式的JSON数据</returns>public static string GetJSON<T>(object obj){string result = String.Empty;try{System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){serializer.WriteObject(ms, obj);result = System.Text.Encoding.UTF8.GetString(ms.ToArray());}}catch (Exception ex){throw ex;}return result;}/// <summary>/// 转换List<T>的数据为JSON格式/// </summary>/// <typeparam name="T"></typeparam>/// <param name="vals">列表值</param>/// <returns>JSON格式数据</returns>public static string JSON<T>(List<T> vals){System.Text.StringBuilder st = new System.Text.StringBuilder();try{System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));foreach (T city in vals){using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){s.WriteObject(ms, city);st.Append(System.Text.Encoding.UTF8.GetString(ms.ToArray()));}}}catch (Exception ex){throw ex;}return st.ToString();}/// <summary>/// JSON格式字符转换为T类型的对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="jsonStr"></param>/// <returns></returns>public static T ParseFormByJson<T>(string jsonStr){T obj = Activator.CreateInstance<T>();using (System.IO.MemoryStream ms =new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr))){System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));return (T)serializer.ReadObject(ms);}}/// <summary>/// 将获取的Json数据转换为DataTable/// </summary>/// <param name="strJson">Json字符串</param>/// <returns></returns>public static DataTable JsonToDataTable(string strJson){//取出表名   var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);string strName = rg.Match(strJson).Value;DataTable tb = null;//去除表名   strJson = strJson.Substring(strJson.IndexOf("[") + 1);strJson = strJson.Substring(0, strJson.IndexOf("]"));//获取数据   rg = new Regex(@"(?<={)[^}]+(?=})");MatchCollection mc = rg.Matches(strJson);for (int i = 0; i < mc.Count; i++){string strRow = mc[i].Value;string[] strRows = strRow.Split(',');//创建表   if (tb == null){tb = new DataTable();tb.TableName = strName;foreach (string str in strRows){var dc = new DataColumn();string[] strCell = str.Split(':');dc.ColumnName = strCell[0].Replace("\"", "");// strCell[0];
                        tb.Columns.Add(dc);}tb.AcceptChanges();}//增加内容   DataRow dr = tb.NewRow();for (int r = 0; r < strRows.Length; r++){dr[r] = strRows[r].Split(':')[1].Trim().Replace("", ",").Replace("", ":").Replace("\"", "");}tb.Rows.Add(dr);tb.AcceptChanges();}return tb;}/// <summary>/// /// </summary>/// <param name="strJson"></param>/// <param name="symbol"></param>/// <returns></returns>public static DataTable JsonToDataTable(string strJson, string symbol){//取出表名   var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);string strName = rg.Match(strJson).Value;DataTable tb = null;//去除表名   strJson = strJson.Substring(strJson.IndexOf("[") + 1);strJson = strJson.Substring(0, strJson.IndexOf("]"));//获取数据   rg = new Regex(@"(?<={)[^}]+(?=})");MatchCollection mc = rg.Matches(strJson);for (int i = 0; i < mc.Count; i++){string strRow = mc[i].Value;string[] strRows = strRow.Replace(symbol, "|").Split('|');// (symbol);//创建表   if (tb == null){tb = new DataTable();tb.TableName = strName;foreach (string str in strRows){var dc = new DataColumn();string[] strCell = str.Split(':');dc.ColumnName = strCell[0].Replace("\"", "");// strCell[0];
                        tb.Columns.Add(dc);}tb.AcceptChanges();}//增加内容   DataRow dr = tb.NewRow();for (int r = 0; r < strRows.Length; r++){dr[r] = strRows[r].Split(':')[1].Trim().Replace("", ",").Replace("", ":").Replace("\"", "");}tb.Rows.Add(dr);tb.AcceptChanges();}return tb;}/// <summary>     /// dataTable转换成Json格式     /// </summary>     /// <param name="dt"></param>     /// <returns></returns>     public static string ToJson(DataTable dt){StringBuilder jsonBuilder = new StringBuilder();jsonBuilder.Append("{\"");jsonBuilder.Append(dt.TableName);jsonBuilder.Append("\":[");for (int i = 0; i < dt.Rows.Count; i++){jsonBuilder.Append("{");for (int j = 0; j < dt.Columns.Count; j++){jsonBuilder.Append("\"");jsonBuilder.Append(dt.Columns[j].ColumnName);jsonBuilder.Append("\":\"");jsonBuilder.Append(dt.Rows[i][j].ToString());jsonBuilder.Append("\",");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("},");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("]");jsonBuilder.Append("}");return jsonBuilder.ToString();}}
}
复制代码

 https://www.cnblogs.com/PEPE/archive/2012/02/13/Pepe_Yu.html

 

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

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

相关文章

Git:warning: CALF wilL be replaced by LF in xxxx 问题解决

warning: CALF wilL be replaced by LF in xxxx 问题解决办法 出现这个问题的原因是像缓存区中提交文件时出现的 原因: windows中的换行符为 CRLF,而在Linux下的换行符为LF,所以在执行add . 时出现提示 也就是, 工作区的文件都应该用 CRLF 来换行。如果 改动文件时引入了 …

密码爆破ssh与ftp服务(finish)

密码爆破ssh与ftp服务 使用工具九头蛇(hydra) ssh 环境配置 win10 安装sshd服务端在cmd命令行使用 net start sshd 命令启动服务kali 打开终端查看是否开启ssh服务 nmap -sV -T4 -p- [kali的ip] 先创建一个用户名字典username.txt,把经常用的用户名写入到字典中 touch usern…

Obsidian第三方插件下载

一、从Obsidian插件市场下载 使用第三方插件的第一步是关闭安全模式。点击“浏览”,搜索需要的插件名称。在这里输入名称搜索。点击安装。点击启用。必要时要使用魔法。 替代方法proxy-github二、从别的地方下载的插件 首先了解一下obsidian插件的基本构成,主要包括下面的文件…

鸿蒙4.2小版本大亮点,鸿蒙5.0也不远了

混合应用开发技术,特别是结合小程序和原生技术,为鸿蒙应用开发带来了显著的优势。首先,它简化了开发流程,使开发者能够迅速创建出高质量的应用程序。这不仅缩短了开发周期,还提升了应用的整体性能和用户体验。上个月,市场上迎来了华为鸿蒙系统4字开头的小升级,版本来到了…

JPA和Hibernate的乐观锁与悲观锁

哈喽,大家好,我是木头左!JPA和Hibernate的乐观锁和悲观锁 乐观锁 乐观锁是一种假设资源不会被冲突影响的并发控制策略。它假设多个事务在同一时间内不会发生冲突,因此不需要加锁。当事务提交时,如果检测到数据发生了改变,就会抛出异常,让开发者决定如何处理这个冲突。 在…

树形DP

树形 DP 即在树上进行的 DP。 常见的两种转移方向:父节点 \(\rightarrow\) 子节点:如求节点深度,\(dp_u = dp_{fa} + 1\) 子节点 \(\rightarrow\) 父节点:如求子树大小,\(dp_u = 1 + \sum dp_v\)习题:P5658 [CSP-S2019] 括号树暴力 本题 \(n\) 小的数据点保证为链,直接枚…

DBever SQL编辑器的高级应用:如何用变量快速查询

哈喽,大家好,我是木头左!一、DBever SQL编辑器简介 DBever是一款数据库管理工具,它支持多种数据库,如MySQL、SQL Server、Oracle等。其中,它的SQL编辑器功能非常强大,可以让更方便地进行SQL语句的编写和执行。今天,就来探讨一下DBever SQL编辑器中如何使用变量的方式。…

EDP .Net开发框架--自动化日志

EDP是一套集组织架构,权限框架【功能权限,操作权限,数据访问权限,WebApi权限】,自动化日志,动态Interface,WebApi管理等基础功能于一体的,基于.net的企业应用开发框架。通过友好的编码方式实现数据行、列权限的管控。平台下载地址:https://gitee.com/alwaysinsist/edp…

power 740 p740 连接远程管理模块

https://111.111.111.111/The connection for this site is not secure 111.111.111.111 uses an unsupported protocol.Try:Search the web for 111.111.111.111ERR_SSL_VERSION_OR_CIPHER_MISMATCHEdge 浏览器:https://blog.csdn.net/weixin_44904239/article/details/13096…

power 740 连接远程管理模块

https://111.111.111.111/The connection for this site is not secure 111.111.111.111 uses an unsupported protocol.Try:Search the web for 111.111.111.111ERR_SSL_VERSION_OR_CIPHER_MISMATCHEdge 浏览器:https://blog.csdn.net/weixin_44904239/article/details/13096…

闲话 5.21 四川高联预赛的压轴

koala 降智十分钟求满足下列条件数列个数:长度为 \(n\) \(\forall i\in[1,n]\quad a_i\not=0\) \(a_1=1\) \(\forall k\in[1,n-1]\quad (a_{k+1}-a_k-1)(a_{k+1}+a_k)=0\)显然就是不能有 \(0\) 最为重要。义👁坐标系:斜上线是 \(a_i=a_{i-1}+1\),对称是 \(a_i=-a_{i-1}\)。…

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手!这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和自己用啥语言开发没关系哈!),简单易上手(从…