自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Baron

If you do not do well, it will be the greatest harm to love.

  • 博客(124)
  • 资源 (1)
  • 收藏
  • 关注

原创 单例模式

趁有闲暇回顾一下单例模式:饿汉模式---线程安全package com.mmall.concurrency.example.singleton;//饿汉模式//在类加载时就完成了初始化,所以类加载较慢,但是获取对象的速度快public class Singleton { //用静态变量来存储唯一实例 private static final Singleton i...

2019-09-18 19:47:21 461

原创 Dubbo调用流程

近一段时间疏于总结,罪过罪过。今天重温一下Dubbo的调用流程,如下图所示:Provider 第 0 步,start 启动服务。 第 1 步,register 注册服务到注册中心。 Consumer 第 2 步,subscribe 向注册中心订阅服务。 注意,只订阅使用到的服务。 再注意,首次会拉取订阅的服务列表,缓存在本地。 【异步】第 3 步...

2019-09-11 15:09:03 1494

原创 基于redis实现token验证用户是否登陆

基于项目需求, 我们要实现一个基于redis实现token登录验证,该如何实现呢:后端实现:1.引入redis相关的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...

2019-07-28 23:38:58 2372 1

原创 RabbitMQ浅析

最近接触到了RabbitMQ,便来总结一下。1.什么是RabbitMQ?采用AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦。2.为什么要使用RabbitMQ?它有一系列的优势,诸如:(1)在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;(2)在...

2019-06-28 15:39:18 173 2

原创 Java反射

一.Class类大家都知道,Java是一门面向对象的语言,而面向对象可谓是“万物皆对象”,我们都知道可以通过new关键字得到一个类的实例化,也就是一个对象。一个类是否也是一个对象呢?答案是肯定的,一个类也是一个对象,是java.lang.Class类的实例对象。Java官方称这种是一个类的对象为“类的类类型”,我们可以有三种方法得到一个类的类类型: A a1 = new A(); ...

2019-05-08 16:36:53 134 4

原创 Redis持久化及相关配置

Redis提供了不同的持久化选项:RDB持久化,数据集的时间点快照 AOF持久化,服务器收到的每一个写操作 可以同时使用AOF和RDB。在这种情况下,当Redis重启的以后,AOF将用于重新构建原始数据集,因为它保证是最完整的数据。RDB的优点:RDB是数据的时间点快照。对于备份而言,RDB文件是完美的。你可能想要归档最近的24小时内每个小时的RDB文件,并且每个归档保存30天。这允...

2019-11-19 09:44:38 226

原创 Springboot的actuator监控

在生产环境中,需要实时监控程序的可用性,出现问题之后我们需要快速定位,spring-boot 的 actuator 功能提供了很多监控所需的接口。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、健康检查、相关功能统计等;方便运维人员查看spring boot的运行状况。使用actuatorspring boot为actuator提...

2019-10-30 18:50:59 305

原创 彻底弄懂CAS(比较并交换)

