自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

物是人非,结局始终不美

欢迎志同道合的朋友和我交流哦

  • 博客(65)
  • 资源 (5)
  • 收藏
  • 关注

原创 MySQL常用的数据类型

MySQL常用的数据类型(一)概述MySQL数据库的数据类型主要是分为数值型,日期时间型以及字符串型这三个大类。MySQL支持所有标准SQL数值数据类型,这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。作为SQL标准的扩

2020-12-18 15:42:26 1186

原创 常常被忽略的hashCode方法

常常被忽略的hashCode方法(一)概述我们在编写Java程序时,一定会发现Object对象中有一个奇怪的方法:hashCode方法。我们平时很少会主动去调用这个方法,甚至可能有人完全没听说过这个方法。那么这个方法是干什么用的呢?我们可以来看官方文档对他的解释:hashCode通用约定:调用运行Java应用程序中的同一对象,hashCode方法必须始终返回相同的整数。这个整数不需要在不同的Java应用程序中保持一致。根据equals(Object)的方法来比较,如果两个对象是相等的,两个对象调

2020-12-17 20:17:20 1199

原创 从AQS到ReentrantLock核心源码分析

从AQS到ReentrantLock源码分析(一)概述Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。上图展现了AQS的全貌,可以发现还是非常复杂的。对于我们开发者来说,我们需要关注的是其中的API层中的方法,因为,这是我们自定义同步器需要重写的方法,因为我们需要写自己的逻辑来满足需求,其他方法都是A

2020-12-04 19:51:32 1161

原创 Java中线程池的使用和原理分析

Java中线程池的使用(一)概述我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolExecutor类中的方法讲起

2020-11-28 19:09:02 1140

原创 线程中必不可少的ThreadLocal

ThreadLocal详解(一)概述通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK中提供的ThreadLocal类正是为了解决这样的问题。 ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。(二)基本使用如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是ThreadLo

2020-11-20 16:31:24 1705 1

原创 自上而下拆解Volatile

自上而下拆解Volatile(一)概述上一篇文章中我们拆解讨论了synchronized关键字,这次我们来谈谈volatile关键字。个人认为,volatile比synchronized关键字更复杂,考的也更多。volatile关键字是Java中提供的一种解决可见性和有序性问题的方案,只能作用于变量(这点与synchronized不同,要注意)。在我的另一篇文章《原子性、可见性、有序性解决方案》里面大概提过一点关于volatile的知识,不过不是特别深入。另外,在看本文之前,极力推荐大家先去了解JMM

2020-10-26 13:51:28 1786

原创 Java中必不可少的泛型

Java中必不可少的泛型(一)概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来

2020-10-24 20:48:28 1754

原创 由浅入深Java的异常处理机制

由浅入深Java的异常处理机制(一)概述我们为什么要使用异常?首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率。虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位和作用。在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值。虽然可以解决异常问题,但是这样做存在几个缺陷:容易混淆。如果约定返回值为-11111时表示出现异常,那么当程序最后的计算结果真的为-1111呢?代

2020-10-22 21:20:49 1731

原创 自上而下拆解Synchronized

自上而下拆解Synchronized(一)概述Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:原子性:确保线程互斥的访问同步代码。可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的 “对一个变量unlock操作之前,必须要同步到主内存中,如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或assign操作初始化变量值” 来保证的

2020-10-15 17:40:51 2297 2

原创 Java后端自顶向下方法——TCP编程与I/O模型

Java后端自顶向下方法——网络编程初步(TCP与HTTP编程)(一)简述这是讲Tomcat高级篇的前奏曲,因为网络编程是Tomcat高级篇的基础之一,同时是我们必须要掌握的一项基本技能。很多人不重视网络编程,因为感觉他离我们很遥远,认为做开发不需要去关注这些过于底层的东西。其实不然,了解网络编程,可以帮助我们更好的理解Tomcat乃至于其他的WEB服务器的原理。我们经常会看到类似这种层次图,其中Socket、TCP和部分IP的功能都是由操作系统提供的,不同的编程语言只是提供了对操作系统调用的简单的

