文档章节

关于极简编程的思考

闲大赋
 闲大赋
发布于 2017/05/07 00:35
字数 2585
阅读 3373
收藏 28

  我是闲大赋,这个昵称用了很长时间,俗话说的好,缺啥炫啥,我本意就是希望又有空闲时间,又不缺钱花,然后现实不是这样。我的Beetl和BeetlSQL开源,并没有给自己带来多少金钱,开放捐助4年以来,总共得到捐助大约是3000块钱(在此感谢那些未曾谋面的捐助者),仅够租用空间和购买域名的钱而已和为数不多的SPA,而投进去的时间确实不计其数,一直都感觉对所在公司有所愧疚。

  闲话少说,我想谈一谈对目前经常出现的字眼极简编程的思考,我认为所谓的“极简”,并不能带来真正的简单。不但要求开发简单,还有阅读简单,维护简单等。

  

>>11:10:12:表达式类型不一致,无法运算(EXPRESSION_NOT_COMPATIBLE):user.price-a 位于1行 资源:/hello.txt
class java.lang.String-class java.lang.Integer
1|${user.price-a}

先看看这个beetl模板错误提示,很清楚,指的是表达式类型不一致,无法用减法运算,且提示了:

class java.lang.String-class java.lang.Integer

即user.price 是字符串类型,a是整形

Beetl对于错误提示还是做得很完善的,但我想说的是,这个错误提示的改进,却是来自JFinal+Beetl一次又一次的使用者反馈,他们自己写的程序,因为这种类型不清楚,在写模板的时候,常常犯下这个错误,我只是在多次帮助JFinal使用者搞清楚问题所在后,才特意加了如上类型的说明,我在技术支持别的MVC框架的时候,从来没有遇到有人范过这样的错误

