.Net Framework

【linux】解决unzip在linux下解压中文名zip文件出现乱码的问题

北慕城南 提交于 2020-11-16 05:00:24
#问题描述 linux(我用的系统是centos)下zip原生命令解压带中文名的压缩包时,解压出来的文件为乱码: 通过在网上查询得知,zip格式中并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。 网上说,zip 有个参数-O可指定文件编码,但是我在系统上却没有找到相应的参数: 原来unzip官方并不支持该参数,需要通过给unzip源码打补丁包的方法,来解决中文编码问题。 #解决方法 ##unzip源码编译 首先下载unzip源码: https://svwh.dl.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz 由于unzip编译需要bzip源码,下载源码: https://iweb.dl.sourceforge.net/project/bzip2/bzip2-1.0.6.tar.gz 下载完成后,解压文件: tar zxvf unzip60.tar.gz tar zxvf bzip2-1.0.6.tar.gz 将bzip2下所有文件拷贝到unzip60/bzip2下 make -f unix/Makefile flags make

[.NET开发] C#实现发送手机验证码功能

断了今生、忘了曾经 提交于 2020-11-16 00:32:25
之前不怎么了解这个,一直以为做起来很复杂。 直到前两天公司要求要做这个功能。 做了之后才发现 这不过就是一个POST请求就能实现的东西。现在给大家分享一下,有不足之处还请多多指教。 废话不多说 直接上代码。 1.先获取一个随机数字验证码(这里是6位数),然后编辑好需要发送的内容。 这里还做了个手机号码合法性的验证。 public string VerificationCode(string mobile) { if (IsHandset(mobile)) { string code = new Random().Next(111111, 999999).ToString(); string content = "亲,本次操作的验证码为:" + code + " 切勿泄漏此验证码信息给他人,如非本人操作,请忽略此条信息。【唐江巴巴】"; bool ret = SendFast(mobile, content); if (ret) { return code; } else { return "发送失败"; } } else { return "手机号码格式不正确"; } } /// /// 验证手机号码是否合法 /// /// /// public bool IsHandset(string str_handset) { return System.Text

Net5 已经来临,让我来送你一个成功

