2020

软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。 我们的团队受到 TechLead 创建的高效程序员七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高效程序员的七项技能。 1. 学习如何阅读别人的代码 除了你,每个人写的代码都是垃圾?实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。 不管以前工程师的代码是多么混乱或者考虑不周,您仍然需要能够扩展它。毕竟,这是你的工作。同时,这个“以前的工程师”也可能是一年前的你。 这项技能在两个方面对你有益。第一,能够阅读他人的代码是一个了解什么是糟糕设计的好机会。当你浏览别人的代码时,你会知道什么是有效的,什么是无效的。更重要的是,您可以了解什么类型的代码...

作为一名开发者,您在开发完自己的应用之后,是否有去了解过它是如何部署交付出去的吗?它们都是通过什么工具来完成这些工作的呢?如果您从来都没有思考过这个问题,每天重复着类似的CRUD业务实现。那么对于“持续交付”的知识是你跳出舒适区,往更高方向发展所必须学习的内容。虽然持续交付本身与业务软件的实现没有多大关系,但是这对你理解技术架构与组织管理将会有着非常大的帮助。最近读了博文视点刚出版的一本新书:《Java持续交付》,个人强烈推荐想要继续提升的Java开发者,基础架构和运维开发来读一下。 为什么推荐?可能有的人会说,持续交付不是就是Jenkins、Gitlab CI这些么,官方文档撸一撸不就搞定了? 如果您是这么觉得的话,我会特别希望你可以读一下这本书。因为在持续交付过程中,这些工具还只是高质量持续交付过程中的冰山一角。在如今这个时代,从编程语言、部署平台、通讯方式等等方面,都是百花齐放...

Python 2.7 于 2020 年 1 月 1 日正式停止维护,这也意味着 Python 2 完全退休,现在是 Python 3 的时代。 Python 之父两年前就已宣布 Python 2.7 将于 2020 年 1 月 1 日终止支持,现在这一天已经到来。Python 社区开发和共享的软件存储中心 Python Package Index(PYPI)的大多数流行软件包现在都可以在 Python 2 和 3 上运行,并且每天都在增加,Python 2 的退休将会影响数百万系统的安全性。 由于 Python 2 与下一代 Python 3 的兼容性问题,关于 Python 2 的退休一直以来都是开发者与各公司关注的重点,因为在 2 代退休前,需要确保业务都尽可能迁移到 3,方便系统后续维护与跟进。目前一些知名项目都已经做好了相应的准备,例如 NumPy、Requests 和 T...

昨天在v站上看到这个关于YYYY-MM-dd的使用而出现Bug的帖子(v2ex.com/t/633650)非常有意思,所以拿过来分享一下。 在任何编程语言中,对于时间、数字等数据上,都存在很多类似这种平时一切OK,特定时间、特定环境出问题的情况。出现这种问题的根本原因还是我们对于各种数据结构的细节定义在开始的时候都不太注意,都是从每一次使用问题出现之后才开始有了“刻骨铭心”的认识。 不论昨天你是否也经历了这样的Bug,还是没有经历的读者,希望看到这篇文章之后,对这个细节可以上点心,避免日后因为这个细节而犯错。 下面就来一起看看这个问题的表现和原因吧: 问题表现 BUG 的原因YYYY是week-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。所以2019年12月31日那天在这种表述方式下就已经 2020 年了。 而当使...

2019

