小编Eug*_*kal的帖子

是否可以使用.net RSACryptoServiceProvider使用私钥加密?

我知道RSACryptoServiceProvider可以使用公钥加密,然后可以使用私钥解密.

是否可以使用私钥加密并使用RSACryptoServiceProvider使用公钥解密?

.net cryptography rsa

18
推荐指数
5
解决办法
3万
查看次数

String类中的线程安全性

使用String类如下面的方法从本地变量构建字符串是否安全?假设从多个线程调用下面的方法.

public static string WriteResult(int value, string name)
{
    return string.Format("Result: value={0} name={1}", value, name);
}

public static string WriteResult2(int value, string name)
{
    return "Result: value=" + value + " name=" + name;
}
Run Code Online (Sandbox Code Playgroud)

或者我需要使用StringBuilder以确保线程安全吗?

c# multithreading thread-safety

18
推荐指数
3
解决办法
3956
查看次数

ASP.NET Web API 2具有Task.Run性能的异步操作方法

我正在尝试使用几个ASP.NET Web API 2.0端点进行基准测试(使用Apache工作台).其中一个是同步和一个异步.

        [Route("user/{userId}/feeds")]
        [HttpGet]
        public IEnumerable<NewsFeedItem> GetNewsFeedItemsForUser(string userId)
        {
            return _newsFeedService.GetNewsFeedItemsForUser(userId);
        }

        [Route("user/{userId}/feeds/async")]
        [HttpGet]
        public async Task<IEnumerable<NewsFeedItem>> GetNewsFeedItemsForUserAsync(string userId)
        {
            return await Task.Run(() => _newsFeedService.GetNewsFeedItemsForUser(userId));
        }
Run Code Online (Sandbox Code Playgroud)

在观看了Steve Sanderson的演讲之后,ab -n 100 -c 10 http://localhost....向每个端点发出了以下命令.

我很惊讶,因为每个端点的基准似乎大致相同.

关闭史蒂夫解释说我期待异步端点更高效,因为它会立即将线程池线程释放回线程池,从而使它们可用于其他请求并提高吞吐量.但数字看起来完全一样.

我在这里误解了什么?

c# asp.net task-parallel-library async-await asp.net-web-api

15
推荐指数
1
解决办法
3万
查看次数

我怎么能在int上执行方法?没有NullReferenceException设置为null?

我在MSDN上看过:

null关键字是表示空引用的文字,不引用任何对象.

但我看到以下代码运行时没有抛出任何异常:

int? i = null;
var s = i.ToString();
Run Code Online (Sandbox Code Playgroud)

因此,如果变量i为null,为什么我可以执行它的方法?

c# nullable

14
推荐指数
2
解决办法
696
查看次数

在yii2中迁移时,异常'无法找到驱动程序'

这是我的堆栈跟踪:

  Exception 'yii\db\Exception' with message 'could not find driver'

in /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php:534

#0 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(836): yii\db\Connection->open()
        #1 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(823): yii\db\Connection->getMasterPdo()
        #2 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(208): yii\db\Connection->getSlavePdo()
        #3 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(816): yii\db\Command->prepare(true)
        #4 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(350): yii\db\Command->queryInternal('fetchAll', NULL)
        #5 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(198): yii\db\Command->queryAll()
        #6 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(97): yii\db\mysql\Schema->findColumns(Object(yii\db\TableSchema))
        #7 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Schema.php(140): yii\db\mysql\Schema->loadTableSchema('migration')
        #8 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/MigrateController.php(121): yii\db\Schema->getTableSchema('{{%migration}}', true)
        #9 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(610): yii\console\controllers\MigrateController->getMigrationHistory(NULL)
        #10 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(102): yii\console\controllers\BaseMigrateController->getNewMigrations()
        #11 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
        #12 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
        #13 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array)
        #14 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array)
        #15 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array)
        #16 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(161): yii\base\Module->runAction('migrate', Array)
        #17 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(137): yii\console\Application->runAction('migrate', Array)
        #18 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
        #19 /opt/lampp/htdocs/advanced/yii(31): yii\base\Application->run()
        #20 …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo yii2 yii2-advanced-app

10
推荐指数
2
解决办法
3万
查看次数

检查DataTable中是否存在行?

我有一个数据表和一行.我想将行导入数据表,只要数据表中不存在该行.

我怎样才能做到这一点?

c# datatable datarow

8
推荐指数
4
解决办法
5万
查看次数

手动将SelectListItem添加到SelectList以在DropDownListFor中使用

当我创建一个SelecList时,我希望能够手动添加SelecListItem并执行此操作,我使用以下代码:

