摘要: title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka log4j日志工作流程 log4j2对于log4j在性能上有着显著的提升,这点官方上已经有了明确的说明和测试,所以不多赘述。在为了更熟练的使用,还是有必要了解其内部的工作流程。这是官网log4j的一张类图 官 阅读全文
posted @ 2018-10-12 22:10 PointNet 阅读(7928) 评论(1) 推荐(0) 编辑
摘要: 1、背景 虽然log4j很强大,可以将日志输出到文件、DB、ES等。但是有时候确难免完全适合自己,此时我们就需要自定义Appender,使日志输出到指定的位置上。 本文,将通过两个例子说明自定义APPender,一个是将日志写入文件中,另一个是将日志发送到远程Thrift服务中。 本文代码详见:ht 阅读全文
posted @ 2018-10-12 22:07 PointNet 阅读(3573) 评论(0) 推荐(0) 编辑
摘要: 1、实现目标 不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件。如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日志打印到一个login.log文件中,login-年月日.log。 整体架构: 2、maven配置 阅读全文
posted @ 2018-09-07 10:42 PointNet 阅读(2741) 评论(0) 推荐(0) 编辑
摘要: 我的做法: !/bin/bashAvailable=`df -k | sed -n 2p | awk '{print $4}'`if [ $Available -eq 0 ];then `echo '' > /home/wwwlogs/bes-req.log`fi 参考资料: #!/bin/bash 阅读全文
posted @ 2018-03-08 20:46 PointNet 阅读(1198) 评论(0) 推荐(0) 编辑
摘要: spring中@profile与maven中的profile很相似,通过配置来改变参数。例如在开发环境与生产环境使用不同的参数,可以配置两套配置文件,通过@profile来激活需要的环境,但维护两套配置文件不如maven中维护一套配置文件,在pom中通过profile来修改配置文件的参数来的实惠。 阅读全文
posted @ 2017-10-13 11:56 PointNet 阅读(1330) 评论(0) 推荐(0) 编辑
摘要: ou can implement simple factory bean to do the conditional wiring. Such factory bean can contain complex conditioning logic: Maybe a bit better approa 阅读全文
posted @ 2017-10-13 10:50 PointNet 阅读(356) 评论(0) 推荐(0) 编辑
摘要: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位 阅读全文
posted @ 2017-10-11 10:40 PointNet 阅读(2391) 评论(0) 推荐(0) 编辑
摘要: Application 启动类: Dao层: 但是会提示错误:提示@Autowired 不能正常注入: 可正常编译,没法运行,gradle bootrun 时提示错误: caused by: org.springframework.beans.factory.BeanCreationExceptio 阅读全文
posted @ 2017-10-10 20:23 PointNet 阅读(68059) 评论(0) 推荐(1) 编辑
摘要: 偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性。 三个表的字段,除了主键ID 分别采用varchar,bigint 和自动增长bigint不同外,其 阅读全文
posted @ 2017-09-28 19:44 PointNet 阅读(3040) 评论(1) 推荐(0) 编辑
摘要: DOM4J 与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。 先来看看do 阅读全文
posted @ 2017-09-14 18:40 PointNet 阅读(1256) 评论(0) 推荐(0) 编辑
摘要: 单例多例需要搞明白这些问题: 1. 什么是单例多例; 2. 如何产生单例多例; 3. 为什么要用单例多例 4. 什么时候用单例,什么时候用多例; 1. 什么是单例、多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新 阅读全文
posted @ 2017-09-04 09:07 PointNet 阅读(24359) 评论(1) 推荐(0) 编辑
摘要: 当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例 prototype:原型模式,每次通 阅读全文
posted @ 2017-09-04 09:04 PointNet 阅读(45368) 评论(3) 推荐(9) 编辑
摘要: 1,Redis 丰富的数据结构(Data Structures) 字符串(String) Redis字符串能包含任意类型的数据 一个字符串类型的值最多能存储512M字节的内容 利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用 使用APPEND命令在字符串后添加内 阅读全文
posted @ 2017-08-27 22:05 PointNet 阅读(4998) 评论(0) 推荐(1) 编辑
摘要: 前言应用场景 事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性。但是分布式事务处理过程中, 某些场地比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证? 在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去 阅读全文
posted @ 2017-08-27 15:56 PointNet 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现 阅读全文
posted @ 2017-08-27 15:54 PointNet 阅读(419) 评论(0) 推荐(0) 编辑
摘要: SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用, 阅读全文
posted @ 2017-08-27 11:13 PointNet 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 一、概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管So 阅读全文
posted @ 2017-08-25 21:28 PointNet 阅读(300) 评论(0) 推荐(0) 编辑
摘要: Redis持久化功能 Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。 数据保存到硬盘的过程就称为“持久化”效果。 1. snap shotting快照持久化 该持久化默认开启,一次性把redis中全部的数 阅读全文
posted @ 2017-08-23 21:21 PointNet 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 一、概述 和传统关系型数据库一样,Redis 同样是支持事务的。Redis 的事务可以通过 MULTI/EXEC/DISCARD/WATCH 等命令来实现。 二、事务的 ACID 特性 1). 原子性:事务中的命令要么全部执行,要么都不执行。 Redis 的事务和传统的关系型数据库事务最大的区别在于 阅读全文
posted @ 2017-08-23 20:32 PointNet 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容 阅读全文
posted @ 2017-08-22 19:43 PointNet 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 我们在使用consumer消费数据时,有些情况下我们需要对已经消费过的数据进行重新消费,这里介绍kafka中两种重新消费数据的方法。 1. 修改offset 我们在使用consumer消费的时候,每个topic会产生一个偏移量,这个偏移量保证我们消费的消息顺序且不重复。Offest是在zookeep 阅读全文
posted @ 2017-08-21 23:50 PointNet 阅读(7534) 评论(0) 推荐(0) 编辑
摘要: 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度 阅读全文
posted @ 2017-08-21 22:21 PointNet 阅读(481) 评论(0) 推荐(0) 编辑
摘要: MySql优化的一般步骤: 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 show session status like ‘Com%’:显示当前的连接的统计结果 show glo 阅读全文
posted @ 2017-08-21 20:54 PointNet 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa 阅读全文
posted @ 2017-08-19 15:56 PointNet 阅读(899) 评论(0) 推荐(0) 编辑
摘要: 很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order_id和product_id二个字段。一共有31条数据。符合下 阅读全文
posted @ 2017-08-19 12:46 PointNet 阅读(13472) 评论(5) 推荐(1) 编辑
摘要: 第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (i 阅读全文
posted @ 2017-08-19 09:02 PointNet 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,(PS:以前忽略了)。 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的 阅读全文
posted @ 2017-07-10 13:20 PointNet 阅读(1652) 评论(0) 推荐(0) 编辑
摘要: public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), CA("CA"), CO("CO"), CT("CT"), DC("DC"), DE("DE"), FL("FL"), GA("GA"), HI("HI"), IA("IA"), 阅读全文
posted @ 2017-06-12 14:04 PointNet 阅读(959) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该 阅读全文
posted @ 2017-05-08 19:16 PointNet 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 一、zookeeper 1、实现原理: 基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节 阅读全文
posted @ 2017-05-05 19:02 PointNet 阅读(716) 评论(0) 推荐(0) 编辑