自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 浅谈扫码登陆功能

扫码登陆功能首先介绍下什么是扫码登录。现在手机上都装有微信、qq和淘宝这一类的软件。而这些app都有他们相对应的网页端。为了让用户在使用他们的网页时登录更加方便和安全,使用手机扫一扫就可以登录的服务就产生了。 有很多小伙伴可能会感到很神奇,网页上只是显示了个二维码,它怎么就知道是哪个手机扫到了二维码,并且进行登录的呢?而且,登录完成以后,还能直接把用户信息显示给用户,真的...

2020-03-31 18:03:52 1003

原创 java实现二维码的生成与解析

java生成二位码技术实现的底层并不简单,二维码的生成实现方式有很多种,可以使用QRCode.jar来实现,也可以使用ZXing开发。直接上干货来看一个小demo吧!maven依赖 <!-- 生成二维码 --> <dependency> <groupId>com.google.zxing</groupId> ...

2020-03-31 15:20:56 1347

原创 浅谈秒杀系统

关于秒杀系统涉及到的东西挺多的,抽空把这个坑填上。。。电商公司使用大促销秒杀方案较多,其实秒杀系统不单单适用于电商抢购场景,涉及到大并发的场景都可以参考秒杀系统方案。秒杀系统的基本流程秒杀系统的难点分析在秒杀场景中最大的问题在于容易产生大并发请求、产生超卖现象和性能问题,下面我们分析下这三个问题:1)瞬时大并发: 一提到秒杀系统给人最深刻...

2020-03-30 20:45:14 1379

原创 Shiro权限框架详解

Shiro是java的一个安全框架,提供了认证、授权、加密和会话管、与web集成、缓存理等功能,对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且Shiro相对简单些。其基本功能点如下图所示:Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可从应用程序角度Shiro是如何完成工作的?也就是说...

2020-03-29 20:25:55 458

原创 shiro实现登录成功后跳转到之前的页面

使用Shiro实现不同用户登录成功后跳转到不同的主页项目背景: 在项目中使用sso统一认证中心实现登录模块,各个业务模块均不提供登录入口,如何在用户登录成功后跳转到之前访问路径呢?由于项目中集成了shiro,里面就有这么个功能shiro在跳转前有记录跳转前的页面,当前没有认证的用户请求需要认证的链接时,shiro在跳转前会把跳转过来的页面链接保存到session的...

2020-03-29 15:45:35 3107

原创 ssm项目环境搭建详解

在ssm项目搭建时,需要我们结合项目选择需要的依赖,如何高效优雅的实现项目需求,是每个程序员孜孜以求的,本文的是根据自己的项目需求进行一个小结,可能并不优雅,高手勿喷。。。maven配置ssm项目环境+shiro+redis+Email的maven配置:(可根据自己项目需求自行选择需要的jar包)<properties> <project.build....

2020-03-29 15:07:37 831

转载 配置Redis作为缓存(六种淘汰策略)

 将 Redis 用作缓存时, 如果内存空间用满, 就会自动驱逐老的数据。 默认情况下 memcached 就是这种方式, 大部分开发者都比较熟悉。LRU是Redis唯一支持的回收算法. 本文详细介绍用于限制最大内存使用量的 maxmemory 指令, 并...

2020-03-27 19:37:25 359

原创 redis的主从复制

​​​​​​什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:说明:主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis...

2020-03-27 13:01:53 202

原创 redis的哨兵机制

哨兵的介绍    redis的设计者为了让redis能够在主从模式下实现故障恢复的自动化,为此提供了redis的哨兵功能。哨兵是一个独立于数据服务器的进程,用于监控redis数据服务器的状态,当主从模式下最关键的主服务器出现故障时,能够被哨兵自动的察觉。同时哨兵会在剩余的从服务器中"选举"出新的主服务器,达到自动化恢复系统服务的目的。哨兵的作用注意:哨兵也是一台redis服务器...

