摘要: spring中@profile与maven中的profile很相似,通过配置来改变参数。例如在开发环境与生产环境使用不同的参数,可以配置两套配置文件,通过@profile来激活需要的环境,但维护两套配置文件不如maven中维护一套配置文件,在pom中通过profile来修改配置文件的参数来的实惠。 阅读全文
posted @ 2017-10-13 11:56 PointNet 阅读(8) 评论(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 阅读(2) 评论(0) 编辑
摘要: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位阅读全文
posted @ 2017-10-11 10:40 PointNet 阅读(8) 评论(0) 编辑
摘要: Application 启动类: Dao层: 但是会提示错误:提示@Autowired 不能正常注入: 可正常编译,没法运行,gradle bootrun 时提示错误: caused by: org.springframework.beans.factory.BeanCreationExceptio阅读全文
posted @ 2017-10-10 20:23 PointNet 阅读(70) 评论(0) 编辑
摘要: 偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性。 三个表的字段,除了主键ID 分别采用varchar,bigint 和自动增长bigint不同外,其阅读全文
posted @ 2017-09-28 19:44 PointNet 阅读(16) 评论(0) 编辑
摘要: DOM4J 与利用DOM、SAX、JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml。dom4j是一套开源的api。实际项目中,往往选择dom4j来作为解析xml的利器。 先来看看do阅读全文
posted @ 2017-09-14 18:40 PointNet 阅读(23) 评论(0) 编辑
摘要: 单例多例需要搞明白这些问题: 1. 什么是单例多例; 2. 如何产生单例多例; 3. 为什么要用单例多例 4. 什么时候用单例,什么时候用多例; 1. 什么是单例、多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新阅读全文
posted @ 2017-09-04 09:07 PointNet 阅读(65) 评论(0) 编辑
摘要: 当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例 prototype:原型模式,每次通阅读全文
posted @ 2017-09-04 09:04 PointNet 阅读(36) 评论(0) 编辑
摘要: 1,Redis 丰富的数据结构(Data Structures) 字符串(String) Redis字符串能包含任意类型的数据 一个字符串类型的值最多能存储512M字节的内容 利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用 使用APPEND命令在字符串后添加内阅读全文
posted @ 2017-08-27 22:05 PointNet 阅读(54) 评论(0) 编辑
摘要: 前言应用场景 事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性。但是分布式事务处理过程中, 某些场地比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证? 在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去阅读全文
posted @ 2017-08-27 15:56 PointNet 阅读(30) 评论(0) 编辑
摘要: 背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现阅读全文
posted @ 2017-08-27 15:54 PointNet 阅读(33) 评论(0) 编辑
摘要: SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,阅读全文
posted @ 2017-08-27 11:13 PointNet 阅读(29) 评论(0) 编辑
摘要: 一、概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管So阅读全文
posted @ 2017-08-25 21:28 PointNet 阅读(19) 评论(0) 编辑
摘要: Redis持久化功能 Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。 数据保存到硬盘的过程就称为“持久化”效果。 1. snap shotting快照持久化 该持久化默认开启,一次性把redis中全部的数阅读全文
posted @ 2017-08-23 21:21 PointNet 阅读(16) 评论(0) 编辑
摘要: 一、概述 和传统关系型数据库一样,Redis 同样是支持事务的。Redis 的事务可以通过 MULTI/EXEC/DISCARD/WATCH 等命令来实现。 二、事务的 ACID 特性 1). 原子性:事务中的命令要么全部执行,要么都不执行。 Redis 的事务和传统的关系型数据库事务最大的区别在于阅读全文
posted @ 2017-08-23 20:32 PointNet 阅读(15) 评论(0) 编辑
摘要: 这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容阅读全文
posted @ 2017-08-22 19:43 PointNet 阅读(12) 评论(0) 编辑
摘要: 我们在使用consumer消费数据时,有些情况下我们需要对已经消费过的数据进行重新消费,这里介绍kafka中两种重新消费数据的方法。 1. 修改offset 我们在使用consumer消费的时候,每个topic会产生一个偏移量,这个偏移量保证我们消费的消息顺序且不重复。Offest是在zookeep阅读全文
posted @ 2017-08-21 23:50 PointNet 阅读(110) 评论(0) 编辑
摘要: 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度阅读全文
posted @ 2017-08-21 22:21 PointNet 阅读(19) 评论(0) 编辑
摘要: MySql优化的一般步骤: 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 show session status like ‘Com%’:显示当前的连接的统计结果 show glo阅读全文
posted @ 2017-08-21 20:54 PointNet 阅读(20) 评论(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 阅读(15) 评论(0) 编辑
摘要: 很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order_id和product_id二个字段。一共有31条数据。符合下阅读全文
posted @ 2017-08-19 12:46 PointNet 阅读(13) 评论(0) 编辑
摘要: 第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (i阅读全文
posted @ 2017-08-19 09:02 PointNet 阅读(13) 评论(0) 编辑
摘要: 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,(PS:以前忽略了)。 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的阅读全文
posted @ 2017-07-10 13:20 PointNet 阅读(32) 评论(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 阅读(45) 评论(0) 编辑
摘要: ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该阅读全文
posted @ 2017-05-08 19:16 PointNet 阅读(83) 评论(0) 编辑
摘要: 一、zookeeper 1、实现原理: 基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节阅读全文
posted @ 2017-05-05 19:02 PointNet 阅读(83) 评论(0) 编辑
摘要: 创建一个多列索引:CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first阅读全文
posted @ 2017-04-05 17:30 PointNet 阅读(581) 评论(0) 编辑
摘要: 首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什么区别:1、@Value("#{configProperti阅读全文
posted @ 2017-03-30 18:57 PointNet 阅读(390) 评论(0) 编辑
摘要: 下面是自定义泛型方法的练习: 总结: 编译起判断泛型方法的实际类型参数的过程称为类型推断,类型推断是相对于知觉推断的,其实现方法是一个非常复杂的过程。 根据调用泛型方法时实际传递的参数类型或返回值的类型来推断,具体的规则如下: 当某个类型变量只在整个参数列表中所有参数和返回值中的一处被应用了,那么根阅读全文
posted @ 2017-03-30 10:32 PointNet 阅读(914) 评论(0) 编辑
摘要: JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功阅读全文
posted @ 2017-03-20 11:20 PointNet 阅读(86) 评论(0) 编辑