首页 文章 精选 留言 我的

精选列表

搜索[Spring生态],共10012篇文章
优秀的个人博客,低调大师

SSM-Spring-09:Spring中jdk动态代理

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- JDK动态代理: 为何叫JDK动态代理呢? 所谓JDK,jdk是java开发工具包,它里面包含了一个动态代理的api 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 何为动态?相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象。 下面我拿例子带入,具体的动态代理案例如下: 首先按平时的方式来写,一个接口,一个实现它的类 ISomeService接口 package cn.dawn.day09jdkdtproxy; /** * Created by Dawn on 2018/3/8. */ public interface ISomeService { public void doSome(); } SomeServiceImpl类,实现ISomeService接口 package cn.dawn.day09jdkdtproxy; /** * Created by Dawn on 2018/3/8. */ public class SomeServiceImpl implements ISomeService { public void doSome() { System.out.println("do something"); } } 测试类,用动态代理的形式,对方法进行增强操作 package cn.dawn.day09jdkdtproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * Created by Dawn on 2018/3/8. */ public class Test { public static void main(String[] args) { /*匿名内部类要想得到外面的值,需要把外面的值改为常量*/ final ISomeService service=new SomeServiceImpl(); /*用动态代理的方式生成ISomeService的对象,就是增强后的对象,可以看看newProxyInstance的方法参数,就有方法去写了*/ /*InvocationHandler是由代理实例的调用处理程序实现的接口。*/ ISomeService proxy=(ISomeService)Proxy.newProxyInstance(service.getClass().getClassLoader(), service.getClass().getInterfaces(), new InvocationHandler() { /** *invoke:每个代理实例都有一个关联的调用处理程序。当在代理实例上调用方法时,方法调用将被编码并分派给invoke 其调用处理程序的方法。 * @param proxy 代理对象,没啥用 * @param method 反射获取的方法 * @param args 方法的参数 * @return * @throws Throwable */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("before==================="); method.invoke(service,args);//相当于执行目标类型的方法 return null; } }); proxy.doSome(); } } 值得一提的是:Proxy是java.lang.reflect包下,正因如此,才叫JDK动态代理

优秀的个人博客,低调大师

Rust 的 GUI 框架生态概览

本文比较全面比较了目前主流的 Rust 的 GUI 框架的表现。其中++ 表示非常好,-- 表示非常差,而 o 表示处于平均水平。 参与对比的框架共有 8 个,详细的比较结果如下: Electron + Neon Electron + FFI Electron + NodeJS Cpp Addon Rust Program + Qt static Rust program + Qt dynamic Cpp program + Rust lib static + Qt static Cpp program + Rust lib static + Qt dynamic Gtk 易于构建 ++ ++ + -- + o + + 构建性能 ++ ++ ++ -- ++ -- ++ o 打包体积 - - - ++ + ++ + o 易于部署 ++ ++ ++ + o + o - Rust互操作性 + o - + + + + ++ 开发速度 ++ + - + -- + -- - 内存占用 o o o o o o o + CPU占用 - - - ++ ++ ++ ++ ++ 安全性 o o o + + + + + 外观 ++ ++ ++ + + + + o 响应式UI ++ ++ ++ o o o o - 框架稳定性 + + + -- -- -- -- - 平台支持 + + + ++ ++ ++ ++ + 内建功能 ++ ++ ++ ++ ++ ++ ++ o 第三方组件 ++ ++ ++ + + + + - 调试 ++ ++ ++ o o o o o 测试 ++ ++ ++ o o o o o 社区 ++ ++ ++ + + + + - 许可证 ++ ++ ++ o o o o ++ 未参与测试的框架 以下框架没有在此次测试的范围之内,原因是我们觉得这些框架还没有足够成熟: Flutter desktop & flutter-rs: 不够成熟 Relm: Gtk 衍生,外观看着不错 Godot: 老旧笨拙 Unity: 老旧笨拙 Azul: 不够成熟 Conrod: 不够成熟 Druid: 不够成熟 https://areweguiyet.com libui: 不够成熟 Platform specific libraries: 不提供跨平台支持 ImGUI: 不够成熟 Sciter: 收费项目 Web broswer communicating with a Rust local server: 老旧笨拙, 不安全? (DNS 重新绑定攻击) 以及不支持原生功能,如任务栏图标 最有希望的似乎是 Flutter。 排名 研究结果排名如下, 标准就是不让狗屎上榜: Electron + Neon Rust program + Qt dynamic 用于开发,Rust Program + Qt static用于部署 Gtk, Cpp program + Rust lib static + Qt static, Cpp program + Rust lib static + Qt dynamic, Electron + NodeJS Cpp Addon Electron + FFI 欢迎关注公众号“红薯胡说” 参与 Rust GUI 框架的投票

优秀的个人博客,低调大师

“大数据”与考据新生态

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 “大数据”如今已渗透到人类生活的方方面面。随着各种数据库的大量出现,传统文史研究也发生了变化。近年来,与“e考据”和“数字人文”相关的研究日趋增多,因此,进一步探索如何更切实地将理论、方法与研究实践有机结合,就变得十分重要。 扬弃既有研究成果 大数据时代对传统文史研究产生的影响,首先表现在资料上。近些年新推出的电子资源在内容上甚至有超越传统出版物之势,检索的快捷性和精确度,可以令学者省却翻检群书、游历访书之劳。在这样的学术环境下,探讨某些疑难问题可能只需简单检索,许多“悬案”的解决难度也相应大幅度降低。前人因资料局限而不得不大量运用的“理校”“推论”“悟证”诸方法,在大数据时代无疑要重新进行扬弃。 在学术史研究中,清人往往因所见善本不丰而大量运用“理校”法展开研究,其中有的结论或与善本相合或遭善本否定。今人既然已经能够在研究中大量占有善本供校勘,那么这种研究方法虽仍有学习的必要,但其实用性也难免会打些折扣。大量新材料理应引发大量新结论,一些“常识”或“定论”必然也会随之遭到质疑甚至颠覆,这对于现有的研究自然会有相当明显的刺激作用。近年来学界对于近代学人的成就时有争论,原因之一就在于当时学者以一人之力所做的资料性工作,精度和效率都很容易被数据库所超越。不少在民国时期“古史辨”中几乎成为公认的定论,随着出土文献的发现而被推翻(典型的例子如对《孙子兵法》的辨伪),足见新材料在某些研究领域确实处于相当核心的地位。 通过数据库重新打捞那些以往不被关注的文献,这实际上仍是发现新材料,其性质与考古相似,亦可称之为当下的“预流之学”(陈寅恪:《敦煌劫余录序》)。与此相关的一个问题是,在超过120亿字的可检索的古典文本,以及各种不同类型的数据库中,还蕴藏***问题可供发掘。而这些数据资源能否被学者使用,很大程度上取决于其所在单位购买的数据库数量。在高校间已有明显“数位落差”的现实条件下,学者个人的学术水准有可能受到所处文献环境的制约,而不同文献环境导致的信息素养的差异可能会进一步拉大这一差距。 数据库大量涌现,学术评判标准也会发生变化。出于“功利”眼光计算,当代学者费尽周折的考据工作,很可能被下一代学者轻易解决。其原因并非人的智力、才能有别,而是文献环境不断变化提供的巨大方便使然。一代有一代之学术,面对不同的环境,学术范式也应随之转移。所以,当下正是海量文献可供使用、可以大有作为的时代,也是考据研究缺乏亮点而趋于同质化的时代。换言之,即使是在数据仍未被充分电子化的当下,考据研究的合法性也正在受到冲击。一般性的文献挖掘仍然重要,但能够解决核心学术问题的研究更为重要。 引发学术伦理讨论 在电子检索受到学界瞩目的同时,一些批评尤其是对于学术伦理的讨论也随之热门起来。电子检索的高效快捷,令不少学者担忧其可能引发更严重的学术不端。比如,有的研究者可能对相关领域了解有限,但在检索工具的助力下仍敢匆匆上马,轻易立说;有的研究者征引繁复,可谓博瞻,但实际上许多材料是脱离语境的“遥读”,经不起细加辨析;有的研究者过于迷信电子文本的全面性,但却因此而忽略了那些未被电子化的文献;有些电子文本存在错误,研究者未核查原书导致误引误断;等等。 对这些实际存在甚至时显泛滥的问题,我们可以尝试从以下几个方面来进一步认识。首先,技术本身是中立的,上述批评很大程度上是在针对研究者个人的文史素养和治学态度,并未否定技术能够令优秀学者如虎添翼。而擅长检索的学者也能够认识到文史素养的重要性,并非一味依赖电子资源。从现实情况看,电子技术确实使那些曾经看上去遥不可及的***学者(尤其是实证型学者),变得可以企及了,这至少是正在提升学术研究的平均水准。校勘、笺注、考据中的一些前期工作,可由计算机更精准地代劳,在人机结合的研究过程中,“高明子弟,自然沉潜”。 其次,当下的电子文本绝非***,即使是扫描版也往往不能完全忠于原书,引用之前必须与原始文献核对,不能径用。但这恰好说明,现在的数据库还没有脱去以往“工具书”的性质。前人做研究,亦会查阅类书、索引等,甚至常有转引、代查的现象,这证明“工具”本来也不被排斥。如将数据库理解为一种高级的“逐字索引”,则其学术价值自然彰显。此外,纸质文献(尤其是整理本)同样常常有误。古籍校勘中,也多有以“通行本”为底本的典范。事实上,核心问题不在于当下的电子文本有多少具体错误,而在于能否使注释具有可回溯性和规范性。如果一味排斥征引电子文本,很可能也会使数据库开发者缺乏将电子文本精确化的动力。 促进材料深度辨析 一般观点通常认为,电子检索作为一种“捷径”,往往令学者过于重视关键词,却忽视同一词语所处的不同语境。时代的风气、作者的习惯、史料的性质等,都在大数据时代的考据中付之阙如。在笔者看来,这种弊病在传统文史研究中同样并不少见,却有可能在大数据时代觅得新的解决契机。 首先,大数据时代资源丰富,找寻辅证、反例的难度都较以前小,可以在一定程度上防治孤证武断,并有益于深入理解史料所处的特殊语境。 其次,当大数据呈现出全部信息时,可以在多方面帮助学者辨析问题,甚至可以用“结构取义”的方式展开新的研究思路。例如高树伟在研究《永乐大典》的辑佚条例时,推翻了认为《大典》“直取全文”的成说,并且依靠海量文本对校的方式,提出了《大典》征书的新通例。这一认识既变,或许在一定程度上可以借助通例建立参考系,并以此来重新认识前人辑佚的成果,不妨称之为类似于“理校”的“理辑佚”。黄一农最近在脂批本“宁”字抄写避讳的研究中,也提及抄本研究应建立参照系,这些见解似可遥相呼应。又如在文本细读工作中,作者究竟是直接使用某一典故,还是受到文化传统影响,实际存在多种可能。笺注、考据家往往侧重于锁定甲乙间的因果承袭关系,但容易忽视文化大传统的潜在影响。近年来古代文学研究引入“互文”理论,尝试说明这种影响往往是网络状、多源多流的。张昊苏在此基础上提出“e互文”思路,意在指出大数据时代有助于深入理解这种多样性。 借助大数据提供的便利,考据学出现了“后发先至”的现象。前辈学者经年研究的难题,很可能被新一代学人在短时间内解决。至少在这类问题上,信息素养的意义很可能要高于传统知识体系,掌握查找知识的能力很可能也比掌握知识更为高效且重要。这里并非是说新时代的学者可以不掌握知识而解决问题,而是说,信息素养可以出于研究的需要,迅速进入新的领域并建构具有针对性的知识体系,这种大幅度的跨界是传统学者较难做到的。当然,就目前的研究状况来看,大数据时代“数字人文”研究还没有作出第***的成果,多数成果仍然是在研究具体问题,而尚未建立新的范式。但近十余年来这一领域的学术积累正以指数级速度增长,足以令人期待由“量变”产生“质变”。或许,未来传统学者也应该未雨绸缪,需要考虑能否做出不被数据库遮蔽、凸显研究者个性的学问。

优秀的个人博客,低调大师

[翻译]docker生态圈Mindmap

Docker是一个开源的Linux容器,其被业界所接受,很快成为了一个产业标准。Docker可以减少应用程序启动 时候的大量资源的筹备。docker很快的成为了新兴的应用程序容器标准。现在有很多项目正围绕着它处于开发中。 下面将是Mindmap出我所知道的一些项目。你可以在这里访问Mindmap. 英语原文链接http://allthingsplatforms.com/platforms/docker-ecosystem-mapped-out/ 本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/p/3608187.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册