微软MVP Eleven

资深架构师!专注于.Net&Core架构深入,致力于.Net生态改善!Just do it!

  • 博客(327)
  • 收藏
  • 关注

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 30-数据库设计(SqlServer读写分离对等发布)

SqlServer读写分离对等发布:对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。注意点:1.各服务器的数据库名字要保证一样。2.发布名称必须保持一致。3.各服务器必须都是发布服务器。提前准备:数据库A 数据库B数据库A创建对等发布1.新建发布如图2.选择需要发布(同步)的数据库,点击下一步。3.选择对等发布,点击下一步。4.选择需要同步的表和存储过程,点击下一步。5.设置代理安全性。

2021-05-31 20:28:48 63373

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 29-数据库设计(触发器,游标,视图,函数)

课程目标1.触发器2.游标&&视图&&函数3.字段类型&&字段可空4.统计字段&&逻辑删除5.数据库设计落地实操环境准备:Microsoft SQL Server Management Studio 18 2012以上;一.触发器是一个特殊的存储过程,是由数据库自己在某种场景下触发的;自然是去执行一些业务逻辑;A.事发前----Insert,插入一条数据之前,可以指定一个知性逻辑B.事发之后—Update,触发点什

2021-05-31 20:27:48 63055

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 28-数据库设计(事务,ACID,锁,避免死锁,存储过程)

课程目标1 数据库事务和数据库锁2 触发器、游标、视图、自定义函数、3 字段类型、字段可空、统计字段、逻辑删除环境准备:Microsoft SQL Server Management Studio 18 2012以上;一.事务数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成一条sql语句,执行的时候,要么都成功,要么都失败;--

2021-05-31 20:26:55 63508

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 27-数据库设计(三大范式,设计工具)

数据库设计:1 数据库设计PowerDesigner&三大范式2 命名风格、主键选择、外键、存储过程3 数据库事务和数据库锁4 触发器、游标、视图、自定义函数、5 字段类型、字段可空、统计字段、逻辑删除环境准备:PowerDesigner工具下载:链接:https://pan.baidu.com/s/1h2K4iKk0zDWNQUFuUKPbGA提取码:zx401.数据库设计的重要性​ 要谈数据库性能—直接和数据库设计挂钩;​ 如果不合理-----后续的开发,升级的时候,

2021-05-31 20:25:36 63607

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 26-AOP实现原理

一:装饰器实现AOP/// <summary>/// 装饰器模式实现静态代理/// AOP 在方法前后增加自定义的方法/// </summary>public class DecoratorAOP{ public static void Show() { User user = new User() { Name = "看看看看", Password = "1231231231

2021-05-31 16:39:03 63339 2

原创 (VIP-朝夕教育)2021-05-31 .NET高级班 25-windform实现双色球

