自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

秋夫人

如果说努力和拼尽全力之间有什么区别,那就是,当你努力的时候,你会觉得自己已经拼尽全力了。当你拼尽全力的时候,你会觉得自己还不够努力。

  • 博客(242)
  • 收藏
  • 关注

原创 Scala第二十章节

Akka是一个用于构建高并发、分布式和可扩展的基于事件驱动的应用工具包。Akka是使用scala开发的库,同时可以使用scala和Java语言来开发基于Akka的应用程序。ActorSystem: 它负责创建和监督Actor在Akka中,ActorSystem是一个重量级的结构,它需要分配多个线程.在实际应用中, ActorSystem通常是一个单例对象, 可以使用它创建很多Actor.直接使用就可以获取到管理该Actor的ActorSystem的引用.实现Actor类。

2023-10-07 10:22:39 550

原创 Scala第十九章节

Scala中的Actor并发编程模型可以用来开发比Java线程效率更高的并发程序。我们学习Scala Actor的目的主要是为后续学习Akka做准备。我们前面发送的消息都是字符串类型,Actor中也支持发送自定义消息,例如:使用样例类封装消息,然后进行发送处理。

2023-10-07 10:17:55 506

原创 Scala第十八章节

Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合的父特质. 最重要的是, 它定义了获取迭代器(iterator)的方法:, 这是一个抽象方法, 它的具体实现类需要实现这个方法, 从而实现迭代的返回集合中的元素Seq特质代表按照一定顺序排列的元素序列, 序列是一种特别的可迭代集合, 它的元素特点是有序(元素存取顺序一致), 可重复, 有索引表示栈数据结构, 元素特点是先进后出。

2023-10-02 17:16:59 512

原创 Scala第十七章节

但凡了解过编程的人都知道程序 = 算法 + 数据结构这句话, 它是由著名的瑞士计算机科学家尼古拉斯·沃斯提出来的, 而他也是1984年图灵奖的获得者. 算法指的是计算的一系列有效, 通用的步骤. 算法和数据结构是程序设计中相辅相成的两个方面, 因此数据结构也是编程中很重要的一个方面. 很多编程语言都提供了数据结构的对应编程库,并称之为集合库(Collection Library). Scala中也有集合库, 它的优点如下:易于使用。

2023-10-02 17:12:21 389

原创 Scala第十六章节

