- 博客(24)
- 资源 (5)
- 收藏
- 关注
原创 队列简介及java代码实现(环形队列)
队列含义队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头。特点先进先出:先插入的数据 会被先取出代码实现:package dataStructure;import com.sun.org.apache.xpath.internal.operations.Bool;import java.util.Scanner;/** * 队列是一种特殊的线性表, * 特殊之
2020-07-02 22:11:56 282 1
原创 稀疏数组简介及java代码实现
稀疏数组数组特点数组是相同数据类型的元素的集合。数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。稀疏数组定义如果一个数组(包括多维数组)中的大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组,节约空间。实现方法1.记录数组一共有几行几列,有多少个不同的数值。2.把具有不同值的元素的行
2020-07-02 22:11:21 163
原创 ThreadLocal简介及java代码
ThreadLocalThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。public static void main(String[] args) { ThreadLocal<String> tl = new ThreadLocal<>(); new Thread(new Runnable() { @Overri
2020-06-18 22:15:50 145
原创 线程工具类(CountDownLatch、CyclicBarrier、Phaser、ReentrantReadWriteLock、Semaphore、Exchanger)
CountDownLatchCountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。CountDownLatch(int count) void await() 导致当前线程等到锁存器计数到零,除非线程是 interrupted 。
2020-06-18 21:50:40 269
原创 LongAdder和AtomicLong
LongAdderAmoticLongAtomicLong是作用是对长整形进行原子操作。原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束。在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。构造方法 AtomicLong() 创建一个新的AtomicLong,初始值为 0 。 AtomicLong(long initialValue)
2020-06-18 12:17:33 1014 2
原创 CAS、ABA问题以及UnSafe类
CAS1、什么是CAS?CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是悲观锁ABA假设这里有两个线程线程1和线程2,线程1工作时间需要10秒,线程2工作需要2秒,主内存值为A,第一轮线程1和线程2都把A拿到自己的工作内存,2秒中后线程2工作完成把A改成了
2020-06-17 22:08:25 210
原创 volatile的使用及作用
volatile保证线程可见性static boolean checkType = true; public static void main(String[] args) throws Exception { new Thread(()->{ while(checkType){ } System.out.println("thread end"); }).start();
2020-06-17 22:06:27 355
原创 Synchronized作用及使用代码
Synchronized作用:当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码使用:修饰实例方法static class SynchronizedTest1 implements Runnable { static int count; public synchronized void increase(){ count++; }
2020-06-16 09:24:20 181
原创 线程池简介及常见问题
线程池(多线程)1.什么是线程池概述:线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放到队列中,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完毕,再从队列中取出任务来执行。2.为什么使用线程池??new Thread的弊端:每次new Thread新建对象性能差。线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机。缺乏更多功能,如定时执行、定期执行、线程中断。线程池的优点:降
2020-06-16 09:23:43 545
原创 线程简介及创建代码
线程1.什么是线程、多线程线程(thread):操作系统进行运算调度的最小单位。是进程中的实际运作单位,一个进程可以有很多线程,每条线程并行执行不同的任务。多线程(multithreading):从软件或者硬件上实现多个线程并发执行的技术。 同一时间执行多个线程,提升整体处理性能多线程作用:为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。并发和并行:并发当有多个线程在操作时,如果系统只有一个C
2020-06-16 09:23:20 286
原创 Idea快捷方式
Idea快捷方式psvm 生成main方法 public static void main(String[] args) { }sout 生成打印输出:System.out.println();"xxx".sout 生成打印字符串:System.out.println("xxx");"abc".format 生成字符串格式化String.format("xxx", )itli 生成Listfor (int i = 0; i &l
2020-06-13 17:32:30 165
原创 网络编程(Tcp/Udp实现聊天、文件上传)
网络编程1.1 概述计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统1.2 网络通信的要素ip和端口网络通信协议(tcp/udp)1.3 Ip地址(Internet Protocol)定位唯一一台计算机127.0.0.0:本机 localhostip地址的分类(ip4/ip6)ip4 四个字节组成 2011年用尽Ip6 通常写成8组,每组为四个十六进制数的形式 非常多,基本用不完~~~ ~~~CDCD
2020-06-12 10:59:32 1262 1
原创 idea的jetty配置
1.在 web 的那个模块 的 pom 文件中加入如下代码 <!-- 配置jetty 插件启动 --><plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.6.v20170531</version> <configuration>
2020-06-09 16:39:06 452
原创 JAVA中&&和&
JAVA中&&和&、||和|(短路与和逻辑与、短路或和逻辑或)的区别?首先名称是不同的&&逻辑与 ||逻辑或 它们都是逻辑运算符& 按位与 | 按位或 它们都是位运算符if(a==1&&b==2) 这是说既要满足a=1也要满足b=2if(a==1||b==2) 这是说或者满足a=1或者要满足b=2而a&b或者a|b则是二进制的与或运算&同为1时为1,否...
2020-04-28 21:17:11 1004
原创 java前++与后++的区别
public class Test { public static void main(String[] args) { //测试,前加加和后加加 //前++和后++总结:其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加! int age = 6; //先自加,再使用(age先自加1,然后再打印age=7,此时age的值在内存中是7)...
2020-04-28 21:14:18 297
原创 java_八种基本数据类型、数据比较及常见问题
强类型语言、弱类型语言强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# 和 Python,比如Java中“int i = 0.0;”是无法通过编译的;弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加...
2020-04-25 15:11:21 377
原创 java_关键字及标识符
关键字标识符java 所有的组成部分都需要名字、类名、变量名以及方法名都被成为标识符。java语言中规定标识符:由大小写字母、数字、下划线、和美元符号组成,但不能以数字开头。标识符不能使用java中的关键字。Java中标识符定义的规则:类和接口名。每百个字的首字母大写,含有大小写。例如,MyClass,HelloWorld,Time等。方法名。首字符度小写,其余的首字母大写,含...
2020-04-25 14:35:39 260
原创 java_三种注释(单行注释、多行注释、文档注释)
单行注释 // 这个是单行注释 多行注册/* 多 行 注 释*/文档注释/*** 这个是文档注释 * @author Lee Boynton * @author Arthur van Hoff * @author Josh Bloch * @author Joseph D. Darcy * @since JDK1.0*/...
2020-04-25 14:27:03 1383
原创 my_idea的使用
安装下载地址:https://www.jetbrains.com/idea/download根据自己需求要在对应版本有两个版本可以下载Ultimate 终极版,收费,功能无限制。Community 社区版,免费,但是功能有限制下载后可直接安装设置项目默认地址如图所示,第一次设置地址后,以后默认用此地址...
2020-04-25 13:24:31 338
原创 java_环境变量设置(同百度)
JDK默认安装后jdk和jre都在C:\Program Files\Java目录下。配置环境变量:右击“我的电脑”–>“属性”–>“高级系统设置”–>“高级”–>"环境变量"在系统变量里新建"JAVA_HOME"变量,变量值为:C:\Program Files\Java\jdk1.8.0_60(根据自己的jdk的安装路径填写)在系统变量里新建"classpath"变...
2020-04-25 11:04:27 137
原创 my_dos常用命令
计算机DOS下,批处理命令详解,这些知识在电脑维护、入侵等环节是很需要的。我们只要在dos界面中输入各种dos命令,即可实现相应的命令,下面分享下dos常用命令:格式:Dos指令(常用)——说明——备注D: 去往D盘cd… 返回上一级目录cd 文件名 目录切换到该文件名(子目录)下cd \ 直接回根目录dir 当前根目录下的文件目录dir /s 所有目录dir/p 目录多的时候,...
2020-04-25 09:33:00 294
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人