Spring bean生命周期中的钩子

bean自身级生命周期接口

  • 配置文件中的init-method和destroy-method方法

Mehr lesen

ThreadPoolExecutor分析

前言

通常我们在java项目中使用线程时不会单独地去开一个线程,如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,于是java提供了ThreadPoolExecutor这个类来让我们可以快速创建一个线程池,有了线程池上述问题都可以得到解决。偶尔机会发现这个类的实现不是很复杂,但是却设计得很优雅,于是拿出来分析一下源码。

Mehr lesen

jackson的一个踩坑小记

公司的项目用到了rocketMQ,看到里面有段这样的代码,生产者生产消息

1
2
3
4
5
6
7
private static final ObjectMapper OM = new ObjectMapper();
...
Message message = new Message(this.topic, "create", uid.toString(), OM.writeValueAsBytes(uid));
message.setWaitStoreMsgOK(true);
SendResult sendResult = producer.send(message, new SelectMessageQueueByHash(), uid);
...

Mehr lesen

java集合总结

前言

在PHP中,集合是很简单的,就一个Array,既可以做数组,又可以做map,对比JAVA常用的List,Map,Set来说只有Set是在PHP中需要封装的,本文就Java中常用的几个集合类来做一个总结。

Mehr lesen

Spring学习笔记之bean的装配

前言

Spring是一个致力于降低Java开发复杂性的框架,其中最重要的部分就是依赖注入和切面编程。
本文主要讲解Spring的bean和它的装配即依赖注入的基本知识和用法。

Mehr lesen

高并发下原子操作与主从延迟下的锁的思考

几个典型场景

场景1

电商系统通常会有秒杀这种业务场景,例如:一件商品在0点开启秒杀,库存只有5件,某程序员这样来实现:

Mehr lesen

ZooKeeper入门笔记

初识

定义

ZooKeeper是一个开源的分布式协调服务,其设计目标是将原本复杂容易出错的分布式一致性服务封装,构成一个高效可靠简单易用的接口供用户使用。

Mehr lesen

如何正确杀死你的进程

说起杀死进程第一想到的绝对是kill这个命令,看一下man page的介绍

The kill utility sends a signal to the processes specified by the pid operand(s).

Mehr lesen

使用inotify和epoll实现tail命令

tail命令是最常用来看日志改变的工具,比如在执行某个任务时会往本地文件中打入日志,然后使用类似

1
tail -f file_path

Mehr lesen

redis存储分析

一、内存

1、几个关键的数据结构

1
2
3
4
5
struct redisServer {
...
redisDb *db;
...
}

Mehr lesen