- 博客(47)
- 资源 (3)
- 收藏
- 关注
原创 MySql分表、分库、分片和分区的区别
数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。
2023-02-14 13:56:36
1221
1
原创 List按某对象属性自定义排序,用Stream
说明我们在按List排序时会通过这样来:首先定义一个类@Data@AllArgsConstructor@NoArgsConstructor@Componentpublic class User { private String name; private Integer age;}模拟一些数据List<User> userList = new ArrayList();userList.add(new User(null, 1));userL
2022-04-28 14:14:37
2629
原创 两个List根据某一属性去重的三种方法
定义两个集合 People people1 = new People(1, "test1"); People people2 = new People(2, "test2"); People people3 = new People(1, "test1"); People people4 = new People(3, "test3"); People people5 = new People(4, "test4"); Li
2022-04-15 11:44:09
6081
原创 基本类型和引用类型比较
Integer i = 42;Long l = 42l;Double d = 42.0;// 以下输出true还是falsei==l?l==d?i.equals(d)?d.equals(42L)1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true; int a = 220; Integer b = 220; System.out.print
2022-03-03 16:19:18
310
1
转载 方法中局部变量的创建
下面关于变量及其范围的陈述哪些是不正确的()A 实例变量是类的成员变量B实例变量用关键字static声明C在方法中定义的局部变量在该方法被执行时创建D局部变量在使用前必须被初始化分析:A.类的成员变量包括实例变量和类变量(静态变量),成员方法包括实例方法和类方法(静态方法)。 A正确B.类变量(静态变量)用关键字static声明,B错误C.方法中的局部变量在方法被调用加载时开始入栈时创建,方法入栈创建栈帧包括局部变量表操作数栈,局部变量表存放局部变量,并非在执行该方法时被创建,C错误
2022-02-25 15:35:41
2324
原创 数据类型的自动转换和强制转换
Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )public class Demo{ float func1() { int i=1; return; } float func2() { short i=2; return i; } float func3() { long i=3; return i; } float func4() {
2022-02-24 17:56:34
812
原创 String和char[]的函数传参
指出下列程序运行的结果()public class Example{ String str = new String("good"); char[ ] ch = { 'a' , 'b' , 'c' }; public static void main(String args[]){ Example ex = new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str
2022-02-24 17:22:46
719
原创 苏轼《赤壁赋》
赤壁赋苏轼(1037年1月8日-1101年8月24日)字子瞻、和仲,号铁冠道人、东坡居士,世称苏东坡、苏仙,汉族,眉州眉山(四川省眉山市)人,祖籍河北栾城,北宋著名文学家、书法家、画家,历史治水名人。苏轼是北宋中期文坛领袖,在诗、词、散文、书、画等方面取得很高成就。文纵横恣肆;诗题材广阔,清新豪健,善用夸张比喻,独具风格,与黄庭坚并称“苏黄”;词开豪放一派,与辛弃疾同是豪放派代表,并称“苏辛”;散文著述宏富,豪放自如,与欧阳修并称“欧苏”,为“唐宋八大家”之一。苏轼善书,“宋四家”之一;擅长文人画,尤
2022-01-19 16:24:25
666
原创 苏轼的《赤壁怀古》
创作背景苏轼(1037年1月8日-1101年8月24日)字子瞻、和仲,号铁冠道人、东坡居士,世称苏东坡、苏仙,汉族,眉州眉山(四川省眉山市)人,祖籍河北栾城,北宋著名文学家、书法家、画家,历史治水名人。苏轼是北宋中期文坛领袖,在诗、词、散文、书、画等方面取得很高成就。文纵横恣肆;诗题材广阔,清新豪健,善用夸张比喻,独具风格,与黄庭坚并称“苏黄”;词开豪放一派,与辛弃疾同是豪放派代表,并称“苏辛”;散文著述宏富,豪放自如,与欧阳修并称“欧苏”,为“唐宋八大家”之一。苏轼善书,“宋四家”之一;擅长文人画,.
2022-01-07 13:56:07
277
原创 柳宗元《小石潭记》
创作背景柳宗元(773年-819年),字子厚,唐代河东(今山西运城)人,杰出诗人、哲学家、儒学家乃至成就卓著的政治家,唐宋八大家之一。著名作品有《永州八记》等六百多篇文章,经后人辑为三十卷,名为《柳河东集》。因为他是河东人,人称柳河东,又因终于柳州刺史任上,又称柳柳州。柳宗元与韩愈同为中唐古文运动的领导人物,并称“韩柳”。在中国文化史上,其诗、文成就均极为杰出,可谓一时难分轩轾柳宗元于唐顺宗永贞元年(公元805年)因拥护王叔文的改革,被皇帝贬为永州司马,王叔文被害。政治上的失意,使他寄情于山水,并.
2022-01-06 19:08:06
401
原创 Linux安装RocketMq及可视化管理
安装部署环境JDK1.8 64bit Linux(Centos7) maven 3.6.x下载安装包https://archive.apache.org/dist/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip若是window系统中,则上传到linux服务器新建路径下解压unzip rrocketmq-all-4.5.0-bin-release.zip进入bin目录,例如cd /usr/local/roc
2022-01-06 15:06:48
843
原创 记录一次Linux安装Redis过程
安装添加路径# mkdir data# cd data下载wget http://download.redis.io/releases/redis-6.0.8.tar.gz解压tar xzf redis-6.0.8.tar.gz安装输入make命令,发现报错则进行第4.1步,否则继续5make4.1 make报错Redis是C实现的,需要gcc来进行编译,所以原因是系统未安装gcc:yum install -y gcc g++ gcc-c++ make升
2021-12-27 17:38:50
578
原创 再读《岳阳楼记》
美文欣赏庆历四年春,滕子京谪(zhé)守巴陵郡。越明年,政通人和,百废具兴。乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上。属(zhǔ)予(yú)作文以记之。予观夫(fú)巴陵胜状,在洞庭一湖。衔远山,吞长江,浩浩汤汤(shāng),横无际涯;朝晖夕阴,气象万千。此则岳阳楼之大观也。前人之述备矣。然则北通巫峡,南极潇湘,迁客骚人,多会于此,览物之情,得无异乎?若夫淫雨霏霏,连月不开;阴风怒号,浊浪排空;日星隐曜(yào),山岳潜形;商旅不行,樯(qiáng)倾楫(jí)摧;薄(bó)暮冥.
2021-12-24 17:41:15
607
原创 Linux安装JDK1.8示例
查看Linux内核cat /proc/version下载JDK1.8,此处为jdk1.8.0_211可到官网去下载https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html上传JDK到Linux服务器/data目录下,通过STP工具上传解压tar -zxvf /data/jdk-8u211-linux-x64.gz -C /data/设置环境变量vim /etc/pro..
2021-12-24 17:05:32
827
原创 Spring Cloud ALibaba声明式Http客户端Feign
前言我们之前通过RestTemplate访问其它微服务时,虽然能够实现轻量级的微服务之间通讯,但写着写着发现很多的Url难以管理,代码可读性很差,开发维护也不是很友好。所以一种声明式的客户端Feign呼之欲出。Feign1.引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-st
2021-12-14 17:59:32
165
原创 梦入《桃花源记》
桃花源记晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人
2021-12-14 10:27:46
590
1
原创 Spring Cloud Alibaba实现微服务负载均衡
前言我们在学习微服务时,一般通过轻量级调用,比如通用是Http调用来实现微服务之间的通讯,在最开始可能是通过固定的地址来实现调用,但是地址也许会随着服务器迁移会改变,服务器也会时常宕机,造成服务之前调用的失联,造成整个系统的崩溃。所以我们一般会通过第三方管理整个微服务的信息,这就是服务发现。Nacos作为服务注册发现,现在最流行的当属于Alibaba的Nacos了,既能发现又能配置。英文全称Dynamic Naming and Configuration Service,Na为naming/nam
2021-12-13 18:02:09
1176
原创 Java基础学习之ACID、事务隔离级别、MVCC
学习目标了解读锁和写锁select for update 是读锁还是写锁MVCC是什么事务的隔离级别事务操作可以通过例1、2、3发现MySQL关于事务默认是开启了防止脏读、幻读和不可重复读。脏读:变更操作能够读取幻读:插入或删除能够读取例1两个窗口同时开启事务,如下:窗口1中事务1执行update时查看结果如下:窗口2中事务2执行查看如下:发现事务2查看结果没有发生改变例2即使事务1提交后事务2仍然读取的是过去的结果例3事务1插入数据事务2查看不到
2021-12-10 17:12:09
161
原创 韩愈作《师说》
师说古之学者必有师。师者,所以传道受业解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。生乎吾前,其闻道也固先乎吾,吾从而师之;生乎吾后,其闻道也亦先乎吾,吾从而师之。吾师道也,夫庸知其年之先后生于吾乎?是故无贵无贱,无长无少,道之所存,师之所存也。嗟乎!师道之不传也久矣!欲人之无惑也难矣!古之圣人,其出人也远矣,犹且从师而问焉;今之众人,其下圣人也亦远矣,而耻学于师。是故圣益圣,愚益愚。圣人之所以为圣,愚人之所以为愚,其皆出于此乎?爱其子,择师而教之;于其身也,则耻师焉,惑矣。彼
2021-12-09 10:01:39
338
原创 Java基础学习之Spring事务的传播行为
Spring声明式事务Spring事务机制主要包括声明式事务和编程式事务Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性Spring
2021-12-08 17:57:42
485
原创 荀子苦心《劝学》
君子曰:学不可以已。青,取之于蓝,而青于蓝;冰,水为之,而寒于水。木直中绳,輮(róu)以为轮,其曲中规。虽有(yòu)槁暴(pù),不复挺者,輮使之然也。故木受绳则直,金就砺则利,君子博学而日参省乎己,则知明而行无过矣
2021-12-08 11:25:53
573
原创 Java基础学习之JVM篇:jstack、jstat和jmap工具使用
学习目标了解了JVM基本存储原理后,那么我们如何针对程序运行在JVM中出现的一些问题进行分析和跟踪呢?我们需要借助jstack、jstat和jmap等一些工具来协助分析,包括堆和内存使用情况,线程的运行状况等。jstack用于查看某个Java进程内的线程堆栈信息。例如:jstack 12733>jstack 127332020-06-10 16:41:35Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.172-b11
2021-12-06 18:04:17
3389
原创 Java基础学习之JVM篇:Serial、Parallel、CMS和G1垃圾回收器
学习目标面对下面提问,你该如何回答Serial、Parallel、CMS和G1有何区别?对延迟要求过高会选择哪种GC?内存空间较大选择哪种GC?在前面我们已经了解到JVM中有一些方法清除JVM中的垃圾,比如引用计数、双色标记和三色标记主要描述的是如何去找到无效的对象,整理、复制和分代算法主要描述了对JVM中堆空间的有效划分和处理。有了这些想法,也许你可以自己设计一个好用的垃圾回收工具,而经过了一段时间的发展,Java中针对HotSpot虚拟机中已经有了一批垃圾回收器,包括Serial、Pa
2021-12-02 21:32:34
593
原创 Java基础学习之JVM篇:复制、整理和生代算法
学习目标接下来我们带着下面三个问题一起来学习JVM中堆的复制(Copy)、整理(Compact)和生代(Generation)算法JVM中堆分为哪几部分?新生代、存活代、老生代和永久代是什么?如何工作的?什么时候发生复制和整理?整理和复制我们观察堆中内存的对象不断被创建和回收,因此出现了碎片化针对碎片化内存,不能够很好的利用空间,甚至造成很多空间的浪费。那么我们需要将碎片化进行整理,得到更多的空间和整齐的空间。并且我们会发现一个现象:新生成的对象会普遍的存活率较低,生存下来的对象也更
2021-11-30 18:04:19
168
原创 Java基础学习之JVM篇:说说引用计数和三色标记清除算法
学习目标在学习JVM中,我们重点在于认识和了解GC这块,而GC在前面Java基础学习之JVM篇:说说栈和堆的区别我们重点和大家一起学习了Java虚拟机的内存模型,在Java基础学习之JVM篇:说说STW、吞吐量中当然我们基本知道了GC的基本原理和作用,那么本节我们可以来一起了解GC的实现方式,也可以说是GC的算法实现。了解引用计数为什么需要三色标记而不是双色标记三色标记如何处理mutation引用计数什么是引用计数?顾名思义就是这个对象被引用的次数,例如对象A被其它对象引用了两次,即计数2
2021-11-30 16:01:34
622
原创 Java基础学习之JVM篇:说说STW、吞吐量、FootPrint和Latency
学习目标GC不仅负责内存的回收,也负责内存的分配,甚至故障异常处理一条龙,GC可以拥有不同算法实现,不同算法解决不同的问题,那么为什么要GC?什么是STW?如何提高ThroughPut?什么是GC百度百科是这样解释:GC(Garbage Collection):JAVA/.NET中的垃圾回收器。Java是由C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。有了GC,程序员就不需要再手动的去控制内存的释放。当Java虚拟机(VM)或.NETCLR发觉内存资源
2021-11-29 18:01:16
1367
原创 Java基础学习之JVM篇:说说栈和堆的区别
学习目标当说到JVM(Java虚拟机)我们不得不理解栈和堆,面试官也会经常请你说一说这两者之间的区别和主要作用。本节文章将以HotSpot虚拟机为例,重点围绕栈和堆来让我们一起认识Java虚拟机内存的分配方式和基础原理。本节将一起学习:栈的作用堆的作用JVM内存分配元数据、编译后代码是存放堆内还是堆外常量是放在堆内还是堆外栈的作用栈(Stack)作为一种先进后出的(FILO)数据结构,大家都有所了解,但在JVM角度来看大家都会给出栈时调用函数临时变量,而对象存放在堆中。这样从存储的角
2021-11-26 17:20:38
921
原创 Java基础学习之并发篇:延迟队列DelayQueue
学习目标DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六
2021-11-24 11:52:23
541
原创 Java基础学习之并发篇:SynchronousQueue和LinkedTransferQueue
学习目标在学习了阻塞队列ArrayBlockingQueue、LinkedBlockingQueue和LinkedBlockingDeque我们对Java的阻塞队列有了一定的认识,有了生产消费者模型基本的概念。但是此时若有这样的场景:我们想建立一个以生产和消费者为主体的队列,当生产者生产没有被消费时阻塞,消费者消费没有生产数据时也阻塞消费线程。保证生产和消费能够组成CP才能成功那么本节我们便来学习SynchronousQueue和LinkedTransferQueue达此目的。Synchron
2021-11-23 17:57:28
1508
原创 Java基础学习之并发篇:LinkedBlockingQueue和LinkedBlockingDeque
学习目标在并发编程中,阻塞队列在多线程中的场景特别有用,比如在生产和消费者模型中,生产者生产数据到队列,队列满时需要阻塞线程,停止往队列生产。消费者消费队列,对队列为空时阻塞线程停止消费,在Java中有提供不同场景的阻塞队列,那么接下来我们将学习:LinkedBlockingQueue和LinkedBlockingDeque两种阻塞队列。LinkedBlockingQueue上次我们学习了基础的有界阻塞队列ArrayBlockingQueue,????有兴趣可以了解下,明白了有界阻塞队列基本实现原理
2021-11-23 15:06:29
1342
原创 Java基础学习之并发篇:手写阻塞队列ArrayBlockingQueue
学习目标我们都知道在并发编程中,阻塞队列在多线程中的场景特别有用,比如在生产和消费者模型中,生产者生产数据到队列,队列满时需要阻塞线程,停止生产。消费者消费队列,对队列为空时阻塞线程停止消费,在Java中有提供不同场景的阻塞队列,那么接下来我们将学习ReentrantLock的Condition原理BlockingQueue的定义了解ArrayBlockingQueue的实现如何手写一个阻塞队列Condition原理在学习阻塞队列之前,我们先需要弄清楚ReentrantLock的Cond
2021-11-19 17:24:59
862
原创 Java基础学习之并发篇:可见性和有序性
我们知道并发中有三个重要的问题要处理:原子性、可见性和有序性。CAS保证原子性,volatile解决可见性,而happens-before原则保证有序性。本章节我们一起来学习下Java并发编程中的可见性和有序性相关知识点。学习目标:如何解释内存不一致什么是happens-before关系为什么设计volatilevolatile关键字原理volatile性能如何内存一致性模型在理想化情况下,我们期望顺序一致性模型中保证单线程操作会按照程序顺序执行,且保证所有线程看到的操作执行顺序一致,
2021-11-17 17:07:47
251
原创 Java基础学习之并发篇:synsychronized和ReentrantLock
学习目标了解锁的概念锁的分类synchronized关键字的内涵认识ReentrantLock类的实现synchronized和ReentranLock区别锁的概念锁单从字面来讲,决定进与出,上了锁,则拒绝进入。而在程序中,指的是拒绝线程的进入。上锁的目的是解决多线程对资源竞争产生的数据不一致,总而言之上锁的过程是针对临界区代码的同步,例如线程A拿到锁则同步资源由线程A占领,其它线程进行挂起或排队等待锁的释放。在Java中,我们一般会将锁分为悲观与乐观、可重入与不可重入、公平与非
2021-11-16 17:24:48
838
转载 Java基础学习之并发篇:不同的锁的适用场景
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1.乐观锁 VS 悲观锁#乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的
2021-11-16 14:53:45
819
原创 Java基础学习之并发篇:从CAS开始谈起
学习目标理解进程和线程认识并发概念什么是原子操作CAS是啥进程和多线程大家如果是计算机专业的人应该对这不陌生,我们都知道计算机的核心是CPU,它承担了所有的计算任务,而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序是具有某种功能的程序,程序是运行于操作系统之上的。从专业角度来讲:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体线程是程序执行中一个单一的顺
2021-11-12 18:12:45
527
原创 Java基础学习之数据结构:认识二叉搜索树
学习后可以了解树的表示如何反转二叉树广度优先和深度优先算法判断是否二叉搜索树平衡二叉树的认知树的表示树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。每个非空树形结构有根节点(root node)和叶子节点(leaf node),比如上图中根节点为A,叶子节点为 K、L、F、G、M、I、J 。整个存储形状在逻辑结构上看,类似于实际生活中倒着的树。根节点:如果一个结点没有父结点,那么这个结点就是整棵树的根结点叶子节点:如果结点没有任何子结点,那么此结点称为叶
2021-11-12 11:50:57
583
原创 Java基础学习之数据结构:利用栈和队列完成表达式解析
在阅读本篇文章之前,相信大家对栈和队列的概念已经有了基本的认识。何为栈?栈就是一种“先进后出”存储数据的结构,即最先进栈的数据,最后出栈;通常,栈的开口端被称为栈顶;相应地,封口端被称为栈底。因此,栈顶元素指的就是距离栈顶最近的元素而队列是使用队列存储数据,讲究 “先进先出”,即最先进队列的数据,也最先出队列。通常,称进数据的一端为 “队尾”,出数据的一端为 “队头”,数据元素进队列的过程称为 “入队”,出队列的过程称为 “出队”关于更多栈和队列的知识点可以参考这里去学习http://c.bi
2021-11-05 15:53:01
249
1
原创 Java基础学习之数据结构:八皇后问题
八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,总共会有多少解。算法分析当我们想解决这种问题,可见直接去尝试会有A64 8=40亿左右种选择,听到这就让人感到崩溃,能不能通过另一种思维去解决这种问题。根据这个条件,我们可以人为地做出一些选择,当我们选择了第一个皇后的位置之后,与其处于同行同列同斜线的位置
2021-11-04 18:13:58
240
原创 Java基础学习之数据结构:链表的反转
我们都知道数据结构有顺序的和跳跃的,而链表就是一种跳跃,不是用顺序实现的,它是用指针实现,在内存中不连续。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。链表有单向的,双向的。但是一般单向的链表是作为面试考察中最重要的一种,接下来我们通过本章节可以简单了解下链表的实现原理和一些考察的知识点。手写链表我们通过一个List,包含简单增删改查,来熟悉下链表的结构。首先定义下List的简单节点,包括一个头节点head和一个静态内部类Node:public c
2021-11-03 17:16:51
114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人