如何优雅地使用 Windows

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何优雅地使用 Windows相关的知识,希望对你有一定的参考价值。

目前自己的笔记本还在坚持使用win7系统。主要是很多丰富的软件只有win的版本,我木有办法,而且我也习惯了win的操作,感觉可以坚持使用。
废话不说了,
1,大量使用快捷键,会快很多。有个同事做文秘方面的,我告诉可以使用win+E打开资源管理器,她再也不用最小化窗口,点击我的电脑了。
2,使用everything,替换文件搜索。通过everything,可以非常快速的定位到你要用的文件,然后直接打开就可以了。资源管理器很多时候都省了。非常方便。
3,可以使用autohotkey,这个作为进阶使用,一般用户不强烈推荐。这个软件可以自定义快捷键,这样几乎所有的软件都可以使用win+某个字母按键,启动。比如我现在
win+C:chrome
win+F:覆盖系统搜索,换成启动everything。
win+S:securecrt
win+G:cygwin
win+V:visual studio
win+W:evernote
另外我还对chrome,设立了我经常访问页面的快捷键为F1,F2,。。F4.这样可以快速打开各种网页。
对于不是很常用的软件,可以通过快捷键方式改名+win+r快速运行,具体可以上网搜。
4,推荐使用strokeit,这个配置略微麻烦一点。软件是系统的鼠标手势,鼠标手势这个大家都用过,不过在整个系统里的,操作会方便很多。最大的好处是,轻度使用的时候,不需要准确定位鼠标的位置。比如划C就可以关闭窗口,这样就不需要准确定位鼠标位置到x按钮上,方便很多。也可以使用搜狗输入法的一个扩展,也可以完成类似功能。
5,对于超级重度用户,还可以考虑dexpot,多桌面虚拟,如虎添翼啊。不过可惜是超级重度使用的机会也不多。
上面是推荐的内容,另外还有不推荐的,
不推荐安装任何弹出弹窗的软件,至少我的电脑里是没有的。
1,迅雷,使用古老版本,没有广告。(不过我已经不用迅雷了,这个考虑提供给不得不用迅雷的同志们)
2,千千静听,被baidu收购后回弹广告,网上简单找下,可以屏蔽的。
3,qq,qq对一般人来说是不可能说不安装的,qq总是带个该死的弹窗。那么可以尝试下tmQQ,没有广告,非常纯净。可惜没有多标签功能。
4,360之流,还是省了吧。
关于美化:
美化看个人的心思吧。
mactype,美化字体,用着还是灰常赞的。
如果想美化的话,可以从国外下美化包,可以美化成苹果系统啦,或者其他之类的,这个美化涉及广泛,非深度用户不推荐采用。
rainmeter,可以出来很炫的效果,上面很多回答涉及美化的,有些和这个都有关系,可以考虑使用。不过如果你的目的是使用系统,而不是玩系统,还是免了吧,毕竟你不可能时时刻刻盯着桌面,当你干活的时候,如果置顶美化元素,估计也是非常讨厌的吧。喜爱美化的,可以尝试下。
fence,也很不错,用过一段时间。基本同raimeter考虑。
参考技术A 1、概览:
这是我的桌面,无杀软。

2、使用云服务
比如 Chrome 的书签同步插件 Xmarks(在天朝自带的同步功能有些鸡肋,但是除了书签之外的数据可以使用自带同步功能); Evernote 写笔记、GTD、知识系统管理;将平时不用的但是有价值的东西上传到网盘里; 使用同步文件夹,将重要的文件同步上传到云空间;项目都同步到 SVN 或 GitHub 中。

使用云端软件平台,把软件都装在上面,也可以将本地软件导入平台中(虚拟化),这样即使是重装系统后也无需重装应用,可携带缓存文件夹到不同电脑上使用平台上的软件,无需安装。绿色,便于管理。

3、美化

3.1 如上面有人说的,使用Mactype字体渲染。(优化后效果好很多)