除了不清楚类型外,JFinal开发者也经常不清楚模型到底有什么属性,Beetl曾经多次背锅,以至于我碰到别人问这种类型或者属性问题的时候,我都会调侃,你是在用JFinal吧,90%的答复都说是。

   在完成项目过程中,会有多个重要产出物,如果你只能选一个去了解,那你会选择谁,我想,毫无疑问,就是系统模型,他是系统概念,系统一切其他产出物的基础,模型包含的属性,他的类型,他的关联关系,成为简单系统乃至复杂系统构成的基础。然而JFinal框架去长期忽视这个前提,早期1.x版本根本就没有真正的模型概念,2.x版本才勉强提供了描述模型的对象,至今JFinal都以无模型作为宣传点。

  那极简编程存在吗,什么是真正的极简编程?

  真正的极简编程就像是一本好的小说,你从任何章节看过去,都会被吸引住。而不是只有第一章才引人入胜。我的意思是指极简编程应该有如下特点

  • 首先应该是开发效率高,比如系统能快速开发项目,在开发环境调试方便。
  • 其次,应该经得住各种折腾,比如系统频繁重构,从单一系统能平滑过渡到分布式系统,从几张表过渡到数百张表。
  • 最后,项目长期维护过程中不给后来人人挖坑,让后来人也能领略到极简编程。极简编程从开始到项目成功,以及最后更迭,都是极简,那才是真正的极简。

   这样的极简编程,很多框架都追求过,比如基于spring的SpringBoot,还有最新崛起的ACT框架,也有很多特定的技术也在追求极简编程,我没有声称自己的Beetl和&&BeetlSql是极简,但很多使用者都给我反馈了这俩项技术的简单易用。

 以Beetl为例,作为一个后端模板引擎,语法基于JS,相当简单了,还有谁不懂JS呢,那些号称极简的模板,总是违背常识的语法和使用习俗。另外Beetl的错误提示在模板里也堪称非常完善。哪怕你的语句里用全角符号,也能在错误提示里指出可能使用了全角。 这样完善的提示才可能使得开发真正正的飞速开发,遇到错误就能很快解决。这才是极其简单!相比某些体积很小,只有几个指令的模板引擎,报错了,都不知道是哪儿错的,这能叫简单吗?

 BeetlSql的简单则来自于尊重以SQL为中心的事实,且以简单明了的Markdown格式管理,辅助内置的CRUD操作和ORM查询支持。因为我做的项目向来都有不少几十行SQL的查询更新逻辑。把SQL放到java代码里,可能写得一时酸爽,但改起来痛苦不堪。我有时候在想,为什么Hibernate和MyBiatis当初差别那么大了,也许就是跟各自作者经历了项目类型有关。如果Hibernate曾经在我这种行业待过,他绝不会写出来Hiberante来的。

   我并非也不需要推销我的开源。我列举我的开源只是想避免被人说“只空谈理论而缺少实践”。作为纯个人开源而非公司性质的开源,没有太多的压力。我一直保持不吹牛,秉承客观的来推广自己的开源,我不想用华丽的字眼来误导人—— 一个功能点介绍就伴随好几个浮夸的形容词。我写这个决心正是来自某位JFinal的使用者对我的诉苦,他曾是java新手,在项目里选择了JFinal,也选择了Beetl作为模板技术。当他把项目做完的时候,他曾经抱怨了很多对极简认识不足的。极简绝不是“开发简单”。

   我也追求极简,曾经认为很多重量级技术不够简单,比如WSDL难以学习,但WSDL确实系统之间最好的交流方式,现在流行的REST比WS更简单,但REST却缺少WSDL,以至于有Swagger搞出来类似的接口规范。

  我也曾认为JSP Tag 比起Beetl的HTML Tag来说复杂的多,特别还有TDL来描述JSP Tag,当时感觉多此一举。但当大家都在使用类似HTML 标签封装渲染逻辑的时候,我也觉得,要是能描述HTML Tag,那Beetl就更加完善了,特别是JSP Tag支持可视化,让我羡慕不已。

    我很长时间都认为那种无类型语言,或者带类型推导的语言,写起来非常酸爽。但每次我看到我写的这些程序,我都感觉看起来非常费劲。我不知道这个变量是做什么的,从哪儿来,什么类型,谁会调用他。我在看一本苦涩难懂的小说? 我认为极简编程,还需要让你阅读程序的时候也很简单。毕竟写一次,会读多次

    当我们编写java代码,享受着一键重构,通过"." 就能知道所有属性的,通过查看调用栈能知道谁有可能调动你正在查看的方法。我们是多么幸福。其他所谓的极简语言都在像Java靠拢,这也说明,极简并不是写的简单就行了。

  记得JFinal的官方DEMO里,Controller层有类似这种代码(具体细节记得不太清楚)

public void showBlog(){

    int id = this.getIntPara("id");
    Blog blog = ....
    this.setAttr("blog",blog)
    render("bogdetail.html");
}

这个方法不长,看着也不累,方法签名非常“极简",无参数,无返回值,这样写起来看似方便,但每次读到这里,总会不得不读一下方法体才知道这是做什么的,如果对比一下Spring写法,你会发现Spring更容易去读

public ModelAndView showBlog(int id){

}

Spring Controller 的方法签名包含了参数是什么,返回的值是什么,代码阅读者能扫一眼就能立刻知道这代码是干什么的,需要什么参数也一目了然。你会乐意去读一个方法签名什么都没有的系统吗?

