.net通用底层搭建

之前写过几篇,有朋友说看不懂,有朋友说写的有点乱,自己看了下,的确是需要很认真的看才能看懂整套思路。

  于是写下了这篇。

1.这个底层,使用的是ado.net,微软企业库

2.实体类对应执行sql语句后数据库返回的结果视图你要获取的列,而实体类与数据访问层基类乃是最重要的一环,用到了反射,缓存,拼接语句,高度封装

下面,先看添加操作

1.十个线程,同时执行,各自插库一万条

2.id从原来的程序里加锁处理改为采取数据库自增id,交给数据库处理,想了很久,觉得未来几年都还是单数据库服务器的,所以,用自增吧

执行前的查询

运行网站,

50多秒,每个线程互相等待,数据库帮我们做了并发处理,最后十万条数据57秒全部执行完毕

以下是添加操作的代码

1.页面的

 

注释部分是用来更新的,方法体外的是全局变量

2.派生数据访问层

 /// <summary>
/// 日志数据访问层
/// </summary>
public class LogManager : BaseDal
{
public LogManager() { } public LogManager(Type type) : base(type) { } /// <summary>
/// 添加日志
/// </summary>
/// <param name="logInfo">日志信息</param>
public bool Add(LogInfo logInfo)
{
bool result = false; Parameters parms=GetParameters(logInfo);
parms.AddOutParameter("@Identity",DbType.Int32,int.MaxValue);
int Identity=0;
Identity = base.ExecuteSql_GetIdentity(parms); if (Identity>0)
{
SiteCache.Max(SiteCacheKey.CK_MaxID_ + info_table_name, Identity);
result=true;
} return result;
}

3.基类,数据访问层基类,这里还是把整个类贴上会更方便看。采取了缓存策略。

上面的代码就是十线程同时插库1万条的情况,用了50多秒,也就是执行了十万次add方法

然后,开始看更新记录的情况

更新这里,改为用20线程同时更新吧

1.页面代码

2.派生数据访问层

3.数据访问层基类

4.更新锁将会改为全局静态对象

/// <summary>
/// 全站锁机制
/// </summary>
public static class LockHelper
{
#region 表锁,用于高并发更新的时候 public static object tableLock_SYS_Log = new object(); #endregion
}

大概就是上面说的了......

仍在改善中,不过现在开始要忙起来了......

公司的活很忙,考驾照,私人的事......

如果你有缘看到这篇文章,理解了我的思路,还有更好的建议的话,留下您的贵言!!!

.net通用底层搭建的更多相关文章

  1. 第一章 区块链系列 联盟链FISCO BCOS 底层搭建

    想了解相关区块链开发,技术提问,请加QQ群:538327407 FISCO BCOS 基础安装教程:https://fisco-bcos-documentation.readthedocs.io/zh ...

  2. kaldi通用底层矩阵运算库——CUDA

    cudamatrix/cublas-wrappers.h 该头文件对cuBLAS的接口进行了简单的封装(函数名的简化和部分kaldi函数的封装). 比如 cublasSgemm_v2封装为cublas ...

  3. kaldi通用底层矩阵运算库——CBLAS

    matrix/cblas-wrappers.h 该头文件对CBLAS与CLAPACK的接口进行了简单的封装(将不同数据类型的多个接口封装为一个). 比如 cblas_scopy和cblas_dcopy ...

  4. SpringBoot2搭建基础架构——开源软件诞生4

    技术框架篇--第4篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址: 点亮星标,感谢支持,加微信与开发者交流 kzca2000 码云:https://gitee.com/redragon/redr ...

  5. Github优秀java项目集合(中文版) - 涉及java所有的知识体系

    Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...

  6. 基于Hadoop生态圈的数据仓库实践 —— ETL

    使用Hive转换.装载数据 1. Hive简介 (1)Hive是什么         Hive是一个数据仓库软件,使用SQL读.写.管理分布式存储上的大数据集.它建立在Hadoop之上,具有以下功能和 ...

  7. 【转载】Java资源大全中文版

    Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...

  8. ThoughtWorks 技术雷达(2013年5月)

    ThoughtWorks技术雷达(2013年5月) 作者ThoughtWorks技术战略委员会 发布于 六月 25, 2013| 讨论 新浪微博腾讯微博 豆瓣网 Twitter Facebook li ...

  9. vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布

    框架介绍 这是一个基于vue.element-ui.iview..netcore3.1 可支持前端.后台动态扩展业务代码快速开发框架. 框架内置定制开发的代码生成器,生成的代码不需要复制也不需要更改, ...

随机推荐

  1. AssetManager asset使用

    Android 该系统提供了一个程序为每个新的设计/assets文件夹.保存该文件在此文件夹可以在一个程序被打包./res 和/assets所不同的是,android不/assets下生成的文件ID. ...

  2. C# 线程知识--使用Task执行异步操作

    在C#4.0之前需要执行一个复杂的异步操作时,只能使用CLR线程池技术来执行一个任务.线程池执行异步任务时,不知道任务何时完成,以及任务的在任务完成后不能获取到返回值.但是在C#4.0中引人了一个的任 ...

  3. Claris and XOR

    Problem Description Claris loves bitwise operations very much, especially XOR, because it has many b ...

  4. 使用JAVA打开本地应用程序相关的文件

    在该项目中需要运行本地文件或应用程序,JDK6添加后Desktop类别.可以直接使用.这使得有可能在程序中无论什么应用程序可以打开的.例:打开pdf文件,当地福昕是默认打开.执行程序将使用福昕开放pd ...

  5. string.format大全

    字符串的数字格式 stringstr1 =string.Format("{0:N1}",56789);               //result: 56,789.0 strin ...

  6. 基于Jquery的多彩二维码的生成

    Demo效果图: 源代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&quo ...

  7. swift 注意事项 (十六) —— 可选链

    可选链(Optional Chaining) 我们都知道"可选型"是什么.那么可选链又是什么,举个样例解释一下: struct MyName{      var name } st ...

  8. printf与++的puzzle

    int b = 0; int c = 0; int main(int argc, const char *argv[]) { printf("%d %d %d %d %d",b,b ...

  9. 部署中遇到的问题-UWSGI(一)

    假设uwsgi错误中提示 *** no app loaded. going in full dynamic mode *** 运行 [plain] view plaincopy aptitude in ...

  10. php正则函数学习

    原文:php正则函数学习 <?php /** * php正则函数学习 * * 原来的ereg 和eregi 函数已经废弃掉了,目前版本用preg_match代替 * * preg_match 在 ...