2020-03-27 13:01:32 369

原创 Linux上安装Tomcat详细步骤

Linux下Tomcat8的安装配置安装Tomcat前首先要安装对应的jdk并配置Java环境,没有安装的可以参考博客:https://blog.csdn.net/duan196_118/article/details/1039308131. Tomcat的下载及通过Xftp把下载好的文件上传到Linux中此处省略2. 将文件解压到usr/local目录下 tar ...

2020-03-26 20:42:11 555

原创 redis实现分布式锁

在Java多线程编程中,锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同一个JVM进程里的时候,使用Java语言提供的锁机制可以起到对共享资源进行同步的作用。随着业务越来越复杂,应用服务都会朝着分布式,集群方向部署,而分布式CAP原则告诉我们,Consistency(一致性)、 Availability(可用性)、Pa...

2020-03-24 18:35:37 282

原创 高并发系列:redis缓存和MySQL数据的一致性

在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,可以使用redis做一个缓冲操作,让请求先访问redis,而不是直接访问数据库。。(图片来自网络)这个业务场景,主要是解决从redis缓存中读数据的,一般是按照下图来进行业务操作。对缓存读取一般没有什么问题,但是涉及到数据的更新,如何做到缓存同步,来确保redis缓存和数据库间的数据的一致性呢?无论是先...

2020-03-24 18:01:45 1176 1

原创 Consider defining a bean of type 'org.springframework.data.redis.core.HashOperations' 的解决

在spring boot整合redis时,本以为springboot已经实现了对redis的完美结合。只需要一个@Autowired就可以使用RedisTemplate模板了,结果项目启动出现了下面的惊喜。。。很明显让我们指明RedisTemplate在项目中的配置。果然,好记性不如烂笔头,突然想起来在之前的项目中已经使用过redis,其中就有这部分内容,但自己负责的不是这个模块而已,很是...

2020-03-23 20:38:19 17633 6

原创 Eclipse中SpringBoot配置文件中文乱码解决

在Eclipse中进行如下菜单设置:Window ---> Preferences --->General ---> Content Types,右侧Text ----> java Properites File 在Default encoding中输入utf-8,点击Update。如果自定义配置文件未更新编码格式,可在属性中手动设置为utf-8。再次...

2020-03-23 19:41:51 1074

原创 redis介绍

redis是一种常用来做缓存的产品,跟随博客简单认识redis吧!redis的安装可参考博客:https://blog.csdn.net/duan196_118/article/details/103937947 redis是用c语言开发的一个开源的高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL数据库,为了解决高并发、高扩展,...

2020-03-20 21:00:37 628

原创 Linux的介绍

Linux是一套免费使用和自由传播的类Unix操作系统,它是多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面,出色的速度性能。Linux的基本思想有两点: 第一:一切都是文件 第二:每个软件都有确定的用途Linux也是一个系统,本质跟我们电脑的Windows没有区别,首先我们需要安装Linux系统,其...

2020-03-20 14:57:58 207

原创 nginx的配置文件

nginx配置文件结构nginx安装目录下,默认的配置在conf目录下,主配置文件nginx.conf文也在其中,后继对nginx的基础使用基本上都是对此配置文件进行相应的修改。配置文件中#开头的表示注释内容,精简之后很明显我们可以将nginx.conf的配置文件分为三部分:第一部分:全局块从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整...

2020-03-19 16:59:27 130

原创 nginx的介绍

nginx是我们常用的进行性能优化的软件。nginx的安装参考博客:https://blog.csdn.net/duan196_118/article/details/1039385081. 什么是nginx Nginx是高性能的HTTP和反向代理服务器,处理高并发能力十分强大,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。其特点是占有内存少,并发能力强。2....

2020-03-19 16:45:38 299

原创 nginx实战--图片服务器