另外,这个Spring代码也天然的支持单元测试,如果你有心想让你的代码经得住折腾。那么Spring显然已经做好了这样的准备。

   我祝福JFinal,因为他越来越完善,比如2.0增加了模型的getter和setter方法,3.0 增加了sql管理。相信4.0还会增加IOC功能,JFinal的视野会随着用户越来越多的支持而越来越宽广,而不再是5年前那个宣称“体积小仅198K,且无第三方依赖”的“全能框架”。JFInal正在把开发简单过度到全面简单过程中。

  我自己则非常喜欢SpringBoot,他确实把一个功能齐全而又健壮的Spring框架封装做的非常简单,不要知道太多的概念就几乎能使用SpringBoot的提供的全部技术栈,能快速开发小系统,而又毫不费力的过度到那种大的或者带分布式系统。

  什么是真正的极简编程,打个比方来说,男女相爱,不仅仅要一见钟情,缘定三生。还有更多的柴米油盐酱醋茶,上有老,下有小的事情,都要充分考虑好这样才能生活幸福。我希望真正的极简编程,不单单是程序员的美好愿望而被追随,不单单是因为有这样的口号而哗众取宠。 我希望是切实可行的技术路线,目前看来,SpringBoot,和ACT都做的很好了,我的Beetl和BeetlSQL也一直低调的朝着这个方向前进:)

© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1164
博文 95
码字总数 88056
作品 10
西城
架构师
私信 提问
加载中

评论(106)

刚背猪
刚背猪

引用来自“如梦技术”的评论

大赋,看你这文章是写的啥,作为一个技术大佬我感觉你这个人心胸真是狭隘!
JFinal没做模板之前给你beetl带来了多少用户?
做模板之后你就各种黑!你在哪看到jfinal黑过你???
JFinal有自己的风格不行么?你自己也是做开源的,开源容易么?
抱歉,取关~~~

引用来自“sxgkwei”的评论

没看出来人家黑JFinal啥了。你太敏感了。刚去看了JFinal的使用手册,就感觉:太强调写法的简单而忽略了以后维护性和别人接手了。dao例子里实体模型居然没有属性,逗我呢?莫非我一直要看着数据库表结构来开发代码?拜托,除非给了客户动态表定义能力,这才是个很好的亮点。否则,这就是个大坑。我是面向对象编程,不是面向map结构编程。这一堆堆的魔法数字是个什么鬼。我是团队协作开发大型项目,不是个人单打独斗开发玩具。
忍不住点个赞
刚背猪
刚背猪

引用来自“肠殇泉”的评论

int id = this.getPara("id",-1);//方便修改参数,很low??没发现。。封装过分不好(public ModelAndView showBlog(int id){})
getPara,可以省去判断+默认参数,spring mvc 就需要自己判断了,,考虑不同而已。个人感觉getPara(),很爽。感觉不同而已
多用用,jfinal群欢迎你,而不是洒洒水一写

引用来自“sxgkwei”的评论

我感觉,low的不行。😆我都是看方法签名的,一看就知道你要哪些参数,你这种,万一你把取值写在方法半中腰呢?或者方法太长,调用了多层方法,里面某处来这么一句,我不一下子就SB掉了?所以,不能自己一时爽,完了让后来人写5W字的爬坑记。
还有,spring mvc方法签名支持默认值,支持是否必须配置项的。同时java作为强类型语言,也一眼就能看出你是要数字还是字符串。so,举例的这个取值方式,真的low到爆。
忍不住点个赞
刚背猪
刚背猪

引用来自“侠客执剑行”的评论

讲道理,在这里一再夸jfinal好的人一定是没有接触过60张表以上的项目,jfinal做做小玩意还可以,但是当你要多人协作开发的时候,等着哭去吧!还有什么极简的宣传口号,也就是忽悠忽悠新人去用,先把用户量搞起来在慢慢改进,本来这也没什么,但我就是感觉jfinal粉丝太能吹牛逼,整天jfinal老大天老二的样子,麻烦你们吹牛逼的时候去github看看spring有多少star,jfinal有多少star再来说话。要说简单,这么喜欢简单快速我为什么不去学php,ruby?不说ror,django都能吊打jf,吹牛逼要注意点!给jf社区的忠告
实在看不下去了,都忍不住想给你点个赞,可以没有赞的按钮😁
Z
Zempty

引用来自“如梦技术”的评论

