物是人非,结局始终不美

欢迎志同道合的朋友和我交流哦
私信 关注
.SOLO.
码龄2年

如果世界上真的有奇迹,那一定是努力的另一个名字

  • 568,277
    被访问量
  • 64
    原创文章
  • 15,460
    作者排名
  • 895
    粉丝数量
  • 于 2018-12-02 加入CSDN
获得成就
  • 获得133次点赞
  • 内容获得28次评论
  • 获得151次收藏
荣誉勋章
兴趣领域
  • #后端
    #分布式#Spring Boot#Spring#Java#Linux#架构#MySQL
TA的专栏
  • Java多线程与高并发
    7篇
  • JVM概述
    5篇
  • Java后端自顶向下方法
    9篇
  • Java核心基础知识
    3篇
  • Spring技术分析
    5篇
  • MySQL数据库原理
    4篇
  • Java设计模式
    6篇
  • Redis缓存技术
    4篇
  • Hyperledger Fabric
    1篇
  • Tensorflow
    5篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

MySQL常用的数据类型

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

常常被忽略的hashCode方法

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

从AQS到ReentrantLock核心源码分析

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

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

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

线程中必不可少的ThreadLocal

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

自上而下拆解Volatile

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

Java中必不可少的泛型

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

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

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

自上而下拆解Synchronized

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

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

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

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

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

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

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

从JDBC看双亲委派模型与SPI

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

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

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

Java类加载机制由浅入深

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

Redis重要特性

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

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

MySQL事务的四大特性及其实现方式(一)简述事务是MySQL区别于NoSQL的重要特征,是保证关系型数据库数据一致性的关键技术。事务可看作是对数据库操作的基本执行单元,可能包含一个或者多个SQL语句。这些语句在执行时,要么都执行,要么都不执行。MySQL事务包含四个特性:原子性(Atomicity):语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的。实现主要基于undo log日志。持久性(Durability):保证事务提交后不会因为宕机等原因导致数据丢失。实现主
原创
4256阅读
0评论
1点赞
发布博客于 5 月前

MySQL总体架构简述

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

从B+树到MySQL索引

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

简述JVM中的垃圾回收机制

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

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

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

Spring AOP的注解配置

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

创建型模式——原型模式

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

从代理模式到Spring AOP原理

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

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

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

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

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

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

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

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

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

创建型模式——单例模式

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

JMM设计思路

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

Java对象的内存布局

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

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

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

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

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

JVM的内存分区

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

锁与CAS机制

锁与CAS机制(一)锁的代价和无锁的优势锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态的锁虽然避免了这些问题,但是其实它们只是在没有真实的竞争时才有效。JDK1.5之前都是靠syn
原创
8818阅读
0评论
1点赞
发布博客于 9 月前

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

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

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

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

Spring IOC的注解配置

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

Spring IOC中的Bean对象

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

Spring IOC与工厂模式

Spring IOC与工厂模式PS:本文内容较为硬核,需要对java的面向对象、反射、类加载器、泛型、properties、XML等基础知识有较深理解。(一)简单介绍在讲Spring IOC之前,有必要先来聊一下工厂模式(Factory Pattern)。工厂模式可将Java对象的调用者从被调用者的实现逻辑中分离出来。工厂模式是Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式...
原创
10672阅读
2评论
5点赞
发布博客于 9 月前

Java后端自顶向下方法——JSON与HTTP

Java后端自顶向下方法——JSON与HTTP(一)为什么是JSON为什么JSON会与HTTP有联系?他们两个又有什么联系呢?我们来想一想HTTP到底是干嘛的?对,就是传递数据嘛,这个问题是个人都知道。那么问题来了,HTTP是怎么传递数据的?或者说他通过什么方式传递数据?你一定会说用HTTP参数传递就行了呗,没错,这是一个办法,而且很简洁。比如我要做一个用来登录的API,我们的请求URL就可...
原创
10331阅读
0评论
1点赞
发布博客于 9 月前

