一个练习项目,好玩的bbs-c#

news/2024/9/25 23:21:28

c#代码:

using MySql.Data.MySqlClient;
using System.Data;
using Newtonsoft.Json;
using System.Security.Cryptography;
using System.Text;int pagesize = 20;
string secretKey = "saacac3423@21212";var builder = WebApplication.CreateSlimBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
app.Use((context, next) =>
{context.Response.Headers.Add("Server", "c#-webframework");return next(context);
});app.MapGet("/", () => {string retstr = "此站接口使用c#实现,<a href='api.html' target='_blank'>接口列表</a>";return Results.Text(retstr);
});app.MapGet("/user/register", (string username, string password, string nickname) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,username,nickname,addTime,sessionId from user where username='" + username + "'";cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> userinfo1 = new Dictionary<string, string>();if (reader.Read()){userinfo1.Add("id", reader.GetInt32("id").ToString());userinfo1.Add("username", reader.GetString("username"));userinfo1.Add("nickname", reader.GetString("nickname"));userinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));userinfo1.Add("sessionId", reader.GetString("sessionId"));}reader.Close();RetinfoSp retinfo1 = new RetinfoSp();if (userinfo1.ContainsKey("id") && String.Compare(userinfo1["id"], "") != 0){retinfo1.code = 1;retinfo1.msg = "用户名已经存在";retinfo1.data = "";}else{string passwordMd5 = string.Join("", MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password)).Select(m => m.ToString("X2"))); string sql2 = "insert into user(username, password, nickname) value('"+username+"', '"+ passwordMd5 + "', '"+nickname+"')";cmd = new MySqlCommand(sql2, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = cmd.LastInsertedId.ToString();}conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/user/login", (string username, string password) => {string passwordMd5 = string.Join("", MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password)).Select(m => m.ToString("X2")));string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,username,nickname,addTime,sessionId from user where username='" + username + "' and password='"+ passwordMd5 + "'";cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> userinfo1 = new Dictionary<string, string>();if (reader.Read()){userinfo1.Add("id", reader.GetInt32("id").ToString());userinfo1.Add("username", reader.GetString("username"));userinfo1.Add("nickname", reader.GetString("nickname"));userinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));userinfo1.Add("sessionId", reader.GetString("sessionId"));}reader.Close();Retinfo retinfo1 = new Retinfo();if (!userinfo1.ContainsKey("id") || String.Compare(userinfo1["id"], "") == 0){retinfo1.code = 1;retinfo1.msg = "用户名或者密码错误";retinfo1.data = userinfo1;}else{string tmpSessionId = string.Join("", MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(secretKey + userinfo1["id"] + userinfo1["addTime"])).Select(m => m.ToString("X2")));string sql2 = "update user set sessionId='" + tmpSessionId + "' where id='" + userinfo1["id"] + "'";cmd = new MySqlCommand(sql2, conn);cmd.ExecuteNonQuery();userinfo1["sessionId"] = tmpSessionId;retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = userinfo1;}conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/user/logout", (string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,username,nickname,addTime,sessionId from user where sessionId='" + sessionId + "'";cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> userinfo1 = new Dictionary<string, string>();if (reader.Read()){userinfo1.Add("id", reader.GetInt32("id").ToString());userinfo1.Add("username", reader.GetString("username"));userinfo1.Add("nickname", reader.GetString("nickname"));userinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));userinfo1.Add("sessionId", reader.GetString("sessionId"));}reader.Close();string sql2 = "update user set sessionId='' where sessionId='" + sessionId + "'";cmd = new MySqlCommand(sql2, conn);cmd.ExecuteNonQuery();Retinfo retinfo1 = new Retinfo();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = userinfo1;conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/user/getuserinfo", (string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,username,nickname,addTime,sessionId from user where sessionId='" + sessionId + "'";cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> userinfo1 = new Dictionary<string, string>();if (reader.Read()){userinfo1.Add("id", reader.GetInt32("id").ToString());userinfo1.Add("username", reader.GetString("username"));userinfo1.Add("nickname", reader.GetString("nickname"));userinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));userinfo1.Add("sessionId", reader.GetString("sessionId"));}reader.Close();Retinfo retinfo1 = new Retinfo();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = userinfo1;conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/post/list", (string keyword = "", int page = 1) => {if (page <= 0){page = 1;}int start = (page - 1) * pagesize;string addsql = " isDel=0 ";if (String.Compare(keyword, "") != 0){addsql = " isDel=0 and title like '%" + keyword + "%' ";}string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select count(1) as count from content where " + addsql;cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();int count = 0;if (reader.Read()){count = reader.GetInt32("count");}reader.Close();int totalpage = Convert.ToInt32(Math.Ceiling((double)count / (double)pagesize));string sql2 = "select id,title,userId,userNickename,replyNum,updateTime from content where " + addsql + " order by updateTime desc limit " + start + "," + pagesize;cmd = new MySqlCommand(sql2, conn);reader = cmd.ExecuteReader();List<Dictionary<string, string>> postlist = new List<Dictionary<string, string>>();while (reader.Read()){Dictionary<string, string> postitem = new Dictionary<string, string>();postitem.Add("id", reader.GetInt32("id").ToString());postitem.Add("title", reader.GetString("title"));postitem.Add("userId", reader.GetInt32("userId").ToString());postitem.Add("userNickename", reader.GetString("userNickename"));postitem.Add("replyNum", reader.GetInt32("replyNum").ToString());postitem.Add("updateTime", reader.GetDateTime("updateTime").ToString("yyyy-MM-dd HH:mm:ss"));postlist.Add(postitem);}reader.Close();Listdata listdata1 = new Listdata();listdata1.totalpage = totalpage;listdata1.data = postlist;Retlist retlist1 = new Retlist();retlist1.code = 0;retlist1.msg = "";retlist1.data = listdata1;conn.Clone();string json = JsonConvert.SerializeObject(retlist1);return Results.Text(json);
});app.MapGet("/post/detail", (int id) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,title,content,userId,userNickename,replyNum,updateTime from content where isDel=0 and id="+ id.ToString();cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> postinfo1 = new Dictionary<string, string>();if (reader.Read()){postinfo1.Add("id", reader.GetInt32("id").ToString());postinfo1.Add("title", reader.GetString("title"));postinfo1.Add("content", reader.GetString("content"));postinfo1.Add("userId", reader.GetInt32("userId").ToString());postinfo1.Add("userNickename", reader.GetString("userNickename"));postinfo1.Add("replyNum", reader.GetInt32("replyNum").ToString());postinfo1.Add("updateTime", reader.GetDateTime("updateTime").ToString("yyyy-MM-dd HH:mm:ss"));}reader.Close();Retinfo retinfo1 = new Retinfo();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = postinfo1;conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/post/add", (string title, string content, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql1 = "insert into content(title, content, userId, userNickename) value('" + title + "', '" + content + "', " + userinfo2["id"] + ", '" + userinfo2["nickname"] + "')";cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = cmd.LastInsertedId.ToString();json = JsonConvert.SerializeObject(retinfo1);}conn.Clone();return Results.Text(json);
});app.MapGet("/post/edit", (int id, string title, string content, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql1 = "update content set title='"+title+"',content='"+content+"',userId="+ userinfo2["id"].ToString() + ",userNickename='"+ userinfo2["nickname"] + "' where id="+ id.ToString()+ " and userId="+ userinfo2["id"].ToString();cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "";json = JsonConvert.SerializeObject(retinfo1);}conn.Clone();return Results.Text(json);
});app.MapGet("/post/delete", (int id, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql1 = "update content set isDel=1 where id=" + id.ToString() + " and userId=" + userinfo2["id"].ToString();cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "";json = JsonConvert.SerializeObject(retinfo1);}conn.Clone();return Results.Text(json);
});app.MapGet("/reply/list", (int contentId = 0, int page = 1) => {if (page <= 0){page = 1;}int start = (page - 1) * pagesize;string addsql = " isDel=0 and contentId="+ contentId.ToString() + " ";string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select count(1) as count from reply where " + addsql;cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();int count = 0;if (reader.Read()){count = reader.GetInt32("count");}reader.Close();int totalpage = Convert.ToInt32(Math.Ceiling((double)count / (double)pagesize));string sql2 = "select id,content,replyUserId,replyUserNickename,addTime from reply where " + addsql + " order by id asc limit " + start + "," + pagesize;cmd = new MySqlCommand(sql2, conn);reader = cmd.ExecuteReader();List<Dictionary<string, string>> postlist = new List<Dictionary<string, string>>();while (reader.Read()){Dictionary<string, string> postitem = new Dictionary<string, string>();postitem.Add("id", reader.GetInt32("id").ToString());postitem.Add("content", reader.GetString("content"));postitem.Add("replyUserId", reader.GetInt32("replyUserId").ToString());postitem.Add("replyUserNickename", reader.GetString("replyUserNickename"));postitem.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));postlist.Add(postitem);}reader.Close();Listdata listdata1 = new Listdata();listdata1.totalpage = totalpage;listdata1.data = postlist;Retlist retlist1 = new Retlist();retlist1.code = 0;retlist1.msg = "";retlist1.data = listdata1;conn.Clone();string json = JsonConvert.SerializeObject(retlist1);return Results.Text(json);
});app.MapGet("/reply/detail", (int id) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,content,replyUserId,replyUserNickename,addTime from reply where isDel=0 and id=" + id.ToString();cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> postinfo1 = new Dictionary<string, string>();if (reader.Read()){postinfo1.Add("id", reader.GetInt32("id").ToString());postinfo1.Add("content", reader.GetString("content"));postinfo1.Add("replyUserId", reader.GetInt32("replyUserId").ToString());postinfo1.Add("replyUserNickename", reader.GetString("replyUserNickename"));postinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));}reader.Close();Retinfo retinfo1 = new Retinfo();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = postinfo1;conn.Clone();string json = JsonConvert.SerializeObject(retinfo1);return Results.Text(json);
});app.MapGet("/reply/add", (int contentId, string content, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql2 = "update content set replyNum=replyNum+1 where id="+contentId.ToString();cmd = new MySqlCommand(sql2, conn);cmd.ExecuteNonQuery();string sql1 = "insert into reply(contentId, content, replyUserId, replyUserNickename) value("+ contentId.ToString() + ", '"+ content + "', "+ userinfo2["id"] + ", '"+ userinfo2["nickname"] + "')";cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = cmd.LastInsertedId.ToString();json = JsonConvert.SerializeObject(retinfo1);}conn.Clone();return Results.Text(json);
});app.MapGet("/reply/edit", (int id, string content, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql1 = "update reply set content='"+ content + "',replyUserId="+ userinfo2["id"] + ",replyUserNickename='"+ userinfo2["nickname"] + "' where id="+id.ToString()+" and replyUserId=" + userinfo2["id"];cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "";json = JsonConvert.SerializeObject(retinfo1);}conn.Clone();return Results.Text(json);
});app.MapGet("/reply/delete", (int id, string sessionId) => {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;Userinfo userinfo1 = new Userinfo();Dictionary<string, string> userinfo2 = userinfo1.getloginuserinfo(sessionId);RetinfoSp retinfo1 = new RetinfoSp();string json = "";if (!userinfo2.ContainsKey("id") || String.Compare(userinfo2["id"], "") == 0){retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "请先登录";json = JsonConvert.SerializeObject(retinfo1);}else{string sql3 = "select id,content,replyUserId,replyUserNickename,addTime,contentId from reply where isDel=0 and id=" + id.ToString();cmd = new MySqlCommand(sql3, conn);reader = cmd.ExecuteReader();Dictionary<string, string> postinfo1 = new Dictionary<string, string>();if (reader.Read()){postinfo1.Add("id", reader.GetInt32("id").ToString());postinfo1.Add("content", reader.GetString("content"));postinfo1.Add("replyUserId", reader.GetInt32("replyUserId").ToString());postinfo1.Add("replyUserNickename", reader.GetString("replyUserNickename"));postinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));postinfo1.Add("contentId", reader.GetInt32("contentId").ToString());}reader.Close();if (postinfo1.ContainsKey("id") && String.Compare(postinfo1["id"], "") != 0){string sql2 = "update content set replyNum=replyNum-1 where id=" + postinfo1["contentId"];cmd = new MySqlCommand(sql2, conn);cmd.ExecuteNonQuery();string sql1 = "update reply set isDel=1 where id=" + id.ToString() + " and replyUserId=" + userinfo2["id"];cmd = new MySqlCommand(sql1, conn);cmd.ExecuteNonQuery();retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "";json = JsonConvert.SerializeObject(retinfo1);}else {retinfo1.code = 0;retinfo1.msg = "";retinfo1.data = "回复不存在";json = JsonConvert.SerializeObject(retinfo1);}}conn.Clone();return Results.Text(json);
});app.Urls.Add("http://localhost:2086");
app.Urls.Add("http://localhost:1086");
app.Run();public struct Listdata
{public int totalpage;public List<Dictionary<string, string>> data;
};public struct Retlist
{public int code;public string msg;public Listdata data;
};public struct Retinfo
{public int code;public string msg;public Dictionary<string, string> data;
};public struct RetinfoSp
{public int code;public string msg;public string data;
};class Userinfo {public Dictionary<string, string> getloginuserinfo(string sessionId) {string mysqlcon = "server=127.0.0.1;database=my_bbs;user=root;password=123456";MySqlConnection conn = new MySqlConnection(mysqlcon);conn.Open();MySqlCommand cmd;MySqlDataReader reader;string sql1 = "select id,username,nickname,addTime,sessionId from user where sessionId='" + sessionId + "'";cmd = new MySqlCommand(sql1, conn);reader = cmd.ExecuteReader();Dictionary<string, string> userinfo1 = new Dictionary<string, string>();if (reader.Read()){userinfo1.Add("id", reader.GetInt32("id").ToString());userinfo1.Add("username", reader.GetString("username"));userinfo1.Add("nickname", reader.GetString("nickname"));userinfo1.Add("addTime", reader.GetDateTime("addTime").ToString("yyyy-MM-dd HH:mm:ss"));userinfo1.Add("sessionId", reader.GetString("sessionId"));}reader.Close();return userinfo1;}
}

 

