今天服务器在运行过程中抛出了如下错误,导致无法访问

本贴最后更新于 1799 天前,其中的信息可能已经斗转星移
[ERROR]-[2019-04-25 15:22:00]-[org.b3log.symphony.service.ArticleQueryService:1569]: Organizes article [1555745058690] failed
java.lang.NullPointerException
[ERROR]-[2019-04-25 15:22:00]-[org.b3log.symphony.service.ArticleQueryService:1569]: Organizes article [1555744835700] failed
java.lang.NullPointerException
[ERROR]-[2019-04-25 15:22:00]-[org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer:131]: Renders template [search-articles.ftl] failed [Request [
    method=GET,
    URL=http://qiankunpingtai.cn:443/symphony/search,
    contentType=null,
    characterEncoding=UTF-8,
    local=[
        addr=127.0.0.1,
        port=8081,
        name=localhost],
    remote=[
        addr=61.130.*.*,
        port=45628,
        host=127.0.0.1],
    headers=[
        host=qiankunpingtai.cn:443
        remote-host=61.130.*.*
        x-real-ip=61.130.*.*
        x-forwarded-for=61.130.*.*
        connection=close
        accept=*/*
        user-agent=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
        accept-encoding=gzip, deflate
    ]
]]
FreeMarker template error:
The following has evaluated to null or missing:
==> article.articleTagObjs  [in template "classic/common/list-item.ftl" at line 22, column 16]


Tip: It's the step after the last dot that caused this error, not those before it.

Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??



FTL stack trace ("~" means nesting-related):
	- Failed at: #list article.articleTagObjs as artic...  [in template "classic/common/list-item.ftl" at line 22, column 9]
	- Reached through: #include "common/list-item.ftl"  [in template "classic/macro-list.ftl" in macro "list" at line 28, column 9]
	- Reached through: @list listData=articles  [in template "classic/search-articles.ftl" at line 42, column 25]


Java stack trace (for programmers):

freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
	at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
	at freemarker.core.Expression.assertNonNull(Expression.java:233)
	at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:103)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
	at freemarker.core.Environment.visit(Environment.java:330)
	at freemarker.core.Environment.visit(Environment.java:336)
	at freemarker.core.Environment.include(Environment.java:2582)
	at freemarker.core.Include.accept(Include.java:171)
	at freemarker.core.Environment.visit(Environment.java:366)
	at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:317)
	at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
	at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
	at freemarker.core.Environment.visitIteratorBlock(Environment.java:642)
	at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
	at freemarker.core.Environment.visit(Environment.java:366)
	at freemarker.core.Environment.invoke(Environment.java:775)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
	at freemarker.core.Environment.visit(Environment.java:330)
	at freemarker.core.Environment.visit(Environment.java:336)
	at freemarker.core.Environment.visit(Environment.java:336)
	at freemarker.core.Environment.process(Environment.java:309)
	at freemarker.template.Template.process(Template.java:384)
	at org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer.genHTML(AbstractFreeMarkerRenderer.java:154)
	at org.b3log.symphony.processor.SkinRenderer.genHTML(SkinRenderer.java:137)
	at org.b3log.latke.servlet.renderer.AbstractFreeMarkerRenderer.render(AbstractFreeMarkerRenderer.java:125)
	at org.b3log.latke.servlet.DispatcherServlet.result(DispatcherServlet.java:118)
	at org.b3log.latke.servlet.DispatcherServlet.handle(DispatcherServlet.java:97)
	at org.b3log.latke.servlet.DispatcherServlet.service(DispatcherServlet.java:69)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
[WARN ]-[2019-04-25 15:22:06]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post

  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6357 引用 • 28565 回帖 • 265 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖

相关帖子

被采纳的回答
  • 88250

    这个异常可能是其他异常引起的,比如连接池耗尽,你再仔细看下日志,看看有没有获取连接失败的。如果有,那有可能是被 CC 攻击了。

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    看样子是攻击者的 IP, @cc770382766 扫了个漏洞出来 😂

  • 其他回帖
  • qiankunpingtai
    作者

    这个连接池会自动恢复吗?我看后台的错误一直在刷,完全就是要宕机的前奏!

    1 回复
  • qiankunpingtai
    作者

    有这样一个错误出现的次数非常多

    [ERROR]-[2019-04-18 10:03:48]-[org.b3log.symphony.processor.FileUploadProcessor:136]: Gets a file failed
    org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
    	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:299)
    	at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:262)
    	at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
    	at org.b3log.symphony.processor.FileUploadProcessor.getFile(FileUploadProcessor.java:133)
    	at org.b3log.symphony.processor.FileUploadProcessor_$$_jvsta93_19._d5getFile(FileUploadProcessor_$$_jvsta93_19.java)
    	at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.b3log.latke.ioc.JavassistMethodHandler.invoke(JavassistMethodHandler.java:116)
    	at org.b3log.symphony.processor.FileUploadProcessor_$$_jvsta93_19.getFile(FileUploadProcessor_$$_jvsta93_19.java)
    	at sun.reflect.GeneratedMethodAccessor94.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.b3log.latke.servlet.handler.ContextHandleHandler.handle(ContextHandleHandler.java:45)
    	at org.b3log.latke.servlet.RequestContext.handle(RequestContext.java:545)
    	at org.b3log.latke.servlet.handler.BeforeHandleHandler.handle(BeforeHandleHandler.java:81)
    	at org.b3log.latke.servlet.RequestContext.handle(RequestContext.java:545)
    	at org.b3log.latke.servlet.handler.RouteHandler.handle(RouteHandler.java:202)
    	at org.b3log.latke.servlet.RequestContext.handle(RequestContext.java:545)
    	at org.b3log.latke.servlet.handler.StaticResourceHandler.handle(StaticResourceHandler.java:118)
    	at org.b3log.latke.servlet.RequestContext.handle(RequestContext.java:545)
    	at org.b3log.latke.servlet.DispatcherServlet.handle(DispatcherServlet.java:96)
    	at org.b3log.latke.servlet.DispatcherServlet.service(DispatcherServlet.java:69)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:748) 
    
  • qiankunpingtai
    作者
    [WARN ]-[2019-04-25 15:16:09]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/settings/avatar
    [WARN ]-[2019-04-25 15:16:19]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:25]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:30]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/settings/function
    [WARN ]-[2019-04-25 15:16:30]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:35]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:38]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:42]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:45]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:48]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:48]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/refresh
    [WARN ]-[2019-04-25 15:16:48]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/perfect
    [WARN ]-[2019-04-25 15:16:50]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 401, /symphony/post
    [WARN ]-[2019-04-25 15:16:50]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/iconAsk
    [WARN ]-[2019-04-25 15:16:51]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/thumbs-up
    [WARN ]-[2019-04-25 15:16:51]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/down
    [WARN ]-[2019-04-25 15:16:51]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/chevron-down
    [WARN ]-[2019-04-25 15:16:52]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/comments
    [WARN ]-[2019-04-25 15:16:52]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/icon-report
    [WARN ]-[2019-04-25 15:16:52]-[org.b3log.latke.servlet.handler.BeforeHandleHandler:60]: Occurred an exception before request processing: 404, /symphony/article/heart 
    
  • 查看全部回帖

推荐标签 标签

  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖 • 57 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 124 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 590 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 179 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    66 引用 • 124 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 581 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    331 引用 • 315 回帖 • 83 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 275 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    330 引用 • 612 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 380 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 2 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 594 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖 • 2 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    163 引用 • 529 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 609 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 549 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • V2Ray
    1 引用 • 15 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 166 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖 • 2 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 20 关注
  • 分享

    有什么新发现就分享给大家吧!

    240 引用 • 1729 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 39 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 249 关注