大赋,看你这文章是写的啥,作为一个技术大佬我感觉你这个人心胸真是狭隘!
JFinal没做模板之前给你beetl带来了多少用户?
做模板之后你就各种黑!你在哪看到jfinal黑过你???
JFinal有自己的风格不行么?你自己也是做开源的,开源容易么?
抱歉,取关~~~

引用来自“闲大赋”的评论

就事论事而已,jfinal即使1.0的时候,也有这么多问题,我也没有黑过,反倒是jfinal出了模板和sql管理后,每次自己有点小改进,都要先黑一次beetl和beetlsql再自夸一次,不相信,你自己查查jfinal3.0以来的新闻,你没看出先黑beetl和beetsql吗?我最多事后从技术上反驳一下而已

这个博文说极简,我也黑了我自己过去的想法,只是jfinal算是个典型例子,而且,我说的jfinal的毛病并非我一个人在说,这算是公认的。类似博文也不少,前天还有个博文"可能遇到了假的JFinal"。

我也并没有陈述jfinal template 和 jfinal sql的毛病,要是我"心胸狭隘",我会毫不客气的指出这俩的现在各种问题,因为如果按照利益冲突,我最应该批评的是这俩,然而我并没有。

如果真是好的框架,需要经得住批评。况且,我觉得我真没有在狭隘的批评

引用来自“如梦技术”的评论

怎么说人家也没指名道姓,单独论吵架你就已经输了。你发这些没营养的文章就能给你扳回一局???

引用来自“闲大赋”的评论

你说博客没有营养那是你自己消化不了,或者你还没有这样的胃口消化。


我是个人开源,开源来源于兴趣,不像商业运作的开源,没有任何压力,也不惧怕被黑。你所谓的吵架是无稽之谈,你要真想明事理,你就好好看看我写的内容,而不是带着火气。

引用来自“prada”的评论

对于两位开源作者,热心帮助的无私精神,这两位都是模范。 jfinal作者是每问必答,beetl作者也是如此。 对于我来讲都是大牛的存在! 以局外人的态度看,jfinal作者“吵架”略胜一筹,起码jfinal模版出来的时候评击了以往的模版技术,但并没有直接点名,而且当时我看的时候并没有觉得是在评击beetl,而是针对全部模版技术。 这一点在我这里看来感觉jfinal的做法更妥当一点呀。 最后只能讲,大概牛人都是有点脾气,或许只是表现不同。

引用来自“闲大赋”的评论

不知道你从哪儿得出略胜一筹,这里并没有直接交锋,何来吵架一词。我倒觉jfinal里,我只列举了MVC部分,并与springboot做比较,要是交锋,也是jfinal跟spring交锋

回到jfinal3.0抨击其他模板,你也看出来,当然也包含了beetl,试问国内哪个模板引擎用了antlr,你说没点名,我倒觉得不如我直接说JFinal而不是xFinal光明,jfinal的新闻 无理取闹的抨击antlr,一个美国教授用了30年时间维护的一个编译器,这让我觉得有点夜郎自大,我后来才依据此回击JFinal

3.1发布,又黑了beetlsql,因为beetlsql翻页使用了tag来同时支持翻页和夸数据库,这些你都可以在oschina上找到(我不知道jfinal3.1 不就解决个dao翻页问题,居然都上新闻了,用了精心打磨和妙不可言,而且分别还提了俩个段落,我都没看懂他到底怎么解决的)

如果我真要反击jfinal关于模板引擎和sql管理,绝不会写关于极简的思考这个文章,我直接就说“关于xxfinal模板引擎的10个不足和xFinal的 dao的10个问题”.


引用来自“prada”的评论

