自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 mybatis动态sql中的trim标签的使用

转载:https://www.cnblogs.com/qiankun-site/p/5758924.htmltrim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:  1、  select * from user  <trim prefix="WHERE" prefixoverride="AND |OR">    <if test="name != null and name.length()>0"> AND name=#{.

2021-07-23 10:05:11 259

原创 python 编程基础总结

输入输出流print list常用函数求长度len(list)求最大值/最小值:max(val1, val2, val3)排序(1)原地排序list.sort()(2)自定义排序:sorted(iterable[, cmp[, key[, reverse]]])特点:可以对所有可迭代的对象进行排序操作。返回的是一个新的 list,不修改原来的对象。参数:iterable – 可迭代对象。cmp – 可选,比较的函数,这个具有两个参数,参数的值都是从可迭.

2021-03-28 00:49:09 318 1

原创 Mybatis架构原理

核心组件SqlSessionFactoryBuilder (构造器):它会根据配置或者代码来生成 SqISessionFactory,采用的是分步构建的 Builder 模式。 SqlSessionFactory (工厂接口):依靠它来生成 SqlSession,使用的是工厂模式。 SqlSession (会话): 一个既可以发送 SQL 执行返回结果,也可以获取 Mapper 的接 口。在现有的技术中, 一般我们会让其在业务逻辑代码中“消失”,而使用的是 MyBatis 提供的 SQLMappe

2021-03-25 18:38:42 238 1

原创 浅谈Redis分布式锁的正确实现方式

浅谈Redis分布式锁的正确实现方式这篇文章主要介绍了浅谈Redis分布式锁的正确实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁

2021-03-24 17:08:42 185

原创 笔试题整理

链接:https://www.nowcoder.com/discuss/615992?type=2来源:牛客网第一题n副扑克,张数为m,大小为1~m,每幅扑克抽一张,求和恰好为k的组合数,结果对10e9+7取余数。思路:动态规划。和为i,j副扑克,,dp[i][j] = dp[i-1][j-1]+...+dp[i-m][j-1](此处需要判断 i-m>0 )。初始化,j=1,i<=m,dp[i][j] = 1; i==j,dp[i][j] = 1,后面的情况不可能存在,所以推出..

2021-03-23 11:12:46 92