由于长期伏案,颈椎问题比较严重,所以平时都尽量减少低头看手机的时间,也就养成了用浏览器看各种读物的习惯,其中就包括公众号文章。最近不知道从哪一天开始,突然发现公众号文章的背景突然变成了黑色。 就像这样子: 开始一直以为是不是Chrome插件作祟,但是通过禁用所有插件的方式也没有能够得到恢复。同时,还尝试了一下用其他浏览器,如:Safari。依然有这样的现象发生。 不死心,还是想改回原来的样子,所以就用浏览器审查工具看了看这个页面到底加了啥东西。结果发现这个样式定义: 问题分析:prefers-color-scheme先来搞懂这个样式是用来做啥的。 prefers-color-scheme:CSS media feature 用于检测用户的系统主题是浅色或深色。 语法 no-preference:表示用户未指定操作系统主题。其作为 布尔值 时以false输出。 light:表示用...

Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解。 Spring Cloud Ilford开发团队称 Spring Cloud Ilford 将是下一个主要版本,这也将是自 Spring Cloud Finchley 发布以来的第一个主要版本。此版本将提供对 Spring Boot 2.x 和 Spring Framework 5.x 的支持。通过使 Ilford 成为主要版本,开发团队将能够删除进入维护模式(maintenance mode)的模块,并兑现今年早些时候宣布的简化新版本的承诺。此外,团队成员还会对一些 API 进行重构,这可能会引入重大变更。 Spring Cloud Ilford 将在 2020 年第四季度的某个时候随 Spri...

REST 是一种现代架构风格,它定义了一种设计 Web 服务的新方法。和之前的 HTTP 以及 SOA 不同,它不是一个协议(即:一套严格的规则),而是一些关于 Web 服务应该如何相互通信的一些建议和最佳实践。按照 REST 最佳实践开发的服务被称为 “RESTful Web 服务”。 安全性是 RESTful 服务的基石。启用它的方法之一是尽可能内置用户身份验证和授权机制。 在 RESTful 服务中实现用户身份验证和授权的方法有很多。我们今天要讲的主要方法(或标准)有: Basic 认证 OAuth 2.0 OAuth 2.0 + JWT 为了让我们的讨论更加具体,假设我们的后端程序有微服务,并且每个用户请求时,必须调用后端的几个服务来返回请求的数据。所以,我们将不仅从安全性问题方面,而且在它们产生的额外流量和服务器负载的背景下检查每个标准。下面开始吧… Basic 认证最...

1. 概述笔者从2014年开始接触SaaS(Software as a Service),即多租户(或多承租)软件应用平台;并一直从事相关领域的架构设计及研发工作。机缘巧合,在笔者本科毕业设计时完成了一个基于SaaS的高效财务管理平台的课题研究,从中收获颇多。最早接触SaaS时,国内相关资源匮乏,唯一有的参照资料是《互联网时代的软件革命:SaaS架构设计》(叶伟等著)一书。最后课题的实现是基于OSGI(Open Service Gateway Initiative)Java动态模块化系统规范来实现的。 时至今日,五年的时间过去了,软件开发的技术发生了巨大的改变,笔者所实现SaaS平台的技术栈也更新了好几波,真是印证了那就话:“山重水尽疑无路,柳暗花明又一村”。基于之前走过的许多弯路和踩过的坑,以及近段时间有许多网友问我如何使用Spring Boot实现多租户系统,决定写一篇文章聊一聊...

俄罗斯警方今天突击搜查了 Nginx 在莫斯科的办事处,扣押了公司的设备,并对企业员工进行拘留讯问。 据员工爆料,在这次突袭行动中,Nginx 被拘留的两名成员分别为 Nginx 的创始人& CTO 伊戈尔·赛索耶夫(Igor Sysoev),以及联合创始人马克西姆·科诺瓦洛夫(Maxim Konovalov)。 Nginx 是什么? Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。该软件由伊戈尔·赛索耶夫创建并于 2004 年首次公开发布。 它的特点是占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 2019 年 2 月,Nginx 第一次超越 Apache HTTPD,成...

Python 软件基金会近日发文宣布,收到来自 Mozilla Corporation 和 Chan Zuckerberg Initiative(CZI)的资金赞助,共计 407,000 美元。这笔款项将用于支持 pip (Python 软件包安装程序)2020 年的工作开展。“几乎整个 Python 软件项目的生态系统都依赖于 pip,该项目将帮助每个人更轻松地安装软件、诊断和修复问题以及维护基础架构。” Python 软件基金会已对此制定了详细的三阶段工作计划: 第一阶段将在 2020 年初进行,包含一些基础工作; 第二阶段称为分解工作(resolver work),计划于 2020 年 3 月至 6 月进行; 第三阶段定于 2020 年 6 月至 12 月进行,重点是维护和可持续性工作。 具体到每笔款项,也已经有了相应规划。Mozilla 开源支持奖提供的 207,000 ...

