JDK 的使用都是历史遗留问题。 很多应用一旦使用了 JDK 很少会变化,尤其是现在新的 JDK 变动太多,新 JDK 编译的东西老 JDK 用不了。 除非到了非升级不可的程度,比如说以前是用 J2EE 开发的,现在可能需要采用微服务,但是一些已有的 common 是老的 JDK 编译的,这个时候可以重新使用新的 JDK 进行编译然后升级 JDK。 除此之外如果不是业务必须的,升级 JDK 的成本太高,意义不大。
JDK 的使用都是历史遗留问题。 很多应用一旦使用了 JDK 很少会变化,尤其是现在新的 JDK 变动太多,新 JDK 编译的东西老 JDK 用不了。 除非到了非升级不可的程度,比如说以前是用 J2EE 开发的,现在可能需要采用微服务,但是一些已有的 common 是老的 JDK 编译的,这个时候可以重新使用新的 JDK 进行编译然后升级 JDK。 除此之外如果不是业务必须的,升级 JDK 的成本太高,意义不大。
@RestController 在 Spring MVC 中就是 @Controller 和 @ResponseBody 注解的集合。 @RestController 注解是从 Spring 4.0 版本开始添加进来的,主要用于更加方便的构建 RESTful Web 服务。 @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用此注解此次请求将不再走视图处理器,而是直接将此响应结果写入到输入流中,其效果等同于使用response对象输出指定格式的数据。 在 RESTful 的服务中,我们大部分情况是使用 JSON 为返回数据的,所以你可以直接使用 @RestController 替换掉 @Controller 和 @ResponseBody。 根据上面的解释,下面的 2 段代码是完全一样的: @Controller @ResponseBody public class MVCController { .. your logic } @RestController public class RestFulController { .... your logic } https://www.cwiki.us/display/SpringBootZH/questions/57939042
简单来说,装逼的地方必须要有装逼的工具。 ThinkPad 这类东西就是用来干活产生价值的,一般用 ThinkPad 的人不是在烈日炎炎中奔波,就是在格子间运行着编译器,打开几个屏幕奋笔疾书进行编译。 就好像进藏跑个 318 线,靠谱的还是陆巡之类的,弄个奔驰还是挺吸引眼球的,但万一出点状况的话还是有点闹心。 去星巴克的人工作的一般都不会有大量的输入需求,或者需要鼠标指点的场景并不多。不管多好用的触控板都不会比来个鼠标用得方便。写东西,再好的屏幕都不如双屏来得爽,至于网络啥的,无线不可能比有线快,很多公司还有安全需求,挂个 VPN,想想还是弄个咖啡回公司弄吧,快得多。 就这样来说,上班都累得要死要活了,还用得着带着笔记本到咖啡馆去写不,宝宝心里苦。说明用 Mac 的人可能 B 格 比 ThinkPad 高点,更主要空闲时间多点。
Python 有自己的价值,只是目前有点虚烧。 每一个语言都可以解决很多问题,就好像算法,你可以用各种语言来实现。 但是实现效率有高有低,语言学习曲线是不是陡峭,市场需求如何等等。 相信很多人选定某一个语言的话,肯定会考虑自己学习的语言在实际中使用价值如何,好不好找工作,市场应用场景怎么样。 Python 都快被吹成宇宙第一语言了,你可以对比搜索下语言排名,各种说法就是长期占据语言排名第一,每年大量使用。 Web 应用开发,不仅仅是一个 Python 搞得定的,前段框架怎么弄?iOS 还是用的 Object C++, Android 还是用的 JVM。就从这些通用引用场景来看,大部分看都没有 Python 什么事情。至于数据挖掘,数据分析,大数据这种东西,太虚了。大数据分析需要数据基础的,不是说搞点数据就是大数据,在 Java 领域也有大数据分析工具可以用,只是确实学习门槛和学习曲线要比 Python 高一些。 培训机构的宣传的套路,你懂的。如果不把某个东西吹大点,怎么会有人入套呢?至于什么高薪啥的,只要能沾边的都往上靠,忽悠又不上税。 学习语言还是要看使用场景,应用类型的。
理论上是可行的,一般操作来说你需要在你到达上海后联系航空公司告诉他们你需要将机票调整,告诉他们你需要调整的理由。 一般来说航空公司会帮你改机票,有些公司可能要收费,因为你的行为在航空公司看来属于改票,可能会收取一些费用,这个费用可能比你买个机票都贵。 有些航空公司可能就免费直接给你改了,就把后面那个航段取消掉了,因为空出来的座位,如果超售的话,航空公司还可以卖给别人。 但,你一定要打电话给航空公司确认,否则因为你有一段 No Show,可能会导致你整个返程机票取消。这个行为叫做跳段,一般来说航空公司都会帮你处理,只是收费不收费的问题罢了。
具体的提示信息如下: Error:(21, 8) java: cannot access org.springframework.web.WebApplicationInitializer class file for org.springframework.web.WebApplicationInitializer not found 这个错误要结合你的 Application 代码来看。 因为在 Application 的代码中,我们继承了 SpringBootServletInitializer。 请注意:我们定义的 Application: public class Application extends SpringBootServletInitializer{ } 正是因为这个定义,所以你的 POM 或者 build.gradle 中 需要添加:spring-boot-starter-web 依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.6.RELEASE</version> </dependency> 然后你再次编译的项目,你就不会有提示编译错误了。 https://www.cwiki.us/display/SpringBootZH/questions/57939020
在使用 Archiva 的时候,有时候会提示文件没有找到,或者文件不能下载。 这里需要注意提示的状态。 有时候提示的 404, 有时候提示的 500。 尤其是有时候,你使用 proxy 连接的时候 如果提示的是 404 的话,提示你的 Archiva 在可能的源仓库中已经进行了搜索,但是没有找到。 如果提示的是 500 的话,那么可能的情况是源仓库可能需要授权,或者源仓库已经损坏了。这个情况你需要查看 Arachiva 的服务器上日志,找到问题在哪里。 需要特别注意的 500 错误,因为你的 Gradle 或者 maven 将会提示的是不能下载文件,你可能并不知道问题出现在 Archiva 的内部错误,或者 Archiva 到源仓库中搜索下载的错误。 https://www.cwiki.us/display/MavenZH/questions/57939009
错误提示如下: A problem occurred configuring root project 'reoc'. > Could not resolve all dependencies for configuration ':classpath'. > Could not determine artifacts for org.asciidoctor.convert:org.asciidoctor.convert.gradle.plugin:2.3.0 > Could not get resource 'https://maven.ossez.com/repository/internal/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar'. > Could not HEAD 'https://maven.ossez.com/repository/internal/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar'. Received status code 500 from server: Unable to fetch artifact resource. 这个问题怎么处理 在这里,你需要注意的 Archiva 返回的错误代码是 500。 如果返回的代码是 404 说明的是资源没有找到,返回 500 的意思是服务器上有错。 Received status code 500 from server: Unable to fetch artifact resource. 登录服务器后,我们看到错误信息是: 2020-04-12 08:50:22,335 [qtp1096639601-25] ERROR org.apache.archiva.webdav.ArchivaDavResourceFactory [] - Failures occurred downloading from some remote repositories: Spring-Plugins: Download failure on resource [http://repo.spring.io/plugins-release/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar]:Access denied to: http://repo.spring.io/plugins-release/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar , ReasonPhrase:Forbidden. central: Download failure on resource [http://central.maven.org/maven2/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar]:central.maven.org (cause: java.net.UnknownHostException: central.maven.org) org.apache.archiva.policies.ProxyDownloadException: Failures occurred downloading from some remote repositories: Spring-Plugins: Download failure on resource [http://repo.spring.io/plugins-release/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar]:Access denied to: http://repo.spring.io/plugins-release/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar , ReasonPhrase:Forbidden. central: Download failure on resource [http://central.maven.org/maven2/org/asciidoctor/convert/org.asciidoctor.convert.gradle.plugin/2.3.0/org.asciidoctor.convert.gradle.plugin-2.3.0.jar]:central.maven.org (cause: java.net.UnknownHostException: central.maven.org) at org.apache.archiva.proxy.DefaultRepositoryProxyConnectors.fetchFromProxies(DefaultRepositoryProxyConnectors.java:366) ~[archiva-proxy-2.2.3.jar:?] at org.apache.archiva.webdav.ArchivaDavResourceFactory.fetchContentFromProxies(ArchivaDavResourceFactory.java:818) [archiva-webdav-2.2.3.jar:?] at org.apache.archiva.webdav.ArchivaDavResourceFactory.processRepository(ArchivaDavResourceFactory.java:627) [archiva-webdav-2.2.3.jar:?] at org.apache.archiva.webdav.ArchivaDavResourceFactory.createResource(ArchivaDavResourceFactory.java:324) [archiva-webdav-2.2.3.jar:?] at org.apache.archiva.webdav.RepositoryServlet.service(RepositoryServlet.java:125) [archiva-webdav-2.2.3.jar:?] at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) [javax.servlet-3.0.0.v201112011016.jar:?] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) [jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501) [jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) [jetty-security-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) [jetty-servlet-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.Server.handle(Server.java:370) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) [jetty-http-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) [jetty-http-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) [jetty-server-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667) [jetty-io-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) [jetty-io-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) [jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) [jetty-util-8.1.14.v20131031.jar:8.1.14.v20131031] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242] 因为我们使用的是 Archiva 为 proxy 代理服务器,这说明 Archiva 没有办法从原数据中下载信息。 从上面的信息,我们可以看到你的 Central Maven 仓库设置有问题,或者原 Central Maven 仓库已经不可用了。 需要将不可用访问的 http://central.maven.org/maven2 仓库 URL 替换为: https://repo1.maven.org/maven2/ 仓库地址。 https://www.cwiki.us/display/MavenZH/questions/57938999
在一个 Hibernate 项目中,我们需要同时设置 hbm.xml 和 Annotations 的 mapping 这种情况 hibernate.cfg.xml 如何配置? 其实 hibernate.cfg.xml 中是可以同时设置 hbm.xml 和 Annotations 的。 例如下面的配置: <mapping class="com.ossez.covid19.common.models.Covid19Current"/> <mapping resource="hbm/api/RewsUser.hbm.xml" /> Hibernate 能够自动识别上面 2 个 mapping。 https://www.cwiki.us/display/HIBERNATE/questions/57938966
在实际项目设计中,我们可以希望在 JPA 中定义 @Entity 表。 但是在这个 @Entity 类中,我们希望 extends 另外一个类,在另外一个类中我们可以把一些通用的属性设置到里面。 例如: public class Covid19Current extends DataObject implements java.io.Serializable { } 那么我们应该在 DataObject 添加什么注解? 需要在 DataObject 中添加 @MappedSuperclass 注解。 可以定义成如下: @MappedSuperclass public abstract class DataObject { } @MappedSuperclass注解只能标准在类上:@Target({java.lang.annotation.ElementType.TYPE}) 标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。 标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。 但是如果一个标注为@MappedSuperclass的类继承了另外一个实体类或者另外一个同样标注了@MappedSuperclass的类的话,他将可以使用@AttributeOverride或@AttributeOverrides注解重定义其父类(无论是否是实体类)的属性映射到数据库表中的字段。 比如可以重定义字段名或长度等属性,使用@AttributeOverride中的子属性@Column进行具体的定义。 https://www.cwiki.us/display/HIBERNATE/questions/57938957