Redis数据类型及编码

Redis五大数据类型(一)String 字符串string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的,意思是redis的string可以包含任何数据,比如图片或者序列化的对象 。string类型是redis最基本的数据类型,一个键最大能存储512MB的数据。String 数据结构是简单的 key-value 类型,value 不仅可以是 Strin...
原创
10277阅读
0评论
1点赞
发布博客于 10 月前

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

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

Java后端自顶向下方法——Servlet规范

Java后端自顶向下方法——Servlet规范(一)简单介绍Servlet是啥?Servlet是Sun公司提供的一门用于开发动态web资源的技术,按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。但是实际上,真正意义上的Servlet只是一个接口而已,并没有实现。我们来看看Servlet所在的层级。很显然,Servlet位于Service...
原创
10277阅读
0评论
0点赞
发布博客于 9 月前

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

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

Hyperledger Fabric1.4.4源码编译安装

Hyperledger Fabric1.4.0安装教程(无需代理)最近,为了模拟真实的部署环境,我又在自己的centos8虚拟机中安装了Hyperledger Fabric1.4.0,因为懒得装科学上网工具,所以自己研究了一下如何不用代理来安装,过程还是非常简单的,不过为了自己以后安装方便也为了一些安装出现问题的朋友,顺手写一篇博客记录一下安装过程。本文基于centos8进行安装,并且无需代理。...
原创
11182阅读
0评论
1点赞
发布博客于 11 月前

C++的静态成员变量和静态成员函数

C++的静态成员变量和静态成员函数静态成员变量和静态成员函数算是C++面向对象编程中的一个重点和难点,这里的静态具体指什么呢?与普通的成员变量和成员函数相比,静态成员函数和静态成员变量是属于类的,而不是属于对象的,也就是说,在类实例化为对象之前,静态成员变量和静态成员函数就已经分配了内存空间了,而普通成员函数和成员变量只有在对象产生之后才会分配空间。下面我们来详细看看他们的用法(一)静态成员变...
原创
10487阅读
0评论
4点赞
发布博客于 2 年前

python实现Hyperlink-Induced Topic Search算法

python实现Hyperlink-Induced Topic Search算法Hyperlink-Induced Topic Search是一个网页重要性的分析的算法。用户输入关键词后,算法对返回的匹配页面计算两种值,一种是枢纽值(Hub Scores),另一种是权威值(Authority Scores),这两种值是互相依存、互相影响的。所谓枢纽值,指的是页面上所有导出链接指向页面的权威值之和...
原创
10837阅读
0评论
1点赞
发布博客于 2 年前

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

tensorflow分类应用(MNIST手写数字识别)本博客为本人自己整理的jupyter笔记,现在以图片形式上传,所以仅供预览。需要下载ipynb文件的朋友可以关注我并找到我上传的资源。好了,本教程就到此结束啦,喜欢的小伙伴记得点赞哦,也欢迎志同道合的朋友们关注我和我一起交流。2019年4月26日...
原创
10341阅读
0评论
1点赞
发布博客于 2 年前

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

tensorflow分类应用(MNIST手写数字识别)的jupyter笔记
ipynb
发布资源于 2 年前

python基于词向量的古诗生成器

python基于词向量的古诗生成器from gensim.models import Word2Vec # 词向量from random import choicefrom os.path import existsimport warningswarnings.filterwarnings('ignore') # 不打印警告class CONF: path = '古诗...
原创
11481阅读
0评论
1点赞
发布博客于 2 年前

python基于urllib的查快递工具

python查快递代码import urllib.requestimport jsondef Check(): while True: kd_num = input("请输入快递单号:") url_type = 'http://www.kuaidi100.com/autonumber/autoComNum?resultv2=1&text=...
原创
10373阅读
2评论
2点赞
发布博客于 2 年前

tensorflow-gpu/cpu 1.13.1环境搭建

