- 博客(8)
- 收藏
- 关注
原创 程序员的提升空间
我见证过许多的程序员的成长,他们很多人在进入成熟期之后,技术上相对较高,一般项目开发起来比较自信,没有什么太大的困难,有的职位上也有所提升,成了项目经理、设计师,有的甚至是到了管理者的位置。又经过很长时间,这些程序员却在也没有什么变化和发展,工作稳定、情绪稳定,好像一切都在按部就班地进行着。有的程序员满足于现在的收入和职位,安于现状;有的程序员却在安于现状的同时,苦苦思索,却找不到自己的上升空间。
2017-12-06 12:00:15
342
原创 优秀日志实践准则,你做到了几点
程序员的日常离不开日志,日志就好比私人秘书,负责运行周期一切trace工作。优秀的日志实践能极大帮助地程序员快速定位问题,减少在线错误报警。本文将从日志书写时各方面来做阐述,依据日志推荐的日志等级,做相应优秀日志实践的推荐。一、重新认识日志1、日志级别概述ERRORERROR是最高级别错误,反映系统发生了非常严重的故障,无法自动恢复到正常态工作,需要人工介入处理。系统需要将错误相关痕迹以及错误细节记
2017-12-05 18:01:35
487
转载 使用Redis实现分布式锁及其优化
目前实现分布式锁的方式主要有数据库、Redis和Zookeeper三种,本文主要阐述利用Redis的相关命令来实现分布式锁。相关Redis命令SETNX如果当前中没有值,则将其设置为并返回1,否则返回0。EXPIRE将设置为秒后自动过期。GETSET将的值设置为,并返回其原来的旧值。如果原来没有旧值,则返回nil。EVAL与EVALS
2017-11-25 15:58:19
266
原创 Apache RocketMQ源码-Producer分析
正文首先我们看一下Producer的继承结构: MQAdmin主要包含一些管理性的接口,比如创建topic、查询某个特定消息以方便排查问题,ClientConfig主要定义了一些基本的配置,比如持久化consumer端消费offset的间隔时间(offset就是consumer端当前消费到的位置,offset的持久化机制也决定了是exactly once 还是根据时间戳等消费),然后再来看D...
2017-11-25 15:27:31
388
转载 详解JAVA线程中的那些事
引言说到Thread大家都很熟悉,我们平常写并发代码的时候都会接触到,那么我们来看看下面这段代码是如何初始化以及执行的呢?public class ThreadDemo { public static void main(String[] args) { new Thread().start(); }}初始化流程代码就一行很简单,那么这行简单的代码
2017-11-24 17:38:15
273
转载 Spring参数验证顺序问题
问题今天遇到一个小问题,在进行表单提交之后,直接进入了400错误页面,这个比较诡异,我所做的无非就是进行了简单的参数验证,提取BindingResult中的信息放到Model中方便前台显示,如下:12345678910@RequestMapping(value = "/user/publish",method = RequestMethod.POST
2017-11-23 15:30:05
1648
转载 MyBatis——动态SQL简介
动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,
2017-11-23 15:23:12
231
原创 如何使用Spring Boot与RabbitMQ结合实现延迟队列
背景 何为延迟队列? 顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。延迟队列能做什么?延迟队列多用于需要延迟工作的场景。最常见的是以下两种场景:延迟消费。比如: 用户生成订单之后,需要过一段时间校验订单的支付状态,如果订单仍未支付则需要及时地关闭订单。 用户注册成功之后,需要过一段时间比如一周后校验用户的使用情况...
2017-11-22 17:36:07
1441
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人