![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
Soul_xiaoming
一个刚毕业的小白
展开
-
线程和进程的区别
什么是线程和进程?进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。进程与线程的区别线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),原创 2020-07-12 14:36:05 · 280 阅读 · 0 评论 -
将本地项目上传到Github
将本地项目上传到Github登录githubhttps://github.com/我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可:https://git-for-windows.github.io/1.进入Github首页,点击New repository新建一个项目2.填写相应信息后点击create即可Repository name: 仓库名称Description(可选): 仓库描述介绍Public, Private : 仓库权限(公开共享,私有或指定转载 2020-07-05 21:30:10 · 179 阅读 · 0 评论 -
生产者消费者模式
先生产后消费实现方法一:使用lock锁机制实现import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class Data{ volatile int numb...原创 2019-09-19 11:21:53 · 107 阅读 · 0 评论 -
JUC下CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch 执行 - - 操作允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。CountDownLatch用给定的计数初始化。 await方法阻塞,直到由于countDown()方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await 调用立即返回。 这是一个一次性的现象 - 计数无法重置底层使用队列。 public Count...原创 2019-09-16 16:35:42 · 151 阅读 · 0 评论 -
volatile
volatile是JAVA虚拟机提供的轻量级的同步机制volatile特点:1、保证了可见性2、不保证原子性3、禁止指令重排,保证了有序性JMM(java内存模型)特性:1】可见性2】原子性3】有序性可见性:当一个线程对共享变量的值进行拷贝到自己的工作内存 再进行修改 再写入主内存中之后,会对其他的操作该变量的线程通知,其他线程就知道自己拷贝到自己工作内存的值...原创 2019-09-16 15:02:34 · 88 阅读 · 0 评论 -
集合
List : List中数据可重复arrayList:底层为数组结构,默认初始化长度为10,扩容规则为1.5倍,第一次扩容为15查询速度快,修改删除效率低。是线程不安全的。linkList:底层为链表结构,添加删除速度快,查询速度慢。也是线程不安全的vector(线程安全):底层为数组,扩容加载为1,第一次扩容长度为20,Vector线程安全,但是效率低,在方法上加了...原创 2019-09-12 14:33:36 · 134 阅读 · 0 评论 -
内存泄漏和内存溢出的区别
内存泄漏和内存溢出内存泄漏是指一个不再被程序使用的对象或变量一直占据着内存中的空间。java中有垃圾回收机制来保证一个对象不再被引用时,将对象进行回收。java中使用有向图的方式进行垃圾回收关系,例如可达性分析法,使用GCRoot判断对象是否被引用,可以消除对象与对象之间的互相引用,但是却是不再使用的垃圾对象。java内存泄漏的情况有长生命周期的对象引用短生命周期的对象,短生命周期的对象不...原创 2019-09-09 10:47:42 · 130 阅读 · 0 评论 -
JVM内存管理
运行时数据区线程共享区 : 线程共有的区域堆区方法区线程独占区: 每个线程都有自己的一个区域栈区:本地方法栈、虚拟机栈(我们常说的栈区)程序计数器程序计数器: 一块较小的内存空间,他可以看作是当前线程所执行的字节码的行号指示器程序计数器处于线程独占区如果线程执行的是java代码,这个计数器记录的是正在执行的虚拟机字节码指令的地址。如果正在执行的是nati...原创 2019-08-29 20:56:27 · 80 阅读 · 0 评论 -
GC垃圾回收机制
GC垃圾回收机制对象创建时内存分配首先在 eden 区进行分配 eden区是 垃圾收集器回收内存频率最高的地方 内存分配比例通常为 8:1:1 eden: 8JVM 将对内存分为新生代和老年代而新生代中又会划分为 eden 区, form survivor,to survivor 区。当在 eden 区分配内存不足时,则会发生Minor GCMinor GC:发生在...原创 2019-08-28 16:03:36 · 179 阅读 · 0 评论 -
JavaWeb监听器
监听器:它是一个接口,内容由我们来实现;它需要注册,例如注册在按钮上!监听器中的方法,会在特殊事件发生时被调用!监听器可以分为三种类型:1、监听对象的创建:ServletContext:主要监听servletContext的创建,需要实现ServeltContextListener接口ServletContext生命周期监听: ServletContextListener,它有两...原创 2019-08-06 09:39:09 · 915 阅读 · 0 评论 -
AJAX发送异步请求
ajax发送异步请求(四步操作)1. 第一步(得到XMLHttpRequest)ajax其实只需要学习一个对象:XMLHttpRequest,如果掌握了它,就掌握了ajax!!!得到XMLHttpRequest大多数浏览器都支持:var xmlHttp = new XMLHttpRequest();IE6.0:var xmlHttp = new ActiveXObject(“M...原创 2019-08-06 09:11:11 · 146 阅读 · 0 评论 -
String类和StringBuffer类的区别?
String类和StringBuffer类的区别?String类代表字符串类,字符串是常量,它们的值在创建之后不能更改。如果你修改了String的值,就相当于创建了一个新的对象,为不可变类。StringBuffer类指的是String的字符串缓冲区,通过调用某些方法可以改变该序列的长度和内容,为可变类,所以说StringBuffer类对象是可修改修改对象。String的特点:1.为不可变对...原创 2019-07-30 13:01:00 · 5487 阅读 · 0 评论