3.2 使用 clover 创建标签式资源管理器窗口

3.3 使用 NetSpeedMonitor 来监控网速。

3.4 用一个快速而且不弹框的好输入法:《小狼毫》
这是相关的介绍:推荐一个神级输入法——Rime

4、优化
定期清理系统垃圾,使用CCleaner(CCleaner - PC Optimization and Cleaning)。
一个月碎片整理一次。使用Defraggler(Defraggler - File and Disk Defragmentation)。

5、其他
优雅地使用Windows唯一的手段就是找到符合自己的操作习惯,把不顺心的情况化解,并乐于挖掘适合自己的功能或者操作,包括快捷键、个性化设置等。

嗯,有人喜欢「番茄工作法」的吗? 对于精力不集中的人,建议使用Focus Booster,一款小巧优雅的软件。(下载:focus booster)

有人想要一个款优雅的 editor,这里推荐一款性感无比的编辑器:Sublime Text 2(各种配色任你选:daylerees/colour-schemes 路 GitHub)

如何优雅地使用腾讯云COS-.NET篇

如何优雅地使用腾讯云COS-.NET篇

代码下载地址 https://github.com/whuanle/txypx20190809

前提

创建子账号

打开 https://console.cloud.tencent.com/cam

创建子用户,设置子账号策略为 AdministratorAccess ,或者参考https://cloud.tencent.com/document/product/436/11714 ,添加访问 COS 的权限 记录子用户的 账号ID

切换子用户登录。

添加 appid 密钥

打开 https://console.cloud.tencent.com/cam/capi

新建 API 密钥,记录下 appid,记录 SecretIdSecretKey

记录 Region

打开 https://cloud.tencent.com/document/product/436/6224

可以查询可用区/地域的 region。

本教程使用 C# 开发。

一,SDK 和使用

腾讯云官网提供了 .NET 版本的 对象存储(COS) SDK,并提供使用教程,教程链接:

https://cloud.tencent.com/document/product/436/32819

Nuget 搜索 Tencent.QCloud.Cos.Sdk 安装即可。

using 需引入

using COSXML;
using COSXML.Auth;
using COSXML.Model.Object;
using COSXML.Model.Bucket;
using COSXML.CosException;
using COSXML.Utils;
using COSXML.Model.Service;
using COSXML.Transfer;
using COSXML.Model;

根据官方的教程,很容易编写自己的软件:

Ctrl + C ,然后 Ctrl + V

拷贝完毕,大概是这样的

using System;
using System.Collections.Generic;
using System.Text;
using COSXML;
using COSXML.Auth;
using COSXML.Model.Object;
using COSXML.Model.Bucket;
using COSXML.CosException;
using COSXML.Utils;
using COSXML.Model.Service;
using COSXML.Transfer;
using COSXML.Model;

