2 cottonrose_orange

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 17w+

详解Condition的await和signal等待/通知机制

Object的wait、notify与Condition的区别?从整体上看,Object的wait、notify是与对象监视器配合完成线程间的等待/通知机制,是java底层级别的;而Condition是与Lock配合完成等待通知机制,是语言级别的,具有更高的可控制性和扩展性。(1)Condition能够支持不响应中断,而Object提供的wait方法不支持;(2)Condition支持多...

2020-02-26 17:12:29

深入理解Java多线程AQS及其底层实现

首先,为什么要理解AQS???因为同步组件(这里不仅仅指锁,还包括CountDownLatch等)的实现依赖于同步器AQS,即AQS是同步组件实现的核心部分。那么,AQS到底是什么呢???AQS(AbstractQueuedSynchronizer),简称同步器,是用来构建锁和其它同步组件的基础框架。AQS的组成可以理解如下图:要想掌握AQS的底层实现,我们就要学习这些模板方法,首先我们就...

2020-02-19 19:43:42

【java】String类及其练习

一、String类字符串实例化直接赋值String str = "Hello Bit";传统方法(构造法)String str = new String("Hello Bit");这两种方法存在差异:直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用 i...

2018-12-27 17:17:44

【java】面试题:请解释String类中两种对象实例化的区别

在叙述String类知识点的博客中提到了String实例化有如下两种方式:直接赋值String str = "Hello Bit";传统方法(构造法)String str = new String("Hello Bit");接下来将对这两种方法进行分析:1.直接赋值法请写出下述代码的输出: String str1 = "Hello"; String str2 = "Hell...

2018-12-27 16:45:33

【java】字符串比较分析

在叙述String类知识点的博客中提到了字符串比较有如下两种方式:== 和 .equals()前者是比较变量所指向的值在堆空间上的内存地址值。后者是比较字符串的值。接下来将对上述两种方式进行分析:使用“==”比较字符串:有如下代码: String str1 = "Hello" ; String str = new String("Hello") ; System.out.pri...

2018-12-27 15:49:44

【java】抽象类与接口小结