启动画面:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

一个练习项目,好玩的bbs-java

java这个我是用springboot做的 目录结构 application.ymlspring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/my_bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8&allowPubl…

从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对

最近一段时间 Docker 镜像一直是 Pull 不下来的状态,感觉除了挂🪜,想直连 Docker Hub 是几乎不可能的。更糟糕的是,很多原本可靠的国内镜像站,例如一些大厂和高校运营的,也陆续关停了,这对我们这些个人开发者和中小企业来说是挺难受的。之前,通过这些镜像站,我们可以…

redis自学(47)服务端优化

持久化配置 Redis的持久化虽然可以保证数据安全,但也会带来很多额外的开销,因此持久化请遵循下列建议: ① 用来做缓存的redis实例尽量不要开启持久化功能 ② 建议关闭RDB持久化功能,使用AOF持久化(RDB的数据安全性一直是有问题的,两次RDB的时间比较长,又不能频繁的RDB…

一个练习项目,好玩的bbs-1

目录结构 nginx配置:upstream bbs_upstream {server 127.0.0.1:1081; #phpserver 127.0.0.1:1086; #csharpeserver 127.0.0.1:1087; #javaserver 127.0.0.1:1084; #ruby-sinatraserver 127.0.0.1:1104; #ruby-buskerserver 127.0.0.1:1105; #ruby-ramazeserver 127.0.0.1:1080…

同态加密为什么被称为密码学的圣杯?

同态加密是一种支持数据密态处理的密码学技术,可以广泛应用于云计算、医疗、金融等领域。1.什么是同态加密? 全同态加密是一种加密技术,允许在不解密的前提下,对密文进行一些有意义的运算,使得解密后的结果与在明文上做 “相同计算” 得到的结果相同。同态加密被称为密码学…

未知进程占用显存排查

现象 nvitop 查看gpu 使用情况,会看到 ‘No Such Process’ 这样的进程占用了显存; 使用ps 查不到该命令。原因 大概率是主进程挂了,或者被终止了,但是子进程仍然占用着显存。解决方法 方法1: 如果确定进程都是python 启动的,执行下面的命令; 如果不是python,但是知道…

n模块不支持windows!!!!!!!

需要升级 node 版本。本着不想卸载 node 再重新安装的原则,因为node 的环境配置以及各种相关配置有些繁琐,所以就想着使用命令的方式进行升级。 在网上找了一些升级 node 的命令,最常见的是安装 node 的 n 模块,n 模块 是用来管理 node 版本的。开始下载: npm install -g …

服务器存储瘫痪数据恢复

一、服务器数据恢复故障描述 断电导致整个存储瘫痪,加电后存储无法使用。 经过诊断后认为是断电导致存储阵列损坏。 整个存储是由12块日立硬盘(3T SAS硬盘)组成的RAID-6磁盘阵列,被分成一个卷,分配给几台Vmware的ESXI主机做共享存储。整个卷中存放了大量的Windows虚拟机,…