.Net Framework

对精致码农大佬的 [理解 volatile 关键字] 文章结论的思考和寻找真相

巧了我就是萌 提交于 2021-02-10 06:04:53
一:背景 1. 讲故事 昨天在园里的编辑头条看到 精致码农大佬 写的一篇题为: [C#.NET 拾遗补漏]10:理解 volatile 关键字 (https://www.cnblogs.com/willick/p/13889006.html) 的文章,大概就是说在 多线程环境下,一个在debug不出现,在release中出现的bug,原文代码如下: public class Worker { private bool _shouldStop; public void DoWork ( ) { bool work = false ; // 注意:这里会被编译器优化为 while(true) while (!_shouldStop) { work = !work; // do sth. } Console.WriteLine( "工作线程:正在终止..." ); } public void RequestStop ( ) { _shouldStop = true ; } } public class Program { public static void Main ( ) { var worker = new Worker(); Console.WriteLine( "主线程:启动工作线程..." ); var workerTask = Task.Run(worker.DoWork)

.NET对象与Windows句柄(一):句柄的基本概念

孤者浪人 提交于 2021-02-10 06:04:04
在.NET编程中,得益于有效的内存管理机制,对象的创建和使用比较方便,大多数情况下我们无须关心对象创建和分配内存的细节,也可以放心的把对象的清理交给自动垃圾回收来完成。由于.NET类库对系统底层对象进行了封装,我们也不需要调用Windows API来操作非托管对象。但不直接操作非托管对象,并不意味着程序不会间接创建这些对象,如果不了解.NET对象与非托管资源的关系,我们很有可能因为不恰当的使用这些托管对象,而导致非托管资源泄露。本文尝试说明Windows对象和句柄的基本概念,以及.NET编程中的对象与它们的关系,并结合一些简单的示例程序来探讨句柄泄露的话题。 一、什么是句柄? Windows编程中,程序需要访问各种各样的资源,如文件、网络、窗口、图标和线程等。不同类型的资源被系统封装成不同的数据结构,当需要使用这些资源时,程序需要依据这些数据结构创建出不同的对象,当操作完毕并不再需要这些对象时,程序应当及时释放它们。在Windows中,应用程序不能直接在内存中操作这些对象,而是通过一系列公开的Windows API由对象管理器(Object Manager)来创建、访问、跟踪和销毁这些对象。当调用这些API创建对象时,它们并不直接返回指向对象的指针,而是会返回一个32位或64位的整数值,这个在进程或系统范围内唯一的整数值就是句柄(Handle)。随后程序再次访问对象,或者删除对象

Hadoop 系列 HDFS:HDFS的Java API( Java API应用)

ⅰ亾dé卋堺 提交于 2021-02-10 02:28:42
HDFS的Java API Java API应用 上传文件 先在本地(客户端)一个文件,比如在D盘下新建一个word2.txt文件,内容随便写 somewhere palyer Hadoop you belong to me 在IDEA中编写Java程序 package com.hadoop.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; import java.net.URI; public class PutFile { public static void main(String[] args) throws IOException, InterruptedException { //本地文件路径 String local = "D:\\word2.txt"; String dest = "hdfs://192.168.55.128:9000/input/word2.txt"; Configuration cfg=new Configuration(); FileSystem fs= FileSystem.get(URI

springboot initialization completed in 时间长

喜夏-厌秋 提交于 2021-02-10 02:20:57
启动时间长。 原因是SecureRandom 解决方案: $echo $JAVA_HOME 进入后。jre/lib/security/java.security 找到securerandom.source 原来的值应当是file:/dev/random 改成file:/dev/./urandom 参考的是: https://www.cnblogs.com/whm-blog/p/13432332.html https://www.jb51.net/article/117086.htm 来源: oschina 链接: https://my.oschina.net/lyc819/blog/4951694

基于B/S的asp学生成绩管理信息系统

前提是你 提交于 2021-02-09 20:26:55
现代社会是一个创新的时代,网络的发展起到了很大的作用。通过网络可以完成各种不同的需求,学生也可以上网查阅资料,进行学习,达到扩展知识面的目的。本课题针对学生每次的考试成绩进行了录入和汇总,也可以根据不同的情况对学生的信息进行查询。为了能够适时掌握学生的学习情况,能够为学生不同阶段的学习提供一个合理的指导,因此,将现代的先进技术和分析方法应用于教育行业是很有必要的,对学生成绩管理的研究是很有意义的。 根据本系统的研究现状和发展趋势,系统从需求分析、结构设计、数据库设计,在到系统实现,分别为前端实现和后端实现。论文内容从系统描述、系统分析、系统设计、系统实现、系统测试来阐述系统的开发过程。本系统力求结合实际找出一种切实可行的开发方案,经过反复研究和学习,借助C#编程语言、asp.net技术、sqlserver数据库和tomcat服务器来完成系统的所有功能,最后进行系统测试,来检测系统的权限和漏洞,从而将系统完善,达到符合标准。 本系统主要分为几大功能模块,其中包括了系统用户管理、学生信息管理、教师信息管理、课程信息管理、成绩信息管理、学院管理、专业管理等功能模块,其中以模块最为重要。 该系统包括三大模块:学生模块、管理员模块、教师模块。 1.学生、教师权限 用户登录授权:用户打开登录页面,可以选择教师或学生登录,验证表单正确后允许浏览页面。 修改用户个人信息

Quartz.Net使用教程

血红的双手。 提交于 2021-02-09 12:22:16
在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要 Quartz.Net 了。 Quartz.Net 是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。 Quartz.Net 一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持Cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承IJob接口即可。 对于小型应用, Quartz.Net 可以集成到你的系统中,对于企业级系统,它提供了Routing支持,提供了Group来组织和管理任务,此外还有持久化、插件功能、负载均衡和故障迁移等满足不同应用场景的需要。 Hello Quartz.Net 开始使用一个框架,和学习一门开发语言一样,最好是从Hello World程序开始。 首先创建一个示例程序,然后添加Quartz.Net的引用。 Install-Package Quartz -Version 3.0.7 我们使用的是当前最新版本3.0.7进行演示。添加引用以后,来创建一个Job类 HelloQuartzJob 。 public class HelloQuartzJob : IJob { public Task

ASP.NET Core快速入门 -- 学习笔记汇总

偶尔善良 提交于 2021-02-09 12:06:21
ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记 ASP.NET Core快速入门(第2章:配置管理)--学习笔记 ASP.NET Core快速入门(第3章:依赖注入)--学习笔记 ASP.NET Core快速入门(第4章:ASP.NET Core HTTP介绍)--学习笔记 ASP.NET Core快速入门(第5章:认证与授权)--学习笔记 ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记 本文分享自微信公众号 - DotNet NB(DotNetNB)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4129013/blog/4456869

.NET Core 集成JWT认证

偶尔善良 提交于 2021-02-09 11:40:14
JWT(Json web token) 就不用过多的介绍了,在 .NET Core 开发中使用JWT进行认证也是比较常见的,而且接入过程也比较简单,随便配置配置就好了。 要想使用JWT,仅仅只需要在项目中引用微软的一个认证组件。 Install-Package Microsoft.AspNetCore.Authentication.JwtBearer 然后将一些敏感数据可以放在配置文件 appsettings.json 中。 { "JWT" : { "ClockSkew" : 10 , "ValidAudience" : "https://meowv.com" , "ValidIssuer" : "阿星Plus" , "IssuerSigningKey" : "6Zi/5pifUGx1c+mYv+aYn1BsdXPpmL/mmJ9QbHVz6Zi/5pifUGx1c+mYv+aYn1BsdXPpmL/mmJ9QbHVz6Zi/5pifUGx1c+mYv+aYn1BsdXPpmL/mmJ9QbHVz6Zi/5pifUGx1cw==" , "Expires" : 30 } } 在 Startup 中添加配置并且使用 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer

C# 连接Oracle数据库,免安装oracle客户端

谁说我不能喝 提交于 2021-02-09 08:46:23
一、方案1 首先下面的内容,有待我的进一步测试和证实。18.12.20 被证实了,还需要安装Oracle客户端,或者本机上安装oracle数据库软件。 18.12.20 1.下载Oracle.ManagedDataAccess.dll 2.添加到C#引用 3.命名空间引用 using Oracle.ManagedDataAccess.Client; 4. 连接参数的获取 然后 打开Oracle安装的文件夹 ,以Oracle10为例D:\Oracle10\NETWORK\ADMIN\tnsnames.ora,打开这个文件,会看到 如果没有请按照图片内容输入即可,host=[主机名称],SERVICE_NAME=[随意取] 5.完成上述后,连接字符串: strConnection = “Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LocalHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=XXXX;Password=XXXX;”; 简单说明一下这个连接字符串,HOST=LostHost|127.0.0.1|主机名三者均可,选择一个就行; SERVICE_NAME=

PlanetTogether APS安装与配置

别来无恙 提交于 2021-02-09 08:18:34
一、 PT 安装 1、PT Server与Client的下载 下载网址: https://download.planettogether.com/ 2、 安装 .net framework 4.6.2 安装 PT Server与PT 客户端,前提是安装.net framework4.6.2(文件名:NDP462-KB3151800-x86-x64-AllOS-ENU),下载链接为: https://www.microsoft.com/zh-cn/download/details.aspx?id=53345 ;如果是在 Windows Server2012的系统下安装.net framework4.6.2需要安装更新KB2919355,可以在控制面板中检查更新并安装对应的更新,也可以在网站下载(下载网址: https://www.microsoft.com/en-us/download/details.aspx?id=42334 ),离线安装,这个更新大小为 690M,安装比较慢;然而安装KB2919355的先决条件是需要先安装更新KB2919442(下载网址: https://www.microsoft.com/en-us/download/details.aspx?id=42153 ),否则有可能安装 KB2919355提示“此更新不适用你的计算机”;确保安装上.net