
Java开发
定雨
做个好人
展开
-
JAVA多线程实现的三种方式
Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的转载 2016-12-03 11:58:15 · 332 阅读 · 0 评论 -
Thread类的常用方法
String getName() 返回该线程的名称。void setName(String name) 改变线程名称,使之与参数 name 相同。int getPriority() 返回线程的优先级。void setPriority(int newPriority) 更改线程的优先级。boolean isDaemon() 测试该线程是否为守护线程。void setDaemon(boo原创 2017-11-05 22:37:28 · 526 阅读 · 0 评论 -
线程的五种状态及改变状态的三种方法
1、新状态:线程对象已经创建,还没有在其上调用start()方法。 2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。 3、运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯原创 2017-11-05 22:44:05 · 2519 阅读 · 0 评论 -
进程的五种基本状态 - 操作系统
创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行执行状态:进程处于就绪状态被调度后,进程进入执行状态阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。原创 2017-11-05 23:00:20 · 65789 阅读 · 1 评论 -
JSP和Servlet的区别
1.JSP的本质是Servlet,JVM只能识别Java的类,不能识别jsp的代码,Web容器将jsp代码编译成JVM能够识别的java类。2.jsp更擅长于表现页面显示,Servlet擅长于逻辑控制。3.Servlet没有内置对象,JSP中的内置对象都是通过HttpSevletRequest对象,HttpServletResponse对象,以及HttpServle原创 2017-12-26 15:24:05 · 415 阅读 · 0 评论 -
this和super为什么必须在构造方法第一行
看Head First Java 256页 ,书中提到“this()只能用在构造函数中,且它必须是第一行语句!”,不明白原因,查资料发现知乎已经有相关问题,搬运过来做个记录。https://www.zhihu.com/question/47012546/1:在构造函数中,如果你不指定构造器之间的调用关系,那么编译器会给你加上super()且放在第一行;目的是在初始化当前对象时,先保证了父类对象先初...原创 2018-02-19 18:37:49 · 5869 阅读 · 2 评论 -
B树和B+树
https://www.cnblogs.com/vianzhang/p/7922426.htmlB+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这...转载 2018-03-09 17:02:40 · 625 阅读 · 0 评论 -
mysql使用索引为什么查询速度变快很多?
首先来看看表是否有索引的命令show index from 表名;看到主键索引,索引类型是BTREE(二叉树)正是因为这个二叉树算法,让查询速度快很多,二叉树的原理,就是取最中间的一个数,然后把大于这个数的往右边排,小于这个数的就向左排,每次减半,然后依次类推,每次减半,形成一个树状结构图例如上面的例子,我们不使用索引的话,需要查询11次才把编号为4的数据取出,如果加上索引,我们只需要4次就可以取...转载 2018-03-09 17:14:33 · 5399 阅读 · 0 评论 -
为什么MySQL数据库索引选择使用B+树?
链接:http://blog.youkuaiyun.com/u010870518/article/details/79450295在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近...转载 2018-03-09 17:54:01 · 825 阅读 · 0 评论 -
Java中的栈,堆,方法区和常量池
要说Java中的栈,堆,方法区和常量池就要提到HotSpot,HotSpot是Sun JDK 和 Open JDK中所带的虚拟机。 (Sun JDK 和 Open JDK除了注释不同,代码实现基本上是一样的)Stack(栈):分为VM Stack(虚拟机栈)和Native Method Stack(本地方法栈),不过HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一了。 虚拟机栈: 线程私...原创 2018-03-03 11:19:15 · 1459 阅读 · 1 评论 -
Java中的常量池(字符串常量池、class常量池和运行时常量池)
这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去优快云、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨:在Java的内存分配中,总共3种常量池:1.字符串常量池(String Constant Pool):1.1:字符串常量池在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串常量池是放...转载 2018-03-03 11:23:40 · 525 阅读 · 0 评论 -
JVM-String常量池与运行时常量池
Start with JVM周志明先生著-《深入理解Java虚拟机》,书买回来好几天了,但是最近才准备开始搞一搞了(哭瞎…..)。首先是第一章的Java以及JVM发展历史,大概知道了现行的应用最广泛的Java虚拟机是HotSpot,当然一些商业公司也有使用自己的虚拟机。JVM运行时数据区这是放在Java内存区域与内存溢出异常里面的必备知识,描述了Java虚拟机在运行时的数据区域 ...转载 2018-03-03 11:26:03 · 320 阅读 · 0 评论 -
二叉树的深度和广度优先遍历 - Java实现-2
1、深度优先英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。对于上面的例子来说深度优先遍历的结果就是:A,B,D,E,I,C,F,G,H.(假设先走子节点的的左侧)。深度优先遍历各个节点,需要使用到堆(Stack)这种数据结构。stack的特点是是先进后出。整个遍历过程如下:首先将A节点压入堆中,stack原创 2017-11-05 10:26:11 · 1050 阅读 · 0 评论 -
二叉树的深度和广度优先遍历 - Java实现
树的深度优先遍历需要用到额外的数据结构—>栈;而广度优先遍历需要队列来辅助;这里以二叉树为例来实现。import java.util.ArrayDeque;public class BinaryTree { static class TreeNode{ int value; TreeNode left; TreeNode right;原创 2017-11-04 23:59:36 · 5320 阅读 · 0 评论 -
Redis的 MISCONF Redis is configured to save RDB snapshots问题
Redis问题 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about t原创 2017-10-26 10:14:39 · 1010 阅读 · 0 评论 -
JAVA学习路径
Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”、“倚天剑”。Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助。1. 思考一下学习Java之前,先别急,静下心来好好想想:1)你对学习Java是否有兴趣?2)你是否能静下心来坚持不懈地学习?嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣、原创 2016-12-05 19:57:46 · 1134 阅读 · 0 评论 -
如何做到招聘要求中的「要有扎实的 Java 基础」
如何做到招聘要求中的「要有扎实的 Java 基础」2016/10/20 · 职场 · 6 评论 · java分享到:0玩转Bootstrap(基础)玩转Bootstrap(JS插件篇)进击Node.js基础(二)node+mongodb 建站攻略(一期)本文作者: 伯乐在线 - 左潇龙 。未转载 2016-12-06 10:53:45 · 705 阅读 · 0 评论 -
在eclipse中配置Python开发环境
第一步,在eclipse的 HELP 菜单中点击 install new software第二步,点击 add第三步,输入如下图所示内容第四步,选择安装PyDev第五步,随即开始自动安装,中间会有一个warning,选择信任即可,安装成功后会重启eclipse。第六步,在eclipse中即可通过new pro原创 2016-12-21 14:31:22 · 705 阅读 · 0 评论 -
什么是编译性语言、解释性语言和脚本语言
编译性语言、解释性语言和脚本语言什么是编译性语言、解释性语言和脚本语言 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后转载 2016-10-21 16:33:08 · 632 阅读 · 0 评论 -
Eclipse中修改注释中@author
首先按以下步骤进入要修改的位置: Window --> Preferences --> Java --> Code Style --> Code Templates --> Comments --> Types --> Edits(Window--Preferences--java--代码样式--代码模块 --注释--类型 )(1) 找到原创 2016-12-28 11:21:00 · 483 阅读 · 0 评论 -
多线程(1)
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的原创 2017-09-28 14:13:18 · 217 阅读 · 0 评论 -
Java Socket网络编程
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络) 关于计算机网络部分可以参考相关博客: 《TCP/I原创 2017-10-09 17:30:41 · 312 阅读 · 0 评论 -
多线程(2):进程的三种基本状态及其转换
进程的基本状态: ①就绪(Ready)状态 当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。 ②执行状态 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。 ③阻原创 2017-10-21 01:58:17 · 2382 阅读 · 0 评论 -
MySQL和oracle的常用引擎介绍
在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM。1.简单介绍这两种引擎,以及该如何去选择a.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不原创 2017-10-23 15:37:49 · 18154 阅读 · 3 评论 -
循环与递归的区别
1。递归算法与迭代算法的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。 当然,从理论上说,所有的递归函数都可以转换为迭代函数,反之亦然,然而代价通常都是比较高的。但从算法结构来说,递归声明的结构并不总能够转换为迭代结构,原因在于结构的引申本身属于递归的概念,用迭代的方法在设计初期根本无法实现,这就像动多态的东西并原创 2017-10-25 16:25:03 · 1147 阅读 · 0 评论 -
IntelliJ IDEA和Eclipse对比
IntelliJ IDEA创建一个Project作为你所有工作的代码库,并为其各个组成部分单独创建一个Module。 因此,IntelliJ IDEA的Module就像是一个Eclipse的Project,而Project则和Eclipse工作区(workspace)类似。 虽然不完全像Eclipse的workspace那样包含你所有的工作,但你可以在同一时间打开多个IntelliJ的多个Proj...转载 2018-08-13 21:08:55 · 1320 阅读 · 0 评论