前言 这一篇絮絮叨叨,逻辑不太清晰的编写Java框架的的一个过程,主要描述我作为一个java初学者,在编写Java框架时的一些心得感悟。...因为我是C#的开发者,所以,在编写Java框架时,或多或少会带入一些C#的固有观念,所以,这也是一个C#观念与Java观念碰撞的一个框架。...Java与C#的一些小区别 命名空间:在C#中命名空间+类名是类,在Java中命名空间+类名是命名空间,即,Java中会出现Import某一个类的完全限定名。...项目框架:Spring。 JDK:1.8。 ORM:Mybatis。 首先我们创建一个Spring的Web项目——k_framework,C#开发可以参考:一个C#开发者重温Java的心路历程。...(在java中通常工具类命名会以util结尾,这里我保持c#的命名风格) 控制器 定义CommandController类,Get和Post两个函数,用于处理全部的Get和Post请求。
该项目在 GitHub 上托管,并被集成到 C#/.NET/.NET Core 优秀项目框架精选列表中。...C#中可通过 ClientConnection 类或 ConnectionCache 类创建客户端连接,操作简便且可异步连接。服务端通过 Server 类实例接收连接,并可监听配置的地址上的新连接。...同时也阐述了如何使用其他 C# DLL 库,方法与前述相同。针对 VC++的 DLL,需声明函数定义后方可使用,并给出了调用 Windows API 函数的例子。提供了示例下载链接。...当有多个命名捕获时该怎么办,如何在 F# 中自然地处理命名捕获等。...网站、文档等 推文 当一个局部函数被编译成 IL 时,它就变成了一个名称以“g”开头的方法。 https://x.com/khyperia/status/1782787967703998667?
C#编程语言中,最常使用的是类和类中的函数和属性。正向调用的方法是,创建类,然后用类创建一个对象。接下来就可以用这个对象调用类中的方法和属性了。 而反射,就是相对于这种正向调用的存在。...,反射时传递了字符串"Syntax.Kiba",然后通过解析字符串,获取到了该字符串对应的类的类型,最后再借助Activator来辅助创建类的实例。...即,只要反射时把类的命名空间写全,那么速度就不会慢。 2,函数反射 函数的反射应用主要是使用类MethodInfo类反射,下面先看下基础应用。...框架中使用的两个约定如下: 第一个是,处理Command的类必须后缀名是Command的类名+Handler结尾。 第二个是,处理Command的类中的处理函数名必须为Excute。...C#语法——消息,MVVM的核心技术。 我对C#的认知。
吐槽一下 1,现在项目创建完成后,系统在生成一个Main函数启动类时,使用了Arifact的值来做开头;这事很奇怪,Arifact是和Group在第一步一起创建的,两者是上下级关系...比如Spring框架就不在JDK自带的Jar包里,所以,使用Spring框架开发项目,就要先下载其相应的Jar包。...@SpringBootApplication 这种@开头的东西叫注解,它使用方式与C#的特性类似,要放在类,函数,属性上面;然后在注解(特性)的定义里去找到它的宿主(类or函数or属性),然后为他增加特性...也许是因为我定义实体时总是想着他要被充血,所以我才觉得这注解很奇葩吧。。。 在上图中我们还可以看到,@Data注解是红色的,这是因为,我们还没有引入他依赖的Jar包。如何引用呢?呃。。。...组织创建的开源项目,而我们在项目中,引用这种开源项目时,需要在dependency标签下增加groupId和artifactId两个标签,并在其中填写这个项目创建时设置的Group和Artifact属性值
lz因为既是使用者,又是开发者,所以有思维定势——如果我100%是这个框架的编写者,或者我对框架的所有实现完全掌握,我甚至会考虑使用自己的框架代替通用的ORM。...--正因为有不同数据库的方言问题,所以框架使用SQL-MAP技术,将那些需要高效执行的、数据库特性的SQL单独写到配置文件中,当需要切换数据库的时候, 仅仅替换这个SQL配置文件即可(SQL-MAP配置文件...--框架提供了从数据库来生成实体类的工具,但也允许你先ModelFirst、CodeFirst,我的许多示例(比如示例操作OQL的部分)都是直接创建实体类, 没有设计数据表的,如果采用手工方式,你可以自定义要持久化哪些属性以及如何持久化...,而是QuestionBase具体实现类如何支持实体类的问题,你可以先CodeFirst, 先设计“领域模型”(我认为你给的例子不再是一个简单的实体类了,而是一个领域模型),再手工对实体类进行持久化,例如持久化...比如自定义函数和SQL类型等等 --PDF.NET的实体类本着从简的原则,实体类没有引入复杂关系的概念,遇到这些复杂的查询,可以使用SQL-MAP功能,它可以将DataReader的结果读入实体类中;
文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载 (1) 在C#/.NET应用程序开发中创建一个基于...同时,我们也使用一个简单的定时任务演示了Topshelf服务的执行情况。 今天我将继续为大家分享关于Topshelf主题的技术文章。...本文主要演示在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)。...DaemonApplicationInfo.cs(需守护的应用程序实体类): namespace TopshelfDemoService { /// /// 需守护的应用程序实体...预知后事如何请听下回分解(未完待续)... 好了,今天的在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)的分享就到这里。
Blazor 是将 C# 引入浏览器的 Microsoft 试验框架,正好可以填补欠缺的 C# 一环。...图 2:注册窗体 共享库 所有需要在服务器和 Blazor 客户端之间共享的代码都位于一个独立的共享库项目中。共享库包含模型类和非常简单的验证引擎。模型类保留注册窗体中的数据字段。...每个字段都使用映射到验证规则的属性进行修饰。我选择了创建非常简单的模型,它很像实体框架 (EF) 数据注释模型。此模型的所有逻辑都包含在共享库中。...有两种不同的 CheckRules 函数:一种是缺少参数,但对所有字段验证全部规则;另一种有 fieldName 参数,并仅验证特定字段。在字段更新时,使用的是第二种函数,并立即对此字段验证规则。...IsValid 字段指明规则是否有效,而 Message 字段则包含要在规则无效时显示的错误消息。
7、定义构造函数 构造函数是与该类具有相同名称的类中的成员函数。每当创建对象类时,都会自动调用构造函数。它在初始化类时构造数据成员的值。 8、什么是锯齿状阵列? 具有数组类型元素的数组称为锯齿数组。...反序列化是从字节流中创建对象的反向过程。 12、我们可以在静态方法中使用“ this”命令吗? 我们不能在静态方法中使用’This’,因为我们只能在静态方法中使用静态变量/方法。...常量变量在编译时声明和初始化。此后无法更改该值。只读仅在我们要在运行时分配值时使用。 14、什么是接口类?举一个例子 接口是仅具有公共抽象方法的抽象类,并且这些方法仅具有声明而不具有定义。...用户控件不能放置在工具箱中并从中拖放。他们有自己的设计和代码背后。用户控件的文件扩展名为ascx。 17、 C#中的密封类是什么? 当我们想限制继承的类时,我们创建密封的类。...工具取决于您自己,因为方法位于您自己的类中。当来自不同接口的方法期望不同的数据时可能会出现问题,但就编译器而言,您可以。 关注苏州程序大白,持续更新技术分享。谢谢大家支持
应用:当我们做系统设计时,如果发现有一个类拥有了两种的职责,那就问自己一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分吧。千万不要让一个类干的事情太多! 2....译文:软件实体,如:类、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。 理解:简言之,对扩展开放,对修改封闭。换句话说,可以去扩展类,但不要去修改类。...译文:使用基类的指针或引用的函数,必须是在不知情的情况下,能够使用派生类的对象。 理解:父类能够替换子类,但子类不一定能替换父类。...组合/聚合复用原则(Composition/Aggregation Reuse Principle - CARP) 当要扩展类的功能时,优先考虑使用组合,而不是继承。...翻译为:不要联系我,我会联系你。对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象。 其他设计原则 1.
然而,它们下面都是相同的框架、相同的API,而这种影响是非常巨大的。如果这些都自成一体的话,你就会在互操作和资源消耗中慢慢耗死。 一般来说,您赞成使用多种语言的虚拟机吗?...Anders: 我是想这么做。那样你就可以更好地利用社区创新。 您是在C#社区的什么地方看到的?大家会带给您代码吗?您去拜访客户吗?您会让您的MVP(译注6)在新闻组和用户组中闲逛吗?...我最初做Turbo Pascal时,运行时库或许只有100到150个标准函数,当时情况就是这样。而现在,.NET框架有10000个类型和100000个成员。显然, 利用好这些资源变得日益重要。...我的意思是说这听起来很愚蠢,对吗?我极为推崇方法和类都尽可能少的那些API。有些人相信越多就会越好。我不是这么想的。我想,看看你认为人们会怎么样来使用你的API是非常重要的。...未来,我们有可能让框架来完成处理并发的工作吗? Anders:噢,我想可能。
30、请编写创建一个线程的代码? 1、请解释new与的区别? 在C#中,new关键字可用作运算符和修饰符。 (1)new运算符用于在堆上创建对象和调用构造函数。 ...当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在在该变量中。若要使用ref参数,必须将变量作为ref参数显示传递到方法。变量的值被传递到ref参数。...当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 当希望方法返回多个值时,声明out方法非常有用。使用out参数的方法仍然可以返回一个值。....; 11、C#中有没有静态构造函数,如果有是做什么用的? 有。静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。...静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。 12、在C#中如何实现多态?
CoC本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。...当Struts 2接受一个请求时,会创建ActionContext、Value-Stack和Action对象,然后把Action存放进Value-Stack,所以Action的实例变量可以通过OGNL访问...Insert语句,当需要封装一个长会话流程的时候,一个persist这样的函数是需要的。...返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。...一旦开启了二级缓存并设置了需要使用二级缓存的实体类,SessionFactory就会缓存访问过的该实体类的每个对象,除非缓存的数据超出了指定的缓存空间。
很讨厌,是吗?现在,Visual Studio有一个内置特性,可以完美地格式化代码。要做到这一点,只需到相关的类中按CTRL + K和CTRL + d,看到了吗?很酷,是吗?...您不希望通过多个类复制粘贴一个函数。相反,您可以做的是创建一个共享库项目,并在每个必需的项目中引用它。通过这种方式,我们构建了可重用的函数。...而且,如果需要进行任何修改,您只需要更改共享库中的代码,而不是在任何地方更改。 保持类尽可能小 根据Solid原则,您必须将类隔离为只有一个职责函数的小块。这有助于我们实现松散耦合的代码。...设计模式基本上是能够在架构解决方案时提供可重用解决方案的模式。 把您的解决方案组织好 你构建结构化的解决方案吗?建立一个这样的系统是非常令人满意和重要的。下面是我遵循洋葱架构的一个解决方案。...这个操作符在C#中称为Null合并操作符。 考虑另一个例子,下面是一个接受Student对象作为参数并检查空对象的小函数。如果为空,返回一个带有数据的新对象,否则返回相同的对象。
当ViewModel 也变得像 Controller 一样臃肿时,我该怎么办?社区也因此分裂为喜欢 MVVM 的人和不喜欢 MVVM 的人。 MVP 解决此问题的另一种尝试是 MVP。...说真的,当您听到 MVC 时,您会怎么想?“一共有 3 个类:Model 是数据,View 是视图,Controller 在它们之间”。但是,MVC 并不是那么简单。...在 iOS 中,MVP 方案实际上如下所示: ? 我们真的需要这个新类吗?这看起来很奇怪,因为我们只是创建了具有完全相同角色的 UIViewController 的副本。...但是在 VIPER 中,即使逻辑很小或非常具体,我们也总是创建 5 个类。问题确实有所不同,并且没有适合所有问题的方案。我们应该根据此特定逻辑单独进行分解。...我们应该创建并命名我们的实体,使其清晰明确,而不仅仅是通用的“Interactor”。 为所有问题创建相同的类,并且每次仅将代码添加到这些类中并不是一个好的设计。
,这点在后来的C#2中得到了改进,支持匿名委托delegate{…}的方式使用,再到现在的C#3那就更方便了,直接使用面向函数式的Lambda表达式;那么这样还需要反射调用对象的方法吗?...; 那么常规设计可能需要将扩展点配置出来放在指定的配置文件里面,然后当对象经过Infrastructure Layer中的指定Component时触发事件路由,然后从缓存中读取出配置的信息执行,那么配置文件可能大概是这样的一个结构...,参数是缓存的过期时间;第二个特性EntityValidator用来设置当实体进行相关处理的时候需要的验证类型,这里选择是所有操作; 现在的问题是关于特性的优先级,对于Order类的处理到底是先Cache...;难道我们在设计User类的时候都将这些定义在对象内部吗?...(还在为参数类型烦恼吗) 在设计泛型方法的时候要学会使用类型推断技巧,这样会很方便的在调用的时候减少你显示调用的代码,也会显得很优美;大家应该都比较熟悉Func泛型委托,它是C#3中的主角,也是函数式编程的基础
谜题 在C#中,用virtual关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生类重写(override)。...我们能完全避免这么做吗?很遗憾,答案是不能。比如如果项目中使用了NHibernate,框架本身要求ORM实体类中,所有与数据库列具有对应关系的属性都必须为虚属性。...这是因为NHibernate为了实现延迟加载,会为每个实体类生成proxy,这些proxy需要重写实体类中属性的getter/setter。...而有些时候,为了业务需要,我们不得不在实体类的构造函数中对这些属性进行某些操作(比如初始化)。 我认为这么做是技术选型所致的必然结果,是完全可以接受的。...但我们要注意,在代码中保证那些可能会被继承的实体,在子类中重写那些虚属性时,不要依赖于子类自身的构造函数(这几乎是可以保证的,因为与数据库列映射的属性,只能是最简单的getter/setter)。
发布时,选择该篇文章希望投稿至的一个赛道标签:第四期热点征文-大模型技术/前端框架/C#/金三银四。...内容可以包括开发环境的搭建、组件与模板的使用等;前端框架避坑指南:结合自己的开发经历,分享在使用前端框架过程中如何避免常见问题的经验;前端框架的未来趋势与展望分析:前端框架的发展趋势和未来方向,包括但不限于新技术的融合...未来国内的互联网公司会更倾向于C# 开发吗?你对C#这门语言在国内的热度有什么样的看法呢?...C#与前端:聊聊C# 在前端框架中的应用,包括使用 C# 开发的流行前端框架,以及 C# 在前端开发中的优势和局限性。等等…选题赛道4️⃣ 金三银四一年一度的“金三银四”又要来临。...3、需确保文章的完整性,一篇文章如字数过多可拆成两篇,必须上下文连贯,结构完整,有头有尾。如刻意将一篇文章拆成多篇文章且文章不完整,将取消当篇作品的获奖资格。4、所有文章需要有个人见解、思考。
例子通过Button点击事件启动新线程创建新窗口,但没有消息循环导致异常。解决方法是使用Dispatcher类创建消息循环,确保线程能处理事件并保持窗口运行。...文中详细说明了框架的模块化和自动服务注册功能,展示了如何创建和配置模块类、依赖注入以及在程序启动时初始化模块。框架通过实现IModule接口,使得服务可以自动注册并简化代码复杂度。...包1.0.10及以上版本的使用方法,尤其是实体类JSON模式生成器的核心代码。...使用Wesky.Net.Opentools库,一行代码实现自动解析实体类summary注释信息(可用于数据实体文档的快速实现) https://www.cnblogs.com/weskynet/p/18236082...通过引用Wesky.Net.OpenTools包,可以为实体类添加注释,生成Json数据字符串或实体类说明文档。
领取专属 10元无门槛券
手把手带您无忧上云