自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 解析Arrays中sort方法的黑科技

排序问题是算法里面的经典问题,也是计算机学科数据结构课程里面的必修课,面对诸多的如插入排序,快速排序,堆排序,归并排序等等经典排序算法,JDK的实现者是如何选择排序算法的呢?我们经常使用的对数据进行排序的算法Arrays.sort,Collections.sort方法,那么具体它们是如何实现的呢,本文尝试从jdk 1.8的实现源码上进行分析,学习在实际工业环境下对排序算法的使用方法。 概...

2018-05-13 22:39:07 4834 5

原创 Java并发系列笔记之并发容器ConcurrentHashMap

线程不安全的HashMap多线程情况下,HashMap由于在扩容的时候会导致链变成环,在下一次查询的时候会使得出现死循环的出现。变成环的主要原因在于HashMap扩容的逻辑是不具有原子性的,扩容的基本逻辑包括下面三条: 1. 当前节点为e,获取当前节点的下一个节点next 2. 将e按照hash移到到扩容后的hash表中,置e.next等于newtable[i],头插法 3. 将e置为n...

2018-05-10 13:05:57 257

原创 Java并发系列笔记之线程池

线程池是资源复用的典范之作,其基本思想是维护一个含有一定数量的在运行的线程集合,在需要运行线程任务的时候直接从这个集合中取出一个线程去运行任务,而不是重新创建一个。 如果我们自己去实现一个线程池,那么基本的想法是维护一个线程的集合,这些线程都从一个队列中去取任务,如果队列为空,则阻塞对应的线程,等待队列不空的消息通知。当线程完成了任务,应该将线程返回给线程队列,而不是关闭线程。基本思想是这样...

2018-05-10 13:05:05 203

原创 Java并发系列笔记之Java中的锁

锁是多线程下进行同步互斥的重要实现依托,Java语言中除了提供了使用synchronized关键字提供的隐式锁,也提供了以Lock接口定义的显示锁。一般Lock的子类实现依赖于一个抽象队列同步器(AbstractQueuedSynchronizer, AQS)的子类实现。AQS的目的是提供对同步状态的获取和释放的基础同步功能给依赖者使用,而屏蔽了同步状态获取和释放的具体实现。AQS是一个抽象类,它使

2018-05-10 13:03:22 237

原创 Java中的异步执行Future小结

最近碰到的异步处理的操作比较多,异步就是不等想要的结果返回执行接下来的其他操作,等异步结果返回后直接调用已经注册好的处理方法完成后续操作。异步的思想是非常棒的,相比轮询的方式而言,异步的实现方式无疑是高效并且优雅的。本文介绍了包括Future,AIO和有点类似于单机版的Map-Reduce的fork/join框架。 Guava ListenableFuture使用JDK提供的线程池E...

2018-03-31 11:39:47 2857

原创 关于常用设计模式的一些思考

很早就接触了设计模式,今天在看一些文章的时候发现自己在学习理解设计模式的时候有些偏差。设计模式应该服务于特定的场景,并且是经过前人经验总结而来的代码解决思路,这种解决思路考虑的点在于如何能够让代码之间的耦合度更低并且减少冗余,使得代码耦合度更低的目的是为了程序更好的扩展,所谓的更好的扩展是指在功能的变动或者扩展的情况下尽可能触发较少较少的改动。所以在学习设计模式的时候,一个好的学习方式应该是模拟程序

2018-03-31 11:14:04 194

原创 机器学习总结系列之逻辑回归

线性回归适合连续型的函数拟合任务(也就是回归任务),即对于不同的输入x,输出y所属于的域是一个连续的空间,而对于y是确定的离散的空间的分类任务,比如y只取0,1的二分类问题,仍然使用线性回归的直线拟合无法适应大量输入x而y只限制在0-1的情况,我们需要一种值域在0-1的函数来作为我们的假设函数。 这个函数就是被称为逻辑函数(Logistic Function)或者Sigmoid函数。它的函数...

2018-03-01 16:29:44 280

原创 机器学习总结系列之Octave常用操作

记录了常用的或难记的一些Octave命令,以备查找。 基本命令eye(4),生成一个4维单位矩阵ones(4,3),生成全1的4*3矩阵rand(4,3),生成一个4*3的随机矩阵size(A),返回一个行向量,代表行列length(A),返回最大维的那个数目help cmd,查看命令详情加载数据load(“filename”)或load filename,将文件数据加载到对应的矩

2018-03-01 16:25:49 733

原创 机器学习总结系列之Introduction

人工智能在如今无疑是如日中天,它的各个子领域也因此得到了极大的发展,机器学习作为人工智能的一个子领域以赋予机器以人类特有的学习能力也得以大放异彩,它被应用在各个领域,典型的例子如个性化推荐,数据挖掘,垃圾邮件识别等等,机器学习算法和传统算法的不同之处在于传统算法研究的是如何解决一个有特定结果的问题,而机器学习算法则是挖掘数据中潜在的规律,然后对输入做出预测。按1959年Arthur Samuel的...