CKEditor 5 v16.0.0 已发布,此版本新增了两项主要且呼声甚高的功能。一是支持将代码块插入编辑器,二是增加受限编辑(Restricted editing)功能。使用者可通过受限编辑功能创建模板,并且只将编辑范围限制在所选区域。 富文本编辑器的新功能代码块(Code blocks) 开发者可将 IDE 中的代码片段粘贴至代码块编辑器中,也可以在代码块编辑器中直接编写代码。另外,代码块功能支持 Tab 缩进键(可配置),并在我们按下 Enter 键时自动保持缩进。 受限编辑功能(Restricted editing)受限编辑功能包含两种编辑模式: 标准编辑模式 —— 用户可以自由编辑内容并设定在限制模式下可编辑的区域。 受限编辑模式 —— 用户只能在标准模式下设定的区域内编辑内容。 这个功能意义何在?不妨试想这样一个工作流程:某个小组负责创建文档模板,而另一组拥有受限编...

今天因为发布swagger-spring-boot-starter做一个问题的修复,然后碰到了下面这个问题,记录一下解决过程,帮助后续碰到类似问题的童鞋: *gpg: WARNING: "--no-use-agent" is an obsolete option - it has no effectgpg: no default secret key: No secret keygpg: signing failed: No secret key 我们可以用gpg的命令来看一下当前密钥的情况: $ gpg --list-keysgpg: 正在检查信任度数据库gpg: marginals needed: 3 completes needed: 1 trust model: pgpgpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,...

距离Spring Boot 2.2.0的发布已经有一个半月左右时间,由于与之匹配的Spring Cloud版本一直没有Release,所以在这期间碰到不少读者咨询的问题都是由于Spring Boot和Spring Cloud版本不匹配导致。 很多时候,我们在学习或重建系统的时候都喜欢直接选用最高版本来开发,但是在使用Spring全家桶的时候,这样的选择不一定是最佳选择。主要还是由于Spring全家桶中各项目之间还存在一定的依赖关系。尤其是在大版本迭代期间,是我们尤其要注意的。比如,这次Spring Framework、Spring Boot、Spring Cloud的升级,是一次整体的大版本的升级,涵盖了Spring Framework 5.2、Spring Boot 2.2、Spring Cloud Hoxton。 由于Spring Boot 2.2基于Spring Framewo...

分享一个最近在整Flyway时候碰到的一个问题,以及对应的一些解决方案。如果您还不知道Flyway,建议可以先看一下这篇文章Spring Boot中使用Flyway来管理数据库版本 问题描述问题出现所描述的工程所用版本信息如下: Spring Boot:2.1.3 Flyway:5.2.4(非特别指定,随Spring Boot的素材版本管理) 具体错误:在Spring Boot中整和Flyway之后,本地执行ok,但在部署环境出现了这样的错误: java.sql.SQLSyntaxErrorException: SELECT command denied to user 'test'@'10.10.8.101' for table 'user_variables_by_thread' at com.mysql.cj.jd...

最近双十一云服务促销,先后推荐了腾讯云、京东云和阿里云三家的活动。每个服务商都给了非常大的优惠力度,但是一直都没有联合起来讨论一下,怎么买最划算。所以,下面我们来盘点一下几种不同定位机型各服务商推出的产品于价格! 入门款最低配置的优惠机型,适用于新手体验云服务的便捷性。由于配置较低,这类配置机器仅适合用作测试学习或部署一些个人小应用。不适用于有一定规模的应用部署。 阿里云:1核2G内存1M带宽,86元 / 1年 腾讯云:1核2G内存1M带宽,88元 / 1年 京东云:1核4G内存1M带宽,192元 / 1年 博主推荐:由于阿里云是20%性能基线,虽然最低,但是实用性并不高。所以对于入门款机型腾讯云与京东云更为推荐。 中端款这个级别的机型都没有对CPU做限制。在CPU核数、内存总量、带宽上都有一定的提升。这类机型就非常适合一些企业网站、小型应用的线上部署了。对于一些日常喜欢开发一些...