.Net Framework

Beego 框架学习笔记 02 | Get、Post

孤街浪徒 提交于 2020-12-16 23:27:36
一、Get article.go 里添加代码: package controllers import ( "fmt" "github.com/astaxie/beego" ) type ArticleController struct { // 首字母要大写 beego.Controller } func (c *ArticleController) Get() { c.Ctx.WriteString("新闻列表") // 直接给页面返回数据 } func (c *ArticleController) AddArticle() { c.Ctx.WriteString("增加新闻") } func (c *ArticleController) EditArticle() { //获取 get 传值 id := c.GetString("id") fmt.Printf("值:%v 类型:%T", id, id) beego.Info(id) c.Ctx.WriteString("修改新闻" + id) } 展示如下: 通过 err 判断,获取 get 传值: package controllers import ( "fmt" "github.com/astaxie/beego" ) type ArticleController struct { // 首字母要大写 beego

数据结构-树

爷,独闯天下 提交于 2020-12-16 20:01:43
树 顺序表、单链表和双链表是一种一对一的线性结构,树则是一对多的数据结构。 定义 树(Tree)是n(n >= 0)个结点的有限集。n = 0时称为空树。在任意一颗非空树中: 有且仅有一个特定的称为根的结点 当n > 1时,其余结点可分为m(m > 0)个互不相交的有限集T1、T2、······、Tm,其中每一个集合本身又是一颗树,并且称为根的子树 结点分类 树的结点包括一个数据元素以及若干个指向其子树的分支。结点拥有的子树的数量称为结点的度。 度为0的结点称为叶结点或终端结点,度不为0的结点称为非终端结点或分支结点。 除根结点外,分支结点也称为内部结点 树的度是树内各结点的度的最大值,如上图,树的度为B结点的度为3 结点间关系 结点的子树的根称为该结点的孩子,相应的该结点称为孩子的双亲 同一个双亲的孩子之间互称为兄弟。 结点的祖先是从根到该结点所经分支上的所有结点 以某结点为根的子树中的任一结点都称为该结点的子孙 结点的层次 结点的层次从根开始定义起,根为第一层,根的孩子为第二层以此类推 双亲在同一层的结点互为堂兄弟 树中结点的最大层次称为树的深度或高度,上图树的深度为5 来源: oschina 链接: https://my.oschina.net/u/4892247/blog/4810703

一文说通C#中的异步迭代器

守給你的承諾、 提交于 2020-12-16 16:44:48
今天来写写C#中的异步迭代器 - 机制、概念和一些好用的特性   迭代器的概念 迭代器的概念在C#中出现的比较早,很多人可能已经比较熟悉了。 通常迭代器会用在一些特定的场景中。 举个例子:有一个 foreach 循环: foreach (var item in Sources) { Console.WriteLine(item); } 这个循环实现了一个简单的功能:把 Sources 中的每一项在控制台中打印出来。 有时候, Sources 可能会是一组完全缓存的数据,例如: List<string> : IEnumerable< string > Sources( int x) { var list = new List< string >(); for ( int i = 0 ; i < 5 ; i++) list .Add($ "result from Sources, x={x}, result {i}" ); return list ; } 这里会有一个小问题:在我们打印 Sources 的第一个的数据之前,要先运行完整运行 Sources() 方法来准备数据,在实际应用中,这可能会花费大量时间和内存。更有甚者, Sources 可能是一个无边界的列表,或者不定长的开放式列表,比方一次只处理一个数据项目的队列,或者本身没有逻辑结束的队列。 这种情况,C

C# LIST(T)中Contains(T)和IndexOf(T)方法实现细节介绍

半城伤御伤魂 提交于 2020-12-16 11:11:48
C#中的List(T)类型代表T类的列表,该类型位于 System.Collections.Generic 命名空间,提供了按位置索引获取对象的方法,并且列表支持搜索、排序等其它操作。本文重点介绍List(T)中的两个方法:Contains(T)和IndexOf(T),特别的,T为自定义类类型。 (1)List(T).Contains(T)方法 该方法用于检测某个T对象是否存在于List(T)对象中,List(T).Contains(T)方法继承自ICollection(T).Contains(T),并对其进行了实现。首先看.net中该方法对应的代码 // Contains returns true if the specified element is in the List. // It does a linear, O(n) search. Equality is determined by calling // item.Equals(). // public bool Contains(T item) { if ((Object) item == null) { for(int i=0; i<_size; i++) if ((Object) _items[i] == null) return true; return false; } else {

.NET 黑魔法

霸气de小男生 提交于 2020-12-16 10:51:49
来,全都是干货。 我们都知道在Framework版本的mvc项目中,配置数据是通过web.config里的appSettings节点配置,我们不得不写一些读取配置文件字符串的类,比如保存在静态的变量中。 而在mvc core中,这种不优雅的读取字符串的方式得到了进化,以json数据写入和读取的方式很优雅,省了很多代码,这个思想有点现在流行的对象存储。 来,上代码: 这是一个appsettings.json文件,也就是mvc core的配置文件,注意Administrator节点,它配置了网站管理员的用户名和密码,那mvc core是如何优雅的读取的呢? 首先,我们定义一个Administrator的类: 其次,在Startup.cs文件的ConfigureServices方法里写一行代码,一行,嗯,一行: 这样,我们就可以读取到配置的Administrator节点的数据啦,so handy... 这里涉及到mvc core的另外一个强大的特性,就是DI,在构造函数里注入的这个接口就是我们需要读取配置文件的数据。 很优雅吧? 来源: oschina 链接: https://my.oschina.net/u/4340851/blog/3712912

.NET 黑魔法

喜你入骨 提交于 2020-12-16 10:37:41
asp.net core 里如何记录日志呢? 这要从asp.net core的依赖注入说起,在asp.net core里的依赖注入真是无所不在,各种面向切面的接口与事件。 好吧,来点干货。 首先,我们希望有这样一种调用方式(或者说asp.net core集成的日志功能只能用这种方式): 在asp.net core里,框架内的很多功能都是依赖注入,不需要new XXX(),只需要在对象的构造函数里注入就好啦。 上图的ILogger<LogController> logger,就是asp.net core日志功能的接口。 this.logger.LogInformation("这里是日志信息的消息"); 就是记录一个信息日志,通常跟业务相关。 this.logger.LogError(e, e.StackTrace, new string[] { "附加参数1", "附加参数2" });就是记录一个异常日志。 当然,还有其他级别的方法,比如.LogDebug(),.LogWarning() 等等。 到此,如何使用日志功能已经讲完了,下来我们看看怎么配置它。 注意途中Startup方法和Configure方法,这里我们用了NLog,那么NLog是什么呢? 其实他是asp.net core ILogger接口的实现,我要通过接口注入,又没有实例化的代码,所以实例化的工作只能交由别人来做了

.NET Core 3.0 特性初探:C# 8、WPF、Windows Forms、EF Core

天大地大妈咪最大 提交于 2020-12-16 10:29:19
.NET Core 的下一个主要版本最近进入了预览阶段,.NET Core 3.0 将支持使用 Windows Presentation Foundation (WPF)、Windows Forms(WinForms)、Entity Framework (EF)、Blazor、 C# 8 和.NET Standard 2.1 构建桌面应用程序。 .NET Core 的下一个主要版本最近进入了预览阶段,.NET Core 3.0 将支持使用 Windows Presentation Foundation (WPF)、Windows Forms(WinForms)、Entity Framework (EF)、Blazor、 C# 8 和.NETStandard 2.1 构建桌面应用程序。 正如 InfoQ报道的那样,WPF 和 WinForms 最近都在 MIT 许可协议下开源。虽然是.NET Core 3.0 的一部分,但它们目前只能在 Windows 上使用,而且微软似乎也不打算将它们移植到其他平台上,但开源为社区将它们移植到 macOS 和 Linux 上提供了可能。 除了在.NET Core 中增加了对 Windows 桌面应用程序的支持外,新版本还将通过引入Blazor 组件来推进对.NET Core Web 开发的支持。Blazor 是一个开放的基于 Web

简要记录丨Windows 下 VSCode 搭建基础 C/C++ 编译环境

丶灬走出姿态 提交于 2020-12-15 15:16:08
道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年! 文章目录 1 参考资料 2 简要说明 3 正文记录 3.1 软件安装 3.2 扩展插件安装 3.3 C/C++ 编译器安装 3.4 VSCode C/C++ 环境配置 3.4.1 C++ 编译环境配置 3.4.2 C 编译环境配置 4 编译程序测试 5 总结 1 参考资料 Visual Studio Code 如何编写运行 C、C++ 程序? - 谭九鼎的回答 - 知乎 (https://www.zhihu.com/question/30315894/answer/154979413) vscode 配置 C/C++ 编译环境 教程( https://blog.csdn.net/qq_43041976/article/details/100542557 )   谢谢各位前辈的教程帮助,十分感激! 2 简要说明   首先要明白,VSCode 仅仅只是一个文本编辑器而已,类似记事本、 Sublime Text 等,本身不具备编译器的功能。   但是 VSCode 可以通过安装各种扩展插件,实现代码编译、调试、运行等功能。   我觉得首先概念要正确,然后才能好好正视这个软件,参考知乎回答解释如下: VSC 只是一个纯文本编辑器( editor ),不是 IDE (集成开发环境),不含编译器( compiler

记MAC地址、磁盘序列号的获取

纵饮孤独 提交于 2020-12-15 08:14:49
import java.io.* ; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.* ; /** * 注意事项: * ① 通过执行vbs 脚本(基于微软 Visual Basic的脚本语言) 来获取信息的方式只适用于windows系统,因为这种方式极度依赖 Windows脚本宿主环境的支持 * ② 关于临时目录,可通过 System.getProperty("java.io.tmpdir") 获取其具体位置。在window下通常为 C:\Users\Administrator\AppData\Local\Temp ,linux系统 下为 /tmp * ③ 命令方式和执行vbs 脚本的方式获取到的磁盘序列号并不相同,具体哪个是真实的序列号,有待验证 * ④ 或可尝试通过arp 命令来获取物理地址,但是arp查询的是高速缓存表的IP-MAC映射关系,包括了网络中与本机通信过的所有主机的MAC-IP映射关系(你可以ping一下远程主机建立相应的映射关系缓存),获取的地址信息或显得过于庞杂 * ⑤ 针对 Linux 系统主要通过执行命令的方式

腾讯 Code Review 规范出炉!你还敢乱写代码??

孤街醉人 提交于 2020-12-14 22:36:22
来源:腾讯技术工程 cheaterlin 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论。发现不少同学 code review 与写出好代码的水平有待提高。在这里,想分享一下我的一些理念和思路。 为什么技术人员包括 leader 都要做 code review 谚语曰: 'Talk Is Cheap, Show Me The Code'。知易行难,知行合一难。嘴里要讲出来总是轻松,把别人讲过的话记住,组织一下语言,再讲出来,很容易。绝知此事要躬行。设计理念你可能道听途说了一些,以为自己掌握了,但是你会做么?有能力去思考、改进自己当前的实践方式和实践中的代码细节么?不客气地说,很多人仅仅是知道并且认同了某个设计理念,进而产生了一种虚假的安心感---自己的技术并不差。但是,他根本没有去实践这些设计理念,甚至根本实践不了这些设计理念,从结果来说,他懂不懂这些道理/理念,有什么差别?变成了自欺欺人。 代码,是设计理念落地的地方,是技术的呈现和根本。同学们可以在 review 过程中做到落地沟通,不再是空对空的讨论,可以在实际问题中产生思考的碰撞,互相学习,大家都掌握团队里积累出来最好的实践方式!当然,如果 leader 没时间写代码,仅仅是 review 代码,指出其他同学某些实践方式不好,要给出好的实践的意见