
java基础
文章平均质量分 81
LemonSnm
心中有梦,生活无暇
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java基础-线程池应用及实现原理
1、线程池原理1.1、为什么要用线程池线程是不是越多越好?①线程在java中是一个对象,更是操作系统的资源,线程的创建、销毁需要时间。如果创建时间+销毁时间>执行任务的时间。就很不划算。②java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。③操作系统需要频繁切换线程上下文(大家都想被运行),影响性能。线程池的推出,就是为了方便的控制线程的数量。2、线程池原理-概念原创 2022-01-04 16:45:43 · 421 阅读 · 0 评论 -
java基础-线程封闭
封闭对应的是开放,所谓线程开放就是类似共享数据、共享变量这些概念。多线程访问共享可变数据时,涉及到线程间数据同步问题。并不是所有时候,都要用到共享数据,所以线程封闭的概念就提出来了。线程封闭的概念数据都封闭在各自的线程之中,就不需要同步了。这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。线程封闭的具体体现:ThreadLocal、局部变量。ThreadLocalThreadLocal是java里一种特殊的变量。它是一个线程级别变量,每个线程都有一个Thre..原创 2021-12-31 11:54:31 · 254 阅读 · 0 评论 -
java基础-线程通信
1、通信的方式:要想实现多个线程之间的协同,如:线程的执行顺序、获取某个线程的执行结果等。涉及到线程之间的通信,分为下面四类:①文件共享②网络共享③共享变量④JDK提供的线程协调API:suspend/resume、wait/notify、park/unpark1.1文件共享线程1写数据到文件里,线程2读取文件中的数据内容,实现数据的交换代码示例:import java.nio.file.Files;import java.nio.file.Pat..原创 2021-12-30 18:20:00 · 1431 阅读 · 0 评论 -
java基础-内存屏障和CPU缓存
1、CPU性能优化-缓存为了提高程序的运行性能,现代CPU在很多方面对程序进行了优化。例如,高速缓存。尽可能的避免处理器访问主内存的时间开销,处理器大多会利用缓存来提高性能。访问速度:cup处理器的缓存>内存>硬盘2、CPU的三级缓存L1Cache(一级缓存)是CPU第一级高级缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存容量通常在32-4096KB.L2由于L1级高速缓存的容量限制,为了再次提高CPU的运算速度,在CPU外部放置一高速存储器,即二级缓存。.原创 2021-12-29 16:27:04 · 638 阅读 · 0 评论 -
java基础—线程中止
不正确的线程终止-StopStop:终止线程。并且清除监控器锁信息,但是可能导致线程安全问题,JDK不建议用。Destroy:JDK并未实现该方法。原创 2021-12-28 11:50:16 · 645 阅读 · 0 评论 -
java基础-线程状态
目录1、线程的六种状态定义:2、线程的六种状态之间的切换流程图:1、线程的六种状态定义①New(新建状态):尚未启动的线程的线程状态。(通俗的说就是我们写了一个线程,还未调用start方法去启动这个线程)②Runnable(可运行状态):可运行线程的线程状态,等待CUP调度。(通俗讲就是,线程调用了start方法之后进入该状态)。Runnable状态分两种:1、CPU正在执行这个线程;2、CPU随时可以调度执行该线程的状态③Blocked(阻...原创 2021-12-24 16:46:15 · 860 阅读 · 0 评论 -
下拉选择框 多级联动 动态显示
1、涉及知识内容1、js2、jquery3、js4、bootstrap样式2、效果图3、数据库CREATE TABLE `area` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NOT NULL DEFAULT '0', `area_level` int(11) NOT N...原创 2019-11-12 18:30:07 · 818 阅读 · 0 评论 -
Java面试题之sleep与wait的区别
sleep与wait的区别:sleep:让线程进入休眠状态,让出CPU的时间片,不释放对象监视器的所有权(对象锁)wait:让线程进入等待状态,让出CPU的时间片,并释放对象监视器的所有权,等待其他线程通过notify方法来唤醒notify方法:随机唤醒其中一个处在等待状态的线程notifyAll方法:唤醒所有处在等待状态的线程...原创 2019-05-11 17:31:29 · 404 阅读 · 0 评论 -
多线程与并发之生产者与消费者示例
多线程开发经典操作案例,生产者-消费者,生产者不断生产产品,消费者不断取走产品案例场景:饭店里有一个厨师和一个服务员,这个服务员必须等待厨师准备菜。当厨师准备好时,他会通知服务员。之后服务员上菜,然后返回继续等待。这是一个任务协作的示例,厨师代表生产者,服务员代表消费者。Food.java (需要生产的食物)package com.lemon.servers;/*...原创 2019-05-11 14:56:20 · 183 阅读 · 0 评论 -
Java之线程死锁
线程死锁:过多的同步方法可能出现死锁,死锁的操作一般是在程序运行的时候才有可能出现。可能产生死锁:多线程中要进行资源的共享,就需要同步,但同步过多,就有可能造成死锁。在一个同步方法中可能调用了另一个对象的同步方法。...原创 2019-05-11 14:42:11 · 260 阅读 · 0 评论 -
Java之线程同步
1、多线程共享数据多线程共享数据时,会发生线程不安全的情况 多线程共享数据,必须使用同步2、线程同步解决数据共享问题,必须使用同步,所谓同步就是指多个线程在同一时间段只能有一个线程执行指定代码,其他线程要等待此线程完成之后才可以继续执行。当没有线程同步时:package com.lemon;public class ThreadDemo4 { p...原创 2019-05-10 23:40:13 · 273 阅读 · 0 评论 -
Java守护线程与yield优先级
1、守护线程public final void setDaemon(boolean on):将此线程标记为守护线程或者用户线程。当运行的唯一线程都是守护进程线程时,Java虚拟机将退出。true:为守护线程,false为用户进程。一般默认为用户进程通俗的讲:守护线程好比辅助,它负辅助用户线程,当用户线程都结束了,要辅助也就没用了,JVM就会关闭线程分为两种:...原创 2019-05-10 21:10:38 · 217 阅读 · 0 评论 -
Java之join与中断线程
Jion:public final void join():等待这个进程死亡,也就是说让调用join的线程先执行完毕,再执行其他线程代码示例:package com.lemon;/** * join方法: * 加入线程,让调用的线程先执行完毕 */public class ThreadDemo2 { public static void main(Str...原创 2019-05-10 18:18:27 · 455 阅读 · 0 评论 -
Java线程休眠
线程休眠:在当前线程的执行中,暂停指定的毫秒数,释放CPU的时间片作用:没有线程的休眠,我们无法控制多个线程的运行顺序,当有休眠时,我们可以可控制线程的执行顺序,干涉CUP执行的时间,到达我们想要的目的休眠方法:public static native void sleep(long millis) ;以毫秒为单位,millis为负数 抛出异常Illega...原创 2019-05-10 17:42:56 · 885 阅读 · 0 评论 -
Java网络编程之MINA框架(1)
1、MINA:一个简洁易用的基于TCP/IP通信的JAVA框架2、下载地址:http://mina.apache.org/downloads-mina_2_0.html3、至少需要:(在下载的文件中找以下两个jar包导入工程中)mina-core-2.0.21.jar、slf4j-api-1.7.26.jar4、开发一个Mina应用:创建连接...原创 2019-05-15 15:54:00 · 618 阅读 · 0 评论 -
Java 线程实现的方式
线程实现的两种方式:1.继承Thread类2.实现Runnable接口:推荐实现Runnable接口方式:1、可以多继承2、可以把Runnable放在不同线程中代码实现:package com.lemon;public class Threaddemo1 { public static void main(String[] args) { ...原创 2019-05-10 17:14:37 · 146 阅读 · 0 评论 -
Java进程与线程的基本概念
1、什么是进程:程序是指令和数据的有效集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。进程是一个具有一定独立功能的程序,一个实体,每一个进程都有它自己的地址空间。1.2进程的状态:进程执行时的间断性,决定了进程可能具有多种状态。运行中的进程,具有以下三种状态:1)就绪状态(Ready)2)运行状...原创 2019-05-10 17:11:42 · 310 阅读 · 0 评论 -
Java网络编程之URL
1、URL概述URL(uniform resource location)类代表一个统一资源占位符,它是指互联网“资源”的指针。抽象类URLConnection是所有类的超类,它代表应用程序和URL之间的通信链接。代码示例:package com.lemon.URLDemo;import jdk.nashorn.internal.ir.BaseNode;impor...原创 2019-05-15 13:35:57 · 241 阅读 · 0 评论 -
Java网络编程之UDP服务器与客户端程序
UDP服务器与客户端程序:数据库:package com.lemon.UDP;import java.io.IOException;import java.net.*;/** * 服务器端: * @author lemonsun */public class Server { public static void main(String[] args) {...原创 2019-05-14 22:39:38 · 811 阅读 · 0 评论 -
Java网络编程之UDP协议
1、UDP协议概述UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能都到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的,每个被传输的数据包必须限定在64k之内。主要使用两个类:DatagramPacket:此类表示数据报包。Data...原创 2019-05-14 22:22:58 · 323 阅读 · 0 评论 -
Java之线程的生命周期
线程生命周期图:new: 开始yield:使调用该方法的线程跳过本次的CPU时间片,也就是跳过本次执行wait:使调用该方法的线程,进入等待状态,让出CPU的时间片,释放对象监视器的所有权(锁),等待其他线程 调用notify方法唤醒notify:随机唤醒一个处于等待状态的线程notifyAll:唤醒所有处于等待状态的线程join:让调用...原创 2019-05-12 10:37:55 · 182 阅读 · 0 评论 -
Java之线程池
线程池:预先创建线程的一种技术。目的:线程池在还没任务到来之前,创建一定数量的线程,放入空闲队列中,然后对这些资源进行复用。减少频繁的创建和销毁对象。JDK1.5版本以上提供了现成的线程池。Java里面线程池的顶级接口是Executor,是一个执行线程的工具。线程池的接口是ExecutorService。Executor接口:执行已提交的R...原创 2019-05-12 11:23:51 · 119 阅读 · 0 评论 -
java实现通过图片的URL地址下载图片
直接上代码:package com.lemon.photo;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.n...原创 2019-09-27 14:53:36 · 6486 阅读 · 0 评论 -
java利用jdbc向数据库存入二进制图片数据
1、新建数据库CREATE TABLE `photo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL COMMENT '姓名', `photo` longblob COMMENT '照片', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCR...原创 2019-09-27 13:57:30 · 571 阅读 · 0 评论 -
使用jdbc连接数据库的java小程序
1、数据库要求:mysql数据库,在mysql数据库中新建一个tbtest数据库,在tbtest库中新建person表。字段如下 人员表(姓名(字符串),手机(字符串),地址(字符串))CREATE TABLE `person` ( `p_name` varchar(50) DEFAULT NULL, `p_number` varchar(50) DEFAULT NU...原创 2019-09-27 11:34:11 · 499 阅读 · 0 评论 -
Java之动态代理模式
动态代理:既通过代理类:Proxy的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联例如:买房子找到中介,需求给中介完成,客户只需要最后确认满意付款就OK了java动态代理主要是使用java.lang.reflect包中的两个类。代码示例:1、主题:关注的是啥package proxy;/** * 主题:关注...原创 2019-06-28 19:35:28 · 287 阅读 · 0 评论 -
Java之通过Class类获取类信息
1、获取类信息Class<People> peopleClass = People.class;2、获取公共的方法,包括继承的公有方法Method[] methods = peopleClass.getMethods();3、找到方法 目的是调用它methods[i].invoke(people)4、访问私有方法peopleClass....原创 2019-06-28 15:25:11 · 1539 阅读 · 0 评论 -
Java之反射与内省基本概念
反射:通过对象获取类信息获取Class对象的三种方式:测试:1、导包:(自行下载)https://mvnrepository.com/artifact/junit/junit/4.122、代码:package com.lemon; import org.junit.Test;/** * 获取Class对象的三种方式: * @aut...原创 2019-05-18 18:32:58 · 268 阅读 · 0 评论 -
Java网络编程总结
1、TCP协议:面向连接,三方握手,可靠的协议。2、UDP协议:数据报形式,不可靠,只发一次,不管你收不收到。3、服务器处理多客户端4、多客户端之间如何通讯5、MINA框架的基本使用...原创 2019-05-18 18:29:13 · 286 阅读 · 0 评论 -
Java网络编程之使用MINA直接传送对象
1、对象序列化package com.lemon.MINA;import java.io.Serializable;/** * 消息对象: * * @author lemonsun */ //对象序列化public class Message implements Serializable { private...原创 2019-05-18 18:22:51 · 445 阅读 · 0 评论 -
Java网络编程之服务器与多客户端通信
要想服务器同时支持多个客户端的连接,就必须加入多线程的处理机制,将每一个连接的客户端都创建一个新的线程对象。原创 2019-05-12 21:57:03 · 1491 阅读 · 0 评论 -
Java之TCP实现ECHO程序
Echo,意为应答程序的功能:客户端向服务器发送一个字符串,服务器不做任何处理,直接把字符串返回给客户端,Echo程序是最为基本的客户/服务器程序。代码示例;服务器:package com.lemon;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/** ...原创 2019-05-12 17:55:11 · 819 阅读 · 0 评论 -
Java网络编程TCP协议
1.TCP程序的概述:TCP是一个可靠的协议,面向连接的协议。实现TCP程序,需要编写服务器端和客户端,Java API提供了java.net包,为实现网络应用程序提供类。ServiceSocket:此类实现服务器套接字。Socket:此类实现客户端套接字(也可以就叫“套接字”)。Socket是网络驱动层提供给应用程序编程的接口和一种机制。2.数据发送过程:...原创 2019-05-12 16:50:43 · 268 阅读 · 0 评论 -
Java网络编程之MINA框架(2)
客户端:package com.lemon.MINA;import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.filter.codec.ProtocolCodec...原创 2019-05-16 18:02:34 · 239 阅读 · 0 评论 -
Java之网络编程基本概念
1.什么是计算机网络:把分布在不同地理地区的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件、数据信息等资源。2、计算机网络的主要功能:资源共享 信息传输与集中处理 均衡负荷与分布处理 综合信息服务(www/ISDN)等3.网络通信协议:要是计算机连成的网络能够互通信息,需要对数据传输速...原创 2019-05-12 11:26:27 · 330 阅读 · 0 评论 -
Java Path接口和Files类
JDK1.7引入了新的IO操作类,java.nio.file包下,Java NIO Path接口和Files类Path接口:1、Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个根部是根部件时就是绝对路径,例如:/或者C:\,而允许访问的根部件取决于系统文件2、以根部件开始的路径是绝对路径,否则就是相对路径3、静态的Paths.get方法接受一个...原创 2019-05-09 22:54:42 · 1560 阅读 · 0 评论 -
Java IO总结
IO操作的性能比较:1.内存映射最快2.NIO读写文件3.使用缓存的IO流4.无缓存的IO流IO流总结:原创 2019-05-09 22:48:51 · 183 阅读 · 0 评论 -
Java IO流之文件压缩与解压
Java实现解压与压缩:ZipOutputStream:实现文件的压缩ZipOutputStream(OutputStream out): 创建新的Zip输出流putNextEntry(ZipEntry e): 开始写入新的Zip文件条目ZipEntry(String name):使用指定的名称创建新的Zip条目ZipInputStream:实现文件的...原创 2019-05-08 11:00:04 · 1644 阅读 · 0 评论 -
对象比较器之comparator
对象比较器对两个或多个数据项进行比较,以确定它们是否相等,或确定它们之间的大小关系及排列顺序为比较。1.ComparatorComparator接口是要求自定义类去实现,按照OO原则;对修改关闭,对扩展开放。如果这个类已经定义好了,不想去修改它,那么需要Comparator接口:强行对某个对象collection进行整体排序的比较。已经定义好的Student类...原创 2019-05-02 17:30:28 · 524 阅读 · 2 评论 -
对象的克隆Cloneable
1.Cloneable将一个对象复制一份,称为对象的克隆技术。如果某个对象想要被克隆,则对象所在的类必须实现Cloneable接口。此接口 没有定义任何方法,是一个标记接口。2.对象需要具备克隆的功能:①实现Cloneable接口②重写Object中的clone方法3.Dog.java(可以被克隆的对象)package com.lemon;/...原创 2019-05-02 18:34:41 · 187 阅读 · 0 评论