- 博客(49)
- 资源 (2)
- 收藏
- 关注
原创 使用Jrebel+Docker+Idea远程热部署SpringBoot2.x项目并远程调试
所需工具安装有Jrebel的Idea安装有Docker的服务器这里写自定义目录标题所需工具欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,...
2019-11-06 14:16:23 1982
原创 Java线程的状态以及转换条件,与操作系统线程状态的区别?
JVM作为一个跨平台虚拟机,它不需要也不应该深入管理操作系统的线程调度细节,而是专注于高层次的线程状态管理。操作系统负责具体的线程调度,JVM只需要维护线程在逻辑上的状态。JVM 的 RUNNABLE 更加关注的是业务逻辑上的“线程可以执行”,而不需要区分底层的调度细节。操作系统则负责更细粒度的状态转换,包括将线程从 READY 切换到 RUNNING,以及可能的 I/O 或等待状态的管理。这种设计保证了 Java 的跨平台性和简洁性,同时也让 JVM 的线程管理模型相对简单易用。
2024-10-18 11:28:51 851
原创 AbstractQueuedSynchronizer#hasQueuedPredecessors解析
源码及部分说明源码:个人对于其中部分代码进行了其它方式的书写public final boolean hasQueuedPredecessors() { // The correctness of this depends on head being initialized // before tail and on head.next being accurate if the current // thread is first in queue.
2021-03-04 13:57:35 398 4
原创 Java线程中断机制
中断的原理:Java中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而需要被中断的线程自己处理中断。如果线程不响应中断,那么中断机制就对当前线程无效。简单来说就是设置中断标示位中断的响应程序里发现中断后该怎么响应?这就得视实际情况而定了。需要由程序自己捕获异常处理或者通过调用 Thread.currentThread().interrupt() 来重新设置中断状态。然后交由上层继续处理。API方法方法描述public static boolean inter
2021-03-02 13:46:00 175
原创 非公平锁比公平锁高效的原因
什么是公平与非公平?大白话简单来说,公平锁就相当于是正常生活购物场景中的排队结账,排好队一个接一个来抢占一个收银台;非公平锁就是一窝蜂地争抢着结账,谁先抢到就给谁结账。按照生活常识来说,明显是排队效率比较高。更高效的原因在计算机世界中,对于Java而言,用户线程和系统线程是属于1:1的对应关系,线程切换存在【执行现场保存和恢复】,这个过程是非常耗费时间(在许多情况下,线程切换的时间远远大于代码执行的时间)。因此,如果一个线程在running期间直接抢占到锁资源,就不需要进行【恢复现场】操作,也就可以
2021-01-14 14:16:19 2677 6
原创 个人关于学习的一些总结
仅仅是个人学习过程中的一些感触而已技术更新迭代非常快,不能一味追新。更重要的是注重基础,把基础打牢。编程语言非常多,而且每次新语言都会有一些非常诱人的新特性,很容易冲动性地区学习。实际上应该按部就班地按计划进行,不要被新事物扰乱了阵脚。 把当前的语言和基础搞定后,再选择性地学习其他也为时不晚。学习的东西要有总结,最重要的是要善于分享和交流,在此过程中可以非常快速地暴露出问题。不要妄图自己脑子很好用,不会忘记。要善于使用笔记本或者记事本记录待办和疑问事项。难度大导致理解不了的东西,要多思考,隔一段
2020-12-27 12:56:05 3075 6
转载 vim操作
作者:宅学部落-王利涛链接:https://zhuanlan.zhihu.com/p/61515833来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本文是对《Linux三剑客》中vim视频教程中的命令进行总结,方便大家学习、收藏,快速掌握vim各种命令的使用。vim是什么?vim是Linux环境下一款功能强大、高度可定制的文本编辑工具,类似于Windows下面的source insight、sublime、notepad。VI是visual interface的缩写,
2020-12-27 12:41:18 128 2
原创 数据对齐
什么是数据对齐?一般情况下,当我们定义一个变量,编译器会按照默认的地址对齐方式,来给该变量分配一个存储空间地址。如果该变量是一个 int 型数据,那么编译器就会按4字节或4字节的整数倍对齐;如果该变量是一个 short 型数据,那么编译器就会按2字节或2字节的整数倍边界对齐;如果是一个 char 类型的变量,那么编译器就会按照1字节对齐。#include <stdio.h>int a = 1;int b = 2;char c1 = 3;char c2 = 4;int main(v
2020-12-18 17:25:23 2434 1
原创 SpringCloud在Redis中执行Lua脚本,避免并发所致id重复问题
这里写自定义目录标题问题背景方案采用redis作为中间件从而产生唯一增长序列后缀。发现问题分析问题解决方案在SpringBoot中实现注意事项问题背景应公司产品要求,为了方便观察,编号需要由统一前缀+日期+连续增长序列构成。方案采用redis作为中间件从而产生唯一增长序列后缀。伪代码大概如下:(线程不安全)① if(exists(key)) {② incr(key);} else ...
2020-03-28 14:09:14 726
原创 spring5.1.x源码构建
一、github获取源码访问spring-framework的github仓库地址https://github.com/spring-projects/spring-framework选择你需要的版本并克隆方法一(推荐):git clone -b 5.1.x --single-branch --depth 10 https://github.com/spring-projects/...
2019-12-03 20:15:16 1090 4
原创 网址分享
全国Ping测试网页(https://www.ipip.net/ping.php)国内外端口扫描测试(http://tool.chinaz.com/port)国外测试(https://www.yougetsignal.com/tools/open-ports/)
2019-11-23 15:30:10 8290
原创 javafx.base包导致项目在openjdk环境下启动屡屡失败
将idea更新为2019.2版本后,同样的项目在以前的版本中一切正常,但是升级后莫名就启动失败了。我的电脑使用的是oracle的jdk,运行项目和开发都是正常的。但是使用服务器的openjdk运行项目时就会出现如下错误:查看pom依赖关系发现相比以前的jar包多了org.openjfx.javafx.base包解压jar包java -xvf xxx.jar4. 发现打包时...
2019-11-06 19:31:07 2411
原创 SpringBoot自动生成JUnit测试方法
为大家推荐一款自动生成测试方法的插件JUnitGenerator,他可以自动为某个类生成全部测试方法,只需一键即可搞定。没有安装的先自行安装下,此处不详细阐述。安装好之后,重启下idea让插件准备就绪。此时,在idea的Preferences -> Other Settings中即可配置JUnit的属性将生成测试用例的输出路径改为${SOURCEPATH}/../../test/...
2019-04-07 22:41:49 9258 1
原创 SpringCloud通用配置文件
springCloud中需要大量的配置文件,每个工程都需要重复书写,例如:数据库最大连接数最长等待时间生产环境swagger暴露接口置为关闭状态,测试、开发环境开放。。。。。。等等以上配置对于多个服务来说都是通用的。如果在每个文件中都重复粘贴一遍,那岂不是有违OOP思想了,程序员岂能容忍这种事情的发生。将通用配置抽取到一个通用配置文件中,配置服务拉取文件时拉取多个配置只需要在服...
2019-04-07 22:18:52 5061
原创 springCloud单元测试,动态设置测试程序启动参数
上篇文章介绍了关于springBoot配置启动参数,参见springBoot工程启动参数springBoot提供了一套简单有效单元测试方案,使用起来非常方便。但是,对于springCloud项目而言,经常会遇到使用启动参数设置服务发现与注册中心的地址以及从配置中心读取配置文件的环境问题。对于正常启动程序来说:在优先级高于resources下的配置文件的路径上配置统一的配置文件即可轻松解决...
2019-04-07 18:46:05 5709
原创 Long类型数据返回前台js出现精度损失问题
起因:数据库存储了一个长度为19位的整数,在Java程序中使用Long类型存储没有任何问题,但是返回给前台后就出现精度损失了。导致页面上显示的数据和预期的不一致。使用postman这样的工具请求后台得到的数据是没有任何问题的。解决方案:将其转换为String类型后返回给前端。问题是总不能在实体类中手动重写getter方法返回对应的字符串值吧!经过查阅资料发现可以使用@Jso...
2019-01-09 21:58:20 2814 1
原创 保存emoji图标
发生此问题的前提条件: 数据库字符集为utf8,并不是utf8mb4的。emoji图标插入utf8字符集的数据库时就会出现下面的错误utf8占用3字节,而emoji占用4字节,所以会报错。解决方案:一、将数据库的字符集改为utf8mb4;二、将emoji转义后存储:<depend...
2018-12-18 23:53:53 832
转载 Spring事务传播行为
Spring事务传播行为:spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制)下图所示为7钟事务传播机制o&nbsp;&nbsp;&nbsp;传播行为含义...
2018-12-18 23:36:51 132
原创 使用pagehelper为自定义sql实现分页
最近有需求需要自己手写sql查询数据库,并且分页 &amp;amp;amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;lt;groupId&amp;amp;amp;amp;amp;amp;gt;com.github.pagehelper&amp;amp;amp;amp;a
2018-12-09 00:20:42 4935 2
原创 maven动态切换mirror,无需修改settings.xml
在maven->settings.xml中配置多个mirror镜像,镜像只会执行第一个位置mirror。有这样一个问题:一台笔记本,在公司用部门搭建的maven私服,回到家用aliyun的镜像,每次都要改配置文件,如果能在不改动配置文件的情况下,动态切换mirror配置,那就very nice了。于是乎想到了settings.xml可以使用变量,我们可以试图使用变量来解决这个问题。...
2018-12-09 00:05:50 5101 2
原创 centos7防火墙
开放端口区间:firewall-cmd --permanent --zone=public --add-port=100-500/tcpfirewall-cmd --permanent --zone=public --add-port=100-500/udpfirewall-cmd --reload查看开放的端口:firewall-cmd --zone=public --list-po...
2018-11-25 12:22:30 311
原创 安装Docker和docker-compose的脚本
附上一段安装Docker和docker-compose的脚本(个人编写使用,原谅写的不好):#!/bin/shif [ &amp;quot;$USER&amp;quot; != &amp;quot;root&amp;quot; ];then echo &amp;quot;非管理员,退出执行&amp;quot; exit 1else echo &amp;qu
2018-11-25 11:09:50 913
原创 Java继承的问题
A subclass inherits all the members (fields, methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited by subclasses, but the constructor of the supercl...
2018-10-28 14:08:17 381
原创 Robomongo连接远程mongo失败的解决办法
之前下载了robomongo连接MongoDB数据库,一直失败查询网上的各种教程,大多数都是千篇一律地说让新建用户、授权,可是我的问题并不是这样呀! 经过一番折腾记录下解决办法供参考。经过查询各种资料原来是Robomongo的版本问题。robomongo-0.8满足不了mongodb3.0之后的版本然后我把robomongo换成0.9之后的就可以连接成功。现在就可以连接成功了!附上...
2018-10-15 17:06:21 8984
原创 MacBook Pro安装HomeBrew
Homebrew官网地址最近使用/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"给mbp安装brew,总是失败解决办法:删除HomeBrew目录:sudo rm -rf /Users/你的用户名/Library/Caches/H...
2018-10-14 15:57:52 6906
原创 第三方客户端登录QQ邮箱遇到“无法验证账户名或密码”问题解决
由于好久没有再登录QQ邮箱了,今天使用MBP的mail客户端登录了下,竟然一直出现无法验证账户名或密码的问题,很是纳闷呀。。。以图为证
2018-10-13 00:15:45 19720
原创 一步一步搭建CAS server(序言)
已经弄了有一段时间的CAS了,现在写一点感受和过程来纪念下,希望可以有机会帮到你。还记得那是很平静的一天,老师给我说了他的想法后发现虽然已经做了为数不多的几个项目,可是至今为止依旧是每个系统都有自己的登录认证平台,同一个用户需要多次登录才能访问不同平台,用户体验不好。就想到用单点登录系统解决这个问题。接下来就是我来对比和权衡这个sso的实现和技术选型了,查阅了好多资料,最后终于选择了CAS,...
2018-10-07 23:31:23 213
原创 记一次尴尬地使用Docker部署cas server
昨天下午使用Docker部署了CAS sso server,使用Docker部署项目与在物理机上部署还是有区别的,由于将cas server打包成了war包,所以需要部署在Tomcat中运行。传统的物理机步骤就不再进行阐述了:使用jdk自带的keytool生成https安全密钥,然后导入到jdk密钥库中使其生效。配置tomcat开启https安全访问运行项目正常访问以上这些再正常不过...
2018-10-07 23:15:36 3821 3
原创 SpringBoot启动常用命令参数(持续增加)
SpringBoot启动常用命令参数:--spring.profiles.active=dev/prod/test # 指定运行环境--server.port=你的端口号常用maven命令:mvn clean package -Dmaven.test.skip=true-Dmaven.test.skip=true # 跳过测试...
2018-10-05 21:23:57 13113
转载 CAS 和ABA问题
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程...
2018-10-04 21:00:32 6190
原创 Tomcat开启https访问
配置https需要首先生成https证书,参考https证书密钥生成步骤我把上一步生成的key复制到了Tomcat目录下在Tomcat的server.xml中添加如下xml节点:<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" max...
2018-10-04 20:06:37 1306
原创 https证书密钥生成步骤
@ 密钥生成@ 生成步骤,各参数含义:@@ -genkeypair 生成密钥@ -keyalg 指定密钥算法,这时指定RSA,@ -keysize 指定密钥长度,默认是1024位@ -siglag 指定数字签名算法,这里指定为SHA1withRSA算法@ -validity 指定证书有效期,这里指定30天@ -alias 指定别名,这里是server.cas.com@ -keys...
2018-10-04 19:23:57 8293
原创 设计模式---单例设计模式
在Java设计模式中,单例模式相对来说算是比较简单的。单例模式的定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。说白了就是,保证一个类仅有一个实例,并提供一个访问它的全局访问点。从定义中,我们可以看出:单例类只能有一个实例。单例类必须自行创建自己的唯一的实例。单例类必须给所有其他对象提供这一实例 ,向整个系统提供这个实例。饿汉单例:/** * 饿汉...
2018-10-04 17:46:46 126
使用docker、jrebel热更新和远程debug项目资源包.zip
2019-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人