- 博客(34)
- 问答 (1)
- 收藏
- 关注
原创 HashMap源码阅读——红黑树
HashMap源码阅读——红黑树上节我们提到了jdk1.8中引入了红黑树来解决一个桶下链表过长的问题。关键参数HashMap中有三个关于红黑树的关键参数//一个桶的树化阈值//当桶中元素个数超过这个值时,需要使用红黑树节点替换链表节点//这个值必须为 8,要不然频繁转换效率也不高static final int TREEIFY_THRESHOLD = 8;//一个树的链表还原阈值//当扩容
2018-04-15 15:17:39
634
原创 使用Matplotlib绘制3D动画
使用Matplotlib绘制3D动图主角是FuncAnimation函数,通过不断地调用func函数来实现动画,还可以使用save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None, savefig_kwargs=No
2018-04-15 12:52:36
10542
2
原创 HashMap源码阅读
HashMap源码阅读(超详细)本文基于Jdk1.8HashMap继承自AbstractMap,实现了Map,Cloneable,Serializable接口,是一个关联数组、哈希表,允许null键/值、非同步、不保证有序(比如插入的顺序)、也不保证序不随时间变化。其底层数据结构是数组称之为哈希桶,每个桶里面放的是链表,链表中的每个节点,就是哈希表中的每个元素。在JDK8中,当链表长度达到8,会转化
2018-04-13 20:06:05
1257
原创 MachineLearning实战及优化
MachineLearning实战及优化引包import pandas as pdimport numpy as npimport randomfrom sklearn import datasets,linear_model,model_selectionfrom sklearn.metrics import roc_curve,aucimport matplotlib...
2018-04-06 20:24:00
573
原创 CopyOnWriteArrayList源码阅读
CopyOnWriteArrayList源码阅读CopyOnWriteArrayList实现了List,RandomAccess,Cloneable,Serializable接口CopyOnWrite容器即写时复制容器。通俗地讲,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器复制出一个新的容器,然后在新的容器里添加元素,添加玩元素之后再讲原来容器的引用指向新的容器。这样可以做
2018-04-05 13:40:05
192
转载 volatile与ReentrantLock详解
volatile与ReentrantLock详解volatile上节我们讲了通过Synchronized可以到方法和代码块进行同步。而用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。volatile很容易被误用,使用它并不能保证操作的原子性。volatile还会禁止指令排序。我们先进行一个简单的高并发测试public class Counter { pu
2018-04-04 21:41:25
1035
1
原创 Vector、Stack源码分析
Vector、Stack源码分析VectorVector继承自AbstractList,实现了List,RandowAccess,Cloneable,Serializable接口,是ArrayList在多线程下的替代选择。Vector大部分方法都与ArrayList实现相同,不同的是需要同步的方法都使用了synchronized 关键词进行修饰,所有是同步的。 /** 按索引顺...
2018-04-03 22:16:05
167
原创 LinkedList源码分析
LinkedList源码阅读简介LinkedList继承自AbstractSequentialList实现了List,Deque,Cloneable,Serializable接口LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器(List),又可以看作一个双端队列(Queue),同时又可以看作一个栈(Stack)。LinkedList...
2018-03-30 17:18:37
220
原创 相机模型坐标系关系及转换
相机模型坐标系关系及转换简介相机模型是以后一切标定算法的关键,简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程,由投影过程求出相机的外参数和内参数。四个坐标系世界坐标系(world coordinate)(Xw,Yw,ZwXw,Yw,ZwX_w,Y_w,Z_w),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世...
2018-03-29 21:06:14
6540
原创 常见排序算法总结
废话不多说,直接看代码import java.util.ArrayList;public class Sort { static int[] a= {-1,1,41,3,3,3,1,2,5,23,345,12,3,4,53,2,41}; //static int[] a = {2, 1,-1}; public static void main(String[] args){
2018-03-26 15:30:22
177
原创 ArrayList源码阅读
ArrayList 可变长动态数组继承自AbstractList,实现了List<E>, RandomAccess, Cloneable, java.io.Serializable接口ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。 ArrayList 实现了RandmoAccess接口,即提供了...
2018-03-23 23:07:31
197
原创 树结构(一)
1.查找树左孩子比父节点小,父节点比右孩子小,即中序遍历可以得到从大到小的有序排列2.二叉查找树二叉树类似下图二叉查找树时间复杂度不是严格的o(logN)在插入有序数组的时候会出现”链表”的形式,即所有节点只存在左子树或所有节点只存在右子树,查找复杂度会退化到o(N)。而且频繁的删除操作,由于使用右子树最小值替代根节点,会导致二叉树失衡,左子树越来越壮大。2.1.添加节点从父节点开始,采用递归方法,
2017-08-23 23:00:23
321
原创 垃圾回收算法简介
引用计数法(Refrence Counting)引用计数法是最经典也是最古老的垃圾收集方法。原理:为每个对象配备一个整型计数器,对于一个对象A,只要有任何一个对象引用了A,则A的计数器就加1,当引用失效时,引用计数器就减1,只要对象A的引用计数器值为0,A就不可能在被使用。问题:无法处理循环引用的问题,例如两个对象相互持有对方引用,而不存在任何第三个对象持有他们的引用,他们本...
2016-12-17 17:08:37
636
原创 一起学Hibernate——总览
Hibernate体系结构hibernate概述 数据持久化ORM概念及原理Hibernate编程步骤Hibernate基础 实体生成器主键生成策略Hibernate数据类型Hibernate对象生命周期ORM映射 一对一一对多(多对一)多对多组件映射继承映射数据库操作 CriteriaHQLNativeSQL事务与并发 事务传播性事务的隔离级别事务控制
2016-12-04 17:00:39
343
转载 (十一)Spring详解——AspectJ切入点语法
AspectJ类型匹配的通配符:*:匹配任何数量字符;..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。+:匹配指定类型的子类型;仅能作为后缀放在类型模式后边。 示例: java.lang.String 匹配String类型; java.*.String 匹配java包下的任何“一级子包”下的String类型; 如匹配j
2016-11-11 22:52:58
352
原创 (十)Spring详解——基于@AspectJ的AOP
基于CGLIB,使用方法拦截器的方式 首先在配置文件中添加:<!-- 使用CGLIB代理,支持基于@AspectJ的AOP --><aop:aspectj-autoproxy proxy-target-class="true"/>声明一个切面@Aspect@Aspect@Component("LogAopUtils")public class LogAopUtils { @Pointc
2016-11-11 22:16:46
389
原创 (九)Spring详解——AOP面向切面编程实现
基本概念的介绍连接点(Jointpoint):在Spring中表示方法执行连接点,通俗的来说就是在哪里插入切面代码。切入点(PointCut):一组连接点的集合通知(Advice):在连接点上执行的行为,通知提供了AOP需要在连接点出如何扩展现有行为。包括前置通知(before advice),后置通知(after advice),环绕通知(around advice),Spring通过拦截器
2016-11-11 16:26:41
499
原创 (八)Spring详解——代理实现
场景 public void save() { System.out.println("日志记录"); try { System.out.println("事务开始"); System.out.println("事务提交"); System.out.println("事务结束");
2016-11-10 22:14:09
318
原创 (七)Spring详解——资源Resource接口
Spring提供了一个Resource接口来统一对底层资源的方便访问,并提供了一些接口方法来完成常见操作。 Resouce接口 继承自InputStreamSource getInputStream:每次调用都将返回一个新鲜的资源对应的java.io. InputStream字节流,调用者在使用完毕后必须关闭该资源。Resource提供接口方法exists:返回当前Resou...
2016-11-10 20:43:27
1366
原创 (六)Spring详解——使用注解替代配置文件
首先 修改applicationContext.xml文件 加入命名空间以支持注解 xmlns:context=”http://www.springframework.org/schema/context” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.
2016-11-09 22:54:26
2766
原创 (五)Spring详解——DI扩展
Bean作用域(scope)singleton每个Spring ioc容器只存在一个当前bean的对象prototype每次向Spring容器请求的bean都返回一个全新的Beanweb作用域 request每次请求创建一个新的Beansession每个会话创建一个新的Bean自动装配(autowire)目前Spring支持“default”、“no”、“byName ”、“byType
2016-11-09 22:08:28
471
原创 (四)Spring详解——Bean关系(DI)
两种依赖注入方式属性注入,调用set方法<bean id="goodsDao" class="com.shinerio.dao.GoodsDao"></bean><bean id="goodsService" class="com.shinerio.service.GoodsService"> <property name="dao" ref="goodsDao"></prop
2016-11-09 21:01:53
413
原创 (三)Spring详解——创建bean实例
Bean配置Bean的定义id,bean的名字,实例名,必须唯一(name,别名也必须唯一)class,全类名Bean的创建方式(三种方式)Bean之间的关系(两种依赖注入方式)先附上实体类和工厂类public class Goods { private String name; private double price; private int num;
2016-11-09 15:01:47
370
原创 (二)Spring详解——Ioc
先介绍两个概念DI(Dependency injection)依赖注入:在运行期间由外部容器动态地将依赖对象注入到组件中Ioc(Inversion of control)控制反转:应用本身不负责依赖对象的创建于维护,依赖对象的创建于维护是由外部容器负责的。这样控制权就由应用转给了外部容器,控制权的转移即所谓的控制反转。Spring是一个工厂,拥有一个IOC容器 Bean的概念:由IOC管理的
2016-11-09 14:10:17
598
原创 自定义注解实战案例——实现ORM映射
前面两篇博客已经详细讲解了Java注解,这次我们做个小案例,实现基于自定义注解的类与表之间的映射,完成表的反向生成 首先是表名的注解package com.shinerio.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annot
2016-10-31 00:55:57
570
原创 自定义注解
Java提供了四种元注解专门用来负责注解其他的注解。@Target表示注解可以用于什么地方,可能的ElementType参数包括 CONSTRUCTOR,构造器的声明FIFLD:域声明(包括enum实例)LOCAL_VARIABLE:局部变量声明PACKAGE:包声明PARAMETER:参数声明METHOD:方法声明TYPE:类,接口(包括注解类型)或enum声明@Retentio
2016-10-30 21:46:37
356
原创 java注解
Java SE5 一项重要的变化就是引入了注解,注解使得我们可以借助编译器来测试和验证我们的代码格式。使用注解可以使代码更加干净易读以及进行编译期类型的检查等。 Java SE5内置类三种注解,定义在java.lang中@Override,表示当前方法是子类重写超类中的方法。如果当前方法不是重写方法,编译器会报错@Deprecated,过时警告,如果你使用了加此注解的类或者调用加此注解的方法,
2016-10-30 20:51:29
262
原创 (一)Spring详解-入门介绍
Spring概述Spring是一个工厂,工厂就是创建对象Spring是一个容器,管理和维护对象状态以及他们之间的依赖关系。Spring的两个核心思想AOP(Aspect Oriented Programming)面向切面编程,Spring工厂使用了代理模式的设计模式Ioc(Inversion of Control)控制反转,也称依赖注入(DI,dependency Injection),维
2016-10-28 15:21:09
337
原创 安全框架之shrio-简介
本文学习主要参考官方英文文档(博客中已翻译处理)shiro作用:认证、授权、加密、会话管理、与Web集成、缓存等。 你可以用shiro来做以下事情认证一个用户来核实他的身份控制用户的一些访问权限,例如: 一个用户是否具有某个安全权限一个用户是否被允许进行某些操作在任何场景使用会话API,即使不是web工程或者EJB容器对认证、控制权限获得等事件或者在一次会话生命周期中起作用聚集一个或
2016-10-26 22:17:05
1122
原创 在JAVA类中使用JSON
上一篇我们对Json做了一个基本的介绍,这篇我们将对Json在JAVA类中的使用做一个介绍 下面我们来介绍java中Json的两种使用方式java对象与json的转化java集合类与json的转化首先需要导入第三方jar包 json-lib-2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.j
2016-10-19 15:37:48
772
原创 Json教程
国际惯例,先来个名词解释JSON:JavaScript 对象表示法(JavaScript Object Notation)。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。Json格式语法规则: JSON 语法是 JavaScript 对象表示法语法的子集。 数据在键/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 形如格
2016-10-19 13:42:41
605
原创 ssh框架整合完整实例
前排提示博文较长1.SSH框架结构action,biz,dao之间的依赖关系由spring维护,动态注入sping以AOP(面向切面的方式)实现了事务管理器。spring整合Hibernate时,spring替代实现HibernateSessionFacctory和daospring整合struts时,代替实现Action开发过程中的所有对象由spring控制管理2. 项目流程2.1框架
2016-10-15 22:25:35
25251
2
原创 自定义View之圆环刷新
最近在学自定义View,然后联想到经常看到的圆环刷新效果,感觉可以用自定义View实现,于是便写了一个。废话不说,先上效果ps:博主没找到合适的录制gif的软件,有朋友知道可以留个言 刷新时效果就是一个个进度块颜色依次刷新 直接上代码了,注释写得很清楚,应该很容易看懂xml布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns
2016-10-15 16:59:33
698
原创 ByteBuffer中属性及其操作
ByteBuffer中属性及其操作1.继承自Buffer,用于存储基本类型数据的容器capacity(容量),缓冲区容量,不能更改postion(位置),下一个要读取或写入的元素索引limit(限制),第一个不能被读取或写入的元素索引mark(标记),标记索引,调用reset方法重置缓冲区位置到mark索引 标记、位置、限制和容量值遵守以下不变式: 0 <= 标记 <= 位置 <
2016-10-15 14:36:42
997
空空如也
试试看,一道充满陷阱的java题目
2016-12-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人