a 夏天 提交于 2020-11-15 12:55:46
没错,那就是“下载成功”。 现在,已经可以急速下载.Net5 docker 镜像 .Net 5 进行今天已经正式发布,想必各位已经通过各种渠道了解到了此次发布的所有内容。 并且也都体会到了这次凑成三连的金 scott 是什么效果(啊哈,三连。 scott 不过,目前在中国大陆地区拉取 MCR 上发布的 docker 镜像依旧是一件令人感到失望的事情。 为此,我们曾经在数月前发布了一款名为 docker-mcr 的 dotnet-tool 以便中国大陆地区的开发者可以快速拉取相应的镜像。 今天,我们也非常顺利的支持了最新发布的 .Net 5 一系列镜像。 使用方法 下载方式 存在至少三种方法进行加速: 使用 docker-mcr (推荐) 拉取国内服务器上的镜像 使用 DockerHub 加速器 注意,无论采用什么方式,请先确保本地的 docker 已经正常可用。 使用 docker-mcr docker-mcr 是一个 dotnet core global tool,简单几步,便可以进行安装和使用。 [进入 dotnet 页面,下载并安装 netcore 3.1 或 5 SDK]https://dotnet.microsoft.com/download。 安装完毕后打开控制台运行以下命令: dotnet tool install newbe.mcrmirror -g 现在

【招聘(深圳)】腾讯财付通风控管理系统开发

两盒软妹~` 提交于 2020-11-15 07:45:59
.net 高级工程师及架构师 【职位介绍】 1 、负责风控管理系统业务开发 2 、负责公用类库、底层框架的维护开发 3 、负责跨平台系统架构部署、性能优化 4 、指导、培养初级工程师 【职位要求】 1 、计算机相关专业本科及以上学历, 3 年以上工作经验; 2 、精通 asp.net 、 C# ,熟悉常用前端技术,热爱编程; 3 、熟悉 linux 环境,具有 mysql 性能优化经验; 4 、具有 OOP 分析、设计、开发经验,较好的文档能力和良好的编码风格; 5 、具有中小型分布式系统、网站架构设计相关经验 6 、加分项: mono 、 thrift 、 probuff 、 memcached 、 activemq 、 socket 【简历投递】 请将简历发到: jusonzhu@tencent.com 邮件标题:姓名 - 应聘职位 邮件中请包含以下内容: 1 、当前薪酬(例如月薪 15K*14 月,年终奖 2 个月,入职前 HR 审核时能否提供当前薪资证明材料?),期望薪酬,预计到岗时间(例如 1 周、 1 个月) 2 、请描述公司项目的系统架构及每一层相关技术(例如 LVS 负载均衡 ; IIS ……; Redis 缓存 …… ) 3 、曾经做过的项目中遇到的最大技术难点、解决方案,举例说明 3-5 个 4 、个人职业发展规划(未来几年准备走 T 技术专家线、还是 M

浅析asp .net core 中间件

孤者浪人 提交于 2020-11-14 06:44:19
https://www.cnblogs.com/aoximin/p/13576479.html 梦里小探花 前言 对中间件的一个概况,在《重新整理.net core 计1400篇》系列后面会深入。 正文 什么是中间件呢? 其实中间件这个概念来源于分布式,当然这是一个狭隘的概念了,现在中间件概念就非常广泛了。 官网给出了这样一张图,这张图认为从请求到响应过程中间都是中间件,包括我们认为的路由。 看一段node代码: var http = require ( "http" ); http.createServer( function (req,res) { res.writeHead( 200 ,{ "Content-type" : "text/blain" }); res. write ( "Hello NodeJs" ); res. end (); }).listen( 8888 ); 没有学过node 也是ok的,从字面意思就是创建了一个http服务,然后端口是8888。 createServer 可以传入一个方法,中间有两个参数,一个参数是req,另一个参数就是res。 其实就是这么回事,我们写的就是这个这个方法里面的代码,至于,你想拿到req的什么参数,或者给res写入什么信息,这些都是中间件的范畴。 那么问题来了,问什么叫做中间件呢?从语文的层面上理解,那就是分开的

数据库中的主键与外键的关系,通俗易懂

大兔子大兔子 提交于 2020-11-14 06:43:09
一、什么是主键、外键: 关系型 数据库 中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 同理 成绩表中的课程号是课程表的外键 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。 身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 二、 主键、外键和索引的区别 主键、外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 该字段没有重复值

[译]C# 7系列,Part 6: Read-only structs 只读结构

时光总嘲笑我的痴心妄想 提交于 2020-11-14 01:27:31
原文: https://blogs.msdn.microsoft.com/mazhou/2017/11/21/c-7-series-part-6-read-only-structs/ 背景 在.NET世界中,有两种基本类型:引用类型和值类型。简单地说 ,引用类型是可以继承/扩展的类,当传递引用类型对象时,传递的是一个“指针”; 值类型是不能继承/扩展的结构,当传递值类型对象时,传递的是一个“副本”。 C#中的struct是一个值类型,它“内部继承”自System.ValueType。 (我说的是结构之间没有继承。) 当在参数中使用struct时,会生成struct的副本,使用struct可能是高效的,因为它减少了堆对象分配的时间。 在许多场景中,开发人员使用结构作为传递值的有效方法,例如方法的返回对象,或者跨应用程序使用的基本数据结构。 只读结构 只读结构是其公共成员为只读的结构,就好像“this”变量一样。 看一下下面的声明: public struct S { public int Age { get ; set ; } public string Name { get ; set ; } public S( int age, string name) { this .Age = age; this .Name = name; } public S(S other) {

第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)

我与影子孤独终老i 提交于 2020-11-13 09:31:00
一. 时间的类型 1. 背景    这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式介绍Quartz.Net之前,还是很有必要补充一下的,该章节就是解决这类问题的。 2. 时间类型   时间类型主要有两类:DateTime和DateTimeOffset (详情参考:https://docs.microsoft.com/zh-cn/dotnet/standard/datetime/choosing-between-datetime) (1). DateTime:表示的时区有限,国内采用这个时间。 (2). DateTimeOffset:可以表示任何时区,通过偏移量来控制。 (Quartz中提供DateBuilder类来实现DateTimeOffset类型) 3. 类型转换 (1). DateTime→DateTimeOffset 利用DateTimeOffset的构造函数 (2). DateTimeOffset→DateTime 利用Convert.ToDateTime方法 下面分享一段两种类型相互转换的代码: 1 // DateTime类型 2 DateTime date1 = DateTime.Parse( " 2018-01-01 11:45:30 " );

java实现hello/hi聊天程序

不羁岁月 提交于 2020-11-13 07:58:06
1.使用java实现服务器与客户端之间的对话,客户端与服务器 服务器端代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Chat { // 运行在服务端的Socket private ServerSocket server; // 线程池,用于管理客户端连接的交互线程 private

【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoun...

[亡魂溺海] 提交于 2020-11-13 06:56:56
今天工作中,临时Fix一个bug,一看日志“java.lang.ClassCastException: null” 相当懵逼,没有详细堆栈信息,这咋整。虽然根据上下文可以推测问题代码的大致位置,但不敢拍板啊。只好google找一下,在Stackoverflow上果然有解决办法 【解决方法】 在java启动命令中添加“ -XX:-OmitStackTraceInFastThrow ” 即可输出详细堆栈信息——亲测可用。 【问题原因】 JVM(HotSpot JVM)进行了优化。当第一次发生异常(通常为NullPointerException)时,将打印完整的堆栈跟踪,并且JVM会记住堆栈跟踪(或者可能只是代码的位置)。 当该异常经常发生时,将不再打印堆栈跟踪,这既可以实现更好的性能, 【CoederBaby】 又不会使相同的堆栈跟踪充满日志 【进一步分析】 参看JVM源码( 参见附录2 ),可见这个优化同时试用于以下异常: NullPointerException ArrayIndexOutOfBoundsException ClassCastException ArrayIndexOutOfBoundsException ArrayStoreException ArithmeticException 相关核心代码片段: // If this throw happens