2020

混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心。 大规模分布式软件系统的发展正在改变软件工程。作为一个行业,我们很快采用了提高开发灵活性和部署速度的实践。紧随着这些优点的一个迫切问题是:我们对投入生产的复杂系统有多少信心? 即使分布式系统中的所有单个服务都正常运行, 这些服务之间的交互也会导致不可预知的结果。 这些不可预知的结果, 由影响生产环境的罕见且破坏性的事件复合而成,令这些分布式系统存在内在的混沌。 我们需要在异常行为出现之前,在整个系统内找出这些弱点。这些弱点包括以下形式: 当服务不可用时的不正确回滚设置; 不当的超时设置导致的重试风暴; 由于下游依赖的流量过载导致的服务中断; 单点故障时的级联失败等。 我们必须主动的发现这些重要的弱点,在这些弱点通过生产环境暴露给我们的用户之前。我们需要一种方法来管理这些系统固有的混沌...

昨天分享了如何通过参与JetBrains的解密任务来获取正版全家桶的兑换码。今天 JetBrains 一早继续在Twitter推出第二波任务: 下面,我们就继续来一起参与一下,为我们的正版JetBrains全家桶续个命! 线索一:Twitter第一条线索还是比较容易的,通过观察不难发现,Twitter上推出字符串中的单词是倒置的! 所以,我们写个小程序来处理一下: @Testpublic void jetbrains() { String str = ".spleh A+lrtC/dmC .thgis fo tuo si ti semitemos ,etihw si txet nehw sa drah kooL .tseretni wohs dluohs uoy ecalp a si ,dessecorp si xat hctuD erehw esac ehT .s...

自今年1月份以Jetbrain公司严厉打击旗下开发工具产品(如:IntelliJ IDEA、WebStorm、PyCharm等)的盗版破解以来。求新破解方式、分享新破解方法的帖子或信息经常可以在各技术社区或微信社群中看到。 在《大批 IDEA 激活码到期之后的乱象…》一文中,我们已经介绍过如何通过正常途径继续使用这些开发工具的三种方法: 学生免费:JetBrains的全线产品对在校学生全部免费开放。所以,你只要有专属于学校的邮箱,就可以注册账号并免费使用它们。 开源免费:如果您跟我一样,热爱开源之外,给各大开源社区、热门开源项目贡献代码。就可以以组织或项目的名义申请免费的许可证。关于这种方式,读者可以通过这个链接查看详情:https://www.jetbrains.com/community/opensource/ 社区版本:我们也可以选择功能稍弱的社区版本来使用。就如以前MyEcl...

上一篇我们介绍了如何在Spring Boot中整合我们国人最常用的MyBatis来实现对关系型数据库的访问。但是上一篇中使用了注解方式来实现,而对于很多MyBatis老用户还是习惯于XML的开发方式,所以这篇,我们就来看看如何使用XML的方式来进行开发。 动手试试本篇将不具体介绍整合MyBatis的基础内容,读者可以阅读上一篇:Spring Boot 2.x基础教程:使用MyBatis访问MySQL来了解该部分内容。 下面的实操部分将基于上一篇的例子之后进行,基础工程可通过文末仓库中的chapter3-5目录获取。 第一步:在应用主类中增加mapper的扫描包配置: @MapperScan("com.didispace.chapter36.mapper")@SpringBootApplicationpublic class Chapter36Application { pu...

这周很多公司都开始复工了,不出意外下周应该大部分都要开始上班了吧。今天TJ冒着被各公司老板追杀的风险,给大家推荐一个上班摸鱼神器:Thief-Book。 项目名称:Thief Book 项目地址:https://github.com/cteamx/Thief-Book 这是一款真正的最强摸鱼神器,可以更加隐秘性大胆的看小说,炒股。 隐蔽性:自定义透明背景,随意调整大小,完美融入各种软件界面 快捷性:三个快捷键,实现完美的摸鱼 跨平台:支持 Mac、Win、Linux 使用效果Mac 任务栏模式 任务栏过多会自动隐藏 小说演示 股票演示 Mac + Win 桌面模式 此版本可以随意拖拽,自定义大小,自定义背景颜色和文字颜色 Mac 版本,支持 TouchBar 翻页 和 老板键 小说演示 股票演示 Mac TouchBar 按键 Mac TouchBar 模式 ...

之前我们已经介绍了两种在Spring Boot中访问关系型数据库的方式: 使用spring-boot-starter-jdbc 使用spring-boot-starter-data-jpa 虽然Spring Data JPA在国外广泛流行,但是在国内还是MyBatis的天下。所以,今天这篇我们将具体说说如何在Spring Boot中整合MyBatis完成关系型数据库的增删改查操作。 整合MyBatis第一步:新建Spring Boot项目,在pom.xml中引入MyBatis的Starter以及MySQL Connector依赖,具体如下: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-sta...

上一节我们介绍了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础。接下来,我们介绍一下后端开发经常会遇到的一个场景:可视化图表。 通常,这类需求在客户端应用中不太会用到,但是在后端的各种统计分析模块会经常碰到。比如:通过折线图、柱状图、雷达图等可视化形式,更直观的展现和分析经营状况或系统运行情况。这里我们将引入的数据可视化组件库 ECharts来帮助我们完成这样的任务。 ECharts简介ECharts是百度开源的一个前端组件。它是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。 它提供了常规的折线图、柱状图、散点图、饼图、K线...

通过本系列教程的前几章内容(API开发、数据访问)。我们已经具备完成一个涵盖数据存储、提供HTTP接口的完整后端服务了。依托这些技能,我们已经可以配合前端开发人员,一起来完成一些前后端分离的Web项目,或是一些小程序、或者是App之类的应用开发。 对于Web项目来说,前后端分离模式是目前最为流行的,主要得益于前端框架的完善以及前后端分离方案的日渐成熟。这样的实现模式帮助Web类产品的开发团队更好的拆分任务,以及让开发人员更加聚焦在某一端的开发技术之上。所以,在本教程中,优先介绍了如何开发API,而不是开发Web页面。但是,传统模式的Web页面在一个项目中就可以管理,如果开发人员技能本身就可覆盖全栈,那直接采用传统模板引擎方式开发,也是个不错的选择。尤其对于一些老团队,对模板引擎非常熟悉,可以减少非常多的学习成本,直接上手Spring Boot来开发Web应用。 接下来,我们就来具体讲...

在数据访问这章的第一篇文章《Spring中使用JdbcTemplate访问数据库》 中,我们已经介绍了如何使用Spring Boot中最基本的jdbc模块来实现关系型数据库的数据读写操作。那么结合Web开发一章的内容,我们就可以利用JDBC模块与Web模块的功能,综合着使用来完成一个适用于很多简单应用场景的后端应用了。 然而当我们有一定的开发经验之后,不难发现,在实际开发过程中,对数据库的操作大多可以归结为:“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句几乎都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑。 为了解决这些大量枯燥的数据操作语句,诞生了非常多的优秀框架,比如:Hibernate。通过整合Hibernate,我们能够以操作Java实体的方式来完成对数据的操作,通过框架的帮助,对Java实体的变更最终将自动地映射到数据库表中。 在Hiberna...

如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉。那么对于Spring构建的Web应用在启动的时候,都会输出当前应用创建的HTTP接口列表。 比如下面的这段日志: 2020-02-11 15:32:39.293 INFO 48395 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2020-02-11 15:32:39.482 INFO 48395 --- [...

上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP。接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid。 Druid是由阿里巴巴数据库事业部出品的开源项目。它除了是一个高性能数据库连接池之外,更是一个自带监控的数据库连接池。虽然HikariCP已经很优秀,但是对于国内用户来说,可能对于Druid更为熟悉。所以,对于如何在Spring Boot中使用Druid是后端开发人员必须要掌握的基本技能。 配置Druid数据源这一节的实践我们将基于《Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库》一文的代码基础上进行。所以,读者可以从文末的代码仓库中,检出chapter3-1目录来进行下面的实践学习。 下面我们就来开始对Spring Boot项目配置Druid数据源: 第一步:在pom.xm...

通过上一节的学习,我们已经学会如何应用Spring中的JdbcTemplate来完成对MySQL的数据库读写操作。接下来通过本篇文章,重点说说在访问数据库过程中的一个重要概念:数据源(Data Source),以及Spring Boot中对数据源的创建与配置。 基本概念在开始说明Spring Boot中的数据源配置之前,我们先搞清楚关于数据访问的这些基本概念: 什么是JDBC? Java数据库连接(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。 JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口...

在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多的产品可以选择,其中不乏许多非常优秀的开源免费产品,比如:MySQL,Redis等。接下来,在第3章节,我们将继续学习在使用Spring Boot开发服务端程序的时候,如何实现对各流行数据存储产品的增删改查操作。 作为数据访问章节的第一篇,我们将从最为常用的关系型数据库开始。通过一个简单例子,学习在Spring Boot中最基本的数据访问工具:JdbcTemplate。 数据源配置在我们访问...

我就看看,不评论,你怎么看? 实时统计:http://csdn.didispace.com/

JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。今日,疑似JetBrains严查盗版破解用户,导致大量以破解方式获取使用权限的用户,无法继续使用。 各技术社区、论坛、社群等媒介都出现大量求破解码或破解方式的相关内容出现。 与此同时,围绕这些编辑器破解码与破解方式的利用就展开了。 借机引流借着这次大规模破解版实现的问题,大量对应的垂直类媒体渠道也开始借助给予最新破解码的方式来吸引关注。 灰产受挫还有一类用户,通常因为破解麻烦而去某宝或某鱼直接购买注册码的方式来使用,而通常这些方式给予的注册码也非正版渠道。因此在这一波打击中,也都全部被击毙。 虽然他们使用也是盗版,但是也算是一类付费用户,因此也就有了如下图的维权: 至于店主是否真的在服刑中,我们不得而知,也可能只是因为这次杀伤力太猛,回头维权的用...