java
薛大白
我就是我,平凡却又无法代替
展开
-
Linux 安装使用 Docker
我们可以从中央仓库下载一个镜像,也可以自己手动去制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息创建自定义镜像就需要创建一个Dockerfile文件,如下为Dockerfile的语言from: 指定当前自定义镜像依赖的环境copy: 将相对路径下的内容复制到自定义镜像中workdir: 声明镜像的默认工作目录run: 执行的命令,可以编写多个cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)原创 2024-03-12 16:06:45 · 1209 阅读 · 0 评论 -
SpringBoot+RabbitMQ延迟消息配置开发(使用死信队列)
SpringBoot2.X+RabbitMQ延迟消息配置开发死信交换机和死信队列开发使用场景:比如商户通过审核后必须要在24小时之内上传对应的资质信息,如果未上传则冻结该商户,那么消息的过期时间设置为24小时,24小时过后则消息进入死信队列,消费者那到死信的队列的数据后对改商户实施冻结处理声明死信队列,交换机以及路由key创建死信队列,交换机并根据路由key将其绑定声明普通队列,交换机以及路由key创建普通队列,交换机并根据路由key将其绑定(普通队列是没有消费者消费的,并设置队列的过期时间以原创 2021-11-13 15:11:07 · 1912 阅读 · 0 评论 -
RabbitMQ的多个工作模式总结
RabbitMQ的多个工作模式总结对照官网总结https://www.rabbitmq.com/getstarted.html简单模式一个生产、一个消费,不用指定交换机,使用默认交换机工作队列模式一个生产,多个消费,可以有轮训和公平策略,不用指定交换机,使用默认交换机发布订阅模式fanout类型交换机,通过交换机和队列绑定,不用指定绑定的路由健,生产者发送消息到交换机,fanout交换机直接进行转发,消息不用指定routingkey路由健路由模式direct类型交换机,过原创 2021-11-10 16:48:07 · 618 阅读 · 0 评论 -
Spring 事务
事务:多个操作,要么同时成功,要么失败后一起回滚具备ACID四种特性Atomic(原子性)Consistency(一致性)Isolation(隔离性)Durability(持久性)事物传播行为介绍:如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为@Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务,没有的话新建一个(默认情况下)@Transactional(prop原创 2021-11-06 10:30:14 · 88 阅读 · 0 评论 -
自定义全局异常类
自定义全局异常类简介:开发自定义异常和配置自定义异常 继承 RuntimeException/** * @Description 自定义异常类 * @Date 11:29 2021/10/25 * @Param **/public class XDException extends RuntimeException{ private Integer code; private String msg; public XDException(Integer原创 2021-11-05 10:47:23 · 172 阅读 · 0 评论 -
返回值对象
public class JsonData { //状态吗 0 成功 1处理中 -1失败 private Integer code; //业务数据 private Object data; //信息描述 private String msg; public JsonData(){} public JsonData(Integer code, Object data, String msg){ this.原创 2021-11-05 10:43:01 · 144 阅读 · 0 评论 -
使用Guava Cache 缓存
Guava Cachegithub地址:https://github.com/google/guava/wiki/CachesExplained全内存的本地缓存实现高性能且功能丰富线程安全,操作简单 (底层实现机制类似ConcurrentMap)添加依赖 <!--guava依赖包--> <dependency> <groupId>com.google.guava</groupId> <artifact原创 2021-11-05 10:34:02 · 220 阅读 · 0 评论 -
Spring boot 拦截器跨域解决
拦截器类public class CorsInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //表示接受任意域名的请求,也可以指定域名 response.setH原创 2021-11-05 10:23:39 · 899 阅读 · 0 评论 -
JAVA代码块先后执行顺序
public class Main { public static void main(String[] args) { System.out.println("A"); new Main(); new Main(); } public Main() { System.out.println("B"); } { System.out.println("C"); }原创 2021-03-24 11:47:37 · 66 阅读 · 0 评论 -
过滤器过滤Referer信息
JAVA代码package com.umcservice.filter;import org.apache.commons.lang3.StringUtils;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**原创 2021-03-22 16:09:48 · 790 阅读 · 0 评论 -
使用过滤器限制ip地址访问自己的项目
JAVA后代端代码package com.umcservice.filter;import com.umcservice.util.DBUtil;import javax.servlet.*;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOExcep原创 2021-03-22 16:05:31 · 608 阅读 · 0 评论 -
oracle原生JDBC访问数据库
/** * */package com.umcservice.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import...原创 2018-10-23 10:48:06 · 609 阅读 · 0 评论 -
原生JDBC编程的六个步骤
JDBC编程的六个步骤: 准备工作中导入ojdbc文件,然后右键选中添加路径 build path–>到oracle安装目录里添加oracle的ojdbc.jar包 (1).注册驱动 Class.forName(“oracle.jdbc.OracleDriver”); (2).连接数据库 String url = “...原创 2018-07-23 21:32:17 · 1092 阅读 · 0 评论 -
Java关键字final、static使用总结
1. finalfinal类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被继承 final成员变量表示常量,只能被赋值一次,赋值后不能再被改变 final不能用于修饰构造方法 private不能被子类方法覆盖,private类型的方法默认是final类型的final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三...原创 2018-07-23 21:45:26 · 168 阅读 · 0 评论 -
JDBC的含义,Statement和preparedStatement的区别?
概念:JDBC(Java DataBase Connectivity)是一种数据库连接技术,能实现Java程序对各种数据 库的访问。由一组使用Java语言编写的类和接口(JDBC API)组成,他们位于java.sql以及javax.sql中。Statement和preparedStatement的区别? 1、 PreparedStatement接口继承Statement, Pre...转载 2018-07-23 21:59:11 · 589 阅读 · 0 评论 -
Jsp的四大作用域与九大对象
内置对象特点:由JSP规范提供,不用编写者实例化。通过Web容器实现和管理所有JSP页面均可使用只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)常用内置对象:输出输入对象:request对象、response对象、out对象通信控制对象:pageContext对象、session对象、application对...转载 2018-07-23 22:20:47 · 357 阅读 · 0 评论 -
跨域问题的三种解决方案
概述跨域问题在分布式应用中经常会遇到,这里仅仅介绍跨域的三种解决方案,对跨域的概念及原因不做解释,感兴趣的朋友可以网上自行百度Nginx代理这种方式比较简单,将A应用和B应用都通过一个统一的地址进行转发,这样就可以避免跨域问题出现。server { listen 80; server_name www.gameloft9.to...转载 2018-07-15 14:01:31 · 5446 阅读 · 0 评论 -
Redis中删除过期Key的三种策略
项目中有个接口要频繁调用查询数据库中的数据,为了降低数据库的压力,所以把一部分记录先缓存在redis中,对redis中的数据设置了期限。今天无意间发现一个问题,使用dbsize查询出来的数量,比实际缓存量要高一部分。用redis-cli keys '*'|wc -l获取到的数据和实际情况是一样的。如下面两图: 对比发现,redis中key的总量为286957,比数据库中的...转载 2018-08-07 11:27:02 · 881 阅读 · 0 评论 -
MySQL查询语句执行顺序
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。 下面我们来具体分析一下查询处理的每一个阶段...转载 2018-08-13 14:24:24 · 299 阅读 · 0 评论 -
在MyEclipse导入项目后,js文件报错怎么办
首先代码是不会出错的(只要代码的来源可靠),那么这种情况如何解决呢:选中文件,右击鼠标——选中并点击“MyEclipse”——选中并点击“Exclude From Validation”即可;如果还是无法解决问题,则可这样做:选中文件,右击鼠标——选中并点击“MyEclipse”——选中并点击“Run Validation”即可...原创 2018-09-11 17:04:54 · 623 阅读 · 1 评论 -
如何解决秒杀性能问题
如何解决秒杀的性能问题和超卖的讨论阅读数:34972 最近业务试水电商,接了一个秒杀的活。之前经常看到淘宝的同行们讨论秒杀,讨论电商,这次终于轮到我们自己理论结合实际一次了。 ps:进入正文前先说一点个人感受,之前看淘宝的ppt感觉都懂了,等到自己出解决方案的时候发现还是有很多想不到的地方其实都没懂,再次验证了“细节是魔鬼”的理论。并且一个人的能力有限,只有大家一起讨论才能想的更周...转载 2018-07-09 21:57:23 · 365 阅读 · 0 评论