开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

公司初创期使用 PHP,为什么很多公司都会慢慢转型到 JAVA

很多公司都在做这方面的转型。 尤其是在公司达到一定运营规模后,PHP 的问题会让公司花费更多的时间去部署排查问题。当时公司选择 PHP 的主要原因,就是因为开发简单,框架也还不错,部署也比较快。持续集成的问题可能没有太多的问题。 如果一开始要上 Java 的话,很多时候需要面临从框架,数据库,ORM,CI,DevOps 各个不同方面的技术协调和沟通,对不是财大气粗的公司来说,这个负担还是比较重的。毕竟人力成本还在那里摆着。 相对以前来说,现在 Java 世界也保持比较开放的态度,有 Spring 全家桶,基本上能够帮你解决很多快速部署的问题,采取微服务可以前台和后台分离,采取混合云架构,可以将一些网络和存储压力转移。 其实不管选何种语言都差不多,可能你们公司在使用 PHP 的时候已经达到了 PHP 的性能瓶颈和极限了,转型 Java 再正常不过了。也有用 .NET 的,很多公司不会考虑,主要是版权问题和微软绑定的问题。     另外,如果你搜索在互联网世界中有多少个网站使用 Java 有多少网站使用 PHP 的,这个其实是没有任何意义的。因为一个 WordPress 就能碾压很多网站了。 PHP 的优势在于快速部署,没有多少人愿意花费几天时间去安装数据库,部署应用,调试 Log ,并且界面还不好调整。 使用 PHP 能够飞速部署一些小应用,对个人,初创公司,想利用一些已有的框架的时候就非常方便了。 https://www.ossez.com/t/php-java/592

2020年10月17日 0Comments 900Browse 1Like Read more
Computer Science

Discourse 从版本 2.6 beta 开始将不再支持头像的动态 GIF

根据官方的说明,从 Discourse 的版本 2.6 beta 开始就不会对头像的动态 Gif ( Animated GIF)进行支持了。 据官方解释这是为了简化 Discourse 的代码库,同时官方也说也有可能在后续版本中重新开放动态 Gif 插件的支持。但是这个支持没有时间表。 针对帖子内容中的动态 Gif 图片,Discourse 还是支持的。     如上图,你还是可以上传动态的 Gif 图片。 https://www.ossez.com/t/discourse-2-6-beta-gif/591

2020年10月17日 0Comments 653Browse 0Like Read more
Computer Science

Firefox 如何对发送的参数进行调试

在网页或者 API 进行调试的时候,尤其是在 OAuth 调试的时候,我们希望能够调试发送到 API 的数据,这个时候如何进行调试呢? 使用 Firefox 不是十分清楚如何使用 Chrome 进行调试,但是经过一些摸索,我们可以尝试使用 Firefox 进行调试。 假设我们要访问一个 API 的网址:http://localhost:8080/search/user 正常访问的时候,我们获得是 401 的错误,这是因为这个网址需要授权。 所以,我们希望在 Firefox 调试的时候添加上 Authorization: <type> <credentials> 这个参数,具体请参考官方网站:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization 在我们的例子中,我们希望添加的参数是 Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtnMkxZczJUMENUaklmajRydDZKSXluZW4zOCIsImtpZ 这种参数格式,请注意,在这个参数格式的 Bearer 前面是有空格的,Bearer 的后面也是有空格的。 如何在 Firefox 上添加上这个参数呢? 选择你已经访问过的网址列表,在上图中,返回的结果是 401。 单击 Resend 按钮,在弹出的对话框中选择 Edit and Resend。 在下一个界面中,你可以对你需要添加的参数进行编辑,你可以在这里添加你需要的 token 参数。 将上面的参数设置好以后,可以单击选择重新发送。 虽然你还会得到 401 的错误,这是因为你的 token 的错误情况,这个错误的情况是你的 API 提供的,与第一次完全不提供得到的 401 错误信息是不一样的。 通过上面的修改和配置,你可以使用 Firefox 对不同的 Token 状态进行调试,比如说你可以使用过期的 Token ,无效的 Token 甚至是不发送 Token。 https://www.ossez.com/t/firefox/590

2020年10月17日 0Comments 655Browse 0Like Read more
Computer Science

Spring security CSRF 跨域访问限制问题