namespace CosTest

    public class CosClient
    
        CosXmlServer cosXml;
        private readonly string _appid;
        private readonly string _region;
        public CosClient(string appid, string region)
        
            _appid = appid;
            _region = region;

            //初始化 CosXmlConfig 
            //string appid = "100011070645";
            //string region = "ap-guangzhou"; 
            CosXmlConfig config = new CosXmlConfig.Builder()
                .SetConnectionTimeoutMs(60000)
                .SetReadWriteTimeoutMs(40000)
                .IsHttps(true)
                .SetAppid(appid)
                .SetRegion(region)
                .SetDebugLog(true)
                .Build();

            QCloudCredentialProvider cosCredentialProvider = null;

            string secretId = "AKID62jALHsVmpfHentPs9E6lBMJ2XnnsTzH"; //"云 API 密钥 SecretId";
            string secretKey = "CC0c1DAtNdfS0IPIvISRFtIUSCUYTAgy"; //"云 API 密钥 SecretKey";
            long durationSecond = 600;  //secretKey 有效时长,单位为 秒
            cosCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);

            //初始化 CosXmlServer
            cosXml = new CosXmlServer(config, cosCredentialProvider);
        
        public bool CreateBucket(string buketName)
        
            try
            
                string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                PutBucketRequest request = new PutBucketRequest(buketName);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                PutBucketResult result = cosXml.PutBucket(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return true;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return false;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return false;
            
        
        public bool SelectBucket()
        
            try
            
                GetServiceRequest request = new GetServiceRequest();
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                GetServiceResult result = cosXml.GetService(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return true;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return false;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return false;
            
        

        public bool Upfile(string buketName, string key, string srcPath)
        
            try
            
                string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate (long completed, long total)
                
                    Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
                );
                //执行请求
                PutObjectResult result = cosXml.PutObject(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return true;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return false;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return false;
            
        
        public void UpBigFile(string buketName, string key, string srcPath)
        
            string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID

            TransferManager transferManager = new TransferManager(cosXml, new TransferConfig());
            COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucket, null, key);
            uploadTask.SetSrcPath(srcPath);
            uploadTask.progressCallback = delegate (long completed, long total)
            
                Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
            ;
            uploadTask.successCallback = delegate (CosResult cosResult)
            
                COSXML.Transfer.COSXMLUploadTask.UploadTaskResult result = cosResult as COSXML.Transfer.COSXMLUploadTask.UploadTaskResult;
                Console.WriteLine(result.GetResultInfo());
            ;
            uploadTask.failCallback = delegate (CosClientException clientEx, CosServerException serverEx)
            
                if (clientEx != null)
                
                    Console.WriteLine("CosClientException: " + clientEx.Message);
                
                if (serverEx != null)
                
                    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                
            ;
            transferManager.Upload(uploadTask);
        
        public class ResponseModel
        
            public int Code  get; set; 
            public string Message  get; set; 
            public dynamic Data  get; set; 
        
        public ResponseModel SelectObjectList(string buketName)
        
            try
            
                string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                GetBucketRequest request = new GetBucketRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                GetBucketResult result = cosXml.GetBucket(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return new ResponseModel  Code = 200, Data = result.GetResultInfo() ;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return new ResponseModel  Code = 200, Data = clientEx.Message ;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return new ResponseModel  Code = 200, Data = serverEx.Message ;
            
        
        public bool DownObject(string buketName, string key, string localDir, string localFileName)
        
            try
            
                string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                GetObjectRequest request = new GetObjectRequest(bucket, key, localDir, localFileName);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate (long completed, long total)
                
                    Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
                );
                //执行请求
                GetObjectResult result = cosXml.GetObject(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return true;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return false;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return false;
            
        
        public bool DeleteObject(string buketName)
        
            try
            
                string bucket = buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
                DeleteObjectRequest request = new DeleteObjectRequest(bucket, key);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                DeleteObjectResult result = cosXml.DeleteObject(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
                return true;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx.Message);
                return false;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                return false;
            
        
    


概览:

技术图片

但是大神说,这样不好,程序要高内聚、低耦合,依赖与抽象而不依赖于具体实现。

那怎么办?只能修改一下。

二,优化

1,对象构建器

对象存储的 SDK 中,有三个重要的对象:

  • CosXmlConfig 提供配置 SDK 接口。
  • QCloudCredentialProvider 提供设置密钥信息接口。
  • CosXmlServer 提供各种 COS API 服务接口。

但是,初始化和配置对象,过于麻烦,那么我们做一个对象构建器,实现函数式编程和链式语法。

    /// <summary>
    /// 生成Cos客户端工具类
    /// </summary>
    public class CosBuilder
    
        private CosXmlServer cosXml;
        private string _appid;
        private string _region;
        private CosXmlConfig cosXmlConfig;
        private QCloudCredentialProvider cosCredentialProvider;
        public CosBuilder()
        

        


        public CosBuilder SetAccount(string appid, string region)
        
            _appid = appid;
            _region = region;
            return this;
        
        public CosBuilder SetCosXmlServer(int ConnectionTimeoutMs = 60000, int ReadWriteTimeoutMs = 40000, bool IsHttps = true, bool SetDebugLog = true)
        
            cosXmlConfig = new CosXmlConfig.Builder()
                .SetConnectionTimeoutMs(ConnectionTimeoutMs)
                .SetReadWriteTimeoutMs(ReadWriteTimeoutMs)
                .IsHttps(true)
                .SetAppid(_appid)
                .SetRegion(_region)
                .SetDebugLog(true)
                .Build();
            return this;
        
        public CosBuilder SetSecret(string secretId, string secretKey, long durationSecond = 600)
        

            cosCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
            return this;
        
        public CosXmlServer Builder()
        
            //初始化 CosXmlServer
            cosXml = new CosXmlServer(cosXmlConfig, cosCredentialProvider);
            return cosXml;
        
    

2,消息响应对象

为了统一返回消息,创建一个 Response Model 的类。

    /// <summary>
    /// 消息响应
    /// </summary>
    public class ResponseModel
    
        public int Code  get; set; 
        public string Message  get; set; 
        public dynamic Data  get; set; 
    

3,接口

实际上,访问 COS和控制,和存储桶内的操作,是可以分开的。

访问 COS 可以控制对象存储内的所有东西,但是每个存储桶又是一个独立的对象。

为了松耦合,我们拆分两个客户端,一个用来管理连接、存储桶等,一个用来管理存储桶内的操作。

接口如下:


    public interface ICosClient
    
        // 创建存储桶
        Task<ResponseModel> CreateBucket(string buketName);

        // 获取存储桶列表
        Task<ResponseModel> SelectBucket(int tokenTome = 600);
    
    public interface IBucketClient
    
        // 上传文件
        Task<ResponseModel> UpFile(string key, string srcPath);

        // 分块上传大文件
        Task<ResponseModel> UpBigFile(string key, string srcPath, Action<long, long> progressCallback, Action<CosResult> successCallback);

        // 查询存储桶的文件列表
        Task<ResponseModel> SelectObjectList();

        // 下载文件
        Task<ResponseModel> DownObject(string key, string localDir, string localFileName);

        // 删除文件
        Task<ResponseModel> DeleteObject(string buketName);
    

所有接口功能都使用异步实现。

4,COS 客户端

基架代码:

    public class CosClient : ICosClient
    
        CosXmlServer _cosXml;
        private readonly string _appid;
        private readonly string _region;
        public CosClient(CosXmlServer cosXml)
        
            _cosXml = cosXml;
        

    

创建存储桶:


        public async Task<ResponseModel> CreateBucket(string buketName)
        
            try
            
                string bucket = buketName + "-" + _appid; 
                PutBucketRequest request = new PutBucketRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                PutBucketResult result = await Task.FromResult(_cosXml.PutBucket(request));

                return new ResponseModel  Code = 200, Message = result.GetResultInfo() ;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                //请求失败
                Console.WriteLine();
                return new ResponseModel  Code = 0, Message = "CosClientException: " + clientEx.Message ;
            
            catch (COSXML.CosException.CosServerException serverEx)
            
                return new ResponseModel  Code = 200, Message = "CosServerException: " + serverEx.GetInfo() ;
            
        

   

查询存储桶列表

        public async Task<ResponseModel> SelectBucket(int tokenTome = 600)
        
            try
            
                GetServiceRequest request = new GetServiceRequest();
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), tokenTome);
                //执行请求
                GetServiceResult result = await Task.FromResult(_cosXml.GetService(request));
                return new ResponseModel  Code = 200, Message = "Success", Data = result.GetResultInfo() ;
            
            catch (COSXML.CosException.CosClientException clientEx)
            
                return new ResponseModel  Code = 0, Message = "CosClientException: " + clientEx.Message ;
            
            catch (CosServerException serverEx)
            
                return new ResponseModel  Code = 0, Message = "CosServerException: " + serverEx.GetInfo() ;
            
        