2020-09-27 20:24:24 2418

原创 Java后端自顶向下方法——过滤器与回调函数

Java后端自顶向下方法——过滤器与回调函数什么是函数回调?回调是作为参数传递给另一个函数的函数,在父函数完成后执行。这么一说可能有点抽象,我们不如通过看看过滤器的原理来研究什么是函数回调。我们来看看Tomcat中是如何实现过滤器的:我们可以看到,这个ApplicationFilterChain就是我们的过滤器链对象,里面保存了我们的过滤器和Servlet,doFilter方法用来切换到下一个过滤器,等所有过滤器都使用过一遍之后,最终会调用Servlet。在这里我们可以思考一个问题,既然我们的App

2020-09-22 09:32:59 3440 2

原创 Redis高可用进阶之哨兵机制原理

Redis高可用进阶之哨兵机制原理(一)概述上篇文章我们主要说了Redis主从复制的内容,但Redis主从复制有一个缺点,当Master宕机以后,我们需要人工解决,比如使用slaveof no one。实际上主从复制并没有实现真正的高可用。高可用侧重备份机器, 利用集群中系统的冗余,当系统中某台机器发生损坏的时候,其他后备的机器可以迅速的接替它来启动服务。很显然,我们需要一个机制来对主从复制进行增强,使得其真正可以做到高可用,于是哨兵模式就应运而生了。Redis Sentinel(哨兵)是一个分布式架

2020-09-18 09:33:50 3039 1

原创 从JDBC看双亲委派模型与SPI

从JDBC看双亲委派模型与SPI(一)概述Java本身有一套资源管理服务JNDI(Java naming and directory interface,Java命名和目录接口),是放置在rt.jar中,由启动类加载器加载的,JDBC也在其中,我们就以我们最熟悉的JDBC为例,来看看为什么JDBC要打破双亲委派模型。我们都知道,我们在使用JDBC时需要自己下载数据库厂商提供的数据库连接驱动jar包,这个jar包实际上就是Driver接口的实现类,下面是Driver接口:public interfac

2020-09-16 20:23:38 3211 1

原创 Redis高可用初步之主从复制原理

Redis高可用之主从复制(一)什么是主从复制主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点(master),后者称为从节点(slave)。数据的复制是单向的,只能由主节点到从节点。主节点负责写操作,从节点负责读操作。主从复制把数据复制多个副本部署到其他节点上,从而实现redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。简单来说...

2020-09-15 21:05:04 3032

原创 Java类加载机制由浅入深

Java类加载机制由浅入深(一)简述Java虚拟机把描述类的数据从.class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载过程。类加载具体指将代码编译后生成的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区(具体实现为元空间)内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。所以我们可以认为,类的加载的最终产品是位于堆区中的Class对象,Class对象封装了

2020-09-14 19:55:06 3136

原创 Redis重要特性

Redis特性(一)简介Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。Redis使用标准C编写实现,而且将所有数据加载到内存中,所以速度非常快。官方提供的数据表明,在一个普通的Linux机器上

2020-09-11 16:23:21 4366

原创 MySQL事务的四大特性及其实现方式

事务是MySQL区别于NoSQL的重要特征,是保证关系型数据库数据一致性的关键技术。事务可看作是对数据库操作的基本执行单元,可能包含一个或者多个SQL语句。这些语句在执行时,要么都执行,要么都不执行。MySQL事务包含四个特性:下面我们以InnoDB为例讲一下这四种特性及实现方式。事务的原子性就如原子操作一般,表示事务不可再分,其中的操作要么都做,要么都不做。如果事务中一个SQL语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。事务的原子性表明事务就是一个整体,当事务无法成功执行的时候,需要

2020-09-08 12:04:47 7684

原创 MySQL总体架构简述

MySQL总体架构简述(一)简介为什么我们需要先学习MySQL的基础架构先呢?原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题。我们学习MySQL的时候应该先从高纬度理解问题,最后看到里面有哪些组件,一层层的拆解,这样让我们对MySQL有更深入的理解。,我们先看MySQL总体的逻辑架构图,如下所示:观察图发现,MySQL主要可以分为两个个部分:Server层、存储引擎层。我们下面先大概看一下这两层的主要功能。从图中不难看出,不同的存储引擎共用一个Ser

