展开

关键词

首页关键词coder

coder

相关内容

云服务器

云服务器

腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
  • 寻找Coder

    请设计一个高效算法,再给定的字符串数组中,找到包含”Coder”的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照”Coder”出现的次数递减排列,若两个串中”Coder”出现的次数相同,则保持他们在原数组中的位置关系。 给定一个字符串数组A和它的大小n,请返回结果数组。同时保证一定存在包含coder的字符串。测试样例: ,3 返回:----package 寻找Coder; import java.util.Arrays; class Recorder implements Comparable{ private= recorders.getStr(); } return coder; }} ??
    来自:
    浏览:126
  • 谁是最好的Coder

    谁是最好的Coder描述计科班有很多Coder,帅帅想知道自己是不是综合实力最强的coder。帅帅喜欢帅,所以他选了帅气和编程水平作为评选标准。每个同学的综合得分是帅气程度得分与编程水平得分的和。
    来自:
    浏览:218
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • MATLAB HDL Coder开发环境设置

    MATALB HDL Coder+Simulink对于视觉开发人员来说比Vivado HLS更加友好。但是Mathworks的example一如既往的杂乱无章。所以从现在开始我计划定期更新基于HDL Coder教程,希望对大家有所帮助。----所需软件版本:MATLAB 2018b + HDL相关工具箱。
    来自:
    浏览:483
  • 输入示例,自动生成代码:TensorFlow官方工具TF-Coder已开源

    这个想法听起来很诱人,而 TensorFlow Coder(TF-Coder)使这成为可能!给出输入 - 输出示例,TF-Coder 在 1.3 秒内找出解决方案。TF-Coder 的合成算法如下所示:?下面的动图展示了使用 TF-Coder 解决张量操纵问题的过程:?而 TF-Coder 的功能不止于此,它还可用于更难的编程问题中。TF-Coder 帮你找到正确的函数假设你正在处理数值特征,如某个物品的价格。而 TF-Coder 可以帮你解决这类棘手问题。通过这种方式,TF-Coder 可以帮助开发者编写简单准确的代码,且无需痛苦的 debug 过程。局限性不过,TF-Coder 也有其局限性。
    来自:
    浏览:366
  • Java Coder们的技术面试到底需要准备些什么呢?

    作为一个想要跳槽的Coder,首先得评估自己当前的实力和技术水平,然后根据自己当前的情况针对性的复习准备。如果你就是个一两年经验的Coder,那我建议重点还是多夯实基础吧。
    来自:
    浏览:147
  • 一个Java方法能有多少个参数类型?这个好奇coder做了个实验

    但是作为一个 coder,最重要的不就是好奇心吗,没有好奇心,和一条咸鱼又有什么区别呢?本文作者就是这样一位充满好奇心的 coder。?
    来自:
    浏览:197
  • 【在线教程】使用 Matlab GPU Coder实现YOLO v2的实时目标检测

    他从MATLAB中发布的一个示例开始,该示例解释了如何训练YOLO v2对象检测器,并使用GPU Coder™生成优化的CUDA代码。?
    来自:
    浏览:481
  • The clean coder 读书笔记

    来自:
    浏览:101
  • coder看看应该有用

    技术站点Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http:it-ebooks.info DevStore:开发者服务商店不错的书籍人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCPIP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术平台工具(都是开源的好东东哦)RedmineTrac:项目管理平台 JenkinsJira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究) Sonar:代码质量管理平台 git,svn:源代码版本控制系统 GitLibGitorious:构建自己的GitHub服务器 gitbook:https:www.gitbook.io写书的好东西,当然用来写文档也很不错的 Travis-ci:开源项目持续集成必备,和GitHub相结合,https:travis-ci.org 开源测试工具、社区(Selenium、OpenQA.org) Puppet:一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。 Nagios:系统状态监控报警,还有个Icinga(完全兼容nagios所有的插件,工作原理,配置文件以及方法,几乎一模一样。配置简单,功能强大) Ganglia:分布式监控系统 fleet:分布式init系统爬虫相关(好玩的工具) Phantomjs berserkJS(基于Phantomjs的改进版本) SlimerJS CasperJS seleniumWeb服务器性能压力测试工具负载均衡器http_load: 程序非常小,解压后也不到100K webbench: 是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力 ab: ab是apache自带的一款功能强大的测试工具 Siege: 一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 squid(前端缓存),nginx(负载),nodejs(没错它也可以,自己写点代码就能实现高性能的负载均衡器):常用的负载均衡器 Piwik:开源网站访问量统计系统 ClickHeat:开源的网站点击情况热力图 HAProxy:高性能TCP HTTP负载均衡器 ElasticSearch:搜索引擎基于Lucene Page Speed SDK和YSLOW HAR Viewer: HAR分析工具 protractor:E2E(end to end)自动化测试工具Web前端相关GRUNT: js task runner Sea.js: js模块化 knockout.js:MVVM开发前台,绑定技术 Angular.js: 使用超动感HTML & JS开发WEB应用! Highcharts.js,Flot:常用的Web图表插件 Raw:非常不错的一款高级数据可视化工具 Rickshaw:时序图标库,可用于构建实时图表 JavaScript InfoVis Toolkit:另一款Web数据可视化插件 Pdf.js,在html中展现pdf ACE,CodeMirror:Html代码编辑器(ACE甚好啊) NProcess:绚丽的加载进度条 impress.js:让你制作出令人眩目的内容展示效果(类似的还有reveal) Threejs:3DWeb库 Hightopo:基于Html5的2D、3D可视化UI库 jQuery.dataTables.js:高度灵活的表格插件 Raphaël:js,canvas绘图库,后来发现百度指数的图形就是用它绘出来的 director.js:js路由模块,前端路由,Nodejs后端路由等,适合构造单页应用 pace.js:页面加载进度条 bower:Web包管理器 jsnice:有趣的js反编译工具,猜压缩后的变量名 http:www.jsnice.org D3.js: 是一个基于JavaScript数据展示库(类似的还有P5.js) Zepto.js:移动端替代jQuery的东东,当然也可以使用jquery-mobile. UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer 前端UI设计师必去的几个网站:Dribbble,awwwards,unmatchedstyle,UIMaker Mozilla 开发者中心:https:developer.mozilla.orgen-US 图标资源:IcoMoon(我的最爱),Themify Icons,FreePik,Glyphiconsart Dialog:非常漂亮的对话框 AdminLTE:github上的一个开源项目,基于Boostrap3的后台管理页面框架 Respond.js:让不懂爱的IE6-8支持响应式设计 require.js: js模块加载库 select2:比chosen具有更多特性的选择框替代库 AngularUI:集成angular.js的UI库 normalize.css: 采用了现代化标准让各浏览器渲染出的html保持一致的库 CreateJS:Html5游戏引擎Less,Compass:简化CSS开发 emojify.js:用于自动识别网页上的Emoji文字并将其显示为图像 simditor:一个不错的开源的html编辑器,简洁高效 Sencha: 基于html5的移动端开发框架 SuperScrollorama+TweenMax+skrollr:打造超酷的视差滚动效果网页动画 jquery-smooth-scroll:同上,平滑滚动插件 Animate.css:实现了各种动画效果的css库 Emmet:前端工程师必备,ZenCode的前身 MagicDraw:Uml图工具大数据处理数据分析分布式工具Hadoop:分布式的文件系统,结合其MapReduce编程模型可以用来做海量数据的批处理(Hive,Pig,HBase啥的就不说了),值得介绍的是Cloudera的Hadoop分支CDH5,基于YARN MRv2集成了Spark可直接用于生产环境的Hadoop,对于企业快速构建数据仓库非常有用。 Ceph:Linux分布式文件系统(特点:无中心) Storm:实时流数据处理,可以看下IBM的一篇介绍 (还有个Yahoo的S4,也是做流数据处理的) Spark:大规模流式数据处理(可以应付企业中常见的三种数据处理场景:复杂的批量数据处理(batch data processing);基于历史数据的交互式查询(interactive query);基于实时数据流的数据处理(streaming data processing)),CSND有篇文章介绍的不错 Spark Streaming:基于Spark的实时计算框架 Tachyon:分布式内存文件系统 Mesos:计算框架一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享Impala:新一代开源大数据分析引擎,提供Sql语义,比Hive强在速度上 SNAPPY:快速的数据压缩系统,适用于Hadoop生态系统中 Kafka:高吞吐量的分布式消息队列系统 ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线 MQTT:Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分 RabbitMQ:记得OpenStack就是用的这个东西吧 ZeroMQ:宣称是将分布式计算变得更简单,是个分布式消息队列,可以看下云风的一篇文章的介绍开源的日志收集系统:scribe、chukwa、kafka、flume。这有一篇对比文章 Zookeeper:可靠的分布式协调的开源项目 Databus:LinkedIn 实时低延迟数据抓取系统 数据源获取:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach 序列化技术:JSON、BSON、Thrift、Avro、Google Protocol Buffers NoSql:Apache Hadoop、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j MapReduce相关:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum 数据处理:R、Yahoo! Pipes、Mechanical Turk、Solr Lucene、ElasticSearch、Datameer、Bigsheets、TinkerpopNLP自然语言处理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais 机器学习:WEKA、Mahout、scikits.learn、SkyTree 可视化技术:GraphViz、Processing、Protovis、Google Fusion Tables、Tableau、Highcharts、EChats(百度的还不错)、Raphaël.js Kettle:开源的ETL工具 Pentaho:以工作流为核心的开源BI系统 Mondrian:开源的Rolap服务器 Oozie:开源hadoop的工作流调度引擎 开源的数据分析可视化工具:Weka、Orange、KNIME Cobar:阿里巴巴的MySql分布式中间件C & C++Thrift:用来进行可扩展且跨语言的服务的开发(类似的还有个Avro,Google protobuf)。 libevent:是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。(对了还有个libev呢) Boost:不多说了,准C++标准库 PtmallocValgrindPurify NetworkServer架构:acceptor->dispatcher->worker(这个不算工具哦) breakpad:崩溃转储和分析模块,很多crashreport会用到 UI界面相关:MFC、BCG和QT这类的就不说了,高端一点的还有Html和DirectUI技术:libcef(基于chrome内核的,想想使用html5开发页面,还真有点小激动呢)、HtmlLayout、Duilib、Bolt,非C++的,还有node-webkit也不错,集成了node和webkit内核。游戏开发相关MINA:使用Java开发手游和页游服务器(对了还有Netty,也很猛的,都是基于NIO的) HP-Socket:见有有些页游服务器使用这个构建的 云风的技术博客:http:blog.codingnow.com OGRE:大名鼎鼎的3D图形渲染引擎 OpenVDB:梦工厂C++的特效库,开源的 cocos2d:跨平台2D游戏引擎 unity3d:跨平台3D游戏引擎,很火的哦 Nodejs:也有不少使用它来开发手游和也有服务器(网易的Pomelo就是哦)日志聚合,分布式日志收集Scribe:Facebook的(nodejs + scribe + inotify 同步日志) logstash:强大的日志收集系统,可以基于logstash+kibana+elasticsearch+redis开发强大的日志分析平台 log.io: nodejs开发的实时日志收集系统RTP,实时传输协议与音视频RTP,RTCP,RTSP-> librtp,JRTPLIB(遵循了RFC1889标准) 环形缓冲区,实时数据传输用 SDL,ffmpeg,live555,Speex Red5:用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。PythonEric,Eclipse+pydev,比较不错的Python IDE PyWin:Win32 api编程包 numpy:科学计算包,主要用来处理大型矩阵计算等,此外还有SciPy,Matplotlib GUI相关:PyQt,PyQwt supervisor:进程监控工具Java相关常用的IDE:IntelliJ IDEA,Eclipse,Netbeans Web开发相关:Tomcat、Resin、Jetty、WebLogic等,常用的组件Struts,Spring HibernateNetty: 异步事件驱动网络应用编程框架,用于高并发网络编程比较好(NIO框架) MINA:简单地开发高性能和高可靠性的网络应用程序(也是个NIO框架),不少手游服务端是用它开发的 jOOQ:java Orm框架Activiti:工作流引擎,类似的还有jBPM、Snaker Perfuse:是一个用户界面包用来把有结构与无结构数据以具有交互性的可视化图形展示出来. Gephi:复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具 Nutch:知名的爬虫项目,hadoop就是从这个项目中发展出来的 web-harvest:Web数据提取工具 POM工具:Maven+ArtifactoryNetflix Curator:Netflix公司开源的一个Zookeeper client library,用于简化Zookeeper客户端编程 Akka:一款基于actor模型实现的 并发处理框架 EclEmma:覆盖测试工具.net相关Xilium.CefGlue:基于CEF框架的.NET封装,基于.NET开发Chrome内核浏览器 CefSharp:同上,有一款WebKit的封装,C#和Js交互会更简单 netz:免费的 .NET 可执行文件压缩工具 SmartAssembly:变态的.net代码优化混淆工具 NETDeob0:.net反混淆工具,真是魔高一尺道高一丈啊(还有个de4dot,在GitHub上,都是开源的) ILMerge:将所有引用的DLL和exe文件打成一个exe文件 ILSpy:开源.net程序反编译工具 Javascript.NET:很不错的js执行引擎,对v8做了封装 NPOI: Excel操作 DotRAS:远程访问服务的模块 WinHtmlEditor: Winform下的html编辑器 SmartThreadPool:使用C#实现的,带高级特性的线程池 Snoop: WPF Spy Utility Autofac: 轻量级IoC框架 HtmlAgilityPack:Html解析利器 Quartz.NET:Job调度 HttpLib:@CodePlex,简化http请求 SuperSocket:简化Socket操作,基于他的还有个SuperWebSocket,可以开发独立的WebSocket服务器了 DocX:未安装Office的情况下操作Word文件 Dapper:轻量级的ORM类,性能不错 HubbleDotNet:支持接入数据库的全文搜索系统 fastJSON:@CodeProject,高性能的json序列化类 ZXing.NET:@CodePlex,QR,条形码相关 Nancy:轻量级Http服务器,做个小型的Web应用可以摆脱IIS喽(Nancy.Viewengines.Razor,可以加入Razor引擎) AntiXSS:微软的XSS防御库Microsoft Web Protection LibraryJint:JavaScript解释器 CS-Script:将C#代码文件作为脚本执行 Jexus:Linux下 高性能、易用、免费的ASP.NET服务器 Clay:将dynamic发挥的更加灵活,像写js一样写C# DynamicJSON:不必定义数据模型获取json数据 Antlr:开源的语法分析器(归到C#不太合适,其他语言也可以去用) SharpPcap:C#版的WinPcap调用端,牛逼的网络包分析库(自带PacketNotNet用于包协议分析) Roslyn:C#,VB编译器 ImageResizer: 服务端自由控制图片大小,真乃神器也,对手机端传小图,PC端传大图,CMS用它很方便 UI相关:DevExpress, Fluent(Office 07风格), mui(Modern UI for WPF) NetSparkle:应用自动更新组件 ConfuserEx: 开源.net混淆工具 ServiceStack: 开源高性能Web服务框架,可用于构建高性能的REST服务Expression Evaluator:Eval for C#,处理字符串表达式 http:nugetmusthaves.com常用工具Fiddler:非常好用的Web前端调试工具,当然是针对底层http协议的,一般情况使用Chrome等自带的调试工具也足够了,特殊情况还得用它去处理 wireshark:知名的网络数据包分析工具 PowerCmd:替代Windows Cmd的利器 RegexBuddy:强大的正则表达式测试工具 Soure Insight:源代码阅读神器 SublimeText:程序员最爱的编辑器 Database.NET:一个通用的关系型数据库客户端,基于.NET 4.0开发的,做简单的处理还是蛮方便的 Navicat Premium:支持MySql、PostgreSQL、Oracle、Sqlite和SQL Server的客户端,通用性上不如Database.NET,但性能方面比Database.NET好很多,自带备份功能也用于数据库定时备份。 Synergy : 局域网内一套键盘鼠标控制多台电脑 DameWare:远程协助工具集(我在公司主要控制大屏幕用) Radmin: 远程控制工具,用了一段时间的 DameWare,还要破解,对Win7支持的不好,还是发现这个好用 Listary:能极大幅度提高你 Windows 文件浏览与搜索速度效率的「超级神器」 Clover:给资源管理器加上多标签 WinLaunch:模拟Mac OS的Launch工具 Fritzing:绘制电路图 LICEcap:gif教程制作git, svn:版本控制系统Enigma Virtual Box(将exe,dll等封装成一个可执行程序) Open DBDiff(针对SqlServer)数据库同步 SymmetricDS:数据库同步 BIEE,Infomatica,SPSS,weka,R语言:数据分析 CodeSmith,LightSwitch:代码生成 Pandoc:Markdown转换工具,出书用的。以前玩过docbook,不过现在还是Markdown盛行啊。 Window Magnet:增强Mac窗口管理功能,想Win7一样具有窗口拖放到屏幕边缘自动调整的功能 log explorer:查看SqlServer日志dependency walker:查询Windows应用程序dll依赖项 Shairport4w:将iPhone,iPad,iPod上的音频通过AirPlay协议传输到PC上 ngrok:内网穿透工具Axure:快速原型制作工具,还有个在线作图的工具国内的一个创业团队做的,用着很不错 http:www.processon.com tinyproxy:(Linux)小型的代理服务器支持http和https协议EaseUS Partition Master:超级简单的分区调整工具,速度还是蛮快的,C盘不够用了就用它从D盘划点空间吧,不用重装系统这么折腾哦。 CheatEngine:玩游戏修改内存值必备神器(记得我在玩轩辕剑6的时候就用的它,超级方便呢) ApkIDE:Android反编译神器翻、墙工具(浏览器) 设计工具:Sketch、OmniGraffle MindManger:思维导图
    来自:
    浏览:227
  • Hiho Coder 1038 01背包(模板)

           01背包的原型就是有N件物品和一个容量为V的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi,求将哪些物品装入背包可使获得的价值总和最大。而这道题的题意也就是这个意思,01背包的特点就是每种物品仅有一件,可以选择放或者不放。下面是01背包的核心代码:for(int i = 0; i < n; i++){ for(int j = V; j >= c; j--){ dp = max(dp , dp] + w); }} 这个核心代码是由二维的状态转移方程优化来的(至于什么是状态转移方程捉着想知道怎么优化的自己去查一下吧~~),懂了这个核心代码后01背包的问题就不是问题了。AC代码:#include #include using namespace std;const int MAXN = 200005;int dp;int val; 价值int c; 体积int n,m;int main(){ while(cin>>n>>m){ for(int i = 0;i>c>>val; } memset(dp,0,sizeof(dp)); for(int i=0;i=c;j--){ dp = max(dp,dp]+val); } } cout
    来自:
    浏览:182
  • 后端Coder如何做好代码设计?

    来自:
    浏览:178
  • Coder,我怀疑你并不会枚举

    枚举是JDK1.5引入的新特性。被enum关键字修饰的类就是一个枚举类。关于枚举,阿里巴巴开发手册有这样两条建议:枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。如果变量值仅在一个固定范围内变化用 enum 类型来定义。一 枚举类有哪些特点创建一个ColorEnum的枚举类,通过编译,再反编译看看它发生了哪些变化。public enum ColorEnum { RED,GREEN,BULE;} 使用命令javac ColorEnum.java进行编译生成class文件,然后再用命令javap -p ColorEnum.class进行反编译。?去掉包名,反编译后的内容如下:public final class ColorEnum extends Enum{ public static final ColorEnum GREEN; public static final ColorEnum BULE; private static final ColorEnum values(); public static ColorEnum valueOf(java.lang.String); private ColorEnum(); static {};} 枚举类被final修饰,因此枚举类不能被继承;枚举类默认继承了Enum类,java不支持多继承,因此枚举类不能继承其他类;枚举类的构造器是private修饰的,因此其他类不能通过构造器来获取对象;枚举类的成员变量是static修饰的,可以用类名.变量来获取对象;values()方法是获取所有的枚举实例;valueOf(java.lang.String)是根据名称获取对应的实例;二 枚举创建线程安全的单例模式public enum SingletonEnum { INSTANCE; public void doSomething(){ dosomething... }} 这样一个单例模式就创建好了,通过SingletonEnum.INSTANCE来获取对象就可以了。2.1 序列化造成单例模式不安全 一个类如果如果实现了序列化接口,则可能破坏单例。每次反序列化一个序列化的一个实例对象都会创建一个新的实例。枚举序列化是由JVM保证的,每一个枚举类型和定义的枚举变量在JVM中都是唯一的,在枚举类型的序列化和反序列化上,Java做了特殊的规定:在序列化时Java仅仅是将枚举对象的name属性输出到结果中,反序列化的时候则是通过java.lang.Enum的valueOf方法来根据名字查找枚举对象。同时,编译器是不允许任何对这种序列化机制的定制的并禁用了writeObject、readObject、readObjectNoData、writeReplace和readResolve等方法,从而保证了枚举实例的唯一性。2.2 反射造成单例模式不安全 通过反射强行调用私有构造器来生成实例对象,造成单例模式不安全。Class aClass = Class.forName(xx.xx.xx);Constructor constructor = aClass.getDeclaredConstructor(String.class);SingletonEnum singleton = (SingletonEnum) constructor.newInstance(Java旅途); 但是使用枚举创建的单例完全不用考虑这个问题,来看看newInstance的源码!public T newInstance(Object ... initargs) throws InstantiationException, IllegalAccessException,IllegalArgumentException, InvocationTargetException{ if (!override) { if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) { Class caller = Reflection.getCallerClass(); checkAccess(caller, clazz, null, modifiers); } } 如果是枚举类型,直接抛出异常,不让创建实例对象! if ((clazz.getModifiers() & Modifier.ENUM) != 0) throw new IllegalArgumentException(Cannot reflectively create enum objects); ConstructorAccessor ca = constructorAccessor; read volatile if (ca == null) { ca = acquireConstructorAccessor(); } @SuppressWarnings(unchecked) T inst = (T) ca.newInstance(initargs); return inst;} 如果是enum类型,则直接抛出异常Cannot reflectively create enum objects,无法通过反射创建实例对象!三 通过枚举消除ifelse假如要写一套加密接口,分别给小程序、app和web端来使用,但是这三种客户端的加密方式不一样。一般情况下我们会传一个类型type来判断来源,然后调用对应的解密方法即可。代码如下:if(WEIXIN.equals(type)){ dosomething}else if(APP.equals(type)){ dosomething}else if(WEB.equals(type)){ dosomething} 现在使用枚举来消除这些ifelse。写一个加密用的接口,有加密和解密两个方法。然后用不同的算法去实现这个接口完成加解密。public interface Util { 解密 String decrypt(); 加密 String encrypt();} 创建一个枚举类来实现这个接口public enum UtilEnum implements Util { WEIXIN { @Override public String decrypt() { return 微信解密; } @Override public String encrypt() { return 微信加密; } }, APP { @Override public String decrypt() { return app解密; } @Override public String encrypt() { return app加密; } }, WEB { @Override public String decrypt() { return web解密; } @Override public String encrypt() { return web加密; } };} 最后,获取到type后,直接调用解密方法就行了。String decryptMessage = UtilEnum.valueOf(type).decrypt(); 以后,如果新增了一个其他加密方式,只需要修改上面的枚举类就完成了,业务代码都不需要改动。这就是枚举类比较高级的两个用法。< END >
    来自:
    浏览:132
  • 【译】Google 官方文章——如何去做coder review

    Google 前几天公开了一篇谷歌的工程实践文档。而且文档的内容都是跟 code review 相关的内容,里面包含了 Google 工程师如何进行 code review 的内容,以及 code review 指南。 原文地址: google.github.ioeng-practic… 本文的名词解释:cr: code reviewcl: change list,大概意思是指这次改动reviewer: cr的那个review人nit: 全称nitpick,意思是鸡蛋里挑骨头作者: 也就是本次CL的开发者,原文中是以author来称开发者的。以老外的思维,意思是“CL的作者”cr的标准cr(Code review)主要目的在于确保Google 的代码库代码质量越来越好。而所有相关的工具与流程皆是因应这个目的而生。为达到此目的,势必需要做出一连串的权衡与取舍首先,开发人员必须能够在自己负责的任务上有所进展。如果你从来没有向代码库提交改进过的代码,那么代码库就永远不会改进。另外,如果一个reviewer使cr都很难进行的话,那么开发人员就不愿意在将来进行改进。另一方面,reviewer有责任确保每个change list(下称CL)的质量,保证其代码库的整体代码质量不会越来越差。这可能很棘手,因为通常会随着时间的推移,代码需要降级才能让代码运行起来,特别是当团队受到严重的时间限制时,大家觉得必须走捷径才能实现他们的目标。此外,reviewer对他们正在review的代码拥有所有权和责任。他们希望确保代码保持一致、可维护,以及下文的“在cr中可以得到什么”中提到的内容。因此,我们有以下规则,作为我们在cr中所期望的标准:一般来说,当CL存在的时候,reviewer应该赞成它,此时它肯定会提高正在工作的系统的整体代码质量,即使这个CL并不完美。这是所有cr中的首要原则。当然,这是有局限性的。例如,如果一个CL添加了一个reviewer不希望在其系统中使用的功能,那么reviewer当然可以拒绝,即使代码设计得很好。这里的一个关键点是,没有“完美”的代码,只有更好的代码。reviewer不应该要求作者在approve之前对一篇文章的每一小段进行润色。相反,reviewer应该权衡发展的需要和他们所建议的change的重要性。reviewer不应追求完美,而应追求持续改进。作为一个整体,提高系统的可维护性、可读性和可理解性的CL不应该因为它不是“完美的”而被延迟几天或几周。reviewer应该随时可以留下评论,表达一些更好的东西,但如果不是很重要,可以在评论前加上“nit:”这样的前缀,让作者知道这只是一个他们可以选择忽略的修饰点。指导cr有一个重要的功能,教开发人员一些关于语言、框架或一般软件设计原则的新知识。留下有助于开发人员学习新知识的评论是可以的。随着时间的推移,共享知识是提高系统代码健康度的一部分。你只需要记住,如果你的评论纯粹是教育性的,但对达到本文档中描述的标准并不重要,请在其前面加上“nit:”,或者以其他方式表明作者不必在本CL中解决它。原则现实和数据推翻了个人喜好。在代码风格方面,风格指南(style guide)是绝对的权威。任何不在style guide中的一些点(如空格等)都是个人偏好的问题。代码风格应该与现有的一致。如果项目没有以前的统一样式,那就接受作者的样式。软件设计的各个方面从来都不仅仅是一个纯粹的代码风格问题或者是个人喜好问题。它们是以基本原则为基础的,应当以这些原则为依据,而不仅仅是以个人意见为依据,有时几乎都没有选择的。如果作者能够证明(通过数据或基于原理的一些事实)他的方法是同样有效的,那么reviewer应该接受作者的偏好。否则,代码风格选择取决于软件设计的标准原则。如果没有其他规则适用,那么reviewer可以要求作者与当前代码库中的内容保持一致,只要这些代码不会恶化系统的整体代码健康状况。解决冲突在cr的任何冲突中,第一步应该始终是开发人员和reviewer根据本文和《CL Author’s Guide》,尝试达成共识。当达成共识变得特别困难时,reviewer和作者需要进行面对面会议,而不是仅仅试图通过代码审查注释来解决冲突。(不过,如果这样做,请确保将讨论结果记录在CL的评论中,以供将来的读者阅读。)如果这不能解决问题,最常见的解决方法就是升级。通常情况下,升级的途径是进行更广泛的团队讨论,让team leader参与进来,请求代码维护人员做出决定,或者请求技术经理提供帮助。不要因为作者和审稿人不能达成一致意见而让一个其他人袖手旁观。在cr中要看些什么 注意:在考虑每一点时,一定要考虑cr的标准。 设计在cr中重要的是看CL的总体设计。CL中不同代码段的交互是否有意义?此更改属于你的业务代码库还是属于引进来的其他代码库?它是否与系统的其他部分很好地集成?现在是添加此功能的合适时机吗?功能这个CL做了开发者想要的吗?开发者对这些代码的设计初衷用户有好处吗?“用户”通常既是最终用户(当他们受到更改的影响时)又是开发人员(他们将来必须“使用”此代码)。大多数情况下,我们希望开发人员在进行cr时能够对CL进行充分的测试,使其能够正常工作。但是,作为reviewer,仍然应该考虑边缘状况,寻找问题,尝试像用户一样思考,并确保仅通过阅读代码就不会看到错误。如果你愿意的话,你可以自己去验证CL。如果改动会直接带来的用户可见的影响,比如说ui改动,验证CL的变化是非常关键的。 在阅读代码时,很难理解某些更改会对用户产生怎样的影响。对于这样的更改,如果不方便自己测试,则可以让开发人员演示该功能(demo)。另外,在cr期间考虑功能性特别重要的点是,cl中是否有平行式编程,理论上可能导致死锁或竞争条件。这些类型的问题很难通过运行代码来发现,通常需要有人(开发人员和reviewer)仔细考虑,以确保不会引入问题。(注意,这也是不使用平行式编程的一个很好的理由,在这种情况下,可能出现竞争条件或死锁,这会使代码检查或理解代码变得非常复杂。)复杂性一个CL是否复杂到超过预期的必须?针对任何层级的CL必须确认这几点:单行代码是否过于复杂?函数是否过于复杂?class是否过于复杂?“复杂”通常意味着该代码很难阅读,很有可能也意味着其他开发者在修改这段代码的时候引入其他bug其中一种复杂性就是过度设计(Over-engineering)造成的,开发者会让那段代码过度通用化,超过了原本所需,或者还新增了系统目前不需要的功能。reviewer应特别注意一下过度设计。鼓励开发者解决他们知道现在需要解决的问题,而不是推测将来可能需要解决的问题。当那些将来出现的问题出现的时候才开始解决它们,因为那时候你可以更加清晰看见问题的原样子 Donald Knuth说过:过早的优化是万恶之源(Premature optimization is the root of all evil) 测试请将单元测试、整合测试、端到端测试视为要求CL所做的适当变更。一般CL内除了生产环境的业务代码外,测试也应该要被加入其中。除非该CL是为了处理某个紧急事情而存在。另外,也要确保测试是正确、合理、有用的。测试并非来测试它们本身,一般也极少为了测试而测试(如测试一下测试代码有没有问题又走了测试流程),因此我们要保证测试是有效的。当代码真的有问题,测试是否会失败?如果被测试的程序发生改动时,测试是否会产生误报?每一个测试是否做出了简单而有用的断言?不同的测试方法之间的测试是否适当分开?请记住,测试代码也是必须维护的代码,不要因为它们不在主要关注的范围内。命名开发者是否为了每一个东西都挑了一个适当的名字?一个好的命名意味着,通过名字就足以完整表达该东西的作用是什么或者要做什么。但是同时名字也不要长得难以阅读推荐参考文章「Clean code 101 — Meaningful names and functions」注释开发者是否用可理解的英文留下清晰的注释? 这些注释是否真的必要?通常注释是解析这段代码为什么存在的时候是相当有用的,而不应该去解释某段代码正在做什么。如果代码本身不能解释清楚的话,意味着它更加需要简化了。当然也有例外,比如解释正规的表达式或者复杂的算法正在做什么的时候,注释解释这段代码正在做什么就相当有用。但对于大部分注释来说是用来说明那些不包含在程序本身但资讯,比如说为什么要这样子做的理由查看该CL之前的注释也很有帮助,或许有一个todo项目现在可以一处、一个评论建议为什么不要进行这种更改等等。要注意的是,注释与class、module、function的文件不同。后三者要能够表达一段代码的目的、如何使用它、使用时行为风格Google 对于主要语言都有提供风格指南(style guide),甚至包括大多数冷门语言,因此要确保CL遵循适当的指南上的说明。如果你想改进CL中某些不包含在风格指南中的要点时,请在评论前加上Nit: ,让开发人员知道这是你认为可以改善代码的小问题且并非强制性的。但记住,不要仅根据个人风格偏好阻止提交CL。开发者不应该在 CL内同时包含主要风格的改动与其他代码的修改,这样会导致难以看出CL到底做出什么改动。同时也会让合并和回滚更为复杂,并产生其他问题。例如,如果作者想要重新格式化代码的话,让他们将新格式在一个新CL里面重构。文档如果CL更改了构建、测试、交互、发布的时候,请检查是否也同时更新相关文档, 包括README,g3doc 页面和其他生成(generated) 的参考文件。如果CL 删除或弃用 了一些代码,请考虑是否应该删除对应文档,如果缺少文档时请询问。每一行代码仔细review分配给你的每一行代码。有些东西,比如资料文件(data files)、生成的代码(generated code)、大型数据结构(large data structures),你可以稍微扫过。千万不要在扫过开发者写的 class、函数、代码区块 时,去假设它内部是没问题的。 很显然的某些代码需要比其他代码更仔细的review。这是必须由你做出的判断,但至少你应该确定你理解所有代码在做些什么。如果阅读代码过于复杂并且减慢review速度时,那么你再继续review前,要让开发者知道这件事,并等待他们为这段代码做出解释、说清楚。在Google 我们聘请许多优秀的软件工程师,而你也是其中的一员。如果连你也无法理解的话,很可能其他人也不会。因此,你要求开发者去说清楚这段代码时,同时也在帮助未来的开发人员理解这些代码。如果你能够理解,但觉得没有资格进行某部分的审核,请确保 reviewer中有一个适合(合格) 的人来review该部分。尤其是针对安全性、并发性、可访问性、国际化等复杂问题时。上下文在充足的上下文下查看CL通常很有帮助。一般来说,cr工具只会显示修改部分周围的几行代码而已。但有时你必须查看整个文件以确保改动是否合理。比方说,你可能只看到添加4行新代码,但实际上查看整个文件时会发现这4行是被加在有50行的代码里,此时需要将它拆解为更小的函数。以整个系统的角度出发来思考CL也是很有用的。该CL是否改善整体系统的代码质量,亦或是会让整个系统更加复杂?是否缺少测试?千万不要接受会降低整体系统的代码质量的CL。因为大多数系统是由于许多小改动的积累而变得复杂,因此阻止新的改动引入复杂性(尽管很小)也非常重要。优点当你在CL里看到优点时记得告诉开发者,尤其是当他们用很棒的方式来解决你的评论时。cr通常只关注存在的错误,但它们也应该同时应该为良好实践提供鼓励与欣赏。这点在指导开发者时尤其重要:与其告诉他们做错什么,还不如告诉他们做对了什么。个人认为并非不要指出错误,而是多以鼓励来代替指出错误,让其他开发者更有动力想将事情做好。其实透过简单的一句话让对方知道哪里做得很好,未来他们会将继续保持下去,并为其他开发者带来的正面影响image.png 标明每个commit 修改什么,可以帮助reviewer快速进入状况 image.png 此时就不要吝啬你的称赞了!总结在cr时,请务必确保:代码经过完善的设计功能性对于使用者们是好的对于任何UI改动要合理且好看任何并行编程的实现是安全代码不应该复杂超过原本所必须的开发者不该实现一个现在不用而未来可能需要的功能代码有适当的单元测试测试经过完善的设计开发者对于每样东西有使用清晰、明了的命名注释要清楚且有用,并只用来解释why而非what代码有适当的写下文件(一般在g3doc)代码风格符合style guide确保你查看被要求review的每一行代码、确认上下文、确保你正在改善代码质量,并赞扬开发人员所做的好事与优点吧!如何浏览CL现在你已经知道review时要看些什么,但怎样才是review分散在多个文件中的改动最有效的方法?改动是否合理?他是否有好的描述(description)优先看CL 最重要的改动。它整体是否有完善的设计?用合理的顺序看CL 剩余的改动 步骤1: 用宏观的角度来看待改动,查看CL描述以及它做什么 该改动是否有意义、合理?如果在第一时间认为不应该发生这种变化,请立即说明为什么不该这样做的原因。当拒绝类似这样的更改时,向开发人员提供建议告诉他们应该怎么做什么也是一个好主意。例如,你可以说:“看起来你已经完成一些不错的事情,谢谢!但我们实际上正朝着删除你正在修改的FooWidget系统的方向前进,所以现阶段我们不想对它进行任何新的修改。 不如重构我们的新BarWidget class如何?”需要注意的是,reviewer在委婉拒绝该CL的同时也要提供替代方案,而且仍然保持礼貌。这种礼貌是很重要,因为我们希望表明即使不同意也会相互保持尊重。如果你有几个CL里包含你不想这样做的改动时,你应该重新考虑开发团队的开发过程,或发布开发流程给外部贡献者知道,以便在任何CL被撰写前有更多的沟通。最好是在他们开始投入前说“不”,避免那些已经投入心血的工作现在必须被抛弃或彻底重写。提供替代方案让对方知道该怎么做,而非让其自行独自摸索。image.png 指出问题,告知替代方案或指点方向 步骤2: 检查CL主要的部分 找到CL最核心的部分的那些文件。通常CL内会有文件包含大量的逻辑改动,而它正是CL的主要部分。因此我们要首先查看这些主要部分。这有助于为CL的其他较小部分提供适当上下文,而且这样通常可以提高review速度。如果CL太大导致于无法确定哪里是主要部分时,请向开发者询问首先应当查看的内容,或者要求他们将CL拆分为多个CL。如果在主要部分发现存在一些主要的设计问题时,即使没有时间立即查看CL的其余部分,也应立即留下评论告知此问题。因为事实上,因为该设计问题足够严重的话,继续review其他部分的代码可能只是浪费时间,因为其他正在审查的其他代码可能都将无关紧或消失。立刻发送关于主要设计的评论非常重要有两个主要原因:通常开发者在送出CL后,在等待review过程中便已经开始着手基于该CL的新工作。此时如果正在review的CL存在重大设计问题的话,开发者将不得不重新写所有基于它的后续所有CL。因此你要在他们有问题的设计上投入之前阻止他们。主要设计变更通常需要较长时间才能完成,但每个开发人员几乎都有自己deadline。为了赶上deadline并保证代码质量,开发者需要尽快开始或重做CL 任何的主要设计变更。 步骤3: 用合理的顺序看CL 其余的改动 一旦确认整个CL没有重大的设计问题时,试着找出一个有逻辑顺序来review剩余档案,并确保不会错过其中任何一个。通常在浏览主要部分后,最简单的方式是按照cr工具提供的顺序来浏览每个文件。有时在阅读主要代码前先阅读测试也是非常有帮助的,如此一来你就可以了解应该做、看些什么。review的速度为什么review速度要快在Google我们优化开发团队共同生产产品的速度,而不是优化个人开发的速度。个人的开发速度很重要,但它不如整个团队的开发速度重要。当cr很慢时,会发生以下几件事:团队整体的速度下降。review慢的话,对于团队其他人来说重要的新功能与缺陷修复将会被延迟数天、数周甚至数月,只因为它们正在或者等待review。开发人员开始抗议cr。若reviewer每隔几天才回应一次,但每次都要求对CL进行重大更改的话,那么开发人员可能会感到非常沮丧与觉得困难,而这通常会演变成抱怨。如果reviewer请求相同的实质性更改(且确实可以改善代码质量状况),但在每次开发人员提交新的改动时都能快速反应的话,这些抱怨往往会消失。大多数关于cr的抱怨,往往可以通过加快流程来解决。代码质量会受到影响。当review很慢时,会造成开发者提交不完全尽如人意的CL 的压力越来越大。评论的越慢也会阻止他人进行代码清理、重构、甚至是对现有CL 的进一步改进。cr应该要多快?如果你并没有处于需要专注工作的时候,那么你应该在CL被提交后尽快进行review。review回复最长的极限是一个工作日。若遵循以上指南,意味着一般的CL应该在一天内得到多轮review(如果必要的话)。速度vs中断但有时候个人的速度优先度会胜过团队速度。如果你处于需要专注工作的时候(比方说写代码),不要打断自己去做cr。研究证实,若开发者在被打断后会需要很长时间才能恢复到原本顺畅的开发流程。因此,开发的时候,打断自己实际上会比让另一位开发者等待review来得更加昂贵。取而代之的是,我们可以在投入到处理他人给的review评论之前,找个适当的时机点来进行cr。这有可能是当你的当前开发任务完成后、午餐、刚从会议脱身或从微型厨房回来等等。快速回应当我们谈论cr的速度时,我们关注的是回应时间,而非CL需要多长时间才能完成并提交。在理想情况下,整个过程应该是快速的。总的来说个人回应评论的速度,比起让整个cr过程快速结束来得更为重要。即使有时需要很长时间才能完成整个流程,但若在整个过程中能快速获得来自reviewer的回应,这将会大大减轻开发人员对于缓慢的cr过程的挫败感。如果真的忙到难以抽身而无法对CL进行全面review时,你依然可以快速的回应让开发者知道你什么时候会开始审核、建议其他能够更快回复reviewer,又或者提供一些初步的广泛评论。(注意:这并不意味着你应该中断开发去回复——请找到适当的中断时间点去做)很重要的是,reviewer员要花足够的时间来进行review,确保他们给出的LGTM,意味着“此代码符合我们的标准”。尽管如此,理想的个人的回应速度还是越快越好。跨时区review在面对时区不同的问题时,尝试在他们还在办公室时回复作者。如果他们已经回家了,那么请确保在他们第二天回到办公室前完成。LGTM 评论为加快速度,在某些情况下reviewer可以给予LGTM或Approval,即便CL上仍有未解决的评论。类似情况会发生在:reviewer确信开发人员会适当地处理所有剩余的评论剩余的评论是微不足道的或它们不需由开发者来处理reviewer必须清楚指明他们是指上面哪种情况LGTM 评论对双方处于不同的时区时尤其值得考虑,否则开发人员会等待一整天才得到“LGTM,Approval”。大型改动如果有人要求reivew时,但由于改动过于庞大导致你难以确定何时才有时间review它时,你通常该做的是要求开发人员将CL拆解成多个较小的CL,而不是一次review巨大的CL。这种事是可能发生的,而且对于reviewer非常有帮助,即便它需要开发人员付出额外人力来处理。如果CL无法分解为较小的CL,且你没有足够时间快速查看整个CL内容时,那么至少对它的整体设计写些评论,并发送回开发人员以便进行改进。身为reviewer,你的目标之一是在不牺牲代码质量的状况下,避免阻档开发人员进度,或让他们能够快速采取其他更进一步的动作。cr的能力会随着时间进步如果你遵循这些准则,并且对于cr非常严格的话,后面你会发现整个cr流程会越来越快。因为开发者学到什么是质量好的代码,并于开头就提交一个很棒的CL,而这正恰好只需要越来越少的时间。而reviewer则学会快速回应,而非在过程中加入不必要的延期。 但不要为提高想象中的速度,而对cr标准和代码质量做出妥协,毕竟从长远来看它实际上并不会让任何事情发生得更快。紧急状况在某些紧急情况下,CL会希望放宽标准以求迅速地通过整个cr过程。但请看什么是紧急情况来知道哪些情况实际上属于紧急情况,而哪些不符合。如何写review评论如何面对被推迟处理的评论有时开发人员会推迟处理cr产生的评论。要么他们不同意你的建议,要么他们会抱怨你太严格了。谁是对的当开发人员不同意你的建议时,请先花点时间考虑一下他们是否是正确的。因为通常他们比你更了解代码,所以他们可能真的比起你来说对代码的某些层面具有更好的洞察力。他们的论点有意义吗?从代码质量的角度来看它是否合理?如果是的话,让他们知道他们是对的,然后让问题沉下去。但开发人员也并不总是对的。在这种情况下,reviewer应该更进一步解释为什么认为自己的建议是正确的。一个好的解释通常展示了“对开发人员的回覆的理解”以及有关“为什么被要求对出做出改动”等信息。尤其是当reviewer认为给出的建议会改善代码质量时,便应该继续宣扬自己的论点。只要他们相信所需的额外的工作量最终会改善整体代码质量。提高整体代码质量这件事,往往是经由每个微小的改动来发生。有时往往需要几番解释一个建议才能让对方真正理解你的用意。切记,始终保持礼貌,让开发人员知道你有听到他们在说什么,只是你不同意该论点而已。让开发者沮丧reviewer有时会认为若自己坚持改进的话,会让开发人员觉得沮丧不安。的确开发人员有时会感到很沮丧,但这通常是十分短暂的,甚至后来他们非常感谢你帮助他们提高代码质量。一般来说,只要你在评论中表现得很有礼貌,开发人员实际上根本不会感到沮丧,这些担忧都仅存在于reviewer心中而已。沮丧很多时候是对于cr评论的写作方式有关,而并非来自reviewer对于代码质量的坚持。晚点再来整理干净一个常见的推迟原因是开发人员希望完成任务(这可以理解)。他们不想通过另一轮cr来批准这个CL。此时他们通常会说在以后的CL进行整理,所以你现在应该要给LGTM。当然部分开发人员非常擅长这一点,并且立即送出一个修复问题的后续CL (follow-up CL),但根据过往经验,这种后续“清理行为”非常少见。除非开发者在CL获得批准之后立刻进行清理动作,否则这事根本不可能发生。这不是因为开发人员不负责任,而是因为他们可能有很多其他工作要完成,于是清理工作便会在成堆的工作中被遗忘。因此,通常最好坚持开发人员在代码在合并后清理它们。因为让人们「稍后清理」是致使代码库质量状况下降最常见的状况。如果CL引入了新的复杂性的话,除非是紧急情况,否则必须在提交之前将其处理掉。如果CL导致暴露周围的问题且现在无法解决它们的话,开发人员应该将缺陷记录下来并分配给自己,避免后续被遗忘。又或者他们可以选择在代码中留下TODO的注释并连结到刚记录下的缺陷。关于review严格性的常见抱怨如果你先前以相当宽松的标准并转趋严格的进行cr的话,一些开发人员会开始大声地抱怨。一般来说,提高review的速度会让这些抱怨逐渐消失。这些抱怨可能需要数个月才会消失,但最终开发人员会看到严格的review所带来的价值,因为严格的review帮助他们产生的优秀代码。而且一旦发生某些事情时,最大声的抗议者甚至可能会成为你最坚定的支持者,因为他们会看到变得review变严格后所带来的价值。解决冲突如果你遵循前面所有操作,但仍然遇到无法解决的双方之间的冲突时,请参考前面的cr的标准以获取有助于解决冲突的准则和原则。
    来自:
    浏览:276
  • 创建型模式————工厂模式(2.2)

    接口,然后定义JavaCoder和PythonCoder实现Coder接口。createCoder(String language) { Coder coder = null; if(language.equals(Java)) { coder= new JavaCoder(coder = clientFactory.createCoder(Rust); coder.express(); }}工厂方法UML类图:?createCoder() { Coder coder= new GoCoder(); return coder; } @Override public Designer createDesignercreateCoder() { Coder coder= new JavaCoder(); return coder; } @Override public Designer createDesigner
    来自:
    浏览:109
  • java代码快

    1.4.4 案例代码九:package com.itheima_04;* * Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行 * * * BlockTest静态代码块执行 --- BlockTest的主函数执行了 --- Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行 * Coder构造代码块执行 --- CoderSystem.out.println(BlockTest无参构造执行了);}public static void main(String[] args) {System.out.println(BlockTest的主函数执行了);Coderc = new Coder();Coder c2 = new Coder();}}class Coder {static {System.out.println(Coder静态代码块执行);}{System.out.println(Coder构造代码块执行);}public Coder() {System.out.println(Coder无参空构造执行);}}转帖:http:blog.51cto.com135877082087550
    来自:
    浏览:189
  • GPU 云服务器

    腾讯GPU 云服务器是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景……
    来自:
  • FPGA 云服务器

    腾讯FPGA云服务器是基于FPGA硬件可编程加速的弹性计算服务,您只需几分钟就可以获取并部署您的FPGA实例。结合IP市场提供的图片,视频,基因等相关领域的计算解决方案,提供无与伦比的计算加速能力……
    来自:
  • 专用宿主机

    专用宿主机(CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
    来自:
  • 黑石物理服务器2.0

    腾讯黑石物理服务器2.0(CPM)是一种包年包月的裸金属云服务,为您提供云端独享的高性能、无虚拟化的、安全隔离的物理服务器集群。使用该服务,您只需根据业务特性弹性伸缩物理服务器数量,获取物理服务器的时间将被缩短至分钟级。
    来自:

扫码关注云+社区

领取腾讯云代金券