自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池和ThreadPoolExecutor类

线程池背景:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结 束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池:为了减少频繁创建(时间短,任务简单)销毁线程开销,Jdk以后内置了线程池。操作:可以使用线程池序言创建一部分线程,重复使用,减少创建销毁线程的开销。在 JDK5 版本中增加了内置线程池实现 ThreadPoolExecutor,同时提供了Executors 来创建不同类型的线程池。ThreadPoolExecutor 类[外链

2021-07-22 20:30:58 131

原创 ThreadLocal

ThreadLocal线程封闭对象封闭在一个线程里,即使这个对象不是线程安全的,也不会出现并发安全问题栈封闭:就是用栈(stack)来保证线程安全public void testThread() { StringBuilder s = new StringBuilder(); s.append("Hello"); }StringBuilder 是线程不安全的,但是它只是个局部变量,局部变量存储在虚拟机栈,虚拟机栈是线程隔离的,所以不会有线程安全问题.ThreadLocal 线程封

2021-07-22 20:28:33 97

原创 并发编程与常见的锁

并发编程与锁线程,进程,并行,并发线程是cpu调度的最小单位(是一个具体的执行单元)进程是操作系统分配资源的单元进程含有内存和资源并安置线程的地方并行:同时做多件事情(多人同时做多事)并发:同一时间段内做多件事(一个人在一个时间段内,一件一件做事情)多线程多线程是一个进程中允许有多个线程同时执行优点:提高CPU的利用率,增强程序的功能缺点:对硬件要求提高(CPU,内存,硬盘)多线程产生的问题:多线程共同访问同一个共享资源,会出现线程安全问题线程的创建方式①继承Thread类②实现

2021-07-21 19:38:08 262

原创 JVM垃圾回收及相关算法

JVM垃圾回收及相关算法1.Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语言没有垃圾收集技术,需要程序员手动的收集。2.垃圾回收机制:能够提高开发效率1.什么是垃圾垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。2.垃圾回收机制自动内存管理自动内存管理的优点自动内存管理,无需开发人员手动

2021-07-20 21:33:52 342

原创 布隆过滤器初学

布隆过滤器布隆过滤器实际上是一个很长的二进制向量和一系列映射函数,布隆过滤器可以用于检索一个元素是否在一 个集合中。优点:是空间效率和查询时间都比一般的算法要好的多缺点:是有 一定的误识别率和删除困难。由于是随着集合 中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢,不过世界 上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一 个 Hash 函数将一个元素映射成一个位阵列中的一个点。这样一来,我们只要看 看这个点是不是 1 就可以知道集合中有没有它了。这

2021-07-20 19:34:05 70

原创 Nginx入门

NginxNginx 是一款高性能的 Web 和 反向代 理服务器。其特点是占有内存少,并发能力强。Nginx 专为性能优化而开发,性能是服务器最重要的考量,实现上非常注重效率,能经受高负载的考验。功能:Nginx 不仅能做反向代理,实现负载均衡;还能可以作正向代理来进行上网等功能。1.什么是代理服务器?能支持高达 50,000 个并发连接数。所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器。正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。2.正向代理用户知道

2021-07-20 19:19:23 100 1

原创 线程通信(生产者消费者问题)

线程通信(生产者消费者问题)**线程通讯指的是:**多个线程通过消息传递实现相互牵制,相互调度,即线程间的相互作用。涉及三个方法:.wait一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器(锁)。.notify一旦执行此方法,**就会唤醒被wait的一个线程。**如果有多个线程被wait,就唤醒优先级高的那个。.notifyAll一旦执行此方法,就会唤醒所有被wait的线程。说明:.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中。.wa

2021-01-21 12:37:42 114

原创 实现多线程同步Lock锁与 synchronized 同步监视器的区别`

实现多线程同步Lock锁与 synchronized 同步监视器的区别`线程同步的关键:确保一个时间点只有一个线程访问共享资源。可以给共享资源加一把锁,哪个线程获取了这把锁,才有权利访问该共享资源。1.同步监视器同步监视器可以是任何对象,必须唯一,保证多个线程获得是同一个对象(锁).同步监视器的执行过程1.第一个线程访问,锁定同步监视器,执行其中代码.2.第二个线程访问,发现同步监视器被锁定,无法访问.3.第一个线程访问完毕,解锁同步监视器.4.第二个线程访问,发现同步监视器没有锁,然后锁

2021-01-21 10:48:49 498

原创 线程状态(生命周期)与线程同步

线程状态(生命周期)与线程同步一.线程的状态线程的状态:新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态就绪:处于新建状态的线程调用start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能,但不可直接调用run方法阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态死亡:线

2021-01-21 10:06:19 134

原创 Java线程的创建

Java线程的创建方式一:继承Thread类在Java中要实现线程,最简单的方式就是扩展Thread类,重写其中的run方法,方法原型如下:Thread类中的run方法本身并不执行任何操作,如果我们重写了run方法,当线程启动时,它将执行run方法。//线程创建方式一:继承Thread类public class ThreadDemo extends Thread { //重写run方法 //并将线程组需要执行的任务写在run方法里面 @Overrid

2021-01-18 14:43:50 112

原创 Java线程的基本认识

Java线程1.程序,进程,线程程序(静态):为完成某种功能,使用某种计算机汇编语言编写的一组指令集合,即一段静态的代码块进程(动态):正在运行的程序,进程中含有内存和资源并具有安置线程的位置线程(动态):进程可进一步细化为线程,是一个进程内部的最小执行单元2.进程与线程关系一个进程可以包含多个线程,一个线程只属于一个进程,线程不能脱离进程独立存在一个进程至少包含一个线程(成为主线程)在主线程中可以创建并启动多个线程一个进程中的资源被所有线程共享3.什么是多线程,及其功能多线程是指一

2021-01-18 14:21:38 114

原创 关键字throw和throws的区别(简单明了)

关键字throw和throws的区别一.throwsthrows为方法异常的声明,通常用于生明编译期异常,并不对异常进行处理,交给方法调用处来处理用于声明此方法中可能会出现的某种异常.throws可声明多个异常例如:public void t1() throws UnsupportedEncodingException,EnumConstantNotPresentException{ //throws可以声明多个异常 this.t2();}​ 任何方法都可以通过

2020-12-16 15:12:36 1755 1

原创 方法重载与重写(简单明了)

重载与重写(1)重载方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法,即参数的数量或参数类型不能完全相同.参数不同(可以有三方面的不同)1.数量不同2.类型不同3.顺序不同调用时,会根据不同的参数表选择对应的方法。注意:方法重载跟方法的返回值类型没有任何关系(2)重写方法重写是存在子父类之间的,当子类中的方法实现步骤与父类中的方法实现步骤不同时,子类可对父类的方法进行重写(覆盖).子类定义的方法与父类中的方法具有**相同的方法名字,相同的参数表和相同的返回类型;**同时子类

2020-12-16 14:13:20 235

原创 final和finally关键字的区别

final和finally的区别一. final关键字final可以声明变量,形参,方法,类1.当用final修饰变量时,该变量变为常量,常量的值不可改变.例如char[]arr={1,2,3,4,5},当定义一个数组时,数组默认被final修饰即不可改变,且final直接初始化赋值时用static修饰(1)static final int a=10; (2)若声明的为成员变量final int b;则在构造方法中进行赋值public class FinalDemo { static

2020-12-16 14:09:14 2109 4

原创 面向对象语言的三大特征-封装,继承,多态

面向对象语言的三大特征-封装,继承,多态1.封装把实现的细节包装起来,对外提供方法访问将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交

2020-12-05 12:13:32 1008

原创 JavaSE第四章面向过程和面向对象的设计思想

JavaSE第四章:面向过程和面向对象的设计思想21.对象与引用(1)创建对象定义:Java 语言中除基本类型之外的变量类型都称之为引用类型。Java中的对象是通过引用对其操作的.Car car= new Car();通常把这条语句的动作称之为创建一个对象,其实,它包含了三个动作。1)右边的“new Car()”,是以Car类为模板,调用Car类的构造方法,在堆空间里创建一个Car类对象。2)左边的“Car bm”创建了一个Car类型引用变量。所谓Car类的引用,就是以后可以用来指向Car对象

2020-12-04 16:44:21 105

原创 浅谈Java选择语句与循环语句

Java选择语句与循环语句条件语句 - 根据不同条件,执行不同语句。ifif … elseif … else ifif … else if … else if … elseswitch条件表达式:num=a>b?a:b;使用前需要声明一个变量去存储这个条件表达式的值循环语句 – 重复执行某些动作forwhiledo … while;if条件结构if条件结构是根据条件判断之后再做处理if ( 条件 ) {//语句}例如:if(a>b){retur true;

2020-11-24 20:56:31 243

原创 JavaSE第三章面向过程和面向对象的设计思想

JavaSE第三章:面向过程和面向对象的设计思想1.面向过程和面向对象的设计思想面向过程:procedure oriented programming 缩写 POP分析出解决问题所需要的步骤,然后把步骤一步一步实现。面向过程注重于解决问题过程:eg(上公交车过程)停车();开公交车门();上车();关公交车门();开车();面向对象:object oriented programming 缩写 OOP面向对象的编程语言以分类的方式进行思考和解决问题,面向对象的思维方式适合于处理复杂

2020-11-24 11:49:24 194 1

空空如也

空空如也

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

TA关注的人

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