复习专题
文章平均质量分 53
写每个模块的专题文章
逸轩要冲鸭
这个作者很懒,什么都没留下…
展开
-
牛客网华为机试题
HJ23 删除字符串中出现次数最少的字符 描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 注意每个输入文件有多组输入,即多个字符串用回车隔开 输入描述: 字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。 输出描述: 删除字符串中出现次数最少的字符后的字符串。 示例1 输入: abcdd aabcddd 输出: dd aaddd private static.原创 2021-08-02 20:08:20 · 194 阅读 · 0 评论 -
java中的JDBC纯驱动方式连接Oracle数据库
java中的JDBC纯驱动方式连接Oracle数据库一、下载数据库厂商提供的驱动程序包二、将驱动程序包引入工程中,步骤如下1、选中项目——单击右键——Build Path——Configure Build Path2、在打开的构建路径对话框中,点击Libraries选项卡,然后点击Add External JARs…按钮3、选择ojdbc6.jar,然后点击“打开”4、可以看到驱动文件已经被添加到项目的库文件中,点击OK,添加驱动结束。三、编程,通过纯Java驱动方式与数据库建立连接。关原创 2021-04-04 15:35:36 · 712 阅读 · 0 评论 -
IDEA入门之springboot搭建meavenweb(二)
上节IDEA入门之springboot搭建meavenweb(一)我们从meaven web 中配置springboot,这节我们进入正题。框架搭建前准备工具:idea、maven3.3.9配置好maven仓库。一、SpringBoot框架与SpringWeb框架搭建区别其实就是简单、快速、方便!平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?1)配置web.xml...原创 2020-01-21 21:13:28 · 325 阅读 · 0 评论 -
maven常用命令
最重要一条:Maven clean install -D maven.test.skip=truemvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时间。mvn test-compile 编译测试代码,compile之会后生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。mvn test 运行应用程序中的单元测试mvn site 生成项目相关信息的网站mvn clean 清除目标目原创 2020-10-27 21:18:29 · 105 阅读 · 0 评论 -
线程池
线程池概念在系统启动时,会创建一些线程,当程序需要使用线程,则从线程池中获取线程,获取到线程后进行业务操作,操作完成后再将线程归还到i线程池,等待执行下一次任务。创建线程的三种方式方式一:extends Threadpublic class FirstThread extends Thread{ @Override public void run() { while (true){ try{ Thread.原创 2020-09-21 23:24:36 · 184 阅读 · 0 评论 -
多线程
1. 线程创建的方式继承Thread类,重写run方法实现Runnable接口使用第二种方式比较好,耦合度比较低。public class ThreadDemo { public static void main(String[] args) { // 方式一: 继承Thread类 run1(); // 方式二: 重写Thread的run方法 run2(); // 方式三: 实现Runnable接口原创 2020-09-21 23:06:28 · 131 阅读 · 0 评论 -
反射
java语言中,静态成员和普通数据类型类不是对象;类是对象,是java.lang.Class类的实例对象创建 Class 类型的 3 种方式:1、通过类名,静态成员变量获取Class first = Foo.class 任何一个类都有一个隐含的静态成员2、通过实例对象 getClass()Foo foo = null;Class second = foo.getClass();3、地址创建Class third = Class.forName(“com.reflect.Foo”);Cla原创 2020-09-08 21:55:42 · 214 阅读 · 0 评论 -
实现线程同步的方法和实现多线程
一、 实现线程同步1.同步方法即有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。2.同步代码块即有synchronized关键字修饰的语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步代码如:synchronized(object){}注:同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronize原创 2020-08-20 22:11:16 · 365 阅读 · 0 评论 -
Java中Collections集合工具类
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。Collections常用方法public static void sort(List list):集合元素排序public static void shuffle(List<?> list):集合元素存储位置打乱 public static原创 2020-08-19 17:27:28 · 417 阅读 · 0 评论 -
HashMap和Hashtable和ConcurrentHashMap的区别
面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别同步首发:http://www.yuanrengu.com/index.php/2017-01-17.html如果你去面试,面试官不问你这个问题,你来找我_下面直接来干货,先说这三个Map的区别:HashTable• 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化•原创 2020-08-18 16:13:22 · 489 阅读 · 0 评论 -
HashMap 和 Hashtable 有什么区别?(待补充)
存储:HashMap 运行 key 和 value 为null,而Hashtable 不允许线程安全:Hashtable 是线程安全的,而 HashMap 是非线程安全HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。Hashtable比HashMap多提供了elments() 和contains() 两个方法。HashMap的key-.原创 2020-08-16 16:23:43 · 517 阅读 · 0 评论 -
多线程实现Runable接口和Callable接口的区别
先看源码callable接口 ,返回泛型v,可以抛出异常Runable接口是抽象方法run,没有返回值,不能抛出异常,有异常在run方法内部处理。总结:区别1: 两者最大的区别,实现Callable接口的任务线程能返回执行结果,而实现Runnable接口的任务线程不能返回执行结果注意点:Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞线程直到获取“将来”的结果,当不调用此方法时,主线程不会阻塞区别2:Callable接口实现类中run()方原创 2020-08-15 22:20:56 · 1101 阅读 · 0 评论 -
Object(所有类的父类,超类)[待补充]
Object类是所有类的父类,因此研究Object类很重要。多看源码,多总结。Object类方法总结:Object(),默认构造方法。clone(),创建并返回此对象的一个副本。equals(Object obj),指示某个其他对象是否与此对象“相等”。finalize(),当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。getClass(),返回一个对象的运行时类。hashCode(),返回该对象的哈希码值。notify(),唤醒在此对象监视器上等待的单个线程。原创 2020-08-14 23:24:17 · 785 阅读 · 0 评论 -
JAVA开发基础(概述文档)
1.Java特点和优势完美的面向对象设计和开发Java是天生的面向对象设计语言,完美的实现了主流的面向对象技术,提高了软件的复用性。跨平台性Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。内存垃圾收集机制在C/C++ 等语言中,由程序员负责回收无用内存。Java语言解除了程序员回收无用内存空间的责任。它提供...原创 2019-08-30 10:26:47 · 516 阅读 · 0 评论 -
Spring+SpringMVC+MyBatis+Springboot介绍
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。1.SSM有什么用?SpringMVC:1.客户端发送请求到Disp原创 2020-08-02 14:35:54 · 3033 阅读 · 0 评论 -
JVM内部管理机制
JVM1. 引言1). 什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。2). JDK , JRE , JVM 的关系JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括原创 2020-08-03 22:56:15 · 402 阅读 · 0 评论 -
Redis 专题
Redis 专题Redis 的持久化机制RDB ----------> 内存中的数据集快照 ; 默认开启的 ; -------> dump.rdb 配置 : save 60 10 --------> 60s内, 有10个key发生变化, 触发RDB操作. 优点 : 1). 恢复速度快 ; -----> 缺点 : 1). 容易丢失数据 ; ------> 丢失数据风险高 2). 如果内存中的数据量过大 , 会造成持久化原创 2020-08-04 16:21:00 · 212 阅读 · 0 评论 -
代理(proxy)
一、代理模式为其他对象提供一种代理以控制对这个对象访问的一种设计模式 。二、代理的优势1). 隔离作用2). 无侵入地进行某些业务逻辑的执行三、代理模式分类两大类 :1). 静态代理2). 动态代理 --> JDK , Cglib无论是静态代理还是动态代理都有基于接口实现 和 基于继承实现两类 , 动态代理典型的如: JDK 动态代理(基于接口实现) , Cglib动态代理 (基于继承)四、 静态代理public interface Subject { public原创 2020-08-04 16:48:55 · 733 阅读 · 0 评论 -
dubbo
1.dubbo如何做负载均衡RandomLoadBalance 随机在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。获取invoker的数量获取第一个invoker的权重,并复制给firstWeight循环invoker集合,把它们的权重全部相加,并复制给totalWeight,如果权重不相等,那么sameWeight为false如果invoker集合的权重并不是全部相等的,那么获取一个随机数在1到totalWeight之间,赋值给o原创 2020-08-06 16:05:26 · 98 阅读 · 0 评论 -
dubbo面试题
1.dubbo如何做负载均衡RandomLoadBalance 随机在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。获取invoker的数量获取第一个invoker的权重,并复制给firstWeight循环invoker集合,把它们的权重全部相加,并复制给totalWeight,如果权重不相等,那么sameWeight为false如果invoker集合的权重并不是全部相等的,那么获取一个随机数在1到totalWeight之间,赋值给o原创 2020-08-06 15:38:09 · 110 阅读 · 0 评论 -
dubbox
一、dubbo如何做负载均衡?Dubbo内置了4种负载均衡策略:RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。顾名思义,随机负载均衡策略就是从多个 Provider 中随机选择一个。但是 Dubbo 中的随机负载均衡有一个权重的概念,即按照权重设置随机概率。比如说,有10个 Provider,并不是说,每个 Provider 的概率都是一样的,而是要结合这10个 Provider 的权重来分配概率。Dubbo中,可以对 Provider 设原创 2020-08-06 15:14:25 · 123 阅读 · 0 评论 -
事务
一、事务四特性(ACID)原子性(Atomicity,或称不可分割性):要么全部完成或者全部不完成,错误是会发生回滚,这个要求两条相关的操作,就像情侣一样,要么一起海誓山盟,一个发生意外,另外一个也挂了一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变成另一个一致性状态。因此当数据库指包含成功事务提供的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分一写入物理数据库,这时数据库就处于一种不正原创 2020-08-06 16:30:13 · 133 阅读 · 0 评论 -
JS跨域解决方案
JS跨域解决方案一、 概述受浏览器同源策略影响, JS默认是不能跨域的。同源策略:简单来讲同源策略就是浏览器为了保证用户信息的安全,防止恶意的网站窃取数据,禁止不同域之间的JS进行交互。对于浏览器而言只要域名、协议、端口其中一个不同就会引发同源策略,从而限制他们之间如下的交互行为:1.Cookie、LocalStorage和IndexDB无法读取;2.DOM无法获得;3.AJAX请求不能发送。二、CORS1). 在方法上加入响应头信息@RequestMapping(value="/find原创 2020-08-05 16:43:31 · 218 阅读 · 0 评论 -
RabbitMQ常用命令
用户管理用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。相应的命令(1) 新增一个用户rabbitmqctl add_user Username Password(2) 删除一个用户rabbitmqctl delete_user Username(3) 修改用户的密码rabbitmqctl change_password Username Newpassword(4) 查看当前用户列表rabbitmqctl list_users用户角色按照个人理解,用户原创 2020-08-06 18:08:54 · 627 阅读 · 0 评论 -
spring与springboot面试题
1.(Spring)spring 自动装配 bean 有哪些方式?https://www.jianshu.com/p/2f1c9fad1d2d2.(SpringBoot)为什么要使用 spring boot?1.2 SpringBoot的概述1.2.1 SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,原创 2020-08-06 17:24:57 · 585 阅读 · 0 评论 -
RabbitMQ与ActiveMq(二)
rabbitmq和activemq的区别?rabbitmq有几种广播种类?(1) activemq:优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。 缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。(2) rabbitmq ① 优点:erlang语言开发,性能极其好,延时很低; .原创 2020-08-06 16:09:30 · 369 阅读 · 1 评论 -
RabbitMQ与ActiveMq(一)
1.ActiveMQ消息中间件消息发送失败怎么办?及负1参数的意思?(配置文件设置重发机制参考链接:https://www.cnblogs.com/sjshare/p/8915669.html)1>:这个问题与其讨论MQ消息队列消息发送失败的解决方案,等同于探讨中间件如何保证消息的一致性的问题?怎么保证两个服务器的通信同步更新成功,网络不好,造成的数据丢失问题。解决方案:首先主动方(消息发送方)有个预处理的动作,就是发送消息的同时插入一条数据到数据库的表中, 这条数据的关键字段:状态的值为 待确原创 2020-08-06 15:42:17 · 374 阅读 · 0 评论 -
分布式与集群
一、什么是分布式系统分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统、分布式数据库系统等,当然这些也是分布式的关键技术。二、为什么要使用分布式系统?1.增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。2.加强系统可用。我们的业务越来越关键原创 2020-08-06 15:09:15 · 188 阅读 · 0 评论 -
多线程
一、什么是多线程,为什么要使用多线程说起多线程,那么就不得不说什么是线程,而说起线程,又不得不说什么是进程。进程可以简单的理解为一个可以独立运行的程序单位(比如qq,微信)。它是线程的集合,进程就是有一个或多个线程构成的,每一个线程都是进程中的一条执行路径。进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。那么多线程就很容易理解:多线程就是指一个进程中同时有多个执行路径(线程)正在执行。1、避免阻塞(异步调用)单个线程中的程序,是顺序执行的。如果前面的操作发生了阻塞,那么就会影响到后面原创 2020-08-06 17:08:33 · 148 阅读 · 0 评论 -
日志框架
日志框架1. 概述是一套能实现日志输出的工具包 ;System.out?1). 代码侵入性高, 一旦编写的输出语句 , 该语句会一直输出 , 直到被删除/注释 ;2). 输出的信息不详细 , 传递什么内容, 就输出什么内容 ;3). 功能单一 , 只能是往控制台输出 ;2. 主流日志框架日志框架具有的能力 :1). 定制输出目标2). 运行时选择性输出3). 定制输出格式4). 灵活的配置5). 携带上下文信息| 日志门面 | 日志实现原创 2020-08-04 17:16:45 · 144 阅读 · 0 评论 -
log4j配置
Log4j 输出格式转换字符说明=================c category的名称,可使用{n}限制输出的精度。例如:logger名为"a.b.c",%c{2}将输出"b.c"。C 产生log事件的java完全限定类名。可使用{n}限制输出的精度。例如:“org.apache.xyz.SomeClass”,%C{2}将输出“SomeClass”。d 时间和日期的输出格式,例...原创 2020-03-11 20:29:29 · 130 阅读 · 0 评论 -
分布式锁
分布式锁1.1 什么是分布式锁当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数。与单机模式下的锁不仅需要保证进程可见,还需要考虑进程与锁之间的网络问题。(我觉得分布式情况下之所以问题变得复杂,主要就是需要考虑到网络的延时和不可靠。)分布式锁还是可以将标记存在内存,只是该内存不是某个进程分配的内存而是公共内存如 Redis、Memcache。至于利用数据库、文件等做锁与单机的实现是一样的,只要保证标记能互斥就行。1.2 分布式锁场景1.原创 2020-08-04 19:18:53 · 462 阅读 · 1 评论