略胜一筹是我个人主观想法,这里我也只能代表自己谈谈看法。 本人技术上算小白,beetl或jfinal内部采用了什么技术,并不清楚,所以在看jfinal3.0、3.1发布的文章时,的确没能体会到是在黑beetl,如果言论不当,非常抱歉。 接触beetl同jfinal算是同时的,大约就是从jfinal3.0发布前后开始接触,因为搜索beetl总是会看到jfinal,而搜索jfinal也总是会最终看到beetl。
因为多年的互撕,两人都成基友了。而两边的“粉丝”还在互肛。
Z
Zempty

引用来自“如梦技术”的评论

大赋,看你这文章是写的啥,作为一个技术大佬我感觉你这个人心胸真是狭隘!
JFinal没做模板之前给你beetl带来了多少用户?
做模板之后你就各种黑!你在哪看到jfinal黑过你???
JFinal有自己的风格不行么?你自己也是做开源的,开源容易么?
抱歉,取关~~~

引用来自“闲大赋”的评论

就事论事而已,jfinal即使1.0的时候,也有这么多问题,我也没有黑过,反倒是jfinal出了模板和sql管理后,每次自己有点小改进,都要先黑一次beetl和beetlsql再自夸一次,不相信,你自己查查jfinal3.0以来的新闻,你没看出先黑beetl和beetsql吗?我最多事后从技术上反驳一下而已

这个博文说极简,我也黑了我自己过去的想法,只是jfinal算是个典型例子,而且,我说的jfinal的毛病并非我一个人在说,这算是公认的。类似博文也不少,前天还有个博文"可能遇到了假的JFinal"。

我也并没有陈述jfinal template 和 jfinal sql的毛病,要是我"心胸狭隘",我会毫不客气的指出这俩的现在各种问题,因为如果按照利益冲突,我最应该批评的是这俩,然而我并没有。

如果真是好的框架,需要经得住批评。况且,我觉得我真没有在狭隘的批评

引用来自“如梦技术”的评论

怎么说人家也没指名道姓,单独论吵架你就已经输了。你发这些没营养的文章就能给你扳回一局???

引用来自“闲大赋”的评论

你说博客没有营养那是你自己消化不了,或者你还没有这样的胃口消化。


我是个人开源,开源来源于兴趣,不像商业运作的开源,没有任何压力,也不惧怕被黑。你所谓的吵架是无稽之谈,你要真想明事理,你就好好看看我写的内容,而不是带着火气。

引用来自“prada”的评论

对于两位开源作者,热心帮助的无私精神,这两位都是模范。 jfinal作者是每问必答,beetl作者也是如此。 对于我来讲都是大牛的存在! 以局外人的态度看,jfinal作者“吵架”略胜一筹,起码jfinal模版出来的时候评击了以往的模版技术,但并没有直接点名,而且当时我看的时候并没有觉得是在评击beetl,而是针对全部模版技术。 这一点在我这里看来感觉jfinal的做法更妥当一点呀。 最后只能讲,大概牛人都是有点脾气,或许只是表现不同。
其实都差不多,表达的意思一个样。只是看人们的接受程序罢了。都是先开火先前出现的哪哪不好,现在再说明自己的哪哪好。却从来没有出现过列举自己不好的一方面的人,这就能说明问题就不存在了吗?bug不还一直出,一直修???看了楼主的几篇博文,感觉楼主的性格比较耽直,喜欢正面肛,不喜欢拐弯抹角。这也是楼主会遭到有人说人不行的原因。现在社会就是这样,老实直白的人往往会吃亏,油腔滑调的即使不干什么正事却能比较吃香。说白了这社会污了,我比较喜欢王垠大神那样的人,敢爱敢恨,身怀绝技却找不到适合自己的用武之地,即使与世界格格不入也不愿迎合。这才是真
闲大赋
闲大赋

引用来自“sxgkwei”的评论

