自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java基础面试题

1.面向对象和面向过程的区别?面向过程:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护缺点:性能比面向过程低面向对象的编程方式使得每一个类都只做一件事。面向过程会让一个类越来越全能,就像一个管

2021-02-08 15:50:50 1783 1

原创 Mybatis执行流程

1.代码展示2.获取文件流这段代码比较简单,主要是把mybatis.xml文件转化为文件流,方便接下来SqlSessionFactoryBuilder去读取//1.将配置文件转换为对应的流Reader reader = Resources.getResourceAsReader("mybatis-config.xml");3.解析XML文件,构建SqlSessionFactory获取对应的流,通过SqlSessionFactoryBuilder.build将其转为SqlSess.

2021-02-04 09:46:56 287 2

原创 Mybatis学习----Mybatis缓存设置

1.一级缓存首先看一段代码,猜测一下对应的结果 @Test public void testL1Cache(){ //获取 sqlSession SqlSession sqlSession = getSqlSession(); SysUser user1 = null; try { //获取 UserMapper 接口 UserMapper userMapper = sqlSes

2021-02-01 20:43:51 363

原创 Mybatis学习----Mybatis入门

1.创建maven项目首先在自己的编译器中创建一个maven项目,然后导入以下pom.xml依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven

2021-01-31 15:26:32 113

原创 RocketMQ实战

1.新建开发环境新建一个maven工程,在pom.xml文件中加入如下依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org

2021-01-25 21:13:33 270

原创 RocketMQ集群搭建

1.RocketMQ角色介绍Producer:消息的发送者;举例:发信者 Consumer:消息接收者;举例:收信者 Broker:暂存和传输消息;举例:邮局 NameServer:管理Broker;举例:各个邮局的管理机构 Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息 Message Queue:相当于是Topic的分区;用于并行发送和接收消息2.集群的搭建方式2.1集群特点NameServer是

2021-01-24 21:17:59 381

原创 RocketMQ快速入门

1.简介RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。2.RocketMQ环境准备2.1下载RocketMQ利用以下命令下载对应安装包#下载安装包wget https://archive.apache.org/dist/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip#解压文件unzip rocketmq-all

2021-01-24 14:06:22 104

原创 SpringCloud学习(十六)---Sleuth

1.下载zipkin.jar下载地址http://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/2.12.9/下载完成后,运行jar包

2021-01-24 11:13:29 84 1

原创 SpringCloud学习(十二)---Config

1.搭建Config服务端配置环境建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

2021-01-23 19:32:11 96

原创 SpringCloud学习(十五)---Stream

1.新建消息驱动生产者建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

2021-01-23 19:31:56 131

原创 SpringCloud学习(十三)---Bus

1.搭建Bus环境建立module cloud-config-client-3366,这个模块和3355一摸一样然后在3344 3355和3366的项目模块中的pom.xml中加入消息总线支持 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-star

2021-01-23 19:31:17 77

原创 SpringCloud学习(十一)---GateWay

1.GateWay环境搭建建一个module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P

2021-01-19 20:03:41 110

原创 SpringCloud学习(十)---Hystrix

1.Hystrix重要概念1.1服务降级1.2服务熔断1.3服务限流2.案例配置2.1新建服务端建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2021-01-17 21:14:23 98

原创 SpringCloud学习(九)---OpenFeign

1.OpenFeign的使用示例建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org

2021-01-17 13:00:42 100

原创 SpringCloud学习(八)---Ribbon

1.替换负载均衡规则新建一个包,一定不要被@SpringBootApplication扫描到(如果扫描到会出问题),在包里新建一个类@Configurationpublic class MySelfRule { @Bean public IRule myRule() { return new RandomRule();//定义为随机 }}修改启动类@SpringBootApplication@EnableEurekaClient@Ribbo

2021-01-17 13:00:19 83

原创 SpringCloud学习(七)---Consul

1.下载安装下载地址:https://www.consul.io/downloads.html打开启动consul启动成功后,进入localhost:85002.将支付服务注册到consul建立module导入pom.xml<dependencies> <!-- 引入自己定义的api通用包,可以使用Payment支付Entity --> <dependency> <gr

2021-01-17 12:59:58 137

原创 SpringCloud学习(六)---Zookeeper

1.将支付服务注册到zookeeper建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

2021-01-14 19:44:47 110

原创 java十大排序

1.冒泡排序基本思想:持续比较相邻的元素。如果第一个比第二个大,就交换他们两个。直到没有任何一对数字需要比较。 冒泡排序最好的时间复杂度为O(n)。冒泡排序的最坏时间复杂度为O(n^2)。因此冒泡排序总的平均时间复杂度为O(n^2)。 算法适用于少量数据的排序,是稳定的排序方法。 最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2)public class BubbleSort { public static int[] s..

2021-01-14 08:37:36 172 1

原创 SpringCloud学习(五)---Eureka

1.Eureka基础知识1.1什么是服务治理1.2服务注册1.3Eureka两组件2单机Eureka构建2.1建立Eureka注册中心建立module修改pom.xml<dependencies> <!-- eureka-server --> <dependency> <groupId>org.springframework.cloud</group

2021-01-13 08:36:51 102

原创 SpringCloud学习(四)---工程重构

1.工程重构新建公共模块包修改pom文件<dependencies> <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> &l

2021-01-13 08:36:19 111

原创 数据库范式与基本架构

1.数据库范式1.1第一范式第一范式就是属性不可分割。属性就是表中的字段。不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了。这个字段只能是一个值,不能被拆分成多个字段,否则的话,它就是可分割的,就不符合一范式。不过能不能分割并没有绝对的答案,看需求,也就是看你的设计目标而定。举例:比如我们的收获地址可以是XX省+XX市+具体地址,这样在数据库表中是3个或者更多的字段,如果我们将这些当成一个字段存储就会违反它的不可分割性。简单来说,第一范式是关系数据库的基础,但字段是否真的不可拆分,

2021-01-13 08:28:53 203

原创 SpringCloud学习(一)---环境准备

1.搭建父工程创建maven工程,选择一个maven模板填写相关信息选择maven版本修改字符编码注解激活生效java编译版本导入对应的pom依赖,注意父工程的<packaging>pom</packaging><?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" .

2021-01-13 08:28:38 65

原创 SpringCloud学习(二)---支付模块开发

1.新建支付模块在父工程下建立一个cloud-provider-payment-8001的子模块,建立完成后,父工程下面会多一个modules在项目pom.xml加入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2021-01-13 08:28:24 115

原创 SpringCloud学习(三)---消费者订单模块开发

1.新建module2.修改pom文件<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!

2021-01-13 08:28:12 122

转载 java类加载机制

1.类的生命周期1.1类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析1.1.1加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class 对象,作为方法区这些数据

2021-01-13 08:27:48 204

转载 JVM垃圾回收

1.JVM内存分配Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是堆内存中对象的分配与回收。Java 堆是垃圾收集器管理的主要区域,因此也被称作GC 堆(Garbage Collected Heap).从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有:Eden 空间、From Survivor、To Survivor 空间等。进一步划分的目的是更好地回收内存,或者更快地

2021-01-13 08:24:21 511

原创 MySQL事务

1.什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如A要给B转账1000元,这个转账会涉及到两个关键操作就是:将A的余额减少1000元,将B的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致A余额减少而B的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。2.事务的特性原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;(事务是不可再分.

2021-01-12 14:07:37 183

原创 java内存区域

1.运行时的数据区1.1程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变这个计数器的值来选取下一个需要执行的字节码指令,分支,循环,跳转,异常处理,线程回复等都需要依赖这个计数器来完成。由于Java的多线程是通过线程轮流切换完成的,一个线程没有执行完时就需要一个东西记录它执行到哪了,下次抢占到了CPU资源时再从这开始,这个东西就是程序计数器,正是因为这样,所以它也是“线程私有”的内存。如果一个线程执行一个JAVA方法,这个

2021-01-09 21:21:30 175 1

原创 Mysql基础命令(第一部分)

1.数据库相关//返回可用数据库的一个列表。包含在这个列表中的可能是MySQL内部使用的数据库show databases;//选定某个数据库use imooc;//获得一个数据库内的表的列表show tables;//用来显示表列show columns from users;//用来显示表列,和上面语句类似describe user;//用于显示广泛的服务器状态信息show status;//用来显示授予用户(所有用户或特定用户)的安全权限show grants;

2021-01-08 20:00:55 218 1

原创 java并发容器(待补充)

1.java常见的并发容器ConcurrentHashMap:线程安全的 HashMap CopyOnWriteArrayList:线程安全的 List,在读多写少的场合性能非常好,远远好于 Vector. ConcurrentLinkedQueue:高效的并发队列,使用链表实现。可以看做一个线程安全的 LinkedList,这是一个非阻塞队列。 BlockingQueue:这是一个接口,JDK 内部通过链表、数组等方式实现了这个接口。表示阻塞队列,非常适合用于作为数据共享的通道。 Co...

2021-01-07 20:25:32 82

原创 Java原子类

1.为什么需要原子类当程序更新一个变量时,如果是多线程同时更新这个变量,可能得到的结果与期望值不同。比如:有一个变量i,A线程执行i+1,B线程也执行i+1,经过两个线程的操作后,变量i的值可能不是期望的3,而是2。这是因为,可能在A线程和B线程执行的时候拿到的i的值都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchronized能保证多线程不会同时更新变量i.从java1.5开始,jdk提供了java.util.concurrent.atomic包

2021-01-06 21:11:51 135 1

原创 多线程ThreadLocal

1.什么ThreadLocal关键字ThreadLocal类是用来提供线程内部的局部变量.这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量能相对于独立其他线程内的变量.ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文.总结:线程并发:在多线程并发的场景下 传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量 线程隔离:每个线程的变量都是独立的,不会互相影响2.基本使用简单看一个案例

2021-01-05 20:05:04 458

原创 队列同步器AQS

1.AQS简单介绍AQS 的全称为(AbstractQueuedSynchronizer),是在 java.util.concurrent.locks 包下面的一个抽象类。它是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量便是同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,以期望它能够成为实现大部分同步需求的基础.使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantRead

2021-01-04 20:56:21 172 1

转载 java线程池

1.什么是java线程池在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就是"池化资源"技术产生的原因。线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开

2021-01-03 21:11:09 101

原创 java的锁机制

1.什么是死锁线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。public class DeadLockDemo { private static Object resource1 = new Object();//资源 1 private static Object resource2 = new Object();//资源 2 public static void main(

2021-01-02 22:21:33 381

原创 java多线程基础

1.进程与线程1.1什么是进程进程是程序的一次动态执行过程,它需要经历代码加载、代码执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个进程(程序),由于CPU具有分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,所以使得所有程序都好像是“同时”执行一样。1.2什么是线程多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是在进程的基础上进行的进一

2021-01-02 17:10:13 193 2

转载 选择排序java代码实现

public class ChoiceSort { public static int[] sort(int[] array){ //总共要经过N-1轮比较 for(int i = 0 ; i &lt; array.length-1 ; i++){ int min = i; //每轮需要比较的次数 ...

2019-01-10 16:43:42 507 1

转载 插入排序java代码实现

public class InsertSort { public static int[] sort(int[] array){ int j; //从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的 for(int i = 1 ; i &lt; array.length ; i++){ ...

2019-01-10 16:40:40 599

转载 冒泡排序java代码实现

public class BubbleSort { public static int[]sort(int[] array){ for (int i = 1; i &lt;array.length ; i++) { boolean flag=true; for (int j = 0; j &lt;array.length-1...

2019-01-10 16:20:42 15327

转载 数组java代码实现

public class MyArray { //定义一个数组 private int [] intArray; //定义数组的实际有效长度 private int elems; //定义数组的最大长度 private int length; //默认构造一个长度为50的数组 public MyArray(){ e...

2019-01-10 16:07:10 656

空空如也

空空如也

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

TA关注的人

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