- 博客(53)
- 收藏
- 关注
原创 锁
1、偏向锁之所以引入偏向锁,是为了让线程获得锁的代价更低。当一个线程访问同步块并获取锁的时候,会在对象的对象头(对象头包括两部分的信息:一部分是”Mark Word“,主要存放的是哈希码、对象的分代年龄、锁的标记等信息;另一部分是对象的类型指针)和栈帧中的锁记录中存储锁偏向的ID,以后该线程在进入方法的同步块的时候,就检查这个ID(可以理解为一种标记,是一种身份的标识),如果测试成功,表明对象已经获
2017-08-13 22:36:02 338
转载 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树) BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
2017-07-26 10:06:51 459
原创 Java线程池
1.Java通过Executors提供四种线程池,分别为: (1)newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 (2)newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 (3)newScheduledThreadPool创建一个定长线程池,支持定时
2017-07-16 22:35:34 340
原创 排序
1.插入排序 每步将一个带排序的记录,按其关键字值的大小插入前面已经排序的文件中适当的位置上,直到全部插入完为止。 (1)直接插入排序 把待排序的记录按其关键字的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 (2)希尔排序(shell排序) 假设有n个数字,选定第一个增量d1=n/2,把全部记录按此值从第一个记录起进行分组,所
2017-07-16 09:57:34 312
原创 版本迭代
版本迭代: 1.alpha:内测版 2.beta:公测版 3.rc:候选版本 4.stable:稳定版 5.RTM:工厂版 6.OEM:定制版 7.EVAL:评估板 8.RTL:零售版
2017-07-16 09:55:37 1024
原创 垃圾收集器
1.CMS收集器(标记清除) 是一种以获取最短回收停顿时间为目标的收集器。基于标记清除算法实现,整个过程分为以下4个步骤: (1)初始标记:仅仅只标记一下GC Roots能直接关联的对象,速度很快; (2)并发标记:进行GC Roots Tracing; (3)重新标记:修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,比初始标记
2017-05-07 10:32:00 375
原创 索引
1.概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含对数据表里所有记录的引用指针。数据库索引就像一本书前面的目录,能加快数据库的查询速度。 索引分为聚簇索引和非聚簇索引,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样;聚簇索引能提高多行检查的速度,而非聚簇索引对单行的检查很快。 2.普通索引 没
2017-04-17 09:46:33 550 2
原创 查找算法
package com.bocloud.search;public class Search { /** * 顺序查找 * * @param objects * @param object * @return */ public int search(Object[] objects, Object object) {
2017-03-26 16:31:58 377
原创 图
1.有向图:图的边有方向。边的取值范围为0~n(n-1),具有n(n-1)条弧的有向图称为有向完全图。 2.无向图:图的边没有方向。边的取值范围为0~n(n-1)/2,具有n(n-1)/2条弧的无向图称为无向完全图。 3.度:和顶点相关联的边的数目。以顶点为头的弧的数目称为顶点的入度,以顶点为尾的弧的数目称为顶点的出度。 4.路径的长度:路径上的边或者弧的数目。 5.图的遍历:从图中某一个顶
2017-03-26 16:27:58 361
原创 树
1.树的基本术语 度:结点拥有的子树数。 叶子节点:度为0的结点。 分支节点:度不为0的节点 树的度:树中各节点度的最大值 深度:树中结点的最大层次2.二叉树 满二叉树:总结点数为:2^n-1,n表示树的深度 完全二叉树:叶子节点在最后两层,除最后一层外都是满的,且最后一层不能跳。只缺少右边的若干结点。3.二叉树的遍历 (1)先根序遍历 访问根节点——>左子树——>右子树
2017-03-22 19:13:32 341
原创 队列
1.队列:只允许在表的一端插入,在表的另外一端进行删除的线性表。特定是先进先出。 2.顺序队列:由一个存放队列元素的一维数组,以及分别指示队头和队尾的指针所组成。队尾指针指示队尾元素在一维数组中的当前位置,队头指针指示队头元素在一维数组中的当前位置的前一个位置。 3.循环队列的算法实现package com.bocloud.queue;/** * 操作队列的接口 * * @author
2017-03-05 21:41:39 375
原创 栈
1.栈:是限制仅在表的一端进行插入和删除操作的线性表。特点是后进先出。 2.顺序栈的算法实现package com.bocloud.stack;/** * 栈操作接口 * * @author dongkai * */ public interface StackIntf { public void push(int x); public int pop(); publ
2017-03-05 21:15:03 434
原创 数组和字符串
1.数组:是一种特殊的线性表,表中的数据元素本事也是一个数据结构,即元素的值可以再分解。数组是由同一种数据类型的数据元素组成。它的每一个元素由一个值和一组下标确定。 2.字符串:一组常用的字符组成的有限序列。 3.串的长度:串中字符的数目n称为串的长度。空格也是一种字符。 4.非空字串个数计算:n*(n+1)/2 5.两个串相等:长度相等并且各个对应位置的字符都相等。
2017-03-05 21:09:46 344
原创 线性表——循环链表和双向链表
1.循环链表:首尾相连的链表。 2.单循环链表:在单链表中,如果最后一个结点的链域值不是NULL,而是指向头结点,则整个链就形成了一个环。 3.双向链表:链表的每一个结点中有2个指针域,一个指向直接后继,一个指向直接前驱。 4.双向循环链表:将双向链表中的头结点和尾结点链接起来。 5.判断双向循环链表为空的条件:头结点的前驱和后继指针均指向了自己。 6.算法package com.bocl
2017-03-01 09:38:15 853
原创 线性表——单链表
1.链表:单链表、循环链表和双向链表 2.链表:用一组任意的存储单元存储线性表的数据元素,数据元素之间的逻辑关系借助指示元素位置的指针来表示,存储数据元素的节点包括2个域:一个数据域,存储数据元素的基本信息,一个指针域存储直接后继元素的存储位置。 3.单链表:链表中每个节点只含有一个指针域。 4.算法实现package com.bocloud.link;/** * 节点类 * * @a
2017-02-20 17:03:04 396
原创 线性表——顺序表
1.线性结构:线性表、栈、队列和串 2.线性表主要的物理存储结构有两种:顺序存储结构和链式存储结构。用顺序存储结构存放的线性表称为顺序表,用链式存储结构存放的线性表为线性链表。 3.顺序表:在内存中开辟一片连续的存储空间,用一组连续的存储单元依次存放这些数据。 特点:在逻辑上相邻的数据元素,它们的物理位置也是相邻的。 优点:(1)随机存取元素容易实现;(2)简单直观
2017-02-16 23:08:50 363
原创 绪论
1.基本逻辑结构有:集合、线性结构、树形结构、图形结构。 2.算法的重要特性:有穷性、确定性、可行性、输入、输出。 3.算法分析:正确性、可读性、健壮性、高效率。 4.时间复杂度:算法中包含简单操作的次数 5.字符串在内存中有一个’\0’的结束标志:比如“hello!”,在内存中占7个字节 6.函数调用的执行过程 在运行被调用函数之前: (1)将所有的参数、返回
2017-02-16 21:11:09 313
转载 Java程序员面试题集(1-50)
转载自:http://blog.csdn.net/jackfrued/article/details/17339393Java程序员面试题集(1-50) 一、Java基础部分 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 2
2016-12-11 09:02:20 472
原创 Java设计模式——单例
单例模式 单例模式模式是一种常见的软件设计模式。在它的核心结构中,只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 意图:保证一个类只有一个实例,并提供一个访问它的全局访问点 主要解决:一个全局使用的类平凡创建与销毁 何时使用:当你想控制实例数目,节省系统资源的时候 关键代码:构造函数是私有的 一个简单的例子如下: package com.bocloud.s
2016-12-10 09:39:04 361
转载 Java就业指导
Java就业指导 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的ju
2016-11-28 09:31:40 427
原创 python os模块
1.概述 Python os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。(一语中的) 2.常用方法 (1)os.name() 输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix' (2)os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的
2016-11-27 23:01:52 405
原创 python
python模块参数说明: 编译: python setup.py build 安装: python setup.py install 生成压缩包: python setup.py sdist 生成NT平台包(.exe):python setup.py bdist_wininst
2016-11-27 23:01:24 1045
原创 Ansible
Ansible在运行playbook的时候,第一件事就是gathering facts,从他连接到的服务器上收集各种信息。这些信息包括:操作系统、主机名、所有网络接口的IP地址和Mac地址等。你就可以在之后的playbook中使用这些信息。 1.playbook的YAML格式: 文件的起始: --- 以三个减号开头,也可以不用,不会影
2016-11-27 23:00:27 1145
原创 docker
1.运行容器 docker run -i -t ubuntu /bin/bash -i 标志保证容器中STDIN是开启的 -t 为创建的容器分配一个伪tty终端 exit 退出当前的容器 2.查看系统中容器的列表
2016-11-27 22:59:44 480
原创 异常
1.分类 所有的异常都是由Throwable继承而来,在下一层分为2个分支:Error和Exception。 Error:描述了Java运行时系统的内部错误和资源耗尽错误。 在Exception下面又分为2个分支: RuntimeException:程序错误导致的异常 IOException:I/O错误导致的异常
2016-11-27 22:58:51 224
原创 Reflection
1.反射 能够分析类能力的程序称为反射。反射机制可以用来: (1)在运行中分析类的能力 (2)在运行中查看对象 (3)实现通用的数组操作代码 (4)利用Method对象,这个对象很想C++中的函数指针 常用方法: (1)static Class forName(String classN
2016-11-27 22:58:22 304
原创 Interface
1.接口是用来描述类具有什么功能,而并不给出每个功能的具体实现。接口中所有的方法自动属于public。因此在接口声明中,可以不提供关键字public,不过在实现接口时,必须把方法声明为public,否则编译器将认为这个方法的访问属性是包可见性,即类的默认访问属性。接口中的域将被自动设置为pubic static final。在接口中还可以定义常量。 2.接口绝不能含有实例域,也不能在
2016-11-27 22:57:54 303
原创 方法总结
1.泛型数组列表 (1)ArrayList() 构造一个空数组列表 (2)ArrayList(int initialCapacity) 指定容量构造一个空数据列表,参数表示数组列表的最初容量 (3)boolean add(T obj) 在数组列表的尾端添加一个元素,永远返回true (4)int size()
2016-11-27 22:57:13 284
原创 Java面向对象
类: 具有相同属性和相似行为的一类事物的抽象! 相同的属性:用数据来表示即可 相似的行为:用方法or函数表示 找出相似的行为和相同的属性的过程就是抽象 其中找出相同属性称为数据抽象 找出相似行为称为过程抽象 对象: 类的实例就是对象(创建一个类实例,创建一个对象) 类名 对象引用
2016-11-27 22:56:40 314
原创 spring boot
注解: @RestController spring关注并处理web请求@RequestMapping 路由信息@EnableAutoConfiguration 自动配置@ComponentScan@EntityScan@Spr
2016-11-27 22:55:58 286 1
原创 switch
case标签可以是: 1.类型为char、byte、short或int的常量表达式 2.枚举常量 3.从Java SE 7开始,case标签可以是字符串字面量
2016-11-27 22:55:11 400
原创 Java字符串、输入和格式化输出
1.String、StringBuilder和StringBuffer String是不可变的。而StringBuilder和StringBuffer是可变的。 StringBuilder和StringBuffer的默认大小是16. StringBuilder适合于单线程程序,是线程不安全的;StringBuffer是线程安全的。 2.输入 Sca
2016-11-27 22:54:33 718
原创 Java基本数据类型
在Java中一共有8中基本类型,其中有4种整型、2中浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和一种表示真值的boolean类型 1.整型 int 4字节 Integer 1字节=8位 short 2字节 Shor
2016-11-27 22:53:55 252
原创 Criteria
Hibernate之Criteria查询: 由于采用Hql语句查询,会发出多余的sql命令,查询效率低,所以我们采用Criteria查询,效率比较高。 Criteria查询的基本语句如下: Criteria criteria=session.createCriteria(Emp.class); criteria.add(Restrictions.li
2016-11-27 22:52:51 381
原创 使用Java操作数据库的步骤
1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 2.获取数据库连接 public java.sql.Connection getConnection(){ if(conn ==null){ try { conn=DriverManag
2016-11-27 22:52:09 561
原创 Hibernate
今天开始学习三大框架之一Hibernate。通过今天的学习让我明白了,Hibernate主要完成的是数据库的连接及访问。主要简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作,整个过程分为以下几步: 1.加jar包,主要包括Hibernate的核心包,支持包,驱动程序,日志包 Hibernate核心包主要是点击鼠标右键添加的,新建项目,右击,myeclipse
2016-11-27 22:51:29 271
原创 easyui
今天学习的是easyui和一个中国人写的框架nutz。具体主要是使用Ajax技术配合框架进行数据查询,返回json格式的数据给easyui界面。真个过程分为以下几步: 1.到easyui官网上下载easyui相关文件。新建动态web工程,把easyui文件中的jquery.easyui.min.js、jquery.js、jquery.min.js、icons、images、themes、lo
2016-11-27 22:50:46 345
原创 Hibernate连接Mysql数据库注解
Hibernate注解写法,就是在项目添加Hibernate支持的时候选择Annotations属性。然后就可以用注解的形式简单的完成映射。再也不需要写映射文件了。我们在后面配置文件中直接拖实体类就可以。具体如下: @Entity @Table(name="t_emp") public class Emp { @ManyToOne @JoinColumn(
2016-11-27 22:50:07 1098
原创 Hibernate测试
//1 加载hibernate.cfg.xml配置文件及映射信息 //Configuration cfg=new Configuration();//这么写表明默认加载文件为properties Configuration cfg=new Configuration().configure();//默认会在src下搜索hibernate.cfg.xml文
2016-11-27 22:49:31 383
原创 Hql
list()方法可以向session缓存中放入对象,不能从Session缓存中取对象 list()方法直接查询的是对象,把查询出来的对象放session中 iterate()方法不仅能够向session缓存中放入对象,而却能够从Session缓存中取对象 iterate()方法直接查询的是ID,把查询出来的ID放session中。当你想要得到对象的某些属性时,又会发出一条
2016-11-27 22:48:47 301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人