转载 两道面试题,带你解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题:class Grandpa{ static { System.out.println("爷爷在静态代码块"); }} class Father extends Grandpa{ static { System.out.println("爸爸在静态代码块"); } public static int factor = 2

2021-03-23 11:07:05 104

原创 java后台实习面试知识点整理

Java基础多线程Spring数据库MySQLMongoDBRedisORMMybatis简介Mybtis是持久层框架,通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。官方文档:Mybtis中文文档入门A. 安装要使用 MyBatis, 只需将mybatis-x.x.x.jar文件置于类路...

2021-03-22 17:30:31 213 2

转载 Redis分布式锁的使用和实现原理详解

这篇文章主要给大家介绍了关于Redis分布式锁的使用和实现原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧模拟一个电商里面下单减库存的场景。1.首先在redis里加入商品库存数量。2.新建一个Spring Boot项目,在pom里面引入相关的依赖。 1 2 3 4 5 6 7 8 9 ...

2021-03-19 11:17:38 1050

转载 基于redis分布式锁实现“秒杀”

业务场景所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。思路分析一些可能的实现刚才提到过,实现秒杀的关键点是控制线程对资源的争抢,根据基本的线程知识,可以不加思索的想到下面的一些方法:1、秒杀在技术层面的抽象应该就是一个方法,在这个方法里可能的操作是将商品库存-1,将商品加入用户的购物车等等,在不考虑缓存的.

2021-03-16 11:59:10 122

转载 操作系统-磁盘基本概念

B树、B+树的基本概念具体参见博客:快速理解平衡二叉树、B-tree、B+tree、B*tree磁盘基本概念磁盘结构磁盘由多个盘片构成并封装在一个密封的容器内,每个盘片有两个盘面; 盘片中央有一个可以旋转的主轴,它使得盘片以固定的旋转速率旋转,通常5400rpm或7200rpm; 盘面由一组磁道同心圆组成,每个磁道被划分为了一组扇区,扇区之间由一些间隙隔开,这些间隙中不存储数据,每个扇区包含数量相等的数据位,通常是512个字节。磁盘的读/写原理和效率磁盘上数据必须用一个三维地址

2021-03-16 10:43:25 2091

转载 快速理解平衡二叉树、B-tree、B+tree、B*tree

原文:https://my.oschina.net/u/3370829/blog/1301732一、满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。或者说:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。或者说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。二、完全二叉树完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与..

2021-03-15 20:43:07 466

转载 MySQL 技术内幕整理笔记

MySQL架构设计——MyISAM存储引擎与InnoDB存储引擎——从MySQL5.1开始,MySQL引入了一个新的概念,插件式存储引擎体系结构。可以做到存储引擎层与SQL层各自更为独立,耦合更小,最重要的是方便了存储引擎的加载与移出,可以做到运行时加载新的存储引擎,而不影响MySQL正常运行。所以,这增加了MySQL的灵活性,可以综合各种存储引擎的长处实现功能,可以说是MySQL最强大的一面!提到MySQL,不了解MyISAM与InnoDB是说不过去的,它们是最著名、使用最广泛的两种MySQL存储

2021-03-15 10:40:25 189

原创 RabbitMq 实现延迟队列的理解

基础知识死信队列中的消息会在以下三种情况下变为死信:延迟队列(就是业务队列,只是我们想让这个业务队列中的消息延迟一段时间后再执行而不是立即执行,可以设置让该队列中的所有消息延迟同样的时间后再被消费,或者给不同的时间设置不同的延迟时间),但实际上rabbitMQ并没有直接的延迟队列可以用,我们可以利用rabbitMQ的以下两个特性来实现这样的延迟队列:(1)TTL (time to live) 生存时间(2)DLX (Dead Letter Exchanges)死信交换机死信交换.

2021-03-14 01:05:29 192

转载 Spring Boot + RabbitMQ死信机制实现延迟队列

基本概念何为延迟队列?顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。延迟队列能做什么?延迟队列多用于需要延迟工作的场景。最常见的是以下两种场景: 延迟消费。比如: 用户生成订单之后,需要过一段时间校验订单的支付状态,如果订单仍未支付则需要及时地关闭订单。 用户注册成功之后,需要过一段时间比如一周后校验用户的使用情况,如果发现用户活跃度较低,则发送邮件或者短信来提醒用户使用。 延迟重试。比如消费者

2021-03-13 16:34:24 273

转载 消息队列之 RabbitMQ

市面上的消息队列产品有很多,比如老牌的 ActiveMQ、RabbitMQ ,目前我看最火的 Kafka ,还有 ZeroMQ ,去年底阿里巴巴捐赠给 Apache 的 RocketMQ ,连 redis 这样的 NoSQL 数据库也支持 MQ 功能。总之这块知名的产品就有十几种,就我自己的使用经验和兴趣只打算谈谈 RabbitMQ、Kafka 和 ActiveMQ ,本文先讲 RabbitMQ ,在此之前先看下消息队列的相关概念。什么叫消息队列消息(Message)是指在应用间传送的数据。消息可以

2021-03-12 11:54:52 134

转载 Mac上docker安装mongodb,并使用studio3T可视化工具

1.拉取mongo的最新镜像docker pull mongo:latest2.查看mongo的镜像docker images3.运行容器docker run -itd --name mongo -p 27017:27017 mongo --auth-p 27017:27010 将容器的27017端口映射到本地的27017端口,意思就说通过本地的27017端口就能访问到mongo服务 -auth 访问容器服务时需要密码4.查看容器信息,并且添...

2021-03-08 15:34:59 949 1

转载 Python字典及基本操作(超级详细)

字典也是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。形象地看,字典中 key 和 value 的关联关系如图 1 ..

2021-02-26 11:49:51 207

转载 Python list列表实现栈和队列

队列和栈是两种数据结构,其内部都是按照固定顺序来存放变量的,二者的区别在于对数据的存取顺序:队列是,先存入的数据最先取出,即“先进先出”。 栈是,最后存入的数据最先取出,即“后进先出”。考虑到 list 类型数据本身的存放就是有顺序的,而且内部元素又可以是各不相同的类型,非常适合用于队列和栈的实现。本节将演示如何使用 list 类型变量来实现队列和栈。Pythonlist实现队列使用 list 列表模拟队列功能的实现方法是,定义一个 list 变量,存入数据时使用 insert() 方法,.

2021-02-26 11:34:27 1629

转载 【实践1】 使用IDEA创建 springboot + mybtis + mysql 小demo 项目全过程

鉴于隔很久再在IDEA新建springboot项目时,会出现对步骤不确定的情况,因此,写下这篇博客记录创建一个可运行的springboot+mybatis项目的全过程。步骤如下:1. 创建项目(1.打开IDEA(2.File ==> new ==> project ,如图:(3.选择spring Initializr ==> 右边的Project SDK我选的是我已经安装的1.8版本,其他默认 ==> 点击next(4.填写Group (自己...

2021-02-23 10:22:40 867

转载 Docker 启动 MySQL 容器

什么是Docker?Docker是一种工具,它让容器创建,部署和运行应用程序变得更加容易。 容器使开发人员可以将应用程序与所需的所有部分(如库和其他依赖项)打包在一起,并将其作为一个包进行部署。 这样,借助容器,开发人员可以放心,该应用程序可以在任何其他Linux机器上运行,而不用管该机器的环境配置。安装 Docker Desktop前往官方网站:www.docker.com/get-started根据操作系统,下载并安装对应的 Docker Desktop。验...

2021-02-19 20:45:49 954

转载 Docker新手教程(07)Docker与MySQL

Docker新手教程(07)Docker与MySQL07、Docker与MySQL1、场景说明和使用思路场景说明:既然说服务器,怎么能离开各种数据库呢?而 MySQL 显然是最好用的数据库之一。但是博主自己经验来说,最讨厌配 MySQL 的环境了,还好有 Docker 可以简单解决这个问题。使用思路:Docker的容器是可以被删除、复制的。但显然,MySQL 作为一个数据库,是不能接受这样的情况发生(因为会导致数据丢失)。初步的解决思路,是容器负责业务逻辑,而存储数据存储

2021-02-18 13:47:32 95

转载 Spring MVC【入门】就这一篇!

https://www.jianshu.com/p/91a2d0a1e45a

2021-02-18 12:55:29 83

转载 springboot整合mybatis,redis,代码(一)

一 搭建项目,代码工程结构使用idea或者sts构建springboot项目二 数据库sql语句SQLyog Ultimate v12.08 (64 bit)MySQL - 5.7.14-log **********************************************************************//*!40101 SET NAMES utf8 */;create table `person` ( `id` in...

2021-02-18 12:54:48 88

转载 spring中注解注入 context:component-scan 的使用说明

context.component-scan节点通常情况下我们在创建spring项目的时候在xml配置文件中都会配置这个标签,配置完这个标签后,spring就会去自动扫描base-package对应的路径或者该路径的子包下面的java文件,如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean注:在注解后加上例如@Component(value=”abc”)时,注册的这个类的bean的id就是adc.

2021-02-10 10:50:10 469

转载 Mybatis-Spring 注入映射器

mybatis-spring简介 入门 SqlSessionFactoryBean 事务 使用 SqlSession 注入映射器 注册映射器 发现映射器 使用 Spring Boot 使用 MyBatis API 使用 Spring Batch 示例代码 项目文档 项目信息 项目报表注入映射器与其在数据访问对象(DAO)中手工编写使用SqlSessionDaoSupport或SqlSessionTemplate的代码,还不如让 Mybati...

2021-02-09 21:41:17 299

转载 MyBatis Generator 超详细配置

MyBatis Generator 超详细配置想快速开始,请直接拉到最后,看整体配置。MyBatis Generator 是 MyBatis 提供的一个代码生成工具。可以帮我们生成 表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql的xml(mapper)。MyBatis Generator 是一个独立工具,你可以下载它的jar包来运行、也可以在 Ant 和 maven 运行。使用环境我是在 maven 中配置并使用的。这篇文章也是基于 maven 环境来讲

2021-02-08 22:03:24 1286

转载 DAO层、Service层和Controller层的区别

1、dao层:数据访问层dao层属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参...

2021-02-08 21:02:54 20073 1

转载 mybatis的association以及collection的用法

前言:在项目中,某些实体类之间肯定有关键关系,比如一对一,一对多等。在hibernate 中用one to one和one to many,而mybatis 中就用association和collection。association: 一对一关联(has one)collection:一对多关联(has many)注意,只有在做select查询时才会用到这两个标签,都有三种用法,且用法类似。欢迎大家关注我的公众号javawebkf,目前正在慢慢地将简书文章搬到公众号,以后简书和公众号文章将同步更.

2021-02-07 13:58:11 653

转载 Mybatis学习第一天——Mybatis的安装配置以及基本【增删改查】操作

1.Mybatis下载  Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适配。目前Mybatis能够在githup上直接下载:https://github.com/mybatis/mybatis-3/releases,有多个版本可以选择。2.Mybatis文件介绍lib:mybatis依赖包;mybatis-3.4.6.jar:核心包;3.myba...

2021-02-06 14:59:55 468

转载 Getting values with the right type in Redis

Question:I'm using redis in my python application to store simple values like counters and time stamp lists, but trying to get a counter and comparing it with a number I came across a problem.If I do:import redis...myserver = redis.Redis("localhos

2021-02-02 16:42:03 66

转载 Redis in Python: difference of with and without multi() function

Question :Inredis, it says:A Redis transaction is entered using the MULTI command.For itsPythonAPI:r = redis.Redis(...)pipe = r.pipeline()current_value = pipe.get('someKey')#pipe.multi()pipe.set('someKey', current_value + 1)pipe.execute(...

2021-02-02 11:53:17 80

转载 Python2/ python3 accessing and overwriting variables in nested functions

对比In Python 3.x,内部函数可以对外部函数中的局变量进行访问,但不能对他进行修改如果想修改,you can use thenonlocalkeyword:def outer(): string = "" def inner(): nonlocal string string = "String was changed by a nested function!" inner() return string..

2021-01-20 20:05:26 85

转载 Difference between new operator in C++ and new operator in java

In C++(1)Method 1 (usingnew)MyClass* myClass = new MyClass();myClass->MyField = "Hello world!";Allocates memory for the object on thefree store(This is frequently the same thing as theheap) Requires you to explicitlydeleteyour object lat...

2021-01-16 16:31:58 81

转载 Brew install Redis on Mac

type below:brew updatebrew install redisTo have launchd start redis now and restart at login:brew services start redisto stop it, just run:brew services stop redisOr, if you don't want/need a background service you can just run:redis-

2021-01-12 19:27:29 117

原创 macOs Catalina 10.15 系统环境配置 + VScode + python + redis 等

路径/配置文档说明基本操作:1. 打开terminal默认的即为当前用户路径:/Users/ssun/ (也可以用 cd ~ 打开,即~ =/Users/ssun/ ) cd .. 返回父目录2. ls 列出当前目录下文件信息 ls -a 列出包含后缀的文件详细信息 系统变量配置:属于zsh的配置/etc/zshrc(注意没有带点,详见注释:# System-wide profile for intera...

2021-01-12 18:02:16 390

转载 The PATH Variable

After reading this document, you should know what the PATH variable is, how to set it, and how to view the directories currently therein.MotivationConsider the following UNIX terminal session:dbettis@rhino[~]$ ls...When you type the commandls...

2021-01-12 17:10:38 135

转载 mac下添加环境变量

使用惯了win,在用mac系统添加环境变量总觉得麻烦,而且几个配置文件也没弄到底有什么区别,今天就来总结一下1.环境变量的作用:我们先来看这样的一个使用场景1,我们有一个程序Java,需要读取某个文件(/data/file.txt)。 那么我们在运行的时候是不是需要做如下的步骤: cd 到Java的目录下; 执行Java命令; 但是,当我们需要同时使用多个工具的时候,比如又有java、maven、git等等,而且是多台机器的时候,我们通常需要很多繁琐的cd操作。而配置环境变量 就可

2021-01-12 16:40:35 536

转载 Mac OS X 中 Zsh 下 PATH 环境变量的正确设置

在 Mac OS X 中使用 zsh,环境变量 PATH 一不小心就会变得很紊乱,表现为自己设置的路径总是被放到系统路径之后,部分路径还会有重复。这是我们不太了解 zsh 启动时加载文件的顺序和 Mac OS X 的 shell 类型导致的。zsh 启动过程中会依次读取以下文件:/etc/zshenv ????????????????????????????/.????????ℎ????????????(ZDOTDIR/.zshenv(ZDOTDIR 未设置时默认为 $HOME) 如果是 log

2021-01-12 14:02:22 5311

转载 vim 编辑器使用

Vim模式启动Vim编辑器时,您处于正常模式。在这种模式下,您可以使用vim命令并浏览文件。要输入文字,您需要按i键进入插入模式。使用此模式,您可以像在常规文本编辑器中一样插入和删除字符。要从其他任何模式返回正常模式,只需按Esc键。在Vim / Vi中打开文件要使用Vim打开文件,请键入vim,然后输入要编辑或创建的文件的名称:vim file.textCopy另一种打开文件的方法是启动编辑器,然后键入:e file_name,其中file_name是要打开的文件的名称。

2021-01-12 13:37:22 131

原创 【latex学习笔记】 论文写作工具实用技巧

1. 定义Paper revising和Submission Mode即在生成的pdf 自定义标记待讨论的部分(ps: vscode 的插件有点问题,编译顺序或者中间文件,会影响引用最后的生成,重新复制粘贴下premble.tex 又正常了,玄学,或许是因为preamble.tex只能在编译前修改一次,只要编译过了,再修改在编译就报错了。。)使用的语法:[Latex]ifhen 宏包的使用提供了两个强大的判断条件:\ifthenels...

2020-12-31 00:48:43 1223

空空如也

空空如也

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

TA关注的人

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