随笔分类 -  Java相关

java相关资料
摘要:title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka log4j日志工作流程 log4j2对于log4j在性能上有着显著的提升,这点官方上已经有了明确的说明和测试,所以不多赘述。在为了更熟练的使用,还是有必要了解其内部的工作流程。这是官网log4j的一张类图 官 阅读全文
posted @ 2018-10-12 22:10 PointNet 阅读(8027) 评论(1) 推荐(0) 编辑
摘要:1、背景 虽然log4j很强大,可以将日志输出到文件、DB、ES等。但是有时候确难免完全适合自己,此时我们就需要自定义Appender,使日志输出到指定的位置上。 本文,将通过两个例子说明自定义APPender,一个是将日志写入文件中,另一个是将日志发送到远程Thrift服务中。 本文代码详见:ht 阅读全文
posted @ 2018-10-12 22:07 PointNet 阅读(3698) 评论(0) 推荐(0) 编辑
摘要:1、实现目标 不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件。如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日志打印到一个login.log文件中,login-年月日.log。 整体架构: 2、maven配置 阅读全文
posted @ 2018-09-07 10:42 PointNet 阅读(2820) 评论(0) 推荐(0) 编辑
摘要:spring中@profile与maven中的profile很相似,通过配置来改变参数。例如在开发环境与生产环境使用不同的参数,可以配置两套配置文件,通过@profile来激活需要的环境,但维护两套配置文件不如maven中维护一套配置文件,在pom中通过profile来修改配置文件的参数来的实惠。 阅读全文
posted @ 2017-10-13 11:56 PointNet 阅读(1340) 评论(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 阅读(360) 评论(0) 推荐(0) 编辑
摘要:foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位 阅读全文
posted @ 2017-10-11 10:40 PointNet 阅读(2406) 评论(0) 推荐(0) 编辑
摘要:Application 启动类: Dao层: 但是会提示错误:提示@Autowired 不能正常注入: 可正常编译,没法运行,gradle bootrun 时提示错误: caused by: org.springframework.beans.factory.BeanCreationExceptio 阅读全文
posted @ 2017-10-10 20:23 PointNet 阅读(68213) 评论(0) 推荐(1) 编辑
摘要:DOM4J 与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。 先来看看do 阅读全文
posted @ 2017-09-14 18:40 PointNet 阅读(1263) 评论(0) 推荐(0) 编辑
摘要:单例多例需要搞明白这些问题: 1. 什么是单例多例; 2. 如何产生单例多例; 3. 为什么要用单例多例 4. 什么时候用单例,什么时候用多例; 1. 什么是单例、多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新 阅读全文
posted @ 2017-09-04 09:07 PointNet 阅读(24397) 评论(1) 推荐(0) 编辑
摘要:当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例 prototype:原型模式,每次通 阅读全文
posted @ 2017-09-04 09:04 PointNet 阅读(45800) 评论(3) 推荐(9) 编辑
摘要:Redis持久化功能 Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。 数据保存到硬盘的过程就称为“持久化”效果。 1. snap shotting快照持久化 该持久化默认开启,一次性把redis中全部的数 阅读全文
posted @ 2017-08-23 21:21 PointNet 阅读(391) 评论(0) 推荐(0) 编辑
摘要:这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容 阅读全文
posted @ 2017-08-22 19:43 PointNet 阅读(415) 评论(0) 推荐(0) 编辑
摘要:我们在使用consumer消费数据时,有些情况下我们需要对已经消费过的数据进行重新消费,这里介绍kafka中两种重新消费数据的方法。 1. 修改offset 我们在使用consumer消费的时候,每个topic会产生一个偏移量,这个偏移量保证我们消费的消息顺序且不重复。Offest是在zookeep 阅读全文
posted @ 2017-08-21 23:50 PointNet 阅读(7607) 评论(0) 推荐(0) 编辑
摘要:1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度 阅读全文
posted @ 2017-08-21 22:21 PointNet 阅读(483) 评论(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 阅读(958) 评论(0) 推荐(0) 编辑
摘要:第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (i 阅读全文
posted @ 2017-08-19 09:02 PointNet 阅读(300) 评论(0) 推荐(0) 编辑
摘要:最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,(PS:以前忽略了)。 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的 阅读全文
posted @ 2017-07-10 13:20 PointNet 阅读(1660) 评论(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 阅读(967) 评论(0) 推荐(0) 编辑
摘要:一、zookeeper 1、实现原理: 基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节 阅读全文
posted @ 2017-05-05 19:02 PointNet 阅读(722) 评论(0) 推荐(0) 编辑
摘要:首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什么区别:1、@Value("#{configProperti 阅读全文
posted @ 2017-03-30 18:57 PointNet 阅读(4532) 评论(0) 推荐(0) 编辑