public partial class frmSSQ : Form { public frmSSQ() { InitializeComponent(); this.btnStart.Enabled = true; this.btnStop.Enabled = false; } #region Data /// <summary>.

2021-05-31 16:36:19 63201

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 24-AES加密封装

#region AES加密/// <summary>/// AES加密/// </summary>/// <param name="source"></param>/// <param name="key">密钥</param>/// <param name="iv">初始向量</param>/// <param name="padding">填充模式</param>//

2021-05-30 13:29:31 65065

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 23-DES加密封装

public class DesEncrypt{ private static byte[] _rgbKey = ASCIIEncoding.ASCII.GetBytes(Constant.DesKey.Substring(0, 8));//自定义密钥 private static byte[] _rgbIV = ASCIIEncoding.ASCII.GetBytes(Constant.DesKey.Insert(0, "w").Substring(0, 8));//自定义密钥

2021-05-30 13:28:54 63630

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 22-RSA加密封装

/// <summary>/// RSA ECC/// 可逆非对称加密 /// 非对称加密算法的优点是密钥管理很方便,缺点是速度慢。/// </summary>public class RsaEncrypt{ /// <summary> /// 获取加密/解密对 /// 给你一个,是无法推算出另外一个的 /// /// Encrypt Decrypt /// </summary> ///

2021-05-30 13:28:05 63734

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 21-MD5加密封装

/// <summary>/// 不可逆加密/// 1 防止被篡改/// 2 防止明文存储/// 3 防止抵赖,数字签名/// </summary>public class MD5Encrypt{ #region MD5 /// <summary> /// MD5加密,和动网上的16/32位MD5加密结果相同, /// 使用的UTF8编码 /// </summary> /// <param n

2021-05-30 13:27:28 63574

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 20-序列化反序列化(XML,Json,二进制,soap)

public class SerializeHelper{ /// <summary> /// 二进制序列化器 /// </summary> public static void BinarySerialize() { //使用二进制序列化对象 string fileName = Path.Combine(Constant.SerializeDataPath, @"BinarySerialize.txt");/

2021-05-30 08:56:44 63323

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 19-XML文件相关操作

/// <summary>/// Linq to xml示例/// </summary>public class LinqToXml{ /// <summary> /// 创建XML文件 /// </summary> /// <param name="xmlPath"></param> private static void CreateXmlFile(string xmlPath)

2021-05-30 08:55:59 63529

原创 (VIP-朝夕教育)2021-05-30 .NET高级班 18-图片相关操作

/// <summary>/// 图片类/// </summary>public class ImageHelper{ private static string ImagePath = ConfigurationManager.AppSettings["ImagePath"]; private static string VerifyPath = ConfigurationManager.AppSettings["ImagePath"]; //绘图的

2021-05-30 08:55:06 63575

原创 (VIP-朝夕教育)2021-05-29 .NET高级班 17-文件相关操作

/// <summary>/// 文件夹 文件管理 /// 配置文件:AdO.Net 数据库查询;/// IOC配置文件/// </summary>public class MyIO{ /// <summary> /// 配置绝对路径 /// </summary> private static string LogPath = ConfigurationManager.AppSettings["LogPath"];

2021-05-29 17:26:37 64072

原创 (VIP-朝夕教育)2021-05-29 .NET高级班 16-表达式目录树扩展(And,Or,Not)

#region 表达式链接{ Expression<Func<People, bool>> lambda1 = x => x.Age > 5; Expression<Func<People, bool>> lambda2 = x => x.Id > 5; Expression<Func<People, bool>> lambda3 = lambda1.And(lambda2);

2021-05-29 17:25:40 63478

原创 (VIP-朝夕教育)2021-05-27 .NET高级班 15-解析表达式目录树实现替换

{ //修改表达式目录树 Expression<Func<int, int, int>> exp = (m, n) => m * n + 2; OperationsVisitor visitor = new OperationsVisitor(); Expression expNew = visitor.Modify(exp);

2021-05-28 09:11:43 64029

原创 (VIP-朝夕教育)2021-05-28 .NET高级班 14-类映射的四种方法

方法一:泛型缓存+表达式目录树实现Mapperpublic class ExpressionGenericMapper<TIn, TOut>//Mapper`2 //正对于每两个不同类型的组合都会生成副本 { private static Func<TIn, TOut> _FUNC = null;// 在每个副本中都有一个委托 static ExpressionGenericMapper() //静态构造函数 生成表达式目录树

2021-05-28 09:10:45 64204

原创 (VIP-朝夕教育)2021-05-28 .NET高级班 13-表达式目录树的使用

public static void Show(){ { //-----------------------------表达式目录树和委托的比较-------------------------- Func<int, int, int> func = (m, n) => m * n + 2; //匿名方法 Expression<Func<int, int, int>> exp = (m, n) => m

2021-05-28 09:09:41 63984

原创 (VIP-朝夕教育)2021-05-27 .NET高级班 12-异步专题(发展史,多线程,多进程,协程,单线程非阻塞)

一:引言/// .NetFramework1.0就有多线程!/// 进程:计算机概念,程序运行在服务器占据的全部计算机的资源 /// 线程:计算机概念,是进程在相应操作时候的一个最小单元,也包括cpu/硬盘/内存 虚拟概念 /// 进程和线程:包含关系,线程是属于某一个进程的,如果一个进程销毁,线程也就不会存在。 /// 句柄:描述程序中的某一个最小单元,是一个long数字,操作系统通过这个数字识别应用程序。 /// 多线程:计算概念,就是某一个进程中,多个线程同时运行;/// ///

2021-05-27 21:12:51 64273

原创 (VIP-朝夕教育)2021-05-27 .NET高级班 11-yield迭代器的使用

基本使用/// <summary>/// 含有yield的函数说明它是一个生成器,而不是普通的函数。当程序运行到yield这一行时,该函数会返回值,并保存当前域的所有变量状态;/// 等到该函数下一次被调用时,会从上一次中断的地方开始执行,一直遇到下一个yield, 程序返回值, 并在此保存当前状态; 如此反复,直到函数正常执行完成。/// 迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式。

2021-05-27 20:59:14 64044

原创 (VIP-朝夕教育)2021-05-27 .NET高级班 10-Linq操作对象

/// <summary>/// Linq To Object/// .NetFramework3.0的一个非常重大的改变/// Linq专门用来做数据处理/// </summary>public class LinqShow{ #region Data Init private List<Student> GetStudentList() { #region 初始化数据 List<Student&

2021-05-26 22:16:58 65071

原创 (VIP-朝夕教育)2021-05-25 .NET高级班 09-扩展方法的使用

#region 扩展方法 3.0{ //普通方法调用 Student student = new Student() { Id = 1, Name = "Mr.zhang", Age = 25, ClassId = 2 }; student.Study(); //扩展方法调用 ExtendMethod.StudyPractise(student); // student.Stud

2021-05-25 17:32:07 65948

原创 (VIP-朝夕教育)2021-05-25 .NET高级班 08-匿名类的使用(object,var,dynamic)

#region 3.0出了个匿名类 { Console.WriteLine("*****************匿名类**************"); Student student = new Student() { Id = 1, Name = "Richard", Age = 25, ClassId = 2 }; student.Study(); //-----------------

2021-05-25 17:28:06 65728

原创 (VIP-朝夕教育)2021-05-25 .NET高级班 07-Lambda表达式

public class LambdaShow{ public delegate void NoReturnNoPara();//无参数无返回值委托 public delegate void NoReturnWithPara(string x, string y);//有参数无返回值委托 public delegate int WithReturnNoPara(); public delegate string WithReturnWithPara(out int x, r

2021-05-25 17:26:47 65718

原创 (VIP-朝夕教育)2021-05-25 .NET高级班 06-winform底层原理的讲解(发布订阅)实现控件

触发的事件函数public static void Publisher(){ Phone phone = new Phone() { Id = 123, Name = "华为P9", Price = 2499 }; // 执行订阅 Subscriber(); //价格变动会触发订阅者里的函数 phone.Price = 500;}发布者/// <summary>/// 事件的发布

2021-05-25 09:46:39 66001

原创 (VIP-朝夕教育)2021-05-25 .NET高级班 05-手写ORM数据库增删改查

public class ServiceDal : IServiceDal{ public static readonly string Customers = ConfigurationManager.ConnectionStrings["Customers"].ToString();//获取配置文件中连接字符串 /// <summary> /// 增 /// </summary> /// <typeparam name="T"&gt

2021-05-25 09:39:45 66004

原创 (VIP-朝夕教育)2021-05-24 .NET高级班 04-委托和事件

委托委托太常见了,能灵活运用可以使你在编程中游刃有余。简单说它就是一个能把方法当参数传递的对象,而且还知道怎么调用这个方法,同时也是粒度更小的“接口”(约束了指向方法的签名)委托的简单使用1.定义Student类/// <summary>/// 学生类/// </summary>public class Student{ public int Id { get; set; } public string Name { get; set; }

2021-05-24 19:40:39 66465

原创 (VIP-朝夕教育)2021-05-24 .NET高级班 03-特性

一:基本使用执行特性中的方法1.特性的定义/// <summary>/// 自定义特性/// AllowMultiple =true:标记在特性上的特性,其实是对特性的一种约束;/// Inherited =true:约束当前特性是否可以继承/// AttributeTargets.All:当前特性可以标记在所有的元素上/// AttributeUsage:在定义特性的时候,对特性的一种约束[AttributeUsage(AttributeTargets.All, AllowMu

2021-05-24 10:59:31 66377 1

原创 (VIP-朝夕教育)2021-05-23 .NET高级班 02-反射

原理图/// <summary> /// 1 dll-IL-metadata-反射 /// 2 反射加载dll,读取module、类、方法 /// 3 反射创建对象,反射+简单工厂+配置文件 ,破坏单例 创建泛型 /// 反射反射程序员的快乐 /// 反射是无处不在,MVC AOP IOC ORM Attribute /// IL:中间语言,标准的面向对象语言,但是不太好阅读 /// metadata:元数据, 数据清单,只是

2021-05-23 22:49:02 67622 1

原创 (VIP-朝夕教育)2021-05-22 .NET高级班 01-泛型

一:泛型执行原理图二:获取数据类型三种方法(普通类型,Object,泛型)1.三种方法的调用int iValue = 123;string sValue = "456";DateTime dtValue = DateTime.Now;object oValue = "黄磊";{ Console.WriteLine("***********************Common***********************"); CommonMethod.ShowInt(iVal

2021-05-22 19:21:07 69007 1

原创 2021-05-22 仓库温控系统(Winform) 20 PanelPage面板自适应

private void panelPage_SizeChanged(object sender, EventArgs e){ foreach(Control c in panelPage.Controls) { Form f = c as Form; f.WindowState = FormWindowState.Normal; f.SuspendLayout(); f.Size = panelPage.Size;

2021-05-22 07:40:39 69891 1

原创 2021-05-21 仓库温控系统(Winform) 19 窗体拖动功能实现

Point point = new Point();bool isMove = false;private void panelTop_MouseDown(object sender, MouseEventArgs e){ point = e.Location;//按住的点 isMove = true;}private void panelTop_MouseMove(object sender, MouseEventArgs e){ if(e.Button==Mou

2021-05-21 19:54:55 70583 1

原创 2021-05-21 仓库温控系统(Winform) 18 封装Panel中显示Form页方法

public static class FormUtility{ //静态类中的静态方法---扩展方法 //检查一个Form是否已打开 public static bool CheckOpenForm(string frmName) { bool bl = false; foreach (Form f in Application.OpenForms) { if (f.Name == frmName)

2021-05-21 19:54:06 70357 1

原创 2021-05-21 仓库温控系统(Winform) 17 定时器的使用

System.Timers.Timer timer = null;private void InitStatusInfo(){ string uName = this.Tag.ToString(); lblLoginUser.Text = uName; //时间 动态时间条--- 计时器 (Timers.Timer) lblLoginTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); timer

2021-05-21 00:21:55 71624 1

原创 2021-05-21 仓库温控系统(Winform) 16 扩展控件-PageButton

[DefaultEvent("Click")]public partial class UPageButton : UserControl{ public UPageButton() { InitializeComponent(); } /// <summary> /// 按钮文本 /// </summary> public string BtnText { get { return

2021-05-21 00:21:20 71465 1

原创 2021-05-21 仓库温控系统(Winform) 15 扩展控件-IconButton

public partial class UIconButton : Button{ public UIconButton() { InitializeComponent(); //尺寸 字体 字号 FlatStyle FlatAppearance ForeColor this.Size = new Size(30, 30); this.Font = new Font("Webdings", 10.8F);

2021-05-21 00:20:47 71358 1

原创 2021-05-21 仓库温控系统(Winform) 14 扩展控件-MenuButton

[DefaultEvent("Click")]public partial class UMenuButton : UserControl{ public UMenuButton() { InitializeComponent(); } /// <summary> /// 按钮图标 /// </summary> public Image BtnImg { get { return p

2021-05-21 00:20:17 71665

原创 2021-05-21 仓库温控系统(Winform) 13 登录页面退出确认框处理

private void FrmLogin_FormClosing(object sender, FormClosingEventArgs e){ if (MsgBoxHelper.MsgBoxConfirm("退出系统", "您确定要退出系统吗?") == DialogResult.Yes) { Application.ExitThread(); } else e.Cancel = true;}...

2021-05-21 00:19:46 71483 1

原创 2021-05-21 仓库温控系统(Winform) 12 消息框的封装

public class MsgBoxHelper{ /// <summary> /// 消息提示框 成功 /// </summary> /// <param name="titile"></param> /// <param name="Msg"></param> /// <returns></returns> public static Dialog

2021-05-21 00:19:15 71147

原创 2021-05-21 仓库温控系统(Winform) 11 扩展控件-CircleButton

public partial class UCircleButton : Button { public UCircleButton() { InitializeComponent(); } private const int WM_PAINT = 0xF; private Color bgColor = Color.Gray;

2021-05-21 00:17:52 71290

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除