自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++指针数组,int *,char *,string *

c++指针数组指针数组≠数组指针,指针数组归根结底是个数组,数组的元素是指针。数组指针归根结底是个指针,指向数组的第一个元素。我们以int型、char型、str型指针数组为例。整型指针数组#include<iostream>#include<iomanip>using namespace std;int main(){ int a[5]={1,2,3,...

2019-07-03 18:59:36 4440 1

原创 排序算法的总结,怎么选择排序算法

先上各种排序算法的实现,面试经常问的。冒泡排序public int[] Maopao(int[] nums){ int flag=0; for(int p=nums.length-1;p>=0;p--){ int j=0; for(;j<p ;j++){ //每一趟排序都把最大的值放到最后 ...

2020-05-01 10:21:20 725 1

原创 什么是死锁,怎样有效的避免死锁,银行家算法

死锁的四个必要条件:互斥条件:一个资源只能被一个线程占用请求与保持条件:一个线程因请求资源被阻塞时,对获得的资源保持不放不剥夺条件:线程已经获得的资源,没有使用完,不能强行剥夺循环等待条件:若干进程形成的首尾相连的等待状态避免死锁就是要让这四个必要条件不成立:1.避免线程在阻塞状态的时候继续占用资源,或者让线程请求下一个资源的时候释放当前资源2.资源可以按照优先级有序分配,避免线程...

2020-05-01 09:51:55 487

原创 springboot是怎样简化开发的,原理是什么?

我们习惯上使用springboot框架来做web项目,即便一个不理解spring的同学也可以把springboot用的很好。但是如果面试官问你为什么要用springboot,该怎么回答呢。看了一本和springboot底层有关的书,稍微整理一下:1.首先介绍springboot是什么springboot提供了快速创建spring项目的方式,依托的是java技术和spring框架。spring...

2020-05-01 09:38:01 2273

原创 23中设计模式的理解

一般做软件开发都需要知道23种设计模式这面这张图概括的很好创建型模式有5种:单例模式,全局只实例化一个对象。spring里面自动注入的bean默认是单例的。同步容器比如concurrentHashMap的put等方法,使用的是unsafe类的一个对象,unsafe类就符合单例模式。工厂方法模式:一个工厂提供返回类的实例的方法,使用这个工厂,可以自己决定要实例化哪个类。Executors类...

2020-05-01 09:12:58 975

原创 Java基础面试必问

1.Java接口和抽象类的区别1、接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。2、类可以实现很多个接口,但是只能继承一个抽象类。3、如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。4、抽象类可以在不提供接口方法实现的情况下实现接口。Java接口中声明的变量默认都是fin...

2020-05-01 09:06:37 206

原创 SpringAoP动态代理以及拦截器链

Aop面向切面编程思想我们都知道Java是一种面向对象的编程语言,强调用类和对象来实现一些功能,强调对象之间的组装思想,强调类与类之间封装、多态和继承的关系。而在一些主业务逻辑之外,还有一些各类通用的业务代码,并不专属于某个类的功能,因此可能散落在工程的各个角落。这些功能可以做成切面,在任何需要业务增强的时候,插入到业务代码的前后,即可。那么切面的插入是怎么实现的切面的插入是说,要在某个对...

2020-04-03 21:52:04 879

原创 精选了20行代码,让你看看SpringIoc的底层源码实现

精选了20行代码,让你看看SpringIoc的底层实现Spring两大技术之一Ioc:就是用来帮助管理Bean的。什么是Bean:所有交给Spring管理的对象都是Bean。什么是交给Spring管理:(如下)通过xml配置的<bean>标签@Component@Service@Controller@Repository注解标注的@Bean注解标注的@Autowired自...

2020-04-03 19:15:56 366

原创 java实现Dijkstra迪杰斯特拉算法

思路:(1)迪杰斯特拉处理的是二阶矩阵,代表各个端点之间的权。(2)需要一个标识数据,用来表示哪个点已经确定了最短路径。(3)还需要一个队列,用来存储距离当前端点最近的几个端点。不过这里没有存储进队列,只在比较的过程中把最小的索引值取出来。(4)距离每个端点的最短距离的判定是起点到这个点的距离和起点通过某个点到这个点的距离之间较小值。程序如下,可直接运行。public class Ma...

2020-03-13 17:05:17 176

转载 python3.7根据关键字爬取图片,即学即用,超级方便

参考这位博主的链接https://blog.csdn.net/weixin_41271101/article/details/90905613

2020-03-08 10:03:42 612

原创 数据库索引,B-tree,B+Tree,各自的优势和使用场景

1.数据库索引是什么数据库索引是为了加快查询速度对表的字段增加的一种标识。DB在执行sql语句的时候,如果没有索引,将会根据搜索条件进行全局遍历,如果对某一字段增加索引,会根据索引定位数据具体所在的位置,减少了查找的次数,加快了操作速度。2.索引的优缺点优点:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引的最主要的原因。在使用分组和...

2020-03-06 14:40:24 1416

转载 正则表达式判断手机号码

今天才知道手机号这不只是11位数字,前三位只有少数的几种情况https://blog.csdn.net/guoyangyang123456/article/details/84579521

2020-03-05 21:51:56 378

原创 MySQL事务,事务的四大特性以及四种隔离级别

事务是sql业务中最小的不可分割的单元,一个事务中的多条sql语句,要么同时成功,要么同时失败。mysql默认,autocommit=1,也就是每条sql语句作为一个事务并自动提交。事务的三种操作:自动提交://mysql默认是开启事务的,当执行sql语句的时候,自动提交,效果立现,且不能回滚,即撤销。select @@autocommit;+--------------+| @@a...

2020-03-05 14:33:18 371

原创 springboot和mybatis整合步骤

步骤如下:(1)右键->new Module->spring initial->web->spring web,生成基础项目(2)pom.xml添加Mybatis起步依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>...

2020-03-04 18:16:18 132

原创 MySQL内连接、左外连接、右外连接、全外连接

连接的优势是减少了外键的使用。内连接:最常见的等值连接,指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。inner join或join on condition//首先创建两个表person和card,内容如下 select * from card;+------+----------+| id | cardName |+------+----------+...

2020-03-04 13:37:19 157

原创 mysql查询常用指令

mysql查询(1)查询数据表的所有记录select * from students;(2)查询特定字段的信息select ke_name,ke_tea_num from cources;+----------+------------+| ke_name | ke_tea_num |+----------+------------+| ke_one | 301...

2020-03-04 13:34:23 216

原创 终端操作MySQL数据库的指令,包括增删改查及各种键约束

localhost服务器可以建立数据库,数据库可以放很多数据表。mySQL是关系型数据库,使用的是SQL语言。1.终端操作必备指令登录服务器mysql -uroot -padmin创建数据库create database test;//(test为数据库的名字)查看数据库show databases;(加分号)要对数据库或者数据表进行操作,首先要选中一个数据库use jd...

2020-03-02 13:44:31 177

原创 Java 线程池的框架,Executors以及ThreadPoolExecutor、ForkJoinPool等的关系

2020-03-01 08:43:04 136

原创 三种方式实现生产者消费者模式:synchronized+wait+notify,lock+condition,LinkedBlockingQueue

synchronized+wait+notify,方法比较低级关键在于:put和get方法必须是synchronized修饰的,并且容器为空的时候不能get,容器满了的时候,不能put。public class Container<T> { List<T> list=new LinkedList<>(); int max=10; sy...

2020-02-29 22:06:49 224

原创 从源码分析await和signal怎样实现线程间通信。

Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。如果只有一个线程在某种条件下等待,那么就可以准确的唤醒这个线程,如果有多个线程在某种条件下等待,那么 条件.signalAll就会同时唤醒多条线程,signal就会把这种条件下等待的第一个线程给唤醒。具体的实现看看一下源码吧:await方法Reentran...

2020-02-29 22:06:17 257

原创 ReentrantLock代替synchronized手动上锁,trylock尝试上锁,lockInterruptibly设定该锁可以打断,实现公平锁

1.Reentrantlock是手动锁,重入锁,可以来代替synchronizedsynchronized的使用方法如下:public class T(){ public synchronized void m1(){ // } public synchronized void m2(){ // } public stat...

2020-02-29 20:53:17 440

原创 wait、notify和countDownLatch进行线程间交互

1.wait和notifywait会释放锁,notify不会释放锁。wait和notify只能在加锁的情况下使用。wait底层是引用的native方法,wait一定的时间。notify唤醒一个对象,底层是一个native方法,只能被该对象的monitor调用。某个线程调用对象的wait方法,该线程进入等待模式且释放锁。其他线程可以访问。wait可以取消while循环的等待模式,减少CPU的...

2020-02-29 20:35:05 271

原创 用Java模拟一个死锁

模拟一个死锁:一个线程1在锁定A的过程中,需要锁定B,另一个线程2在锁定B的过程中需要锁定A,线程1想申请B 的锁已经被线程2锁定了,线程2 想申请A的锁,已经被线程1 锁定了,两个线程都无法执行,构成死锁。public class T(){ public static String resource1="resource1"; public static String reso...

2020-02-29 20:26:19 162

原创 IDEA+connecor j操作数据库:安装mysql+IDEA连接数据库+maven导入jar包+lastUpdated文件解决方案

1.连接数据库mysql服务端的安装:https://blog.csdn.net/suchenbin/article/details/83857229cmd进入mysql的指令:在cmd中直接输入 mysql -uroot -p123456即可。安装mysql可视化界面,mysql-front电脑-管理-服务-MySQL-启动后,登录,之后可以在界面进行数据库操作(如果连接不到127.0....

2020-02-29 20:17:25 280

原创 java向mysql写数据出现中文乱码

java向mysql写数据出现中文乱码:解决方法:(1)修改mysql的默认字符集:在mysql的console 里面输入SHOW VARIABLES LIKE 'character%';查看mysql的默认字符集(2)关闭mysql服务(3)在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini配置文件进行两处修改:参考这个链接https://ww...

2020-02-29 20:16:00 137

原创 IDEA+hibernate操作数据库

1.hibernate操作数据库是数据库访问层的框架,对JDBC进行封装,简化数据库访问层的开发(1)确认IDEA已使用hibernate插件(2)IDEA配置Hibernate(3) 也可以参考how2j实施例:(1)配置文件在src新建一个package,新建一个实体类User,用于映射数据库中的表package entity;/** * @ author: 曲梦瑶...

2020-02-29 20:14:02 662

原创 ConcurrentHashMap使用Node+CAS+synchronized实现线程安全

官网对ConcurrentHashMap的使用场景的介绍//{Hashtable} is synchronized. If a//thread-safe implementation is not needed, it is recommended to use//{HashMap} in place of {@code Hashtable}. If a thread-safe//hi...

2020-02-29 19:41:45 4026

原创 LinkedBlockingDeque自动阻塞,put和take方法的阻塞实现

LinkedBlockingDeque自动阻塞的双端队列。增删元素的方法都是用ReentrantLock上锁的。add方法无返回值,满了报异常,offer方法满了return false,put方法满了await自动阻塞。以putFirst(E e)为例:final ReentrantLock lock = new ReentrantLock();private final Condit...

2020-02-29 19:32:00 1913

原创 Java高并发——线程基础

1.什么是线程同一个时间段内,不同的任务模块可以并发进行,称为线程,是CPU的最小调度单位。进程和线程的区别:从资源分配的角度:进程是资源分配的最小单位,一个进程的多个线程共享进程的资源。从cpu调度的角度:所有的程序都是以进程的形式运行在操作系统上,接受操作系统的资源分配,其中就包括CPU分配。进程在执行的时候,会开辟多条线程,来处理不同类型的任务,CPU通过在线程上的调度实现进程...

2020-02-29 19:30:00 130

原创 java 子类重写父类的方法,父类怎样使用子类独有的方法

重写和重载重写是继承的时候,重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。重载,是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。重载可以避免使用完全不同的方法来完成几乎相同的任务,可以使方法根据受到的参数的不同,执行不同的操作。子类重写父类的方法子类重写了父类的方法,如果用父类的对象去调用,就会使用父类的实现如果用子类的对象去调用...

2019-12-21 15:28:18 2840

原创 Java 子类继承父类的时候,子类的构造函数怎么写

子类继承父类的时候,子类的构造函数怎么写构造函数用于构造一个类,是不能继承,不能被覆盖的。(1)父类显式定义有参构造函数,而没有定义无参构造函数的时候,java虚拟机默认不自动创建一个无参构造函数。(2)如果父类显式的添加无参构造函数,则子类可以创建自己的有参或无参构造函数,如果子类没有显示调用父类的有参构造函数,则java自动调用父类的无参构造函数。(3)如果父类没有显式的添加无参构造函...

2019-12-21 14:55:08 2274

原创 java 普通内部类和静态内部类

java普通内部类和静态内部类在以下例子当中,Outer是外部类,class Inner是一个普通的内部类static class Sinner是一个静态内部类,也可以说是嵌套类普通内部类,相当于外部类的一个普通的成员变量,内部类的构造必须要外部类先构造出,不能定义静态变量和方法。(1)系统自动为普通内部类建立一个指向外部对象的引用,所以内部类可以访问外部类的方法,比如下面class In...

2019-12-21 13:35:33 223

原创 java lambda表达式

https://blog.csdn.net/weixin_42022555/article/details/81943263

2019-12-21 12:02:30 93

原创 JDK13-HashSet-从源码分析如何去重复,以及重写equals和hashcode方法,equals和==的区别

HashSet 是 AbstractSet的子类这里使用泛型编程HashSet有一个成员是private transient HashMap<E,Object> map;(不被序列化)HashSet的构造函数都是使用HashMap的各种构造方式对map变量进行初始化。HashSet的size、isempty等函数都是直接调用HashMap里面的从源码上分析:为什么Set 接...

2019-12-20 22:22:30 142

原创 JDK13-LinkedHashMap源码分析:如何按照访问顺序或插入顺序管理节点

LinkedHashMap继承于HashMap,使用元素的自然顺序对元素进行排序。Entry类是LinkedHashMap的嵌套类,代表LinkedHashMap当中的节点,继承HashMap.Node类,且调用父类的构造函数构造。static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K...

2019-12-20 22:15:38 259

原创 JDK13-HashMap的putVal、getNode、removeNode源码分析

hashmap的四种构造方式这篇文章有点长,建议看下去1.输入初始容量和负载因子 new HashMap(15,0.5)public HashMap(int initialCapacity, float loadFactor)函数内容是public HashMap(int initialCapacity, float loadFactor) { if (initialC...

2019-12-20 21:43:43 169

原创 JDK13-HashMap-resize源码解析

JDK13-HashMap-resize源码解析resize是重新散列,所以要在现在容量和阈值的基础上获取新的容量和阈值,函数首先进行了变量定义final HashMap.Node<K,V>[] resize() {//resize函数的返回值是一个Node数组 HashMap.Node<K,V>[] oldTab = table;//transient...

2019-12-20 21:37:31 159

原创 JDK13-Hashcode源码分析,八种基本类型的hashcode方法

JDK13-Hashcode源码分析要想将一个对象放入集合(比如HashMap)中,你的对象所在的类必须提供hashcode方法,即重写这个方法,返回一个整数值。以hashmap中的hashcode为例:public final int hashCode() { return Objects.hashCode(key) ^ Objects.hashCode(value...

2019-12-20 21:27:16 402

原创 java字符串compareTo源码解析

字符串compareTo源码解析这个方法的源码需要参考三个java文件,即String.java ,StringUTF16.java ,StringLatin1.javaJDK9之后由byte类型的数组来存储String,维护了一个属性coder,它是一个编码格式的标识,使用LATIN1还是UTF-16,这个是在String生成的时候自动的,如果字符串中都是能用LATIN1就能表示的就是0,否...

2019-12-20 21:09:51 430

原创 java IO实现根据文件的大小对文件进行分割,renameTo给文件改名,利用正则表达式从输入中获取一个数字

java IO实现根据文件的大小对文件进行分割,限制文件的size定时生成数据文件请参考https://blog.csdn.net/weixin_44893585/article/details/103438934接上述链接,考虑怎样根据文件的尺寸将文件进行分割的问题对文件进行分割这里的思路是,把源文件当做输入源,产生新文件当做输入目的地构造输入输出流,实现对源文件分行读取并分行写入,写...

2019-12-07 22:33:36 195

空空如也

空空如也

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

TA关注的人

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