java
造梦灬烟花
这个作者很懒,什么都没留下…
展开
-
Lock源码深度解析(lock方法unlock方法、AQS)
大家好,我是wave。今天是圣诞节,我们就不聊学习了,随便在这里写点什么吧~闲聊今年的圣诞节由于我没有去公司实习,而且在家想多陪陪父母(毕竟去了北京估计一年就回来一次了),所以今天的圣诞节真的有点冷冷清清的感觉。身边的大学同学基本都去公司实习了,高中同学要么在考公研要么在考公务员。在老家目前真的连一个打球的朋友都找不出来。最后实在无聊去了一家小学培训机构辅导六年级语数英作业。。。然后发现现在小学可太难读了,作业一堆一堆的,一般5点开始做作业要8点左右结束。偶尔九点十点也是会有的。做老师就感受到了老.原创 2020-12-30 16:15:45 · 714 阅读 · 4 评论 -
全网最详细的synchronized讲解(锁升级、查看对象头标记、底层实现)
大家好,我是wave,这次来和大家详细的聊一聊Synchronized这个关键字,希望大家看完可以对synchronized关键字有一个非常全面的了解。Synchronized基本操作synchronized主要有三种使用方式:修饰实例方法: 给一个类上的方法添加synchronized关键字,这个锁会作用于这个类当前的实例对象上,进入同步代码前要获得 当前对象实例的锁public synchronized void method(){ // do something.原创 2020-12-17 20:53:54 · 643 阅读 · 0 评论 -
Thread、Runnable、Callable基本操作线程基本概念
大家好我是wave,本篇文章给大家介绍一些有关线程的基本概念与线程的一些基本操作线程与进程进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。还存在资源开销、包含关系、内存分配、影响关系、执行过程等区别。同一进程的线程共享本进程的地址空间和资源(堆和方法区),而进程之间的地址空间和资源相互独立。举个栗子就是我们从桌面随便打开一个应用程序,比如开启一个qq或者wegame,都算是启动了一个进程。而线程是一个比进程更小的单位,比如在qq打开多个聊天窗口与别人聊天,就是一种多.原创 2020-12-12 10:16:06 · 350 阅读 · 0 评论 -
ArrayList源码分析
之前给大家讲了讲Java的各种集合,今天来带大家深入了解一下ArrayList的源码ArrayList类的定义public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{首先来看看ArrayList这个类的继承关系AbstractList是一个抽象类,它里面只有一.原创 2020-12-08 11:00:04 · 148 阅读 · 0 评论 -
Java中常见集合的基本使用
今天来给大家讲讲JAVA中的几种集合~可以看到上面的继承关系分为两类,一类为collection,一类为map。说白了就是collection里面放入值是一个一个的,而map是一个键值对,每一个key对应一个value,所有map的每一个值都是一对键值对。我们从上面这幅图左边开始讲解一些常用集合的使用方式。Arraylist首先介绍一下ArrayList这个集合,这个集合在平常用的算是最多的一个集合的。这个集合也特别好理解,和它的名字一样,ArrayList可以想象成一个数组链表,也原创 2020-12-06 18:59:37 · 759 阅读 · 2 评论 -
JavaIO的基本操作
这篇文章给大家介绍一下Java中基本IO操作,希望大家看完这篇文章可以自己完成一个文件的拷贝操作FileIO操作就是对文件的操作,在Java万物皆对象的思想下,我们不难想到肯定会有一个类是用来表示文件的。Java中用来表示一个文件的类就是File类,使用这个类可以对文件进行一系列的操作,比如打开文件、获取文件路径、获取文件名字等等操作。我们要对文件进行操作,就必须依靠这个对象来打开文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EbkCxbG-1.原创 2020-12-05 19:29:38 · 308 阅读 · 0 评论 -
synchronize锁升级机制总结
锁升级(膨胀)过程synchronize锁升级过程:jdk高版本之后对synchronize关键字进行了很多优化,其中一项就是锁升级,以前synchronize默认就是悲观锁,是在JVM层面上加锁的,加锁解锁的开销都比较大。所以引入了偏向锁、轻量级锁、重量级锁。那么偏向锁、轻量级锁、重量级锁又是什么偏向锁:我认为偏向锁的关键就是“偏”,偏向于第一个访问的线程。也就是说在无竞争的环境下,有一个线程访问的同步代码块,那么这个锁就会偏向这个线程,下次有线程访问的时候就会判断是不是之前访问过的线程访问,这样就原创 2020-09-02 11:19:55 · 1937 阅读 · 0 评论 -
ActiveMQ知识整理 + 面试题
AcitveMQ首先,说起ActiveMQ,就必须先聊聊JMS(Java Message Service)规范,也就是Java消息服务,它定义了Java中访问消息中间件的接口的规范。JMS只是接口,并没有给予实现,实现JMS接口的消息中间件称为 “JMS Provider”,目前知名的开源 MOM (Message Oriented Middleware,也就是消息中间件)系统包括Apache的ActiveMQ、RocketMQ、Kafka,以及RabbitMQ,可以说他们都 “基本遵循” 或 “参考”原创 2020-08-31 11:37:49 · 589 阅读 · 1 评论 -
Redis分布式锁的演化
使用redis来实现一把分布式锁普通分布式锁一把普通的redis分布式锁,原理是setnx只有在第一次设置的时候才生效,等于第一个setnx成功的线程得到了这把锁,其他线程设置失败就直接返回了,只有当这个线程执行完毕,把这个锁给删除,别的线程才能得到这个锁。 //伪代码 private Jedis jedis; public String doLock(){ ...原创 2020-02-27 18:45:22 · 177 阅读 · 0 评论 -
Nio文件的读写
具体思路:打开一个文件,把文件以字节读到buffer中,再把buffer进行一次flip,就可以把buffer写入到一个文件中了。如果没有clear方法会产生死循环,一直把buffer读到文件中。不写clear方法分析:第一次read之后position等于limit,read等于buffer字节数,flip之后,position为0,limit不变,把buffer读进文件中,position等...原创 2020-02-02 10:58:11 · 410 阅读 · 0 评论 -
Java排序方法
由于之前基本都是用c++写算法,导致java排序库函数非常不熟悉,记录一下java库函数排序方法基本数据类型的排序public static void main(String[] args) { Integer[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5}; Arrays.sort(a); for (Integer i...原创 2020-01-09 10:00:47 · 101 阅读 · 0 评论 -
java异常类型记录
Throwable包含看错误(Error)和异常(Exception两类)Exception又包含了运行时异常(RuntimeException,又叫非检查异常)和非运行时异常(又叫检查异常)1、error是程序无法处理了,如果outOfMenoryError,OutOfMemoryError等等,这些异常发生,java虚拟机一般会终止线程。2、运行是的异常都是RuntimeExceptio...原创 2019-10-25 16:49:57 · 98 阅读 · 0 评论 -
java分页--标签版
自定义标签的方法实现分页首先需要一个分页对象,在某个pojo里面加上这三条属性并生成get set方法//当前页 private Integer page; //每页数 private Integer size = 10; //开始行 private Integer startRow = 0;再加入自定义标签的两个类package cn.wave.comm...原创 2019-08-03 17:03:38 · 211 阅读 · 0 评论 -
分页笔记-servlet版
导包链接:https://pan.baidu.com/s/1uLVyJrOKcHRFGNaPEBZ6KA提取码:rw5f这条博客只是给自己做个笔记,由于里面的方法提取的不够统一,不建议参照。。。。servlet代码UserService userService = new UserService(); public String selectStaff(HttpServletRe...原创 2019-08-02 18:16:36 · 137 阅读 · 0 评论 -
Mybatis逆向工程
修改好里面的数据库配置信息和你所要生成的pojo和mapper文件包的位置,再运行src里面一个default包里面的java文件就可以生成所需要的东西了。项目在下面这个链接里面链接:https://pan.baidu.com/s/11QQYPXCKo-J2KB7xrImBvw提取码:nrd7<?xml version="1.0" encoding="UTF-8"?><...原创 2019-04-24 18:46:51 · 147 阅读 · 0 评论 -
使用c3p0封装jdbc
即使写了DBUtil感觉还是对数据库的操作会有点麻烦,还是有一些操作是重复的,所以介绍一个传智播客弄出来的一个jdbc的封装,个人觉得简洁好用。导包:链接:c3p0-0.9.2-pre1 提取码:uwc3commons-dbutils-1.4提取码:aa7ritcast-tools-1.4.2提取码:6sxqmchange-commons-0.2提取码:its7 还有一个mysql驱动...原创 2019-04-23 21:33:34 · 327 阅读 · 2 评论 -
使用IO处理json数据
简单写一下付建生想出的json存数据还要io读取的作业。首先得知道什么是json,json是一种数据格式,其实就是一串字符串,但是这串字符串以特定的格式存放,代表一组数据。所以我我们首先把数据准备一下。data.txt{ "array": [ { "id":"1", "dep":"教学部", "zhuwu":"教学总监" }, { "id"...原创 2019-04-22 20:50:31 · 429 阅读 · 0 评论 -
Jdbc的简单增删改查(MYSQL)
Jdbc的简单增删改查(MYSQL)今天来写一篇简单的jdbc的增删改查的操作,如果还没学jdbc的同学可以看一看。个人认为jdbc的操作比文件简单多了,学会jdbc之后就不用受文件的苦了(反正我没用过文件,哈哈)。而且如果做出的项目的数据能够保存起来,这个项目的逼格立马高了起来啊。1、工具准备首先你需要导一个jar文件,如果你的mysql是5.7版本的,可以用我这个链接:https://...原创 2019-04-22 14:25:20 · 305 阅读 · 1 评论 -
io追加数据
FileWriter构造函数一个有两个参数,第二个参数改为true就是追加数据public void save(int uid,int pid,double value) throws Exception { BufferedWriter bw = new BufferedWriter(new FileWriter("src/data/testCF.txt", true)); Strin...原创 2019-04-16 19:09:00 · 188 阅读 · 0 评论