- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 自定义线程池
我这里通过看书学习到一篇线程池的原理,以及去自己定义线程池,对线程池的理解还是增加不少,在此记录一下。首先得理解什么是线程池,简单来说,就是一个池子里边存放着一些已经创建好的线程,有任务提交过来,启用池子里的某个线程去执行此任务。但是还有一些问题,就是如果池子中的线程数量不够应付太多的任务时,则需要去自动向池子里增加一些新的线程,但是也不能是无限增加的。如果任务比较少的话,那也不能让太多的资源浪费,就得自动回收一些线程。为了能异步地提交任务和缓存没有被处理的任务,还需要有一个任务队列。所以,线程池需要
2021-10-12 19:55:18
311
原创 Hook (钩子) 线程学习总结
当 JVM 进程退出的时候,或者受到了系统的中断信号,hook线程就会自动执行,通过 Runtime 可以为 JVM 注入多个 Hook 线程。然后看个简单的例子:import java.util.concurrent.TimeUnit;/** * @author hasaki_w_c * @version 1.0 * @date 2021/9/28 20:52 */public class HookTest { public static void main(String[] ar
2021-10-08 16:27:23
395
原创 捕获线程执行异常
在 Thread 类中,可以获取线程运行时异常的 API 总共有四个public void setUncaughtExceptionHandler(UncaughtExceptionHandler eh) :为某个特定线程指定 UncaughtExceptionHandler。public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh):设置全局的 UncaughtExceptionHandler。
2021-09-28 20:25:48
417
原创 自定义显示锁(学习记录)
由上一篇 synchronized 理解可以知道,synchronized 提供了一种排他式的数据同步机制,某个线程在获取 monior lock 的时候可能会被阻塞,而这种阻塞有两个很明显的缺陷:无法控制阻塞时长阻塞不能被中断所以此篇文章就实现一个具备 synchronized 关键字所有功能的同时又具备可中断和 lock 超时的功能。话不多说,开始看接口import java.util.List;import java.util.concurrent.TimeoutException;
2021-09-26 19:32:07
149
原创 深入理解 synchronized 关键字
看书的时候,看到这里,觉得有必要记录一下,那就顺手写一下。先看一下 synchronized 的官方解释的翻译:synchronized 关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多个线程是可见的,那么该对象的所有读或者写都将通过同步的方式来进行。synchronized 提供了一种锁的机制,能够确保共享变量的互斥访问,从而防止数据不一致问题的出现。synchronized 包括 monitor enter 和 monitor exit 两个 JVM 指令,它能够保
2021-09-21 16:56:01
425
原创 Spring boot 2.5.x 启动流程源码分析
我想知道为什么 spring boot 启动就一行代码,直接完成了那么多功能,今天就进去看个究竟,顺便记录一下。第一个 run 方法要想往进去看,入口少不了,就是你了,这看着人畜无害的一行代码,直接点进去。然后便来到了这里,根据入参直接看这个 run() ,发现这个 run() 里就 new 了这个 SpringApplication(primarySources) 的匿名对象,然后执行了 run。new SpringApplication()那么就先来看看这个 SpringApplicat
2021-09-07 20:00:00
465
原创 最新版 dubbo-admin 0.3.0 版本安装配置教程,如何才能正确打开
首先是资源的下载进入该链接 https://github.com/apache/dubbo然后往下翻,找到这里点进去,然后这里我直接下载压缩包解压以后,包里的内容这里需要关注的有这两三个包,选中的server是后端包,ui是前端包,因为前后端分离,所以要启动这个ui项目,得下载一个node.js,这里就不演示了然后进入server文件夹下,找到这个目录里打开application.properties,这里不改默认就是8080,因为容易发生端口冲突,我就给改为7001了,建议修改一
2021-08-30 17:45:08
2382
18
原创 Mac 终端 bash 显示 git 分支以及命令自动补全配置(IDEA也可用)
次方法终端必须使用 bash首先进入 home 目录:cd ~编辑.bash_profile文件sudo vim .bash_profile将下面的代码加入到文件的最后处function git_branch { branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`" if [ "${branch}" != "" ];then if [ "${branch}" = "(no bra
2021-06-18 12:54:36
1661
原创 Wireshark 网络分析器启动后不显示网络接口(已解决)
问题:win 10系统下启动Wireshark的时候不显示网络接口了,Wireshark版本:3.4.5解决问题:得安装 WinPcap,安装完以后重启软件,就可以搜索到网络接口了。安装完成,重启软件
2021-05-17 16:52:17
3666
2
原创 ArrayList<Integer> 类型转为 int 类型数组
Java代码如下:int[] nums = list.stream().mapToInt(Integer::intValue).toArray();
2021-04-22 20:35:20
240
原创 解决 SpringBoot 发起一次请求却走两次 Controller 和 拦截器的问题
先说我的这个原因是啥,通过我断点调试,找了好久找到了一个原因,发现后台日志会给我警告 No mapping for GET /favicon.ico ,本来这个我是在我的页面中的 head 标签里 加过这样一句话 <link rel="shortcut icon" href="#"/> , 然后这个警告在运行的时候就不会有了,但是就出现了 SpringBoot 发起一次请求却走两次 Controller 和 拦截器的问题。然后我用一个在线生成 favicon.ico 的网站http://www
2021-03-09 13:31:23
5244
原创 Redis 报错 ERR value is not an integer or out of range
在使用 Spring Boot + Redis 的时候,使用 RedisTemplate 模板时,使用方法redisTemplate.opsForValue().increment(key, 1);做累加的时候,就会出现此种报错。还是序列化的问题,解决办法就是在项目启动类中添加如下代码@Bean public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
2021-03-08 21:33:29
6180
3
原创 Erlang 运行环境 otp_win64_23.2.exe 以及 rabbitmq-server-3.8.14.exe 下载以及安装
下载的版本就是标题的版本,如果通过官网下载没用 VPN 的话估计下载很慢,我把官网地址给提供一下,还有我下载好的,百度网盘下载,或者迅雷都给一下,直接两个文件一起的。要运行rabbitmq就得有 Erlang 的运行环境。官网:otp下载官网:https://www.erlang.org/downloadsrebibitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.14百度网盘版链接:https://pan.b
2021-03-05 13:18:20
2969
2
原创 Nginx反向代理端口号丢失、403 Forbidden,修修改改了好久,记录一下
我的项目使用了 Nginx ,本来将数据静态化处理了以后,还有些需要动态生成的数据,就用了 Nginx 反向代理,然后通过访问代理页面,找到数据,发送 Ajax 请求给静态页面进行显示,但其中也是历经艰辛,对我这刚上手的人来说。先是我通过我 Spring Boot 项目 tomcat 的 8080 端口访问动态部分数据,稳定数据就直接生成静态页面放在本地文件里了,然后设置 Nginx 代理,,代理了8080端口,然后我用浏览器访问我 Nginx 映射的本地静态页面,但 XHR 类型的数据就是传不过来,打开
2021-03-03 20:53:46
925
3
原创 解决 SpringBoot 2.x版本中无法访问到 static 静态资源的办法
将下面的代码放到你的源代码目录下再次启动项目即可,亲测有效。import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSuppor
2021-02-28 19:34:03
785
原创 解决 logback不打印 Mybatis SQL等相关日志 日志
我使用的是 logback 1.2.3版本,其 maven 依赖如下<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency>但是,在
2021-02-25 13:24:35
2404
原创 解决 Jetty 如何热部署的问题
找到 Jetty 中jetty-webapp 的 jar 包,我的是通过 maven 下载到我本地仓库,我的目录如下。然后使用解压工具打开,可以不解压,打开如下,找到 webdefault.xml 配置文件,然后复制出来,加入到你工程中的资源目录下。然后只需要对一处进行修改,再到 pom.xml 中引入以下,就可以完成 jetty 的热部署了,修改如下:在 webdefault.xml 里 180 行左右,将 true 改为 false 即可,如下图:然后在 pom.xml 中进行引入配置文件
2021-02-19 16:17:44
1228
原创 Spring中无法自动装配。未找到 ‘xxx‘ 类型的 Bean
遇到此类问题,首先看配置文件中是否写入所需类型的配置,然后看你的扫描是否包含此类,我在使用 Spring 的 JdbcTemplate 时,就遇到了这个问题,因为我的 bean 配置文件在 src 下,而扫描路径并不包括此类,就会出现以下情况解决办法就是要么更改扫描位置使其包含 bean 的配置文件,要么将配置文件移入扫描位置以内,再修改 Spring 应用程序上下文。方可成功解决 。...
2021-01-24 15:46:46
10045
原创 Servlet程序使用javaEE注解配置多层路径时出现404
当我配置路径为以下路径时,就会出现此错误http://localhost:8080/manager/bookServle网上找到的说法是manager是被tomcat看作不合法的,所以将此单词改为manage再进行重新部署,然后访问,就可以解决了。...
2020-12-29 22:03:35
144
原创 IDEA的Web工程使用右键新建时,没有servlet选项的做法
打开项目结构,左边那一栏找到Facet找到你需要的新建sevlet程序的目录,勾中底下源根,应是你需要创建servlet程序的src目录。然后点击应用,再次右键就会出来了。
2020-12-23 15:30:58
623
原创 Java虚拟机笔记更新中。。。
Java虚拟机笔记Java内存区域与内存溢出异常概述运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存Java内存区域与内存溢出异常概述对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题。本章从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题。运行时数据区域下图为Java虚拟机运行时数据区程序计数器程序计数器
2020-11-24 12:33:58
107
原创 maven 3.6.3 版本修改好的整个配置文件
我把我的setting.xml文件分享出来,实测可以使用。需要自己修改的地方:本地仓库自己修改一下,用我的肯定用不了。JDK版本也根据自己的需求修一下。剩下的就不用改了。<?xml version="1.0" encoding="UTF-8"?><!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTI
2020-11-24 12:29:12
1882
原创 Windows Terminal[启动“powershell.exe”时出现错误 0x80070002]错误,已解决
当你的Windows Terminal打开的时候出现这样的错误的时候,你就需要查看以下你的系统环境变量了,但是,可能按照别的博客的该法都是一个样,都是只改了Path里的变量,但是我改了Path里的还是没有改好,照样是打不开的,还是一样的错误。这里我要说的是有些只改这个变量是会好的,但前提是他需要的别的变量没有被误删,我的就被误删过,所以注意你的系统变量里有没有其他和WindowsPowerShell有关的变量,比如我就有一个PSMoudulPath,应该都会有。然后我打开看了看里边的变量,如下这时
2020-11-19 18:53:18
7519
1
原创 打不开微软自带的软件,或者初次安装sql server 提示下载不了,版本不支持的,一定检查一下这里
检查这里这里一定要把代理模式关掉,血的教训啊。
2020-11-18 17:45:01
1353
1
原创 JDBC连接MySQL报错access denied for user ‘root‘@‘localhost‘(using password:YES)
JDBC连接MySQL报错出现如下语句:access denied for user ‘root’@‘localhost’(using password:YES)这个问题,我出现了以后也是在网上搜了好多种解决办法,但是都没效果。于是我认真检查了我的DriverManager.getConnection(url, user, password)这个方法中的每一个参数是否书写正确,最终在这里找出了问题所在,单词拼写出现了问题,才导致了这个问题。这里DriverManager.getConnection(
2020-11-12 13:06:20
1106
原创 用IDEA安装使用Maven教程与教训
IDEA使用Maven插件自动生成MavenIDEA导入过以后的样子修改配置文件,配置本地仓库路径配置环境变量IDEA导入过以后的样子以下是我已经导入好并且配置好的图这里的Maven主目录是根据你IDEA自动导入的目录修改配置文件,配置本地仓库路径在上图中的Maven主目录下找到其配置文件,就是底下那个用户设置文件,如果发现与上边主目录的目录大不相同,那就将其覆盖打勾,然后从主目录底下找到settings.xml这个文件,根据我的路径来找(后边文件夹名字都一样)然后用记事本或者其他可编辑软件打开
2020-10-30 14:11:35
1175
原创 冒泡排序-Java实现(简单易学哦)
用Java实现冒泡排序(简单易学哦)冒泡排序原理以及代码实现基本思想举例说明更加贴切举例代码实现对学生成绩进行排序,输出学生信息实现代码冒泡排序原理以及代码实现本文讲述冒泡算法的原理和使用冒泡算法实现其一般功能。基本思想冒泡排序的基本思想是 :每次比较两个相邻的元素,如果它们的顺序错误就把他们交换过来。举例说明更加贴切例如我们需要将 12 35 99 18 76 这五个数进行从大到小的排序。既然是从大到小,那么肯定越小的就得越靠后(这句话很关键哦)。首先比较第一位和都二位的大小,现在第一位是1
2020-05-13 17:05:19
1492
1
数电课设四路抢答器总电路图
2020-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人