<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>yycoding-记录编程点滴</title><description>.NET Developer,前微软最有价值专家(2012-2016)</description><link>https://www.yycoding.xyz/</link><pubDate>Tue, 28 Apr 2026 03:38:25 GMT</pubDate><copyright> ©2011-2026 yycoding.xyz</copyright><generator>Moonglade v12.9.1</generator><language>en-US</language><item><title>让站点支持TLS 1.2</title><link>https://www.yycoding.xyz/post/2021/5/17/make-website-support-tls-12</link><description>本博客源自Moonglade项目，原博主采用的是全套Azure部署模式（包括Azure App Service，Azure SQLServer等等），但是这需要钞能力才能完成。由于贫穷，本人购买的是一台云服务器，网站运行在IIS上，后台数据库使用的免费的SQLServer Express版本。     为了安全原因，将站点升级为了HTTPS，目前这个也很简单，在各大公有云网站都能申请免费期为1年的DV证书，申请次数目前也没有限制，1年到期之后，再次申请即可，当然也可以花钱购买证书，如果使用Azure，上面也有免费的证书，至于如何申请SSL证书，以及如何为站点配置证书以支持HTTPS，这里不展开，网上有很多相关教程。     但是HTTPS站点就一定是安全的吗？我们可以去https://www.ssllabs.com/ssltest/ 这个网站评估一下自身站点，我的站点评估结果是B，提示 …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Database</category><guid isPermaLink="false">92E757FC-50CA-4BA0-87A7-CCAE9734456F</guid><pubDate>Sun, 16 May 2021 19:32:02 GMT</pubDate></item><item><title>使用EntityFrameworkCore对包含DbContext的类库生成迁移脚本</title><link>https://www.yycoding.xyz/post/2020/4/17/create-migrations-for-dbcontext-in-class-library-using-entityframeworkcore</link><description>      最近在学习EntityFramework Core的相关东西，其实数据库访问的方式有很多种比如有上古神器ADO.NET ，还有从java泊来的NHibernate等，当然还包括之前的Entity Framework，还有比较轻量级的Dapper等。关于数据访问，当然可以用手写SQL，然后用ADO.NET那一套来处理，但是都2020年了，这么搞显然不够高级，而且不够效率，最重要的是容易996。但是据我所知，并不是所有的公司都会去用ORM，就拿我曾经待过的还算比较大的一家公司来说，一般开发人员是接触不到DB的，对数据库的一些操作操作，有专门的DBA来管理，比如DBA会对某张表默认生成CRUD的存储过程，去调用就可以了，对于查询，一般的也是开发人员用ADO.NET 自己写SQL语句，最多就是把ADO.NET封装一下，提供给一般的开发人员使用。甚至一般的LINQ在有些公司都是禁止使用的 …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Database</category><guid isPermaLink="false">FBBE618E-CC72-4E6A-99D9-F2C8AD512088</guid><pubDate>Fri, 17 Apr 2020 00:18:20 GMT</pubDate></item><item><title>SQLite入门及优化</title><link>https://www.yycoding.xyz/post/2020/4/14/sqlite-introduction-and-optimization</link><description>SQLite是一个小型的关系型数据库系统，应用非常广泛，通常可以作为本地数据的临时存储，比如一些移动App使用SQLite作为本地存储，下面简单介绍一下SQLite的使用，以及注意事项。
    在C#中使用SQLite比较简单。首先要去官网下载System.Data.SQLite 文件，这个是对SQLite3的C语言dll的.NET包装，根据当前的.NET版本以及操作系统是32位，还是64位，下载不同的程序集。当然，还可以在Visual Studio中，通过NuGet packages添加。
    下载完成之后，在项目中引用System.Data.SQLite.dll就可以使用ADO.NET以类似访问SQL Server的方式访问SQLite了，当然，上面下载的安装包中，还包括System.Data.SQLite.EF6.dll，System.Data.SQLite. …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">96CBBBAF-74ED-45FC-A8F2-7C6256E7C210</guid><pubDate>Mon, 13 Apr 2020 18:34:20 GMT</pubDate></item><item><title>记一次Redis被攻击的事件</title><link>https://www.yycoding.xyz/post/2015/11/12/an-production-accidents-caused-by-redis-attacked</link><description>最近几个月非常忙，所以很少有时间写博客，这几天终于闲了一些，于是就在整理平时的一些笔记。恰好这几天Redis服务器发生了问题，就记录一下。