List<SelectListItem> Provinces = new List<SelectListItem>();
Provinces.Add(new SelectListItem() { Text = "Northern Cape", Value = "NC" });
Provinces.Add(new SelectListItem() { Text = "Free State", Value = "FS" });
Provinces.Add(new SelectListItem() { Text = "Western Cape", Value = "WC" });

SelectList lstProvinces = new SelectList(Provinces);
Run Code Online (Sandbox Code Playgroud)

而不是这个:

var lstProvinces = new SelectList(new[] { "Northern Cape", "Free State", "Western Cape" });
Run Code Online (Sandbox Code Playgroud)

在我创建SelectList之后,我通过ViewBag将它传递给DropDownListFor:

Html.DropDownListFor(m => m.StartPointProvince, (SelectList)ViewBag.Provinces)
Run Code Online (Sandbox Code Playgroud)

但是,当我使用第一种方法创建SelectList时,它不起作用 - 它将3个值添加到下拉列表中,但所有值显示为: 码 *输出截图

但是,当我使用第二种方法时,它工作正常.我希望使用第一种方法,因为我希望能够指定每个项目的Text AND值.

c# asp.net selectlist html.dropdownlistfor asp.net-mvc-4

8
推荐指数
3
解决办法
7万
查看次数

使用乐观并发方法处理多个生产者插入唯一"不可变"实体的有效方法是什么?

假设一个具有多个并发生成器的系统,每个生成器都努力使用以下可通过其名称唯一标识的公共实体来持久保存一些对象图:

CREATE TABLE CommonEntityGroup(
    Id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
    Name NVARCHAR(100) NOT NULL
);
GO

CREATE UNIQUE INDEX IX_CommonEntityGroup_Name 
    ON CommonEntityGroup(Name)
GO


CREATE TABLE CommonEntity(
    Id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
    Name NVARCHAR(100) NOT NULL,
    CommonEntityGroupId INT NOT NULL,
    CONSTRAINT FK_CommonEntity_CommonEntityGroup FOREIGN KEY(CommonEntityGroupId) 
        REFERENCES CommonEntityGroup(Id)
);
GO

CREATE UNIQUE INDEX IX_CommonEntity_CommonEntityGroupId_Name 
    ON CommonEntity(CommonEntityGroupId, Name)
GO
Run Code Online (Sandbox Code Playgroud)

例如,生产者A保存了一些CommonEntityMeetings,而生产者B保存了CommonEntitySets.他们中的任何一个都必须坚持CommonEntity与他们的特定物品相关.

基本上,关键点是:

  • 有独立的生产者.
  • 它们同时运作.
  • 理论上(尽管可能会改变,现在还不完全正确),它们将通过相同的Web服务(ASP.Net Web API)运行,只需使用各自的端点/"资源".因此,理想的解决方案不应该依赖于此.
  • 他们努力坚持包含可能尚未存在的CommonEntity/CommonEntityGroup对象的对象的不同图形.
  • CommonEntity/CommonEntityGroup 一旦创建就是不可变的,之后永远不会被修改或删除 …

c# sql-server entity-framework optimistic-concurrency sql-insert

8
推荐指数
1
解决办法
656
查看次数

在比较混帐LFS LS-文件与GIT LS-文件":(ATTR:过滤器= LFS)"一个可靠的方法来检测未通过LFS管理LFS文件?

我试图找到一种方法来确定git存储库中的文件是否由git-lfs正确管理.

到目前为止,我发现比较结果git lfs ls-files并且git ls-files ':(attr:filter=lfs)'似乎给了我想要的东西.

Add-Type -AssemblyName 'System.Linq';
[string[]] $actualLfsFilePaths = git lfs ls-files | `
    ForEach-Object `
    {
        #'12345678 * my.dll' - not all lfs versions support -n flag, so it is better to be conservative
        $_.Split(' ', 3)[2]
    };
[string[]] $shouldBeUnderLfsFilePaths = git ls-files ':(attr:filter=lfs)';
$filePathsNotUnderLfs = [System.Linq.Enumerable]::ToArray(
    [System.Linq.Enumerable]::Except($shouldBeUnderLfsFilePaths, $actualLfsFilePaths)
    );
$count = $filePathsNotUnderLfs.Count;
Write-Host "There are $($count) lfs files that are not under lfs";
foreach ($filePathNotUnderLfs in $filePathsNotUnderLfs)
{
    Write-Host "`t'$filePathNotUnderLfs'";
} …
Run Code Online (Sandbox Code Playgroud)

git powershell tfs git-ls-files git-lfs

7
推荐指数
1
解决办法
197
查看次数

magento 根目录中的“法师”文件

我目前在开发服务器上设置了 Magento(远程,SSH 访问)。我想了解 magento 根目录中的“法师”文件是什么?它是如何工作的?

php magento

5
推荐指数
1
解决办法
1963
查看次数