自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 SQL,随时补充

1、where后不能使用聚合函数,原因是聚合函数是对结果集进行处理,而where语句是在对数据库中数据的处理,还没有产生结果集,但是可以使用普通函数。A表 inner join B表 AB的交集A表 left join B表 这里可以理解为只是通过链接取到了A中的所有值A表 right join B表 与left同理Order by 排序 升序 ASC ...

2020-02-28 23:21:53 147

原创 线程局部变量线程池

TreadLocal线程局部变量初始化一个线程局部变量,每个线程都有自读独一份的局部变量不会被其他线程读取,代码展示如下public class T <V>{ static ThreadLocal<Person> tl = new ThreadLocal(); public static void main(String[] args) { ...

2020-02-25 14:54:38 368

原创 多线程总结(六)生产者消费者模型/精确唤醒(Lock和Condition)

这个是一个很常见的模式了,能在很大程度上反应大家对于多线程的理解,我今天就写一下,并且详细的说一下对于每个需要注意的关键点的了解。代码如下关于需要注意的地方都在代码中有了详细的说明。public class T <V>{ final private LinkedList<V> linkedList = new LinkedList<>(); f...

2020-02-25 11:34:22 264

原创 多线程总结(五)synchronized的替代reentrantlock手动锁

reentrantlockreentrantlock可以实现synchronized的功能,但是reentrantlock和synchronized有一些不同,来看一下两者之间实现相同功能的代码:通过下面这段代码可以发现reentrantlock和synchronized在这方面的使用方法是相同的,不同的地方是,lock的锁对象需要我们自己进行实例化。这是他们在使用上的一个不同点,但是在功能上...

2020-02-25 02:05:18 487

原创 多线程总结(四) wait()notify()notifyAll()等方法,以及使用Latch代替线程之间的通信

线程之间的通信如果一个线程想要监视另一个线程的进度,在这个线程达到某个进度时就开始执行代码,这个时候就需要进行线程之间的通信,就需要用到wait()等方法,如题:让线程2监视线程1在线程中计数达到5时,线程2进行打印通知。代码如下:只有synchronized针对的对象才能调用wait()等方法wait()方法是让线程进入等待队列,需要注意的是:wait()方法会释放锁,但是notify...

2020-02-24 22:31:38 194

原创 多线程总结(四) volatile关键字的原子性问题,Atomic原子类

volatile关键字的原子性问题在使用 int 类型进行count++操作的时候,只加个volatile关键字只能满足可见性问题,但是在某个线程进行count++操作的时候 因为这个操作不是原子性的所以会被打断,如果这个线程还没有进行写操作,然后其他线程开始执行,也进行了++操作虽然count的值在同步更新,但是在重新给count写值的时候并不会管你是不是被其他线程更改过,所以需要加上sync...

2020-02-24 21:20:27 255

原创 多线程总结(三) synchronized volatile 关键字 死锁/可重入锁等问题

synchronized关键字可以理解为对某个对象加锁public class JavaTest { private int count = 10; Object o = new Object(); void m(){ synchronized (o) { count++; } }}这里代表如果要对sy...

2020-02-24 19:49:54 278

原创 多线程总结(二) 创建线程的方法以及线程安全问题

创建线程的几种方法1.继承Thread类在继承Thread类后重写run()方法,然后直接实例化子类对象即可创建线程,线程的启动通过调用start()方法,这里有一点需要说明一下,启动线程后线程并不是直接运行,而是进入就绪状态,在抢占到CPU之后才会真正开始运行代码。public class JavaTest extends Thread{ @Override public ...

2020-02-24 17:52:50 212

原创 多线程总结(一)1.什么是多线程 2.并发与并行

什么是多线程?举个例子:进程就好像对一堆数求和,这个求和的过程就是一个进程,也可以认为是计算机上运行的一个程序,而线程可以理解为在对这一堆数进行求和的时候,有两个人去计算,把这堆数字分成两堆,一个人去计算一堆,另一个人去计算另一堆,可能不是很准确。但是这杨在我看来比较容易理解。并发与并行并发: 是在一个CPU上有多个进程在执行,而CPU通过时间片轮转的方式让这些进程能够“同步进行”。这个同...

2020-02-24 14:42:16 313

原创 单例模式解析

1、程序计数器 程序计数器是当前线程所执行的行号指示器。通过改变计数器的值来确定下一条指令,比如循环,分支,跳转,异常处理,线程恢复等都依赖计数器来完成。 由于在JVM中,多线程是通过线程轮流切换来获得CPU执行时间的,因此在任一时刻,一个CPU的内核只会执行一条线程中的指令,因此,为了能够使得每个线程都在线程切换后能够恢复在切换之前的程序执行位置,每个线程都需...

2020-02-23 17:45:47 186

原创 递归方式实现归并排序的详细图解

注释绿色为返回橘黄色为步骤蓝色为指向排序方法代码如下public static void mergerSort(int[] array){ merge(array,0,array.length-1);}public static void merge(int [] array, int low ,int high ){ if(low==high){ r...

2019-12-18 17:22:48 444 2

原创 这就是排序!!!

11

2019-12-03 20:03:57 125

原创 优先级队列:堆 大根堆小根堆 代码及其应用。

11

2019-12-03 19:56:26 595

原创 像计算机一样思考,二叉树的概念,代码,以及代码运行图解 一

11

2019-11-28 19:11:13 249

原创 栈和队列的手动实现,以及栈和队列的互相实现

```java在这里插入代码片

2019-11-28 18:38:36 148

原创 数组和链表的增删查改

数组为什么查询快,增删慢查询数组中的数据都是连续的在查询数组中的元素时候,只要进行遍历,或者跟据下标寻找。增删在数组中如果对某一个数据进行插入,那么后面的每一个数据都要进行右移。如果进行删除那么它后面的每一个数据都要进行左移。链表为什么查询慢,增删块在链表中,每一个元素都保存了下一个元素的地址查询在进行查询时,如果要遍历所有的元素那么链表的速度很快,但是如果需要某一个数据,那么每...

2019-11-28 16:45:18 252

原创 Java集合中重要实现类详解

Java集合框架是一组接口及其实现类,将多个元素置于一个单元中并进行快速便捷的增删查改类及其接口总览Connection接口1、List1.1 ArrayList在ArrayList的源码中可以看到,它定义了一个Object[] 并且其构造方法有三种ArrayList的底层数据结构用数组实现查询快,增删慢 线程不安全 效率高1.2 VectorVector的底层数据结构用...

2019-11-28 16:33:50 169

原创 异常处理:做个堂堂正正的程序员

异常的处理try{//危险动作;}catch(Exception ex){//尝试恢复或者列出有用信息ex.printStackTrace();}1、有风险或者可能会抛出异常的程序代码必须要声明它会抛出异常2、调用该方法时则需要抛出异常RuntimeExceptionsRuntimeExceptions及其子类不会被编译器检查要点:如果try块内部的程序成功运行则会跳过cat...

2019-11-13 14:27:30 141

原创 深入多态:接口与抽象类

抽象类1、抽象类没有实例,没有具体化的对象,所以抽象类不能被初始化。2、在类的的前面加上abstract来声明抽象类,抽象类可以声明一个引用但是不能创建对象3、抽象类除了被继承过之外,没有用途、没有值、没有目的4、抽象方法代表此方法一点更要被覆盖或者是重写,抽象类可以包含抽象方法和非抽象方法1)抽象方法没有实体2)如果将一个方法标记为抽象方法那么就必须将类也标记为抽象类,非抽象类中不能...

2019-11-05 17:05:37 162

原创 多态特性

什么是多态?在父类引用子类对象,并且发生了方法的覆盖,此时通过父类引用调用这个对象就会发生地址的动态绑定,通过观察底层的代码运行状态可以观察到在编译时运行的是父类的方法,但是实际上在运行的时候,是调用的子类的方法。如何防止某个类被做出子类1、存取控制:类不能被标记为私有,当类不标记为公有时,只能被同一个包中的类做出子类2、final修饰符:这表示他是继承树的末端,不能被继承.3、让类只拥...

2019-11-03 12:03:37 481

原创 关于Java中继承的一些特性

继承的用途继承主要是为了避免代码的重复书写,能够有效的复用代码特点1.子类会继承上级类的方法,属性,(即除构造方法外的一切内容),就是说子类会获得父类的功能。2.子类可以覆盖父类的方法。覆盖:由子类重新定义继承下来的方法以改变或者延伸此方法的行为3.则类继承父类的实例变量和方法但也可以加入自己的实例变量和方法亦可以覆盖继承自父类的方法。继承树1、找出具有共同属性和行为的对象2、...

2019-11-03 11:45:32 162

原创 类和对象

通俗的讲,类所描述的是对象知道什么与执行什么。知道什么指的是类的实例变量。执行什么指的是类的方法。同一类型的每个对象。他们拥有的方法是相同的,但是方法可以根据实例变量不同的值来表现出不同的行为。面向对象定义对象的属性以及行为(即方法),将其归为一个类,在需要让对象做出动作的时候,只需要调用对象相应的某个方法即可。类和类的实例化类可以认为是对象的 标准或者说是模板。类的实例化即用...

2019-10-23 08:50:15 130

原创 变量和运算符,十进制整数的转化

变量1.整型变量: int 包装类Integer 4字节2.长整型变量long 包装类Long 8字节3.双精度double 包装类Double 8字节4.单精度float 包装类Float 4字节5.字符类型char 包装类Character2字节6.字节类型byte 包装类Byte ...

2019-10-13 17:23:56 464

原创 冯 诺依曼体系的初步了解

1.计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。2.程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。3.控制器根据存放在存储器中地指令序列(程序)进行工作,并由一个程序计数器控制指令地执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。功能:1.把需要的程序和数据送至计算机中。  2.必须具有长期记忆程序、数据、中间结果及最终运算结果的...

2019-10-11 15:25:33 173

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除