- 博客(84)
- 资源 (1)
- 收藏
- 关注
原创 【run()和start()区别】、【excute()和submit()区别】
run()和start()区别:1、在一个线程中执行run()方法,不会生成新的线程,而是将run()当成一个方法直接执行2、start()会生成一个新的线程去执行run()方法。3、run()是普通方法,所以可以重复执行4、start()不能重复执行execute()和submit()的区别:1、二者都是线程池的执行方法2、execute()只能执行Runnable类型方法,无返回值3、submit可以执行Runnable类型和Callable类型方法,可以得到返回值,..
2022-05-04 18:05:09
1379
原创 AQS简单执行步骤
AQS: AbstractQueuedSynchronizer(抽象的队列式的同步器)原理及执行步骤(简单记录一下):1、锁类型:独占式锁、共享式锁2、获取锁:acquire(int arg),返回state的值,返回值大于0表示获取锁成功,返回值小于0说明获取锁失败。a、state是用volatile保证可见性的b、state表示没有线程获取锁,每次线程获取锁会用CAS方式自旋将state值加一,(重入锁、获取锁state加一,释放所state减一)c、返回值为负数表示获取锁失.
2022-05-04 17:55:34
435
原创 双亲委派模型【理解】
双亲委派模型定义:当一个类加载器收到类加载任务时,会先交给自己的父加载器去完成,若父类不能加载,则继续向上,最终到达顶点(BootstrapClassLoader),在此过程中,若已有加载,则返回。到达顶点则需要向下查找,子类看是否能加载,若能加载则返回,否则到起点,报错。首先需要知道类加载器有三个:1、BootstrapClassLoader(顶级类加载器、启动类加载器)2、ExtentionClassLoader(拓展类加载器)3、AppClassLoader(应用程序类..
2022-04-19 22:09:16
434
原创 HashMap笔记【简单记录一下】
概论HashMap的数据结构:首先是数组存储key和value存储时下标通过hash计算得到hash冲突时,将会使用链表存储key和value(拉链式hash)当链表长度超过8时,将链表改成红黑树来存储有问题?往下拉。。问题1、为什么HashMap数组的长度必须是2的指数次幂首先简单回答:初始化容量时采用了位运算并且输入不为2的指数次幂的数据时,会向上取整,取最近的2的指数次幂具体请看源码static final int tab..
2022-04-08 20:20:30
429
原创 B-数,B+树,B*树简单定义
预防面试的简单定义而已,杠精爱我一次B-数(Balance tree)B-树也叫 B杠树,(当然,名字是我取的…),因为好多文章叫“B减树”…B杠树是指平衡的多路搜索树,并不单单指的是二叉树,(当也有人这么认为,就看自己定义吧)B杠树搜索时可以在任意节点找到目标,也就是任意节点都可能结束搜索进程叶子结点都在同一层B杠树每个节点就是搜索的数据,也就是所有节点均可命中!!经常混淆的点:Binary tree 和 Balance treeB+树类似于B杠树,属于多路搜.
2022-04-08 13:30:56
623
原创 Java == 和 equals
简单说明:== 比较的是变量的首地址equals 比较的是变量的内容但其中有许多的区别针对字符串1、StringString重写了Object的equals方法,可以实现:== 比较变量的地址equals 比较变量的内容如下:public static void main(String[] args) { String a = "123"; String b = "123"; String c = new String.
2022-04-08 12:07:09
289
原创 JAVA-信号量
信号量:信号量一般都有以下几个变量:count:记录可以使用的资源数wait_list:等待信号量的队列获取信号量需要判断count是否大于零,即if( count > 0 )若count > 0,表示可以获取该信号量,意味着获取资源成功,无须睡眠进程若count == 0,表示不可以获取该信号量,需要进入等待队列中,此时等待队列长度为0,无进程等待若count < 0,表示不可以获取该信号量,且有Math.abs(count)个进程在等待队列等待资源...
2022-03-29 13:46:32
2313
原创 埃氏筛法求质数(例如:200以内的质数)
传统求质数全部遍历,是否有因数可以整除private boolean isPrime(int n){ if(n < 2){ return false; } if(n == 2 || n == 3 || n == 5 || n == 7){ return true; } if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0){ return false;..
2022-03-28 15:55:21
704
原创 Java八种基本数据类型
Java提供了八种基本数据类型:6种数字类型(4个整数型,两个浮点型),一个字符型、一个布尔型。1、byte1 字节,8 位范围:-128(-27) ~ 127(27 - 1)默认值 02、short2 字节, 16 位范围:-215 ~215- 1默认值 03、int4 字节,32 位范围 -231 ~ 231 - 1默认值 04、long8 字节, 64 位范围: -263 ~ 263 -1默认值 0L.
2022-03-26 17:34:01
3756
原创 设计模式七大原则
设计模式的目的为了程序或软件拥有更好的1、代码可读性2、代码重用性3、高内聚、低耦合4、可拓展性5、可靠性(当我们增加新的功能后,对原来的功能没有影响)七大原则为:1、...
2022-03-26 16:58:57
432
原创 redis集群五种模式(纯概念)
1、主从模式:是最为简单的redis集群模式主要工作模式是主从复制。主数据库可以执行读写功能,而从数据库只能执行读功能。主数据库数据发生变化,会自动同步到从数据库。主数据库为master,从数据库为slave一个master可以有多个slave一个slave只能有一个masterslave挂了,重新启动会从master同步数据master挂了,服务器只能进行读功能,不能执行写功能,直到master重新启动同步数据后,才能提供写服务。2、哨兵模式:可以解决..
2022-03-25 15:02:46
6682
1
原创 Java static的使用
public class Test { Test(){} static Integer i = 0; public static void main(String[] args) { Test test = new Test(); Test.i++; test.i++; Test tt = new Test(); tt.i += 100; tt = test; tt.i
2022-03-16 23:15:36
420
原创 线程池的submit和execute
1、execute:执行线程池中的线程,但不能得到线程执行的返回值2、submit:执行线程池中的线程,返回Future对象,可以得到线程执行的返回值、线程执行成功或失败结果、执行发生的异常。
2022-03-06 23:55:28
980
原创 AOP、IOC、DI简单总结
1、AOP:面向切面编程2、IOC:控制反转3、DI:依赖注入1、AOP:主要是模块化编程的思想,降低程序之间的耦合度。在项目中,日志记录是必不可少的,但是,只是简单的将记录日志的代码块复制到各个模块当中,项目冗余和耦合度就会增大,如果使用面向切面编程,就可以将业务代码和业务相关性较低的代码分离开来,便于维护。首先面向切面编程会有切点(Pointcut)、通知(Advice),通知分为以下五大类:1)前置通知 :函数执行前增强2)后置通知 :函数执行后增强,除非异常,最后执行
2022-03-06 23:50:20
1763
原创 设计模式--工厂模式(简单总结)
工厂模式是三种模式结合的总称:1、简单工厂模式2、工厂方法模式3、抽象工厂模式1、简单工厂模式:只有一个工厂类,根据传入参数决定生产产品对象,if-else判断逻辑2、工厂方法模式:由多个工厂类实现工厂接口,并且多个工厂类生产不同的产品,避免了简单工厂类的冗长的if-else逻辑3、抽象工行模式当产品很多时,工厂方法模式会有很多工厂类,并不适合使用工厂方法模式,需要将各种产品分组和分层次来创建工厂类。每一个工厂类中拥有创建同属一个大类的不同产品的创建方法。
2022-03-06 20:42:29
194
原创 RabbitMQ四大核心---尚硅谷学习笔记
1、生产者产生数据发送消息的程序是生产者。2、消费者消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。3、交换机交换机是RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定。绑定(binding
2021-12-16 15:33:29
1983
原创 MQ名词介绍
Broker应用接收和分发消息的应用,RabbitMQ Server 就是Message BrokerAMQP协议即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。Virtual host虚拟分组出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的namespace 概念。当多个不同的用户使用同一个RabbitMQ serv
2021-12-15 20:20:04
2439
原创 JAVA抽象类和接口类的区别
JAVA抽象类和接口类的区别1、声明方式不同。抽象类为abstract class,接口类为interface。2、继承抽象类关键字为extends,实现接口关键字为implements。3、继承抽象类仅支持单继承,实现接口可以多实现。单继承:classB Extends classA接口多实现:Interface implements Interface0, Interface1, interface2……java中为什么要单继承,多实现?若为多继承,那么当多个父类中有重复的属性或
2021-12-11 22:30:18
480
原创 优快云居中技巧
居中显示一段文字,就像这样,无意中发现的,任意格式 以下是图片: 没有格式就这样 以下是图片: 不放大,又要格式 以下是图片:
2021-12-11 22:23:00
555
1
原创 ngnix学习(二)ngnix常用命令
首先需要进入/usr/local/ngnix/sbin目录当中1 、查看版本号:./ngnix -v2、启动ngnix:./ngnix3、关闭ngnix:./ngnix -s stop 或者 kill -9 进程号4、重启ngnix:./ngnix -s reload
2021-12-06 14:24:42
560
原创 nginx学习(一)
1、什么是ngix?1、是一个高性能的HTTP和反向代理服务器,特点是占用能存少,并发能力强。2、反向代理1、首先说明什么是正向代理,正向代理:a、若想要访问Internet资源,需要首先访问代理服务器,通过代理服务器访问Internet资源。这中代理服务 就叫正向代理。b、故而,如果客户端想要访问服务器,必须首先配置代理服务器,才能够访问相应的网络资源。2、什么是反向代理?a、客户端对于代理服务器无感知,因为客户端不需要配置任何代理服务器就可以访问。b、我们只需要将请求发
2021-12-06 14:08:03
88
原创 TCP、UDP简单总结
以下内容总结至B站:一条视频讲清楚TCP协议与UDP协议-什么是三次握手与四次挥手二者均为工作于传输层的网络传输协议区别TCP是有连接的协议,全双工的一般用于邮件、信息、容错性低的应用UDP是无连接的协议,不属于全双工的一般用于语音通话、视频通话、视频播放、实时性要求高的应用TCP1、三次握手:说明:其中某个环节若出现错误或者超时,都会导致重发相应的数据包为什么不采用两次握手?假设为两次握手:(实际上TCP不区分客户端与服务端,只是相对而
2021-12-03 15:30:26
2206
原创 缓存击穿、缓存穿透、缓存雪崩简单总结
缓存击穿1、概念:指的是大量访问某个key值时,key值本来存在于redis中(或者redis中没有但数据库中有该数据),但因为设置了key的有效期而使得redis中被访问的key失效,大量访问在redis中的不到反馈,则大量访问转移至数据库,导致数据库崩溃。例子:秒杀商品时,原本某商品预计秒杀时间为1小时,redis的key有效期也为1小时,但因某些原因,延长了秒杀过程而key值失效,使得缓存击穿,数据库崩溃。2、解决方法:a、设置热点数据key永远不过期(定时更新热点数据)。
2021-12-02 19:45:14
1042
原创 乐观锁、悲观锁简单总结
1、悲观锁:认为多线程操作数据会导致数据出错,所以每次有一个线程操作数据时,都会先将数据锁住,再做修改,只有上一个线程释放资源锁之后,下一个线程才能操作数据(无论读写)。例子JAVA的关键字synchronizedMySQL的select xxx for update缺点:效率低下长事务会导致开销无法忍受优点:安全性高,适用于写多读少的情况2、乐观锁:1、乐观锁其实为一种无锁机制,一般通过CAS(compare and swap)算法实现,java一般使用A.
2021-11-30 23:10:13
642
原创 JAVA synchonized Lock类----简单总结笔记
1、synchronized是java 内置关键字,Lock为一个 类。2、synchronized 隐式得到锁,隐式释放锁,故而,运用起来更加方便,快捷。3、Lock类如下:public interface Lock { /** * 获取锁 */ void lock(); /** * 获取可中断锁 */ void lockInterruptibly() t.
2021-11-30 22:47:04
176
原创 编译原理---NFA转化为DFA---DFA最小化(自己看)
算法描述:伪代码:function E(s){ return NFA中状态s经过空转移到达的状态集合;}function Ee(T){ return NFA中状态集合T中的每个状态通过空转移到达的状态集合;}function move(T,a){ return NFA中状态集合T中某个状态输入a到达的状态集合;}D = E(NFA开始节点);D中状态未被标记;C = [所有输入字符集合];DFA = [][];//二维数组,最后的结果while D中含有没有被标记的状态.
2021-06-24 21:52:14
900
1
原创 编译原理---代码优化基础(自己看)
概念常用方法:1、删除公共子表达式2、代码外提3、强度削弱4、删除归纳变量5、合并已知变量6、复写和传播7、删除无用代码最后得到,只有一个入口和出口的基本块语句集案例:注:强度削弱官方解释将开销较大的操作采用等价但是开销相对较少的操作进行替代的一种优化方法。就是不用每次循环生成多余空间,在这里是这样的注:归纳变量官方解释循环中的一个变量,其值在每一次循环迭代过程中增加(或减少)固定
2021-06-24 10:44:05
612
原创 编译原理--运行时存储组织(自己看)
1、 存储分配的基本概念1、过程:函数和过程的程序单员2、过程的活动:程序的一次执行3、活动记录:一块连续的存储空间,存储过程活动的执行代码和所需信息。名字、环境、状态、存储单元、值的关系解释:活动记录有如下区域:1、返回值区域:存放被调用过程的返回值,通常存放于寄存器以提高效率。2、 实在参数区域(参数区域):存放被调用过程的参数。3、控制链区域:指定调用者的活动记录地址,相当于指向活动记录的指针。用于返回上一个调用对象活动记录中。4、机器状态区域:存储寄存器、程序计数
2021-06-24 00:45:03
1151
1
原创 编译原理--中间代码生成(自己看)
高级语言 翻译成 LLVM虚拟机代码可以移植到各种平台课上要求 能够根据给定方案翻译得到结果即可难点:实现一遍扫描目标:转换为三地址语句如:常用三地址语句声明语句的翻译过程有翻译方案如下(三元式)要求翻译过程1、画出注释分析树,如下易于发现,本次分析为综合属性分析,可以自底向上分析加入属性所以顺序是:案例2产生式和语义描述要求结果为(过程应为:画注释分析树—属性赋值—得到结果):1、布尔表达式的翻译(选择)形式.
2021-06-21 00:04:41
1080
1
原创 编译原理-提取左公因子---消除左递归(自己看)
参考:https://blog.youkuaiyun.com/liyun123gx/article/details/19924993左递归分为两种:直接左递归:经过一次推导(直接看出来)的左递归式子,例如(1)A→Aβ间接左递归:经过若干次推导得到左递归式子1)A→Bβ,B→Aα消除左递归1、消除直接左递归a) 把直接左递归改写为右递归: 设有文法产生式:A→Aβ|γ
2021-06-15 13:46:33
3923
1
原创 编译原理--语法制导-综合属性-继承属性-依赖图(自己看)
属性:综合属性:自下而上代表属性计算时可以自下而上计算也就是,画了图的时候,画有线箭头时箭头自下而上如下面例子继承属性:自上而下代表属性计算时可以自下而上计算也就是,画了图的时候,画有线箭头时箭头自上而下如下面例子区分继承属性和综合属性,这很重要(画依赖图)看不懂????!!例如产生式1v属性规规矩矩按照原本符号位置(N.v在右部,S1.v在右部(等号右边啦)S2.v在右部(…啦),和产生式一致),而f属性则不是,S1.f属性在左部(等号左部)所以v属性比.
2021-06-09 23:46:27
12742
7
转载 JSR-303校验-转载
https://blog.youkuaiyun.com/qq_28867949/article/details/78922520
2021-05-26 23:43:22
59
转载 spring学习--JdbcTemplate-查询返回-批量操作
转载:https://blog.youkuaiyun.com/weixin_45496190/article/details/107092107查询返回某个值//查询表记录数@Overridepublic int selectCount() { String sql = "select count(*) from t_book";//queryForObject方法中:第一个参数代表--sql语句;第二个参数代表--返回类型class Integer count = jdbcTemplate.qu.
2021-05-22 15:40:49
1134
原创 Druid连接池链接mysql错误提示:create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/bank, errorCode
错误提示:create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/bank, errorCode 0, state 01S00这是连接数据库错误解决办法:1、若为5.x版本的mysql,则连接链接改为:jdbc:mysql://127.0.0.1:3306/bank?characterEncoding=UTF-8&useUnicode=true&useSSL=true&ser.
2021-05-22 15:16:53
8690
1
原创 spring学习--jdbcTemplate - 增删改
jdbcTemplate引入jar包如下:1、德鲁伊jar包:阿里巴巴的数据库连接封装。2、java数据库连接jar包。3、jdbc jar包,spring对于jdbc框架的封装。4、orm为spring若要整合其他框架,则必须引入。5、事务的jar包...
2021-05-21 17:21:31
161
python音乐播放器.zip
2021-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人