小编Fre*_*dou的帖子

guid到base64,用于URL

问题:有更好的方法吗?

VB.Net

Function GuidToBase64(ByVal guid As Guid) As String
    Return Convert.ToBase64String(guid.ToByteArray).Replace("/", "-").Replace("+", "_").Replace("=", "")
End Function

Function Base64ToGuid(ByVal base64 As String) As Guid
    Dim guid As Guid
    base64 = base64.Replace("-", "/").Replace("_", "+") & "=="

    Try
        guid = New Guid(Convert.FromBase64String(base64))
    Catch ex As Exception
        Throw New Exception("Bad Base64 conversion to GUID", ex)
    End Try

    Return guid
End Function
Run Code Online (Sandbox Code Playgroud)

C#

public string GuidToBase64(Guid guid)
{
    return Convert.ToBase64String(guid.ToByteArray()).Replace("/", "-").Replace("+", "_").Replace("=", "");
}

public Guid Base64ToGuid(string base64)
{
   Guid guid = default(Guid);
   base64 = …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net base64 guid

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

StopWatch.ElapsedTicks和StopWatch.Elapsed.Ticks是否始终相同?

是什么ElapsedTicks以及Elapsed.Ticks在秒表类是什么意思?什么意思可能与预期不同?

.net stopwatch

29
推荐指数
2
解决办法
3064
查看次数

为什么除(+)运算符在VB.NET和C#中表现不同?

如果您在C#和VB.NET中创建新项目,则直接进入立即窗口并键入:

? 567 / 1000
Run Code Online (Sandbox Code Playgroud)

C#将返回0,而VB.NET将返回0.567.

要在C#中获得相同的结果,您需要输入

? 567 / 1000.0
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种差异?为什么C#在1000之后需要显式小数点?

c# vb.net

22
推荐指数
2
解决办法
1万
查看次数

你如何在整数中随机归零?

更新了更新的答案和更好的测试

假设我的号码是382,即101111110.

我怎么能随机将一个不是0的位转到0?

为什么;

既然人们问我原因,我只需要这样做,从整数中删除一点.

基于这里的答案是结果(工作一)
我跑了这个

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static Random random;
        static void Main(string[] args)
        {
            Stopwatch sw;
            int[] test = new int[10] { 382, 256, 1, 257, 999, 555, 412, 341, 682, 951 };

            random = new Random(42);
            for (int j = 0; j < 10; j++)
            {
                sw = Stopwatch.StartNew();
                for (int i = 0; i < 1000000; i++)
                    Perturb(test[j]);
                sw.Stop();
                Console.WriteLine("Perturb " …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net bit-manipulation

17
推荐指数
2
解决办法
2175
查看次数

GUID好盐吗?是我的注册/登录过程有任何缺陷?

如果数据库中的表格如下:

 userid uniqueidentifier
 username varchar(20)
 password varbinary(max)
Run Code Online (Sandbox Code Playgroud)

当用户提交(注册)时,我将用户/传递发送到存储过程.

存储过程创建一个新的GUID(使用NEWID())然后我使用SQL Server 的HashBytes(sha1)函数根据提供的GUID +密码创建密码然后我将值插入上面的表.

当用户提交(登录)时,我将用户/传递发送到存储过程.

存储过程查找用户名并获取用户ID以将guid +密码的hashbyte(sha1)与密码字段进行比较.

你看到那个逻辑中有任何缺陷吗?

hash guid sql-server-2005 salt

16
推荐指数
2
解决办法
4594
查看次数

微软试图用所有这些数据访问策略解决什么问题?

似乎有很多不同的数据访问策略来自微软.有'经典'ADO.NET,Linq2Sql,ADO.NET实体框架,ADO.NET数据服务,ADO.NET动态数据.我确定我错过了一些.对我来说,似乎存在很多关于每个框架适合应用程序架构的混淆.微软试图用所有这些数据访问方法解决什么问题?

ado.net entity-framework linq-to-sql wcf-data-services

12
推荐指数
2
解决办法
875
查看次数

SQL查询需要一个多小时才能执行200k行

我有两个表,每个表有大约200,000行.我已经运行了下面的查询,运行一个多小时后仍然没有完成.对此有什么解释?

SELECT 
    dbo.[new].[colom1],
    dbo.[new].[colom2],
    dbo.[new].[colom3],
    dbo.[new].[colom4],  
    dbo.[new].[Value] as 'nieuwe Value',
    dbo.[old].[Value] as 'oude Value'
FROM dbo.[new]
JOIN dbo.[old] 
    ON dbo.[new].[colom1] = dbo.[old].[colom1] 
    and dbo.[new].[colom2] = dbo.[old].[colom2] 
    and dbo.[new].[colom3] = dbo.[old].[colom3] 
    and dbo.[new].[colom4] = dbo.[old].[colom4] 
where dbo.[new].[Value] <> dbo.[old].[Value]
Run Code Online (Sandbox Code Playgroud)

来自评论;

执行计划

表结构

sql sql-server performance ssms

12
推荐指数
1
解决办法
983
查看次数

将sql server rowversion转换为long或ulong?

rowversion(时间戳)数据类型的正确类型是什么?

我知道它是8个字节,但我找不到MSDN中的链接,它告诉它是有符号还是无符号长.

我应该使用哪些代码,甚至重要吗?

byte[] SqlTimeStamp;

long longConversion;
longConversion = BitConverter.ToInt64(SqlTimeStamp,0);
TimeStamp = BitConverter.GetBytes(longConversion);

ulong ulongConversion;
ulongConversion = BitConverter.ToUInt64(SqlTimeStamp,0);
TimeStamp = BitConverter.GetBytes(ulongConversion);
Run Code Online (Sandbox Code Playgroud)

c# sql-server rowversion

11
推荐指数
3
解决办法
9033
查看次数

当您使用旗帜(Enum)时,您的限制为64.达到限制时有哪些替代方案?

使用.net下的enum,你可以使用的最大数字是ULong.
这意味着最多64个标志.

当你需要超过64个标志时,会有什么选择?

编辑

对不起,我忘了添加这个,替代方案仍然可以使用按位操作 至少这一个; .

使用Josh Einstein的建议,我想出了这个,它有意义吗?

class bitArrayFlag
{
    private const int flagSize = 255; //allow X numbers of flags

    public BitArray flag1;
    public BitArray flag2;
    public BitArray flagN;

    public bitArrayFlag()
    {
        int flagPos = 0;
        bool[] flagBit = new bool[flagSize];

        flagBit[flagPos] = true;
        flag1 = new BitArray(flagBit);

        flagBit[flagPos] = false;
        flagPos += 1;
        flagBit[flagPos] = true;
        flag2 = new BitArray(flagBit);

        //...
        //...
        //...

        flagBit[flagPos] = false;
        flagPos += …
Run Code Online (Sandbox Code Playgroud)

.net

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

如何在WCF中使用自定义序列化或反序列化来强制datacontact的每个属性上的新实例?

我有一个datacontact,其中有许多成员都有自定义类

如果在反序列化时属性为null,我想强制一个新实例.

有没有办法做到这一点?

c# wcf customization datacontract deserialization

9
推荐指数
1
解决办法
2万
查看次数