首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个C#开发编写Java框架的心路历程

前言 这一篇絮絮叨叨,逻辑不太清晰的编写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请求。

1K10

.NET周刊【5月第1期 2024-05-05】

该项目在 GitHub 上托管,并被集成到 C#/.NET/.NET Core 优秀项目框架精选列表。...C#可通过 ClientConnection 或 ConnectionCache 创建客户端连接,操作简便且可异步连接。服务端通过 Server 实例接收连接,并可监听配置的地址上的新连接。...同时也阐述了如何使用其他 C# DLL 库,方法与前述相同。针对 VC++的 DLL,声明函数定义后方可使用,并给出了调用 Windows API 函数的例子。提供了示例下载链接。...有多个命名捕获该怎么办,如何在 F# 自然地处理命名捕获等。...网站、文档等 推文 一个局部函数被编译成 IL ,它就变成了一个名称以“g”开头的方法。 https://x.com/khyperia/status/1782787967703998667?

11810
您找到你想要的搜索结果了吗?
是的
没有找到

C#语法——反射,架构师的入门基础。

C#编程语言中,最常使用的是函数和属性。正向调用的方法是,创建,然后用创建一个对象。接下来就可以用这个对象调用的方法和属性了。 而反射,就是相对于这种正向调用的存在。...,反射传递了字符串"Syntax.Kiba",然后通过解析字符串,获取到了该字符串对应的的类型,最后再借助Activator来辅助创建的实例。...即,只要反射的命名空间写全,那么速度就不会慢。 2,函数反射 函数的反射应用主要是使用MethodInfo反射,下面先看下基础应用。...框架使用的两个约定如下: 第一个是,处理Command的必须后缀名是Command的名+Handler结尾。 第二个是,处理Command的的处理函数名必须为Excute。...C#语法——消息,MVVM的核心技术。 C#的认知。

1.2K00

C#语法——反射,架构师的入门基础。

C#编程语言中,最常使用的是函数和属性。正向调用的方法是,创建,然后用创建一个对象。接下来就可以用这个对象调用的方法和属性了。 而反射,就是相对于这种正向调用的存在。...,反射传递了字符串"Syntax.Kiba",然后通过解析字符串,获取到了该字符串对应的的类型,最后再借助Activator来辅助创建的实例。...即,只要反射的命名空间写全,那么速度就不会慢。 2,函数反射 函数的反射应用主要是使用MethodInfo反射,下面先看下基础应用。...框架使用的两个约定如下: 第一个是,处理Command的必须后缀名是Command的名+Handler结尾。 第二个是,处理Command的的处理函数名必须为Excute。...C#语法——消息,MVVM的核心技术。 C#的认知。

18230

一个C#开发者重温Java的心路历程

吐槽一下 1,现在项目创建完成后,系统在生成一个Main函数启动使用了Arifact的值来做开头;这事很奇怪,Arifact是和Group在第一步一起创建的,两者是上下级关系...比如Spring框架就不在JDK自带的Jar包里,所以,使用Spring框架开发项目,就要先下载其相应的Jar包。...@SpringBootApplication 这种@开头的东西叫注解,它使用方式与C#的特性类似,要放在函数,属性上面;然后在注解(特性)的定义里去找到它的宿主(or函数or属性),然后为他增加特性...也许是因为定义实体总是想着他要被充血,所以我才觉得这注解很奇葩吧。。。 在上图中我们还可以看到,@Data注解是红色的,这是因为,我们还没有引入他依赖的Jar包。如何引用呢?呃。。。...组织创建的开源项目,而我们在项目中,引用这种开源项目,需要在dependency标签下增加groupId和artifactId两个标签,并在其中填写这个项目创建设置的Group和Artifact属性值

57720

使用ORM框架,必须迁就数据库的设计

