在项目的开发过程当中,请求乱码是一件非常常见的事情,特此记录下如何处理请求和响应中文乱码的问题,尽管问题很容易处理,但是有时一个不注意半天都搞不定。 HttpServletRequest HTTP请求中文乱码以及HttpServletResponse 响应中文乱码处理 java知识
分布式锁一般有三种实现方式: 数据库乐观锁 基于ZooKeeper的分布式锁 基于Redis的分布式锁 这里主要记录下基于Redis的分布式锁 Redis加锁 springboot2.1以后的版本可以直接使用redisTemplate提供的setIfAbsent方法进行加锁 相当于使用redis命令:SET key value [EX seconds] [PX millisecounds] [NX|XX] redisTemplate.opsForValue().setIfAbsent(key,value,time,TimeUnit) 为什么是set命令而不是setNx命令? 因为setNx 无法设置key过期时间 需要通过expire来为key设置过期时间,意味着加锁是两条命令,不满足原子性。 锁的过期时间设置多少合适,是否可以不设置? 锁的过期时间一定是要有的,不然留着过年么?过期时间根据具体的业务逻辑来设置,但是一定要大于代码执行的时间。例如: //加锁 锁的过期时间为5秒 Boolean lock = redisTemplate.opsForValue().set.... JAVA 基于Redis的分布式锁 java知识
最近在使用mybatis-plus,发现在对于一些简单函数的使用,官方文档上面没有说明,特此记录下自己的使用方式 max,min,sum函数的使用 QueryWrapper<MemberLevel> queryWrapper = new QueryWrapper<>(); queryWrapper.select("max(level_sort) as levelSort"); 相当于sql : select max(level_sort) as levelSort from member_level 其中的max可以换成min,sum等函数 就是如此的简单 mybatis-plus max函数,sum函数的使用 java知识
开发当中经常时间转换非常常见,最近的项目当中使用了LocalDateTime,特此记录下LocalDateTime的常用转换。 LocalDateTime和时间戳互转 /** * 获取到毫秒级时间戳 * @param localDateTime 具体时间 * @return long 毫秒级时间戳 */ public static long toEpochMilli(LocalDateTime localDateTime){ return localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(); } /** * 毫秒级时间戳转 LocalDateTime * @param epochMilli 毫秒级时间戳 * @return LocalDateTime */ public static LocalDateTime ofEpochMilli(long epochMilli){ return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneOffs.... LocalDateTime和时间戳,Date,字符串互转 java知识
最近要找工作了,复习总结一下面试题,总有些问题一直在问,总有些问题慢慢消失了,也总有些问题第一次遇到。 JAVA 基础篇 有了基本类型为什么还要包装类? "=="和equals方法究竟有什么区别? 两个对象的hashCode()相等,则equals()也一定为true? String,StringBuffer,StringBuilder的区别和联系 final, finally, finalize的区别 Java抽象类与接口的区别 Java集合篇 List和Set,map的区别 hashMap的实现原理 List集合元素的正确删除方式 JavaWeb篇 Session和Cookie区别 拦截器和过滤器的区别 Servlet的生命周期 Spring/SpringMVC/SpringBoot 为什么要使用spring spring常用的三种注入方式 spring使用了那些设计模式 springMVC执行流程 springboot面试题 数据库篇 drop,delete与truncate的区别 inn.... JAVA面试题总结(不断添加整理当中。。。。。。) java知识
前言 之前已经学习了 Spring boot + DUBBO2.7.4 +zookeeper 的整合: springboot 整合 dubbo2.7.x 版本 在注册中心的选择上,发现最近 nacos 的热度比较高,又要超越 zookeeper 的趋势,没有无缘无故的热度,肯定是有一些原因才会火起来的。所以打算学习下,了解下 nacos 的优劣,提升技术知识储备。 什么是 Nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 官方网站:https://nacos.io/zh-cn/ GitHub: https://github.com/alibaba/nacos 有时 GitHub 下载较慢,就可以选择国内的 Gitee: https://gitee.com/mirrors/Nacos?_from=gitee_search 下载后如何安装启动 nacos? 官网有详细介绍,这里就不描述了。 启动成功后会看到一条信息: INFO Tomcat started on port(s): 8848 (http) with context path '/....... DUBBO2.7.x版本使用Nacos作为注册中心 java知识
复习原因 在项目的开发当中,之前数据库连接信息都是写死在配置文件当中。但是突然接到一个需求: 获取外部数据源信息,然后将某些数据通过Echarts绘制成折线图展示出来(ps:数据源需要用户手动设定) 有点懵,因为之前都是写死在配置文件当中的,然后在网上也找了一些资料,发现都不是自己想要的。 最后想到,既然是简单的获取数据进行展示,直接使用JDBC连接数据库获取就可以了啊。没有必要搞什么骚操作。 JDBC 一直使用的JPA或者mybatis进行数据库连接,很少使用JDBC进行数据库连接。 因此也复习一下JDBC,毕竟无论是JPA还是Mybatis都是对JDBC的一个封装。 什么是JDBC JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序(来源于百度百科) 如何使用JDBC 第一步 加载驱动 第二步 连接数据库 第三步 创建sql .... JAVA基础复习之JDBC(配置动态数据源) java知识