自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (5)
  • 收藏
  • 关注

原创 idea-遇到的问题

1 如图报的错误,其实是因为没有设置jdk的原因。 解决方法:右键 Project Structure-Project-Project SDK 2 有时候从git中clone下来的代码提示不是maven项目 解决方法:Maven Projects-“+”号引入项目即可。 3 启动配置maven run-Edit Configuration-“+”号-搜索maven ...

2018-04-24 17:57:29 168

原创 java8新特性-日期、时间

下面仅列举常用的日期、时间,像不常用的时区、历法什么的就没弄了。public class TimeTest extends BaseTest { @Test public void dateTest() { //日期 //各种静态方法都可以获取 //LocalDate date = LocalDate.of(2018, 4, ...

2018-04-11 14:29:48 290

原创 java8新特性-CompletableFuture

想必大家都用过Future,那么CompletableFuture在Future基础上又加了什么方法呢?public class CompletableFutureTest extends BaseTest { @Test public void futureTest() { //这是一个很简单的使用future的例子 Execu...

2018-04-11 13:44:51 232

原创 java8新特性-默认方法

这里的默认方法指的是接口中的默认方法。 那么接口可以写方法有什么好处呢? 1 当有新需求需要添加方法时,那么需要将接口的实现类的所有方法都要加上这个方法,有了默认方法就可以不动实现类,只需要在接口中增加默认方法就可以搞定。 2 不需要每个实现类都需要实现该方法,同抽象方法。 3 可实现类似多继承的模式。 java8自带的很多接口都有默认方法,来个List接口的默认方法:并行分割器de...

2018-04-10 17:45:01 121

原创 java8新特性-流

流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了。 通过parallelStream或者parallel(内部调用join/fork)就能实现并行操作,需要注意的是线程安全问题及合适的方式采用并行。当然并不是所有并行性能就会...

2018-04-10 11:04:57 243

原创 java8新特性-lambda表达式

java10都要来了,才才才说java8新特性?好吧,大神,再见,这不是写给你看的 -_-! 为什么要要使用lambda表达式? lambda表达式能以简洁的代码代替复杂、啰嗦的代码,也更易阅读! 最后也附上简单的性能测试,总体上数量越大,lambda性能越好,可能不同的业务逻辑及方法都不会一样,仅供参考! 没有理论,上来就撸代码!public class LambdaTest e...

2018-04-09 15:53:16 147

原创 JVM-tomcat异常报错

启动tomcat 的时候,某一时刻突然 崩掉,bin文件夹中多了hs_err_pid217456.log日志文件。# There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (malloc) failed to allocate 32744 b...

2018-04-08 18:58:11 569

原创 spring-bean生命周期

DefaultListableBeanFactory bean工厂类 1 doGetBean 2 transformedBeanName 获取beanname(过滤&和别名替换) 3 getSingleton 从单例缓存中获取实例 这里涉及到循环依赖问题 4 getParentBeanFactory 获取父bean工厂类 这里将name还原 5 markBeanAsCreated...

2018-02-10 23:18:47 89

原创 java 并发工具包 -锁 Lock

1

2017-12-19 16:37:04 357

转载 java 并发包 -synchronized

首先先说明一点的是 synchronized并不是并发包里的,因为synchronized也用于高并发的情况,所以放到这里介绍。 synchronized 是可以方法、代码块的锁,同时只能由一个线程进行占有,并且使得变量具有内存可见性。怎么用就不多说了,大家都会用。但是synchronized的原理,就不一定都知道了。 synchronized 分为 1 偏向锁 2 轻量级锁 3

2017-12-19 13:24:28 1067

原创 java 并发包-AbstractQueuedSynchronizer

简介AbstractQueuedSynchronizer 就是我们常说的AQS-同步器。常用的有ReentrantLock、ReadWriteLock、CountDownLatch,内部实现都依赖AQS类,可以说AQS是实现同比必备良药。源码分析AQS的主要参数 state字段 表示同步的状态,需要通过传入值与state进行比较是否一致。CountDownLatch就是通过sta

2017-12-19 12:18:30 157

原创 java 并发包-Unsafe

Unsafe 不安全类,在并发包中使用的非常频繁,那么它究竟有什么作用呢? Unsafe类在提升Java运行效率,增强Java语言底层操作能力方面起了很大的作用。 先来看下它是怎么使用的,下面代码摘自AQS 通过下面的代码,看起来操作不难//初始化 直接通过静态方式获取 private static final Unsafe unsafe = Unsafe.getUnsafe(); //各

2017-12-19 12:17:39 550

原创 Java IO-BufferedReader

BufferedReader和BufferedInputStream 类似,只是前者存储的字符并且实现的是Reader,后者存储的字节并且实现的是InputStream 。//缓冲数组 private char cb[]; //分别表示 cb总个数和下一个读取位置 private int nChars, nextChar; //缓冲数组默认大小 private static in

2017-12-17 20:31:25 130

原创 Java IO-BufferedInputStream

BufferedInputStream 是一个带有缓冲区的输入流。缓冲区你可以理解为缓存,就像我们从数据库中读数据和从缓存中读数据同样的道理,目的都是为了能够加快读取速度。 本篇只关注如下图红框的部分 //默认缓冲区大小为8192个字节 即8k private static int DEFAULT_BUFFER_SIZE = 8192; //缓冲区最大大小 超出将报OutOfMemoryEr

2017-12-17 16:39:12 217

原创 Java IO

输入流和输出流 分别对应的InputStream(字节)、Reader(字符)和OutputStream(字节)、Writer(字符);站在cpu的角度去看,input就是从外面到CPU,output就是从CPU到外面。 下面针对上述四类的一个子类分布图 当然 File也是io包中一个针对磁盘文件的对象,可以对文件或者文件夹增删改查。上述基本包含了java.io 包中的大部分类了,还有我

2017-12-17 12:01:22 134

原创 Java IO: 管道

通过管道 PipedInputStream和PipedOutputStream 可以实现不同线程之间的数据传输,使用很简单,先来看下简单的例子:@Test public void pipeTest() throws IOException, InterruptedException { PipedOutputStream outputStream = new PipedO

2017-12-17 00:04:06 122

原创 java 并发工具包 -信号量 Semaphore

ddddddd

2017-12-09 00:21:32 196

原创 java 并发工具包 -倒计数CountDownLatch

11111df

2017-12-08 23:08:28 231

原创 java 并发工具包 -栅栏 CyclicBarrier

ddd

2017-12-03 14:55:14 216

原创 java 并发工具包 BlockingQueue-PriorityBlockingQueue

简介PriorityBlockingQueue :优先级阻塞队列,即已谁优先谁先出的模式。 既然具有优先级,那么必然元素需要实现Comparable

2017-12-02 17:07:56 188

原创 java 并发工具包 BlockingQueue-LinkedBlockingQueue

简介LinkedBlockingQueue 字义为链式阻塞队列,既然是链式,那么内部肯定以链接结构存储了,相比ArrayBlockingQueue,可以是一个无界队列,但是性能比之要差。初始化 public LinkedBlockingQueue() { this(Integer.MAX_VALUE); } public LinkedBlocki

2017-12-02 12:06:31 120

原创 Java 并发工具包-BlockingQueue-DelayQueue

DelayQueue 延时队列,延时一段时间后执行的队列,根据这个特性,可以应用在 1 缓存的生成及自动过期删除 2 任务超时处理 … 其存储元素必须继承实现Delayed接口public interface Delayed extends ComparableDelayed> { long getDelay(TimeUnit unit);}可见 我们需要实现两个方法

2017-12-02 12:06:04 216

原创 java 并发工具包 BlockingQueue-ArrayBlockingQueue

简介ArrayBlockingQueue 字义理解就是 : 数组阻塞队列;看名字就很好理解,哈哈!! ArrayBlockingQueue 是有界队列,意思是队列个数不能超出某个数,超出入队阻塞,初始化就需要定义好个数,不能自动扩增或者修改。 上源码:初始化//初始化,定义临界值及是否公平两参数与 public ArrayBlockingQueue(int capacity,

2017-12-02 12:05:23 169

原创 java 并发工具包 BlockingQueue

简介BlockingQueue 是一个接口,字义上理解表示为一个阻塞队列 1 生产者入队 2 消费者出队 BlockingQueue 具有 4 组不同的方法用于插入、移除以及对队列中的元素进行检查。如果请求的操作不能得到立即执行的话,每个方法的表现也不同。这些方法如下: 抛异常 特定值 阻塞 超时 四组不同的行为方式解释: 抛异常:如果试图的操作无法立即执行,抛一个异

2017-12-02 12:04:41 198

原创 zookeeper(二) 数据发布与订阅(配置中心)

首先需要引用 zookeeper <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency>1 ZkServi

2017-09-05 22:33:44 499

原创 zookeeper (一)

最近在学习dubbo的时候,其中提到了zookeeper!所以也学习下zookeeper!!概念性的就不记了。zookeeper的几个应用场景 1 数据发布与订阅(配置中心) 通过zookeeper的监控watcher,当存储数据发生变化时,便会通知订阅的客户端,从而达到数据更新的目的。 2 配置信息存储 zookeeper 不是专门存储数据的,所以不适用大数据的存储,一般只存储1m一下的数

2017-09-03 17:16:07 255

原创 shiro-spring 结合的配置问题

shiro可以开启权限注解功能 <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /> <!-- 开启Shiro注解 --> <bean class="org.springframework.aop.framework.autoproxy

2017-08-29 13:29:17 310

原创 Mybatis -处理clob类型数据

当执行sql语句,返回的是map类型时, 比如 public List<Map<String, Object>> query(@Param("sql") String sql)得到的数据是List<Map>类型数据,此时,如果有返回的有clob字段时,数据是这样的oracle.sql.CLOB@63636de0 ,显然,这不是我想要的,我需要的是字符串数据 那么怎么来处理clob字段呢,很简单

2017-08-02 22:08:23 4390 1

原创 mybatis-sqlite

最近需要和移动端配置配合,将后台的结果数据生成sqlite数据库传给移动端(因为需要离线查看),所以配置信息的话需要同步存入sqlite。 1 创建和后台一样的表结构 2 做一个拦截器,只需要拦截StatementHandle 就可以了,仅处理增、删、改操作,对于sqlite来说 ,批量插入时 ,需要去掉 from dual(我使用的是oracle),所以插入的时候 还要去掉from dual

2017-07-27 15:25:49 1224

原创 Mybatis -typeHandlers类处理器

在配置模块中的parseConfiguration方法中//解析配置文件中的typeHandlers 节点内容,这里就是解析自定义的类处理器 typeHandlerElement(root.evalNode("typeHandlers")); //解析方法 private void typeHandlerElement(XNode parent) throws Exception {

2017-07-16 18:27:14 320

原创 Mybatis 源码解析 -插件模块-分页例子

分页查询是我们非常常用的一种查询方式,所以我们这里就以分页作为例子讲解! 对于mybatis来说,当然你可以直接写一个分页sql语句进行查询,将currentPage和pageSize作为参数传入,就可以获得分页数据了!但是呢,分页查询往往伴随的还需要获取”总条数” totalRecord,也就是说,还要对应的再写一条获取总条数的sql语句,再获取一次!比较麻烦,那么问题来了,能不能不那么麻烦,自

2017-07-15 11:27:16 235

原创 Mybatis 源码解析 -插件模块

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:// MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClos

2017-07-10 12:46:09 249

原创 Mybatis 源码解析 -事务模块

事务对数据库的重要性,就不用多说了 我们先来看下mybatis中事务的隔离级别public enum TransactionIsolationLevel {//无 NONE(Connection.TRANSACTION_NONE), // (读已提交):可避免脏读的发生READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED), // (

2017-07-08 17:05:14 315

原创 Mybatis源码分析-二级缓存

二级缓存和一级缓存不一样的地方在于,二级缓存针对的是MapperStament,比一级缓存更细! 首先在使用一级缓存之前,mapper.xml文件中要配置标签来开启二级缓存,而且可以细化到mapper.xml中的每条sql语句,比如<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

2017-07-07 13:12:15 326

原创 Mybatis源码分析-一级缓存

为了能提高系统性能,缓存必不可少,mybatis同样也是有缓存的! 分一级缓存和二级缓存,该篇介绍下一级缓存!! 我们回顾下配置阶段,再创建executor执行器时,有个Configuration.newExecutor方法,来看下public Executor newExecutor(Transaction transaction, ExecutorType executorType) {

2017-07-06 22:51:18 163

原创 Mybatis源码分析-数据源

先来看个图 没错,datasource(数据源)包下面的源码,看起来好像不多的样子,就那么几个类而已!! 其实从包名就可以看出 数据源分三种jndi,pooled,unpooled,来看看他们的关系,咱看图说话1 unpooled 我们来看下unpooled即不使用数据连接池,每次都重新生成连接,执行完成关闭。 private Connection doGetConnection(Pr

2017-07-04 22:13:12 298

原创 Mybatis源码分析-执行模块

执行模块打算分几篇记录,先来了解下整个执行流程接下来将逐步分析以下几个模块,一个个来吧!! 1 连接池 2 事务 3 缓存 4 插件

2017-07-03 22:09:17 185

原创 Mybatis源码分析-配置模块

**Mybatis源码分析**

2017-07-02 11:29:09 348

jreble 破解

jreble 破解 亲测可用

2017-04-20

NHibernate 连接oralce 源码

NHibernate 连接oralce 源码

2016-05-09

memcached 安装包

Windows下的Memcache安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装 3. 再输入: 'c:\memcached\memcached.exe -d start' 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。 4.下载php_memcache.dll,请自己查找对应的php版本的文件 5. 在C:\winnt\php.ini 加入一行 'extension=php_memcache.dll' 6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! 详细出处参考:http://www.jb51.net/article/23686.htm

2014-02-21

Memcached Providers 1.2 .NET 3.5

Memcached Providers 源代码例子

2014-02-21

memcached完整例子

memcached的完整例子提高了系统的并发处理的能力 据缓冲,因此可以快速的响应前端的请求,减少对数据库的访问

2014-02-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除