实现功能: 在Linux系统上的Nginx服务器上配置图片访问路径,通过浏览器访问指定路径中的图片,实现图片上传功能。Linux中图片的位置:nginx.conf文件的配置:​#图片代理服务器 server { listen 8089; server_name 192.168.16.88; #chars...

2020-03-19 16:37:04 829

原创 ssm整合时requestMapping重复问题

在ssm整合项目中,如果requestMapping映射路径有重复,此时会报错吗?如果在web.xml中配置了load-on-startup随项目启动而加载servlet容器,则启动就报错。如果没配置,则在有访问时报错。<load-on-startup>呢</load-on-startup>,这个配置的作用: 1. load-on-startup 元素...

2020-03-14 22:54:19 1248

原创 ssh整合实例

ssh整合配置环境:spring4+hibernate5+struts2项目结构:1.导包2. 编写配置文件2.1在web.xml文件中进行配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...

2020-03-14 22:35:01 492

原创 jdbcTemplate(五)

spring jdbcTemplate 详解 jdbcTemplate类似于DBUtils,用于操作jdbc的工具类,它需要依赖于连接池DataSource(数据源)。它是spring框架提供的一个对象,是对原始jdbc api 对象的简单封装。JDBC(Java DataBase Connectivity,java 数据库连接)是一种用于执行SQL语句的java ...

2020-03-13 21:12:01 1433

原创 Spring的常用注解(全)

1.@Component 组件 @Controller 控制层 @Service service层 @Respository dao层2. @Value 普通的值注入3. 引用类型注入 @Autowired 自动注入 + @Qualifier 根据名字注入 @R...

2020-03-13 19:11:51 435

原创 try、catch、finally中有return语句时程序的执行顺序