什么是CAS?我们在使用锁时,线程获取锁是一种悲观锁策略,即假设每一次执行临界区代码都会产生冲突,所以当前线程获取到锁的时候同时也会阻塞其他线程获取该锁。而CAS操作(又称为无锁操作)是一种乐观锁策略,它假设所有线程访问共享资源的时候不会出现冲突,既然不会出现冲突自然而然就不会阻塞其他线程的操作。因此,线程就不会出现阻塞停顿的状态。那么,如果出现冲突了怎么办?无锁操作是使用CAS(compare...

2019-10-03 19:06:58 2763 9

原创 MySQL索引再回顾

索引,类似于书籍的目录,想找到一本书的某个特定的主题,需要先找到书的目录,定位对应的页码。MySQL 中存储引擎使用类似的方式进行查询,先去索引中查找对应的值,然后根据匹配的索引找到对应的数据行。索引有什么好处?提高数据的检索速度,降低数据库IO成本:使用索引的意义就是通过缩小表中需要查询的记录的数目从而加快搜索的速度。 降低数据排序的成本,降低CPU消耗:索引之所以查的快,是因...

2019-09-11 15:46:56 159

原创 SpringMVC数据校验

永远不要相信用户的输入,我们开发的系统凡是涉及到用户输入的地方,都要进行校验,这里的校验分为前台校验和后台校验,前台校验通常由javascript来完成,后台校验主要由java来负责,这里我们可以通过spring mvc+hibernate validator。数据校验在java中有一个bean validation的数据验证规范,该规范的实现者有很多,其中hibernate validato...

2019-07-14 21:33:03 393 1

原创 RMI和RPC比较

大家应该都是知道,节点通信是分布式架构的核心之一,那我们来理解一下远程方法调用的相关的RMI和RPC。RMI是什么RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的...

2019-07-07 20:03:11 1989 2

原创 从容器到K8S

容器技术容器是一种轻量级操作系统层面的虚拟机,它为应用软件及其依赖组件提供了一个资源独立的运行环境。应用软件所依赖的组件会被打包成一个可重用的镜像,镜像运行环境并不会与主操作系统共享内存、CPU和硬盘空间,由此也保证了容器内部的进程与容器外部进程的独立关系。容器和虚拟机虚拟机,类似于“子电脑”在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,...

2019-07-02 16:59:15 239 1

原创 Redis浅析

最近回顾了一下Redis,权且总结一下:NoSQL要了解Redis,最好先了解NoSQL(not only sql),泛指非关系型数据库,它包括Redis、MongodDB等。NoSQL的出现绝非偶然,它是为了应对关系型数据库在Web2.0时代出现的数据超大规模、高并发、sns动态网站等新的需求的吃力表现而出现的。NoSQL有高并发读写、可以对海量的数据进行高效率的存储和访问、具有良好的高...

2019-06-29 21:06:28 168 3

原创 Session浅析

最近回顾了一下Session,权且总结一下:什么是Session?1.本意即是“会话”,是指从一个浏览器窗口打开到关闭这个期间。2.有时候也仅仅指一次连接。3.当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义。4.session在web开发语境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案。5.有时候s...

2019-06-29 09:30:40 172 2

原创 thymeleaf常用属性

th:each该属性较为常用,比如从后台传来一个对象集合那么就可以使用此属性遍历输出,它与JSTL中的<c: forEach>类似,此属性既可以循环遍历集合,也可以循环遍历数组及Map。循环listcontroller构建list数据@RequestMapping(value="/users")public String selectAllUser (Model model)...

2019-06-23 21:54:28 368 2

原创 Mybatis一级缓存

缓存查询缓存主要是为了提高查询访问速度,即当用户执行一次查询后,会将该数据结果放到缓存中,当下次再执行此查询时就不会访问数据库了而是直接从缓存中获取该数据。 如果在缓存中找到了数据那叫做命中。 在mybatis中有一级缓存和二级缓存两种缓存方式。一级缓存MyBatis的一级查询缓存(也叫作本地缓存)是基于org.apache.ibatis.cache.impl.PerpetualCache ...

2019-06-16 19:21:05 198 2

原创 原型模式

最近重温了一下原型模式,想和大家分享一下。假设我们要实现这样一个场景:齐天大圣吹毫毛会出现很多分身,每个分身都是有自己的金箍棒的,而齐天大圣继承猴子类,而猴子有自己的身高、体重和生日的属性。首先,我们要创建一个monkey类:package deep;import java.util.Date;public class Monkey { public int height;...

2019-06-04 16:29:43 146 1

原创 Redis与NoSQL

介绍Redis之前,先了解下NoSQL (Not noly SQL)不仅仅是SQL属于非关系型数据库;Redis就属于非关系型数据库传统的Mysql ,oracle ,sql server 等 都是关系型数据库为什么需要NoSQL,主要应对以下问题,传统关系型数据库力不从心High performance -高并发读写Huge Storage-海量数据的高效率存储和访问High Sc...

2019-05-19 20:43:13 253 5

原创 Spring MVC的异常处理简析

在Spring MVC中也可以进行一些异常的处理,常用的方式有三种:使用spring mvc中的异常处理器 SimpleMappingExceptionResolver 使用自定义异常处理器 使用异常处理注解SimpleMappingExceptionResolver当系统出现异常之后,我们可以让spring mvc跳转到指定的jsp中,这样子对于用户来说体验比较好,对于开发者来说也...

2019-04-28 21:26:06 143 5

原创 JAVA多线程浅析

什么是多线程Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的...

2019-04-21 20:49:07 193 2

原创 mybatis之缓存

缓存查询缓存主要是为了提高查询访问速度,即当用户执行一次查询后,会将该数据结果放到缓存中,当下次再执行此查询时就不会访问数据库了而是直接从缓存中获取该数据。 如果在缓存中找到了数据那叫做命中。 在mybatis中有一级缓存和二级缓存两种缓存方式。一级缓存MyBatis的一级查询缓存(也叫作本地缓存)是基于org.apache.ibatis.cache.impl.PerpetualCac...

2019-04-14 20:50:03 217 2

原创 java基础之break和continue

breakbreak是java语言中的关键字,中文是打断,终止的意思可以用在switch语句中,结束分支语句,防止case穿透现象的发生. 可以出现在循环当中,作用是结束整个循环的执行,默认情况下结束离它最近的一个循环. for(int i=0;i<10;i++){ System.out.println(i); if(i==5){ break; ...

2019-03-31 21:42:36 403 1

原创 springboot之starter

创建starter模块创建的starter模块是一个空的jar包,里面只是做依赖管理,使用者只需将starter引入即可使用。创建一个starter模块,命名为monkey1024-spring-boot-starter在starter模块中加入autoconfigure模块的依赖 <!--autoconfigure自动配置模块--> <depen...

2019-03-24 21:30:37 204 1

原创 浅析spring-boot 的 actuator 功能

在生产环境中,需要实时监控程序的可用性,出现问题之后我们需要快速定位,spring-boot 的 actuator 功能提供了很多监控所需的接口。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、健康检查、相关功能统计等;方便运维人员查看spring boot的运行状况。使用actuatorspring boot为actuator提...

2019-03-17 21:40:49 1606 1

原创 spring boot配置拦截器和过滤器

拦截器自定义一个普通的拦截器这里就跟以前一样创建一个普通的拦截器import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;im...

2019-03-10 21:31:08 276 1

原创 浅谈数据库引擎

以Mysql为例,我们知道,有几种不同的数据库引擎,那我们就有疑问了:(1)为什么要合理选择数据库存储引擎:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL...

2019-03-03 21:20:38 999 1

原创 浅析Spring家族的前世今生

大家在开发Java的项目中常常不可避免的用到Spring框架相关的技术,那么你了解Spring家族了解多少呢? Spring Spring可以的简单定义它为一个轻量级的控制反转(IoC)、面向切面(AOP)的容器的Java 开发框架。 SpringMVC   在此我觉得分开讲Spring与mvc可以更好地解释什么是SpringMvc:MVC为现代web项目开发的一种...

2019-02-22 21:08:00 560 1

原创 风雨砥砺,岁月如歌------泛型小探索

泛型的概念在编写集合相关代码时在eclipse里面总有一些黄色警告,在不使用注解的情况下,使用泛型之后,就不会有这些黄色警告了。通过API可以看到Collection,List,ArrayList,这几个类里面都有,这个就是泛型,里面的E可以是任何引用数据类型,使用泛型指明了数据类型之后,这个集合里面只能存储这种数据类型的对象。不使用泛型时,要进行多次类型强制转换package b...

2019-02-17 19:48:35 191 1

原创 初解ionicPlatform

$ionicPlatform$ionicPlatform 用来检测当前的平台,以及诸如在PhoneGap/Cordova中覆盖Android后退按钮。方法onHardwareBackButton(callback)有硬件的后退按钮的平台,可以用这种方法绑定到它。参数 类型 详情 callback function 当该事件发生时,触发回调函...

2019-02-10 21:32:18 451 1

原创 岁月如歌------我的年终总结

 时光荏苒,白云苍狗,一年时间又过去了。对的,就是么快,这一年我的成长呢?参加的社会考试圆满的完成了自考的毕业答辩,以前因为种种愿意没有通过的软考这次也考过了,感觉还是蛮开心的。这也让我更加懂得了,付出总是有回报的,而且考试是为了检验一下自己一段时间的学习,也没必要太苛求自己,按照米老师教导的来就好啦。参加的项目参加ITOO一代交接文档的编写,参加了ITOO第二版教务的开发...

2019-01-30 20:02:17 329 7

原创 ionic再探索

 AngularJS简介:AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使用HTML声明动态内容。AngularJS有五个主要核心特性,如下介绍:双向数据绑定—— 实现了把model与view完全绑定在一起,model变化,view也变化,...

2019-01-27 21:38:10 180 8

原创 Angular之管道

我们在网站开发时,需要读取后端的接口进行视图层的数据展示。我们经常会遇到接口给予我们的值不是最终展现的数据,例如:后端返回的金额是number类型额数据,我们需要遇到千分位用逗号隔开(10000 -&gt; 10,000),重量10000g转成10kg等,这些需要前端把数据进行简单的转换成对用户友好的格式。在angular6中pipe便发挥这样的作用,熟悉vue的同学会感觉非常类似vue中的com...

2019-01-20 19:56:50 387 5

原创 ionic小试

1.npm安装1 sudo&nbsp;apt-get&nbsp;install&nbsp;&nbsp;npm由于墙的问题,可能会出现问题&nbsp;2.nodejs安装1 sudo&nbsp;apt-get&nbsp;install&nbsp;&nbsp;nodejs 3.cordova和ionic安装  1 sudo&nbsp;npm&nbsp;install&nbsp;-g c

2019-01-13 20:09:13 173 3

原创 springboot理解

什么是spring bootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(...

2019-01-06 19:48:40 259 2

原创 RequestMapping

最近在学习spring mvc的时间常常遇到RequestMapping,便小小的整理一下通配符在RequestMapping中我们可以使用*号表示通配符从而匹配一系列的请求:@RequestMapping("/test*.do")表示请求的url中只要是以test开头就可以被当前方法处理。@RequestMapping("/*test.do")表示请求的url中只...

2018-12-30 20:59:56 1421 2

原创 sql之聚合函数

最近忙里头像,温习了一下聚合函数聚合函数在计算时会自动忽略空值,不用手动写sql将空值排除。聚合函数不能直接写在where语句的后面。sum()求和函数取得薪水的合计:select sum(sal) from emp;取得总共薪水(工资+补助)合计:select sum(sal+ifnull(comm,0)) from emp;avg()取平均值函数取得平...

2018-12-23 20:22:26 543 2

原创 小解List的三个子类

因为三个类都实现了List接口,所以里面的方法都差不多,那这三个类都有什么特点呢?ArrayList: 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。 Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。 Vector相对ArrayList查询慢(线程安全的) Vector相对LinkedList增删慢(数组结构) LinkedList: 底层...

2018-12-16 19:09:03 228 2

原创 利用Iterator遍历集合的两种方式

我们在开发的过程中常常会遇到集合的遍历,但是把集合先转换为数组再遍历,这种方式比较麻烦,java提供了一个Iterator的接口,在集合的实现类里面都实现了这个接口。采用for循环的方式: /** * 使用for循环 */ public static void iteratorTest02() { Collection c = new Arra...

2018-12-09 21:01:07 1409 2

原创 有感

学习学而不思则罔,思而不学则殆。

2018-12-02 21:11:10 931 2

转载 MyBatis-Plus

MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可...

2018-11-30 21:13:38 204 4

idea-mini-ibatis.jar

iBATIS的是一个持久层框架,它能够自动在 Java, .NET, 和Ruby on Rails中与SQL数据库和对象之间的映射。映射是从应用程序逻辑封装在XML配置文件中的SQL语句脱钩。 iBATIS是一个轻量级的框架和持久性API适合持久化的POJO(普通Java对象)。 iBATIS是被称为一个数据映射和映射需要的类的属性和数据库中的表的列之间的参数和结果。 iBATIS和其他持久化框架,如Hibernate之间的显著区别在于,iBATIS强调使用SQL,而其他的框架通常使用一个自定义的查询语言,具有Hibernate查询语言(HQL)或Enterprise JavaBeans的查询语言(EJB QL)。

2018-08-05

空空如也

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

TA关注的人

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