5,存储桶操作客户端

基架代码如下:

    /// <summary>
    /// 存储桶客户端
    /// </summary>
    public class BucketClient : IBucketClient
    
        private readonly CosXmlServer _cosXml;
        private readonly string _buketName;
        private readonly string _appid;
        public BucketClient(CosXmlServer cosXml, string buketName, string appid)
        
            _cosXml = cosXml;
            _buketName = buketName;
            _appid = appid;
        

    

上传对象

        public async Task<ResponseModel> UpFile(string key, string srcPath)
        
            try
            
                string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                PutObjectRequest request = new PutObjectRequest(bucket, key, srcPath);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate (long completed, long total)
                
                    Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
                );
                //执行请求
                PutObjectResult result = await Task.FromResult(_cosXml.PutObject(request));

                return new ResponseModel  Code = 200, Message = result.GetResultInfo() ;
            
            catch (CosClientException clientEx)
            
                return new ResponseModel  Code = 0, Message = "CosClientException: " + clientEx.Message ;
            
            catch (CosServerException serverEx)
            
                return new ResponseModel  Code = 0, Message = "CosServerException: " + serverEx.GetInfo() ;
            
        

大文件分块上传

        /// <summary>
        /// 上传大文件、分块上传
        /// </summary>
        /// <param name="key"></param>
        /// <param name="srcPath"></param>
        /// <param name="progressCallback">委托,可用于显示分块信息</param>
        /// <param name="successCallback">委托,当任务成功时回调</param>
        /// <returns></returns>
        public async Task<ResponseModel> UpBigFile(string key, string srcPath, Action<long, long> progressCallback, Action<CosResult> successCallback)
        
            ResponseModel responseModel = new ResponseModel();
            string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID

            TransferManager transferManager = new TransferManager(_cosXml, new TransferConfig());
            COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucket, null, key);
            uploadTask.SetSrcPath(srcPath);
            uploadTask.progressCallback = delegate (long completed, long total)
            
                progressCallback(completed, total);
                //Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
            ;
            uploadTask.successCallback = delegate (CosResult cosResult)
            
                COSXMLUploadTask.UploadTaskResult result = cosResult as COSXMLUploadTask.UploadTaskResult;
                successCallback(cosResult);
                responseModel.Code = 200;
                responseModel.Message = result.GetResultInfo();
            ;
            uploadTask.failCallback = delegate (CosClientException clientEx, CosServerException serverEx)
            
                if (clientEx != null)
                
                    responseModel.Code = 0;
                    responseModel.Message = clientEx.Message;
                
                if (serverEx != null)
                
                    responseModel.Code = 0;
                    responseModel.Message = "CosServerException: " + serverEx.GetInfo();
                
            ;
            await Task.Run(() =>
            
                transferManager.Upload(uploadTask);
            );
            return responseModel;
        