在我们写 Spring 安全的时候通常有这么一句话: httpSecurity.csrf().disable(). 从这句话的字面意思就很明白就是禁用 csrf,什么是 csrf,为什么要禁用可能就一脸懵逼了。 因为你很有可能会遇到一个错误: HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'. 这个就是做 Web 开发的时候非常头痛的跨域访问问题。 Spring Security 后,引入了CSRF,默认是开启。不得不说,CSRF和RESTful技术有冲突。CSRF默认支持的方法: GET|HEAD|TRACE|OPTIONS,不支持POST。 什么是 CSRF ,这是一个 WEB 应用安全的问题,CSRF(Cross-site request forgery 跨站请求伪造,也被称为“One Click Attack” 或者Session Riding,攻击方通过伪造用户请求访问受信任站点。 其实跨域攻击操作过程比较简单,就是如果你不采取任何限制的时候,对 POST 相对风险系数比较高的访问,用户可以伪造请求,然后对服务器进行攻击和修改。 比如说通过 伪造 POST 请求,然后能够将用户的数据删除。 在跨域 (同一个 IP、同一个网络协议、同一个端口,三者都满足就是同一个域,否则就有跨域问题)。为什么在基于网页开发的时候没有这个跨域的问题,但是基于 RETS 开发的时候就非常明显。 这是因为在网页开发的时候,首先服务器会返回 sessionid 到客户端的界面,在客户端向服务器请求的时候,都会带有这个 session id。 但 在 RESTFul 开发的时候,这个情况就没有办法避免,因为我们的 API 会暴露给不同的用户,用户可能也会使用不同的 IP 地址,尤其用户可能还部署了多个服务器的情况下。 因此,我们在 Spring 安全配置下,需要禁用 CSRF。 禁用方法 有你需要在,程序 http 过滤器上禁用。     这个就是你在上面看到的那个代码。 https://www.ossez.com/t/spring-security-csrf/587

2020年10月16日 0Comments 842Browse 0Like Read more
Computer Science

IntelliJ IDEA 的 Maven 如何设置自动下载源代码和文档

如果在你的 Maven 项目中,如果你使用了一个 jar,但是这个 jar 没有源代码。 IntelliJ IDEA 会先自动帮你反编译,然后提示你下载源代码。 你也可以设置自动下载源代码和文档。 自动下载源代码和文档 选择 IntelliJ IDEA 的设置。 快捷键是 Ctrl + Alt + S 然后你可以使用关键字 maven 搜索。 在搜索的结果中,选择 importing,然后选择自动下载的选项。     然后 OK 退出就可以了。 如何在项目中下载 如果你没有下载过所有的源代码的话,你可以在项目中下载。 在你的 Maven 项目中的右侧 Maven 选项。 选择你需要下载的包,然后右键可以选择下载源代码和文档。     当然,你也可以在界面的上端,直接一次全部下载。 你可以在需要下载的包上先进行选择,然后单击上部的全部下载源代码和文档。     如何查看文档 选择你需要查看的类,或者方法。然后使用快捷键 Ctrl + Q。这个将会弹出一个文档的界面。     如果你已经选择下载了文档和源代码的话。 那么在弹出文档对话框的最下面有一个链接,单击这个链接就可以在浏览器上查看 API 文档了。     请参考下图,是从浏览器中打开的 API 文档。     如何查看源代码 要查看源代码就非常简单了,你可以按住 Ctrl 键,然后按鼠标右键就可以查看类的源代码了。 如果你的源代码已经下载了那么 IntelliJ IDEA 是不会在编辑器的最上面提示你重新下载的。 如果你觉得源代码过期了或者需要更新,你可以主动到你本地 Maven 的仓库中删除老的就可以了。 https://www.ossez.com/t/intellij-idea-maven/586

2020年10月15日 0Comments 811Browse 0Like Read more
Computer Science

Spring 的 WebSecurityConfigurerAdapter 过滤器

你需要一个 WebSecurityConfigurerAdapter 来对用户提供安全的校验,确保用户能够访问必要的资源。 一个基于 Spring Boot 的应用程序将会帮你完成安全的校验(通过在 HTTP 的基础授权上添加自己的 WebSecurityConfigurerAdapter)。 这个将会添加 过滤器链表的 Order = 0(这个是默认配置),同时将会保护所有的资源,除非你能够提供正确的配置。 注解 @EnableResourceServer 将会做同样的事情,但是过滤器链表的顺序默认是 Order = 3。 因此可以知道 WebSecurityConfigurerAdapter 和 ResourceServerConfigurerAdapter 都是Spring 使用的过滤器,用来对访问进行过滤的。 但是过滤的顺序是多少呢? WebSecurityConfigurerAdapter 的 @Order(100)     如果我们想让WebSecurityConfigurerAdapter比ResourceServerConfigurerAdapter优先级高的话,只需要让前者的@Order值比后者的@Order值更低就行了。 @EnableResourceServer 的注解的 Order 是 3     在spring 的体系里Order值越小优先级越高,所以ResourceServerConfigurerAdapter优先级比另外一个更高,他会优先处理,而WebSecurityConfigurerAdapter会失效。 所以,在不同在上面 2 个定义的过滤器上面,如果你加了注解,会影响过滤器的调用顺序。     比如说这个注解,因为添加到代码中了,所以这个过滤器会被先调用。 https://www.ossez.com/t/spring-websecurityconfigureradapter/585

