Java中volatile防止指令重排

2021-08-03
目录 什么是指令重排? 为什么指令重排能够提高性能 volatile是怎么禁止指令重排的? volatile可以防止指令重排,在多线程环境下有时候我们需要使用volatile来防止指令重排,来保证代码运行后数据的准确性 什么是指令重排? 计算机在执行程序时,为了提高性能,编译器和处理器一般会进行指令重排,一般分为以下三种: 指令重排有以下三个特点: 1.单线程环境下指令重排后可以保证与顺序执行指令的结果一致(就是不进行指令重排的情况) //原来的执行顺序 a=1; b=0; //进行指令重排后执

通过 plsql 连接远程 Oracle数据库的方法

2021-08-03
方法一:通过 plsql 工具和 oracle client(不是即时客户端 instantclient) 的方式来连接 Oracle 一. 安装 oracle client,(本教程已经下载并解压) 二. 选 择 管 理 员 安 装 ,如图: 三.剩下的就是一路下一步就 OK,安装完成后在 doc 窗口执行,sqlplus 如 果 出 现 如 下 输 入 用户名 , 就 表 示 安 装 成 功 四.安装 plsql(本教程 Oracle 为 11gr2,所以 plsql 也安装了版本 11,其

Spring中Bean的作用域与生命周期详解

2021-08-03
目录 一.Bean的作用域 1.单实例Bean声明 2.多实例Bean声明 二.Bean的生命周期 1.bean的初始和销毁 2.bean的后置处理器 总结 一.Bean的作用域 首先我们来讲一下有关于bean的作用域, 一般情况下,我们书写在IOC容器中的配置信息,会在我们的IOC容器运行时被创建,这就导致我们通过IOC容器获取到bean对象的时候,往往都是获取到了单实例的Bean对象, 这样就意味着无论我们使用多少个getBean()方法,获取到的同一个JavaBean都是同一个对象,这就是

spring注解在自定义jar包中无法被扫描的解决方案

2021-08-02
spring注解在自定义jar包中无法被扫描 前两天,一朋友在开发的时候遇到了一个问题向我求助, service服务为第三方提供的服务里面有spring注解并将service 打成jar包中,使用maven引入. 使用new可以创建,但是使用autowire无法注入提示信息如下图 报错信息 这类问题在开发中一直是我们最不愿意看到的,乍一看,感觉挺对,还挺有道理.但是就是更想要的结果对不上. 我当时给出的判断autowire的类重名导致注入失败,建议用配合使用qualifier或者 使用resou

一篇文章带你入门Java继承

2021-08-02
目录 Java中继承 什么是继承: 为什么要用继承: 学习总结: 继承关键字:extends 总结 Java中继承 什么是继承: 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 为什么要用继承: 可以去掉重复代码,方便后期维护 举个列子,大家应该都玩过英雄联盟,每个英雄都是一个类,如果说不用继承的话每次都要重复定义每个英雄的成员属性,如下图我举了一个MF,一个EZ的列子 public class MissFortu

一篇文章带你了解JAVA面对对象应用

2021-08-02
目录 常用API String类 关于String为啥不可改变 StringBuilder类 String.StringBuffer 和 StringBuilder 的区别: ArrayList 1.1ArrayList类概述 1.2ArrayList类常用方法 学生管理系统 总结 常用API API理解 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将

Vue插件实现过程中遇到的问题总结

2021-08-02
目录 场景介绍 插件实现 问题一.重复的头部组件 问题二.另一种实现思路 问题三.是否可以不使用Vue.extend 总结 场景介绍 最近做H5遇到了一个场景:每个页面需要展示一个带有标题的头部.一个实现思路是使用全局组件.假设我们创建一个名为TheHeader.vue的全局组件,伪代码如下: <template> <h2>{{ title }}</h2> </template> <script> export default { props:

Java对象创建内存案例解析

2021-08-02
Java对象创建内存图解析 1. 栈 Java栈的区域很小 , 特点是存取的速度特别快,栈存储的特点是, 先进后出,存储速度快的原因: 栈内存, 通过 栈指针'来创建空间与释放空间,指针向下移动, 会创建新的内存, 向上移动, 会释放这些内存.这种方式速度特别快 , 仅次于PC寄存器,但是这种移动的方式, 必须要明确移动的大小与范围 ,明确大小与范围是为了方便指针的移动 , 这是一个对于数据存储的限制, 存储的数据大小是固定的 , 影响了程序的灵活性. 所以我们把更大部分的数据 存储到了堆内存中

go使用Gin框架利用阿里云实现短信验证码功能

2021-08-02
第一步,调用阿里云Api发送短信并存入数据库或者是redis当中 阿里云短信平台网址 [https://api.aliyun.com/new#/?product=Dysmsapi&version=2017-05-25&api=SendSms&params={"RegionId":"cn-hangzhou","TemplateCode":"345","PhoneNumbers":&qu

springmvc 防止表单重复提交的两种方法

2021-08-02
目录 1.通过session中的token验证 步骤1:创建自定义注解 步骤2:创建自定义拦截器(@slf4j是lombok的注解) 步骤3:将自定义拦截器添加到配置文件 2.通过当前用户上一次请求的url和参数验证重复提交 步骤1:创建自定义注解 步骤2:创建自定义拦截器 步骤3:将自定义拦截器添加到配置文件 最近在本地开发测试的时候,遇到一个表单重复提交的现象. 因为网络延迟的问题,我点击了两次提交按钮,数据库里生成了两条记录.其实这种现象以前也有遇到过,一般都是提交后把按钮置灰,无法再次提

lombok插件无法使用的原因及解决方案

2021-08-02
lombok插件无法使用的原因及解决 近日使用了一个lombok的插件,中间遇到无法插件无法使用的情况,于是将自已遇到的问题以及解决办法写下来: 在项目中如果使用注解 ,比如 @Setter ,无法导入该注解,可能是你的项目没有导入jar包,或者你的maven项目没有依赖该jar包,也可能虽然导入了但是你的jar包可能在下载过程中出了问题,建议重新下载(常见). 成功导入了该注解,但是使用@Setter,在outline视图中,并没有看到 自动生成字段的set方法,这大概是因为没有安装插件,怎么

浅谈hashmap为什么查询时间复杂度为O(1)

2021-08-02
hashmap为什么查询时间复杂度为O(1) Hashmap是java里面一种类字典式数据结构类,能达到O(1)级别的查询复杂度,那么到底是什么保证了这一特性呢,这个就要从hashmap的底层存储结构说起 下来看一张图: 上面就是hashmap的底层存储示意图,要想查看一个键值对应的值,首先根据该键值的hash值找到该键的hash桶位置,即是tab[2]还是tab[1]等,计算某个键对应的哈希桶位置很简单,就是 int pos = (n - 1) & hash,也就是hash%n,因为位运算效率

一篇文章带你入门Java接口

2021-08-02
目录 什么是接口: 关键字: 创建接口代码展示: 如何实现接口呢: 实现接口代码展示: 具体代码实现: 接口继承和类继承的区别: 总结 什么是接口: 接口是一系列方法的声明,是一些方法特征的集合 注意: 在接口中只有方法名,没有方法体! 关键字: interface(创建接口), implement(实现接口) 创建接口代码展示: public interface 接口名 { // 没有任何具体的实现 void 方法名(); //只有方法名,注意是; } 这样仅仅是创建了一个接口. 如何实现接口

JS实现进度条顺滑版详细方案

2021-08-02
进度条不顺滑 相信大多前端同学都自己写过音频.视频播放器,实现并不复杂.最近在小程序里,做了一个类似微博刷视频的需求.其中有一部分功能需要实现自定义进度条,在做完第一版之后发现进度条不顺滑,而后想查查网上看有没有什么好的方案,但最终没找到合适的.于是想看看微信小程序里的"微博"进度条如何,结果也是很生硬的动画,下面放了一个GIF,大家也可以自己搜索微信小程序的微博,找个视频看看效果. 常规方案 最终决定还是优化一下这个问题,先来捋一捋我们现有常规方案. 监听TimeUpdate事件 获

如何使用Node.js判断png图片是否存在透明像素

2021-08-02
背景 png格式的图片存储空间会比jpg格式的图片大,但是png图片的质量明显更好.有时候并不需要图片的质量非常的好,但是为了减少包体,需要做一些优化,比如压缩图片,把没有带透明像素的png图片转化成jpg格式的图片.这片文章主要来讲讲怎么利用Node.js来检测没有带透明像素的png图片,以及如何把它转化成jpg图片. 代码 直接上代码 import canvas from 'canvas'; import fs from 'fs'; /** * 判断png图片是否存在透明像素 * * @pa

Vue打包后页面出现空白解决办法

2021-08-02
一. vue-cli创建项打包后打开页面为空白的问题解决 命令行输入:npm run build 打包出来后项目中就会多了一个文件夹dist,这就是我们打包过后的项目. 二.打包完成后配置会自动生成vue.config.js文件,这个文件非常重要值得你收藏 配置如下: const path = require("path"); const resolve = function(dir) { return path.join(__dirname, dir); }; module.expo

关于C语言操作符的那些事(超级全)

2021-08-02
目录 前言 操作符的分类 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用符 函数调用符 结构体调用操作符 总结 前言 C语言中操作符不多,但是有些相同的操作符都是在不同的表达式中,有不同的解释意思,比如 * 号,在表达式中5*5表示乘号,在int *p表示指针,在 *p = 10中,又表示解引用,所以今天就来详细的整理一下C语言中的操作符,做到心中有数,可以一眼识破,用途有哪些.重点不是记忆:是理解,兄弟们,要动本质. 操作符的分类 注意:

idea 在springboot中使用lombok插件的方法

2021-08-02
在idea中添加lombok插件 选择 file-->setting--->plugins  搜索lombok  并安装插件后重启idea 使用Lombok 在pom.xml中引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <s

使用@Value 注入 List 类型的配置属性需要注意的 BUG

2021-08-02
@Value 注入 List 类型的配置属性 @Value 注解可以方便的帮助我们注入配置属性值. 那么当注入一个 List 类型时该怎么做呢? 想必大家都会知道,可以使用下面这种写法: @Value("#{'${zf.ids}'.split(',')}") private List<Integer> ids; 上面的配置简单说下就是,先使用 ${zf.ids} 拿到配置文件中 zf.ids 属性的值,然后使用 #{} 也就是 SPEL 表达式语言进行按,拆分,得到的结果转

Node.js中npx命令的使用方法及场景分析

2021-08-02
npx使用教程 今晚在学习Vue-Cli时, 由于突发奇想想试试最新的@4.x.x版本, 但是本地全局安装的脚手架版本是@2.x.x的, 因为不想污染全局于是就想到用npx命令, 一路上踩坑不断, 为了以后能够更好的使用npx并区分其跟npm的指令, 就有了本篇笔记 npm 是从5.2版开始, 增加(自带)了 npx 命令. 如果发现没安装请手动安装: npm i -g npx npm与npx的概念 NPM(Node Package Manager) 是Node.js提供的一个包管理器, 可以使