2018-02-21 20:33:47 221

转载 理解spring配置文件的头部信息(xmlns,xsi)

xmlns的意思问题的出现:XML的元素名字是不固定的,当两个不同的文档使用同样的名称描述两个不同类型的元素的时候,或者一个同样的标记表示两个不同含义的内容的时候,就会发生命名冲突。 问题的解决:命名空间(Namespace),对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML中使用DTD中定义的元素,需将DTD的标志和元素名,属性连在一起使用,相当于指明了元素来自什么地

2018-01-19 15:45:29 1510

转载 spring jar包依赖关系

转自:http://www.cnblogs.com/ywlaker/p/6136625.html很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!

2018-01-19 11:39:52 2418 1

原创 python和shell基础语法对比

python和shell都是我们经常使用的脚本语言,平时python主要用来写一些小型的任务,shell则在使用liunx系统部署任务的时候用的比较多,由于两者有一些相似之处,时间长了容易混掉,所以这里作文对一些基础的语法需求总结、比较、归纳,以为后用。 变量python定义和使用只需要使用变量名,例如var=“hello”print var# helloshell定

2018-01-13 15:40:18 4899

原创 深入理解红黑树原理与实现(附Java源码)

红黑树(RBTree)是一种相比平衡二叉树(AVL)平衡要求较低的的一种二叉搜索树,所谓平衡要求较低的意思是相比AVL树的每个节点的左右子树的高度差不能超过2,红黑树使用红黑两种颜色来标记二叉搜索树中的节点,并对这种着色进行限制,使得在插入删除操作后对不符合的情况必须进行调整来保持这样一种限制,从而实现自我平衡。我们先来看一下红黑树的定义,也就是着色限制 * 每个节点必须着色成红色或者黑色

2018-01-03 22:05:29 2163

原创 MyBatis之关联映射解析

ORM框架一个重要的技术点是处理对象间的关联映射,比如一对一,一对多的关系,和Hibernate不同的是,Mybatis的使用需要开发人员直接和SQL语句进行打交道,所以在处理关联映射的时候不论是文件配置还是实现原理都是大有不同的,本文致力于使用一个例子讲清楚不同关联映射关系的配置和使用方法,以及作者在使用过程中对不同的参数的作用的深入理解。

2018-01-02 14:34:46 984

转载 Log4j使用方法

原文链接点击这里简介Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的

2017-12-22 12:50:14 175

原创 MyBatis之TypeHandler解析

MyBatis作为一个ORM框架,在实现对象到关系数据库映射的过程中,一个无法避免的问题就是Java类型和JDBC类型之间的相互转换,而TypeHandler的作用就在于此,其作用是实现Java类型向JDBC类型之间的转换。

2017-12-17 22:41:07 922

原创 idea使用maven构建mybatis程序遇到的几个问题

最近在学习Mabatis的使用,在使用idea maven构建mabatis程序的时候遇到了以往在非maven构建的问题,总结如下,以备后查。 变更的MySQL JDBC 6.0驱动类名MYSQL JDBC6.0+版本的驱动类全称限名改为了com.mysql.cj.jdbc.Driver,相比原来的名字,多了一个cj,并且需要在url中指明时区,否则会报错,例如url=jdbc:mysql://l

2017-12-06 19:17:29 313

原创 MySQL-SQL之游标,触发器和事务

游标的出现使得对一个查询结果集的每一行结果能够更细粒度的操作,现在MySQL只支持在存储过程中定义存储过程。一个游标的使用过程是这样的: * 使用 <declare 游标名 cursor for 查询语句> 定义一个游标 * 使用 <open 游标名> 打开游标准备使用 * 使用fetch语句获取结果中的一行结果到变量 <fetch 游标名 into 变量名> * 使用 <close 游标名

2017-12-03 21:19:08 688

原创 Java NIO解析

这篇文章先从阻塞与非阻塞,同步与异步之间的定义和关系说起,然后探讨liunx下的5种IO模型,支持非阻塞IO的select/poll/epoll系统调用的基本原理,然后通过Java代码搭建bio方式的服务端,改进服务器在并发场景下bio多线程和线程池的实现方式,最后介绍Java nio来实现一个服务器和多个客户端对话。 阻塞与非阻塞,同步与异步如果从程序调用来讲,阻塞是指我们执行一个函数调用不能立

2017-12-03 21:15:03 326

原创 MySQL-SQL之视图、存储过程

