Program

30 篇文章

Victory

延时任务一锅端

延时任务的需求是非常常见的,在我们的开发生涯中,我相信大部分研发人员是会有接触到这一块的。其中,我们在现实生活中比较常接触到的场景有 - 下单后未付款通知 - 订单延迟生成短信通知 - 红包未领取退款通知 - 用户行程将近通知 - 微信公众号的文章延时发布推送等 - 存储 主要负责存储任务的相关信息...

Victory

在 Maven 中央仓库发布自己的开源项目

写代码久了,一直在用别人提供的第三方包依赖,有时是不是也会想着有一天别人能够使用自己的开源出去的项目。让我们从最简单的开始,提取一个小项目,将其开源并发布到中央仓库让大伙可以直接通过配置 Maven 依赖来使用。 我相信应该是有不少人都有过开源并发布自己项目的想法的,但是其中最大的一个问题可能就是不...

Victory

Java 多线程

本次本章从线程的基础讲到线程的相关实现类,每个章节算是一小块知识点,在每个知识点中,穿插地讲对应的知识原理,以及对应的常见面试题及其解答。多数面试题是前后环环相扣的。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个...

Victory

[译]深入理解 Node.js Worker Threads

最近工作中又有可能需要写 Node.js 应用了,距离上次写 Node.js 应用也有好些年了,所以就开始 重新熟悉下 Node.js 了。刚好最近又在学 Go,其最大的特点就是简单、轻量级的并发模型。非常容易 用它编写一个能够充分利用硬件资源的高性能应用。于是不免想起以前学习 Node.js 时会...

Victory

压测对比: Spring WebFlux VS. Spring MVC

最近工作有个小项目,其场景主要是封装内部的接口请求,然后做个转换之后,就请求外部请求,之后再 将外部响应转换成内部的统一格式,其实有点类似一个简单网关的应用,虽然也有一些业务逻辑在里面, 但是主要场景还是请求的转发处理,是一个 IO 密集型的应用,而且外部请求的延迟相对比较大而且不可控。 我想,这不...

Victory

Kafka 概览

Apache Kakfa 是一个分布式流处理平台,既可以当做普通的消息中间件用于消息发布订阅,也可以存储并处理流式数据,其分布式设计使得其有较好的容错性,水平拓展性等。 通常可以用于当做消息订阅发布用于业务系统中,或者用于大数据方向,接受存储大量的流式数据并和对应的大数据处理框架结合使用,eg. K...

Victory

RocketMQ 概览

Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件。相比于 Kafka,其拥有更好的实时性和消息可靠性。更适用于和 Money 相关的系统。它支持如下特性: - 订阅/发布模式的消息 > 支持消费组模式的消费,即一个消费组集群内只有一个实例会收到那一条消息。 - 延时...

Victory

记一次 Gradle Build 问题分析

一次项目更新后,发现项目无法正常 build 了,出现如下报错: 1. Review 代码更新,寻找可疑点 这一步 review 没有发现什么特殊的改动,只是更改了几个 proto 文件的定义。但是回退代码后却又能正常 build,所以说明构建失败的确是此次更新引入的问题。 2. 根据报错信息寻找问...

Victory

OTA 项目知识

OTA Online Travel Agency:在线旅游(OTA,全称为Online Travel Agency),是旅游电子商务行业的专业词语。 指“旅游消费者通过网络向旅游服务提供商预定旅游产品或服务,并通过网上支付或者线下付费,即各旅游主体可以通过网络进行产品营销或产品销售”。 - LC...

Victory

Drone 初探

Drone 是一个基于 Docker 的 CI/CD 工具,其所有编译、测试的流程都在 Docker 容器中进行。 其主要核心应该就是 configuration as a code + docker 了。每个项目下都需要定义一个 yml 配置文件,默认为 .drone.yml , 在该配置文件中可...

Victory

Flink 入门教程

