- 博客(165)
- 资源 (5)
- 收藏
- 关注
原创 Java防止SQL注入(通过Filter过滤器功能进行拦截)
前言contentType=multipart/form-data的header以文件流的的形式上传文件时,如果代码中使用了Filter,会出现无法用Filter 中用ServletRequest.getParameter 方法取不到一并提交上来的参数multipart/form-data格式:package com.cn.unit.filter;import java.io.IOException;import javax.servlet.Filter;import java.
2022-05-18 15:24:02
6872
3
转载 Linux环境下离线安装mongodb
前言:官网下载地址(mongodb官网下载)1.在/usr/local下解压MongoDB1.在/usr/local下解压MongoDBcd /usr/local tar -zxvf mongodb-linux-x86_64-4.0.0.tgz MV mongodb-linux-x86_64-4.0.0.tgz MongoDB2.创建数据存储文件和日志文件cd mongodbmkdir datamkdir -p logs/mongodb.logchmod - R
2022-04-15 10:41:05
357
原创 Mongodb导出导入
Mongodb 表(Talbe) 集合(Collection) 行(Row) 文档(Document) 列(Col) 字段(Field) 主键(Primary Key) 对象ID(ObjectId) 索引(Index) 索引(Index) 嵌套表(Embeded Table)
2022-04-14 18:01:03
1347
转载 MultipartFile 上传方法
/** * <p class="detail"> * 功能:多文件上传 * </p> * @param files * @param destDir * @throws Exception * @author wangsheng * @date 2014年9月25日 */ public void uploads(MultipartFile[] files, String destDir, HttpServletRequest request) .
2021-12-12 17:27:47
1345
转载 redis的持久化,RDB,AOF区别
从这篇文章开始,我们来介绍Redis高可用相关的机制。Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 这篇文章我们先介绍Redis的高可用保障的基础:数据持久化。因为Redis的主从复制和自动故障恢复,都需要依赖Redis持久化相关的东西。同时,Redis的数据持久化也可以用来做数据备份,用来保障数据的安全性。Redis是一个内存数据库,它的数据都保存在内存中,如果实例宕机,那么数据则全部丢失。如何保证数据的完整性和安
2021-09-14 14:19:04
267
转载 maven 把sdk包/手动安装jar到本地仓库
maven 引入本地sdk包方法一:命令如下:mvn install:install-file -Dmaven.repo.local=C:\Users\liyong.m2\repository -DgroupId=com.aspose -DartifactId=words -Dversion=18.4 -Dpackaging=jar -Dfile=C:\Users\liyong\Desktop\jar\words-18.4.jarDmaven.repo.local:指定的maven仓库的地址
2021-07-16 11:26:16
830
转载 mapstruct使用详解
阅读正文:我们都知道,随着一个工程的越来越成熟,模块划分会越来越细,其中实体类一般存于 domain 之中,但 domain 工程最好不要被其他工程依赖,所以其他工程想获取实体类数据时就需要在各自工程写 model,自定义 model 可以根据自身业务需要映射相应的实体属性。这样一来,这个映射工程貌似并不简单了。阿森差点就犯难了……回到顶部序所以阿淼今天就要给大家安利一款叫mapstruct的插件,它就是专门用来处理 domin 实体类与 model 类的属性映射的,我们只需定义 map..
2021-07-08 16:23:37
802
转载 搞懂分布式技术1:分布式系统的一些基本概念
该系列博文会告诉你什么是分布式系统,这对后端工程师来说是很重要的一门学问,我们会逐步了解常见的分布式技术、以及一些较为常见的分布式系统概念,同时也需要进一步了解zookeeper、分布式事务、分布式锁、负载均衡等技术,以便让你更完整地了解分布式技术的具体实战方法,为真正应用分布式技术做好准备。如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。本文较为粗略地讲述了CAP与BASE理论,以及分布式系统需要解决的一些问题,更加
2021-07-08 15:37:32
853
原创 JUD并发编程篇
内容太大,懒得搬,给几个详细的文章地址文章1:https://blog.youkuaiyun.com/qq_44155967/article/details/106368483文章2:https://www.cnblogs.com/ghoster/p/7475132.html文章3:https://www.cnblogs.com/franson-2016/p/5554671.html
2021-07-08 15:12:43
156
原创 分别用Thread、Runnable、Callable实现线程
CallableCallable和Runnable一样,但是Callable可以有返回值,可以捕获异常。 方法不同,run()。public class test { /** * @Developer 大都督 * @date 2020/5/6 20:57 * **/ public static void main(String[] args) throws ExecutionException, InterruptedExcep
2021-07-08 10:49:27
184
转载 什么是CAS机制?
原文太长了 懒得搬 面试用的,原文链接,挺详细的:https://blog.youkuaiyun.com/qq_32998153/article/details/79529704
2021-07-08 10:15:51
98
转载 Java8新特性之函数式接口---面试
从Java8开始引入了函数式接口,其说明比较简单:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 java8引入@FunctionalInterface 注解声明该接口是一个函数式接口。1、语法定义/** * 定义函数式接口 * 接口上标注@FunctionalInterface 注解 */@FunctionalInterfacepublic interface ICollectionService { /**
2021-07-02 17:22:59
577
转载 为什么建议使用你LocalDateTime,而不是Date?
为什么需要LocalDate、LocalTime、LocalDateTimeDate如果不格式化,打印出的日期可读性差Tue Sep 10 09:34:04 CST 2019使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的 SimpleDateFormat的format方法最终调用代码:private StringBuffer format(Date date, StringBuffer toAppendTo,
2021-07-02 16:38:56
131
原创 java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢
上一篇说了java中多个子类实现同一个接口,怎么区分调的是哪一个实现类java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢?答:抽象类无法实例化,实例化的只能是子类。如Father是一个抽象父类,有一个talk抽象方法,和一个speak的普通方法。Son,Son2是他的子类,有一个talk方法的具体实现。那么可以Father f =new Son();这里不能new Father,抽象类无法实例化,而f.talk();调用的是Son的t
2021-07-02 11:44:51
6168
4
转载 Spring的注解@Qualifier用法
在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢?根据注入资源的注解不同实现的方式有一点小小的区别下面上铺垫图##在Controller中使用 @Autowired注入时Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。##使用@Resource注入时使用@..
2021-07-02 11:39:25
162
原创 事务的四种隔离级别和七种传播机制----面试
事务的四种隔离级别和七种传播机制:链接文章:https://blog.youkuaiyun.com/qq_2300688967/article/details/85220087MySQL8.0 查看默认事务的隔离级别,并模拟测试链接文章:https://blog.youkuaiyun.com/qq_39455116/article/details/86238033...
2021-06-28 16:46:49
227
原创 java动态代理---面试
代理模式:代理模式在Java中特别常见,如spring AOP功能就是用代理来实现的。代理模式作用是:在不修改被代理对象功能的基础上,通过对代理类进行扩展,进行一些功能上的附加与增强。一般使用代理模式我们需要先定义一个接口,静态代理只是一种简单的java代码功能扩展。而动态代理利用了反射机制,使用更简单,但背后逻辑…先说明一点,动态代理代理的是接口,而不是类,Proxy类产生的代理对象是Proxy的一个实例,这个实例实现了我们定义的接口一、静态代理面向接口的编程,代理类与真实类继承自同一个接口(
2021-06-28 10:28:01
996
原创 Redis分布式锁的正确实现方式(Java版)
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间
2021-06-25 17:25:09
471
转载 XML解析——Java中XML的四种解析方式
XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。 XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。 针对以下XML文件,会对四种方式进行详细描述:<?xml version="1.0
2021-06-25 16:15:15
4014
2
转载 什么是跨域及怎么解决跨域问题?
什么是跨域?这篇博文解释的挺清楚,我直接引用https://blog.youkuaiyun.com/lambert310/article/details/51683775跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。不明白没关系,举个栗子:http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)http:/.
2021-06-25 14:54:25
491
转载 Java虚拟机--内存结构
1.JVM是什么? JVM:Java Virtual Mechinal(Java虚拟机).它是一个虚构的计算机,是通过在实际的计算机上模拟各种功能来实现的。JVM的主要工作是解释自己的指令集(字节码,如java源码编译成class文件在虚拟机上运行)并映射到本地的CPU指令集或OS的系统调用。Java语言跨平台的本质就是不同的操作系统使用不同的JVM映射规则,使其与操作系统无关,从而实现跨平台。2.JVM的内存结构是什么样子? Java虚拟机在运行Java程序的时候,会把它所管理的内存划分为若干
2021-06-25 11:06:03
215
转载 Redis等缓存数据库为什么访问会比较快?
首先,我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 memcached(简称mc)。首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单的数据结构,比如 string存储;redis却提供了大量的数据结构,比如string、list、set、hashse..
2021-06-24 10:56:23
494
转载 RocketMQ实现分布式事务原理---面试
之前讲过有关分布式事务2PC、3PC、TCC的理论知识,博客地址:1、分布式事务(1)---2PC和3PC原理2、分布式事务(2)---TCC原理一、举个分布式事务场景
2021-06-18 18:44:58
247
转载 字符串常量池在哪里
字符串常量池在哪里在分析字符串常量池的位置时,首先了解一下堆、栈、方法区: 堆 存储的是对象,每个对象都包含一个与之对应的class JVM只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定 栈 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象) 每个栈中的数据(原始类型和对象引用)都...
2021-06-17 15:05:55
6791
6
转载 Integer和int 面试题
最近在招聘⾯试的过程中,考察⼀些候选⼈的基础掌握能⼒中发现,还是有大多数有了有1~3年的开发者在基础这块⼉掌握的不够牢靠,没有去思考过为什么这样做,以及这样做的原因是什么?那么今天我们就来聊聊Java中的Integer和int,以及他们在⾯试中⼀般会如何考候选⼈呢?⾸先我们来看如下的⼀些⾯试连环炮:开发中你在定义常量的时候,⼀般是⽤的Integer还是int,他们之间有什么区别?什么叫包装类,它是如何包装基本类型的?Integer的⾃动装箱和⾃动拆箱的原理是什么?以及所发⽣在哪个阶段?带来的好处
2021-06-17 10:16:06
470
转载 MyBatis 一级缓存、二级缓存全详解
什么是缓存缓存就是内存中的一个对象,用于对数据库查询结果的保存,用于减少与数据库的交互次数从而降低数据库的压力,进而提高响应速度。什么是MyBatis中的缓存MyBatis 中的缓存就是说 MyBatis 在执行一次SQL查询或者SQL更新之后,这条SQL语句并不会消失,而是被MyBatis 缓存起来,当再次执行相同SQL语句的时候,就会直接从缓存中进行提取,而不是再次执行SQL命令。MyBatis中的缓存分为一级缓存和二级缓存,一级缓存又被称为 SqlSession 级别的缓存,二级...
2021-06-16 18:23:46
299
原创 springCloud+nacos简单搭建
1.nacos安装搭建 参考文章:http://www.bubuko.com/infodetail-3682508.html官网: nacos:https://nacos.io/zh-cn/docs/quick-start.html默认端口:88482.搭建springcloud+nacos项目1、前置1、前置介绍, 环境, 以及对应的依赖说明 (重点)2、创建项目 (主要是给基础像我一样薄弱的同学使用)3、配置对应的pom文件 (重点)4、以服...
2021-05-27 10:25:14
3188
1
转载 mybatis-plus条件构造器 (QueryWrapper,LambdaQueryWrapper 比较)
1 QueryWrapper使用方式 QueryWrapper<User> wrapper = new QueryWrapper<User>() .eq(StringUtils.isNotBlank(user.getNickName()), "nick", user.getNickName()) .eq(user.getId() != null,"id", user.getId());
2021-05-26 21:30:27
2668
转载 Spring Boot 加@Async 线程池的创建的两种方式
前言最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Sring是以配置文件的形式来开启@Async,而SpringBoot则是以注解的方式开启。我们可以使用springBoot默认的线程池,不过
2021-05-24 17:11:22
354
转载 Java中的ThreadLocal详解
一、ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。 ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐Threa
2021-05-15 10:35:56
239
转载 使用idea时代码提错分支解决方案
使用idea时,常见的和分支有关的错误操作:1.在错误的分支上写了很多代码,尚未提交(commit)使用以下命令即可解决:git add .(把所有改动暂存,idea上对应命令 Git->Add)git stash(把暂存的文件提交到git的暂存栈,idea上对应命令Git->Repository-> Stash Changes)git checkout本该提交代码的分支 (idea上对应命令 Git->Repository-> branchs->选中分支-...
2021-05-10 17:07:06
3394
转载 如何将idea本地已有的新项目提交到gitlab上
如何将idea本地已有的新项目提交到gitlab上在idea的菜单项选择 VCS》Import into Version Control》Create Git Repository 出现Select directory for git init对话框,默认是直接定位到当前项目文件所在的磁盘目录,一般git初始化就在当前项目的根目录,不需要修改路径,直接点击OK确定即可。 init完成之后,可以看到原本的项目文件名变成了红色了,红色在idea的git版本表示未add的文件,同时在系统资源管理中打.
2021-02-23 11:16:04
713
转载 如何把本地idea上的项目上传到github上
IDEA配置github并上传项目注意看标题 是 上传到github上,所以你的github地址是 : github.com 而不是其他的。1.在github中创建一个账号:https://github.com/join?source=header-home2.下载并安装git:https://git-scm.com/downloads3.安装成功后打开Git Bash,输入下列命令,设置git全局用户名和邮箱$ git config --global user.name "Your.
2021-02-23 11:14:22
313
转载 java中的基本数据类型一定存储在栈中吗?
首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的。下面让我们一起来分析一下原因:基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存中的存储问题来解释一下: 一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因 在方法...
2021-01-07 15:55:22
625
2
tigase-server-tigase-server-8.0.0.zip 源码
2019-11-26
sigar.zip文档,希望对你有帮助
2019-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人