自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr權

打怪升级ing

  • 博客(71)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux添加.sh命令

首先准备脚本:start-listener-server.shstart脚本:echo "关闭服务"ID=`ps -ef | grep "listener-server.jar" | grep -v "grep" | awk '{print $2}'`echo $IDecho "---------------"for id in $IDdokill -9 $idecho "killed $id"doneecho "启动服务"cd /home/pms/nohup java -

2020-10-27 11:21:43 997

原创 Linux环境下安装mysql

首先先到官网下载安装包:https://dev.mysql.com/downloads/mysql/5.7.html#downloads将下载下来的压缩包上传到服务器指定的目录下,例如:var文件夹下cd /var进入到你存放mysql安装包的目录下解压tar -xvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz移动并重命名mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql

2020-08-19 14:20:12 309

原创 什么是 AQS(抽象的队列同步器)

什么是 AQS(抽象的队列同步器)AbstractQueuedSynchronizer 类如其名,抽象的队列式的同步器,AQS 定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。它维护了一个 volatile int state(代表共享资源)和一个 FIFO 线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里 volatile 是核心关键词,具体 volatile 的语义,在此不述。

2020-08-17 19:29:55 452

原创 什么是 CAS(比较并交换\乐观锁机制\锁自旋)

什么是 CAS概念及特性 CAS(Compare And Swap/Set)比较并交换,CAS 算法的过程是这样:它包含 3 个参数CAS(V,E,N)。V 表示要更新的变量(内存值),E 表示预期值(旧的),N 表示新值。当且仅当 V 值等于 E 值时,才会将 V 的值设为 N,如果 V 值和 E 值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS 返回当前 V 的真实值。CAS 操作是抱着乐观的态度进行的(乐观锁),它总是认为自己可以成功完成操作。当多个线程同时使用 CAS

2020-08-13 17:26:35 412

原创 进程调度算法

进程调度算法优先调度算法1、先来先服务调度算法(FCFS) 当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用 FCFS 算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机,特点是:算法比较简单,可以实现基本上的公平。2、短作业(进程)优先调度算法 短作业优先(SJF)的调度算法

2020-08-10 17:06:13 274

原创 Java 中用到的线程调度

Java 中用到的线程调度 抢占式调度: 抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。 协同式调度: 协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。线程的执行时间由线程本身控制,线程切换可以

2020-08-09 21:38:45 325

原创 ConcurrentHashMap 并发

ConcurrentHashMap 并发 减小锁粒度 减小锁粒度是指缩小锁定对象的范围,从而减小锁冲突的可能性,从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段,这种技术典型的应用是 ConcurrentHashMap(高性能的 HashMap)类的实现。对于 HashMap 而言,最重要的两个方法是 get 与 set 方法,如果我们对整个 HashMap 加锁,可以得到线程安全的对象,但是加锁粒度太大。Segment 的大小也被称为 ConcurrentHashMap 的并发度

2020-08-07 16:16:20 790

原创 synchronized 和 ReentrantLock 的区别

synchronized 和 ReentrantLock 的区别两者的共同点: 1. 都是用来协调多线程对共享对象、变量的访问 2. 都是可重入锁,同一线程可以多次获得同一个锁 3. 都保证了可见性和互斥性两者的不同点: 1. ReentrantLock 显示的获得、释放锁,synchronized 隐式获得释放锁 2. ReentrantLock 可响应中断、可轮回,synchronized 是不可以响应中断的,为处理锁的不可用性提供了更高的灵活性 3. Reent.

2020-08-06 19:05:30 273

原创 ThreadLocal 作用(线程本地存储)

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。 ThreadLocalMap(线程的一个属性) 1. 每个线程中都有一个自己的 ThreadLocalMap 类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。 2. 将一个共用的 ThreadLocal 静态实例作为 key,将不同对

2020-08-04 19:35:29 593

原创 JAVA如何在两个线程之间共享数据

如何在两个线程之间共享数据Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见性和有序性原子性。Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的问题,理想情况下我们希望做到“同步”和“互斥”。有以下常规实现方法: 将数据抽象成一个类,并将数据的操作作为这个类的方法 1. 将数据抽象成一个类,并将对这个数据的操作作为这个类的方法,这么设计可以很容易做到同步,只要在方法上加“synchronized“。public class

2020-08-03 15:55:34 3554

原创 JAVA之volatile 关键字的作用(变量可见性、禁止重排序)

volatile 关键字的作用(变量可见性、禁止重排序) Java 语言提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程。volatile 变量具备两种特性,volatile 变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取 volatile 类型的变量时总会返回最新写入的值。 变量可见性 其一是保证该变量对所有线程可见,这里的可见性指的是当一个线程修改了变量的值,那么新的值对于其他线程是可以立即获取的。 禁止重排序 volat

2020-08-01 16:22:50 370