我们在使用泛型(方法, 类, 特质)时,如果要限定该泛型必须从哪个类继承、或者必须是哪个类的父类。. 在定义泛型特质的子类或者子单例对象时, 明确具体的数据类型.例如: [T

2023-10-02 17:09:31 1002

原创 Scala第十五章节

scala总目录文档资料下载

2023-10-02 17:04:36 392

原创 Scala第十四章节

scala总目录文档资料下载

2023-10-02 17:01:22 474

原创 Scala第十三章节

scala总目录文档资料下载

2023-10-02 16:49:42 321

原创 Scala第十二章节

scala总目录文档资料下载

2023-10-02 16:24:55 204

原创 Scala第十一章节

Scala第十一章节1.模式匹配2. Option 类型3.偏函数4.正则表达式5.异常处理6.提取器7.案例:随机职业

2023-10-02 16:14:54 245

原创 Scala第十章

scala总目录文档资料下载

2023-10-02 16:02:50 995

原创 Scala第九章节

包就是文件夹, 用关键字package修饰, 它可以区分重名类, 且功能相似的代码可以放到同一个包中, 便于我们维护和管理代码.注意:编写Scala源代码时, 包名和源码所在的目录结构可以不一致.编译后, 字节码文件和包名路径会保持一致(由编译器自动完成).包名由数字, 大小写英文字母, _(下划线), $(美元符)组成, 多级包之间用.隔开, 一般是公司域名反写.例如: com.itheima.demo01, cn.itcast.demo02在Scala中, 每个包都有一个包对象。

2023-09-29 18:38:45 427

原创 Scala第八章节

有些时候, 我们会遇到一些特定的需求, 即: 在不影响当前继承体系的情况下, 对某些类(或者某些对象)的功能进行加强, 例如: 有猴子类和大象类, 它们都有姓名, 年龄, 以及吃的功能, 但是部分的猴子经过马戏团的训练后, 学会了骑独轮车. 那骑独轮车这个功能就不能定义到父类(动物类)或者猴子类中, 而是应该定义到特质中. 而Scala中的特质, 要用关键字trait修饰.概述设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。

2023-09-29 18:37:06 560

原创 Scala第七章节

实际开发中, 我们发现好多类中的内容是相似的(例如: 相似的属性和行为), 每次写很麻烦. 于是我们可以把这些相似的内容提取出来单独的放到一个类中(父类), 然后让那多个类(子类)和这个类(父类)产生一个关系, 从而实现子类可以访问父类的内容, 这个关系就叫: 继承.因为scala语言是支持面向对象编程的,我们也可以使用scala来实现继承,通过继承来减少重复代码。

2023-09-29 18:34:03 340

原创 Scala第六章节

一个类会有自己的属性,例如:人类,就有自己的姓名和年龄。我们接下来学习如何在类中定义和访问成员变量。类可以有自己的行为,scala中也可以通过定义成员方法来定义类的行为。Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。

2023-09-29 18:32:35 308

原创 scala入门

网盘地址:https://pan.baidu.com/s/1vJzjHhaC1NCcAGry6SLIpg&pwd=1706。

2023-09-29 18:26:27 342

原创 Scala第五章节

实际开发中, 我们需要编写大量的逻辑代码, 这就势必会涉及到重复的需求. 例如: 求10和20的最大值, 求11和22的最大值, 像这样的需求,用来进行比较的逻辑代码需要编写两次, 而如果把比较的逻辑代码放到方法中, 只需要编写一次就可以了, 这就是方法. scala中的方法和Java方法类似, 但scala与Java定义方法的语法是不一样的。语法val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => 函数体在Scala中, 函数是一个对象(变量)

2023-09-29 18:19:34 410

原创 Scala第四章节

在实际开发中, 我们要编写成千上万行代码, 代码的顺序不同, 执行结果肯定也会受到一些影响, 并且有些代码是满足特定条件才能执行的, 有些代码是要重复执行的. 那如何合理规划这些代码呢?这就需要用到: 流程控制结构了.顺序结构是指: 程序是按照从上至下, 从左至右的顺序, 依次逐行执行的, 中间没有任何判断和跳转.如图:注意: 顺序结构是Scala代码的默认流程控制结构.选择结构是指: 某些代码的执行需要依赖于特定的判断条件, 如果判断条件成立, 则代码执行, 否则, 代码不执行.

2023-09-29 18:16:24 997

原创 Scala第三章节

用来拼接变量或者常量的符号就叫: 运算符, 而通过运算符连接起来的式子就叫: 表达式. 实际开发中, 我们会经常用到它.例如:​ 10 + 3 这个就是一个表达式, 而+号, 就是一个运算符.​注意: 在Scala中, 运算符并不仅仅是运算符, 也是函数的一种, 这点大家先了解即可, 后续我们详细讲解.赋值运算符指的就是用来进行赋值操作的符号. 例如: 把一个常量值, 或者一个变量值甚至是某一段代码的执行结果赋值给变量, 这些都要用到赋值运算符.关系运算符指的就是用来进行比较操作的符号。

2023-09-29 18:11:35 332

原创 Scala第二章节

常量指的是: 在程序的运行过程中, 其值不能发生改变的量.我们将来每一天编写scala程序都会定义变量, 那什么是变量, 它又是如何定义的呢?scala的语法要比Java简洁,我们可以使用一种更简洁的方式来定义变量。示例使用更简洁的语法定义一个变量保存一个人的名字"tom"参考代码scala可以自动根据变量的值来自动推断变量的类型,这样编写代码更加简洁。​ 实际开发中, 我们会编写大量的代码, 这些代码中肯定会有变量, 方法, 类等. 那它们该如何命名呢?这就需要用到标识符了.

2023-09-29 18:08:59 519 1

原创 Scala第一章节

​ Scala(斯嘎拉)这个名字来源于"Scalable Language(可伸缩的语言)", 它是一门基于JVM的多范式编程语言, 通俗的说:Scala是一种运行在JVM上的函数式的面向对象语言. 之所以这样命名, 是因为它的设计目标是: 随着用户的需求一起成长. Scala可被广泛应用于各种编程任务, 从编写小型的脚本到构建巨型系统, 它都能胜任. 正因如此, Scala得以提供一些出众的特性, 例如:它集成了面向对象编程和面向函数式编程的各种特性, 以及更高层的并发模型。

2023-09-29 18:06:26 369

原创 InheritableThreadLocal使用详解

InheritableThreadLocal详解

2022-09-18 13:39:05 4835 2

原创 原理

Spring cloud ribbon原理1.通过使用被@LoadBalanced注解修饰的restTemplate来实现面向服务的调用Get请求:getForEntity()Post请求:postForEntity()Put请求:put()Delete请求:delete()2.restTemplate本是spring对象,ribbon通过对restTemplate拦截实现负载均衡3.负载均衡器1⃣️AbstractLoadBalancer: 关于服务实例分组枚举类,存储各个服务实例的属性和

2021-04-04 23:49:12 214

原创 Spring cloud eureka 原理及流程

Spring cloud eureka 原理:1.eureka server 端: 1⃣️client向server端注册,server端维护一个两层Map结构,存储注册信息(一层存服务名称,一层存ip)2⃣️消费者调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表3⃣️集群中的server通过复制各自状态同步信息4⃣️服务剔除5⃣️自我保护2.eureka client端:1⃣️向server端注册2⃣️向server端发送心跳,续

2021-04-04 21:04:52 606

转载 分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案

分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案记录一下

2021-01-14 18:05:47 1642

转载 CGLib动态代理原理

CGLib动态代理原理CGLib动态代理是代理类去继承目标类,然后重写其中目标类的方法啊,这样也可以保证代理类拥有目标类的同名方法;看一下CGLib的基本结构,下图所示,代理类去继承目标类,每次调用代理类的方法都会被方法拦截器拦截,在拦截器中才是调用目标类的该方法的逻辑,结构还是一目了然的;1.CGLib的基本使用使用一下CGLib,在JDK动态代理中提供一个Proxy类来创建代理类,而在CGLib动态代理中也提供了一个类似的类Enhancer;使用的CGLib版本是2.2.2,我是随便找的,不

2021-01-07 14:55:36 4733 1

原创 Json转换工具类FastJsonUtil

pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.44</version> </dependency>FastJsonUtil工具类package com.common

2021-01-07 12:47:35 944

转载 JDK动态代理的实现原理

JDK动态代理JDK动态代理是代理模式的一种实现方式,其只能代理接口。使用步骤 1、新建一个接口2、 为接口创建一个实现类3、 创建代理类实现java.lang.reflect.InvocationHandler接口4、 测试被代理的接口:package com.mikan.proxy; /** * @author Mikan * @date 2015-09-15 18:00 */public interface HelloWorld { void

2021-01-07 10:42:44 128

原创 记录spring cloud项目线上JVM配置

linux硬盘详情:# df -h Filesystem Size Used Avail Use% Mounted on/dev/vda1 99G 35G 60G 37% /tmpfs 7.8G 0 7.8G 0% /dev/shmlinux 内存详情:# free -h total used free shared buffers cachedMe

2020-12-31 15:35:02 909 1

原创 面试题 - Redis分布式锁原理,Redisson分布式锁原理,Redis分布式锁缺点

Redis分布式锁原理分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。使用setnx、getset、expire、del这4个redis命令实现setnx 是『SET if Not eXists』(如果不存在,则 SET)的简写。 命令格式:SETNX key value;使用:只在键 k

2020-12-22 16:44:53 3040

原创 面试题 - Spring 如何解决循环依赖?

Spring是如何解决循环依赖的问题的。spring可以解决属性注入循环依赖,默认不能解决构造器注入循环依赖spring创建对象分两步,①初始化实例对象,②初始化对象属性spring循环依赖,最初引用的就是半成品,也就是只初始化示例对象,还没有初始化对象属性因此解决了循环依赖问题。spring循环依赖原理这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不一定能够一下子思考出个中奥秘。本文主要针对这个问题,从源码的角度对其实现原理进行讲解。1.

2020-12-22 14:42:42 612

转载 面试题 - spring 事务

Spring事务的配置方式Spring支持编程式事务管理以及声明式事务管理两种方式。1. 编程式事务管理编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用,PlatformTransactionManager,对于编程式事务管理,Spring推荐使用TransactionTemplate,编程式事务粒度可以到代码级别。2. 声明式事务管理声明式事务管理建立在AOP之上,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据

2020-12-22 12:54:09 969

转载 面试题 - MySQL优化技巧

MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。MySQL参数优化MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like ‘max_connections’;2:查看当前访问Mysql的线程mysql> show processlist;3:设置最大

2020-12-21 22:02:38 244

原创 Java 原子性CAS 原理 ,atomic包 详解

java.util.concurrent.atomic包类的原理atomic包底层原理都是Unsafe.compareAndSwapXXX()方法,也就是通常说的CAS,compareAndSwapXXX方法是native标识的方法,是Java底层代码,不是Java代码实现的,public final class Unsafe { //object public final native boolean compareAndSwapObject(Object obj, long offset,

2020-12-15 14:42:30 511

原创 StampedLock源码详解解析

StampedLockStampedLock 是Java.util.concurrent并发包里JDK1.8版本新增的一个锁,该锁是对读写锁ReentrantReadWriteLock的增强,优化了读锁、写锁的访问,同时使写锁之间可以相互转换,更细粒度控制并发。StampedLock的主要特点概括一下,有以下几点:所有获取锁的方法,都返回一个邮戳(Stamp),Stamp为0表示获取失败,其余都表示成功;所有释放锁的方法,都需要一个邮戳(Stamp),这个Stamp必须是和成功获取锁时得到的Sta

2020-11-20 14:16:23 592

原创 AQS 源码解析 - 结合ReentrantLock,ReentrantReadWriteLock,CountDownLatch,CyclicBarrier,Semaphor

JDK1.5以前只有synchronized同步锁,并且效率非常低,因此大神Doug Lea自己写了一套并发框架,这套框架的核心就在于AbstractQueuedSynchronizer类(即AQS),性能非常高,所以被引入JDK包中,即JUC。那么AQS是怎么实现的呢?本篇就是对AQS及其相关组件进行分析,了解其原理,并领略大神的优美而又精简的代码。AbstractQueuedSynchronizerAQS是JUC下最核心的类,没有之一,所以我们先来分析一下这个类的数据结构。AbstractQ

2020-11-11 21:34:56 415

原创 数据结构可视化地址

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html数据结构可视化David Galles 旧金山大学计算机科学系当前,我们具有以下数据结构和算法的可视化:基本堆栈:数组实现堆栈:链表实现队列:数组实现队列:链表实现列表:数组实现(在Java版本中可用)列表:链接列表实现(在Java版本中可用)递归阶乘反转字符串N皇后问题索引编制二进制和线性搜索(排序列表)二叉搜索树AVL树(平衡二进制搜索树)

2020-10-29 22:20:15 163

翻译 面试题 - JVM内存结构

JVM内存结构JVM 可以分为 5 个部分,分别是:类加载器(Class Loader):加载字节码文件到内存。运行时数据区(Runtime Data Area):JVM 核心内存空间结构模型。执行引擎(Execution Engine):对 JVM 指令进行解析,翻译成机器码,解析完成后提交到操作系统中。本地库接口(Native Interface):供 Java 调用的融合了不同开发语言的原生库。本地方法库(Native Libraies):Java 本地方法的具体实现。这其中最复杂

2020-10-28 15:05:57 729

原创 面试题 - synchronized 和Lock区别

一、synchronized实现原理Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象静态同步方法,锁是当前类的class对象同步方法块,锁是括号里面的对象当一个线程访问同步代码块时,它首先是需要得到锁,当退出或者抛出异常时必须要释放锁,那么它是如何来实现这个机制的呢?我们先看一段简单的代码:public class SynchronizedTest { public synchronized void test1(){

2020-10-26 13:20:22 3153

原创 面试题 - ThreadLocal详解

目录(jdk1.8)一、什么是ThreadLocal二、ThreadLocal怎么用三、ThreadLocal的原理四、ThreadLocal源码分析1.ThreadLocal的内部属性2.ThreadLocal 之 set() 方法3.ThreadLocal 之 get() 方法4.TreadLocal的remove方法5.内部类ThreadLocalMap的基本结构和源码分析5.1先看成员和结构部分5.2接着看ThreadLocalMap的构造函数5.

2020-09-30 17:29:07 10477 2

Scala入门教程文档

Scala入门教程文档,原视频地址:https://www.bilibili.com/video/BV1Q5411t74z/?spm_id_from=333.337.search-card.all.click&vd_source=9d8a366730d0394fa41e3b867372fc03

2023-10-02

空空如也

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

TA关注的人

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