自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java中I/O模式详解

一、计算机的组成现代计算机是由硬件、操作系统组成,操作系统通过内核与硬件交互。操作系统可以划分为:内核与应用两部分,内核提供进程管理、内存管理、网络等底层功能,封装了与硬件交互的接口,通过系统调用提供给上层应用使用。二、用户空间与内核空间由于CPU某些指令比较危险,如果错用会导致系统崩溃,为了保护系统,操作系统将内存空间划分为了两部分:内核空间(Kernel space )用户空间(User space)当进程运行在内核空间时,它就处于内核态;当进程运行在用户空间时,它就处于用户态。其实

2021-07-09 21:46:31 706 4

原创 基于Redis实现分布式锁

一、背景随着业务越来越复杂,应用服务都会朝着分布式、集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。很多场景中,需要使用分布式事务、分布式锁等技术来保证数据最终一致性。很多时候,我们需要保证某一方法同一时刻只能被一个线程执行,否则就会出现售票超卖、多次扣款、多次充值等严重生产BUG出现。在单机(单进程)环境中,JAVA提供了很多并发相关API,像JVM层面的加锁(sync

2021-06-21 18:31:36 212

转载 接口幂等性这么重要,它是什么?怎么实现?

一、场景凌晨2点,正在做梦,突然接到了技术总监的电话:明天来公司收拾收拾,办理离职!说实话当时我头脑一片空白,直接懵了。第二天到公司,才知道我写的一段代码,昨天一天让公司损失了100多万,被定性为重大事故,导致了我直接被炒鱿鱼,而我的一些领导也受到了牵连,让我十分愧疚。这个业务应该很多人都会遇到,所以拿出来分享一下,避免大家踩坑。我们公司是做投资理财的,用户可以充值、投资、提现,充值这块是我做的,使用第三方支付进行充值,过程如下:step1:用户网站中输入充值金额;step2:后端创建充值订

2021-06-19 18:16:51 343

原创 面试官:MySQL的索引结构为什么使用B+树?

一、前言在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明MySQL为什么选择B+树作为索引结构。二、二叉查找树(BST):不平衡二叉查找树(BST,Binary Search Tree),也叫二叉排序树,在二叉树的基础上需要满足:任意节点的左子树上所有节点值不大于根节点的值,任意节点的右子树上所有节点值不小于根节点的值。如下是一颗BST。当需要快速查找时

2021-06-03 15:46:42 297 1

转载 设计模式之单例模式

一、单例模式思想单例模式的主要思想是:将构造方法私有化( 声明为 private ),这样外界不能随意 new 出新的实例对象;声明一个私有的静态的实例对象,供外界使用;提供一个公开的方法,让外界获得该类的实例对象。这种说法看上去没错,但也好像不太准确。其实,就算外界能随意 new 出新的实例对象,但只要我们保证我们每次使用的对象是唯一的,就可以。二、单例模式实现方式1. 饿汉式(线程安全,可用)public class Singleton { private Singleto

2021-06-02 17:30:09 226

原创 Java8 -- List集合相关操作

一、String与List<?>互相转化1. List<String>转字符串使用String.join// ,为字符串分隔符String str = String.join(",", list);2. 字符串转List使用Arrays.asList// 根据,分割字符串List<String> list = Arrays.asList(str.split(","));注: 使用该方法转出来的list集合无法进行add、remove操作示例

2021-03-24 17:02:58 467 1

原创 MyBatis常用标签和日期查找

一、if else1. 常用语法mybatis mapper.xml中的if判断:<if test="name != null and name != ''"> and name = #{name}</if>2. 若判断参数不等于或等于某单个字符如:<if test="param != '0'"> param = #{param}</if>当param为0时,该不等于0条件为true,正确写法如下:<if tes

2020-08-28 10:13:46 1789 1

原创 Nginx工作中详细配置

一、背景介绍背景:公司原有项目demo1,前端项目放在放在Linux环境目录 /usr/local/nginx/demo1,demo1下存放index.html和static文件夹(包含一些静态资源)nginx.conf中配置为:http { include mine.types; default_type application/octer-stream; client_max_body_size 10M; sendfile on; upstream demo_channel {

2020-06-18 16:08:36 311 2

原创 SpringCloud模块打包部署

一、前言公司项目架构是SpringCloud微服务,单个模块是SpringBoot,由于SpringBoot项目内置Tomcat容器,所以打包时打成Jar包,部署到Linux服务器后用命令java -jar (jar包的包名)xxxx.jar启动即可。二、Idea中Maven生命周期1. 9种生命周期SpringBoot打成jar包我们一般使用spring-boot-maven-plugin这个插件clean:清理,在进行真正的构建之前进行一些清理工作,移除所有上一次构建生成的文件。执行该

2020-06-14 23:12:13 5392

原创 Linux基础命令和快捷设置

一、Linux环境下各个目录/dev,存放硬件相关的文件;/etc,存放配置文件的目录;/bin,存放普通用户命令的目录;/sbin,存放管理员root可以执行的命令;/home,存放普通用户的家目录;/root,管理员的家目录;/media,存放多媒体资料的目录。二、系统常用命令及快捷键1. 常用命令uname - r,查看内核版本;ifconfig,查看IP地址;shutdown,关机;reboot,重启;help,查看内部命令的帮助信息;man,查看绝大多数命令的

2020-06-14 18:21:47 658

转载 Springboot -- 用更优雅的方式发HTTP请求(RestTemplate详解)

前言SpringBoot项目间的远程调用,SpringBoot本身封装了两种HTTP调用方式:FeignRestTemplateRestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,稍微截个图,这是我封装好的一个post请求工具:本教程将带领大家实现Sprin

2020-06-07 20:49:16 4166 1

原创 生成分布式ID算法 -- 雪花算法

一、分布式ID1. 为什么需要分布式全局唯一ID?在复杂的分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店等产品的系统中数据日渐增长,对数据分库分表后需要有一个唯一ID来标识某一条数据或消息,此时一个能够生成全局唯一ID的系统是非常必要的。2. 那么分布式ID生成需要满足哪些条件全局唯一:分布式系统下必须要保证ID是全局唯一的,这是最基本的要求;高性能:高可用低延时,ID生成响应要快,否则反倒会成为业务瓶颈;高可用:100%的可用性是骗人的,但是也要无

2020-05-20 16:01:28 1033

原创 浅析VO、DTO、DO、BO的概念、区别和用处

一、概念VO (View Object),用于表示一个与前端进行交互的视图对象,它的作用是把某个指定页面(或组件)的所有数据封装起来。实际上,这里的 VO 只包含前端需要展示的数据,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在 VO 中体现出来。DTO(Data Transfer Object),用于表示一个数据传输对象,DTO 通常用于展示层(Controller)和服务层(Service)之间的数据传输对象。DTO 与 V

2020-05-12 18:17:21 37554 9

转载 浅淡RESTful API设计规范

目前主流的通讯协议主要有RPC、http/1.1、http/2等,而http中最主流的无疑就是restful了,由于工作的原因,经常需要和不同的外部服务商进行系统集成,给出的文档都说是基于restful规范设计,遗憾的是,在我看来,几乎没有看到过真正可以称之为restful架构的api设计。今天就来谈谈如何设计一个规范、优雅、可读性高的restful api。关于restful设计的最佳实践...

2020-05-06 15:22:15 350

原创 SpringCloud项目常用注解

一、@RequestParam 和 @PathVariable1. 区别@RequestParam和@PathVariable都能够完成类似的功能,本质上都是用户的输入,只不过输入的部分不同,@PathVariable在 URL路径部分输入,而@RequestParam在 请求的参数部分输入。一般来说用@requestparam是用于form表单提交,或者超链接问号传参,而REST风格一定要用...

2020-04-30 14:51:43 1492

原创 Redis数据结构及Spring-data-redis API使用

一、Redis概述1. 简介  简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。2. 为什么要用 redis...

2020-04-27 18:06:32 413

原创 常用工具类 -- JAVA

一、判断是否为空1. 判断字符串是否为空org.springframework.util.StringUtilsif(StringUtils.isEmpty(Object str)){ ...}StringUtils.isEmpty()传入的是Object,所以可以用来判断Long类型。2. 判断集合是否为空org.springframework.util.CollectionUtilsif(CollectionUtils.isEmpty(list/map)){ ...}3.

2020-04-20 18:11:32 1351

原创 计算机网络

一、网址(URL)、域名、IP地址、端口号1. 什么是IP?  在Internet上有千百万台主机,为了区分这些主机,我们给每台主机都分配了一个专门的地址,称为IP地址。通过IP地址就可以访问到每一台主机。  IP地址由4部分数字组成,每部分都不大于256,各部分之间用小数点分开。例如" 百度搜索 “主机的IP地址就是:” 119.75.217.109 ",在浏览器上输入这个IP地址,就可以...

2019-12-30 16:57:20 167

原创 .NET连接数据库

一、.NET Framework.NET Framework是微软的开发程序框架,用.NET开发的程序就需要.NET环境来支持才能运行,打个比方Linux的应用程序只能在Linux的环境下才能使用。.NET Framework具体来说是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件。 目前已发行的版本有1.0、1.1、2.0、3.0、3.5、...

2019-12-30 16:45:39 336

原创 Java语言简介

一、计算机语言语言发展史:第一代语言: 机器语言第二代语言:汇编语言第三代语言: 高级语言,如:C/C++/Java/Php/Python第四代语言:自然语言二、Java语言简介Java(Oak)语言的发展史 - -创始人:詹姆斯.高斯林  1995年 出现  1996年 JDK1.0  1998年 JDK1.2 J2SE J2ME J2EE  2004年 JDK1....

2019-12-30 16:41:24 201

原创 Java集合遍历方式及效率对比

一、List集合遍历1. 集合元素在内存中的存放数据元素在内存中,主要有2种存储方式:顺序存储,Random Access(或直接存储,Direct Access):这种方式,相邻的数据元素存放于相邻的内存地址中,整块内存地址是连续的。可以根据元素的位置直接计算出内存地址,直接进行读取。读取一个特定位置元素的平均时间复杂度为O(1)。这种数据结构插入和删除时比较麻烦,查询比较方便。正常...

2019-12-30 16:30:12 2733

原创 idea使用git的各种操作

一、IntelliJ idea 拉取/更新/提交/还原 代码1. idea检出项目VCS Checkout from Version Control Git填写远程项目URL2. idea更新代码Git Update Project 更新整个项目右键某个文件 Git Repository Pull 更新某个文件3. idea提交代码1)文件右键 Add,将代码A...

2019-12-27 17:53:31 656

原创 Java容器常见操作

一、针对List常见操作1. List集合转数组List集合中提供toArray方法,toArray有两个重载的方法:list.toArray(),将list直接转为Object[] 数组;list.toArray(T[] a),将list转化为你所需要类型的数组,但注意要和list数据类型一致。2. 判断List集合中是否存在某个字符串使用 java.util.List.con...

2019-12-26 15:07:24 300

原创 IntelliJ idea debug清除断点、回到断点、查看线程

一、intellij idea 一键清除所有断点1. click ViewBreakPoints2. click Java Line Breakpoints,click Remove img ‘-’,at last click Done二、idea调试代码过了断点后如何重回到上一个断点处右键需要重新debug的方法,选择 Drop Frame点击后,将返回到当前方法的调用处重新...

2019-12-24 12:10:17 2922

原创 IntelliJ IDEA 快捷键

一、IntelliJ Idea 十大快捷键Top #1智能补全:Alt + /Top #2重构一切:Ctrl + Shift + Alt + TTop #3自我修复:Alt + EnterTop #4创造万物:Alt + InsertTop #5自动完成:Ctrl + Shift + EnterTop #6无处藏身:Shift + ShiftTop #7发号施令:Ctrl + Shi...

2019-12-24 11:00:26 112

原创 ASPX页面代码笔记

一、ASPX页面代码1.<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QualityException.aspx.cs" Inherits="QualityException_QualityException" %>解释:Language="C#" --编程语言为C#AutoEventWireup="true...

2019-11-27 23:27:42 687

原创 Java集合(List、Map、Set)详解

一、容器的概念1. 什么是容器   在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。2. 常用的Java容器二、List,Map,Set,Queue1. List有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的...

2019-11-24 19:44:39 403 1

原创 Eclipse创建 Web/Maven Project

一、Create Web Project1. 配置环境(JDK、Tomcat等)2. create new Web ProjectFile → New → Dynamic Web Project → next... → 勾选 Gernerate web.xml deployment descriptor → finish3. 在WebContent目录下新建 html/jsp 页面测试...

2019-11-21 23:47:02 219

原创 ASP.NET -- Web Pages/WebForms

一、Web Pages概述1. 什么是 Web Pages?  Web Pages 是三种创建 ASP.NET 网站和 Web 应用程序的编程模式中的一种。其他两种编程模式是 Web Forms 和 MVC(Model View Controller 模型-视图-控制器)。  Web Pages 是开发 ASP.NET 网页最简单的开发模式。它提供了一种简单的方式来将 HTML、CSS、Ja...

2019-11-21 23:44:11 382

原创 Java中包、异常及异常处理

一、Java中常见包1. 包的定义  package的简单定义如下:package是一个为了方便管理组织java文件的目录结构,并防止不同java文件之间发生命名冲突而存在的一个java特性。不同package中的类的名字可以相同,只是在使用时要带上package的名称加以区分。2. 常用包java.lang:该包提供了Java语言进行程序设计的基础类,里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需

2019-11-21 23:42:24 211

原创 Nginx配置虚拟主机和反向代理

一、什么是Nginx?Nginx是俄罗斯人开发的一个高性能的 HTTP和反向代理服务器。由于Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪、网易、腾讯、搜狐等企业的一些门户网站等,在3w以上的高并发环境下,Ngnix处理能力相当于Apache的10倍。面试题问:Nginx为什么能支持高并发?异步,多进程,非阻塞,使用了epoll 和大量的底层代码优化。Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主

2019-11-21 19:31:52 854

原创 数据库系统概论

一、数据库概述1. 什么是数据?  数据是数据库中存储的基本对象,描述事物的符号记录称为数据。2. 什么是数据库?  数据库,顾名思义,是存放数据的仓库。严格的讲,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易拓展性,并可为各种用户共享。3. 关系数据库  关系数据库系统是支持关系模型...

2019-11-18 18:31:35 408

原创 Oracle中序列的作用

一、背景项目开发过程中,数据库表中的主键值有时需要被设置为number类型且自增。MySql、Sql Server中使用工具创建表时很方便设置自增,但是Oracle中没有设置自增的方法,一般情况使用序列和触发器来实现主键自增功能。二、Oracle序列参考:Oracle中常见序列操作--要有创建序列权限create sequence / create any sequence --删...

2019-11-18 18:26:29 1447

原创 集成日志框架实践

一、日志概述1. 日志的级别Java应用中,日志一般分为以下5个级别:ERROR 错误信息WARN 警告信息INFO 一般信息DEBUG 调试信息TRACE 跟踪信息Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现。Spring Boot默认的日志实现是Java Util...

2019-09-23 19:50:03 190

原创 部署SpringBoot Project到外置Tomcat容器

一、SpringBoot Project两种打包方式SpringBoot 项目约定优于配置,连Tomcat都自集成了,只用直接编写SpringBoot启动类,然后一键开启内置的Tomcat容器服务即可部署运行。但如果要部署到本地Tomcat或部署到某个服务器上,此时就需要剥离掉SpringBoot项目内置的Tomcat,进而将应用发布并部署到外置的Tomcat容器之中。二、修改Project...

2019-09-23 17:32:50 240

转载 SpringBoot 快速开启事务

一、序言此前,我们主要通过XML配置Spring来托管事务。在SpringBoot则非常简单,只需在业务层添加事务注解(@Transactional )即可快速开启事务。虽然事务很简单,但对于数据方面是需要谨慎对待的,识别常见坑点对我们开发有帮助。二、测试准备1. 添加数据库记录打开 Navicat 的查询窗口,然后执行以下SQL:DROP TABLE IF EXISTS `accou...

2019-09-20 17:17:52 231

原创 JavaScript 常用小笔记

1. 强迫症患者<link rel="stylesheet" type="text/css" href="something.css" /><script type="text/javascript" src="myscripts.js"></script>2. JS中定义全局变量var name = 'abc';function getName()...

2019-09-20 15:33:37 327

原创 JavaScript和ajax执行顺序比较

一、JavaScript在HTML中的加载顺序1. 正常网页加载流程从上到下运行,先解析<head>标签中的代码<head>标签中会包含一些引用外部文件的代码,从开始运行就会下载这些被引用的外部文件。当遇到<script>标签时,浏览器暂停解析(不是暂停下载),将控制权交给JavaScript引擎(解释器)。  如果<script>标签引用...

2019-09-19 10:07:10 261

原创 Java优雅编码之Lombok

一、概述1. 官网介绍大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。2. 使用  Lombok 通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的Java 代码,典型的是对于 POJO对象的简化(如自动帮我们生成Setter和Getter等),有...

2019-09-18 16:29:45 653

原创 AJAX从入门到深入

一、AJAX简介1.概述AJAX(Asynchronous Javascript And XML)AJAX = 异步 JavaScript 和 XML(标准通用标记语言的子集);AJAX 是一种用于创建快速动态网页的技术,在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面;通过在后台与服务器进行少量数据交换,AJAX ...

2019-09-18 14:41:43 184

Dubbo简单入门案例

简单dubbo入门案例,方便理解dubbo和zookeeper作用,学会dubbo项目的搭建,资源附带源码和sql文件,具体搭建过程参看博客:https://blog.csdn.net/lairikeqi/article/details/94631615

2019-07-05

SSM框架 简单产品订单数据后台操作网站

简单SSM项目,使用SSM,POI下载上传Excel档,使用PageHelper插件,使用Spring Security实现权限管控。java语言,使用mysql数据库,资源包括源代码,SQL文件,代码搭建文档,具体见博客 https://blog.csdn.net/lairikeqi/article/details/90082978。

2019-05-28

简单Servlet登录注册增删查改项目,可运行

可运行,简单Servlet登录注册项目,包含登录注册注销功能,能对数据库用户进行查找增加删除,压缩包附带sql文件。

2019-03-26

jdbc连接mysql工具类

eclipse连接MySql工具类,具备增删改查功能,利用反射进行单个和多个查询,附有mysql-connector.jar和SQL文件。

2019-03-11

空空如也

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

TA关注的人

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