知识点总结
文章平均质量分 61
总结文字性
苦逼打工人呜呜~
这个作者很懒,什么都没留下…
展开
-
JMM是什么??详细了解
volatile禁止指令重排序:编译器重排序–>JVM重排序–>内存重排序原创 2021-06-02 21:00:20 · 3458 阅读 · 0 评论 -
JVM垃圾回收!!!
JVM垃圾回收器:判断死亡对象–>垃圾回收算法–>垃圾回收器一、判断一个对象的死亡1.引用计数器法给每个对象生成一个对应的计数器,每次在进行引用的时候这个计数器+1,如果撤销引用时计数器-1,GC会根据计数器的值,当此值等于0的时候就可以判定此对象为死亡对象。引用计数器缺点:不能解决循环引用的问题。...原创 2021-05-30 15:36:43 · 102 阅读 · 0 评论 -
JVM组成及类加载过程
一.JVMjava可以实现一次编写,到处运行。–>JVM帮我们处理不同硬件之间的差异参数设置:-X:执行的非标准的JVM参数,只有在部分HotSpot虚拟机下才能使用。-XX:标准的JVM参数,可以使用于所有的HotSpot虚拟机。-D:设置应用程序的参数二.JVM组成1.堆(线程共享)(1)堆:所有创建的对象信息都放在了这个区域,堆也是JVM中最大的一块内存。Java堆是所有线程共享的一块区域,在JVM启动时创建。此内存区域存放的都是对象实例。JVM规范中说到:“所有的对象实例以及原创 2021-05-30 11:14:36 · 186 阅读 · 0 评论 -
HashMap不安全!!!详细分析及解决方案
HashMap:非安全容器(实现结构、安全性问题)多线程下的问题:JDK1.7头插法–>死循环JDK1.8尾插法–>数据覆盖1.JDK1.7死循环(非常重要!!!)死循环出现在HashMap扩容时,负载因子:0.75(HashMap性能最高),HashMap默认大小为16,当容量大于等于0.75*16时进行扩容,默认2倍扩容源码分析:HashMap–>put()–>resize()–>transfer()【转移:将数组的值转移到新扩容的数组里;for循环的是数组,原创 2021-05-30 10:22:08 · 1043 阅读 · 0 评论 -
JUC是什么??
1.JUC :java.util.concurrentJUC包下的所有类都是线程安全的,JUC下有:1.ReentrantLock2.Semaphore(信号量),有限流功能3.CyclicBarrier(循环屏障)4.CountDownLatch(计数器)原创 2021-05-30 08:56:52 · 885 阅读 · 1 评论 -
锁策略!!!
一.乐观锁 & 悲观锁1.乐观锁:它认为一般情况下不会出现问题,所以它在使用的时候不会加锁,只有在数据修改的时候,才会判断有没有锁竞争,如果没有就直接修改数据,如果有则会返回失败信息给用户自行处理。2.乐观锁的经典事项:CAS(Compare And Swap)对比并且替换CAS实现:(V【内存中的值】,A【预期的旧值】,B【新值】)V==A?true:V–>B ;false:不能修改在java中,对比失败不能修改后,会加入一个自旋锁,将内存中的值刷新3.面试题:CAS实现的原理?原创 2021-05-27 20:57:15 · 125 阅读 · 0 评论 -
单例模式详解
一.单例模式全局唯一并且所有程序都可以使用的对象,就是单例模式二.单例模式的两种实现方式:1.饿汉方式(线程安全的)2.懒汉方式写单例模式(不允许new)三个步骤:1.将构造函数设置为私有的2.创建一个静态的类变量(让第三步的方法返回的)3.给外部提供获取单例的方法饿汉方式:优点:实现简单、不存在线程安全问题,因为饿汉的方式是随着程序的启动而初始化的,因为类加载是线程安全的,所以他是线程安全的缺点:随着程序的启动而启动,有可能在整个程序的运行周期里面都没有用到,这样就带来了不必要的开销原创 2021-05-24 19:48:30 · 263 阅读 · 3 评论 -
ThreadLocal结构,优缺点,冲突解决
一.ThreadLocal的初始化方法在什么情况下不会执行?当ThreadLocal中出现set方法之后,所有类型的初始化方法就不会执行了原因:ThreadLocal在执行get方法的时候,才会判断并调用初始化方法public class ThreadLocalDemo4 { //创建并初始化ThreadLocal private static ThreadLocal<String> threadLocal= ThreadLocal.withInit原创 2021-05-24 19:30:05 · 2312 阅读 · 0 评论 -
ThreadLocal的方法及使用
一.解决线程安全问题1.线程安全的解决方案:加锁(synchronized,Lock),使用私有变量2.加锁可以解决线程安全的问题,但因为要同时进行排队处理,所以会带来一定的性能消耗3.有没有一种方案既可以避免加锁排队执行,又不会每次执行任务都需要重新创建私有变量?使用ThreadLocal线程的本地变量,每个线程创建一个私有变量(以1000个任务10个线程池的示例来说,使用ThreadLocal就是创建10个私有变量选择ThreadLocal还是锁?就看创建实例对象之后的复用率,复用率高就是原创 2021-05-23 09:36:11 · 2817 阅读 · 0 评论 -
线程池的终止、状态、执行
一.线程池终止threadPoolExecutor.shutdown(); 结束线程池public static void main(String[] args) throws InterruptedException { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 5, 60, TimeUnit.SECONDS, new Linke原创 2021-05-21 17:50:12 · 792 阅读 · 0 评论 -
ThreadPoolExecutor执行流程
ThreadPoolExecutor执行流程:核心线程数、最大线程数、任务队列1.当任务量小于核心线程数的时候,它会创建一个线程来执行此任务2.当任务量大于核心线程数,并且没有空闲线程的时候,且线程池的线程数小于最大线程数,此时会将任务存到任务队列里面。注意:因为把多出来的任务存储在任务队列的成本最小,所以此时线程池会将新任务存在任务队列当中,而非新创建线程来执行任务。3.当前任务量比较大的时候,此时没有空闲的线程,并且任务队列已经满了,此时会判断当前线程池的任务数量是否大于等于最大线程数。如果当原创 2021-05-21 16:37:15 · 704 阅读 · 0 评论 -
线程池的五种拒绝策略
java提供的四种1.ThreadPoolExecutor.AbortPolicy()默认拒绝策略,不执行任务抛出异常ThreadPoolExecutor threadPoolExecutor= new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1), threadF原创 2021-05-21 09:38:20 · 504 阅读 · 0 评论 -
线程池
一.为什么需要线程池?(线程的缺点)1.线程的创建会开辟本地方法栈、虚拟机栈、程序计数器成为线程私有的内存,同时消耗的时候需要销毁以上三个区域,因此频繁的创建和消耗比较消耗系统资源。2.在任务量远远大于线程可以处理的任务量的时候,并不能友好的拒绝任务。二.线程池1.线程池是使用池化技术来管理线程和使用线程的方式。2.线程池的优点:可以避免频繁的创建和消耗线程可以更好地管理线程的个数和资源的个数拥有更多的功能,比如线程池可以进行定时任务的执行线程池可以更优化的拒绝不能处理的任务三.线程原创 2021-05-19 17:08:38 · 105 阅读 · 0 评论 -
线程安全问题及如何解决!!!
线程安全问题1.线程不安全:是指使用多线程执行任务时,得到的结果与预期不相符。private static int count=0; public static void main(String[] args) { Thread t1=new Thread(new Runnable() { @Override public void run() { for (int i = 0; i <1000原创 2021-05-04 18:17:28 · 189 阅读 · 0 评论 -
线程状态
1.线程的状态是一个枚举类型Thread.Statepublic static void main(String[] args) { for(Thread.State state:Thread.State.values()){ System.out.println(state); } }NEW:创建了线程但是还没有开始工作RUNNABLE:运行;分为RUNNING(运行中,即被服务的)和READY(就绪,即排队等待的)BLOCKED原创 2021-05-04 10:59:58 · 96 阅读 · 0 评论 -
认识线程及简单操作线程
一.进程与线程的区别进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程中可以包含多个线程进程的实际执行单位就是线程一个进程里面至少包含一个线程(即主线程),而线程必须依托于进程存在进程不可以共享资源,而线程可以共享资源二.线程的休眠方式Thread.sleep(100); //休眠100毫秒TimeUnit.SECONDS.sleep(1);//休眠1秒TimeUnit.HOURS.sleep(1);//休眠1小时 Thread.sleep(TimeUnit.SEC原创 2021-05-04 10:31:37 · 129 阅读 · 0 评论 -
TCP三次握手,四次挥手
TCP三次握手建立连接TCP的特性就是面向连接有连接必须要证明四项(因为TCP的发送端和接收端都是全双工)发送端的发送能力发送端的接收能力接收端的发送能力接收端的接收能力三次握手过程图:面试题1.TCP两次握手行不行?不行,两次握手不能完全验证发送端和接收端的发送和接收能力。2.TCP四次握手行不行?可以,但是没有必要3.accept过程发生在什么时候?发生在三次握手之后,三次握手完成之后,客户端与服务器端就建立了tcp连接并可以进行数据交互,这时就可以调用accpet函数原创 2021-04-18 11:58:57 · 115 阅读 · 0 评论 -
OSI七层模型 TCP/IP五层(四层)模型
OSI七层模型OSI七层网络模型称为开放式系统互连参考模型,把网络从逻辑上分为了7层,每一层都有相关,相对应的物理设备,比如路由器,交换机;通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。7.应用层针对特定的应用、程序的协议6.表示层将网络信息包转化为程序需要的数据格式,或者说将设备固有的数据格式转化为网络标准数据格式5.会话层负责建立和断开通信连接,管理传输层以下的分层4.传输层确认源地址和目标地址,保证数据可靠的从源主机发送到目标主机网络交互必备的5个部分原创 2021-04-18 10:22:54 · 313 阅读 · 1 评论 -
部署Web项目到Linux环境
打开Xshell获取连接第一步 配置JDK1.yum list java*2.yum -y install java-1.8.0-openjdk*3.java -version第二步 配置tomcat1.在tomcat官网下载安装包2.通过xftp将tomcat安装包上传到服务器3.解压tomcat的安装包切记进入安装包所在文件夹目录,再执行指令tar -zxvf apache-tomcat-8.5.65.tar.gz4.启动tomcat进入bin目录下,再执行指令原创 2021-04-13 22:01:39 · 212 阅读 · 3 评论 -
HTTP
1.HTTP 协议相关知识<1>http是超文本传输协议,https是基于http实现的http是明文传输,https是加密传输<2>URL(网址)协议(http/https)://服务器地址(ip,域名):端口号/目录地址/页面地址?参数#片段标识符●HTTP协议,默认端口号80;HTTPS协议,默认端口号443;默认端口号可省略2.HTTP协议格式<1>请求格式首行信息:方法类型(GET,POST),URL,版本号请求头header:每个键值对格原创 2021-03-28 10:02:35 · 118 阅读 · 1 评论 -
JavaScript基本知识
1.JavaScript能够实现页面的动态效果和接口的调用2.JavaScript的代码由两类构成<1>基础的逻辑业务代码(if,else,for…)<2>操作控件的代码(取控件的值,设置控件的值)3.js两种写法<1>原生js<script> function myck(type) { var num1=document.getElementById("num1"); var num2=原创 2021-03-27 21:27:00 · 88 阅读 · 0 评论 -
html ,css基本知识
[html 基本知识css 基本知识javascript 基本知识HTTP 协议相关知识请求格式响应格式常见请求方法及含义常见响应状态及含义常见HTTP头静态资源 vs 动态资源什么是 JSP 技术(模板技术)Servlet 的生命周期TOC](这里写自定义## 标题提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生原创 2021-03-27 20:44:01 · 163 阅读 · 0 评论