原创 JAVA多线程并发(CyclicBarrier、CountDownLatch、Semaphore 的用法)

CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。final CountDownLatch latch = new CountDownLatch(2);new Thread(){ public void run() { System

2020-07-31 17:27:41 285

原创 JAVA多线程并发(JAVA阻塞队列原理)

JAVA 阻塞队列原理阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况: 1. 当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。 2. 当队列中填满数据的情况下,生产者端的所有线程都会被自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。阻塞队列的主要方法 抛出异常:抛出一个异常; 特殊值:返回一个特殊值(null 或 false,视情况而定) 阻塞:在成功操作之前,一直阻塞线程 .

2020-07-30 19:27:42 583

原创 JAVA多线程并发(同步锁与死锁、线程池原理)

同步锁与死锁 同步锁 当多个线程同时访问同一个数据时,很容易出现问题。为了避免这种情况出现,我们要保证线程同步互斥,就是指并发执行的多个线程,在同一时间内只允许一个线程访问共享数据。 Java 中可以使用 synchronized 关键字来取得一个对象的同步锁。 死锁 何为死锁,就是多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。 线程池原理 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大.

2020-07-29 16:23:23 693

原创 JAVA多线程并发(线程基本方法与上下文切换)

线程基本方法 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等。线程等待(wait)调用该方法的线程进入 WAITING 状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用 wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。线程睡眠(sleep)sleep 导致当前线程休眠,与 wait 方法不同的是 sleep 不会释放当前占有的锁,sleep(long)会导致线程进入 .

2020-07-27 18:30:00 392

原创 JAVA多线程并发(锁)

JAVA 锁乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。 悲观锁悲观锁是就是悲观思想,即认为写多..

2020-07-23 19:04:32 514

原创 JAVA多线程并发(sleep 与 wait 区别、start 与 run 区别、JAVA 后台线程)

sleep 与 wait 区别 1. 对于 sleep()方法,我们首先要知道该方法是属于 Thread 类中的。而 wait()方法,则是属于Object 类中的。2. sleep()方法导致了程序暂停执行指定的时间,让出 cpu 该其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。 3. 在调用 sleep()方法的过程中,线程不会释放对象锁。 4. 而当调用 wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用 notify

2020-07-22 14:40:50 632

原创 JAVA多线程并发(线程生命周期(状态)与终止线程的4种方式)

线程生命周期(状态) 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自运行,所以 CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。新建状态(NEW) 当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态,此时仅由 JVM

2020-07-21 10:13:35 1016

原创 JAVA多线程并发(线程实现/创建方式级4种线程池)

JAVA 线程实现/创建方式继承 Thread 类 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。 public class MyThread extends Thread { public void run() { System.out.println("MyThread.run()

2020-07-20 15:47:40 628

原创 Netty 与 RPC(叁)

RMI 实现方式Java 远程方法调用,即 Java RMI(Java Remote Method Invocation)是 Java 编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使 Java 编程人员能够在网络环境中分布操作。RMI 全部的宗旨就是尽可能简化远程接口对象的使用。实现步骤1. 编写远程服务接口,该接口必须继承 java.rmi.Remote 接口,方法必须抛出java.rmi.RemoteExc.

2020-07-14 19:32:46 433

原创 Netty 与 RPC(贰)

Netty RPC 实现 概念RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架如下:关键技术1. 服务发布与订阅:服务端使用 Zookeeper 注册服务地址,客户端从 Zookeeper 获取可用的服务地址。 2. 通信:使用 Netty 作为通信框架。 3. Spring:使用 Spring

2020-07-06 22:02:20 351

原创 Netty 与 RPC(壹)

Netty 原理Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。 Netty 高性能 在 IO 编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者 IO 多路复用技术进行处理。IO 多路复用技术通.

2020-07-03 12:47:56 347

原创 RabbitMQ工作原理分析

RabbitMQ概念RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括: 1. 可靠性(Reliability):RabbitMQ 使用

2020-06-30 11:02:31 717

原创 JVM类加载机制

JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个 Class 文件获取,这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换成对应的 Class 类)。验证.

2020-06-16 19:50:51 320

原创 JAVA虚拟机(JVM)--伍(四种引用)

JAVA 四中引用类型1、强引用(StrongReference)在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存泄漏的主要原因之一。例如:Object obj = new Object();2、软引用(SoftReference)软引用需要用 SoftReferenc.

2020-06-15 16:09:43 395

原创 JAVA虚拟机(JVM)--肆

垃圾回收与算法如何确定垃圾1、引用计数法 在 Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都为 0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。2、可达性分析为了解决引用计数法的循环引用问题,Java 使用了可达性分析的方法。通过一系列的“GC roots”对象作为起点搜索。如果在“GC roots”和一个对象之.

2020-06-11 16:22:15 309

原创 JAVA虚拟机(JVM)--叁

JVM 运行时内存 Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年代。 新生代是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。Eden 区 Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当 Ede..

2020-06-07 21:56:34 447

原创 JAVA虚拟机(JVM)--贰

JVM内存区域JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA 堆、方法区】、直接内存。 线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而创建/销毁(在 Hotspot VM 内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的生/死对应)。线程共享区域随虚拟机的启动/关闭而创建/销毁。 直接内存并不是 JVM 运行时数据区的一部分, 但也会被频繁的使用: 在 JDK 1.4 引入的

2020-06-04 19:16:45 320

原创 JAVA虚拟机(JVM)-- 壹

JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。 我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。也就是如下: ① Java 源文件——>编译器——>字节码文件 ② 字节码文件——>JVM——>机器码 每一种

2020-05-30 23:07:26 323

原创 白话之Zookeeper

Zookeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。Zookeeper 提供了一个类似于 Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。1、Zookeeper 角色Zookeeper 集群是一个基于主从复制的高可用集群,每个服务器承担如下三种角色中的一种。Leader1. 一个 Zookeeper 集群同一时间只会有一个实际工作的 .

2020-05-27 22:38:36 389

原创 分布式缓存

1、缓存雪崩 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库 CPU 和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。一般有三种处理办法: 1. 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。 2. 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。 3. 为 key 设置不同的缓存失效时间。2、缓存穿透 缓存穿透是指用.

2020-05-26 22:24:16 358

原创 微服务(配置中心、事件调度、服务跟踪、服务熔断、API管理)

1、配置中心配置中心一般用作系统的参数配置,它需要满足如下几个要求:高效获取、实时感知、分布式访问。 zookeeper 配置中心实现的架构图如下所示,采取数据加载到内存方式解决高效获取的问题,借助 zookeeper 的节点监听机制来实现实时感知。 配置中心数据分类2、事件调度(kafka) 消息服务和事件的统一调度,常用用 kafka ,activemq 等。 3、服务跟踪(starter-sleuth)随着微服务数量不断增长,需要跟...

2020-05-25 23:38:24 1079

原创 微服务(API网关)

API Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的Facade 模式很像。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。下图展示了一个适应当前架构的 API Gateway。API Gateway 负责请求转发、合成和协议转换。所有来自客户端的请求都要先经过 API Gateway,然后路由这些请求到对应的微服务。API Gateway 将经常通

2020-05-24 21:07:54 589

原创 微服务(服务注册发现)

服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。当下用于服务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等。服务注册有两种形式:客户端注册和第三方注册。1、客户端注册(zookeeper)客户端注册是服务自身要负责注册与注销的工作。当服务启动后向注册中心注册自身,当服务下线时注销自己。期间还需要和注册.

2020-05-24 14:21:42 598

原创 JAVA基础(java复制)

将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。所以大家知道了哈,这三种概念实际上都是为了拷贝对象。1、直接赋值复制 直接赋值。在 Java 中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说 a1 和 a2 指向的是同一个对象。因此,当 a1 变化的时候,a2 里面的成员变量也会跟着变化。 2、浅复制(复制引用但不复制引用的对象) 创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如..

2020-05-22 22:39:18 459

原创 JAVA基础(java序列化,创建可复用的java对象)

保存(持久化)对象及其状态到内存或者磁盘 Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。 序列化对象以字节数组保持-静态成员不保存 使用 Java 对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将.

2020-05-22 22:03:46 1217

原创 JAVA基础(java泛型)

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用 Java 泛型。 1、泛型方法(<E>)你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 // 泛型方法 printArraypublic static &lt.

2020-05-20 21:34:02 375

原创 JAVA基础(java内部类)

Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。 1、静态内部类 定义在类内部的静态类,就是静态内部类。public class Out { private static int a; private int b; public static class Inner { public void print() {...

2020-05-20 21:10:41 444

原创 JAVA基础(java注解)

Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该 Annotation 对象来获取注解中的元数据信息。1、4 种标准元注解元注解的作用是负责注解其他注解。 Java5.0 定义了 4 个标准的 meta-annotation 类型,它们被用来提供对其它 annotation 类型作说明。 @Target 修.

2020-05-17 20:08:48 434

原创 JAVA基础(java反射)

动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的 JavaScript 就是动态语言,除此之外 Ruby,Python 等也属于动态语言,而 C、C++则不属于动态语言。从反射角度说 JAVA 属于半动态语言。1、反射机制概念 (运行状态中知道类所有的属性和方法)在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调

2020-05-14 21:20:21 441

jt808netgate.zip

基于java开发,采用netty中间件解析JT808协议的原理及实现方式,解决平台与终端之间的数据传输问题。

2020-07-31

SpringCloud微服务架构视频

总教程为五十一节课,全面讲述了SpringCloud的原理及整体搭建过程,这次上传的为前面十二节课程,后期课程请关注后续的博客。

2020-07-23

空空如也

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

TA关注的人

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