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

作为一位计算机专业的大学生,大学四年毕业时怎样才算合格

学无止境,学海无涯。 这东西没有个头,今年出这个框架,明年出那个框架,永远没有个头。 光缓存部分的内容就能熬白少年头。好在很多东西都已经有人做了。你不需要过于操心这个。 主要的是能看得懂文档,API ,知道别人为什么这样做,实在不知道也没有关系,能够找到需要的东西和代码示例,自己调通也行。 对基础数据结构比较了解。 对存储结构比较了解。 对基础算法比较清楚,能搞明白树,B+,以及一些查找算法就更好了。 至少熟悉一个 IDE 工具,了解一些常用的快捷键。 如果要做软件领域,软件的一些思维方式,开发模式,代码管理方式,团队组织形式这些有个大致的印象。   如果你检查下觉得自己都还差不多了解了,恭喜你,可以顺利出去忽悠工作了。

2020年10月21日 0Comments 719Browse 0Like Read more
Computer Science

Python 学习一定用pycharm吗

工欲善其事,必先利其器。 pycharm 是收费工具,针对学生有些优惠。 pycharm 就是一个工具而已,如果你觉得拼写错误也无所谓,那么其实记事本也是可以的。但是每次编译的时候都会出现一堆错误,然后你得回头去找这个过程非常繁琐。 为什么不要一个工具解决所有问题呢?这个就是 IDE 的由来,可以说 pycharm 本身就是生产力工具。既然是工具每个人用得顺不顺手就看个人了和工具有关,但是还真没有那么大的关系。 现在 IDE 市场选择非常多,大浪淘沙下来也就许下那么几个了。需求不一样要求不一样。 比如说 Java 世界中,从最开始的 JBuilder > Eclipse > IDEA。其实每一次选择就是进步的过程,IDE 的功能越来越多,集成性越来越高。如果你是做 Web 全栈,或者后台调试 IEDA 确实是你非常好的帮手和生产力工具。 如果你就只做个前台,整个 IDEA,确实显得过重了。 pycharm 针对 Python 来说功能非常全,而且快捷键也比较通用。如果你打算用 JetBrains 的全栈工具的话,早点开始使用应该也不是坏事。 如果你就是轻量使用,不涉及到项目,不涉及到协同开发,不涉及到和其他同事交互,VS Code 能够满足你基本的需求,还是免费的。 结论就是离开使用场景谈工具就是耍流氓,什么工具都会满足你的大部分需求。如果要使用 pycharm ,多是公司使用的,许可证都是公司买的,不需要自己太担心许可证的事情。

2020年10月21日 0Comments 722Browse 0Like Read more
Computer Science

Spring Azure applicationinsights 运行时出现 tcnative 错误