2020年10月15日 0Comments 992Browse 0Like Read more
Computer Science

Java NIO Path 接口

Java 路径接口是 Java NIO 2 更新的一部分,Java NIO 在 Java 6 和 Java 7 中接收 Java 路径接口。 Java路径接口已添加到Java 7中的Java NIO。路径接口位于 java.nio.file 包中,所以Java Path接口的完全包名是 java.nio.file.Path。 java.io.File => java.nio.file.Path 可以考察下面的代码来对 Path 进行测试。 @Test public void getPathfromFile() { // Convert File to Path File file = new File("/home/cwikius/test/file.txt"); Path path = file.toPath(); assertNotNull(path); }     将 Path 转换为 File 请考察下面的代码,可以将 path 转换为文件。 @Test public void getPathToFile() { // Convert Path to File Path path = Paths.get("/home/cwikius/test/file.txt"); File file = path.toFile(); assertNotNull(file); } https://www.ossez.com/t/java-nio-path/584

2020年10月14日 0Comments 811Browse 0Like Read more
Computer Science

Joda-Time – 可用的时区列表

在我们对 Joda 日期对象进行转换的时候,我们需要将 joda 设置时区,这样才能针对不同的时区输出正确的日期格式。 时区的设置是在: logger.debug("dateTime for EST is - [{}]", dateTime.toDateTime(DateTimeZone.forID("America/New_York"))); 中的方法 DateTimeZone.forID 方法中进行设置的。 这个方法使用的参数是字符串,因此你需要定义你需要的字符串。 时区字符串 时区字符串从哪里来呢? 请参考下面的链接:https://www.joda.org/joda-time/timezones.html 可以参考的字符串可以从上面的链接中找到。 你也可以参考下面的表格,找到你需要设置的时区。   Standard Offset Canonical ID Aliases -12:00 Etc/GMT+12 -11:00 Etc/GMT+11 -11:00 Pacific/Midway -11:00 Pacific/Niue -11:00 Pacific/Pago_Pago Pacific/Samoa, US/Samoa -10:00 America/Adak America/Atka, US/Aleutian -10:00 Etc/GMT+10 -10:00 HST -10:00 Pacific/Honolulu Pacific/Johnston, US/Hawaii -10:00 Pacific/Rarotonga -10:00 Pacific/Tahiti -09:30 Pacific/Marquesas -09:00 America/Anchorage US/Alaska -09:00 America/Juneau -09:00 America/Metlakatla -09:00 America/Nome -09:00 America/Sitka -09:00 America/Yakutat -09:00 Etc/GMT+9 -09:00 Pacific/Gambier -08:00 America/Dawson -08:00 America/Los_Angeles US/Pacific, US/Pacific-New -08:00 America/Tijuana America/Ensenada, America/Santa_Isabel, Mexico/BajaNorte -08:00 America/Vancouver Canada/Pacific -08:00 America/Whitehorse Canada/Yukon -08:00 Etc/GMT+8 -08:00 PST8PDT -08:00 Pacific/Pitcairn -07:00 America/Boise -07:00 America/Cambridge_Bay -07:00 America/Chihuahua -07:00 America/Creston -07:00 America/Dawson_Creek -07:00 America/Denver America/Shiprock, Navajo, US/Mountain -07:00 America/Edmonton Canada/Mountain -07:00 America/Fort_Nelson -07:00 America/Hermosillo -07:00 America/Inuvik -07:00 America/Mazatlan Mexico/BajaSur -07:00 America/Ojinaga -07:00 America/Phoenix US/Arizona -07:00 America/Yellowknife -07:00 Etc/GMT+7 -07:00 MST -07:00 MST7MDT -06:00 America/Bahia_Banderas -06:00 America/Belize -06:00 America/Chicago US/Central -06:00 America/Costa_Rica -06:00 America/El_Salvador -06:00 America/Guatemala -06:00 America/Indiana/Knox America/Knox_IN, US/Indiana-Starke -06:00 America/Indiana/Tell_City -06:00 America/Managua -06:00 America/Matamoros -06:00 America/Menominee -06:00 America/Merida -06:00 America/Mexico_City Mexico/General -06:00 America/Monterrey -06:00 America/North_Dakota/Beulah -06:00 America/North_Dakota/Center -06:00 America/North_Dakota/New_Salem -06:00 America/Rainy_River -06:00 America/Rankin_Inlet -06:00 America/Regina Canada/Saskatchewan -06:00 America/Resolute -06:00 America/Swift_Current -06:00 America/Tegucigalpa -06:00 America/Winnipeg Canada/Central -06:00 CST6CDT -06:00 Etc/GMT+6 -06:00 Pacific/Easter Chile/EasterIsland -06:00 Pacific/Galapagos -05:00 America/Atikokan America/Coral_Harbour -05:00 America/Bogota -05:00 America/Cancun -05:00 America/Cayman -05:00 America/Detroit US/Michigan -05:00 America/Eirunepe -05:00 America/Grand_Turk -05:00 America/Guayaquil -05:00 America/Havana Cuba -05:00 America/Indiana/Indianapolis America/Fort_Wayne, America/Indianapolis, US/East-Indiana -05:00 America/Indiana/Marengo -05:00 America/Indiana/Petersburg -05:00 America/Indiana/Vevay -05:00 America/Indiana/Vincennes -05:00 America/Indiana/Winamac -05:00 America/Iqaluit -05:00 America/Jamaica Jamaica -05:00 America/Kentucky/Louisville America/Louisville -05:00 America/Kentucky/Monticello -05:00 America/Lima -05:00 America/Nassau -05:00 America/New_York US/Eastern -05:00 America/Nipigon -05:00 America/Panama -05:00 America/Pangnirtung…

2020年10月13日 0Comments 524Browse 0Like Read more
Computer Science

JWT 如何解码和获得令牌失效的日期

如果你有一个 JWT 的字符串。 你在使用 JWT 的时候可能希望了解 JWT 这个令牌过期的时间。你可以对 JWT进行解码,解码的网站是 JWT 的官网 。 访问上面的网站,然后将你的 JWT 字符串拷贝到需要解码的字符串上,然后对字符串进行解码。     在解码的对象后,你会看到 exp。 上面的 exp 就是JWT 过期的日期。 JWT 的 exp 是一个数字的组合,这是因为这个字符串使用的是 Unix 的时间。 1970年, Unix正式诞生,在第一版《Unix Programmer’s Manual》中把“1971年11月3日”定义为“自1970年1月1日0時0分0秒以来以1/60秒为单位的时间”。此后,这个定义由于可定义的时间范围,时区,闰秒等问题被重新定义。 可以使用下面的方法,将 Unix 时间戳,转换为可以识别的日期对象。 /** * Format Unix Time UTC TimeZone to EST Time * * @throws Exception */ @Test public void unixTimeStampTest() throws Exception { DateTime dateTime = new DateTime(1602516354 * 1000L, DateTimeZone.UTC); logger.debug("dateTime for EST is - [{}]", dateTime.toDateTime(DateTimeZone.forID("America/New_York"))); } 运行上面的代码,将会输出为: 2020-10-12 16:06:31.858 DEBUG --- [ main] com.insight.sco.service.test.UtilTest : dateTime for EST is - [2020-10-12T11:25:54.000-04:00] 上面的时间是将时间转换为美国东部时间。   https://www.ossez.com/t/jwt/580

2020年10月13日 0Comments 964Browse 0Like Read more
Computer Science

Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么

我们都知道 JUnit 是用于进行单元测试的。但是 Junit 5 和 Junit 4 的区别比较大。 很多时候你可能会遇到 Junit 引擎配置错误导致测试无法进行。 junit-jupiter-api JUnit 5 Jupiter API 的测试,你需要使用这个 API 来写测试和进行扩展。 junit-jupiter-engine JUnit 5 的测试引擎,从 Junit 5 开始,Junit 使用 jupiter 来作为测试引擎。在运行时(runtime)的时候,你需要使用这个引擎来进行测试。 junit-vintage-engine 针对 Junit 5 以下的版本,包括 Junit 4 和 3,Junit 使用的是 vintage 测试引擎。 如果你的测试使用的是 Junit 4 的代码进行编写的话,那么你需要 Junit 4 的测试引擎。 总结 你需要 junit-jupiter-api 和 junit-jupiter-engine 来在 Junit 5 中书写和运行测试。 因此,你需要在你的 POM 中定义上面 2 个 Package。     针对老的 JUnit 4 的的项目,你需要将 junit-jupiter-engine 引擎替换为 junit-vintage-engine 引擎才能够让你的测试正式跑起来。 https://www.ossez.com/t/junit-jupiter-api-junit-jupiter-engine/579

2020年10月12日 0Comments 703Browse 0Like Read more
12345…7
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (511)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1