我知道Let\'s Encrypt所做的更改可能会影响旧客户端,因为根证书会过期。请参阅DST 根 CA X3 到期(2021 年 9 月)。
\n但是,我认为这不会影响我,因为我的开发机器是最新的。
\n但从今天开始,我在执行以下操作时收到消息git pull:
fatal: unable to access \'https://git.company.tld/project.git/\': SSL certificate problem: certificate has expired\nRun Code Online (Sandbox Code Playgroud)\n我刚刚下载了最新的 Windows 版 Git (2.33.0),并确认内置的OpenSSL是最新的 ( OpenSSL 1.1.1k 25 Mar 2021),这应该很好。
Let\xe2\x80\x99s 加密证书的 OpenSSL 客户端兼容性更改
\n但错误似乎仍然存在。
\nopenssl s_client -showcerts -connect git.company.tld:443\nRun Code Online (Sandbox Code Playgroud)\n节目
\nopenssl s_client -showcerts -connect git.company.tld:443\nRun Code Online (Sandbox Code Playgroud)\n问题不在于颁发的证书本身,它没有过期并且被 Chrome(Windows证书存储)和 Firefox 接受。
\n我有以下情况.
我有一个Java类,它继承自另一个基类并覆盖一个方法.基本方法不会抛出异常,因此没有throws ...声明.
现在我自己的方法应该能够抛出异常,但我要么选择了
两者都不满意,因为第一个会默默地忽略异常(好吧我可以执行一些日志记录)而第二个会因为方法标题不同而产生编译器错误.
public class ChildClass extends BaseClass {
@Override
public void SomeMethod() {
throw new Exception("Something went wrong");
}
}
Run Code Online (Sandbox Code Playgroud) 如果我使用ShellExecute(或在.net中System.Diagnostics.Process.Start())运行进程,则启动文件名进程不需要是完整路径.
如果我想开始记事本,我可以使用
Process.Start("notepad.exe");
Run Code Online (Sandbox Code Playgroud)
代替
Process.Start(@"c:\windows\system32\notepad.exe");
Run Code Online (Sandbox Code Playgroud)
因为direcotry c:\windows\system32是PATH环境变量的一部分.
如何在不执行进程且不解析PATH变量的情况下检查PATH上是否存在文件?
System.IO.File.Exists("notepad.exe"); // returns false
(new System.IO.FileInfo("notepad.exe")).Exists; // returns false
Run Code Online (Sandbox Code Playgroud)
但我需要这样的东西:
System.IO.File.ExistsOnPath("notepad.exe"); // should return true
Run Code Online (Sandbox Code Playgroud)
和
System.IO.File.GetFullPath("notepad.exe"); // (like unix which cmd) should return
// c:\windows\system32\notepad.exe
Run Code Online (Sandbox Code Playgroud)
是否有预定义的类可以在BCL中执行此任务?
我有一个通用的
List<MyClass>
Run Code Online (Sandbox Code Playgroud)
where MyClass属性InvoiceNumber包含如下值:
200906/1
200906/2
..
200906/10
200906/11
200906/12
我的名单必然是一个
BindingList<T>
Run Code Online (Sandbox Code Playgroud)
支持使用linq进行排序:
protected override void ApplySortCore(
PropertyDescriptor property, ListSortDirection direction)
{
_sortProperty = property;
_sortDirection = direction;
var items = this.Items;
switch (direction)
{
case ListSortDirection.Ascending:
items = items.OrderByDescending(x => property.GetValue(x)).ToList();
break;
case ListSortDirection.Descending:
items = items.OrderByDescending(x => property.GetValue(x)).ToList();
break;
}
this.Items = items;
}
Run Code Online (Sandbox Code Playgroud)
但是默认的比较器排序(假设)如下:
200906/1
200906/10
200906/11
200906/12
200906/2
在这种情况下这是令人讨厌的.
现在我想用自己的方式IComparer<T>.它看起来像这样:
public class MyComparer : IComparer<Object>
{
public int Compare(Object stringA, Object …Run Code Online (Sandbox Code Playgroud) 我有一个界面
public interface MyInterface<TKey, TValue>
{
}
Run Code Online (Sandbox Code Playgroud)
实现是无关紧要的.现在我想检查给定类型是否是该接口的实现.这种方法失败了
public class MyClass : MyInterface<int, string>
{
}
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做检查.
public void CheckIfTypeImplementsInterface(Type type)
{
var result1 = typeof(MyInterface<,>).IsAssignableFrom(type); --> false
var result2 = typeof(MyInterface<int,string>).IsAssignableFrom(type); --> true
}
Run Code Online (Sandbox Code Playgroud)
为了使result1真实,我该怎么做?
我知道我可以通过使用FORCE INDEX (abc)关键字来改变MySQL执行查询的方式.但有没有办法改变执行顺序?
我的查询如下所示:
SELECT c.*
FROM table1 a
INNER JOIN table2 b ON a.id = b.table1_id
INNER JOIN table3 c ON b.itemid = c.itemid
WHERE a.itemtype = 1
AND a.busy = 1
AND b.something = 0
AND b.acolumn = 2
AND c.itemid = 123456
Run Code Online (Sandbox Code Playgroud)
我有一个关键用于我使用的每个关系/约束.如果我在这个语句上运行解释,我看到mysql首先开始查询c.
id select_type table type
1 SIMPLE c ref
2 SIMPLE b ref
3 SIMPLE a eq_ref
Run Code Online (Sandbox Code Playgroud)
但是,我知道在命令中查询 a -> b -> c会更快(我已经证明了)有没有办法告诉mysql使用特定的顺序?
更新:我知道这a -> b -> c更快.
上面的查询需要1.9秒才能完成并返回7行.如果我将查询更改为
SELECT …Run Code Online (Sandbox Code Playgroud) 我有一个mysql表,其中用户权限存储为位掩码:
|user | permissions |
| Admin | 31 |
| User | 13 |
16 8 4 2 1
Admin -> 1 1 1 1 1 -> 16 + 8 + 4 + 2 + 1 -> 31
User -> 0 1 1 0 1 -> 8 + 4 + 1 -> 13
Run Code Online (Sandbox Code Playgroud)
现在我想为每个使用sql查询的用户添加权限.假设我想为每个人添加权限16而不修改另一个位.
UPDATE users SET permission = ????
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我有以下课程
public class MyClass
{
public bool Delete(Product product)
{
// some code.
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个看起来像这样的助手类
public class Helper<T, TResult>
{
public Type Type;
public string Method;
public Type[] ArgTypes;
public object[] ArgValues;
public Helper(Expression<Func<T, TResult>> expression)
{
var body = (System.Linq.Expressions.MethodCallExpression)expression.Body;
this.Type = typeof(T);
this.Method = body.Method.Name;
this.ArgTypes = body.Arguments.Select(x => x.Type).ToArray();
this.ArgValues = ???
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法是从某个地方使用这个代码:
// I am returning a helper somewhere
public Helper<T> GetMethod<T>()
{
var product = GetProduct(1);
return new Helper<MyClass>(x => x.Delete(product));
} …Run Code Online (Sandbox Code Playgroud) 我想在字符串中显示两个日期之间的经过时间.
假设我有以下代码:
DateTime date1 = DateTime.Now();
System.Threading.Thread.Sleep(2500);
DateTime date2 = DateTime.Now();
TimeSpan elapsed = date2.substract(date1);
Console.WriteLine("> {0:hh:mm:ss}", elapsed);
Run Code Online (Sandbox Code Playgroud)
我期待的是:
> 00:00:03
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
> 00:00:02.5002500
Run Code Online (Sandbox Code Playgroud)
有没有办法使用String.Format函数只返回完整秒?
我还尝试删除小数位:
elapsed = elapsed.Substract(TimeSpan.FromMiliseconds((double)Timespan.Miliseconds);
Run Code Online (Sandbox Code Playgroud)
但是,自从elapsed以来,这都不起作用.Miliseconds返回500作为整数.
我正在使用GitLab将我的svn repsitories迁移到git.
现在我已经看到有一个与GitLab CI的持续集成实现,只是想尝试一下.
我已经安装并配置了Runner,但Gitlab抱怨我没有.gitlab-ci.yml文件.
我已经使用TeamCity进行持续集成,所以我不想花太多精力编写构建脚本.
任何人都可以告诉我在哪里可以找到一个基本的gitlab-ci.yml文件基本示例,基本上只是构建我的解决方案并运行所有测试(MSTests)?
c# ×5
linq ×2
mysql ×2
.net ×1
bitmask ×1
certificate ×1
file ×1
generics ×1
git ×1
gitlab ×1
gitlab-ci ×1
icomparer ×1
interface ×1
java ×1
lets-encrypt ×1
openssl ×1
performance ×1
sql-order-by ×1
timespan ×1
types ×1