.Net Framework

为什么 Redis 要比 Memcached 更火?

混江龙づ霸主 提交于 2021-02-18 04:06:32
作者:Kaito 链接:kaito-kidd.com/2020/06/28/redis-vs-memcached/ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快。但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些? 为什么现在看Redis要比Memcached更火一些? 这篇文章,我们就从各个方面来对比这两个内存数据库的差异,方便你在使用时,做出最符合业务需要的选择。 要分析它们的区别,主要从以下几个方面对比: 线程模型 数据结构 淘汰策略 管道与 事务 持久化 高可用 集群化 线程模型 要说性能,必须要分析它们的服务模型。 Memcached处理请求采用多线程模型,并且基于IO多路复用技术,主线程接收到请求后,分发给子线程处理。 这样做好的好处是,当某个请求处理比较耗时,不会影响到其他请求的处理。 当然,缺点是CPU的多线程切换必然存在性能损耗,同时,多线程在访问共享资源时必然要加锁,也会在一定程度上降低性能。 Redis同样采用IO多路复用技术,但它处理请求采用是单线程模型,从接收请求到处理数据都在一个线程中完成。 这意味着使用Redis,一旦某个请求处理耗时比较长,那么整个Redis就会阻塞住,直到这个请求处理完成后返回,才能处理下一个请求,使用Redis时一定要避免复杂的耗时操作。 单线程的好处是

C#文档注释

雨燕双飞 提交于 2021-02-18 01:51:26
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/language-specification/documentation-comments#an-example 微软官方文档。 我想补充几点。 1.如果想要所有类或者方法都添加文档注释,而自己总容易忘记添加或者漏添加的话。可以试试这个办法: 在项目上右键--属性--生成--勾选下图所示的选项 如果你没有添加文档注释,将会作为警告显示。 2.如果你有强迫症。(我就有) 觉得警告不过瘾,把它当作错误显示,不添加文档注释就不让编译通过。 那么你可以这样做: 在第一步的基础上。 在项目上右键--属性--生成--勾选下图所示的选项 当然了,你也可以勾所有。(不推荐,因为大多数时候会有很多页面的警告。) 解释一下这三个常用警告: CS1591:没有<summary> CS1573:方法中有参数,但是没加参数注释<param> (还有一种是相反的,有<param>,但是没参数--CS1572 这种不常用) CS1574:cref属性中的类或者符号找不到。(用法:<see cref=""/> 或者 <seealso cref="" />) 3.cref属性里面如果引用泛型类需要这样写<see cref="Product{TItem}" />

PHP的cURL扩展库使用详解

不想你离开。 提交于 2021-02-18 01:46:05
<p>在还没有接触curl的时候,相信大家在获取网页内容的时,使用得最多的一个函数就是:file_get_contents(),但是它的可控制性不够灵活,无法处理错误情况,对于各种复杂情况的采集更是显得有点无能为力。因此,本文将为你介绍另外一种工具:cURL的使用方法,在后面也还会给出相关的几个案例,这些都是你使用file_get_contents()无法做到的。<br></p><h1>一、cURL库的介绍</h1><p>为了更好的理解下面的内容,这里先给出一个curl的最简单的案例</p><p>入门案例:</p><blockquote> <p>$url = "http://nosee123.com/test_post.php";</p> <p>$ch = curl_init($url); //初始化一个cURL会话</p> <p>curl_exec($ch); //执行一个cURL会话</p> <p>curl_close($ch); //关闭一个cURL会话</p> </blockquote><p>该案例的执行结果就是把$url的网页内容输出到你的浏览器上,其实这个案例的效果和使用file_get_contents()的结果是一样的,这是因为它没有设置任何的参数。但cURL的功能远远不止这些,下面我们开始讲解cURL更详细的使用方法。</p><p

【转】javaUDP套接字通信

