自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_37531231的博客

java常用集合框架

  • 博客(48)
  • 收藏
  • 关注

原创 Mybatis判断if中字符串等于比较遇到的坑

错误写法: <if test="promoteText != null and promoteText == '2'"> and A.promote_text is not null </if> <if test="promoteText != null and promoteText == '3'...

2019-03-08 09:58:28 1237

原创 mybatis中大于等于小于等于的写法

第一种写法(1):原符号 < <= > >= & ’ "替换符号 < <= > >= & ’ "例如:sql如下:create_date_time >= #{startTime} and create..

2019-03-01 09:26:11 248

原创 Fastjson生成json时Null属性不显示

JSONObject.toJSONString(Object object, SerializerFeature… features)Fastjson的SerializerFeature序列化属性QuoteFieldNames———-输出key时是否使用双引号,默认为trueWriteMapNullValue——–是否输出值为null的字段,默认为falseWriteNullNumberA...

2019-02-20 09:42:56 262

原创 软件开发模型优缺点及其适用范围

瀑布模型也称软件生存周期模型。优点:它在软件工程中占有重要地位,它提供了软件开发的基本框架,这比依靠“个人技艺”开发软件好得多。它有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。缺点:阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;由于开发模型是线性的用户只有等到整个过程的末期才能见到开发成果,从而...

2019-01-22 11:24:02 4927

原创 arrays.asList方法注意事项

Arrays.asList用来将数组转化为List,这个看似功能很明了的方法却暗藏玄机。请先看下面的程序:int[] datas = new int[]{1,2,3,4,5};List list = Arrays.asList(datas);System.out.println(list.size());运行结果是1。一个长度为5的数组,转化为List后,长度却成了1。再对这个程序稍加...

2019-01-17 15:54:30 322

原创 MySQL数据库开发规范

一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁知道这个r1,r2,r3字段是干嘛的(4)禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架构设计思路是“解放...

2018-12-06 11:09:24 198

原创 RESTful API

RESTful API一、对比二、特点(1)、URL描述资源(2)、使用HTTP方法描述行为。使用HTTP状态码表示不同结果(3)、使用json交互(4)、RESTful 是一种风格,而不是强制标准...

2018-11-25 20:44:21 116

原创 消息队列幂等性

一、保证消息必达MQ消息投递上半场,MQ-client-sender到MQ-server流程见上图1-3:(1)MQ-client将消息发送给MQ-server(此时业务方调用的是API:SendMsg)(2)MQ-server将消息落地,落地后即为发送成功(3)MQ-server将应答发送给MQ-client(此时回调业务方是API:SendCallback)MQ消息投递下半场,MQ...

2018-11-24 15:26:49 1328

原创 消息队列

一、什么是消息队列消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。二、应用场景场景一:上游不关心下游执行结果(订单状态改变,发邮件)1)上游执行时间短2)上下游逻辑+物理解耦,除了与MQ有物理连接,模块之间都不相互依赖3)新增一个下游消息关注方,上游不需要修改任何代码场景二:缓...

2018-11-24 14:20:56 149

原创 I/O模型

**传统i/o特点**1、存在阻塞点server.accept();socket,getInputStream();2、单线程只能有一个客户端,用线程池可以用多个客户端,但是非常消耗性能3、面向流方式处理数据NIO特点:1、ServerSocketChannel ServerSocketSocketChannel SocketSelectorSelectionKey...

2018-10-13 10:07:43 135

转载 HashMap 死锁分析

https://blog.csdn.net/lantian0802/article/details/42487803

2018-09-27 20:12:45 691

原创 hash冲突解决办法

虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探...

2018-09-21 10:38:45 428

原创 三次握手和四次挥手

一、三次握手 (1)、客户端由关闭状态主动打开连接,建立传输控制块TCB,向服务端发出请求报文段(SYN=1,seq=x),进入SYN-SENT状态 (2)、服务收到后若同意进行连接,向客户端发送确认,SYN=1,ACK=1,ack=x+1,seq=y 进入SYN-RECD同步收到状态 (3)、客户端收到后,再给服务端发送确认,报文段置SYN=1,确认号ack=y+1,请求号seq=x+1...

2018-09-12 21:54:37 123

原创 MyISAM和InnoDB区别

(1)、InnoDB支持事务,MyISAM不支持 MyISAM可以通过lock table表锁,来实现类似于事务的东西,但对数据库性能影响较大,强烈不推荐使用 对数据一致性帮助很大 (2)、MyISAM只支持表锁,InnoDB可以支持行锁。 MyISAM:执行读写SQL语句时,会对表加锁,所以数据量大,并发量高时,性能会急剧下降。 InnoDB:细粒度行锁,在数据量大,并发量高时,性能比...

2018-09-11 23:49:39 122

原创 单例模式的几种写法