2020-09-06 16:09:29 4435

原创 从B+树到MySQL索引

从B+树到MySQL索引(一)为什么是B+树许多人面试的时候可能会被问到这样一个问题:mysql数据库的索引的存储结构是什么?我相信百分之百的人都会回答说:是B+树!确实,因为这是一个非常非常基础的问题,但是能把背后原理说清楚的人应该是屈指可数,下面我们来了解为什么一定是B+树,而不是B树、二叉树、哈希之类的。1. 为什么不能用哈希...

2020-08-15 11:01:21 5812

原创 简述JVM中的垃圾回收机制

简述JVM中的垃圾回收机制(一)概述JVM垃圾回收机制是面试的重点也是难点,只要问到JVM,那么垃圾回收是必问的。JVM垃圾回收算法主要的几个核心点包括垃圾识别机制,垃圾回收算法,有时候也需要了解当今商用JVM使用的几种垃圾收集器和他们之间的区别。我们先来了解一下GC。 java相较于c、c++语言的优势之一是自带垃圾回收器,程序开发人员不用手动管理内存,内存的分配和释放完全由GC(Garbage Collector)来做,极大地提高了软件开发效率及程序健壮性(手动管理内存容易造成内存泄漏)。凡事皆有

2020-08-10 10:18:40 6279 1

原创 结构型模式——适配器模式

结构型模式——适配器模式(一)概述适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。例如,读卡器是作为内存卡和笔记本之间的适配器,我们将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。适配器模式一共有三个角色,从上面那个内存卡的例子也能看出来,主要分为:1. 目标(Target)接口:当前系统业务所期待的接口,可以是抽象

2020-08-01 17:09:44 5772

原创 Spring AOP的注解配置

Spring AOP的注解配置(一)简述上回我们说到了spring AOP的实现原理,我们发现其实通过自己编程来实现这个功能还是非常繁琐的。spring因此给我们提供了相应的配置方式,从而帮助我们简化开发过程,使我们的注意力能充分关注在业务逻辑上。在了解AOP的注解配置之前,我们先要来关注一下AOP中的一些专业术语:Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。Pointcut(切入点):所谓切入点是指我们

2020-07-30 10:45:11 6887

原创 创建型模式——原型模式

创建型模式——原型模式(一)概述原型模式指用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型实例指定了要创建的对象的种类,用这种方式创建对象非常高效,无须知道对象创建的细节。原型模式是在内存中二进制流的拷贝,要比直接new一个对象性能好很多,尤其是构造函数比较复杂,并且在循环体中生产出大量的对象时,用原型模式效率很高。说起原型模式的浅拷贝和深拷贝, 我们都知道浅拷贝是对值类型的成员变量进行复制, 对引用类型的变量只是对引用进行复制,实际上两个对象还是指向的同一

2020-07-28 16:18:38 6708

原创 从代理模式到Spring AOP原理

Spring AOP实现原理(一)简介Spring的核心是IOC与AOP,IOC主要是依赖关系的管理,包括依赖查询和依赖注入,在之前关于bean的文章中已经对bean的生命周期做了相对多的分析,基本了解了IOC的原理。在这里我们来探讨下AOP的实现原理。AOP(面向方面编程),也被称为面向切面编程。AOP技术利用一种称为“横切”的技术,解剖封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,这样就能减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP把软件

2020-07-23 09:41:58 6757

原创 创建型模式——建造者模式

创建型模式——建造者模式(一)概述建造者模式,又被称为生成器模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。使用多个简单的对象一步一步构建成一个复杂的对象,有点像造房子一样一步步从地基做起到万丈高楼。将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。...

2020-07-21 11:16:33 6669

原创 创建型模式——抽象工厂模式

