![](https://img-blog.csdnimg.cn/20200401122729624.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
文章平均质量分 74
Java相关知识学习
AlaGeek
一个正在不断成长的未来大佬
展开
-
手动搭建SpringMVC项目
SpringMVC HelloWorld原创 2022-07-03 18:23:59 · 385 阅读 · 0 评论 -
Spring整合发送邮件功能
Spring整合发送邮件功能(SpringMVC)原创 2022-07-03 23:28:26 · 950 阅读 · 0 评论 -
Druid数据库密码加解密
今天在干活的时候,需要用Navicat连个数据库,结果发现阿波罗里配的数据库密码是加密的,网上找了好多加解密方式,结果发现用的是Druid自带的加解密功能,在这里记录下直接新建一个Maven项目即可,添加druid的依赖:3、加解密代码代码比较简单,就是通过ConfigTools工具类生成私钥和公钥,然后分别对密码加解密...原创 2022-06-23 22:34:25 · 2450 阅读 · 0 评论 -
JDK1.8源码解析——Integer.bitCount
1、写在前面在做题LeetCode-位1的个数-题号191-Java实现时,发现Java的Integer类有个bitCount方法可以直接计算二进制数1的个数,进行学习后记录成博客,避免忘记。2、bitCount源码public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i &原创 2022-05-27 23:23:46 · 139 阅读 · 0 评论 -
Spring WebFlux学习记录
本文按照如下顺序一步步深入解释WebFlux是个什么东西:1、Reactive Stream2、Reactor3、WebFlux其中 Reactive Stream 是 Java 9 新增的一个重要特性,而 Reactor 就相当于 Java 8 的 Stream 流 + Java 9 的 Reactive Stream,最后的 WebFlux 的核心就是基于 Reactor 的相关 API 开发的。1、Reactive Stream响应式流是 Java 9 引入的一套基于发布/订阅模式的原创 2021-10-19 17:03:45 · 324 阅读 · 0 评论 -
Spring5-入门案例
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-09-04 11:20:52 · 169 阅读 · 2 评论 -
JVM的运行时数据区域
1、写在前面原创 2021-06-02 11:25:43 · 148 阅读 · 2 评论 -
JVM的垃圾收集算法
1、写在前面本博客为读书笔记,读的是《深入理解Java虚拟机》一书,在看这个书的时候,最大的一个感受便是“当初怎么就没有好好学习操作系统呢,不然也不会有这么多看的云里雾里的地方了”,不过那都是过去的事了,学习最好的时刻便是现在。2、什么是垃圾本文要讲的是垃圾收集算法,那么首先要确定的问题就是什么是垃圾,也就是哪些对象是要被回收的,对此有两种判断方式:2.1 引用计数算法什么样的对象是要被回收的,很明显,没用的对象才要被回收,那么就在对象里加一个字段,用来表示有几个对象在引用当前对象,这个字段叫引用原创 2021-06-02 00:00:34 · 206 阅读 · 3 评论 -
JDK编译以及在CLion中进行源码调试(抄书+踩坑记录)
1、写在前面最近在看《深入理解Java虚拟机》一书,其中第一章有个实验,叫“自己编译JDK”,在做这个实验的过程中,踩了点坑,因此写篇博客记录下2、环境准备首先准备一个linux环境,其它环境也可以,不过不在本博客介绍范围内,这里我用虚拟机安装了Ubuntu-18.04.5-desktop-amd64。编译需要用到编译器GCC或者CLang,读者可以任选其一安装,这里博主根据书本推荐,使用下列命令安装了GCC:sudo apt-get install build-essential接着编译过程原创 2021-05-26 14:50:45 · 2607 阅读 · 6 评论 -
SpringBoot整合SpringSecurity
1、前言之前写过一篇SSM整合SpringSecurity,没看过的可以看看,可以发现在SSM框架里整合Security框架是很繁琐的,所以很多人选择用Shiro搭配SSM使用。而在SpringBoot中,这个情况就不一样了,如果说是简单使用,只需要在SpringBoot项目中加入Security的依赖就可以了,不需要写什么其他的东西。2、简单使用首先建一个SpringBoot项目,在pom文件中加入以下依赖:<dependency> <groupId>org.spr原创 2021-01-12 23:45:42 · 276 阅读 · 1 评论 -
SpringBoot整合Mybatis
1、创建项目会的人可以直接创建SpringBoot项目,通过开发工具添加依赖,我这边就新建Maven工程,一步步来。以下为工程文件结构:2、添加依赖pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2021-01-10 20:54:45 · 195 阅读 · 0 评论 -
设计模式-单例模式-指令重排思考
1、单例模式之前写过一篇单例模式的博客,有不了解单例模式的可以看看。2、指令重排指令重排指的是在程序执行时,为了性能考虑,编译器和CPU可能会对指令进行重新排序,下面举个例子,比如有如下程序:int a,b;a = 2;b = 2;这个程序在执行的时候,可能执行顺序就会颠倒,变成先执行“b = 2”,再执行“a = 2”,这个就叫指令重排。指令重排有几个基本原则,不清楚的可以看我引用的博客,这里要说的是顺序执行原则,指令重排保证在单线程内语义的串行性,举个例子:int a,b;a =原创 2020-12-31 13:43:59 · 860 阅读 · 0 评论 -
SpringBoot整合ActiveMQ
1、队列通讯1.1 生产者1.1.1 添加依赖首先创建一个SpringBoot项目,这里我将项目命名为boot_mq_produce,添加如下依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency><dependency> <原创 2020-12-07 14:12:03 · 179 阅读 · 0 评论 -
Spring整合ActiveMQ
1、前置博客Java编码实现ActiveMQ通讯2、添加依赖原创 2020-12-07 13:18:50 · 195 阅读 · 2 评论 -
Java编码实现ActiveMQ通讯
1、使用Docker安装ActiveMQ要实现ActiveMQ的通讯,首先肯定是需要一个ActiveMQ服务器,对于ActiveMQ的安装,可以采用常规方法,也可以使用Docker直接拉一个镜像,这里我推荐使用Docker,根据下面两篇文章,就可以搭建出ActiveMQ的环境:Ubuntu Docker安装使用Docker安装ActiveMQ不是使用Ubuntu的可以自行百度教程解决,另外由于在国内Docker拉镜像比较慢,附一个解决方案:docker下载镜像太慢的解决方案2、实现Act原创 2020-11-29 22:49:22 · 421 阅读 · 0 评论 -
AES加密算法在Java中的应用
先记录下,回去写package com.bestwehotel.pmsadapterxms.utils;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import j原创 2020-11-28 16:11:47 · 707 阅读 · 0 评论 -
在Java中实现 2+2=5
1、2+2=5昨天在一篇公众号中看到了这样一段代码,运行之后发现结果显示 " 2 + 2 = 5 ",于是就引起了我的好奇:public class Main { public static void main(String[] args) throws IOException, NoSuchFieldException, IllegalAccessException { Class cache = Integer.class.getDeclaredClasses()[0];原创 2020-09-02 11:21:01 · 770 阅读 · 0 评论 -
业务逻辑层面上的事务控制
1、问题介绍今天在工作上遇到一个问题:数据库表 TABLE 中有一个字段 NUM,现要将它从数据库中取出来,经过一番运算后,再将其存入 TABLE 表中。我们的问题就在于,在并发情况下,我们取出来的 NUM 也许会在我们进行运算的时候被其他人修改掉,而当我们将运算后的数据存入表中时,就会覆盖其他人的操作。2、问题琢磨当运算只是简单的加减运算的时候,我们考虑利用sql语句的特性,直接对其修改,如下:update TABLEset NUM = NUM + 1where ID = #{id}当原创 2020-08-14 17:58:03 · 487 阅读 · 0 评论 -
common-util通用工具方法类
在系统登录的时候,我们需要对密码进行加密处理,而这个加密在别的地方也能用到,因此可以将加密操作抽象出来,放到通用工具模块中,再如前端发送给后端的请求,一种是普通的http请求,另一种是Ajax请求,在不少给前端回传数据的时候需要判断请求是否是Ajax请求,因此也可以抽象出来成为一个工具方法。1、MD5加密在尚筹网项目前期开发中,加密方式采用MD5加密,后期整合SpringSecurity后,使用其自带的加盐加密。/** * MD5加密 * @param source 明文 * @return 密原创 2020-08-04 10:19:28 · 1255 阅读 · 0 评论 -
common-util自定义异常
在Java中又很多已经定义好的异常类,但是这并不够用,比如系统在运行时出现的错误,如访问失败,登录失败,我们不能都给抛出一个运行时异常,这样会造成错误。自定义异常自定义异常只需要继承运行时异常即可,这里以登录失败异常为例:public class LoginFailedException extends RuntimeException { private static final long serialVersionUID = -1858746373532741422L; publi原创 2020-08-04 10:00:46 · 799 阅读 · 0 评论 -
MyBatis逆向工程记录【IDEA + MySQL8.0.19】
最近在B站学习尚硅谷的尚筹网项目,其中用到了MyBatis逆向工程,看着视频里很简单,跟着一步步做就出了Bug,第一时间想到了数据库版本问题,于是写篇博客记录下。MyBatis逆向工程1、pom.xml编写首先新建一个Maven项目,在其pom文件中加入MyBatis依赖,并且加入逆向工程所需要的插件和相关依赖【JDBC】,这里JDBC的版本根据所使用的MySQL版本来选择。<!-- 依赖 MyBatis 核心包 --><dependencies> <depe原创 2020-06-10 22:40:25 · 2256 阅读 · 3 评论 -
几大排序的Java实现
/** * 几大排序的Java实现 */public class main { public static void main(String args[]) { int[] nums = {5, -1, 3, 1, 7, 9, 8, -10, 4};// insertSort(nums);// selectSort(nums);//...原创 2020-04-01 12:41:39 · 155 阅读 · 0 评论