tensorflow-gpu/cpu 1.13.1 安装教程安装Anconda集成开发环境下载Anconda安装Anconda安装visual studio和cuda安装visual studio安装cuda安装cudnn配置Anconda测试结束语安装Anconda集成开发环境前不久,google公司刚刚发布了tensorflow的最新版本1.13.1,相信有不少朋友已经升级了这个新版本了....
原创
28389阅读
2评论
7点赞
发布博客于 2 年前

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

Tensorflow多变量线性回归(房价预测) 。。
ipynb
发布资源于 2 年前

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

Tensorflow多变量线性回归(房价预测)本文章为本人自己写的jupyter笔记,图片显示有一点问题(下面的每个图片都变成同一张图片),所以仅供预览。需要下载ipynb文件的朋友可以关注我并找到我上传的资源。...
原创
11064阅读
3评论
2点赞
发布博客于 2 年前

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

tensorflow单变量线性回归(一次函数拟合)的jupyter笔记
ipynb
发布资源于 2 年前

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

tensorflow单变量线性回归(一次函数拟合)本文章为本人自己写的jupyter笔记,图片显示有一点问题(下面的每个图片都变成同一张图片),所以仅供预览。需要下载ipynb文件的朋友可以关注我并找到我上传的资源。...
原创
10517阅读
0评论
2点赞
发布博客于 2 年前

Tensorflow概念详解

Tensorflow基础概念本文章为本人自己写的jupyter笔记,图片显示有一点问题(下面的每个图片都变成同一张图片),所以仅供预览。需要下载ipynb文件的朋友可以关注我并找到我上传的资源。...
原创
10286阅读
0评论
1点赞
发布博客于 2 年前

Tensorflow基础概念

Tensorflow基础概念的jupyter笔记。。
ipynb
发布资源于 2 年前

C++面向过程与static关键字

C++面向过程与static关键字(一)隐藏在我们进行多文件操作时,没有加static的全局变量和函数都具有全局可见性,即在每个文件中都可以使用,如果我们加了static,就会对其它源文件隐藏,即只可在本文件中使用,利用这一特点可以在不同的文件中定义同名函数和变量,而不需要担心命名冲突。下面我们举例看看。这是一个全局变量:int a = 5;这是一个静态全局变量:static int...
原创
11249阅读
0评论
1点赞
发布博客于 2 年前

python基于余弦相似度Cosine Similarity的检索系统

python基于余弦相似度Cosine Similarity的检索系统下面是源码,不足之处请提出并指正:import jiebax = input("输入关键词:")#输入关键词seg_list1 = jieba.cut(x, cut_all=True)a = "/".join(seg_list1)a = a.split("/")listx = list(a)#关键词分词...
原创
14686阅读
0评论
2点赞
发布博客于 2 年前

C++漫谈指针运算

C++漫谈指针运算首先我问大家一个问题:指针为什么要有自己的类型?前不久我也问过自己同样的问题,你想,既然指针存储的是一个地址,即一串十六进制的数字,那他完全可以没有类型,因为地址又不会有什么和数据类型有关的差异。后来联想到指针运算才想明白这个问题。那么,什么是指针运算呢?指针作为一个变量当然也可以进行运算,但是他的运算方式与普通运算不同,我们先来看一个例子:#include <io...
原创
15121阅读
7评论
7点赞
发布博客于 2 年前

C++漫谈引用

C++漫谈引用引用的概念引用是c++的新特性,其本质是一个指针常量,实际是某一变量的别名,对引用操作相当于对变量直接操作。引用的声明方法:类型标识符 &引用名=目标变量名例如:int a = 5;int& a_ = a;使用引用的注意点:(1)&在此不是求地址运算符,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进...
原创
14884阅读
0评论
3点赞
发布博客于 2 年前

C++漫谈指针

