-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.json
1 lines (1 loc) · 10.1 KB
/
content.json
1
[{"title":"test","date":"2023-11-24T08:06:14.000Z","path":"2023/11/24/test/","text":"测试部署","tags":[]},{"title":"C#利用正则和反射给对象赋值","date":"2017-11-18T09:02:00.000Z","path":"2017/11/18/CSharpRegexAndPropertySetValue/","text":"如果类中的成员过多,一个属性一个属性的赋值太过繁琐,C#中可以利用反射给对象赋值。 我们如果想利用凡是给一个对象属性赋值可以通过 PropertyInfo.SetValue(object obj, object value) 方式进行赋值。 什么是反射: 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。 反射是.Net中获取运行时类型信息的方式,.Net的应用程序由:程序集(Assembly)、模块(Module)、类型(class)组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息。 Assembly类定义和加载程序集,获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的实例。Type类可以获得对象的类型信息,此信息包含对象的所有要素:方法、构造器、属性等等,通过Type类可以得到这些要素的信息,并且调用之。Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetConstructors或 GetConstructor方法来调用特定的构造函数。MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。诸如此类,还有FieldInfo、EventInfo等等,这些类都包含在System.Reflection命名空间下。 反射的作用: 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。 实例:假设我们有如下一个结构: 12345678910public class RegionConfig{ public string TOP { get; set; } public string RIGHT { get; set; } public string LEFT { get; set; } public string DOWN { get; set; } public string WIDTH { get; set; } public string HEIGHT { get; set; }} 想要从以下字符串中找到相应的元素给以上结构的属性赋值: 1string rgCfg = "TOP:topVal\\nRIGHT:rigthVal\\nLEFT:leftVal\\nDOWN:downVal\\nWIDTH=1200\\nHEIGHT=1300"; 可以使用以下代码利用正则和反射给对象赋值: 123456789101112131415161718192021public static RegionConfig GetRegionConfig(){ string rgCfg = "TOP:topVal\\nRIGHT:rigthVal\\nLEFT:leftVal\\nDOWN:downVal\\nWIDTH=1200\\nHEIGHT=1300"; RegionConfig rConfig = new RegionConfig(); Regex rgRCfg = new Regex(@"(.+)[:=](.+)\\n{0,1}"); MatchCollection mc = rgRCfg.Matches(rgCfg); foreach (Match m in mc) { string key = m.Groups[1].ToString(); string value = m.Groups[2].ToString(); // 利用反射赋值 var property = rConfig.GetType().GetProperty(key); if (property != null) property.SetValue(rConfig, value); } return rConfig;} 运行结果:","tags":[{"name":"编程","slug":"编程","permalink":"http://hibobby.github.io/tags/%E7%BC%96%E7%A8%8B/"},{"name":"C#","slug":"C","permalink":"http://hibobby.github.io/tags/C/"},{"name":"代码片段","slug":"代码片段","permalink":"http://hibobby.github.io/tags/%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5/"}]},{"title":"机器学习笔记","date":"2017-04-10T09:15:25.000Z","path":"2017/04/10/MachineLearningNote/","text":"记录下机器学习过程中的知识点,以便以后复习使用。 以下知识来自周莫烦老师的《有趣的机器学习》视频 机器学习分类: 监督学习 (有数据和标签) 非监督学习(只有数据没有标签) 半监督学习 (结合监督学习和非监督学习) 强化学习 (从经验中总结和提升) 遗传算法 (适者生存,不适者淘汰) 什么是神经网络 (机器学习) 神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,在外界信息的基础上,改变内部的结构,常用来对输入和输出间复杂的关系进行建模。 神经网络由大量的节点和之间的联系构成,负责传递信息和加工信息,神经元也可以通过训练而被强化。 神经网络是如何被训练的,首先它需要很多数据。比如他要判断一张图片是不是猫。就要输入上千万张的带有标签的猫猫狗狗的图片,然后再训练上千万次。 神经网络训练的结果有对的也有错的,如果是错误的结果,将被当做非常宝贵的经验,那么是如何从经验中学习的呢?就是对比正确答案和错误答案之间的区别,然后把这个区别反向的传递回去,对每个相应的神经元进行一点点的改变。那么下一次在训练的时候就可以用已经改进一点点的神经元去得到稍微准确一点的结果。 神经网络是如何训练的呢?每个神经元都有属于它的激活函数,用这些函数给计算机一个刺激行为。 卷积神经网络的简单介绍卷积神经网络是近些年逐步兴起的一种人工神经网络结构, 因为利用卷积神经网络在图像和语音识别方面能够给出更优预测结果, 这一种技术也被广泛的传播可应用. 卷积神经网络最常被应用的方面是计算机的图像识别, 不过因为不断地创新, 它也被应用在视频分析, 自然语言处理, 药物发现, 等等. 近期最火的 Alpha Go, 让计算机看懂围棋, 同样也是有运用到这门技术. Updated on 2017-04-10","tags":[{"name":"学习笔记","slug":"学习笔记","permalink":"http://hibobby.github.io/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"机器学习","slug":"机器学习","permalink":"http://hibobby.github.io/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"},{"name":"大数据","slug":"大数据","permalink":"http://hibobby.github.io/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/"}]},{"title":"2017年读书清单(持续更新)","date":"2017-03-31T11:23:00.000Z","path":"2017/03/31/2017ReadedBookList/","text":"记录下2017年看过的书 已读完2017 年 1 月 CSS揭秘作者: [希腊] Lea Verou 2017 年 3 月 浪潮之巅作者: [美国] 吴军 解忧杂货店作者: [日] 东野圭吾 梦的解析作者: [奥地利] 弗洛伊德 / [奥地利] 西格蒙德·弗洛伊德 嫌疑人X的献身作者: [日] 东野圭吾2017年3月31日读完 在读 计数:读完-5 在读-0 test","tags":[{"name":"读书","slug":"读书","permalink":"http://hibobby.github.io/tags/%E8%AF%BB%E4%B9%A6/"},{"name":"清单","slug":"清单","permalink":"http://hibobby.github.io/tags/%E6%B8%85%E5%8D%95/"},{"name":"备忘","slug":"备忘","permalink":"http://hibobby.github.io/tags/%E5%A4%87%E5%BF%98/"}]},{"title":"我使用的前端插件","date":"2017-02-28T03:16:25.000Z","path":"2017/02/28/IUsedFrontendPlugin/","text":"最近的项目中使用了很多第三方插件,在此简单记录一下,本篇文章会长期更新。 有必要将一些优秀的插件推荐给大家,先挖个坑,以后有时间会找其中比较优秀的插件写一写深入解析的文章。 大家比较熟知的框架和插件,比如jQuery、bootstrap在此略过。 saveSvgAsPnggithub:saveSvgAsPng saveSvgAsPng可以很方便的将网页中的**<svg>标签另存为.png格式的图片。saveSvgAsPng的原理是将svg的内容绘制到canvas中,让后将canvas的dataUrl绑定到一个<a>标签的href属性中,触发<a>**标签的的click事件下载图片。 12// 使用方法:saveSvgAsPng(document.getElementById("diagram"), "diagram.png"); TableExport::TODO select2toastrbootstrap-tasinputfontawesomeintrojs","tags":[{"name":"前端","slug":"前端","permalink":"http://hibobby.github.io/tags/%E5%89%8D%E7%AB%AF/"},{"name":"插件推荐","slug":"插件推荐","permalink":"http://hibobby.github.io/tags/%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/"}]},{"title":"新博客的第一篇文章","date":"2017-02-22T07:46:25.000Z","path":"2017/02/22/MyFirstPost/","text":"欢迎来到我的博客,很多年前在WordPress上写过一些内容,但是现在所有的文章备份都找不到了,最近感觉还是需要在网上有个自己写东西的地方,把平时工作生活中的感受、学到的知识写进去和大家分享。 为什么选择Hexo1. Markdown! 之前学过md的语法,一直没有使用场景,用md写东西不用考虑过多排版方面的事情。 2. 免费! 有了Github Page再也不用自己租用主机了。 3. 备份方便! 之前的WordPress就是因为自己懒得备份、加上域名过期、主机过期导致写了多年的东西都找不到了,现在有了github的强力支持,不用担心文章丢失的问题。 新博客会写些什么文章 前端 C#的一些技巧 大数据方面学习记录 其实这篇文章只是测试使用,希望早点熟悉Hexo,多写能给大家帮助的文章。","tags":[]}]