自定义博客皮肤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)
  • 收藏
  • 关注

原创 Volatile关键字

package volatileTest;    public class RunThread extends Thread {     private boolean isRunning = true;     public boolean isRunning(){      return isRunning;     }     public void setRunning(bool

2017-08-08 21:52:54 178

原创 面试之JDBC总结

一、相关概念1、 什么是JDBC       JDBC (Java Data Base Connectivity,java 数据库连接)是一种用于执行sql语句的java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。2、 JDBC架构        JDBC API支持两层和三层处理模型进行数据库访问,但一般的JDBC体系结构由两层组成:

2017-06-20 16:27:28 4715

原创 String字符串

public static void main(String[] args) { String str1 = "hello"; String str2 = "he"+"llo"; String str3 = "he"+new String("llo"); System.out.println(str1 == str2);//true System.out.println(str

2017-06-19 17:25:40 235

转载 JAVA的位运算与二进制转换

Java的位运算符与二进制转换转换:Java整型数据类型有:byte、char、short、int、long。要把它们转换成二进制的原码形式,必须明白他们各占几个字节。,一个字节==8位数 数据类型                           所占位数      byte                                       8       b

2017-06-09 11:54:22 1450

原创 Java并发容器和框架

1.       ConcurrentHashMap ConcurrentHashMap是线程安全并且高效的HashMap。 1.1   为什么使用ConcurrentHashMap?(1)      HashMap 是线程不安全的,在多线程环境下使用HashMap的put操作会使Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next指针将永远不为null,

2017-05-04 17:25:14 1163

原创 线程安全与锁优化

1.1   java中的线程安全线程安全是限定在多个线程之间存在共享数据访问前提下的,按照线程安全的安全程度,各种操作的共享数据可以分为:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。线程安全的实现方法:同步和锁机制(1)互斥同步:是常见的一种并发正确性保障手段。同步是指子啊多个线程访问共享数据时,保证数据在同一时刻只能被一个(或一些线程,在使用信号量的时候)线程使用。而

2017-05-02 22:31:06 207

原创 java 内存模型与线程

Java内存模型与线程  1.1  硬件效率与一致性 多任务处理是在现在计算机操作系统中几乎已经是一项必备的功能了。让计算机同时处理几项任务不仅因为计算机的运算能力强大,还因为计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、或网络通信或数据库访问上,这样就导致处理器大部分时间都处在等待其他资源的状态。    由于计算机的存储设备与处理

2017-05-02 16:14:52 222

原创 虚拟机类加载机制小结

1.1虚拟机的类加载机制虚拟机的类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。在java语言里面,类型的加载、连接和初始化都是在程序运行期间完成的,java里天生动态扩展的语言特性就是依赖于运行期间动态加载和动态链接这个特点实现的。        类加载顺序:类从被加载到虚拟机内存开始,到卸载处内

2017-05-02 16:00:53 349

原创 垃圾收集器

对于程序计数器、虚拟机栈、本地方法栈随着线程而生,随着线程而灭,在这几个区域内就不需要过多的考虑垃圾回收的问题,因为方法结束或线程结束后,内存自然就跟着收回了。而java堆和方法区则不一样,压机回收器所关注的也是这部分内存。1. 如何判断对象已死?1.1 引用计数算法    引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它,计数器值就加1;当引用失效时,计数器值就减1;任何

2017-04-27 11:17:59 227

原创 java内存区域

Java 虚拟机在执行java程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存包括以下几个运行数据区域:程序计数器,虚拟机栈,本地方法栈,堆,方法区(1)程序计数器:程序计数器是一块较小的内存区域,可以看作是当前线程所执行

2017-04-27 09:45:55 185

原创 单例模式与多线程2

接 单例模式与多线程1.6 使用static 代码块实现单例模式  由于静态代码块在类加载时就已经执行了,所以可以应用静态代码块的该特性来设计单例模式。package testSingleton2;public class MyObject { private static MyObject myObject = null; private MyObject(){} stat

2017-04-26 17:54:36 174

原创 单例模式与多线程

如何使单例模式遇到多线程使安全的,正确的。1.1单例模式之饿汉模式      饿汉模式(立即加载):就是使用类的时候已经将对象创建完毕,常见的实现办法就是直接new 实例化。      立即加载是在方法调用前,实例已经被创建了,实现代码如下:package testSingleton;public class MyObject { private static MyO

2017-04-26 11:47:40 246

原创 InheritableThreadLocal类和ThreadLocal类

类ThreadLocal主要解决的就是:变量在不同线程间的隔离性,也就是每个线程拥有自己的值。InheritableThreadLocal类是ThreadLocal类的子类,使用InheritableThreadLocal 可以在子线程中取得父线程继承下来的值。注意:如果ThreadLocal存储的是不变性(immutable)的对象,如String,对于主线程设置的值子线程可以通

2017-04-25 18:05:45 219

原创 synchronized同步方法2

接上一篇synchronized同步方法关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁。对于多个线程同时执行一个对象的一个同步方法,哪个线程先执行带synchronized关键字的方法,哪个线程就持有了该方法所属对象的锁Lock,那么其他线程只能呈等待状态。2. 如何通过synchronized关键字解决脏读代码:package testSy

2017-04-24 15:50:37 205

原创 synchronized同步方法

多个对象多个锁package testSynchronized;public class Task { private int num = 0; synchronized public void addI(String username){ try{ if(username.equals("a")){ num = 100; System.out.println

2017-04-24 11:47:51 213

原创 数据结构与算法之栈与队列

package StackAndQueueSummary;import java.util.LinkedList;import java.util.Queue;/** * 4.用两个队列实现栈 * 基本思路:使用queue1和queue2两个队列轮流存储数据。 * 这个轮流发生再pop和peek操作的时候, * 假设此时我们把所有的数据存储在queue1中(queue2为空),我

2017-04-20 20:59:18 172

原创 数据结构与算法之栈与队列

package StackAndQueueSummary;import java.util.Stack;/** * 3.用两个栈实现队列 * 实现对列,就是要实现它的3个方法:enqueue(入队),dequeue(出对),peek(队头) * 基本思路: * (1)stack1 存的是每次进来的元素,所以enqueue就是把进来的元素存入push到stack1中。 * (2)而

2017-04-20 20:57:41 284

原创 数据结构与算法之栈与队列

package StackAndQueueSummary;import java.util.Stack;/* * 设计一个栈,实现min,push。pop * 上一个方法是使用一个辅助栈来存储最小元素, * 现在这个方法使用一个栈,一个栈当两个栈使用, * 就是说:每次push操作的时候,先入栈当前要被栈的元素,在入栈当前栈中最小的元素; * 同理,pop操作也是每次弹出两个元素

2017-04-20 20:56:45 279

原创 数据结构与算法之栈与队列

package StackAndQueueSummary;import java.util.Stack;//设计含min函数的栈,要求min、push、pop的时间复杂度都是O(1)/* 存入元素以整数为例 * 算法思想:需要设计一个辅助栈,用来存储当前栈中元素的最小值。 * 网上有人说存储最小元素的位置,虽然节省空间,但是在每次调用min函数的时候,只能得到对 * 只能得到位置信息,

2017-04-20 20:54:42 335

原创 数据结构与算法之栈:反转一个栈的两种解法

问题描述:要求反转一个栈,例如:栈A 中元素从栈底到栈顶依次为:1,2,3,4,5;要求对A反转后,A中元素从栈底到栈顶为 5,4,3,2,1解法一:比较简单的想法是使用一个辅助栈,类似于汉诺塔问题。            假设:要被反转的栈为A,大小为N,辅助栈为B;                      基本思路:                        

2017-04-20 17:56:05 2769

原创 汉诺塔问题

一、汉诺塔的图解递归算法 1、问题起源: 汉诺塔(又称为河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子从上往下按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始案大小顺序重新排放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 2、数学描述: 如图所示,从左到右由A,B,C三根柱子,其中A柱

2017-04-20 11:32:23 523

转载 数据结构与算法之链表

本文转载自面试大总结之一:Java搞定面试中的链表题目链表是面试中常出现的一类题目,本文使用java实现了面试中常见的链表相关题目。并且每个问题都使用了递归和非递归两种实现方式。 目录: 1.求单链表中节点的个数 2.将单链表反转:reverseList(遍历法),reverseListRec(递归法) 3.查找单链表中的倒数第K个结点(K>0):reGetKthNode 4.查找单链表的

2017-04-19 15:52:11 260

原创 IO流体系

分类                 字节输入流                       字节输出流                         字符输入流                    字符输出流抽象基类          InputStream                       OutputStream                     Reader

2017-04-17 17:30:05 179

原创 网络编程基础

1.1网络编程简介             网络编程的目标就是为了发挥计算机网络互通信息,共享数据资源的作用。进行网络编程首先要确定的就是计算机资源的位置。在网络中的计算机以IP地址为标识,另一标识就是计算机主机名。有了这些标识就能找到网络中的计算机位置,但是一旦计算机中可能有很多网络应用程序在运行,这时还要知道计算机的入口,端口号就是用来唯一标识这些入口的。对于网络编程来说,目前有两

2017-04-17 09:48:25 169

原创 多线程基础之同步代码块

同步方法在同一时刻只能锁定一个对象(即同步方法所属的对象),在并发执行中有时需要锁定的对象不止一个。另外,同步方法会形象执行效率,因此,应该尽量减少同步范围,提高程序的并发性。而同步代码块可以解决上述问题。synchronized (){ //需要同步的代码}(1)资源对象引用指向的是要被锁定的资源对象,同步代码块中的代码是对资源进行的操作,这些代码在同一时刻不允许多个线程执行。

2017-04-16 15:44:52 245

原创 多线程基础部分之生产消费者案例

在资源的同步与互斥问题中,最经典的就是“生产者-消费者”问题。生产者-消费者问题的具体含义:系统中有很多生产者和消费者并发的工作,生产者负责生产资源,消费者负责消费资源,当消费者消费资源时,如果资源不足则需要等待;反之当生产者圣餐资源时,如果资源充足,则也需要等待。并且同一时刻只能一个生产者或消费者进行操作。下面给出具体的代码:package test11;public class B

2017-04-16 11:25:42 268

原创 多线程基础部分小结

1.1线程的概念:               在多线程程序中,一个线程其实就是一条独立的执行的线索。java中的线程有两方面的含义:一是一条独立的执行线索,二是java.lang.Thread类或其子类的对象。1.2自定义线程:         方法一:继承 Thread 类,则该类对象便具有了线程的能力。采用此方式需要重写run()方法,run中的代码就是把要被该线程执行的代码

2017-04-14 15:29:28 263

原创 字符串模式匹配算法小结

字符串模式匹配:在一个文本(长字符串)中找出一个或多个指定的字符串(Pattern),并返回其位置。下面介绍几种字符串模式匹配算法:Brute-Force算法、KMP算法、BM算法、Sunday算法第一种算法:BF算法(暴力)

2017-04-13 11:01:37 423

空空如也

空空如也

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

TA关注的人

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