大数据是近些年才出现的吗,人们是近些年才发现大数据的利用价值的吗?其实不然,早在几十年前,数学分析就已经涉猎金融行业了,人们依托于金融和数学知识来建立数学模型,利用金融市场所产的数据来预测金融市场产品收益同风险波动的关系。 到如今,互联网也发展了好些年了,越来越多的数据产生(用户浏览数据、搜索记录、...

Victory

项目复盘思考

对自己所参与过的事物做个复盘是个好习惯,能让自己对事物有个更深的了解。比如说,读了一本书,那么这个时候你需要回去思考:这本书讲了些啥,对你有何影响;又或者,你参与了一个活动,你完了后,你也可以对其进行复盘,思考下这个活动的意义,这个活动是让你增加见识了还是让你放松心情了等;再或者,你参与了一个项目,...

Victory

中国灾害预警爬取解析

有获取灾害信息提醒的需求,但是发现并没有开发的API 。已有的API都需要付钱。 天气预报API,可以看知乎的这边文章。网上的天气 API 哪一个更加可靠? 里面的普通的天气预报部分免费,但是灾害预警的API都是需要收费的。于是自己去摸索了。 最后通过发F12发现了中国天气网中可用的请求: http...

Victory

定位CPU异常抖动---tomcat热部署的坑

**WEB服务器: apache-tomcat-8.0.33** **JDK: jdk1.8.0_66** **操作系统: Linux SHB-L0064049 2.6.32-642.6.2.el6.x86_6 ** 运维反馈CPU抖动异常,如下。 !CPU状态 CPU时不时的会从0%抖动到50%,...

Victory

请求响应慢问题排查

简要说明下,系统是一个微信第第三方平台,用于托管微信公众号和小程序的。 在一个普普通通的晚上,19 点开始有公众号管理员向我们反馈,托管在我们平台的公众号一直提示 "**该公众号提供的服务出现异常,请稍后再试**"。 自己去对应的公众号验证,发送消息,确确实实提示"**该公众号提供的服务出现异常,请...

Victory

项目重构感悟

需要提前做好新旧系统的**切换方案的规划** - **要高度重视对数据的重构**,对数据的调整和兼容是重中之重 - 重构是为了**解决实际的项目问题**,而不只是作为程序员的一个代码洁癖。所以,需要对新系统**有可以量化的指标**(eg. 性能提升5个点、开发工作量减少30% 等) - 技术选型...

Victory

Jasperreports OOM问题处理

项目使用Jasperreports来转换导出PDF,不过在转换过程中有时会出现OOM的异常。将直接导致线上系统不可使用。主要导致OOM的问题有如下两种: 1. jasper模板文件设计不合理导致Jasperreports进入死循环 2. 需要转换的文件确实很大,超过了系统所支持的内存范围 此前就有遇...

Victory

使用checkstyle校验代码

目前手上接管了一个旧项目,在调整的过程中发现其编码规范非常的多样化。其实就是没有规范了。代码中的命名、注释、换行等风格都有多种,差不多每个曾经修改过代码的程序员都留来过自己的风格。代码风格质量良莠不齐,这导致新员工在阅读代码时需要花更多的时间,也更加痛苦。所以考虑使用 checkstyle 来校验统...

Victory

SpringBoot 整合Mybatis/Druid/Quartz

由于项目中定时任务逐渐增多,对系统的压力也慢慢增加。故打算将系统中的定时任务抽离出来。初步决定使用SpringBoot+mybatis+quartz的整合方式进行快速开发。 整个整合会包含如下任务: 1. 整合Mybatis(包括通用Mapper和分页插件) 2. 整合Quartz实现动态定时任务管...

Victory

mysql 5.7 group by 1055

最近遇到的一个问题,有个项目使用的mysql升级到5.7后,发现项目中有些sql语句执行会报错。 报错类似如下: 于是便查阅资料了。随后发现,原来mysql5.7.5后,ONLY_FULL_GROUP_BY 默认为真,那么此时select中的字段必须出现在group by中。官方的说明文档如下: -...

Victory

线上程序CPU过高问题排查

工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统。最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题。 最后发现是JasperReport的一个问题。有个JasperReport的转换任务内存占用特别高,当新对象需要分配内存时就会内存不够...

Victory

docker初识:运行mysql实例

CentOS 7.3 64bit 1. 移除旧版本Docker > yum remove docker docker-common docker-selinux docker-engine 2. 设置Docker仓库 2.1 安装所需要的包 > yum install -y yum-utils...

Victory

Feign基础教程

Feign使得 客户端编写更方便。 灵感来源于Retrofit、JAXRS-2.0和WebSocket。 最初是为了降低统一绑定Denominator 到 的复杂度,不区分是否支持 。 Maven依赖: --- 你可以使用 和 这些来写一个 或 服务的java客服端。你也可以直接使用 来实现。但是...

Victory

HashMap源码解析

其实之前也有看过HashMap的源码,觉得自己对其中的实现原理什么的都还算是比较了解了。其实当初看的时候就没有看的多仔细,只是应付面试的问题罢了。 这不,最近有人提出个问题自救就没法回答了。 > 问: 我们知道,初始化 的时候,可以使用默认的构造函数,也可以使用一个带 参数的构造函数用于构造一个已知...

Victory

JAVA并发编程: CAS和AQS

说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了()。 --- > CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置...

Victory

Lock 和 synchronized

Java多线程编程中,保证线程安全通常会使用到和。那么合适该使用,什么时候该使用呢。这个就需要我们对和有个清晰的了解。 --- **** 是JAVA提供的强制原子性的内置锁机制。一个有两部分:锁对象的引用 ( 方法的锁,就是该方法所在对象本身),以及这个锁保护的代码块。每个Java对象都可以作为一个...

Victory

利用 Github Pages 和 Hexo 搭建个人博客

Github Pages 是 Github 推出的一个福利。可以在上面构建个人页面。Hexo 就是一个快速、简洁且高效的博客框架(官网上是这么说的,hhh),并且支持一键部署到github。可以用它来构建自己的个人博客,当hexo遇到Github pages时,我们就不需要自...

Victory

MySql 5.7.18免安装版安装使用

由于公司对电脑安全做了较多的限制。自己无法使用MySql的msi文件来安装Mysql。于是下了个mysql的zip压缩包来使用。 Mysql下载地址,我下的是版本为mysql-5.7.18-winx64.zip 下载后解压到任意目录,进入到解压后的mysql-5.7.18-winx64。 按照以往的...

Victory

Structs2 Reponse rediret 使用https

**Structs2 action中的redirect只支持Http**,当应用部署在Https环境下时。会报错: > Mixed Content: The page at 'https://managertest.efun.com/userlogin.mainWindow.shtml' was l...