查询对象列表

        public async Task<ResponseModel> SelectObjectList()
        
            try
            
                string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                GetBucketRequest request = new GetBucketRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                GetBucketResult result = await Task.FromResult(_cosXml.GetBucket(request));
                return new ResponseModel  Code = 200, Data = result.GetResultInfo() ;
            
            catch (CosClientException clientEx)
            
                return new ResponseModel  Code = 0, Data = "CosClientException: " + clientEx.Message ;
            
            catch (CosServerException serverEx)
            
                return new ResponseModel  Code = 0, Data = "CosServerException: " + serverEx.GetInfo() ;
            
        

下载对象 、删除对象

        public async Task<ResponseModel> DownObject(string key, string localDir, string localFileName)
        
            try
            
                string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                GetObjectRequest request = new GetObjectRequest(bucket, key, localDir, localFileName);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //设置进度回调
                request.SetCosProgressCallback(delegate (long completed, long total)
                
                    Console.WriteLine(String.Format("progress = 0:##.##%", completed * 100.0 / total));
                );
                //执行请求
                GetObjectResult result = await Task.FromResult(_cosXml.GetObject(request));

                return new ResponseModel  Code = 200, Message = result.GetResultInfo() ;
            
            catch (CosClientException clientEx)
            
                return new ResponseModel  Code = 0, Message = "CosClientException: " + clientEx.Message ;
            
            catch (CosServerException serverEx)
            
                return new ResponseModel  Code = 0, Message = serverEx.GetInfo() ;
            
        
        public async Task<ResponseModel> DeleteObject(string buketName)
        
            try
            
                string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID
                string key = "exampleobject"; //对象在存储桶中的位置,即称对象键.
                DeleteObjectRequest request = new DeleteObjectRequest(bucket, key);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                DeleteObjectResult result = await Task.FromResult(_cosXml.DeleteObject(request));

                return new ResponseModel  Code = 200, Message = result.GetResultInfo() ;
            
            catch (CosClientException clientEx)
            
                return new ResponseModel  Code = 0, Message = "CosClientException: " + clientEx.Message ;
            
            catch (CosServerException serverEx)
            
                return new ResponseModel  Code = 0, Message = "CosServerException: " + serverEx.GetInfo() ;
            
        

