SQL Server查询用逗号分隔的数据

需求

不同的商品使用逗号分隔保存,现在要求输入指定的商品名称,能够查询到包含该商品的列。

  • 输入 K701 返回第1、2行
  • 输入 K702 返回第2、4行
编号 商品
1 K701
2 K701,K702
3 K701B,K701C
4 2K701,K702

聊聊Navicat造成的数据库死锁问题

Navicat是我比较喜欢的一款工具了,虽然我没有买正版😥😥不过最近经常遇到有小伙伴说“Navicat会导致死锁,不要用”、“Navicat会锁表”等等,于是就有了这篇文章,今天就来聊聊什么情况下会导致死锁。
其实在大多时候,使用Navicat造成死锁的原因都是因为操作不当引起的(基本都是因为图形化界面操作导致)。
下面直接进入正题👇👇

设计模式-原型模式

定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
类型 创建型模式
特点 通过一个对象创建另外一个对象,创建时不需要知道任何创建的细节。
举例 对象复制。

本文以C#为例,先来看类图🔻

设计模式-工厂方法模式

定义 定义一个创建产品的工厂接口,将实际创建工作推迟到子类中去。
类型 创建型模式
特点 相对于简单工厂模式,将创建的逻辑交给调用者,更加符合闭开原则。
举例 数字计算器。

本文以C#为例,先来看类图🔻

.NET Web API使用ModelBinder进行自定义接口参数绑定

背景

我们有一些对外公共接口,为很多不同的调用方提供服务,经常会有调用方因为使用了错误的协议、数据提交方式而导致提交失败,所以我们决定整合一下这个接口,使接口同时支持GETPOST请求,并且数据提交方式支持application/jsonapplication/x-www-form-urlencodedURL参数

C#基元线程同步构造

基元是指可以在代码中使用的最简单的构造。
有两种基元构造:用户模式构造内核模式构造。应尽量使用用户模式构造,它们的速度要比内核构造快很多,因为他们使用了特殊的CPU指令来协调线程(意味着协调是在硬件中发生,所以会快很多)。

设计模式-代理模式

定义 为其他对象提供一个代理通道,来完成对这个对象的访问。
类型 结构型模式
特点 可以对调用者隐藏实际对象。
举例 张三替李四追求王五。

本文以C#为例,先来看类图🔻

设计模式-策略模式

定义 策略模式实际上是定义了一系列算法,他们可以相互替换,但是并不影响算法的调用者。
类型 行为型模式
特点 算法可以相互替换,并不相互影响,具体算法也不会暴露给调用者。
举例 超市结账时,使用不同的优惠方式进行结算。

本文以C#为例,先来看类图🔻