自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

转载 Java的四种线程池以及参数介绍

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

2016-10-05 19:57:45 914

原创 线程通信机制---共享内存:消息传递

在并发编程中,我们必须考虑的问题时如何在两个线程间进行通讯。这里的通讯指的是不同的线程之间如何交换信息。目前有两种方式:1、共享内存2、消息传递(actor 模型) 共享内存共享内存这种方式比较常见,我们经常会设置一个共享变量。然后多个线程去操作同一个共享变量。从而达到线程通讯的目的。例如,我们使用多个线程去执行页面抓取任务,我们可以使用一个共享变量count来记录任务

2016-09-25 17:27:08 2476

转载 线程同步的五种方法

线程同步的方式包括:互斥锁、读写锁、条件变量、信号量和令牌。互斥锁和读写锁:提供对临界资源的保护,当多线程试图访问临界资源时,都必须通过获取锁的方式来访问临界资源。(临界资源:是被多线程共享的资源)当读写线程获取锁的频率差别不大时,一般采用互斥锁,如果读线程访问临界资源的频率大于写线程,这个时候采用读写锁较为合适,读写锁允许多个读线程同时访问临界资源,读写线程必须互斥访问临界资源。读写

2016-09-25 16:05:29 744

转载 MySQL使用索引的场景及真正利用索引的SQL类型

1. 为什么使用索引在无索引的情况下,MySQL会扫描整张表来查找符合sql条件的记录,其时间开销与表中数据量呈正相关。对关系型数据表中的某些字段建索引可以极大提高查询速度(当然,不同字段是否selective会导致这些字段建立的索引对查询速度的提升幅度不同,而且索引也并非越多越好,因为写入或删除时需要更新索引信息)。对于MySQL的Innodb储存引擎来说,大部分类型的index

2016-09-25 14:03:35 239

转载 数据库中主键和索引的区别以及使用场景

主键与索引的区别如下: 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认不为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那

2016-09-25 14:02:56 1515 1

转载 数据库--SQL查询优化

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备

2016-09-25 14:02:14 215

转载 数据库--SQL索引基础

SQL索引目录   索引基础知识  聚集索引  非聚集索引  认识执行计划  灵活设计数据库      页和区要想做好索引优化,知道索引的存储结构是至关重要的。谈到存储就需要了解SQL中的页和区的概念:  SQL中存储数据的基础单位就是页,一个页大小为8K,数据库可以将数据从逻辑上分成页,磁盘的I/O操作就是在页级执行。页包信三项内容:96字节大小的标头,存

2016-09-25 14:01:25 280

转载 数据库--使用索引的注意事项及常见场景

一、索引的原理与作用,各种书籍和网络上的介绍可以说是铺天盖地,基本上主流数据库系统的也都是一致的。选择索引字段的原则,比如外键字段、数据类型较小的字段、经常用于查询或排序的字段、表关联的字段等等,在此不做赘述。本人在工作中见到过很多人创建的索引,回想自己以前也会有理论知识空洞的体会,总感觉理论知识无法与具体的工作问题相匹配。在此仅以工作学习中积累的一点经验和问题场景整理以飨读者。先把常见的

2016-09-25 14:00:32 334

转载 数据库--MySQL体系结构

