- 博客(24)
- 资源 (35)
- 收藏
- 关注
原创 从头开始说SpringCloud
第一章微服务和微服务架构微服务和微服务架构是两个独立概念1,微服务 是关注某一个点,强调的是服务大小,是解决具体问题的一个应用服务。2,微服务架构是一种架构模式,它提倡将单一的应用程序划分成一组小的服务。关注的服务之间的相互协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中,服务与服务之间采用的是轻量级的通信机制互相协同(通常是基于HTTP协议的RESTful API),每个...
2019-03-17 18:44:23 195
原创 Java中常用的内存区域
Java中主要有四块内存空间,具体如下栈内存空间:保存所有对象的名称(更准确的说是保存了引用的对内存空间的地址)。 堆内存空间:保存的每个对象具体的属性内容。 全局数据区:保存static类型的数据。 全局代码区:保存所有的方法定义。...
2019-03-17 17:54:12 192
原创 请求转发forward和重定向sendredirect的区别以及内部实现机制
请求转发forward客户端发送一个请求A,服务器调用了servletA,servletA直接调转到了servletB,然后服务器直接将servletB的执行返回,客户端并不知道服务器内部的跳转,所以地址栏不会发生改变。请求重定向sendredirect客户端发送了一个请求A,服务端调用了response.sendRedirect("b")。这个命令的本质就是:写了一个响应头Locat...
2019-03-14 12:34:35 377
原创 个人对于session/cookie跟踪机制的理解
保存会话的状态有两种方式:session 和cookie,session是服务器端保存信息,cookie在客户端保存信息。本身session的跟踪机制就是要依赖于cookie,跟踪机制就是要来确定一个问题,哪个会话对应哪个session对象。在服务端,我们给每个 session对象创建一个独一无二的ID,然后把这个ID通过cookie写给了客户端,这个cookie并没有设定有效期,只在客户...
2019-03-14 12:18:48 447
原创 个人对Java多线程的理解
线程运行在进程中,一个进程中至少会有一个线程。当多个线程同时运行在一个进程中时,这就是一个多线程应用。每个线程的栈内存是对立的,也就是说一个线程一个栈,线程之间共享堆内存和方法区内存。当jvm调用main函数时会启动一个主线程,垃圾回收器GC是一个单独线程在运行。根据CPU的随机性原理,哪个线程获得到了cpu执行权,哪个线程就执行。有两种创建线程的方式。继承Thread 类子类重写run(...
2019-03-14 11:06:47 365
原创 抽象类和接口的区别
1.语法层面上的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法; 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的; 3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; 4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。2.设计...
2019-03-13 23:58:06 176
原创 HashMap的基本原理
一、HashMap原理1.1 HashMap特性? HashMap的特性:HashMap存储键值对,实现快速存取数据;允许null键/值;非同步;线程不安全;不保证有序(比如插入的顺序)。实现Map接口。HashTaber 是线程安全的。HashMap数据结构:数组+链表。HashMap里面有一个数组Node<K,V>[] 默认长度为16。存储的是K、V、next(No...
2019-03-13 23:31:30 5986
原创 什么是线程安全
线程安全就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。什么叫线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接...
2019-03-13 18:35:39 4509 1
原创 String 的重新认识,以及和StringBuffer的区别
1.String是一个常量,字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。采用了共享的设计模式,每一个JVM底层存在一个字符串的对象池,如果对象采用直接赋值的方式,字符串的内容会放入到常量池中,以供其他继续使用直接赋值的方式引用该对象。2.对于通过构造函数为字符实例化的理解。String str = new Strin("Hello"); //会在内存中创建两个对象。...
2019-03-13 18:32:44 164
原创 Java的多态性
1.多态性是面向对象程序设计的一个重要特征,是允许程序中出现重名现象。Java语言中含有方法重载与对象多态两种形式的多态。方法重载:在一个类中,允许多个方法使用同一个名称,但是每个方法参数不同,完成的功能也不同。方法重载和方法的返回值无关。 对象多态:子类对象可以和父类对象之间相互转换,而且根据使用子类的不同完成的功能也不同。其实就是父类的引用指向子类的对象。2.封装性封装对象的属性和...
2019-03-13 17:59:23 179
原创 Java抽象类和接口
1. Java抽象类可以有构造函数吗?可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造函数的作用是什么?好吧,它可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使你没有提供任何构造函数...
2019-03-08 00:08:15 143
原创 Spring事务
事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。一.事务的4个特性:原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性:执行事务前后,数据保持一致; 隔离性:并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的; 持久性:一个事务被提交之后。它对...
2019-03-08 00:02:56 218
原创 Spring事务隔离级别的几个概念 脏读、不可重复读、幻读
事务隔离级别。定义的是事务在数据库读写方面的控制范围。(在读取数据库的过程中,如果两个事务并发执行,那么彼此之间的数据是如何影响。脏读、不可重复读、幻读)发生脏读、不可重复读、幻读的原因是其他事务的执行打扰到了本事务的执行。脏读:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。...
2019-03-08 00:02:23 2162
原创 数据库索引基础
1、索引定义数据库能加快数据库的查询速度。索引是对数据库表中一个或多个列的值进行排序的结构。添加索引的列和未添加索引的列相比索引有助于更快地获取信息。2、建立索引的优缺点:优点: 1).大大加快数据的检索速度; 2).创建唯一性索引,保证数据库表中每一行数据的唯一性; 3).加速表和表之间的连接; 4).在使用分组和排序子句进行数...
2019-03-07 23:35:18 330
原创 Mybatis需要注意的问题
1、MyBatis框架适用场合:(1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。 (2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。2、#{}和${}的区别#{}是预编译处理,${}是字符串替换。 Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;...
2019-03-07 23:22:20 280
原创 Mybatis简介和优缺点
一、什么是Mybatis?Mybatis是一个半自动的ORM持久层框架,内部封装了JDBC。作为开发者只需要关注sql语句本身。Mybatis是通过xml或注解的方式将需要执行的各种statement配置起来。通过Java对象和statement中的sql动态参数映射生成最终执行的sql语句,最终由Mabtais框架执行sql并将结果映射为Java对象并返回。MyBatis 支持定制化 SQL...
2019-03-07 22:52:02 24145
原创 RESTful架构介绍
RESTful(即Representational State Transfer的缩写)其实是一个开发理念,是对http的很好的诠释,(或者说是HTTP通信的一套协议)。RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。1、对url进行规范,写RESTful格式的url非REST的url:http://........
2019-03-06 12:18:17 501
原创 Struts2和SpringMVC的不同
核心控制器不相同。SpringMVC使用的是servlet、Struts2使用的是Filetr SpringMVC 是基于方法设计、Struts2 是居于对象设计 理论上来说,SpringMVC速度会快一些。 Spring管理SpringMVC会比较简单一点。 SpringMVC是通过方法参数接收参数的,而Strus2是通过值栈(value stack)接收参数的。...
2019-03-06 00:09:38 185
原创 Spring Cloud 微服务的基础了解
1.SpringColud 是分布式微服务架构下的一站式解决方案,包括了服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件。2.SpringBoot专注于单个个体微服务,SpringCloud专注于全局微服务协调整理治理框架。SpringCloud是离不开SpringBoot的。3.SpringCloud采用的是HTTP的REST方式进行通信的。4.SpringColud的...
2019-03-05 23:57:40 192
原创 个人对于SpringBoot的理解
Spring Boot是一个能简化Spring体系应用开发的一个框架,是整个Spring技术栈的大整合,是J2EE的一站式解决方案。其遵循约定大于配置的原理,根据相关的框架约定,只需要在POM文件中简单引入相应的组件,配置文件中简单配置就能快随的创建出一个Spring容器体系下的J2EE应用。总的来说,Spring Boot在如下几个方面为我们带来了巨大的效能提升: 约定优于配置。按照S...
2019-03-05 23:49:27 3025
原创 数据库优化问题需要考虑的方面
(1)、根据服务层面:配置mysql性能优化参数;(2)、从系统层面增强mysql的性能:优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等。(3)、从数据库层面增强性能:优化SQL语句,合理使用字段索引。(4)、从代码层面增强性能:使用缓存和NoSQL数据库方式存储,如MongoDB/Memcached/Redis来缓解高并发下数据库查询的压力。(5)、减少数据库操作次...
2019-03-05 23:34:39 448
原创 浅谈我对Spring框架的理解(IOC/AOP)
java界乃由五大传统框架:1.核心业务层框架(地位不可动摇)Spring,2.控制层框架:SpringMVC与struts2,3.持久层框架:MyBatis,Hibernate。 先从spring说起吧,了解过spring的同学都知道,Spring是一个轻量级的IOC和AOP容器。 Spring的两大核心思想就是IOC(控制反转),DI(依赖注入),AOP...
2019-03-05 23:27:59 383
原创 数据库悲观锁
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的...
2019-03-05 22:50:14 585
原创 数据库乐观锁
乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突(A用户操作的时,没有任何人操作该条记录),在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。通常实现是这样的:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段,每操作一次,将那条记录的版本号加1。也就是先...
2019-03-05 22:45:31 1721
Java通过UA协议操作OPC的demo和客户端工具
2021-11-05
oracle数据库远程连接方式.zip
2019-12-10
Linux课程讲义(兼顾 大数据 JavaEE Python程序员).pdf
2019-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人