创建型模式——抽象工厂模式(一)简述抽象工厂模式是一个超级工厂,用来创建其他工厂,这个工厂也被称为工厂的工厂。 这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。在抽象工厂模式中,接口负责创建相关对象的工厂,而不明确指定它们的类。 每个生成的工厂可以按照工厂模式提供对象。(二)特点抽象工厂模式是工厂方法模式的孪生兄弟。工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机等。我们可以把同种类称为同等级,也就是说:工厂方法模式只考虑生产同等级的产品,但是在

2020-07-20 19:17:44 6715

原创 原子性、可见性、有序性解决方案

原子性、可见性、有序性解决方案(一)原子性原子性是指:一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行。在Java中当我们讨论一个操作具有原子性问题是一般就是指这个操作会被线程的随机调度打断。JMM对原子性的保证大概分以下几种类型:java自带原子性、synchronized、Lock锁、原子操作类(CAS)。下面我们来一个一个细说。1. java自带原子性在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,但是long和double类型是64位,在32位JV

2020-07-11 09:38:27 8720 2

原创 创建型模式——工厂方法模式

创建型模式——工厂方法模式(一)概述工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method是一个类的实例化延迟到其子类。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。(二)模式组成在工厂方法模式中主要有以下几个角色:抽象工厂(Creator)角色:担任这个角色的是工厂方法模式的核心,它

2020-07-10 08:22:13 7309 1

原创 创建型模式——单例模式

创建型模式——单例模式(一)概述单例模式是最简单的设计模式之一,属于创建型模式,它提供了一种特殊的创建对象的方式,确保全局中只有单个对象被创建。这个设计模式主要目的是想在整个系统中只能出现类的一个实例,即一个类只有一个对象。单例模式可以非常有效地节约资源,主要有以下两点:由于频繁使用已经创建完成的对象,可以省略多次创建对象所花费的时间,这对于那些重量级的对象而言,效果非常明显。因为不需要频繁创建对象,GC压力也减轻了,而在GC中会有STW(stop the world),从这一方面也节约了GC

2020-07-09 10:19:51 7694

原创 JMM设计思路

JMM设计思路(一)为什么需要JMM下面为现代处理器架构模型图:当前的处理器架构大多是:多核+多级缓存+主存的模式,这样在多线程场景下就存在数据竞争从而造成缓存不一致的问题。另外,CPU可能会对程序进行优化,进行指令重排序,只要指令重排序后程序的语义没有发生变化,指令重排就是有可能发生的(编译器和JVM也存在指令重排),但这有时会让多线程执行的结果我们的出乎意料。对处理器来说,内存模型定义了充分必要条件,以保证其他处理器对内存的写入对当前处理器可见,而当前处理器的写入对其他处理器可见。一些处理器使

2020-07-07 09:10:55 7812

原创 Java对象的内存布局

Java对象的内存布局(一)简述曾经有这样一道面试题,问:Object ob = new Object()中的ob占几个字节。想回答这个题目就必须要知道Java对象的内存布局问题。对象布局研究的问题的实质就是看看java的对象在内存中是如何储存的,应该遵循什么样的格式。首先我们都知道,堆中存储的对象包括普通对象和数组对象,而每个对象在内存中都由三个部分组成,分别为对象头、实例数据和补齐部分。其中,普通对象的对象头中有markword和classPointer两个部分,而数组对象比普通对象多了一个数

2020-06-19 11:20:31 8442

原创 Java后端自顶向下方法——探索JDBC

Java后端自顶向下方法——探索JDBC(一)什么是JDBC学了这么久,我们终于走出了java后端的核心部分,到达了旁系知识点。也就是说,接下来的内容不再是java后端的专属内容了,普通java程序也可能会用到。废话不多说,这次讲的JDBC,全称Java Database Connectivity,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。既然是和数据库打交道的,那显然是很重要的,因为后端开发主要负责的就是业务和数据,业务就是指逻辑,而数据自然就是指数据库中存放的内容了,JDB

2020-06-17 22:01:50 8313

原创 JVM的内存分区

JVM内存模型(一)简述Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用户,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而创建和销毁。我们先来看一下JVM的内存分区:PS:JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代。元数据区的本质和永久代类似,都是对 JVM 规范中对方法区的实现。不过元数据区与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存