C++指针与指针运算(一)指针的概念概括指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,所以我们可以把它简单滴认为是一个只能存储地址的变量。如果要搞懂指针,我们需要搞懂三方面内容:指针的类型指针所指向的类型指针的值指针本身所占据的内存区。比如看这段代码来理解指针的类型:int* p = &m;这时,指针的类型就是int*,其实就是指针名前面的东西...
原创
15064阅读
0评论
4点赞
发布博客于 2 年前

C++的this指针

C++的this指针当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向你这个实例本身。C++在初始化对象时,每个对象中的数据成员都会得到系统分配的自己独立的存储空间。对于成员函数来说,一个函数的代码段在内存中只有一份,同一个类中的不同对象在调用自己的成...
原创
15223阅读
0评论
4点赞
发布博客于 2 年前

C++的构造函数和默认构造函数详解

C++的构造函数和默认构造函数今天学习c++时突然感觉自己对构造函数和默认构造函数的区别有些分不清,于是查找了各大网站将资料汇总一下,供自己和其他朋友们参考。构造函数是c++的类在构造对象时调用的函数,此函数没有返回类型。默认构造函数是未提供显式初始值时用来构建对象的构造函数。其实这个定义并没有告诉我们什么,真正想要搞懂还是要看代码,从代码的区别来体会他们两个之间的差异。class ...
原创
19411阅读
5评论
21点赞
发布博客于 2 年前

从“点卡改月卡”谈电子游戏产业中的道德困境

从“点卡改月卡”谈电子游戏产业中的道德困境几个月前,延续了13年之久的国服《魔兽世界》点卡制迎来了终止。虽然在两年前官方就预告了这一结果,但当这一刻来临的时候,轩然大波依然再次被激起,在微博,在NGA,在贴吧,在知乎,无数的玩家激烈地表达自己的情绪与观点。  如今几个月过去了,尘埃落定,该玩的玩,不玩的也早不玩了,争议与批判已经消散。在这个时候,笔者作为曾经的游戏从业者,回过头给大家梳理一下这...
转载
18880阅读
1评论
4点赞
发布博客于 2 年前

教你用python几十行代码编写对话机器人

教你用python几十行代码编写对话机器人最近闲来无事,就自己写点代码弄了一个对话机器人。当然,这个机器人是基于图灵机器人这个平台的接口的,因为对于我这个小白来说自己编写一个机器人代码还是颇有难度啊哈哈。说实话这个机器人小姐姐还是有点高冷呢(对了,悄悄告诉你们,机器人的性别、名字和年龄都是可以修改的哦,大家赶快自己去看看吧)好了,废话不多说,我们先来看看这个机器人是怎么实现的吧。首先我...
原创
20605阅读
0评论
5点赞
发布博客于 2 年前

人工智能浪潮下的人类究竟该何去何从

人工智能浪潮下的人类究竟该何去何从在文章的开头我先抛出两个问题:在人工智能的浪潮下,未来的我们将要面对的是一个什么样的世界?这个世界又会对我们产生什么影响呢?**斯坦福教授卡普兰做了一项统计,美国注册在案的720个职业中,将有47%被人工智能取代。在那些以低端技术、体力工作为主的国家,这个比例可能超过70%。花旗预计,2015——2025这十年间欧美银行将裁员30%,数量最多达到170万人...
原创
19161阅读
0评论
2点赞
发布博客于 2 年前

乱象丛生or一路光明,看SSD市场发展现状

乱象丛生or一路光明看SSD市场发展现状**近年来,SSD固态硬盘的涌现无疑是主存储技术上的重大突破,它对传统的机械存储是具有颠覆性及破坏性,尤其体现在家用消费领域里。SSD任凭着革命性的多任务处理能力,卓越的读写性能带给用户极速的传输体验。正是因为如此,SSD固态硬盘已经成为PC用户新宠,被众多用户定义为:2018年最值得投资的DIY硬件。SSD这一块蛋糕很大,市场尚未成熟,分蛋糕者非常之多...
原创
18565阅读
0评论
2点赞
发布博客于 2 年前