ⅰ亾dé卋堺 提交于 2021-02-18 01:19:53
Java UDP网络编程 - 最简单示例 转自 http://blog.csdn.net/wintys/article/details/3525643 /** *UDPServer *@author Winty wintys@gmail.com *@version 2008-12-15 */ import java.io.*; import java.net.*; class UDPServer{ public static void main(String[] args) throws IOException{ DatagramSocket server = new DatagramSocket( 5050 ); byte [] recvBuf = new byte [ 100 ]; DatagramPacket recvPacket = new DatagramPacket(recvBuf , recvBuf.length); server.receive(recvPacket); String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength()); System.out.println( "Hello World!" + recvStr); int port = recvPacket

中文乱码 encodeURI来解决URL传递时的中文问题

独自空忆成欢 提交于 2021-02-17 09:54:18
[size=large] 通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码。解决方案有很多种。本文介绍如何通过encodeURI来解决中文乱码问题。 首先,在前端页面准备参数的时候,需要对中文参数进行encode处理: var url = 'HelloWorldServlet?star_name=' + encodeURI(encodeURI( "刘德华" )); window.open(url); 其次,在服务端后台程序代码中用java.net.Decoder进行解码,从而得到中文参数的真实值: String starName = java.net.URLDecoder.decode(request.getParameter("star_name"),"UTF-8"); 目的达到了。哈哈,很简单吧。不过此时你可能有个疑问,前端在进行encode编码是,为什么用了两次encodeURI,而服务器后端在解码时只解了一次? 原因是:容器会默认帮你解一次码。 此时,你可能又要问了,既然容器会默认解一次码,那么为什么不直接在前端只进行一次encode,服务端程序直接request.getParameter(“star_name”) ?画蛇添足了吧? 原因是:容器默认解码时采用的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码方式。这与你的应用的编码方式未必会一致

如何在 Linux 中编辑字幕

拥有回忆 提交于 2021-02-17 04:10:34
https://linux.cn/article-11946-1.html 我作为一位世界电影和地区电影爱好者已经几十年了。这期间字幕是一个必不可少的工具,它可以使我享受来自不同国家不同语言的优秀电影。 如果你喜欢观看带有字幕的电影,你可能会注意到有时字幕并不同步或者说并不正确。 你知道你可以自己编写字幕并使得它们更完美吗?让我们向你展示一些 Linux 中的基本字幕编辑吧。 从闭路字幕数据中提取字幕 大概在 2012、2013 年我开始了解到有一款叫做 CCEextractor 的工具。随着时间的推移,它已经成为我必不可少的工具之一,尤其是当我偶然发现一份内含有字幕的媒体文件。 CCExtractor 负责解析视频文件以及从闭路字幕closed captions数据中产生独立的字幕文件。 CCExtractor 是一个跨平台的、自由开源工具。自它形成的那年起该工具已经成熟了不少而如今已成为 GSOC 和谷歌编码输入的一部分。 简单来说,这个工具基本上是一系列脚本,这些脚本以一种顺序方式一个接着一个地给你提供提取到的字幕。 你可以按照 本页 的 CCExtractor 安装指南进行操作。 若安装后你想从媒体文件中提取字幕,请按以下步骤操作: ccextractor <path_to_video_file> 该命令将会输出以下内容: $ ccextractor $something

maven <repositories>标签,<pluginRepositories>标签

给你一囗甜甜゛ 提交于 2021-02-17 03:46:40
在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复。重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘资源的浪费,也使得版本的一致性管理变得困难。此外,如果你使用版本管理工具,如SVN(你没有使用版本管理工具?马上试试SVN吧,它能帮你解决很多头疼的问题),你需要将大量的jar文件提交到代码库里,可是版本管理工具在处理二进制文件方面并不出色。 Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源。此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本管理。你也不在需要提交JAR文件到SCM仓库中,你可以建立一个组织层次的Maven仓库,供所有成员使用。 简言之,Maven仓库能帮助我们管理构件(主要是JAR)。 本地仓库(.m2) vs. 远程仓库(联网) 运行Maven的时候

