摘要: 前言 如果一个代码块被synchronized修饰了,当一个线程获取了相应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的释放,现在有这么一种情况,这个获取锁的线程由于要等待IO或者其他原因(比如调用sleep方法)被阻塞了,但是又没有释放锁,其他线程只能干巴巴地等着,在这种情况下,非常 阅读全文
posted @ 2018-08-01 15:44 StoneGeek 阅读(909) 评论(0) 推荐(0) 编辑
摘要: 前言 通过并发编程的形式,可以将多核CPU的计算能力发挥到极致,性能得到提升,能够让我们更充分地利用系统资源,与此同时,必须要保证原子性、有序性、可见性,才能保证程序不会出现问题 一、原子性 (1)解释 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行 阅读全文
posted @ 2018-07-31 18:28 StoneGeek 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 一、常用命令 1、查看引擎(默认为InnoDB) 查看mysql提供的存储引擎: show engienes 查看mysql当前默认的存储引擎: show variables like '%storage_engine%' 查看某张表用了什么引擎: show create table 表名 2、修改 阅读全文
posted @ 2018-07-30 21:06 StoneGeek 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 一、request与session的区别 request简介 request范围较小一些,只是一个请求。 request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请求完毕之后,request里边的内容也将被释放点 。 简单说就是你在页面上的一个操作,request 阅读全文
posted @ 2018-07-22 18:09 StoneGeek 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 简介 首先,说一下在数据结构中为什么要引入树这种结构,在我们上篇文章中介绍的数组与链表中,可以发现,数组适合查询这种静态操作(O(1)),不合适删除与插入这种动态操作(O(n)),而链表则是适合删除与插入,而查询效率则就比较慢了,本文要分享学习的树就是为了平衡这种静态操作与动态操作的差距。 一、二叉 阅读全文
posted @ 2018-07-22 13:46 StoneGeek 阅读(5318) 评论(0) 推荐(0) 编辑
摘要: 一、数组 数组的定义 格式一: 元素类型[] 数组名 = new 元素类型[元素的个数或数组长度] 示例: int[] array1 = new int[2]; array1[0]=1; array1[1]=2; array1[2]=3; 格式二: 元素类型[] 数组名 = new 元素类型[]{元 阅读全文
posted @ 2018-07-21 16:33 StoneGeek 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 前言 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类、实现Runnable接口、使用Callable和Future),但是这样也有一点问题,就是如果并发的线程数量很多,创建线程、销毁线程都是需要消耗时间、 阅读全文
posted @ 2018-07-20 23:09 StoneGeek 阅读(9602) 评论(1) 推荐(1) 编辑
摘要: 摘要 对于Java开发人员来说,能够熟练地掌握java的集合类是必须的,本节想要跟大家共同学习一下JDK1.8中HashMap的底层实现与源码分析。HashMap是开发中使用频率最高的用于映射(键值对)处理的数据结构,而在JDK1.8中HashMap采用位桶数组+链表+红黑树实现的,现在我们深入探究 阅读全文
posted @ 2018-07-20 14:40 StoneGeek 阅读(4282) 评论(2) 推荐(3) 编辑
摘要: 一、B 树 1、B-Tree介绍 B-树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点; 定义 B-Tree是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿 阅读全文
posted @ 2018-07-18 15:11 StoneGeek 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 一、算法 1、算法是对待定问题求解步骤的一种描述 2、衡量算法的指标: 时间复杂度:执行这个算法需要消耗多少时间,即算法计算执行的基本操作次数 空间复杂度:这个算法需要消耗多少空间,即算法在运行过程中临时占用存储空间大小的度量,强调的是辅助空间的大小(对数据进行操作的工作单元和存储一些计算的辅助单元 阅读全文
posted @ 2018-06-10 10:53 StoneGeek 阅读(4861) 评论(2) 推荐(0) 编辑
摘要: 一、排序的分类 1、插入排序法 直接(简单)插入排序、希尔排序 2、交换排序法 冒泡排序、快速排序 3、选择排序法 直接(简单)选择排序、堆排序 4、归并排序 二路归并、多路归并 5、其他线性排序 基数排序、桶排序、计数排序 二、算法复杂度 稳定性是指如果存在多个具有相同排序码的记录,经过排序后,这 阅读全文
posted @ 2018-06-09 16:27 StoneGeek 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 一、单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的每一条到达服务端的命令都不会立刻执行,所有的命令都会进入一个队列中,然后逐个执行。并且多个客户端发送的命令的执行顺序是不确定的。 阅读全文
posted @ 2018-06-08 11:34 StoneGeek 阅读(1230) 评论(0) 推荐(0) 编辑
摘要: 物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品 阅读全文
posted @ 2018-06-05 15:51 StoneGeek 阅读(118174) 评论(4) 推荐(8) 编辑
摘要: 一、ubuntu安装svn 1、apt-get安装 命令:sudo apt-get install subversion 2、查看svn是否安装成功 命令:svn 3、创建SVN目录(/home/sxk) 命令:sudo mkdir svn sudo mkdir repository 4、更改rep 阅读全文
posted @ 2018-06-04 09:14 StoneGeek 阅读(661) 评论(0) 推荐(0) 编辑
摘要: Git是一个开源的分布式版本控制系统,可以有效、高效的处理从很小到非常大的项目版本管理。使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务器上。 一、环境 VMware创建ubuntu虚拟机作为Git服务器,而客户端在windows系统下 阅读全文
posted @ 2018-06-01 11:06 StoneGeek 阅读(613) 评论(0) 推荐(0) 编辑