- 博客(319)
- 收藏
- 关注
原创 jvm 多线程 公共变量 关键字 volatile (底层原理) 同步问题分析
1.jdk1.8 以前 是 总线加锁。性能很低。如果多个线程都用同一个变量,会锁定当前线程,直到变量从主内存修改后,再执行其它线程。2.mesi缓存。
2019-12-11 15:55:09 151
原创 springboot中配置类读取配置文件application.properties内容
优点:@EnableConfigurationProperties(Book.class) 此注解,可以绑定配置已经存在的jar包中的已存在类。配置类 MyConfig.java。Book.java中增加注解。
2024-04-17 15:35:27 159 1
原创 JVM 垃圾回收
并行回收GC(Parallel、Parallel Scavenge) -XX:+UseParallelGC || -XX:+UseParallelOldGC(可相互激活) 串行收集器在新生代和老年代的并行化。并发标记清除GC (CMS) -XX:+UseConcMarkSweepGC 自动打开 -XX:+UseParNewGC 是一种以获取最短回收停顿时间为目标的收集器。用户线程和垃圾收集线程同时执行(不一定是并行,可能交替执行),不需要停顿用户线程,互联网公司多用它,适用于对响应时间有要求的场景。
2024-04-12 16:02:10 316 1
原创 编译springboot源码
下载https://github.com/spring-projects/spring-boot/tags?after=v2.3.3.RELEASEjdk1.8+ maven 3.5+java -versionmvn -version解压缩,然后cmd到springboot目录执行命令如下mvn clean install -DskipTests -Pfast
2022-04-24 11:23:31 530
原创 vue + jspdf
vue 页面 <el-button @click="testPdf">导出PDF文件</el-button> <div id="container" > <el-button type="danger">危险按钮</el-button> <span>{{ t1 }}</span> </div>js代码methods: { testPdf() { // this.dialogVis
2022-01-19 18:27:36 2718
转载 tomcat 启用https协议
记录:keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\homes\tomcat.keystore -validity 36500命令解释:使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件想要存放在“D:\homes\tomcat.keystore”,口令为“123123”。参数简要说明:“D:\homes\tomcat.keystore”含义是将证书文件的保存路径,证书文
2021-11-06 15:03:55 916
转载 SpringBoot AOP @Pointcut 切入点表达式排除某些类
只做记录:@Pointcut("execution(* com.demo.service.*.*(..)) && !execution(* com.demo.service.dbservice.*(..)) ") @Pointcut("execution(public * com.demo.service.*.*(..))")public void serviceMethods() {}@Pointcut("execution(public * com.demo.service
2021-10-28 14:37:48 938
原创 Ant 表单中label-col和wrapper-col
:label-col='{span:5, offset:1}' :wrapper-col='{span:18}'意思如下:总共: 5+1+18 = 24 份。文字label部分占比 总共 6/24,宽度5,向右移动1.input部分占比 18/24.
2021-10-09 10:59:12 7298
原创 application.yaml 动态获取 pom.xml中的值
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin>
2021-08-05 17:31:30 849
原创 SpringBoot mybatis_plus启动报错
最近在学习 springboot mybatisplus 遇到启动报错的问题。最主要的是:<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version></dependency>引入 plus的包以后,其他的
2021-07-25 15:19:45 1773
原创 最近在复习springboot源码,发现问题只做记录
diea下载源码提示Sources not found for在控制台执行:mvn dependency:resolve -Dclassifier=sources
2021-07-07 10:53:44 77
原创 volatile 可见性
class Mydata { // volatile 关键字 可见性 volatile int number = 0; public void addTo60() { this.number = 60; }}/** * 1. 验证 volatile 可见性 * int number =0; number 变量之前根本没有添加 volatile关键字 */public class VolatileTest { public static
2021-04-27 13:44:02 86
原创 node 插件 nodemailer 发送邮件
node 使用插件 nodemailerconst nodemailer = require("nodemailer");// create reusable transporter object using the default SMTP transport// 创建发送邮件对象let transporter = nodemailer.createTransport({ host: "smtp.qq.com", // 发送方邮箱 node_modules\nodemailer\li
2021-04-23 10:11:20 250
原创 vue v-for form在element中如何校验
直接上例子:第一种:<template> <div> <div v-for="(item,index) in datas.realForm" :key="index"> <el-form ref="form" :model="datas" label-width="160px" :rules="rules"> <el-form-item label="名字" :rules="rules.name" :prop
2021-04-20 23:15:30 617
原创 APPLICATION FAILED TO START 错误
错误:APPLICATION FAILED TO STARTDescription:The Tomcat connector configured to listen on port 8085 failed to start. The port may already be in use or the connector may be misconfigured.直接解决方案:C:\Users\Administrator>netstat -anoTCP 0.0.0.0:8085
2021-04-08 14:13:02 2527
原创 redis 启动
1. redis-server.exe redis.windows.conf2. redis-cli.exe -h 127.0.0.1 -p 6379输入密码:3. auth 123456
2021-04-07 10:00:46 75
原创 webpack给css添加前缀自动适应浏览器
安装 postcss-loader autoprefixer 插件npm i -D postcss-loader autoprefixer配置 webpack.config.js{ test: /.styl(us)?$/, use: [ 'style-loader', 'css-loader', 'postcss-loader', // 加载一个 autofixer 的插件 'stylus-loader', // st
2021-02-19 15:04:41 420 1
原创 js ‘true‘==true ; 为什么返回false?
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;首先 ‘true’ == true 符合规则 1,这样就转化成了对 ‘true’ == 1 进行求值此时表达式符合规则 2如果一个
2021-02-09 14:57:24 1111
原创 js generator函数 yield
不带返回值的function *show() { alert('a'); // a let a = yield; alert('b'); // b alert(a); // 5}let fun1 = show();fun1.next(12); // 第一个next没法给yield传参fun1.next(5); // 5带返回值的function *show1() { alert('a'); yield; alert('b');
2021-02-07 15:42:55 95
原创 defineProperty,defineProperties,getOwnPropertyDescriptor,getOwnPropertyDescriptors
一个例子根据结果查看每个方法的作用。window.onload = function () { var obj = new Object(); Object.defineProperty(obj, 'name', { configurable: false, writable: true, enumerable: true, value: '张三' }) c
2021-02-06 22:57:43 170
原创 vue render函数
App.vue<!-- render 函数 --><Heading tag="ul"></Heading> // 向下传递ul 标签 与this.tag 对应<script>import Heading from './views/Heading.vue';export default { name: 'App', components: { Heading } ......}</scrip
2021-02-06 22:20:43 94
原创 vue.extend() 动态创建组件
toast.jsimport Toast from "./toast.vue";import Vue from 'vue';const ToastConstructor = Vue.extend(Toast);function showToast(text, duration=2000) { const toastDOM = new ToastConstructor({ el: document.createElement('div'), data() {
2021-02-02 20:06:45 671
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人