- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 项目查错
项目启动报错:Failed to parse configuration class [org.zdd.bookstore.BookstoreApplication]; nested exception is java.io.FileNotFoundException: class path resource [resource.properties] cannot be opened because it does not exist解决方案:idea 右侧,maven——>lifecyc...
2021-04-20 17:25:41
320
原创 idea插件市场不出现问题
在使用idea下载插件时,经常出现idea插件打不开问题。解决方案:参考:https://jingyan.baidu.com/article/9158e000e50b51a254122820.html1.找到setting—>plugins——>找到设置图案2.选择自动代理方式即可
2021-03-07 13:30:42
304
原创 BitMap算法
文章目录1.什么是BitMap2.RoaringBitMap3.bitMap和RoaringBitMap的使用1.什么是BitMapBitMap就是用bit为来映射某个元素的value值,key就是这个元素的值。2.RoaringBitMapRoaringBitMap是一种超常规的压缩Bitmap,它的速度比未压缩的BitMap快上百倍。3.bitMap和RoaringBitMap的使用https://blog.youkuaiyun.com/baichoufei90/article/details/1062
2021-03-02 17:38:05
165
原创 AQS
文章目录1.AQS简介2.AQS的数据结构1.AQS简介AQS全称Abstract Queued Synchronizer ,即抽象队列同步器。分步理解:抽象:抽象类,值实现一些主要逻辑,有些方法由子类实现;队列:使用先进先出(FIFO)队列存储数据;同步:实现了同步的功能。AQSD的作用:是用来构建锁和同步器的框架,使用AQS能够简单高效构造出应用广泛的构造器。比如ReentrantLock、Semaphore、ReentrantReadWriteLock、SynchronousQueue、
2021-02-26 00:18:51
202
原创 乐观锁和悲观锁
1.悲观锁线程每次访问能同步资源时,会给操作数据加锁,保证临界区的程序同一时间只能有一个线程执行。没获得锁线程会进入阻塞队列。等待再次获取锁。2.乐观锁又称为“无锁”。通过CAS技术保证线程执行的安全性。乐观锁适用于读多写少的场景,避免频繁加锁影响性能;悲观锁适用于写多读少的场景,避免频频繁失败和重试影响性能。3.CASCAS全称(Compare And Swap)比较并替换,是一种无锁算法。在CAS中,有3个值:V:要更新的内存地址;E: 旧值N:新值当且仅当V的值等于E时,将V的值
2021-02-25 23:47:31
368
原创 synchronized与锁
java多线程的锁都是基于对象的,java中的每一个对象都可以作为一个锁。类锁其实也是对象锁。1.synchronized关键字(1)synchronized在实例方法上,锁为当前实例 private synchronized void testMethod(String flag) throws InterruptedException { synchronized (lock) { for (int i = 0; i < 10; i++) {
2021-02-25 16:47:31
179
1
原创 volatile
1.基本概念内存可见性:指线程之间的可见性,当一个线程修改了共享变量时,另一个行程可以读取到修改后的值。重排序:为了优化性能,对原有的指令执行顺序重新排序,重排序可能发生在多个阶段,比如编译重排序、CPU重排序等。happens-before规则:是一个给程序员的使用规则,只要程序员遵循hanppens-before编码,JVM就能保证指令在多线程的执行顺序符合程序员的预期。2.volatile的功能保证变量的内存可见性;禁止volatile变量和普通变量重排序。2.1 volatil
2021-02-24 15:27:22
110
原创 非关系型数据库
非关系型数据库(NOSQL):除了关系型数据库以外的其他数据库都是非关系型数据库。非关系型数据库有:Redis、HBase、MongoDB、Cloudant数据库的分类:主要是以是否基于关系模型划分为关系型数据库和非关系型数据库非关系型数据库主要是为了解决复杂、海量、数据存储问题。具有较高水平的横向拓展水 平。NOSQL与关系型数据库比较优点:1.成本:nosql数据库简单易部署,基本...
2021-02-24 15:04:50
2538
原创 学习Redis
在非关系型数据库中,我学习了RedisRedis的数据结构:redis存储的是key、value 形式的数据,key是字符串,value有五种不同的数据类型。value的数据类型有:1.字符串数据类型:String2.哈希类型hash:map格式3.列表类型list: linkedlist格式。支持重复元素。4.集合类型Set:不支持重复元素。5.有序集合类型sortedset:...
2021-02-24 15:04:24
73
原创 JMM的happens-before规则
1.happens-beforeJMM使用happens-before概念来定制两个操作之间的顺序,这两个操作可以使同一个线程以内,也可以是不同线程之间。JMM通过happens-before关系向程序员提供跨线程的内存可见性保证。(1)如果一个操作happens-before另一个操作,那么第一个操作的结果将对第二个操作可见。(2)如果两个操作存在happens-before关系,并不意味着java平台的具体实现一定要按照happens-before指定顺序执行,如果重排序之后的执行结果,与按hap
2021-02-23 15:49:18
236
1
原创 java内存模型的基础知识
1.java运行时内存的划分栈与堆的区别:栈内存存储的是局部变量,而对内存存储的是实体;栈内存的更新速度快于堆内存,因为局部比纳凉的生命周期很短。栈内存存储的变量生命周期一旦结束就会被释放,而堆内存存储的实体被垃圾回收机制不定时回收。对每一个线程来说,栈是私有的,堆是共有的。2.堆是共享的,关于堆中内存不可见问题线程的共享变量存储在主内存中,每个线程都有一个私有的本地内存。它存储了该线程以读、写共享变量的副本。java线程之间的通信由java内存模型控制(j简称JMM)。JMM定义了线
2021-02-20 17:27:44
113
原创 java线程间的通信
1.锁与同步线程同步:线程之间按照一定的顺序执行。用所来实现线程同步 @Test public void blockedTest() throws InterruptedException { Thread a = new Thread(new Runnable() { @Override public void run() { testMethod("a");
2021-02-20 15:47:57
120
原创 java线程的状态及主要转换方法
1.操作系统中的线程状态转换操作系统线程的状态和操作系统进程的状态时一致的。操作系统主要有3个状态:Readying(就绪状态):线程正在等待使用CPU,经调度程序调用后可进入Running状态。Running(运行状态):线程正在使用CPU。Waiting(等待状态):线程经过等待状态或者正在等待资源(例如I/O)。2.Java线程的6个状态 public enum state{ NEW, RUNNABLE, BLOCKED,
2021-02-20 11:31:43
298
原创 线程组和线程优先级
1.线程组每个Thread必然存在于一个ThreadGroup中,Thread不能独立于ThreadGroup独立存在。执行main方法的线程名字是main,如果在new Thread时没有显式置顶,那么默认将父线程(当前执行new Thread线程)的线程组设置为自己的线程组。2.线程的优先级线程的优先级范围为1~10;java默认的线程优先级为5,线程的执行顺序由调度程序来执行,线程的优先级会在线程被调用之前设定。使用Thread的setPriority()来设置线程的优先级。线程的调度
2021-02-19 19:19:07
237
原创 1.2 java多线程入门类和接口
1.Thread类和Runable接口JDK提供了Thread和Runanle接让我们实现自己的线程类。继承Thread类,重写run()方法;实现Runable接口,实现run()方法2.Thread常用的几个方法currentThread():静态方法,返回对当前正在进行线程的引用;start():开始调用线程的方法,java虚拟机会调用run()方法;yield():当前线程愿意让出对当前处理器的占用;sleep();使当前线程睡眠一段时间;join():使当前线程等待另一个线程
2021-02-19 17:31:47
130
原创 进程与线程的基本概念
@[TOP]1.批处理操作系统将需要操作的一系列指令列成清单,交给计算机。用户将多个需要执行的程序写在磁盘上,将磁盘交由计算机逐次执行这些指令,然后将执行的结果写在另一个磁盘上。缺点:批处理操作系统的指令运行方式是串行执行的,内存中始终只有一个程序在运行,前面的程序执行完成后面的才能执行。前面的程序回应为I/O操作、网络等原因阻塞,所以效率也不高。2.进程进程是应用程序在内存中分配的空间,也就是正在运行着的程序,各个进程之间互不干扰。进程保存着程序每一个时刻运行的状态。程序:用一定的语言(ja
2021-02-19 11:43:54
241
1
原创 http连接、tcp连接、socket连接的区别笔记
1.各个应用层对应的协议http是应用层协议;tcp和udp是传输层协议;socket是从传输层上抽象出来的抽象层,本质是接口。2.socketsocket:就是两个应用程序通过一个双向的通信连接实现数据的交换,连接的一端成为一个socket,也叫套接字。实现一个socket通信,至少需要两个套接字,一个运行在客户端(类比插头),一个运行在服务端(类比插口)。套接字用于描述Ip地址和端口。应用程序通过套接字向网络发出请求或者应答网络请求。3.socket连接socket层只是在tcp和u
2021-02-18 17:07:32
288
原创 配置中心是如何是如何实现实时推送的
文章目录1.什么是配置中心2.常见的配置中心3.轮询、长轮询、短轮询、长连接、短连接4.配置中心长轮询的设计5.总结1.什么是配置中心配置中心就是配置的动态推送。传统的静态配置想要修改某个配置时,需要重新启动应用。但是对于实时感应的一些配置,重新启动并不适用。所以在微服务架构体系中,倾向于用配置中心统一管理配置。2.常见的配置中心Nacos、Apollo等。Nacos和Apollo是通过长轮询实现配置推送的。3.轮询、长轮询、短轮询、长连接、短连接轮询:是指不管服务端数据有无更新,客户端每隔
2021-02-18 15:55:15
591
原创 并发—共享变量的可见性
参考:http://www.itwanger.com/java/2019/11/09/java-bingfa-3.html同步:我们可以通过同步保证变量的原子性(一个或者多个操作要么全部执行,要在操作中不会被任何因素打断,要不全部都不执行)共享变量的可见性:多个线程访问同一个变量时,一个线程修改了变量的值,其他线程能够立即看到修改的变量的值。java内存模型:java内存模型中描述了java程序中各种变量的访问规则,以及在jvm中将变量存储到内存,从内存读取变量的细节。所有的比纳凉都是存储在主内存中
2021-02-10 14:08:49
157
原创 1.学习创建线程池
参考:http://www.itwanger.com/java/2019/11/09/java-bingfa.html1.创建线程的方法(1)实现rRunable()接口的匿名内部类,调用线程对象的start()启动线程 public static void main(String[] args) { for (int i = 0; i < 10; i++) { Thread thread = new Thread(new Runnable() {
2021-02-10 11:21:01
103
原创 多实例的定时任务(@Scheduled)多次执行造成重复如何解决
1.多次执行会造成什么问题?什么情况下需要解决?造成数据重复,或者程序异常。2.如何解决多实例重复执行的定时任务?(1)固定执行定时任务的机器缺点:出现单点故障,导致定时任务不会执行,业务逻辑就会奔溃。(2)从数据库中建立多张表,从定时任务表获取定时方法。原因:Mysql存在表锁和行锁,每次执行任务从数据库表中读取记录,当读取到的任务状态为未执行时,再去触发任务,并更新数据库状态。由于存在表锁和行锁,因此同一时刻,只能有一个事务操作,可以保证只执行一次。缺点:需要多张表,已定义定时器,逻辑行会
2021-02-01 00:13:16
8682
原创 本地缓存与分布式缓存
1.本地缓存与分布式缓存的概念根据缓存是否与应用进程属于同一进程,缓存可分为本地缓存与分布式缓存。本地缓存是在同一个进程内的内存空间中缓存数据,数据读写都是在同一个进程内完成。分布式缓存一般都是独立部署的一个进程,并且与应用进程部署在不同的机器上,故需要通过网络来完成分布式缓存数据读写操作的传输。2.本地缓存(1)本地缓存的优缺点<1>访问速度快,但无法进行大数据缓存。(数据不需要网络传输,但需要占用应用进程的内存空间)<2>本地缓存只支持被应用进程访问,一般无法被其他
2021-01-31 22:31:53
1086
原创 与redis相关的所有知识点整理
redis1.redis发展的背景web应用发展初期,关系统数据库的web站点在性能上出现瓶颈,瓶颈的源头在磁盘的I/O上。而在云计算、大数据盛行的时代,对性能有了更高的要求,主要表现在:(1)低延迟读写速度;应用快速的反应提升用户满意度;(2)能够支撑海量的数据和流量:比如搜索,需要利用PB(1024TB)级别的数据和能应对百千万级别的流量。(3)大规模集群的管理:系统管理员希望分布式应用能更简单地部署和管理。(4) 庞大运营成本的考量:IT部门希望在硬件成本、软件成本和人力成本能够有大幅度地
2021-01-31 18:39:41
243
原创 关系型数据库
关系型数据库关系型数据库就是建立在关系模型上的数据库。也可以说成是以二维表的形式表示实体和实体间联系的数据模型。它的本质就是二维表。关系模型是由关系数据结构、关系完整性约束和关系操作集合三部分组成。关系数据结构:解决数据以什么形式来存储的问题,在基于关系模型的数据 库中,数据是以二维表的形式存储的。关系完整性约束:解决实体内部约束与实体之间约束的问题。关系操作集合:解决如何关联和管理存储...
2019-08-14 13:48:37
906
原创 在window中,下载好putty后,连接ubuntu14.0时访问拒绝连接
最近在学习Linux的时候,遇到好多问题。在window中,下载好putty后,连接ubuntu14.0时访问拒绝连接。、百度了一些资料,有人说防火墙要关闭,但是我关闭了防火墙并没有什么用。哈哈哈哈只能继续尝试各种办法。然后有人说要在ubuntu中下载ssh按顺序执行命令:1. 安装SSH:sudo apt-get install openssh-server2. 启动服务:sudo ...
2019-03-23 15:55:12
290
原创 在用SpringMVC时,加入文件上传后出现了.NullPointerException异常
在练习今天的项目时,出现了 HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException异常,在web里,没有加上传文件之前一切运行正常,但是加了文件上传以后,就出现了这种异常,我把上传文件的那部分反复看,就是觉得没毛病~。代码异常如下:HTTP Status 50...
2019-03-02 17:34:41
1498
Test4.java
2019-10-24
Test2.java
2019-10-24
Test5.java
2019-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人