【Alpaca】.Net版开源配置中心

我的梦境 提交于 2021-02-16 23:13:44
为什么要做.Net版开源配置中心 2020年发生了两件令我比较激动的大事 Vue 3.0正式版在2020-09-18发布 .Net 5 正式版在2020-11-10发布 当然也有比较遗憾的地方 我们短期内并不需要一个功能独立且完整的配置中心,所以重构了一个精简版内嵌在公司自己的DevOps工具,作为一个子模块运行 一些历史原因和现实问题无法使用最新的技术栈 技术栈 Alpha版功能 开源计划 Alpha发布时间 抱歉,因为只是业务时间做,这个没办法保证。我会努力赶进度的,但工作量真的不小。也欢迎各位大佬一起参与。 开源地址 Github 开源地址 https://github.com/doddgu/alpaca/ 项目进度 https://github.com/doddgu/alpaca/projects/1 Gitee(不定时同步) 开源地址 https://gitee.com/doddgu/alpaca 来源: oschina 链接: https://my.oschina.net/u/3226496/blog/4953206

Jenkins 搭建 .NET Core 持续集成环境

百般思念 提交于 2021-02-16 10:50:57
关于c#的.Net FrameWork 的集成环境以及MsBuild的配置可以看 jenkins搭建.NET FrameWork持续集成环境 这篇文章 关于.NET Core 这个项目我搭了很久 其实很简单 因为不懂.NET FrameWork 和.NetCore 所以走了很大的弯 我们用NuGet还原.NET Core项目会报以下错误: error NETSDK1064: 未找到版本为 1.8.2 的包 BouncyCastle.NetCore。它可能已在 NuGet 还原后删除。否则,NuGet 还原可能只是部分完成,这种情况可能是最大路径长度限制所导致。 关于这个问题我找了好久 也是google到一条信息才明白 这里就直接放解决办法,其实网上就有方法,有的简短,有的笼统 我们这里用到的是dotnet命令来还原、构建、以及部署 从 .NET Core 2.0 开始,无需运行 dotnet restore ,因为它由需有还原的所有命令隐式运行,如 dotnet build 和 dotnet run 。 dotnet build 生成项目及依赖项 dotnet publish 输出编译指定依赖,发送到指定目录 详细其他命令可以查看 官方文档 比我的详细的多 所以我们只用到 dotnet build dotnet publish 就可以成功编译 原文出处:https://www

系统和文件安全的综合保护指南(上)

a 夏天 提交于 2021-02-16 10:34:01
http://dy.163.com/v2/article/detail/F5NC65Q30511CJ6O.html      当涉及到数据的真正安全性时,单纯地谈论AES加密并没有多大意义。因为在正确的时间和正确的位置实施加密与选择强大的加密凭据和管理加密密钥一样重要。   如果你是Windows用户,那么一切都取决于你在特定使用场景中选择的最佳数据保护策略,以保护你的存储媒体和保存在其中的数据。    确定保护目标   在开始考虑加密硬盘驱动器和文件之前,一定要确定你的保护目标。比如你想保护哪些信息?你认为哪些威胁很重要,哪些不太重要?   全盘加密第一部分:保护启动设备   如果不保护启动设备,就不可能获得可靠的系统保护。未加密的启动设备(大多数系统上的磁盘C:在大多数系统上为磁盘)允许过多的攻击方式,从休眠和页面文件分析到从Web浏览器库中即时提取存储的密码。换句话说,使用BitLocker保护启动设备是绝对必要的首要步骤,也是最重要的安全层。   可用性:Windows 10 Professional及更高版本,支持TPM2.0、Intel PTT或组策略编辑;在轻型设备中用于设备加密的所有Windows版本均满足最低要求。   注意:尽管Windows 10 Home不能在本地创建新的BitLocker卷,但它可以使用完全读写访问权限解锁BitLocker加密的驱动器。