- 浏览: 437898 次
- 性别:
- 来自: 唐山
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
文章列表
https 证书签名
- 博客分类:
- .NetCore
数字证书是由权威的CA(Certificate Authority)机构给服务端进行颁发,CA机构通过服务端提供的相关信息生成证书,证书内容包含了持有人的相关信息,服务器的公钥,签署者签名信息(数字签名)等,最重要的是公钥在数字证书中。数字证书是如何保证公钥来自请求的服务器呢?数字证书上由持有人的相关信息,通过这点可以确定其不是一个中间人;但是证书也是可以伪造的,如何保证证书为真呢? 一个证书中含有三个部分:"证书内容,散列算法,加密密文",证书内容会被散列算法hash计算出hash值,然后使用CA机构提供的私钥进行RSA加密。
https单向认证
客户端 ...
OPENSSL生成SSL自签证书
- 博客分类:
- C#
OPENSSL生成SSL自签证书
OPENSSL生成SSL自签证书
目前,有许多重要的公网可以访问的网站系统(如网银系统)都在使用自签SSL证书,即自建PKI系统颁发的SSL证书,而不是部署支持浏览器的SSL证书。
支持浏览器的SSL证书无疑安全性是好的,但要收费(而且是按年收)。
自签SSL证书当然是免费的,但安全性就差了。
数字证书(Certificate)
在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名( ...
NuGet出现错误解决方法
- 博客分类:
- C#
直接在进入项目所在文件夹,shift+右键 打开命令行,执行 dotnet build
如果再出现错误提示,直接删除 NuGetFallbackFolder 文件夹下对应版本 dll
登录的时候记住用户名密码,目前大多数浏览器本身已经支持这种功能,如果不用浏览器本身的功能,自己来实现呢。
一部分人在前端直接用cookie来保存用户名和密码。这样是不安全的,我们在cookie中可以看到用户名,密码 ...
Interlocked 为多个线程共享的变量提供原子操作。
主要方法:
//替换usingResource为1,返回原始值
Interlocked.Exchange(ref usingResource, 1);
//usingResource增加4
Interlocked.Add(ref usingResource, 4);
//比较替换。如果值usingResource为4 则替换为10
Interlocked.CompareEx ...
1、以协作方式取消线程
using System;
using System.Threading;
public class ServerClass
{
public static void StaticMethod(object obj)
{
CancellationToken ct = (CancellationToken)obj;
Console.WriteLine("ServerClass.StaticMethod is running on another thread.");
// Sim ...
ManualResetEvent ,AutoResetEvent 都可以阻塞线程执行,直到收到set()信号,线程被释放。
ManualResetEvent 和AutoResetEvent不同点是 前者需要手动调用Reset()重置,才会继续去阻塞线程,
后者是自动被Reset();所以针对多个线程被阻塞时,ManualResetEvent 调用一次Set() 即可释放所有线程。
AutoResetEvent由于自动被重置了,所以每个线程都需要调用一次Set() 才能被释放。
如下实例定义多个线程:
using System;
using System.Threa ...
Java动态代理之JDK实现和CGlib实现(简单易懂)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542259.html
一:代理模式(静态代理)
代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。
静态代理由 业务实现类、业务代理类 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是在方法中首先进行预处理动作,然后调用业务实现类的方法,还可以规定调用后的 ...
1、安装git
sudo apt-get install git
设置操作git的用户邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2、初始化git仓库(repository)
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
3、添加文件(暂存区)
...
流涉及三个基本操作:
读取 - 将数据从流传输到数据结构(如字节数组)中。
写入 - 将数据从数据源传输到流。
查找 - 对流中的当前位置进行查询和修改
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// Delete the file if i ...
策略模式定义:
定义了算法族,分别封装起来。让算法之间可以替换,此模式让算法的变化独立于使用算法的客户。
代码示例:
反射非常适合访问任意类型的所有属性(或运行时命名的任意属性)。但是,Reflection的性能成本在关键代码路径中是不可接受的。相反,您可以添加前期成本并创建通用委托来读取或写入此类属性而不会产生任何开销(取决于您对值的操作,甚至可以避免装箱)。
这种代码的典型目标是获取具有指定名称的属性的值。
这种天真(和最慢)的方式是直接反射:
string name
object o;
object value = o.
指不可改变的集合。虽然有Add 和Remove方法,但是返回的是创建的副本 ,本集合并没改变。
HashSet<int> oddNumbers = new HashSet<int>();
oddNumbers.Add(3);
//一个元素
ImmutableHashSet<int> vs = oddNumbers.ToImmutableHashSet<int>();
//vs1返回的是一个副本两个元素,vs还是一个元素
ImmutableHashSet&l ...
使用 ConcurrentBag 创建目标池
- 博客分类:
- C#
本示例演示如何使用并发包来实现对象池。 在需要某个类的多个实例并且创建或销毁该类的成本很高的情况下,对象池可以改进应用程序性能。 客户端程序请求新对象时,对象池先尝试提供一个已创建并返回到该池的对象。 仅在没有可用对象时,才会创建一个新对象。
ConcurrentBag<T> 用于存储对象,因为它支持快速插入和删除,特别是在同一线程既添加又删除项时。 本示例可进一步扩充为以包数据结构实现的 IProducerConsumerCollection<T> 为依据生成,就像 ConcurrentQueue<T> 和 ConcurrentStack<T> ...