- 博客(60)
- 资源 (6)
- 收藏
- 关注
原创 LinkedHashMap 原理及用于缓存数据时LRU算法
基于 LinkedHashMap特性,可以实现出热点缓存的处理,保证固定数量缓存,LRU 最近最少使用算法。原因是当 LinkedHashMap 设置了accessOrder=true 时 调用put 和get时都会把当前数据放到末尾处。这样可以方便的实现旧数据的剔除。重写LinkedHashMap中的removeEldestEntry方法具体可参考上述博客 转自:https://blog.csd...
2018-04-10 14:18:44
347
原创 mysql插入时使用 INSERT ... ON DUPLICATE KEY UPDATE
项目中用到ON DUPLICATE KEY UPDATE ,这样存在重复数据时可以执行更新语句具体用法不细说 主要有一点要注意 之前以为更新时会返回2,实际发现不一定的 执行update时 若更新的字段值没变,此时是不返回2的 。具体官方文档也给出描述了 重点红圈标出...
2018-04-04 16:44:23
409
原创 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
2636
原创 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
2635
原创 java 垃圾回收
本文基于Oracle hotspot jvm 1.GC:查找不再使用的对象,以及释放这些对象所管理的内存 2.算法:分代收集 Young:主要是用来存放新生的对象。 Old:主要存放应用程序中生命周期长的内存对象。 Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen
2017-01-12 10:55:25
474
原创 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
403
转载 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
524
原创 随笔面试题
1.联合索引 比如创建联合索引e1,e3 触发联合索引是有条件的: 1、使用联合索引的全部索引键,可触发索引的使用。 例如:SELECT E.* FROM E WHERE E.e1=1 AND E.e3=2 2、使用联合索引的前缀部分索引键,如“key_part_1 常量”,可触发索引的使用。 例如:SELECT E.* FROM E WHERE E.e1=1 3、使用部分
2016-03-29 19:42:38
468
转载 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
484
原创 spring 获得ApplicationContext
在spring mvc项目中,可以通过实现ApplicationContextAware 来获得ApplicationContext, public class ContextHolder implements ApplicationContextAware { private static ApplicationContext context;} 实现接口中方法
2016-03-08 19:56:36
508
转载 java semaphore 信号量,流控程序
信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。 Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。 import java.util.Date; import java.util.concurrent.ExecutorS
2016-02-02 11:10:35
1045
原创 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
3499
原创 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
1161
原创 elasticsearch java client
elasticsearch java api 提供两个客户端类Node Client ,TransportClient Node node = nodeBuilder().clusterName("yourclustername").node(); Client client = node.client(); Node Client: 1.本身也是集群节点之
2015-12-21 10:48:36
1021
原创 elasticsearch java query API
下面介绍下几个常用的查询Api 首先: TermQueryBuilder这个用于正常的检索,但是对于String (分析的)字段不能,例如name:joy may; 如果该字段是analyzed ,则需要使用另外一个MatchQueryBuilder("filedName",value) 查询条件里嵌套的对象字段 NestedQueryBuilder("path",Quer
2015-12-02 17:14:36
1988
转载 java volatile
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java
2015-12-01 13:37:59
515
原创 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
5593
1
原创 active mq 生产
destination id="queueName" class="org.apache.activemq.command.ActiveMQQueue"> index="0" value="@{queue.name}" /> Spring jms template id="amqConnectionFactory" class="org.apache.activemq
2015-11-25 16:12:41
587
原创 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
611
原创 mongodb java
获取client 默认连接本地 MongoClient mongoClient = new MongoClient(); 查看源码:this(defaultHost(), defaultPort()); 获取DB MongoDatabase db = mongoClient.getDatabase("pcs"); 连接collection 操作 插入 db.g
2015-11-04 23:40:55
408
原创 mongodb 性能测试
由于项目中考虑使用mongodb,遂作了一些调研 机器配置: 使用Java API 单线程循环操作: 数据结构是json结构: { "firstLevel": "hello world", "secondLevel": [ { "test1": }, { "test1": } ] }单条数据
2015-11-04 22:33:37
595
转载 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
966
转载 Node.js学习笔记之三:事件
Node.js 事件循环 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,
2015-11-02 15:56:27
709
原创 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
420
原创 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
348
原创 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
457
原创 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
381
原创 HashMap
HashMap的存储结构是这样: 数组加链表的结构: 查看hashmap源码可以看到(jdk1.8) 采用数组+链表+红黑树的结构 首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后
2015-10-14 11:22:34
438
原创 Thread 和 Runable 区别
首先 Thread是类,Runable是接口。 一是写一个类继承自Thread类,然后重写里面的run方法,用start方法启动线程 二是写一个类实现Runnable接口,实现里面的run方法,用new Thread(Runnable target).start()方法来启动 查看源码可以发现 Thread也是实现的Runable public class Thread imple
2015-09-14 16:38:42
1624
转载 hadoop 数据倾斜
数据倾斜是数据中的常见情况。数据中不可避免地会出现离群值(outlier),并导致数据倾斜。这些离群值会显著地拖慢MapReduce的执行。常见的数据倾斜有以下几类: 数据频率倾斜——某一个区域的数据量要远远大于其他区域。数据大小倾斜——部分记录的大小远远大于平均值。 在map端和reduce端都有可能发生数据倾斜。在map端的数据倾斜会让多样化的数据集的处理效率更低。在reduce端
2015-09-14 13:56:10
1803
转载 jvm 学习
面试中被问道JVM,结果没能很好的回答清楚,这里再学习一遍,补充下。 下面是找到的一篇博客,讲述的比较详细: 一、java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开
2015-09-09 15:56:49
1353
1
原创 spring boot 入门
首先第一步创建一个maven工程 springboot1 1.在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
447
原创 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
485
原创 mapreduce的二次排序 SecondarySort
在看Hadoop The definitive guide 时,关于二次排序,在设置好setGroupingComparatorClass 后一直不明白为什么reduce的入参就是要查询的年最高温度,代码里没有看到是怎么实现的: 代码: // cc MaxTemperatureUsingSecondarySort Application to find the maxi
2015-09-08 15:27:50
545
转载 java Pattern和Matcher详解
看到了Pattern和Matcher的代码,找了篇博客学习一下 结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。 java正则表达式通过java.ut
2015-09-06 17:16:43
377
原创 spring mvc HandlerMethodReturnValueHandler
今天项目遇到一个问题:在controller里重定向,正常使用 return "redirect:/url".结果怎么都不可以,后来发现RequestMappingHandlerAdapter里的HandlerMethodReturnValueHandlerComposite 对象里的List returnValueHandlers 被通过配置封装去掉了ViewNameMethodReturnV
2015-05-16 15:05:58
1881
原创 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
638
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