`
wen866595
  • 浏览: 264116 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表

[置顶] 博客迁移

  自己的独立博客站点--码蜂笔记 http://coderbee.net/  上线有一段时间了,新文章先发表在那里,然后会贴一份到这里,如果文章有更新就只更新那里了,不两头更新。   博客的访问情况,一般就只有爬虫固定访问,呵呵。自己写个awk脚本过滤下nginx的访问日志,非机器访问的次数与google analytics 的统计差不到。    如果你有兴趣搭建自己的博客,可以看我的一篇文章:博客搭建笔记 http://coderbee.net/index.php/notes/20130620/254
1. Mapper 代理层执行   Mapper 代理上执行方法调用时,调用被委派给 MapperProxy 来处理。   public class MapperProxy<T> implements InvocationHandler, Serializable { private final SqlSession sqlSession; private final Class<T> mapperInterface; pri ...
本文主要关注与 SpringBoot 集成时的初始化过程。 1. 核心组件 Configuration:MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中。 SqlSession:MyBatis 的顶层 API,表示与数据库交互的会 ...
  背景 项目中有个设计不合理的表,总共 8 个字段,有 5 个索引,有几个索引字段还是 32 位的字符串。该表数据量已达 1 亿,最近每天新增 100 万。根据日志看,有次用户上传一个有 200 行记录的 excel,需要往这个表插入 3940 条记录,耗时 72 秒。这么大延迟是没法接受的。   要分析数据库方面的问题,首先是找 DBA 分析下表的情况,说跟以往没多大区别,只是跟这个表有关的插入的执行计划很多。因为这个表的批量插入是这样的: <select id="batchSave" parameterType="java.util.List ...
  原文链接:码蜂笔记 - Java8 Striped64 和 LongAdder   数据 striping 根据维基百科的这段说明: In computer data storage, data striping is the technique of segmenting logically sequential data, such as a file, so that consecutive segments are stored on different phys ...
  文章首先发表在 码蜂笔记 http://coderbee.net/index.php/db/20140113/712   最近想给本站加上文章索引的页面,就是在一个页面上展示所有的分类及该分类的文章,然后置顶到首页,效果见本站文章索引。开始的思路是:先新建一个页面,然后设置好置顶等,用存储过程更新该页面的内容,用触发器在有新文章发表或文章标题有更新时触发执行存储过程。看起来应该挺顺利的,不过实现过程倒没想象那么好了。 更新索引存储过程 这个存储过程的功能是从数据库里查询出所有的分类以及该分类下的文章的ID和标题,然后用游标生成html内容(wordpress直接存储页面的ht ...
  原文地址:http://coderbee.net/index.php/concurrent/20131211/624   翻译自:Martin Thompson – Memory Barriers/Fences 在这篇文章里,我将讨论并发编程里最基础的技术–以内存关卡或栅栏著称,那让进程内的内存状态对其他进程可见。 CPU 使用了很多技术去尝试和适应这样的事实:CPU 执行单元的性能已远远超出主内存性能。在我的“Writing Combining”文章,我只是谈及其中一种技术。CPU 使用的用来隐藏内存延迟的最普通技术是管线化指令,然后付出巨大努力和资源去尝试重排序这些管线 ...
  原文地址:http://coderbee.net/index.php/concurrent/20131219/650   JMM,Java Memory Model,Java 内存模型。 什么是内存模型,要他何用? 假定一个线程为变量var赋值:var = 3;,内存模型要回答的问题是:在什么条件下,读取变量var的线 ...
  原文地址:http://coderbee.net/index.php/basis/20131110/566 翻译自:http://mechanical-sympathy.blogspot.com/2011/07/false-sharing.html 伪共享 内存在缓存系统里是以缓存行为单位存储的。缓存行是大小为2的整数幂的连续字节,典型是32-256字节。 ...
  原文地址: http://coderbee.net/index.php/java/20131117/581   volatile 变量 volatile变量具有可见性,也就是说线程能够自动发现volatile 变量的最新值;对volatile变量进行操作不会造成阻塞。 适用于:多个变量之间或者某个变量的当前值与修改后值之间没有约束。 正确使用volatile变量的条件: 对变量的写操作不依赖于当前值。 该变量没有包含在具有其他变量的不变式中。 所以,volatile变量不支持像i++这样的原子操作,因为这条语句包含了三个步骤:读取-加1操作-写变量。 CAS操作 ...
  原文: http://coderbee.net/index.php/java/20131031/547   《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记   一、概述 垃圾回收,Garbage Collection,简称GC。 GC需要完成三件事: 哪些内存需要回收? 什么时候回收? 如何回收? 二、对象存活判断 判断对象是否存活一般有两种方式: 引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。 可达性分析(Reachability A ...
  原文: http://coderbee.net/index.php/java/20131018/519   概述 java.util.HashMap 是JDK里散列的一个实现,JDK6里采用位桶+链表的形式实现,Java8里采用的是位桶+链表/红黑树的方式,非线程安全。关于散列可以看这篇文章,   这篇文章 ...

JVM 运行时数据区

    博客分类:
  • java
  原文地址: http://coderbee.net/index.php/java/20131017/512   《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记   JVM运行时数据区 根据《Java虚拟机规范》,JVM管理的内存如下:图片来自网络。 其中绿色部分是所有JVM线程共 ...
原文:http://coderbee.net/index.php/java/20131015/503   包概述 java.time 包是在JDK8新引入的,提供了用于日期、时间、实例和周期的主要API。 java.time包定义的类表示了日期-时间概念的规则,包括instants, durations, dates, times, time-zones and periods。这些都是基于ISO日历系统,它又是遵循 Gregorian规则的。   所有类都是不可变的、线程安全的。   一些类的介绍 LocalDateTime:存储了日期和时间,如:2013 ...

J.U.C 包

    博客分类:
  • java
  原文在:http://coderbee.net/index.php/java/20130927/491   概述 J.U.C 包是java.util.concurrent包的简写。这个包在JDK5引入,大大增强了Java的并发特性。JDK7还引入ForkJoin框架。   该包提供的能力主要包括:可重入锁,具有原子性操作属 ...
Global site tag (gtag.js) - Google Analytics