java基础
文章平均质量分 54
wuhuhoo
这个作者很懒,什么都没留下…
展开
-
java中的强引用,软引用,弱引用,虚引用
java对象的引用类型其实和jvm设计的内存回收机制有关系,合理的使用引用可以保证对象的垃圾回收,避免OOM异常。定义:强引用,类似Object obj = new Object()这类的引用,只要强引用还存在,垃圾收集器永远不会回收被引用的对象。 软引用:用来描述还有用但并非必须的对象。对应软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围进行第二次回收。如果这次回收还没有足够的内存才会抛出内存溢出异常 弱引用:用来描述一些非必须对象,被弱引用关联的对象只能生存到下原创 2022-03-30 10:38:20 · 92 阅读 · 0 评论 -
cookie和session
1.1cookie机制HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。 Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。1.1.1什么是cookie..原创 2022-03-26 22:48:01 · 1215 阅读 · 0 评论 -
redis知识点
1.数据类型String,List,Set,hash,sorted set2.redis三种模式1)主从模式reids虽然读写速度都很快,但也会产生读压力特别大的情况。为了分担读压力,redis支持主从复制。·从服务器向主服务器发送同步请求·主服务器收到请求,开始执行bgsave命令生成rdb快照,并在缓冲区中记录此后执行的所有写命令·主服务器bgsave执行完后,向所有从服务器发送快照文件,发送期间会继续记录执行的写命令·从服务器收到快照文件后会丢弃旧数据载入收到的新快原创 2022-03-20 12:18:06 · 856 阅读 · 0 评论 -
ConcurrentHashMap简介
ConcurrentHashMap与HsahMap,HashTable一样,也是一个基于散列的Map,是一个高性能且线程安全的Map容器。HashTable是在每个方法上加上同步锁使得每次只能有一个线程访问容器,而ConcurrentHashMap使用了一种粒度更细的加锁机制“分段锁”,实现了更大程度的共享,在这种机制下,多个读取线程可以并发地访问容器,读取线程和写入线程也可以并发的访问容器,并且支持一定数量的写入线程并发的访问容器。ConcurrentHashMap内部...原创 2022-03-11 21:09:24 · 749 阅读 · 0 评论 -
volatile原理
volatile关键字主要⽤于解决变量在多个线程之间的可⻅性当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,再从主内存中读取该共享变量编译过程java代码编译后会变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在cpu上执行,所以java的并发机制依赖于JVM的实现和CPU指令实现原理java代码 1原创 2022-03-10 12:17:31 · 240 阅读 · 0 评论 -
常见的页面响应代码表示什么意思
原文连接:400,405,404 ,500是什么错_怎么写,解决问题的博客-CSDN博客_500是什么错误400 错误请求 — 请求中有语法问题,或不能满足请求。404 找不到 — 服务器找不到给定的资源;文件不存在(前端开发中是前端传的参数有问题,为前端解决)405 前端开发中是前端的get ,post请求方式错误,为前端解决。500 内部错误 — 服务器不能完成请求 或者出问题了(前端开发中是服务请求不到,接口问题,为后端解决)504 前端开发中为跨域问题,一般要后端解决2xx 成功.转载 2022-03-10 08:50:12 · 74 阅读 · 0 评论 -
get和post的区别
举个大家可能听过的例子:TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(u原创 2022-03-09 15:12:43 · 63 阅读 · 0 评论 -
jvm的一些问题
介绍一下java运行时数据区域,并说一下每个部分都存哪些内容?java的运行时区主要包含堆、方法区、虚拟机栈、程序计数器和本地方法栈。其中堆和方法区是所有线程共有的。而且虚拟机栈、程序计数器和本地方法栈是线程私有的。堆:存放对象实例 方法区:用来存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据 虚拟机栈:(生命周期与线程相同)java中每个方法执行的时候,java虚拟机都会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 程序计数器:保原创 2022-03-09 14:36:46 · 72 阅读 · 0 评论 -
synchronized
synchronized加在成员方法上,锁住this对象,锁的是调用这个方法的对象,即对象锁synchronized加在静态方法上,锁住类对象,类锁原创 2022-03-09 14:31:03 · 43 阅读 · 0 评论 -
java基础实现斗地主发牌
public static void main(String[] args) { //存储54张牌 ArrayList<String> poker =new ArrayList<>(); //定义两个数组,一个存储牌的花色,一个存储牌的序号 String[] colors = {"红桃","黑桃","梅花","方片"}; String[] numbers ={"2","A","K","Q","J",".原创 2022-03-09 14:00:14 · 147 阅读 · 0 评论 -
tcp demo
服务端public class demo_TCP_Server { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8888); Socket socket = server.accept(); InputStream input= socket.getInputStream();原创 2022-03-09 14:07:19 · 56 阅读 · 0 评论 -
用线程池模拟加载进度
public static void main(String[] args) throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(10); CountDownLatch countDownLatch = new CountDownLatch(10); Random random = new Random(); .原创 2022-03-09 14:08:39 · 75 阅读 · 0 评论 -
线程wait notify练习
包子实体类public class BaoZi { String pi; String xian; boolean flag=false;}包子铺public class BaoZiPu extends Thread{ private BaoZi bz; public BaoZiPu(BaoZi bz){ this.bz=bz; } @Override public void run(){原创 2022-03-09 14:12:45 · 45 阅读 · 0 评论