- 博客(60)
- 资源 (6)
- 收藏
- 关注
原创 LinkedHashMap 原理及用于缓存数据时LRU算法
基于 LinkedHashMap特性,可以实现出热点缓存的处理,保证固定数量缓存,LRU 最近最少使用算法。原因是当 LinkedHashMap 设置了accessOrder=true 时 调用put 和get时都会把当前数据放到末尾处。这样可以方便的实现旧数据的剔除。重写LinkedHashMap中的removeEldestEntry方法具体可参考上述博客 转自:https://blog.csd...
2018-04-10 14:18:44
296
原创 mysql插入时使用 INSERT ... ON DUPLICATE KEY UPDATE
项目中用到ON DUPLICATE KEY UPDATE ,这样存在重复数据时可以执行更新语句具体用法不细说 主要有一点要注意 之前以为更新时会返回2,实际发现不一定的 执行update时 若更新的字段值没变,此时是不返回2的 。具体官方文档也给出描述了 重点红圈标出...
2018-04-04 16:44:23
356
原创 spring mybatis batch操作时关闭sqlsession
在利用mybatis 的sqlsession,批处理方式打开session,例如public void batchdelete(Collection dataList, final SingleProcessor processor) { final SqlSession session = getGenericSqlSessionFactory().openSession(
2017-10-23 20:17:32
2498
原创 spring cloud 学习笔记1-依赖包介绍
首先介绍下各个常用包依赖 后续补充:spring-cloud-starter-parent 具备spring-boot-starter-parent同样功能并附加Spring Cloud的依赖 spring-cloud-starter-config 默认的配置服务依赖,快速自动引入服务的方式,端口8888 spring-cloud-config-server/client 用户自定义配
2017-03-31 17:06:11
2556
原创 java 垃圾回收
本文基于Oracle hotspot jvm1.GC:查找不再使用的对象,以及释放这些对象所管理的内存2.算法:分代收集Young:主要是用来存放新生的对象。Old:主要存放应用程序中生命周期长的内存对象。Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen
2017-01-12 10:55:25
426
原创 spring 事务传播
在service中有两个方法 A和 B,A没有配置事务,B配事务,若在A中调用B方法时,事务将不起作用,原因是因为spring的事务是基于AOP的方式,是代理类加的增强,Proxy.B,若在内部调用时则仅是直接调用B,事务将失效。解决方法:1 将B移到另一个类中 2 A调用B时不直接调用B,而是调用AOP代理类 的B方法
2016-11-02 15:07:06
353
转载 AbstractQueuedSynchronizer 中的condition原理
转自:http://www.importnew.com/9281.html在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的 AbstractQueuedSynchronizer(同步
2016-06-15 14:34:17
465
原创 随笔面试题
1.联合索引 比如创建联合索引e1,e3触发联合索引是有条件的:1、使用联合索引的全部索引键,可触发索引的使用。例如:SELECT E.* FROM E WHERE E.e1=1 AND E.e3=22、使用联合索引的前缀部分索引键,如“key_part_1 常量”,可触发索引的使用。例如:SELECT E.* FROM E WHERE E.e1=13、使用部分
2016-03-29 19:42:38
430
转载 Fork/Join框架
转自并发编程网:http://ifeve.com/talk-concurrency-forkjoin/1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任
2016-03-11 16:38:29
442
原创 spring 获得ApplicationContext
在spring mvc项目中,可以通过实现ApplicationContextAware来获得ApplicationContext,public class ContextHolder implements ApplicationContextAware {private static ApplicationContext context;}实现接口中方法
2016-03-08 19:56:36
449
转载 java semaphore 信号量,流控程序
信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。 Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。import java.util.Date;import java.util.concurrent.ExecutorS
2016-02-02 11:10:35
990
原创 fastjson 版本性能
项目中用到fastjson,在将json串转换成Javabean的时候版本差异对性能影响较大。当json串大小比较小时差异不明显,但是项目中发现当json达到1M以上时1.1.15的版本性能很差,需要几十秒。而最新的版本1.2.7仅需要100ms左右。List boss3DatePriceMQBeans =JSON.parseArray(json, Boss3DatePrice
2016-01-05 18:53:00
3399
原创 mybatis intercept
了解了下mybatis的拦截器:package com.tuniu.pcs.core.intercept;import org.apache.ibatis.executor.Executor;import org.apache.ibatis.mapping.MappedStatement;import org.apache.ibatis.plugin.Interceptor;
2015-12-28 17:23:46
1105
原创 elasticsearch java client
elasticsearch java api 提供两个客户端类Node Client ,TransportClientNode node = nodeBuilder().clusterName("yourclustername").node();Client client = node.client();Node Client:1.本身也是集群节点之
2015-12-21 10:48:36
951
原创 elasticsearch java query API
下面介绍下几个常用的查询Api首先:TermQueryBuilder这个用于正常的检索,但是对于String (分析的)字段不能,例如name:joy may; 如果该字段是analyzed ,则需要使用另外一个MatchQueryBuilder("filedName",value)查询条件里嵌套的对象字段NestedQueryBuilder("path",Quer
2015-12-02 17:14:36
1916
转载 java volatile
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java
2015-12-01 13:37:59
472
原创 spring data elastic search初识
首先pom文件里依赖: org.springframework.data spring-data-elasticsearch 1.1.3.RELEASE 配置elastic 定义的文档结构:@Document(indexName = "product-index",type = "PRODU
2015-11-30 14:18:45
5515
1
原创 active mq 生产
destinationid="queueName" class="org.apache.activemq.command.ActiveMQQueue"> index="0" value="@{queue.name}" />Spring jms templateid="amqConnectionFactory" class="org.apache.activemq
2015-11-25 16:12:41
539
原创 active mq 消费
首先配置MQ connection id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> name="brokerURL" value="failover://@{amq.address}?randomize=false&jms.useAsyn
2015-11-23 14:39:07
516
原创 mongodb java
获取client 默认连接本地MongoClient mongoClient = new MongoClient();查看源码:this(defaultHost(), defaultPort());获取DBMongoDatabase db = mongoClient.getDatabase("pcs");连接collection 操作插入db.g
2015-11-04 23:40:55
357
原创 mongodb 性能测试
由于项目中考虑使用mongodb,遂作了一些调研机器配置:使用Java API 单线程循环操作:数据结构是json结构:{ "firstLevel": "hello world", "secondLevel": [ { "test1": }, { "test1": } ]}单条数据
2015-11-04 22:33:37
525
转载 Node.js学习笔记之三:事件_EventEmitter
events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。 可以通过require("events");来访问该模块。var EventEmitter=require('events').EventEmitter;var event=new EventEmitter();event.on('eve
2015-11-04 22:18:26
871
转载 Node.js学习笔记之三:事件
Node.js 事件循环Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,
2015-11-02 15:56:27
651
原创 Mongodb 学习一
基本数据库操作1.show dbs 查看数据库2.show collections 查看集合3.use dbName 切换到指定的库数据结构:{ "id":1, "name":"eddy", "age":26, "address": { "street":"road21", "province":"江苏"
2015-10-24 14:35:39
391
原创 Node.js学习笔记之二:回调
回调是一个异步等效的功能。在完成特定任务回调函数被调用。 Node大量使用了回调。Node的所有的API都支持回调这样的一种方式。//阻塞代码创建一个txt文件。input.txt Hello This is learning node js input.Just so so !!!!创建js文件代码如下var fs=require("fs");var data=f
2015-10-20 13:41:45
317
原创 Node.js学习笔记之一:入门
关于Node.js这里不再赘述,直接开始学习第一步下载安装node.js 此处安装window版本可以在命令行里查看版本>node -v编写第一个hello world编写js文件helloworld.js,代码如下: var http = require('http');http.createServer(function (req, res) {r
2015-10-16 13:20:42
414
原创 HashSet
HashSet源码:public class HashSetE> extends AbstractSetE> implements SetE>, Cloneable, java.io.Serializable{ static final long serialVersionUID = -5024744406713321676L; private tran
2015-10-14 13:09:06
345
原创 HashMap
HashMap的存储结构是这样:数组加链表的结构:查看hashmap源码可以看到(jdk1.8) 采用数组+链表+红黑树的结构首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后
2015-10-14 11:22:34
391
原创 Thread 和 Runable 区别
首先 Thread是类,Runable是接口。一是写一个类继承自Thread类,然后重写里面的run方法,用start方法启动线程二是写一个类实现Runnable接口,实现里面的run方法,用new Thread(Runnable target).start()方法来启动查看源码可以发现 Thread也是实现的Runablepublicclass Thread imple
2015-09-14 16:38:42
1560
转载 hadoop 数据倾斜
数据倾斜是数据中的常见情况。数据中不可避免地会出现离群值(outlier),并导致数据倾斜。这些离群值会显著地拖慢MapReduce的执行。常见的数据倾斜有以下几类:数据频率倾斜——某一个区域的数据量要远远大于其他区域。数据大小倾斜——部分记录的大小远远大于平均值。在map端和reduce端都有可能发生数据倾斜。在map端的数据倾斜会让多样化的数据集的处理效率更低。在reduce端
2015-09-14 13:56:10
1752
转载 jvm 学习
面试中被问道JVM,结果没能很好的回答清楚,这里再学习一遍,补充下。下面是找到的一篇博客,讲述的比较详细:一、java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开
2015-09-09 15:56:49
1299
1
原创 spring boot 入门
首先第一步创建一个maven工程springboot11.在pom文件里添加下面配置,依赖。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
2015-09-09 10:29:07
410
原创 Callable 和Future 接口使用
使用Callable和Future的组合,异步获取数据,Callable负责执行,Future获取执行结果1:Callable和Future ExecutorService executor = Executors.newCachedThreadPool();Future future=executor.submit(new Callable(){ @Override
2015-09-08 17:58:53
434
原创 mapreduce的二次排序 SecondarySort
在看Hadoop The definitive guide 时,关于二次排序,在设置好setGroupingComparatorClass 后一直不明白为什么reduce的入参就是要查询的年最高温度,代码里没有看到是怎么实现的:代码:// cc MaxTemperatureUsingSecondarySort Application to find the maxi
2015-09-08 15:27:50
492
转载 java Pattern和Matcher详解
看到了Pattern和Matcher的代码,找了篇博客学习一下结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。java正则表达式通过java.ut
2015-09-06 17:16:43
346
原创 spring mvc HandlerMethodReturnValueHandler
今天项目遇到一个问题:在controller里重定向,正常使用 return "redirect:/url".结果怎么都不可以,后来发现RequestMappingHandlerAdapter里的HandlerMethodReturnValueHandlerComposite 对象里的List returnValueHandlers 被通过配置封装去掉了ViewNameMethodReturnV
2015-05-16 15:05:58
1816
原创 Eclipse TestNG
1.安装TestNG 插件 在Eclipse Marketplace里安装插件,目前最新插件是6.9版本,要求的JDK是1.7,,否则会不能执行。这里指定JDK,2.编写测试代码: 此项目基于Spring 的maven工程: @ContextConfiguration(locations = { "classpath*:config/spring/sprin
2015-05-12 16:19:07
586
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人