一、抽象类抽象类的定义与使用定义:抽象类只是在普通类的基础上扩充了一些抽象方法而已,所谓的抽象方法指的是只声明而未实现的方法(即没有方 法体)。所有抽象方法要求使用abstract关键字来定义,并且抽象方法所在的类也一定要使用abstract关键字来 定义,表示抽象类。定义一个抽象类:abstract class Person{ private String name ; // ...

2018-12-27 11:31:42

阿里java校招笔试题——代码块中语句的执行顺序

下面是阿里java校招的一道笔试题,代码如下:public class HelloA { //构造方法 public HelloA(){ System.out.println("Hello A!父类构造方法"); } //非静态代码块 { System.out.println("i'm A class...

2018-12-26 18:09:56

【java】面向对象编程——类与对象的继承和多态

一、代码块代码块定义:使用 {} 定义的一段代码。根据代码块定义的位置以及关键字,又可分为以下四种:普通代码块(定义在方法中,调试)构造块(定义在类中的(不加修饰符))静态块同步代码块构造块构造块在每次产生一个新的对象就调用一次构造块。构造块在构造方法前执行。静态块静态块优先于构造块执行。无论产生多少实例化对象,静态块都只执行一次。静态块的主要作用是对static...

2018-12-26 17:18:31

在杨氏矩阵中查找一个数(C语言实现)

 分析:杨氏矩阵的特点是:这个矩阵中的数字从左到右是递增的,从上到下也是递增的。知道了这个特点就好写程序了。如有以下矩阵:  2 3 4 3 4 5  4 5 6   或没有对角线规律的杨氏矩阵:3  6   8  5  9  108 13 15  思路:输入要查找的数n,用n和这个矩阵的右上角元素比较,如果大于右上角...

2018-12-25 17:26:04

C语言:输出乘法口诀表

 分析:要输出一个下三角形的乘法口诀表,如下图所示:要先定义两个变量 i、j,这里 i 作为乘数,j 作为被乘数,i 控制行输出,j 控制列输出,通过在输出函数printf中对结果进行设置来使列对齐。  代码如下:#include<stdio.h>int main(){ int i,j,k; for(i=1;i<10;i++) { for(...

2018-12-25 17:25:41

【java】面向对象编程——类与对象的封装

Java比C更方便的地方在于Java是面向对象的。面向对象的特征:1、封装 ; 2、继承 ; 3、多态;以下对面向对象的封装特征进行简述:一、类与对象的定义与使用类是指共性的概念,对象是一个具体的、可以使用的事物。首先产生类,而后才可以产生对象。类的组成: 1. 方法(操作的行为) 2. 属性(变量,描述每个对象的具体特点)类的定义:class 类名称 { 属性1;...

2018-12-24 17:30:24

【java】数组及相关练习

一、一维数组1、动态初始化声明并初始化数组:数据类型[ ] 数组名称 = new 数据类型 [长度] ; 如:int [ ] intArray = new int [ 3 ]; 分步进行数据初始化:int[ ] intArray = null; intArray = new int [ 3 ];数组开辟空间后,可进行如下操作:数组的访问通过索引来完成。同C数组...

2018-12-21 21:37:50

用java实现基于字符的简易收银台系统

从整体上来说,这个简易系统分为以下四个部分:店主、顾客、关于、退出。各部分应该实现的功能如下图:整体框架代码public static Scanner reader = new Scanner(System.in);public static void main(String[] args) { Boolean condi = true; GoodsCenter.ini...

2018-12-04 21:26:03

【Linux】常用基本命令

文章目录一、基本命令二、文件操作命令三、压缩解压缩操作四、时间操作命令五、查找匹配操作命令六、其他命令在熟悉Linux常用基本命令之前,首先要掌握一些知识要点:Linux中以“ . ”开头的文件是隐藏文件。Linux下一切皆文件,而且Linux下并不以文件后缀名区分文件。Linux操作系统是一个多用户、多任务操作系统。Linux下的目录结构,是一个树形结构,最上层目录是根目录。绝对路...

2018-11-13 21:49:41

【数据结构】双向带头结点循环链表

在之前我们写了不带头结点的单链表,但它在数据操作时也有繁琐之处,而双向带头结点循环链表则优化了单链表的操作,使链表更加方便。双向带头结点循环链表在单链表的基础上增加了以下几点:(1)在数据结构上附加一个域,使它存放指向前一个结点的指针;(2)增加了一个头结点,前驱指向链表的最后一个结点;(3)链表的最后一个结点指向头结点,使它构成一个循环链表。数据类型的定义typedef int Da...

2018-09-25 23:04:31

【数据结构】链表面试题升级版

1、复杂链表的复制复杂链表一个链表的每个结点,有一个next指针指向下一个结点,还有一个random指针指向这个链表中的随机一个结点或者NULL。现在要求复制这个链表,并返回复制后的新链表。思路如下:复杂链表的数据类型:typedef struct ComplexNode{ int data; ComplexNode *next; ComplexNode *...

2018-09-23 21:18:50

【数据结构】链表面试题

1、倒序打印链表(1)非递归方式代码如下:void ReversePrint(ListNode **pFirst){ ListNode *last = NULL; ListNode *cur = NULL; assert(*pFirst != NULL); while(last != *pFirst) { cur = *pFirst; while(cur != NULL...

2018-09-20 14:51:49

【数据结构】链表操作C实现

数据类型的定义typedef int DataType; typedef struct ListNode{ DataType data; struct ListNode *next; } ListNode;链表的初始化和销毁链表的初始化—–>构造一条空链表 链表的销毁—–>销毁每个结点//初始化void ListInit(Li...

2018-09-13 14:02:53

【数据结构】静态、动态顺序表

静态顺序表顺序表的初始化和销毁打印顺序表查找二分查找增加数据尾插头插在指定位置插入删除数据尾删头删指定位置删除(下标删除)指定元素删除(数据删除)删除所有指定元素顺序表属性排序冒泡排序选择排序动态顺序表顺序表的初始化和销毁顺序表的打印增加数据静态与动态的比较静态顺序表数据类型的定义...

2018-09-11 18:54:17

C代码实现扫雷小游戏

分析同三子棋小游戏一样,扫雷小游戏也分为如下思路: 头文件#ifndef __GAME_H__#define __GAME_H__#include <stdlib.h>#include <time.h>#include <string.h>#define ROW 9 //实际打印棋盘行数#define COL 9 //实际打...

2018-09-08 20:40:59

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。