1. try代码块中包含return语句,finally代码块中不包含return语句。public class Test { public static void main(String[] args) { System.out.println(test()); } static int test() { int x=1; try { System.out.prin...

2020-03-13 17:36:05 581

原创 AspectJ(四)

AspectJ是一个基于java语言的AOP框架。Spring2.0以后新增了对AspectJ切点表达式的支持。@AspectJ是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面。主要用途:自定义开发。切点表达式execution()语法: execution(修饰符 返回值 包.类.方法名(参数) throw...

2020-03-13 16:52:19 191

原创 AOP(三)

什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高...

2020-03-12 17:14:31 222

原创 spring中的事务与数据库中的事务的理解

数据库中的事务,当我们看到这篇文章的时候,心中都已明了。并对spring的事务有一定的理解。但是二者究竟是什么关系呢?还记得刚认识到这个问题时困惑了很久痕久,在此做出梳理,仅供参考。spring管理的事务是逻辑事务,使用spring管理事务我们需要:原理: spring在启动的时候会去解析生成相关的bean,这时候就会去查看拥有相关注解的类和方法,并且为这些类...

2020-03-12 11:44:09 890

原创 Git忽略提交的方法及Git忽略规则(四)

在项目目录下有很多万年不变 的文件目录,如css、js、image等,或者还有一些目录即便有改动,我们也不想让其提交到远程仓库的文档,比如日志、临时文件、编译中间件等,此时我们就可以使用"忽略文件"机制来忽略这些文件的提交。Git忽略文件提交的方法1. 在Git项目中定义.gitignore文件 在项目的某个文件夹下定义.gitignore文件,它用于声明忽略文件或不忽略文件的规...

2020-03-07 22:09:41 556

转载 Git如何解决冲突(三)

解决冲突现在我把gitTest中的东西全删了包括那个.git文件。初始化仓库git init,新建一个a.txt,在里边写个mas...

2020-03-07 21:21:51 198

原创 Git的配置与使用(二)

一 . 创建版本库 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。1.1首先,选择一个合适的地方,创建一个空目录(D:\ds...

2020-03-07 01:22:34 196

原创 Git和SVN的区别

1. Git是分布式,SVN是集中式的。 这是 Git 和 SVN 最大的区别。因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而 SVN 必须联网才能正常工作。集中式版本控制系统: 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,...

2020-03-06 17:22:51 251

原创 Git的详细安装步骤(一 )

Git 是先进的分布式版本控制系统。简单的说就是一个软件,用于记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的软件。Github 是一个为用户提供Git服务的网站,简单说就是一个可以放代码的地方(当然可以放的不仅仅是代码)。GitHub除了提供管理Git的web界面外,还提供了订阅、关注、讨论组、在线编辑等丰富的功能。GitHub被称之为全球最大的基友网站。Git下载地址:ht...

2020-03-06 16:25:41 466

原创 SVN使用的注意事项

SVN使用步骤: 检出 checkout 更新 update 冲突 confilicte 添加 Add(添加项目时使用) 填写SVN日志 提交 commit 使用步骤注意:update ----> add ----> 写注释 ----> commit,是一个完整的事务。一. 提交之前必须更新,因为在你提交之前你并...

2020-03-06 11:34:25 815

原创 java面试题(一)

网上关于java的面试题随处可见,可比较宅的我仍然愿意总结到自己的博客中,希望对看到的小伙伴们有所帮助,答案仅供参考,也欢迎小伙伴们留言。。。一、java基础1.JDK 和 JRE 有什么区别? jdk是java开发工具包,提供了java开发环境和运行环境,它包含jre,还包含了很多java程序调试和分析工具。 jre为java运行提供了所需环境。 简而言之:如果需要运行...

2020-03-05 20:46:07 2405

原创 java集合类面试题

1. java 容器都有哪些? list set map 三大种,分别根据自己的理解进行介绍。2.Collection 和 Collections 有什么区别? Collection是集合的上级接口, Collections是针对集合的一个工具类,提供了一系列静态方法实现对集合的搜索、排序、线程安全化等操作。3.List、Set、Map 之间的区别是什么? 它们...

2020-03-05 11:55:12 815 5

原创 Mybatis使用时注意事项

1. 特殊字符的处理第一种是把这些符号进行转义:&gt; >&lt; <&lt;&gt; <>&amp; &&apos; '&quot; "左边的就是转义的字符表示,用这些就能走在xml文件中正确使用步骤一种...

2020-03-04 21:39:52 335

原创 java多线程面试题整理及答案

1. 什么是线程 线程是程序执行的最小单位,它被包含在进程中,是进程中的实际运作单位。2.线程和进程的区别 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。CPU切换一个线程的花费比进程要小得多,同时创建一个线程的开销也比进程要小很多。3. 并行和并发的区别 ...

2020-03-04 18:15:45 752

原创 死锁(三)

死锁是什么及在并发程序中如何避免死锁一直是面试官比较偏爱的问题,并且死锁是一个很严重的问题,必须要引起重视。死锁: 当两个线程相互等待对方释放“锁”时就会发生死锁。出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续。如果线程A持有锁L并且想获得锁M,线程C持有锁M并且想要获得锁L,那么这两个线程将永远等待下去,这就是简单的死锁形式。多线程编程时应该注...

2020-03-04 15:58:27 160

原创 线程同步的方法(二)

线程同步 当多个线程访问同一个数据时,容易出现线程安全问题。需要让线程同步,保证数据安全。即当两个或两个以上线程访问同一资源时,需要某种方式来确保资源在某一时刻只被一个线程使用。线程同步的实现:1. 使用synchronized关键字(同步方法或代码块) java的每个对象都有一个内置锁,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。...

2020-03-04 14:29:39 200

原创 SQL调优

SQL调优对提高项目的性能有着至关重要的作用,介绍几种常见的SQL调优方式,仅供参考。1.对查询进行优化,要尽量避免全表扫描(带*号的查询),首先应考虑在 where 及 order by 涉及的列上建立索引。2. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, 如: selectid fromt wher...

2020-03-03 19:54:50 400

空空如也

空空如也

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

TA关注的人

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