Beetl模版,看了下,虽然简化了常用的函数,但还是感觉没必要。你说的jsp的里面的各种问题,确实存在,但也就写代码写的长点的问题,在我看来,不是核心问题。你也得承认,jsp作为基础标准,是每个java程序员必会的,具有普遍适用性。而为此引入一个模版引擎,代价太大。如下:
1,学习成本
2,引擎本身bug
3,引擎维护者放弃维护
4,所有可能情况的普遍适用性
5,如遇坑可搜索到的方案少
而使用引擎,如Beetl,则获得:渲染输出效率,开发效率。渲染输出效率管求它,加服务器就是了。开发效率,其实有提升,但也提升有限不是么?
看了BeetlSQL,这个才真的让我心动。主要是,提供了基本上所有会用到的常用方法分装。这比起mybatis,我简直幸福的想哭。同时,提供了配置文件型sql配置,比起非要让我在java中字符串拼接sql,这种mybatis方式,无疑好出太多了。在java中单引号双引号加号拼接一大串sql的大坑有多深,爬过的人都知道。
学习成本,jsp肯定比beetl要高,比如学习jsp tag,jstl等
引擎本身bug,都用了7年,bug很少
放弃维护,这不太可能,况且围绕beetl,我还有beetlsql,xlsunit,xmleval等工具
普遍适用性,beetl比java更适合模板,这毫无疑问
遇到坑,直接找我,干嘛搜索?
sxgkwei
sxgkwei
Beetl模版,看了下,虽然简化了常用的函数,但还是感觉没必要。你说的jsp的里面的各种问题,确实存在,但也就写代码写的长点的问题,在我看来,不是核心问题。你也得承认,jsp作为基础标准,是每个java程序员必会的,具有普遍适用性。而为此引入一个模版引擎,代价太大。如下:
1,学习成本
2,引擎本身bug
3,引擎维护者放弃维护
4,所有可能情况的普遍适用性
5,如遇坑可搜索到的方案少
而使用引擎,如Beetl,则获得:渲染输出效率,开发效率。渲染输出效率管求它,加服务器就是了。开发效率,其实有提升,但也提升有限不是么?
看了BeetlSQL,这个才真的让我心动。主要是,提供了基本上所有会用到的常用方法分装。这比起mybatis,我简直幸福的想哭。同时,提供了配置文件型sql配置,比起非要让我在java中字符串拼接sql,这种mybatis方式,无疑好出太多了。在java中单引号双引号加号拼接一大串sql的大坑有多深,爬过的人都知道。
sxgkwei
sxgkwei

引用来自“如梦技术”的评论

大赋,看你这文章是写的啥,作为一个技术大佬我感觉你这个人心胸真是狭隘!
JFinal没做模板之前给你beetl带来了多少用户?
做模板之后你就各种黑!你在哪看到jfinal黑过你???
JFinal有自己的风格不行么?你自己也是做开源的,开源容易么?
抱歉,取关~~~
没看出来人家黑JFinal啥了。你太敏感了。刚去看了JFinal的使用手册,就感觉:太强调写法的简单而忽略了以后维护性和别人接手了。dao例子里实体模型居然没有属性,逗我呢?莫非我一直要看着数据库表结构来开发代码?拜托,除非给了客户动态表定义能力,这才是个很好的亮点。否则,这就是个大坑。我是面向对象编程,不是面向map结构编程。这一堆堆的魔法数字是个什么鬼。我是团队协作开发大型项目,不是个人单打独斗开发玩具。
sxgkwei
sxgkwei

引用来自“肠殇泉”的评论

