为什么会出现线程池?   思考线程池问题时,我总是会和数据库连接池联想到一起,我个人觉得它们两者的核心思想有很大的相像之处,它们都是利用了一种"池化"的思想,目的都是为了减少连接的创建和销毁.  在多线程开发中,会因为线程数量多,而且很多时侯,每个线程仅仅执行一小段时间就会结束,所以我们需要频繁的创建线程,创建线程也是会消耗系统资源的,当需求很大时,有可能导致系统负载过重而直接崩溃掉.所以,我们就想要实现线程执行完后不用销毁,同时该线程还可以去执行其他任务,因此就出现了线程池。线程池?  什么是线程池呢?通俗易懂的说法--线程池实际上就是线程的池子,基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了很多未死亡的线程,池中线程执行调度由池管理器来处理。当有线程任务时,任务提交到线程池后,就会从线程池中直接寻找空闲的线程为之服务,执行完成后将线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。   在线程池的编程模式下,任务是提交给整个线程池,而不是直接交给某个线程,线程池 继续阅读 >>


董孟愿 18/03/06 21:20:24
线程的创建创建线程具体来说有三种方式,详细内容如下文.继承Thread类详细步骤:1.定义Thread类的子类,并重写该类的run()方法,run()方法被称为线程执行体.2.创建Thread子类的实例,即创建线程对象.3.调用线程对象的start()方法启动该线程.代码示例:/** * Created by dongmengyuan on 18-2-21. */ public class FirstThread extends Thread { //i是FirstThread的实例属性,不是局部变量 private int i; //重写run()方法,run()方法的方法体是线程执行体 public void run() { for( ; i < 100; i++) { //当线程使用继承Thread类时,直接使用this就可以获取当前线程 //Thread对象的getName()返回当前线程 继续阅读 >>


董孟愿 18/02/22 12:45:53
Java和C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进来,墙里面的人却想出来. 今天就来简单总结一下Java虚拟机中的垃圾收集机制. 概述 在介绍GC机制之前,先来说一个小问题. 也许是因为惯性思维吧,导致我一听到垃圾收集,就会不由自主的联想到JVM,大部分人应该也是这样吧,但其实这里要给大家纠正一下,垃圾收集技术其实并不是Java这门语言的伴生产物,事实上,GC的历史比Java语言还要久远.1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. GC需要做什么? 1,WHAT? 哪些内存需要回收? 2,WHEN? 什么时候回收? 3,HOW?   如何回收? 目前内存的动态分配与内存回收技术已经很成熟了,在如此自动划的时代,我们为什么要去费这么大劲去了解他们呢?这也正呼应了文章开头的那句经典的话,Java程序员把内存控制的大权交给了Java虚拟机,所以一旦出现内存泄漏和溢 继续阅读 >>


董孟愿 17/12/18 20:52:43
因为开始学习Spring框架有点晚,所以一直在赶进度,没来得及写博客记录学习过程,确实是一个遗憾吧!本来这种东西遗忘率就挺高的,所以,必须多总结.现在的话.已经学习到<Spring实战>这本书的第二部分了,也就是Web中的Spring.所以就边学边抽时间总结吧,至于前面没来得及总结的第一部分,我打算在利用空闲时间尽快补起来. 参考书籍:<Spring实战>(第四版) Spring通常是用来开发Web应用的.我们会使用Spring的MVC框架来为应用程序添加Web前端部分. 在学习构建Spring Web应用程序之前,先来了解以下Spring MVC的起步吧! Spring MVC起步 Spring MVC基于模型-视图-控制器模式实现. M----Model 模型 V ----View  视图 C----Controller 控制器 Spring MVC可以帮助我们构建像Spring框架那样灵活又松耦合的Web应用程序. 先来简单看一下请求是怎么从客户端发起,经过Spr 继续阅读 >>


董孟愿 17/11/08 14:47:04
 昨天刚更完IDEA下用Maven创建SpringMVC项目的博客,现在回想起刚开始用IDEA创建Web项目并且配置tomcat的时候,死活记不住操作流程,多练了几次才掌握了,所以现在就来贴出我的创建Web项目的详细流程,方便小伙伴们借鉴… 新建Web项目  首先,打开IDEA,新建一个Web项目,具体操作是 右击File -> new -> 点击Project ,跳出一个新框,勾选右边的Web Application选项,如下图: 点击next,填写你的项目名称 点击Finish,然后IDEA就开始创建Web项目了,下来要做的就是导入Web项目所需要的包啦! 导包 点击右上方的代表Project Settings的四方块,如下图: 然后进入Project Settings界面,导入web项目所需的jsp包和servlet包,点击Libraries,再点击绿色的加号,出现下图 点击java,去你自己的文件目录寻找jsp和servle 继续阅读 >>


董孟愿 17/08/18 09:57:04
最近接触了Spring框架,暂且不谈具体的框架知识,环境是编程的基础,对于初学者来说,学习搭建框架的过程是很有必要的,如果长时间不熟悉搭建和配置环境,忘记具体步骤是很常见的现象,所以,现在就记录一下自己的搭建过程,方便自己后来的小伙伴借鉴.. 在搭建Spring框架之前,我看了好多篇博客,发现搭建的方法不止一种,可以说是大同小异,有直接导入包和配置文件的方法,还有直接勾选Spring框架选项的方法,(强大的IDEA已经集成了Spring框架),这两种方法我都试过了,均可以成功搭建maven下的SpringMVC框架 现在来贴出我搭建Spring框架的具体过程,希望可以帮到其他的小伙伴… 第一步:创建maven项目 File -> new project -> maven项目 新建一个maven项目,记得勾选Create from archetype,勾选之后一定要记得选择webapp原型。(注意:有两个后缀为webapp的,一定要看清楚再选) 点击next, 下图里 继续阅读 >>


董孟愿 17/08/17 19:54:47
 看其他东西看烦了,就翻着看看java基础,发现好多东西学了之后没有整理出来,现在再去看的话觉得好陌生,仿佛从来没看过一样……,今天就来总结一下java里面对于时间与日期的处理这部分的内容   在这里就不详细介绍很早之前的时间度量方式了,感兴趣的小伙伴可以找找资料了解一下,现在就简单介绍一下Date和Calendar吧… 时间轴上瞬间的Date  我们知道,想要取得系统时间,具体来说有两种方法:    方法一是System.currentTimeMillis()方法,这个返回的是long类型的整数,代表的是1970年1月1日0时0分0秒0毫秒至今经过的毫秒数。    方法二是使用Date实例来取得系统时间描述,不过,两种方法并没有什么大区别,Date也是偏向机器的时间观点.  可以看出,这两种方法取得的是机器的时间观点,代表时间轴上的某一瞬间,但是需要思考的是,这一长串毫秒数对与我们人类的阅读有什么意义??? package com.Datetime; import java.u 继续阅读 >>


董孟愿 17/08/15 20:21:48
前言   对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对。。 实现   因为我自己当初想转载的时候却不知道该怎么转载,所以学会了之后就把方法写出来,帮助那些想转载却不知道该怎么转载的人(大神勿笑)。   我们首先打开要转载的博客,然后鼠标右键就会出现下面的菜单:   我们点击【审查元素】,就会出现当前HTML页面的代码,如下:   我们选中“article_content”从图片左边我们也可以看到,博客的内容已经被我们选中了,也就是我们想要转载的内容,然后右键,就会出现下面的菜单:   我们选中【Copy as HTML】就可以把其中要转载的内容复制下来,接下来的就是粘贴了。   我们先新建一篇文章,打开markdown编辑 继续阅读 >>


董孟愿 17/08/08 17:29:28
注:初学Java虚拟机,参考书籍《深入理解Java虚拟机》   最近,在学习spring框架,看书看的是云里雾里的,感觉看不下去了…..于是,就决定和其它东西换着来看,所以,就有了下面这篇博客..^-^   今天看了《深入理解Java虚拟机》的Java内存区域,决定写篇博客总结下,这块基本全是文字概念,难免有些枯燥,就权当给自己做做笔记,方便记忆…   开始我们就先来看看Java的内存区域划分吧. 运行时数据区域   Java虚拟机在执行Java程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域.   下来,我们仔细聊聊Java虚拟机所管理的内存包括哪些运行时数据区域吧..    贴一张Java虚拟机运行时数据区的图片如下:         在网上又找到了一张更清晰,更好理解的图呦.          下面,针对上图的各个数据区做下详细介绍 程序计数器  程序计数器(Program Counter Register)是一块较小的内存空间 继续阅读 >>


董孟愿 17/08/08 16:33:51
  时间过的可真快呀,暑假留校时间已经进入倒计时了。突然觉得今年留校比去年暑假过的还要快啊,真是太可怕了…….   人呢,还是要有计划,不然忙起来会发现没有方向,东忙一下,西忙一下,到最后,觉得啥都弄了一半,再整理起来发现工作量变得更大了,反而无从下手。   留校的前部分时间是和小伙伴写小组的图书管理系统,现在图书管理系统第一版基本落幕,是时候抓紧时间学习自己方向的知识了,感觉有好多好多的东西啊,一直没有变过的想法就是不管开始学什么了,java基础是不能放松的,知识体系真的是太博大精深了,觉得自己现在学到的东西在java语言自身体系中实在是微不足道,九牛一毛,想想都心痛,这也是我在看其他东西之余,总爱翻看java书的最大原因了吧。   说说自己的想法吧,唉,想想寒假的时候给自己安排了很多东西,但是由于种种原因,寒假期间也只是学习了一点前端小知识和数据库方面的东西,说起来真是惭愧呀,现在来说要学的东西真的好多好多——-框架,JVM,网络编程,看各种源码,算法,找项目等等……想想都头大。   不多想 继续阅读 >>


董孟愿 17/08/07 09:47:17