以上代码将官方示例作了优化。

  • 依赖于抽象、实现接口;
  • 松耦合;
  • 异步网络流、异步文件流;
  • 统一返回信息;
  • 增加匿名委托作方法参数;
  • 增加灵活性。

三,使用封装好的代码

1,初始化

官网示例文档:

技术图片

使用修改后的代码,你可以这样初始化:

            var cosClient = new CosBuilder()
                .SetAccount("1252707544", " ap-guangzhou")
                .SetCosXmlServer()
                .SetSecret("AKIDEZohU6AmkeNTVPmedw65Ws462rVxLIpG", "Sn1iFi182jMARcheQ1gYIsGSROE5rSwG")
                .Builder();

简单测试代码

        static async Task Main(string[] args)
        
            // 构建一个 CoxXmlServer 对象
            var cosClient = new CosBuilder()
                .SetAccount("125x707xx4", "ap-guangzhou")
                .SetCosXmlServer()
                .SetSecret("AKIxxxxxxedw65Ws462rVxLIpG", "Sn1iFi1xxxxxwG")
                .Builder();
            // 创建Cos连接客户端
            ICosClient client = new CosClient(cosClient, "125xx0xx44");
            // 创建一个存储桶
            var result = await client.CreateBucket("fsdgerer");
            Console.WriteLine("处理结果:" + result.Message);
            // 查询存储桶列表
            var c = await client.SelectBucket();
            Console.WriteLine(c.Message + c.Data);

            Console.ReadKey();
        

运行结果(部分重要信息使用xx屏蔽):

处理结果:200 OK
Connection: keep-alive
Date: Fri, 09 Aug 2019 14:15:00 GMT
Server: tencent-cos
x-cos-request-id: xxxxxxxx=
Content-Length: 0

Success200 OK
Connection: keep-alive
Date: Fri, 09 Aug 2019 14:15:01 GMT
Server: tencent-cos
x-cos-request-id: xxxxxxx=
Content-Type: application/xml
Content-Length: 479

ListAllMyBuckets:
Owner:
ID:qcs::cam::uin/1586xx146:uin/158xxx2146
DisPlayName:158x2146

Buckets:
Bucket:
Name:fsdgerer-125xxx7544
Location:ap-guangzhou
CreateDate:

Bucket:
Name:work-1252xxx7544
Location:ap-guangzhou
CreateDate:



其它不再赘述

以上是关于如何优雅地使用 Windows的主要内容,如果未能解决你的问题,请参考以下文章

python:正则1

如何优雅地在LaTeX中使用中文?

如何优雅地使用Sublime Text

如何优雅地使用Sublime Text

如何优雅地使用腾讯云COS-.NET篇

如何使用 Java Optional 优雅地替换三元运算符