启动运行的时候出现错误: 2020-10-20 12:01:21.628 DEBUG 69140 --- [ main] i.n.util.internal.NativeLibraryLoader : netty_tcnative_windows_x86_64 cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: C:\Users\yhu\AppData\Local\Temp java.lang.UnsatisfiedLinkError: no netty_tcnative_windows_x86_64 in java.library.path: [C:\Dkits\Java\OpenJDK\11.0.4\bin, C:\windows\Sun\Java\bin, C:\windows\system32, C:\windows, %JAVA_HOME%\bin, %MAVEN_HOME%\bin, %GRADLE_HOME%\bin, C:\Program Files (x86)\NetSarang\Xshell 6\, C:\windows\system32, C:\windows, C:\windows\System32\Wbem, C:\windows\System32\WindowsPowerShell\v1.0\, C:\windows\System32\OpenSSH\, C:\Program Files (x86)\Webex\Webex\Applications, C:\Program Files (x86)\Plantronics\Spokes3G\, C:\Program Files (x86)\Enterprise Vault\EVClient\x64\, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Intel\WiFi\bin\, C:\Program Files\Common Files\Intel\WirelessCommon\, C:\Program Files\PuTTY\, C:\Program Files (x86)\GnuWin32\bin\, C:\Program Files\nodejs\, C:\Program Files (x86)\Yarn\bin\, C:\Users\yhu\Dkits\protoc\bin\, C:\Program Files\Git\cmd, C:\Program Files\TortoiseGit\bin, C:\Program Files\TortoiseSVN\bin, C:\Program Files\Amazon\AWSCLIV2\, C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\, C:\Dkits\Java\OpenJDK\11.0.4\bin, C:\Users\yhu\Dkits\maven\bin, C:\Users\yhu\Dkits\scala\bin, C:\Dkits\gradle\bin, C:\Users\yhu\AppData\Local\Microsoft\WindowsApps, C:\Users\yhu\AppData\Local\atom\bin, C:\Users\yhu\AppData\Local\Programs\Microsoft VS Code\bin, C:\Users\yhu\AppData\Local\GitHubDesktop\bin, C:\Users\yhu\AppData\Roaming\npm, C:\Users\yhu\AppData\Local\Yarn\bin, C:\Users\yhu\Dkits\protoc\bin, .] at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2660) at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829) at java.base/java.lang.System.loadLibrary(System.java:1867) 错误原因和分析 这个错误的原因是包的冲突。     如果你的配置文件中有下面 2 个包。 这 2 个包是冲突的。 <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>spring-cloud-azure-appconfiguration-config</artifactId> <version>1.2.7</version> </dependency> 所以你需要将 spring-cloud-azure-appconfiguration-config 这个包删除后才可以启动。   https://www.ossez.com/t/spring-azure-applicationinsights-tcnative/595

2020年10月21日 0Comments 654Browse 0Like Read more
Computer Science

Discourse CentOS 8 全新安装手册

Discourse 在 CentOS 8 上的全新安装指南和过程,请参考本文档。 安装 Docker Discourse 是基于 Docker 运行的,所以你需要先安装 Docker。 针对 CentOS 8 ,你需要运行下面 2 个命令,将 Docker 的仓库注册上去。 $ sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 在完成上面的配置后运行下面的命令进行安装: sudo yum install docker-ce docker-ce-cli containerd.io 在中途可能要求你同意密钥,输入 Y 后同意即可。 运行下面的命令启动 Docker sudo systemctl start docker 运行下面的命令,确定你的 Docker 已经被正确安装和启动了。 sudo docker run hello-world     如果你能看到上面的输出,就能确定 Docker 已经安装成功了。 安装 Discourse 在安装 Discourse 之前,你一定需要一个已经注册成功的域名,并且已经注册成功的域名已经指向到了你需要安装的服务器地址。 如果你不配置好上面的配置,你是没有办法完成 Discourse 安装的。 设置 DNS 假设,我们现在需要安装的域名为 myustao.com,那么你需要修改你的 DNS 到你需要安装的服务器上。 最好的,你需要设置 主域名和 www 域名都指向同一个服务器地址。     设置邮件服务器 Discourse 和 mailgun 是好基友,也算是对 mailgun 的宣传吧。因此,你需要注册一个 mailguan 的账号。或者你有其他的 SMTP 邮件账号也是可以的。 如果你不配置你的邮件服务器,Discourse 在安装以后没有办法发送邮件到你的管理员账号,因此你就没有办法登录和重新激活。 可以按照 MailGun 上面的提示配置 DNS,在配置完成后可以再次检查 DNS,确保配置是成功的。     然后选择 SMTP 的配置部分,获得你的配置参数。 如果你不知道你的用户名密码是多少,你可以选择重置密码。     将上面的配置内容拷贝到文本文件中,备用。 你需要准备的参数是 smtp 地址 username password 从 GitHub 中克隆代码 运行下面的命令,从 GitHub 中将 Discourse 的代码克隆到你的服务器上。 sudo -s git clone https://github.com/discourse/discourse_docker.git /var/discourse cd /var/discourse 然后进入你已经克隆成功代码的文件夹。 当然,如果你的操作系统没有安装 git 的话,你需要先进行安装。 安装 git 的命令是: dnf install git 如果你能够看到下面的输出,则表示代码克隆成功了: [root@www ~]# git clone https://github.com/discourse/discourse_docker.git /var/discourse Cloning into '/var/discourse'... remote: Enumerating objects: 28, done. remote: Counting objects: 100% (28/28), done. remote: Compressing objects: 100% (22/22), done. remote: Total 4893 (delta 10), reused 12 (delta 5), pack-reused 4865 Receiving objects: 100% (4893/4893), 1.07 MiB | 9.57 MiB/s, done. Resolving deltas: 100% (3155/3155), done. [root@www ~]#     随后你需要进入你克隆的代码的文件夹。 运行安装配置 在进入克隆的 Discourse 文件夹下,执行下面的命令: ./discourse-setup 你可能还需要安装 netcat,这个用来在 ContOS 检查端口是否被占用。 如果你还没有安装的话,你可以使用下面的命令进行安装: dnf install nmap 系统将会返回下面的代码: [root@vps263579 discourse]# dnf install nmap Last metadata expiration check: 0:12:58 ago on Mon 19 Oct 2020 02:09:31 PM EDT. Dependencies resolved. ====================================================================================================================================================================================================================================== Package Architecture Version Repository Size ====================================================================================================================================================================================================================================== Installing: nmap x86_64 2:7.70-5.el8 AppStream 5.8 M Installing dependencies: nmap-ncat x86_64 2:7.70-5.el8 AppStream 237 k Transaction Summary ====================================================================================================================================================================================================================================== Install 2 Packages…