例如一个用户表customers(主键为cust_id),一个用户可以有多个订单,订单表为orders(主键为order_num,外键为cust_id),一个订单有多个订单项,订单项表是orderitems(主键order_num,order_item,外键order_num,prod_id),每个订单项对应一个产品,产品表products(主键prod_id,外键vend_id),每个产品对应一个

2017-11-28 13:34:47 904

原创 MySQL-SQL语句总结学习之一

创建表create table tableName(列名 类型名 限定词<not null,default value, autoincrement>primary key(列名1,列名2……)foreign key(列名1) references 参照表名(参照列名)foreign key(列名2) references 参照表名(参照列名))常用的数据类型参见这里 以下为创建表的实例

2017-11-23 20:35:06 194

原创 Java动态代理解析

代理模式是一个高频使用的设计模式,其原因在于我们可以在不改变被代理类的情况下,提供一个和被代理类一样的代理类,并负责预处理被代理类的方法,过滤或执行被代理类的方法以及后续操作。这里所说的一样是指代理类对象可以替代被代理类对象,实现这种效果有两种,一种是代理类和被代理类实现同一个接口,另一种是代理类直接继承自被代理类,这两种方式在接下来的jdk动态代理和cglib中均有体现。在深入了解动态代理之前,我

2017-11-07 19:16:28 192

原创 自顶向下的Java虚拟机

最近看了《深入理解Java虚拟机》这本书,感觉书中的章节写的很零散,如果能够通过一个完整的例子将所有的知识点串联起来,将整个故事讲清楚,无疑对Java虚拟机运作原理的学习有更好的帮助,本文之所以称为自上而下的Java虚拟机是受《计算机网络:自顶向下方法》启发,想要从上层开始讲起,然后逐步了解这些我们习以为常背后Java虚拟机所做的工作,以期这篇总结能够让Java虚拟机运作的脉络更加清晰。 将Jav

2017-10-30 21:33:39 388

原创 深入理解排序算法java版

简单插入排序插入排序的基本思想是将整个排序序列划分成“有序区间”和“无序区间”,然后逐个将无序区间中的元素插入到前面有序区间了,逐步将这个区间变有序。其算法复杂度为O(n^2) 其算法描述如下: 描述:插入排序输入:待排序数组array,数组最后一个元素位置lastIndex输出:排序好的数组array从i=2位置作为待插入元素,直至最后一个元素,循环如下操作 设置array[0]为

2017-10-19 21:13:41 204

转载 MC/DC覆盖率准则

MC/DC逻辑覆盖 标签: test 2014-06-25 14:09

2017-10-11 12:05:45 21711 2

原创 优先队列(堆)

优先队列也就是我们常说的小根堆,它至少支持两种操作:插入,删除最小者,它的一种实现方式是二叉堆。 二叉堆二叉堆具有结构性和堆序性,所谓结构性,是指二叉堆是一颗完全二叉树,而堆序性是指根节点的值应该是最小的。其实堆有一个递归的定义方式:1)堆的根小于它的左右子孩子,2)它的左右子树也是堆。堆既然是一颗完全二叉树,那么我们就可以用数组的方式来存储堆,而下标的值则已经蕴含了父子关系的信息,如果从1开始存

2017-10-08 11:55:49 243

原创 散列

散列表的基本思想是将关键字(key)通过散列函数映射到表中的一个位置,在查找的时候只要通过关键字就可以直接获取对应位置的值。那么主要的问题就是如何设计散列函数和如何在不同的关键字映射到同一位置的时候处理冲突。注意我们现在讨论的存放的仅仅是关键字,实际情况存放的是关键字+值。 处理冲突的方法分离链表法也称为拉链法,其基本思想是在冲突发生后使用链表来存储关键字散列值相同的值,查询的过程包括一次散列函数

2017-10-07 16:55:02 463

原创 liunx笔记汇总

find命令find命令可以用来遍历文件目录 基本形式 find pathname -option [-print -exec] pathname:要查找的文件目录,.代表当前目录 查找完成后可以执行的action: * -print打印到标准输出 * -exec:对有匹配的文件执行指定的参数命令,{}来代表查到的当前的文件名,一般格式为 * -exec commod {} \;最后要加

2017-08-28 20:20:26 325

原创 一个liunx命令题目引发的对shell的回顾

原题回顾:打印当前文件夹下所有的.txt文件的最后一行到新文件newFile.txt中 其答案最后解答如下#!/bin/bashfor file in `ls .`doif [ -f $file ] && [[ $file =~ .*\.txt ]]thentail -1 $file >> newFile.txtfidone 在实现的过程中遇到了一些问题,也是一些重要的知识点。

2017-08-28 20:12:59 252

原创 伸展树(splay tree)