mysql体系结构:     由:连接池组件、管理服务和工具组件、sql接口组件、查询分析器组件、优化器组件、                缓冲组件、插件式存储引擎、物理文件组成。     mysql是独有的插件式体系结构,各个存储引擎有自己的特点。                  mysql各个存储引擎概述:     innodb存储引擎:[/colo

2016-09-25 13:59:49 301

转载 数据库--索引的类型及特点

前面说了很多关于索引的问题,今天来回顾下索引最基础的东西,分类和特点。一、什么是索引 索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些

2016-09-25 13:59:05 1107

转载 多线程--线程间通信(二)

上篇说到了线程间的同步互斥和比较经典的消费者生产者问题,其中涉及到了线程间通信和线程锁这两个概念,下面就来谈谈这两个概念和具体实现方法。一、线程状态正式开始之前,先来普及线程的几种状态:    1. 新建状态(New):新创建了一个线程对象。    2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池

2016-09-25 13:57:57 334

转载 多线程--同步互斥&生产者消费者(一)

一、线程同步&互斥在实际应用中,多个线程往往会共享一些数据,并且各个线程之间的状态和行为是相互影响的。线程之间的影响有两种,一种是线程间的互斥,另一种是线程间的同步。---线程安全(Thread-Safe)---线程间的互斥---线程间的同步线程之间的关系大致可以分为两类1、线程之间通过对资源的竞争,包括共享的数据和硬件资源,所产生的相互制约关系,这类线程间的主

2016-09-25 13:56:34 1123

转载 JAVA基础--JAVA的四种引用

JAVA对象的状态转换:1、强引用程序创建一个对象,并把这个对象赋给一个引用变量。被引用的Java对象绝不会被垃圾回收机制回收。2、软引用  (SoftReference)系统内存足够时,不会被回收;系统内存不足时,被回收。     通过SoftReference被实现。3、弱引用  (WeakReference)当系统垃圾回收机制运行时

2016-09-25 13:55:09 215

转载 JAVA基础--垃圾回收机制及算法

一、垃圾回收机制的作用主要有两个作用:  1、跟踪并监控每个Java对象,当某个对象处于不可达状态时,回收该对象所占用的内存。2、清理内存分配、回收过程中产生的内存碎片。二、那些对象可以被回收只要该对象还被引用(这里应该指强引用),就不能被回收。当一个对象没被引用时,GC就会尝试回收它。那么,又怎么判断一个对象是否存活。这里说两种方法:1、引

2016-09-25 13:54:15 288

转载 JAVA线程锁及部分特性

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。一、分类1、自旋锁2、自旋锁的其他种类3、阻塞锁4、可重入锁5、读写锁6、互斥锁7、悲观锁8、乐观锁9、公平锁10、非公平锁11、偏向锁12、对象锁

2016-09-25 13:53:34 237

转载 JAVA基础--集合类详解及问题

在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap等等!

2016-09-25 13:52:45 170

转载 JAVA基础--HashSet 和 HashMap

总体介绍之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。HashMap实现了Map接口,允许放入null元素,除该类未实现同步外,其余跟Hashtable大致相同,跟TreeMap不同,该容器

2016-09-25 13:51:44 208

转载 JAVA基础--LinkedHashSet 和 LinkedHashMap

总体介绍如果你已看过前面关于HashSet和HashMap,以及TreeSet和TreeMap的讲解,一定能够想到本文将要讲解的LinkedHashSet和LinkedHashMap其实也是一回事。LinkedHashSet 和 LinkedHashMap 在Java里也有着相同的实现,前者仅仅是对后者做了一层包装,也就是说LinkedHashSet里面有一个LinkedHas

2016-09-25 13:50:46 417

转载 JAVA基础--多线程实践

Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程:Tread thread = new Thread();执行该线程可以调用该线程的start()方法:thread.start();在上面的例子中,我们并没有为线程编

2016-09-25 13:50:00 169

转载 JAVA基础--Synchronized

在我们的实际应用当中可能经常会遇到这样一个场景:多个线程读或者、写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问。在java中为了实现临界区提供了同步机制。当一个线程试图访问一个临界区时,他将使用一种同步机制来查

2016-09-25 13:49:10 239

转载 JAVA基础--I/O

一.理论准备流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行,设备可以是文件、网络、内存等。流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序(小马哥说的是机器)为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流,可以将流想象成一个“水流管道”(很多资料都这么讲的),自然就出现了方向的概念。流把I/

2016-09-25 13:48:21 190

转载 JAVA基础--类加载&对象创建过程

类加载过程:1, JVM会先去方法区中找有没有相应类的.class存在。如果有,就直接使用;如果没有,则把相关类的.class加载到方法区2, 在.class加载到方法区时,会分为两部分加载:先加载非静态内容,再加载静态内容3, 加载非静态内容:把.class中的所有非静态内容加载到方法区下的非静态区域内4, 加载静态内容:4.1、把.class中的所有静态

2016-09-25 13:47:39 188

转载 JAVA基础--JVM原理(二)

这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程JVM 系统线程每个线程相关的程序计数器栈本地栈栈限制栈帧局部变量数组操作数栈动态链接线程共享堆内存管理非堆内存即时编译方

2016-09-25 13:46:43 227

转载 JAVA基础--JVM原理(一)

一、java虚拟机的生命周期:  Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main

2016-09-25 13:45:57 183

转载 JAVA基础--JMM(二)

深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来

2016-09-25 13:41:06 624

转载 HashMap的容量与扩容

有几个重要的常量:static final int DEFAULT_INITIAL_CAPACITY = 1 4;//默认的桶数组大小static final int MAXIMUM_CAPACITY = 1 30;//极限值(超过这个值就将threshold修改为Integer.MAX_VALUE(此时桶大小已经是2的31次方了),表明不进行扩容了)static final float

2016-09-24 13:46:07 943

转载 java的内存回收机制

今天在别人的博客上看到的,觉得挺详细的就转载过来收藏下来了。1. 垃圾回收的意义  在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的

2016-08-12 10:03:55 233

转载 mysql的查询、子查询及连接查询

一、mysql查询的五种子句        where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数)         1、where常用运算符:            比较运算符                > ,  ),>=   ,                   in(v1,v2..vn)   

2016-08-09 14:36:52 190

空空如也

空空如也

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

TA关注的人

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