所谓单例模式就是确保某一个类只有一个实例,并且提供一个全局访问点。例如 线程池、缓存、对话框等等 (1)、饿汉模式(保证线程安全) public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){ } public...

2018-09-08 23:58:36 119

原创 第3篇:创建总后端微服务

一、介绍前端的所有请求都会映射到此微服务上,然后由该服务和其他服务间配合,相互调用,完成业务处理 二、搭建2.1、选择相应组件 2.2、主程序配置@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class HbuLiveBackedApplication { pu...

2018-07-22 18:33:55 209

原创 第2篇:创建用户模块

一、介绍用户的登录注册,修改个人信息,更改密码,找回密码等功能在该模块完成二、创建用户模块1.1、选择需要的依赖 1.2、主程序配置 添加注解@EnableDiscoveryClient@SpringBootApplication@EnableDiscoveryClientpublic class HbuLiveUserApplication { public...

2018-07-22 17:41:40 572

原创 第1篇:服务注册中心与发现(Eureka)

一、创建服务注册中心eureka是一个服务注册和发现模块 1.1、右键工程->New Project-> 选择spring initialir 如下图: 1.2、next->选择cloud discovery->eureka server 1.3 一路next,最后finish二、配置服务注册中心2.1、 启动一个服务注册中心,只需要一个注解@En...

2018-07-22 15:22:00 1283

原创 第0篇:准备工作

一、主要内容Spring Cloud 搭建一个直播系统的后端,以此为类,会总结若干篇,总结包括但不限于以下内容:(1)、环境搭建(在本地各个微服务跑起来) (2)、项目部署(在远程服务器各个微服务跑起来) (3)、各个组件的总结(例如:为什么要有服务发现?)二、直播后端系统概述业务拆分成一个个微服务后:1、hbu-live-euraka-server 服务注册中心serv...

2018-07-22 12:49:08 152

原创 什么是sql注入,如何防止sql注入

1、什么是所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。//比如这是一个用户登录Dao层的查询操作select * from user where username=? and password =?;//username 和 password通过web表单穿过来例如:username=admin...

2018-07-15 12:04:25 8635

原创 进程(process)VS 线程(thread)

第一点: a、进程是系统资源分派的基本单位,程序运行时系统就会创建一个进程,并为它分配资源((如内存、文件)),然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。b、线程是CPU调度和分派的基本单位,是程序执行时的最小单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环...

2018-07-14 09:42:19 2744

原创 arp协议总结

1、地址解析协议ARP的定义** 在实际中,我们经常会遇到这种情况:已经知道一个机器(主机或者路由器)的IP地址,需要找出相应的物理地址。地址解析协议ARP就是解决这样的问题。 ![这里写图片描述](https://img-blog.csdn.net/20180526181358467?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2...

2018-05-26 19:57:16 874

原创 排序算法总结——java语言实现

一、冒泡排序(1)、基本思想 第一趟,从第0个记录到第n-1个记录,i和i+1关键码进行比较,与要求逆序则交换位置。一趟后最大的关键码就放到了n位置 第二趟,从第0个记录到第n-2进行第二趟冒泡。 如此重复n-1趟,如果在一趟中没有发生交换,说明数组已经是有序的了。(2)、代码实现 //冒泡排序实现 public static void buble_sort(i...

2018-04-23 21:36:35 208

转载 TCP和UDP的区别

参考博文:https://blog.csdn.net/Li_Ning_/article/details/52117463一、区别总结1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 Tcp通过校验和,重传...

2018-04-14 10:26:51 141

原创 HTTP协议介绍

一、HTTP协议概念超文本传输协议(HTTP)是一种通信协议,它允许web服务器将超文本标记语言(HTML)传输到客户端的浏览器。它在TCP/IP协议中属于应用层协议,并属于无状态协议。它是基于TCP协议的可靠传输,采用客户端/服务器端模式,由客户端发起请求,服务端进行响应。二、HTTP流程HTTP流程 客户端 ...

2018-04-14 10:01:14 316

原创 tcp/ip协议介绍

一、何为协议,为什么要有协议举个栗子:现在假设有三个人:小明、小美和David。小明只会使用普通话这一种语言,David只会使用英语这一种语言,小美会使用普通话和英语两种语言。那么,很显然,小明可以和小美对话,David可以和小美对话,而小明和David无法对话,无法交流。 现在,我们来假设,他们三个分别是三台计算机(假设大胆点),那么对话的这个行为就是通信,对话所相互传递的信息就是...

2018-04-13 11:28:49 596

原创 SpringMVC的执行流程

一、整体流程图二、整体过程0、客户端向web服务器(比如Tomcat)发送http请求,web服务器对请求进行l解析,解析后的url地址如果匹配了DispatcherServlet的路径(web.xml中会配置他的映射路径),web容器将请求交由DispatcherServlet处理。1、 DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然...

2018-04-10 10:43:08 217

原创 Junit的使用

Junit单元测试的使用 一、Junit介绍 Junit是java语言的单元测试框架,需要程序员自身进行编写测试用例,也称为白盒测试。使用它可以大大的提高开发的效率。比如一个web项目添加一个新服务后,需要重新部署进行测试。这时就可以使用Junit进行测试。 二、基本使用 @BeforeClass:在所有方法开始前执行,仅仅执行一次。注意:方法必须为静态的。 @Before:在每个方法开...

2018-04-07 15:31:49 205

原创 Java内省的理解和使用

内省内省是基于反射实现的,主要用来操作JavaBean,通过内省可以很方便的动态获得bean的set/get方法,属性,方法名反射反射就是运行时获取一个类的所有信息,可以获取到.class的任何定义的信息(包括成员 变量,成员方法,构造器等) 可以操纵类的字段、方法、构造器等部分。需求(IOC容器中给某对象注入值) 1、获得一个对象,某属性的set方法//Student类 ...

2018-04-06 16:26:24 1045

原创 提高开发效率(收藏合集)—不断总结

1、每次修改JS文件都需要重启Idea才能生效解决方法 https://www.cnblogs.com/kingxiaozi/p/6344432.html2、Navicat连接linux下mysql 乱码问题 解决https://blog.csdn.net/fenfei12138/article/details/49661879#reply3、CentOS7使用firewalld打开...

2018-04-01 14:37:00 208

原创 Spring AOP、Spring AOP 实现原理

一、为什么会出现AOP 一个场景把大象装进冰箱分三步: (1)、打开冰箱 (2)、把大象装进冰箱 (3)、关上冰箱 把老虎装进冰箱分三步: (1)、打开冰箱 (2)、把老虎装进冰箱 (3)、关上冰箱 如果把1000种动物装进冰箱,还需要计时怎么办?显然不能1000个类中都加代码交叉业务逻辑,系统级的服务 类比 打开冰箱门,关闭冰箱门 主业务逻辑 类比 把动物放进冰箱,主...

2018-03-28 23:01:56 1287

原创 java注解的使用——含例子

一、解释注解 Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。  Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执...

2018-03-27 22:59:44 182

原创 MySQL查询实战——多种思路

建表: CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date date NOT NU...

2018-03-26 16:32:57 478

原创 Java多线程基本技能

一、进程和线程的区别 进程:进程是系统进行资源分配和调度的一个独立单位,进程间的切换会有较大的开销,一个进程包含1–n个线程。 线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 线程和进程一样分为...

2018-03-21 22:47:32 151

原创 MySQL优化——从建表开始优化

一、建表1、不要使用使用NULL字段,设置字段默认值 bad case: name char(32) default null age int not null good case: name char(32) not null default ” age int not null default 02、用好数值类型 t...

2018-03-20 23:10:33 309

原创 spring学习 IoC DI的概念——概念篇

一、开场白 在学习java的道路上,接触到的第一个框架就是spring框架。而在学习spring时首先是引入两个概念IoC(控制反转)和DI(依赖注入)。对于初学Spring的人来说,这两个概念是模糊不清的,是很难理解的。What’s that? 二、IOC(控制反转)是一种思想 IOC也可以说是一种全新的设计模式,并不是一种技术。传统我们需要使用一个对象,需要手动去new一个来创建,这种方...

2018-03-17 23:20:12 398

原创 Object类中常见的方法

一.Object类中的toString()方法 1. object 默认方法 toString方法,toString() 输出一个对象的地址字符串(哈希code码)! 2.可以通过重写toString方法,获取对象的属性! 快捷键 alt+shift+s创建Override toString() 二.Object类中的equals()方法 Object类e...

2018-03-15 22:00:48 2038

原创 什么是Java序列化和反序列化

1 含义序列化:把java对象转变成一组字节序列的过程 反序列化:从一组字节序列恢复成一个java对象。 注意:序列化过程仅保存对象的成员变量。 2、使用时机 1)需要将内存中的对象”持久化”的存储在硬盘上(文件或数据库中) 2)需要网络通信时:先将对象序列化为一串二进制字节流,再进行传输;接收端,先接收二进制流,再从中反序列化出对象。 3、方法 Serializable 该接...

2018-03-15 21:41:58 197

原创 java jdk相关知识总结

一、常用的jdk包 java.lang(不用import的包):包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等 javax.servlet:这个是JSP,Servlet等使用到的类。 java.awt:包含了构成抽象...

2018-03-15 21:22:10 268

原创 ==和equals的用法,以及hashcode方法

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符。 equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。字符串Stirng比较要用equals方法。例如,对于下面的代码: String a=new String("...

2018-03-14 20:54:39 401

空空如也

空空如也

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

TA关注的人

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