2020-06-01 09:22:33 9172

原创 锁与CAS机制

锁与CAS机制。

2020-05-30 11:26:57 10189 2

原创 Java后端自顶向下方法——Tomcat初步

Java后端自顶向下方法——Tomcat初步(一)了解Tomcat讲了这么多,终于讲到我们的Tomcat(不就是汤姆猫?我也不知道为啥要起这个名字)了。首先我们要明白Tomcat到底是什么?Tomcat其实就是就是一个Servlet容器。一个Servlet容器对于发送到每个Servlet的HTTP请求会完成以下事情:(1)当Servlet 第一次被调用的时候,加载了Servlet类并调用它的init方法(仅调用一次)(2)响应每次请求的时候,构建ServletRequest和ServletRespo

2020-05-27 20:12:50 9120

原创 Java后端自顶向下方法——过滤器与监听器

Java后端自顶向下方法——过滤器与监听器(一)过滤器有什么用当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回一个响应。当资源处理器完成了对资源的处理后,响应信息将逐级逆向返回。同样在这个过程中,用户可以修改响应信息,从而完成一定的

2020-05-25 22:22:04 9122

原创 Spring IOC的注解配置

Spring IOC的注解配置(一)简述上回说到,我们可以使用书写XML配置文件的方式来让spring产生我们需要的Bean对象,并放入容器中。但是,书写配置文件是一件非常繁琐的事情,而且一旦配置文件内容很多,阅读起来也是一件让人头疼的事,所以,我们急需一种部分或者完全摆脱配置文件的配置方式。下面我们就来看看spring的注解配置方式。注解配置和用配置文件配置相比,只是配置的形式不一样,最终达到的目的是基本相同的。就好比坐飞机去北京和坐高铁去北京,虽然使用的交通工具不一样,但是都达到了去北京的目的。

2020-05-13 15:11:43 10393

原创 Spring IOC中的Bean对象

Spring IOC中的Bean(一)Bean是什么突然发现提到了好多次Bean,居然忘记了讲Bean是什么。没事,现在讲也不晚。Java中的Bean是一种规范,是一种特殊的java类。所以我们先来看看Bean的规范。Bean必须生成public class类。所有属性必须封装,Bean类的属性都为private。属性值应该通过一组方法(getXxx 和 setXxx)来访问和修改。...

2020-05-11 16:13:15 10268

原创 Java后端自顶向下方法——从这里起步

Java后端自顶向下方法——从这里开始(一)写在前面为什么我突然想要写这个java后端的系列博客?可能也算是心血来潮吧。但是,我不是作为一个技术大牛或者专业的计算机科学家来写这些文章,我是作为一个普通的学习者来记录我学习过程中的点点滴滴。读过大学的朋友们可能会有这种感觉,某个知识点,学校的特聘教授两个小时都没能把你教会,结果你的舍友花了不到半小时就让你完全弄懂了这个知识点。是教授的专业水平不...

2020-05-06 14:20:55 10820

原创 Java后端自顶向下方法——一切从HTTP开始

Java后端自顶向下方法——一切从HTTP开始(一)为什么要先学HTTP请求HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。很显然,HTTP协议是客户端与服务端之间通信的一个重要桥梁。可见其重要性。在这个技术日新月异的时代,1991年就已经发布的H...

2020-05-06 14:18:53 10862

苏州大学计算机组成题库.zip

通过计算机组成考试最简单的方法就是刷完这20套题库。如果考不过你找我,我替你考(开玩笑)。

2020-06-14

tensorflow分类应用(MNIST手写数字识别)

tensorflow分类应用(MNIST手写数字识别)的jupyter笔记

2019-05-02

Tensorflow多变量线性回归(房价预测)

Tensorflow多变量线性回归(房价预测) 。。

2019-04-22

tensorflow单变量线性回归(一次函数拟合)

tensorflow单变量线性回归(一次函数拟合)的jupyter笔记

2019-04-20

Tensorflow基础概念

Tensorflow基础概念的jupyter笔记。。

2019-04-20

空空如也

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

TA关注的人

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