int id = this.getPara("id",-1);//方便修改参数,很low??没发现。。封装过分不好(public ModelAndView showBlog(int id){})
getPara,可以省去判断+默认参数,spring mvc 就需要自己判断了,,考虑不同而已。个人感觉getPara(),很爽。感觉不同而已
多用用,jfinal群欢迎你,而不是洒洒水一写
我感觉,low的不行。😆我都是看方法签名的,一看就知道你要哪些参数,你这种,万一你把取值写在方法半中腰呢?或者方法太长,调用了多层方法,里面某处来这么一句,我不一下子就SB掉了?所以,不能自己一时爽,完了让后来人写5W字的爬坑记。
还有,spring mvc方法签名支持默认值,支持是否必须配置项的。同时java作为强类型语言,也一眼就能看出你是要数字还是字符串。so,举例的这个取值方式,真的low到爆。
三国lz
三国lz
我只能说但愿那几个极端拥护jfinal的人不是波总派来的,否则波总的形象就不太好看了。反正我觉得这世界上没有完美的东西,有不足都很正常,哪里不好的请指出事实,不要为了怼而怼。我现在的项目就是同时使用jfinal和beetl、beetlsql的,用起来也还是挺顺畅。
2018物联网安全行业论坛成功举办,几维安全发布IoT安全防护方案

近日,由几维安全和看雪学院联合主办的“2018物联网安全行业论坛”在北京王府井希尔顿酒店成功举办。200余位安全技术大咖和专家代表齐聚一堂,共话物联网发展前景,破解物联网安全困局。 会场...

工作的事
11/21
0
0
网络IO解决方案 — 协程框架的实现

协程这个概念很久了,好多程序员是实现过这个组件的,网上关于协程的文章,博客,论坛都是汗牛充栋,在知乎,github上面也有很多大牛写了关于协程的心得体会。突发奇想,我也来实现一个这样的...

南阳居士
08/03
0
0
高手问答第 156 期 — 深入浅出 React 和 Redux

OSCHINA 本期高手问答(2017 年 6 月 7 日 — 6 月 13 日)我们请来了@程墨Morgan 为大家解答关于 React 和 Redux 方面的问题。 程墨,资深架构师,曾任职于摩托罗拉、雅虎和微软,云鸟配送平...

局长
2017/06/06
4.2K
39
Kotlin Weekly 中文周报 —— 16

Kotlin 开发中文周报 文章 Android 开发者的一些实用技巧。(github.com) Ravindra 在 DevfestAhm 2017 的演讲。 像 Kotlin 的专家一样测试 。(blog.karumi.com) 将 Kotlin 库发布到 jCente...

DoubleThunder
2017/11/13
0
0
自下向上的编写容易阅读的代码(上)

我在 关于极简编程的思考 中曾提到要编写可阅读的代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来的维护人员。能让阅读代码更轻松,有利于增强项目或者产品的可维护性...

闲大赋
2017/08/14
0
37

没有更多内容

加载失败,请刷新页面

加载更多

使用Autowired和Qualifier解决多个相同类型的bean如何共存的问题

注意: 实现类UserServiceImpl,MyUserServiceImpl 需要区分:@Service("userServicel") @Service("myUserService") https://blog.csdn.net/russle/article/details/80287763......

qimh
41分钟前
3
0
SQL 语句使用to_char函数时,检索结果有空格

小疯在使用Oracle过程中,使用to_char函数检索表数据时发现检索结果前面会有一个空格,对后续开发有影响。问题很好解决,比较直接对可以做一下trim处理。但是小疯很疑惑为什么会有空格呢,于...

野小疯
43分钟前
3
0
对接比特币钱包的PHP开发包

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸...

汇智网教程
今天
2
0
【自用】 VHD to VHDX

VHDX: 在VHD 2TB 的基础上提供 64TB的容量。 支持逻辑扇区大小为 4KB,和每块的大小为 256MB,来优化虚拟磁盘性能。 比VHD提供更高的安全性、可靠性和性能。 convert-VHD –path d:\Hyper-v...

Tensor丨思悟
今天
3
0
30 岁转行做Python开发晚吗?而且是零基础

最近有小伙伴问小编,30 岁转行做Python开发晚吗? 小编想说,其实无论男女,只要想学,有这个动力,就直接去行动。无论年龄,无论性别,只要你想一直勇往直前,那么想做的就去做吧~这里有一...

糖宝lsh
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部