我司有两款分别是2B和2C的App，类似于阿里旺旺的卖家版和买家版，里面有一个聊天的功能模块。双方可以通过这个功能聊天。内部通讯使用了环信，只是将本地账号和环信账号进行了关联。其他的信息，比如用户基本信息，好友关系，群组关系等存在Redis中，为防止Redis出现问题导致数据丢失（尽管配置了持久化），同时使用消息队列将数据写入SQLServer中进行了冗余。这是一种Redis的典型使用场景，从速度和效率上满足要求。
线上环境一直运行正常，但是在上周日（一个本该休息的日子），领导打电话过来说线上环境的用户登录不了，无法聊天，没有群相关信息。我想估计是Redis出现了问题，让领导不要着急，先让运维看看服务是否还在运行，不行的话，把Redis重启一下，因 …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">A64CE980-293D-4A27-90D6-BAD22A56889D</guid><pubDate>Wed, 11 Nov 2015 17:05:00 GMT</pubDate></item><item><title>.NET中使用Redis (二)</title><link>https://www.yycoding.xyz/post/2014/11/23/introduct-redis-in-dotnet-part2</link><description>很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端，以及如何在.NET中调用Redis读取数据。本文简单介绍如何设计NoSQL数据库，以及如何使用Redis来存储对象。
和传统的关系型数据库不同，NoSQL大部分都是以键值对存储在内存中的，我们不能直接把RDBMS里面的一些做法直接移植到NoSQL中来，一个最主要的原因是，在NoSQL中缺少RDBMS中的一些诸如join ,union以及一些在关系型数据库中效率很高的执行语句，这些在NoSQL不能很好的支持，或者说效率低。
下文首先通过例子介绍在SQLServer中设计一个DB系统以及与NoSQL环境中设计一个DB的区别，最后演示如何在Redis中对数据进行读写操作。
一个简单的博客系统
假设我们要设计一个简单的博客系统，用户可以注册一个博客(Blog)，然后可以在上面写文章(Post)，文章可以分类( …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Database</category><guid isPermaLink="false">05E4B0FB-5525-4ABF-ADAF-24D8F6B5349B</guid><pubDate>Sat, 22 Nov 2014 23:59:00 GMT</pubDate></item><item><title>.NET应用程序与数据库交互的若干问题</title><link>https://www.yycoding.xyz/post/2014/7/3/application-performance-optimization-when-interact-with-database</link><description>我们知道，在应用程序中与数据库进行交互是一个比较耗时的过程，首先应用程序需要与应用程序建立连接，然后将请求发送到数据库，数据库执行操作，然后将结果集返回。所以在程序中，要尽量晚的与数据库建立连接，并且较早的释放连接。
然而在很多时候，我们需要频繁的查询和更新数据库中的记录，比如我们的一张表中有1000条记录，假设有一个场景，需要一条一条的判断这1000条记录，如果不存在，插入；如果存在，更新某一个字段。这种场景很常见，比如银行的用户转账或者汇款，在完成之后需要更新账户余额等操作。
最近项目中也遇到了类似的情况，通过实践也简单总结了一些如何提高应用程序执行效率的方法，当然这些都是通过减少和数据库进行交互以及当数据达到一定程度，通过批量实现的。下面就简要介绍一下。
一 场景
最近在项目中要实现一个类似大众点评团购这种筛选的功能，用户可以根据系统提供的城市，商区，美食类别列表来进行筛选， …</description><author>xjdx2008@126.com</author><category>DotNet Framework</category><category>Database</category><guid isPermaLink="false">904C70AF-DEC3-4899-8D5C-7666ECA2C068</guid><pubDate>Thu, 03 Jul 2014 03:43:00 GMT</pubDate></item><item><title>1ms引发的问题</title><link>https://www.yycoding.xyz/post/2014/5/21/difference-between-dotnet-datetime-and-sqlserver-datetime</link><description>最近在跟SQLServer数据库进行交互的时候发现一个奇怪的问题，在往数据库里边插入日期型数据的时候，在C#里面赋值的为 2014/05/19 23:59:59，但是存到数据库里边就变成了2014/05/20 00:00:00。
问题场景
当时需求是这样的，产品的销售策略要求管理员输入一个产品销售的开始日期SalesStart和结束日期SalesEnd，然后业务会根据当前的时间判断是否在这个产品销售范围内，如果不在则显示未开始或者已过期，所以存储的时候，对SalesEnd进行了处理，在存到数据库的时候，保存的是当天的23:59:59，当时我的处理是这样的：在截止日期加1天然后减去以1毫秒，代码如下：
ProductSalesPolicyModel productSaleModel;
productSaleModel = new ProductSalesPolicyModel(); …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">78F296CB-444B-46B1-A9CD-37A8D8445333</guid><pubDate>Wed, 21 May 2014 05:19:00 GMT</pubDate></item><item><title>.NET中使用Redis</title><link>https://www.yycoding.xyz/post/2014/5/17/introduct-redis-in-dotnet</link><description>Redis是一个用的比较广泛的Key/Value的内存数据库，新浪微博、Github、StackOverflow 等大型应用中都用其作为缓存，Redis的官网为http://redis.io/。
最近项目中需要使用Redis，这里简单记录一下Redis的安装，以及如何在.NET中使用Redis。
Redis安装与启动
1. 下载Redis
Redis本身没有提供Windows版本的，并且在Windows上也不太稳定，一般都将其部署到Linux环境下，Redis可以在其官网上下载， MSOpenTech中提供了Windows版本，这里为了学习安装这一版本。

点击跳转到Github后，直接点击Zip下载。下载后根据自己计算机的版本选择32位或者64位进行安装。我将64位的解压后放到D:\Redis文件夹下，同时将文件夹内的redis.conf也拷贝到该目录下，这个是redis的配 …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">441AECBC-04D2-4403-A6C4-FAD4736FBF7F</guid><pubDate>Sat, 17 May 2014 02:16:00 GMT</pubDate></item><item><title>浅谈SQL Server数据库分页</title><link>https://www.yycoding.xyz/post/2014/5/1/introduct-server-side-paging-with-sql-server</link><description>数据库分页是老生常谈的问题了。如果使用ORM框架，再使用LINQ的话，一个Skip和Take就可以搞定。但是有时由于限制，需要使用存储过程来实现。在SQLServer中使用存储过程实现分页的已经有很多方法了。之前在面试中遇到过这一问题，问如何高效实现数据库分页。刚好上周在业务中也遇到了这个需求，所以在这里简单记录和分享一下。
一 需求
这里以SQLServer的示例数据库NorthWind为例，里面有一张Product表，现在假设我们的需求是要以UnitPrice降序排列，并且分页，每一页10条记录。要求服务端分页。参数为每页记录数和页码。
二 实现
Top分页
当时采用的最直接做法就是使用两个Top来实现， 最后返回的结果是升序的，在C#代码里再处理一下就可以了。 这里作为演示，语句中使用 * 为了方便，实际开发中要替换为具体的列名。下面的方法简单吧。
SELECT …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">387F8CB7-73BD-4B61-852E-35D84054A309</guid><pubDate>Thu, 01 May 2014 00:46:00 GMT</pubDate></item><item><title>MongoDB随笔3：使用索引</title><link>https://www.yycoding.xyz/post/2011/7/19/2110989</link><description>索引
索引通常能够极大的提高查询的效率。在系统中使用查询时，应该考虑建立相关的索引。在MongoDB中创建索引相对比较容易。
MongoDB中的索引在概念上和大多数关系型数据库如MySQL是一样的。当你在某种情况下需要在MySQL中建立索引,这样的情景同样适合于MongoDB。
基本操作
索引是一种数据结构，他搜集一个集合中文档特定字段的值。MongoDB的查询优化器能够使用这种数据结构来快速的对集合(collection)中的文档(collection)进行寻找和排序.准确来说，这些索引是通过B-Tree索引来实现的。
在命令行中，可以通过调用ensureIndex()函数来建立索引，该函数指定一个到多个需要索引的字段。沿用在前面的随笔中的例子，我们再things集合中的j字段上建立索引：

&amp;gt; db.things.ensureIndex({j:1}) …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">8721368C-3200-4E5B-AAF1-646D6EF7C6F4</guid><pubDate>Mon, 18 Jul 2011 18:04:00 GMT</pubDate></item><item><title>MongoDB随笔2：使用查询</title><link>https://www.yycoding.xyz/post/2011/7/16/2108450</link><description>一.通过查询获取数据
在深入讨论查询之前，首先来了解一下查询返回的结果&amp;mdash;&amp;mdash;游标(cursor)对象。上一篇文章中我们使用的是最简单的find() 查询方法，它会返回结果集中的所有对象，稍后将讨论如何查询特定数据集。
   为了看到集合中的所用元素，我们需要使用到find ()函数返回的cursor对象。让我们来重复上一篇文章中使用的find()函数，不过这次我们使用的是find()返回的cursor对象，然后使用while循环遍历cursor对象输出：


&amp;gt; var cursor=db.things.find();&amp;gt; while(cursor.hasNext()) printjson(cursor.next());{ "_id" : ObjectId("4e205546b3fcd89b00572c31"), "name" : "mongo" …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">BBE0C9CC-1695-43A2-97BF-E8351C32B70B</guid><pubDate>Sat, 16 Jul 2011 14:45:00 GMT</pubDate></item><item><title>MongoDB随笔1：简单配置</title><link>https://www.yycoding.xyz/post/2011/7/15/introduce-mongodb-part1</link><description>     Mongo（也译芒果）名字来自humongous，意思是巨大无比的，极大的。它是一个高性能，开源，无模式的文档型NOSQL数据库。今天参照着官方的QuickStart配置了一下环境。
     第一步：下载Mongodb编译好了的版本，本人机器为Win7 32位的专业版本，下载对应的Windows 32-bit版本。
     第二步：将下载的Zip文件解压，修改文件夹名称，名称遵循一般的文件命名规则即可，我将其修改为 mongodb，解压后的文件放在C:\mongodb中，然后建立一个存放mongodb数据的文件夹，本人建立的文件夹为c:\data\db。     第三步：以管理员身份运行 cmd，将当前目录cd到c：\mongodb\bin 下面，然后运行      c:\mongodb\bin&amp;gt;mongod.exe --dbpath c:\data\db,设置数据 …</description><author>xjdx2008@126.com</author><category>Database</category><guid isPermaLink="false">21AA6CEE-CC0E-46C1-BDCA-87B62CDD22C3</guid><pubDate>Fri, 15 Jul 2011 15:08:00 GMT</pubDate></item></channel></rss>