lz因为既是使用者,又是开发者,所以有思维定势——如果100%是这个框架的编写者,或者框架的所有实现完全掌握,甚至会考虑使用自己的框架代替通用的ORM。...--正因为有不同数据库的方言问题,所以框架使用SQL-MAP技术,将那些需要高效执行的、数据库特性的SQL单独写到配置文件需要切换数据库的时候, 仅仅替换这个SQL配置文件即可(SQL-MAP配置文件...--框架提供了从数据库来生成实体的工具,但也允许你先ModelFirst、CodeFirst,的许多示例(比如示例操作OQL的部分)都是直接创建实体, 没有设计数据表的,如果采用手工方式,你可以自定义要持久化哪些属性以及如何持久化...,而是QuestionBase具体实现如何支持实体的问题,你可以先CodeFirst, 先设计“领域模型”(认为你给的例子不再是一个简单的实体了,而是一个领域模型),再手工对实体进行持久化,例如持久化...比如自定义函数和SQL类型等等 --PDF.NET的实体本着从简的原则,实体没有引入复杂关系的概念,遇到这些复杂的查询,可以使用SQL-MAP功能,它可以将DataReader的结果读入实体

2.1K90

在C#.NET应用程序开发创建一个基于Topshelf的应用程序守护进程(服务)

文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载 (1) 在C#/.NET应用程序开发创建一个基于...同时,我们也使用一个简单的定时任务演示了Topshelf服务的执行情况。 今天将继续为大家分享关于Topshelf主题的技术文章。...本文主要演示在C#/.NET应用程序开发创建一个基于Topshelf的应用程序守护进程(服务)。...DaemonApplicationInfo.cs(守护的应用程序实体): namespace TopshelfDemoService { /// /// 守护的应用程序实体...预知后事如何请听下回分解(未完待续)... 好了,今天的在C#/.NET应用程序开发创建一个基于Topshelf的应用程序守护进程(服务)的分享就到这里。

2.1K20

结合使用 C# 和 Blazor 进行全栈开发

Blazor 是将 C# 引入浏览器的 Microsoft 试验框架,正好可以填补欠缺的 C# 一环。...图 2:注册窗体 共享库 所有需要在服务器和 Blazor 客户端之间共享的代码都位于一个独立的共享库项目中。共享库包含模型和非常简单的验证引擎。模型保留注册窗体的数据字段。...每个字段都使用映射到验证规则的属性进行修饰。选择了创建非常简单的模型,它很像实体框架 (EF) 数据注释模型。此模型的所有逻辑都包含在共享库。...有两种不同的 CheckRules 函数:一种是缺少参数,但对所有字段验证全部规则;另一种有 fieldName 参数,并仅验证特定字段。在字段更新使用的是第二种函数,并立即对此字段验证规则。...IsValid 字段指明规则是否有效,而 Message 字段则包含要在规则无效显示的错误消息。

6.6K40

超硬核!苏州同程旅游学长给我的全面的面试知识库

7、定义构造函数 构造函数是与该类具有相同名称的的成员函数。每当创建对象,都会自动调用构造函数。它在初始化构造数据成员的值。 8、什么是锯齿状阵列? 具有数组类型元素的数组称为锯齿数组。...反序列化是从字节流创建对象的反向过程。 12、我们可以在静态方法中使用“ this”命令? 我们不能在静态方法中使用’This’,因为我们只能在静态方法中使用静态变量/方法。...常量变量在编译声明和初始化。此后无法更改该值。只读仅在我们要在运行时分配值使用。 14、什么是接口?举一个例子 接口是仅具有公共抽象方法的抽象,并且这些方法仅具有声明而不具有定义。...用户控件不能放置在工具箱并从中拖放。他们有自己的设计和代码背后。用户控件的文件扩展名为ascx。 17、 C#的密封是什么? 当我们想限制继承的,我们创建密封的。...工具取决于您自己,因为方法位于您自己的来自不同接口的方法期望不同的数据可能会出现问题,但就编译器而言,您可以。 关注苏州程序大白,持续更新技术分享。谢谢大家支持

3K20

一位10年Java工作经验的架构师聊Java和工作经验

应用:当我们做系统设计时,如果发现有一个拥有了两种的职责,那就问自己一个问题:可以将这个分成两个?如果真的有必要,那就分吧。千万不要让一个干的事情太多! 2....译文:软件实体,如:、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。 理解:简言之,对扩展开放,对修改封闭。换句话说,可以去扩展,但不要去修改。...译文:使用的指针或引用的函数,必须是在不知情的情况下,能够使用派生的对象。 理解:父能够替换子类,但子类不一定能替换父。...组合/聚合复用原则(Composition/Aggregation Reuse Principle - CARP) 要扩展的功能,优先考虑使用组合,而不是继承。...翻译为:不要联系,我会联系你。对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码主动的创建对象,而是由容器帮我们来创建并管理这些对象。 其他设计原则 1.

36530

一位10年Java工作经验的架构师聊Java和工作经验

应用:当我们做系统设计时,如果发现有一个拥有了两种的职责,那就问自己一个问题:可以将这个分成两个?如果真的有必要,那就分吧。千万不要让一个干的事情太多! 2....译文:软件实体,如:、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。 理解:简言之,对扩展开放,对修改封闭。换句话说,可以去扩展,但不要去修改。...译文:使用的指针或引用的函数,必须是在不知情的情况下,能够使用派生的对象。 理解:父能够替换子类,但子类不一定能替换父。...组合/聚合复用原则(Composition/Aggregation Reuse Principle - CARP) 要扩展的功能,优先考虑使用组合,而不是继承。...翻译为:不要联系,我会联系你。对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码主动的创建对象,而是由容器帮我们来创建并管理这些对象。 其他设计原则 1.

61160

编程之魂之C# – 与C#之父Anders的访谈

然而,它们下面都是相同的框架、相同的API,而这种影响是非常巨大的。如果这些都自成一体的话,你就会在互操作和资源消耗慢慢耗死。 一般来说,您赞成使用多种语言的虚拟机?...Anders: 是想这么做。那样你就可以更好地利用社区创新。 您是在C#社区的什么地方看到的?大家会带给您代码?您去拜访客户?您会让您的MVP(译注6)在新闻组和用户组闲逛?...最初做Turbo Pascal,运行时库或许只有100到150个标准函数,当时情况就是这样。而现在,.NET框架有10000个类型和100000个成员。显然, 利用好这些资源变得日益重要。...的意思是说这听起来很愚蠢,对?极为推崇方法和都尽可能少的那些API。有些人相信越多就会越好。不是这么想的。想,看看你认为人们会怎么样来使用你的API是非常重要的。...未来,我们有可能让框架来完成处理并发的工作? Anders:噢,想可能。

76320

c#面试题抽象和接口的区别-金三银四面试:C#程序员经常遇到的30道基础面试题,想你所想

30、请编写创建一个线程的代码?   1、请解释new与的区别?   在C#,new关键字可用作运算符和修饰符。   (1)new运算符用于在堆上创建对象和调用构造函数。   ...控制传递回调用方法,在方法对参数所做的任何更改都将反映在在该变量。若要使用ref参数,必须将变量作为ref参数显示传递到方法。变量的值被传递到ref参数。...控制传递回调用方法,在方法对参数所做的任何更改都将反映在该变量。   希望方法返回多个值,声明out方法非常有用。使用out参数的方法仍然可以返回一个值。....;   11、C#中有没有静态构造函数,如果有是做什么用的?   有。静态构造函数用于初始化。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化。...静态构造函数的典型用途是:使用日志文件,将使用这种构造函数向日志文件写入项。   12、在C#如何实现多态?

1.9K20

Java程序员面试题集(86-115)

CoC本质是说,开发人员仅规定应用不符约定的部分。例如,如果模型中有个名为Sale的,那么数据库对应的表就会默认命名为sales。...Struts 2接受一个请求,会创建ActionContext、Value-Stack和Action对象,然后把Action存放进Value-Stack,所以Action的实例变量可以通过OGNL访问...Insert语句,需要封装一个长会话流程的时候,一个persist这样的函数是需要的。...返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭,数据库连接就同时关闭了。...一旦开启了二级缓存并设置了需要使用二级缓存的实体,SessionFactory就会缓存访问过的该实体的每个对象,除非缓存的数据超出了指定的缓存空间。

1.8K70

编写干净的C#代码技巧

很讨厌,是?现在,Visual Studio有一个内置特性,可以完美地格式化代码。要做到这一点,只需到相关的按CTRL + K和CTRL + d,看到了吗?很酷,是?...您不希望通过多个复制粘贴一个函数。相反,您可以做的是创建一个共享库项目,并在每个必需的项目中引用它。通过这种方式,我们构建了可重用的函数。...而且,如果需要进行任何修改,您只需要更改共享库的代码,而不是在任何地方更改。 保持尽可能小 根据Solid原则,您必须将隔离为只有一个职责函数的小块。这有助于我们实现松散耦合的代码。...设计模式基本上是能够在架构解决方案提供可重用解决方案的模式。 把您的解决方案组织好 你构建结构化的解决方案?建立一个这样的系统是非常令人满意和重要的。下面是遵循洋葱架构的一个解决方案。...这个操作符在C#称为Null合并操作符。 考虑另一个例子,下面是一个接受Student对象作为参数并检查空对象的小函数。如果为空,返回一个带有数据的新对象,否则返回相同的对象。

21930

唯一可行的 iOS 架构

ViewModel 也变得像 Controller 一样臃肿该怎么办?社区也因此分裂为喜欢 MVVM 的人和不喜欢 MVVM 的人。 MVP 解决此问题的另一种尝试是 MVP。...说真的,您听到 MVC ,您会怎么想?“一共有 3 个:Model 是数据,View 是视图,Controller 在它们之间”。但是,MVC 并不是那么简单。...在 iOS ,MVP 方案实际上如下所示: ? 我们真的需要这个新?这看起来很奇怪,因为我们只是创建了具有完全相同角色的 UIViewController 的副本。...但是在 VIPER ,即使逻辑很小或非常具体,我们也总是创建 5 个。问题确实有所不同,并且没有适合所有问题的方案。我们应该根据此特定逻辑单独进行分解。...我们应该创建并命名我们的实体,使其清晰明确,而不仅仅是通用的“Interactor”。 为所有问题创建相同的,并且每次仅将代码添加到这些并不是一个好的设计。

1.2K20

.NET框架设计(常被忽视的C#设计技巧)

,这点在后来的C#2得到了改进,支持匿名委托delegate{…}的方式使用,再到现在的C#3那就更方便了,直接使用面向函数式的Lambda表达式;那么这样还需要反射调用对象的方法?...; 那么常规设计可能需要将扩展点配置出来放在指定的配置文件里面,然后对象经过Infrastructure Layer的指定Component触发事件路由,然后从缓存读取出配置的信息执行,那么配置文件可能大概是这样的一个结构...,参数是缓存的过期时间;第二个特性EntityValidator用来设置实体进行相关处理的时候需要的验证类型,这里选择是所有操作; 现在的问题是关于特性的优先级,对于Order的处理到底是先Cache...;难道我们在设计User的时候都将这些定义在对象内部?...(还在为参数类型烦恼) 在设计泛型方法的时候要学会使用类型推断技巧,这样会很方便的在调用的时候减少你显示调用的代码,也会显得很优美;大家应该都比较熟悉Func泛型委托,它是C#3的主角,也是函数式编程的基础

2K71

#1在构造函数内调用虚方法 | TW洞见

谜题 在C#,用virtual关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生重写(override)。...我们能完全避免这么做?很遗憾,答案是不能。比如如果项目中使用了NHibernate,框架本身要求ORM实体,所有与数据库列具有对应关系的属性都必须为虚属性。...这是因为NHibernate为了实现延迟加载,会为每个实体生成proxy,这些proxy需要重写实体属性的getter/setter。...而有些时候,为了业务需要,我们不得不在实体的构造函数对这些属性进行某些操作(比如初始化)。 认为这么做是技术选型所致的必然结果,是完全可以接受的。...但我们要注意,在代码中保证那些可能会被继承的实体,在子类重写那些虚属性,不要依赖于子类自身的构造函数(这几乎是可以保证的,因为与数据库列映射的属性,只能是最简单的getter/setter)。

1.2K110

热点技术征文赛第四期来啦!赛道增加话题不断,更多获奖机会等你来拿!

发布,选择该篇文章希望投稿至的一个赛道标签:第四期热点征文-大模型技术/前端框架/C#/金三银四。...内容可以包括开发环境的搭建、组件与模板的使用等;前端框架避坑指南:结合自己的开发经历,分享在使用前端框架过程如何避免常见问题的经验;前端框架的未来趋势与展望分析:前端框架的发展趋势和未来方向,包括但不限于新技术的融合...未来国内的互联网公司会更倾向于C# 开发?你对C#这门语言在国内的热度有什么样的看法呢?...C#与前端:聊聊C# 在前端框架的应用,包括使用 C# 开发的流行前端框架,以及 C# 在前端开发的优势和局限性。等等…选题赛道4️⃣ 金三银四一年一度的“金三银四”又要来临。...3、确保文章的完整性,一篇文章如字数过多可拆成两篇,必须上下文连贯,结构完整,有头有尾。如刻意将一篇文章拆成多篇文章且文章不完整,将取消篇作品的获奖资格。4、所有文章需要有个人见解、思考。

1.7K83

.NET周刊【6月第2期 2024-06-09】

例子通过Button点击事件启动新线程创建新窗口,但没有消息循环导致异常。解决方法是使用Dispatcher创建消息循环,确保线程能处理事件并保持窗口运行。...文中详细说明了框架的模块化和自动服务注册功能,展示了如何创建和配置模块、依赖注入以及在程序启动初始化模块。框架通过实现IModule接口,使得服务可以自动注册并简化代码复杂度。...包1.0.10及以上版本的使用方法,尤其是实体JSON模式生成器的核心代码。...使用Wesky.Net.Opentools库,一行代码实现自动解析实体summary注释信息(可用于数据实体文档的快速实现) https://www.cnblogs.com/weskynet/p/18236082...通过引用Wesky.Net.OpenTools包,可以为实体添加注释,生成Json数据字符串或实体说明文档。

9310
领券