- 博客(33)
- 收藏
- 关注
转载 21-5-21 单机、集群和分布式
集群是个物理形态,分布式是个工作方式。单机结构:一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单机结构。缺点:单机的处理能力是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。集群结构:单机处理到达瓶颈的时候,把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几
2021-05-21 15:09:55
157
1
原创 21-5-21 cap和 base理论
CAP 理论CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:一致性C:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。可用性A:每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。分区容错性P:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障
2021-05-21 11:17:15
280
1
原创 21-5-20 activemq
activemqactiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ服务器宕机怎么办ActiveMQ的储存机制在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存。虽然都保存到了文件里,但它和持久化消息的区别是,重启
2021-05-20 21:20:13
181
1
转载 2021-05-08 spring
使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并管理应用中对象的生命周期和配置。MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务
2021-05-08 23:10:26
116
1
原创 21-4-25 redis
Redis是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。ANSI C是美国国家标准协会(ANSI)对C语言发布的标准。使用C的软件开发者被鼓励遵循ANSIC文档的要求,因为它鼓励使用跨平台的代码。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理
2021-04-25 23:30:25
159
2
原创 21/4/24反射和代理
反射反射机制:可以通过类的字符串表达(包名.类名),可以完成类的加载、创建对象、获取属性、获取方法、调用方法等相关的操作。代理代理的作用:使用代理对象调用方法,可以在不修改源码情况下,在原有的业务逻辑(方法)之前/之后添加自定义操作。代理分为:静态代理和动态代理。静态代理:动态代理1.JDK动态代理2.CGLib动态代理...
2021-04-24 23:19:22
100
1
转载 21/4/22 框架
什么是Springspring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。使用Spring框架的好处是什么轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,
2021-04-22 22:13:28
87
1
原创 21/4/14 索引与视图
索引数据库系统会自动为数据表的主键建立索引如果在某个字段建立了索引,当以这个字段为条件进行查询时,就会自动使用索引,大幅度提高查询效率什么情况下有必要建立索引?1.数据库中有大量数据;2.频繁使用某个字段进行查询如何创建索引?如何删除索引?视图相当于一张数据表作用:1.可以对原表数据起到保护作用2.简化常用数据操作,提高操作效率特性:1.对视图的修改操作会作用到原表2.对视图的添加操作会作用到原表(只能对单表创建的视图进行添加操作)3.对视图的删除操作会作用到原表4.删
2021-04-14 18:43:52
104
1
转载 21/4/6 排序算法回顾
1、冒泡排序(Bubble Sort)算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。 代码实现function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (v
2021-04-06 21:12:05
121
1
转载 21-4-1 redis学习
项目中是如何使用缓存的项目中将监控、性能等指标数据通过复杂计算后,存入缓存中。使用缓存是为了高性能和高并发。高性能: 如果不存入缓存,每次收到请求后需要花费几分钟计算相关指标,如果能提前将数据计算好存入缓存,后续收到请求后可以直接从缓存内取出数据并返回,只需要花费几毫秒的时间。高并发: 直接使用数据库(如Mysql)一般只能承受2000QPS,而内存天然支持高并发,承受几万QPS都不在话下。缓存使用不当可能会出现: 缓存雪崩、缓存穿透、缓存与数据库的双写一致性问题以及缓存并发竞争问题等。Reid
2021-04-01 19:42:09
119
1
转载 21-3-29 遗忘知识
1,拦截器和过滤器的区别最简单明了的区别就是过滤器可以修改request,而拦截器不能双亲委派机制JVM中提供了三层的ClassLoader:Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。AppClassLoader:主要负责加载应用程序的主函数类不考虑我们自定义类加载器,首先会在AppCl
2021-03-31 15:21:11
104
1
转载 21/3/18 springboot
一. SpringBoot 和spring 、springMVC的区别Spring它的主要特征是依赖注入,它有两大核心主要是IOC和AOP。IOC : 应用程序对象的创建,配置,维护,依赖交给了SpringIOC容器统一进行管理,从而实现松耦合。AOP : 即面向切面编程,是利用一种横切技术,将一个项目一刀切下来,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect” , 即切面。所谓“切面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或
2021-03-18 23:26:40
117
1
转载 21/3/14 springboot优缺点
Spring BootSpring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot的优点独立运行Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。简化配置spring-boot-starte
2021-03-14 11:09:31
108
1
转载 21/3/13 spring boot核心
Spring BootSpring Boot 最重要的功能是:自动配置。Spring Boot 的开启注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:@Configuration@ComponentScan@EnableAutoConfiguration上面三个注解,前面两个都是 Spring 自带的,和 Spring Boot 无关所以说 Spring Boot 最最核心的就是这个 @EnableAutoConfiguration 注解,它能根据类
2021-03-13 23:19:02
105
1
转载 21/3/13 锁
一、为什么要用锁?锁-是为了解决并发操作引起的脏读、数据不一致的问题。二、锁实现的基本原理2.1、volatileJava编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchroni
2021-03-13 23:09:41
103
1
转载 2021-03-09
MySQL和Oracle的区别由于SQL Server不常用,所以这里只针对MySQL数据库和Oracle数据库的区别(1) 对事务的提交MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询MySQL是直接在SQL语句中写"select… from …where…limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询(3) 事务隔离级别MySQL是read
2021-03-09 19:07:39
139
1
转载 21/3/8索引
索引的类型及分类一、索引方法Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。FULLTEXT即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。HA
2021-03-08 16:00:56
126
1
转载 21/3/8 线程阻塞
阻塞的情况分三种:1等待阻塞(o.wait->等待对列):运行的线程执行 o.wait()方法,JVM 会把该线程放入等待队列(waitting queue) 中。2 同步阻塞(lock->锁池)运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则 JVM 会把该线程放入锁池中。3其他阻塞(sleep/join)运行的线程执行 Thread.sleep(long ms)或 t.join()方法,或者发出了 I/O 请求时,JVM 会把该线程置为阻塞状态。当 sleep()状态
2021-03-08 15:53:44
112
1
转载 2021-03-07
消息中间件消息中间件的组成1 Broker消息服务器,作为server提供消息核心服务2 Producer消息生产者,业务的发起方,负责生产消息传输给broker,3 Consumer消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理4 Topic主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播5 Queue队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消
2021-03-07 22:41:03
57
1
转载 21/3/7 进程、线程
进程、线程状态进程一般分五个状态:创建,就绪,运行,阻塞,结束线程一般分四个状态:就绪,运行,阻塞,死亡1、主动,被动角度阻塞是被动,在访问临界资源(锁等)时,被阻塞了休眠和挂起,一般是主动(或由父进程发起挂起),休眠在休眠时,就知道了计划休眠时长sleep(10),挂起suspend需要等待resume。时间片到了,也会挂起线程。2、CPU,内存角度阻塞会释放CPU,一般不释放内存。挂起一般会继续占用CPU,一般会释放内存,被转移到外存。休眠一般会释放CPU,低优先级或其它优先级可以得
2021-03-07 11:19:35
103
1
原创 21/3/6 hashmap
数组特点存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。链表特点区间离散,占用内存宽松,空间复杂度小,时间复杂度O(N)。优点:插入删除速度快,内存利用率高,没有大小固定,扩展灵活。缺点:不能随机查找,每次都是从第一个开始遍历(查询效率低)。哈希表特点把以上两种结合一起使用,从而实现查询效率高和插入删除效.
2021-03-06 23:49:45
1254
6
原创 21/3/3 面试-招银
Java 基础部分String、StringBuilder、StringBuffer之间的区别为什么要使用String,线程的状态锁的升级怎么导致线程阻塞代码调优jvm什么情况会导致泄漏类的加载机制HashMap的底层实现结构分布式调用别人的服务的时候反复调用调不调的时候的处理机制string boot 中xml文件读取用什么数据结构等数据库部分union和union all 的区别数据库调优何时会使索引失效怎么判断索引是否生效左连接和内连接手撕代码1,用两个栈实现队
2021-03-03 22:19:48
1025
4
原创 21/3/1 io流
IO流流,就是对外设数据源的抽象。程序要与外设进行数据通信,需要建立其与外设之间的“数据管道”,我们将建立的“数据管道”称之为流。流的分类:1.根据流中数据的流向,可以将流分为:输入流:从外设中读取数据到程序中;输出流:将程序中的数据写出,到外设中。2.根据流处理数据单位的不同,可以将流分为:字节流:以字节为操作单位;字符流:以字符为操作单位。3.根据流处理数据的方式不同,可以将流分为:低级流(节点流):没有数据缓冲区高级流(处理流):带有处理数据的缓冲区IO流类在Java中定
2021-03-01 23:58:36
95
1
原创 21/2/28 集合
集合数组的局限性:1.创建数组必须指定长度,长度一旦指定就不能改变;2.一个数组中只能存放一种数据类型的数据。集合就是特殊的数组:1.集合创建无需指定长度,长度可以动态改变;一个集合中可以存储多种数据类型的数据。所有集合类都实现了java.util.Collection接口。Collection接口有两个主要的子接口:List和Set。List集合和Set集合的区别:List和Set都是Collection的子接口,都表示集合;List接口下的集合元素有序且可以重复;Set接口下的
2021-02-28 23:02:10
2054
6
原创 21/2/28
有n个1~23的整数,求出有多少个相互不同的子集合的和为24点。1import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String strs[] = scan.nextLine()
2021-02-28 16:49:43
87
3
原创 21/2/27 复习总结
OOP 面向对象**抽象:**在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。继承:可以让当前类通过继承一个现有的类,从而获取类中的属性和方法封装:指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。多态:一个父类的引用,既可以指向一个父类的对象,也可以指向其任何一个子类对象。FatherClass fc = new FatherClass(); fc能够调用
2021-02-27 22:15:34
187
3
翻译 21/2/25 异或
1,异或英文为exclusive OR, 略称为XOR、EOR、EX-OR数学符号为“⊕”程序中有三种演算子:XOR、eor、⊕。运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。0⊕0=0,0⊕1=11⊕0=1,1⊕1=0运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进
2021-02-25 22:21:40
213
1
转载 21/2/25 分糖算法
分糖问题问题描述Solo和koko是两兄弟,妈妈给了他们一大袋糖,每块糖上都有自己的重量。现在他们想要将这些糖分成两堆。分糖的任务当然落到了大哥Solo的身上,然而koko要求必须两个人获得的糖的总重量“相等”(根据Koko的逻辑),要不然就会哭的。非常不幸的是,koko还非常小,并且他只会先将两个数转成二进制再进行加法,而且总会忘记进位。如当12(1100)加5(101)时: 1100+0101————— 1001于是koko得到的计算结果是9(1001)。此外还有一些例子:5 +
2021-02-25 21:19:16
920
4
原创 21/2/23 Java基础
编译和解释:JAVA语言是一种编译解释型语言,Java源文件通过编译产生的字节码文件与OS无关,只与JVM相关,所以只要当前OS可以安装JVM,就能执行Java代码——Java语言跨平台。Java代码编写注意:1.Java是大小写敏感的语言2.Java是一种强类型语言Java代码中所有的标点符号都是英文半角符号面向对象的核心:类与方法方法要定义在类中,而且一个类中可以定义多个方法每个方法是能够完成某一个独立功能的代码块(代码集合)根据一个方法有无static关键字,分为:静态方法:有st
2021-02-23 21:27:09
294
6
转载 21/2/22 jvm
1. Java 内存区域与内存溢出异常1.1 程序计数器内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成1.2 Java 虚拟机栈线程私有,生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到
2021-02-22 21:36:56
78
1
转载 21/2/20 数据库调优
一.创建索引要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引(1)在经常需要进行检索的字段上创建索引,比如要按照表字段username进行检索,那么就应该在姓名字段上创建索引,如果经常要按照员工部门和员工岗位级别进行检索,那么就应该在员工部门和员工岗位级别这两个字段上创建索引。(2)创建索引给检索带来的性能提升往往是巨大的,因此在发现检索速度过慢的时候应该首先想到的就是创建索引。(3)一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是
2021-02-21 18:25:56
103
原创 21/2/21基础知识
1 Java的设计模式总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。(挑两个熟悉的)1),所谓的单例设计指的是一个类只允许产生一个实例化对象。 最好理解的一种设计模式,分为懒汉式和饿汉式
2021-02-21 18:11:18
162
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人