2020年10月20日 0Comments 719Browse 0Like Read more
Computer Science

JWT 使用 nimbus-jose-jwt 进行解码

在程序中获得 JWT 的Token 代码后,可以对 JWT 进行解码。 常用的可以使用 OAuth0 提供的解码包,你也可能会使用 nimbus-jose-jwt 包。 Maven 配置参数为: <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>8.19</version> </dependency> 首先你需要有准确可以解码的 JWT。 然后将这个 JWT 转换为 SignedJWT SignedJWT sjwt = SignedJWT.parse(token); 然后你可以使用下面的代码获得所有的 claims。nimbus-jose-jwt 返回的结果是 set。随后你就可以根据返回的 Set 去查询你需要的内容了。 请注意,有时候返回的内容可能是不同的数据格式,你可能需要转换。 比如说我们这里是 roles,nimbus-jose-jwt 返回的是 JSONArray。 如果你不能确定返回的 set 存储的是什么数据类型,你可以使用 IJ 的调试窗口看看,就知道怎么去定义数据类型了。     如这个例子,我们使用的 JWT 通过查看为下面的情况。     我们需要返回 roles 的结构,因此我们需要转换为 JSONArray 数据类型。 完整的测试代码为: @Test public void claimsValueTest() { String token = "eyJ0eXAiOiJKV1Qi"; // Change your Token try { SignedJWT sjwt = SignedJWT.parse(token); JWTClaimsSet claims = sjwt.getJWTClaimsSet(); JSONArray groups = (JSONArray) claims.getClaim("roles"); logger.debug("roles - {}", groups.toJSONString()); } catch (Exception e) { e.printStackTrace(); } } 上面的测试代码,将会有下面的输出内容: 17:43:24.431 [main] DEBUG com.ossez.jwt.JWTTest - roles - ["3343f157-c768-4b31-95ad-3f81487914d1","0e287 请参考 GitHub 中的内容:https://github.com/cwiki-us-demo/java-tutorials/blob/1881848ff1c90d7beaa52b662fbb6c9e5c81aa53/core-java-modules/core-java-io/src/test/java/com/ossez/jwt/JWTTest.java   https://www.ossez.com/t/jwt-nimbus-jose-jwt/593  

2020年10月18日 0Comments 755Browse 0Like Read more
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 908Browse 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 664Browse 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 666Browse 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 851Browse 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 823Browse 0Like Read more
1…178179180181182…304
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,368)
    • Confluence (663)
    • Gradle (12)
  • U.S. (524)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1