什么是伸展树?首先,伸展树(splay tree)是一颗二叉搜索树,它的定义是建立在二叉搜索树之上,并且它是基于类似程序局部性原理的假设:一个节点在一次被访问后,这个节点很可能不久再次被访问。那么伸展树的做法就是在每次一个节点被访问后,我们就把它推到树根的位置。正像程序局部性原理的实际效率被广泛证明一样,伸展树在实际的搜索效率上也是非常高效的。尽管存在最坏情况下单次操作会花费O(N)的时间,但是这种

2017-08-20 21:45:10 932

原创 AVL树

什么是AVL树?AVL树,又称为平衡二叉树,它是一种特殊的二叉查找树(Binary Search Tree, BST),其每一个节点的左右子树的高度差不超过1。注意,一个节点的高度是从该节点到叶子节点的最长路径,所以,叶子节点的高度为0,而深度是指一个节点到树根的路径长度,两者是相反的概念。 一棵树的高度等于根节点的高度,而深度等于最大深度的叶子节点的深度,所以一个树的高度和深度是相同的。 二叉查

2017-08-16 17:14:35 2002 1

原创 中缀表达式的计算(栈的应用)

ArrayList和LinkedList的实现方式ArrayList的底层实现是可以增长的数组,LinkedList的底层是使用了双链表。从底层实现来看,我们可以知道,ArrayList 获取元素的时间复杂度仅为常数,而 插入和 删除的时间复杂度都为线性时间复杂度O(n)。而LinkedList则刚好相反,因为底层是链表,所以 插入和 删除的时间复杂度为常数,而 获取元素的时间复杂度却是线性时间复杂

2017-08-09 22:10:38 2823

原创 Java基础之泛型

一些术语参数化类的类型(parameterized type):含有类型参数的类型,例如List<String>原生态类型(raw type):没有类型参数的类型,例如List无限制通配符类型(unbounded wildcard type):例如List<?>原生态类型保留的原因:兼容性List, List<Object>, List<String>, List<?>的讨论形如List的

2017-08-09 21:26:29 338

原创 工厂模式(Factory Pattern)和java反射机制优化思考

GOF的工厂模式是最基础的一种创建型设计模式,其适用于创建同一接口的不同实现子类,其优点是:将使使用者更加方便使用,而不关心具体的创建逻辑缺点是:每增加一个接口的子类,必须修改工程类的相关逻辑(后面我们用java的反射机制进行优化)从上面UML图看到,我们设置了一个Shape接口,并且实现了三个子类,我们通过ShapeFactory来根据不同的名称返回不同的子类实例,通过Fac

2016-05-22 17:07:03 754 1

原创 FormData实现异步传送带文件的表单

今天写项目有个需求,需要异步将表单传到服务器,本来$post一下的事,但是因为表单中含有文件,选择的图片,结果搞了一下午,试了几个插件,像jQuery.form.js,都没用,最后多方查找,看到JS中新增的类FormData可以实现上传,博主抱着试试看的态度,用了一下,可能因为上传图片还有点卡,不过还是成功了,值得高兴,以后这类问题就这样解决了。------------------------

2016-04-25 21:01:42 604

原创 实现html上传图像时预览

今天写项目的时候有个想要在修改个人信息的时候,上传图片可以选择预览,经过多番查找,找到一个比较有效的方法,这也是一个比较常用的需求,这里给大家分享。js代码见下//下面用于图片上传预览功能function imgChange(headInput) { var headPreview=document.getElementById("headPreview"); if(headInput.f

2016-04-23 23:46:32 802

原创 Java操作Excel文件

Java操作Excel文件

2016-04-07 11:48:41 402

原创 SSH整合开发的一些总结

最近做了一个SSH正好的项目,把一些遇到的bug记录下来,给大家共享,同时也给自己上一课 1.程序运行不起来,报Unsupported major.minor version 51.0错误,这是因为编译文件的jdk版本和当前jdk的版本不一致导致的,也也能是由于1.8的jdk太高,有的集成框架还没来得及更新,所以最好使用1.7或1.6的jdk,解决办法是更改编译器的版本,使其符合原来编译的版本即可

2015-06-30 11:45:08 686

原创 Android天气预报小项目的一些总结

1.Json的最少依赖jar包 android使用json时报如下错误Unable to execute dex: Multiple dex files define Lorg/apache/commons/collections/FastHashMap;主要是commons-beanutils和commons-collections中有重复包将commons-beanutil

2015-06-12 23:25:56 1626

pyltp-0.2.1-cp36-cp36m-linux_x86_64.whl

python3.6环境centos编译好的pyltp文件,pip install直接安装,自己编译需要安装很多的库

2019-12-30

Hibernate中文参考文档V3.2(CHM).CHM

HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate中文参考文档V3.2(CHM).CHM

2015-07-21

jdk1.7API.chm

This document is the API specification for the Java™ Platform, Standard Edition. See: Description官方文档

2015-07-21

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

TA关注的人

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