- 博客(54)
- 收藏
- 关注
原创 多线程的入门(五)线程池的保活策略
利用阻塞队列实现了保活,take()方法当队列为空时会阻塞,poll()方法在队里为空时也会将线程阻塞在此处,当前任务线程数小于则会阻塞在take()中,大于则调用poll(aliveTime)进行阻塞;processWorkerExit()方法 还会判断当前是否为运行态,当线程池为运行态时,且当前工作线程数小于核心线程数是就重新创建一个空闲线程。线程池是如何保活的呢?runworker()方法的最后会调用的。
2024-04-12 01:53:46
248
原创 如何将普通maven项目转为maven-web项目
文件-项目结构(File-->Project Structure )模块-->learn(moudle-->learn)
2024-04-11 21:29:27
256
原创 volatile关键字
被volatile修饰的变量corePoolSize读写时会强制使用内存,也就是说A线程对corePoolSize变量执行写操作时,会使其他线程刚从内存中读取的corePoolSize会被强制失效,需要其他线程重新从内存中再次获取;不具备原子性,修饰的变量的操作一般为读,改,写三者连续,当A线程写入时,主内存中的值如果已经改变,也是不会影响写的,例如变量原值为0 ,A读取后改成1 写入1之前,B线程已经改成了1,就会导致最后的结果还是1,而不是0+1+1=2。修饰的变量的修改操作与自身无关。
2024-04-07 23:19:50
169
原创 linux命令学习(一)grep命令
q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context。-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before。-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after。-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数。-e:实现多个选项的匹配,逻辑or关系。
2024-04-06 23:35:43
253
原创 多线程的入门(四)ThreadPoolExecutor线程池
注意:addWork(参数一,参数二),根据参数二 也就是boolean得参数值确定与最大线程数比较,还是与核心线程数比较;且线程数最大不能超过536870911 源码中为(1<<29)-1。线程池按以下行为执行任务。
2024-04-06 16:44:52
140
原创 多线程的入门(三)Thread的认识
target:线程主要的执行体也就是run方法 最主要的参数。yield():暂停当前正在执行的线程,并执行其他线程。Thread类的所有构造器最后都指向int方法。notify():其他线程调起唤醒暂停的线程。notifyAll():唤醒所有等待的线程。run()主要的方法体,运行的逻辑体。group:线程的分组 一般用默认。name:线程名字 一般用默认。sleep() 线程休眠一定时间。2.Thread的常用方法。1.Thread的构造器。wait():线程暂停;start()启动方法。
2024-04-06 15:01:55
251
原创 多线程的入门(二)线程实现与初步使用
实现Callable接口,实现call方法,利用FutureTask的构造器(入参为callable对象的实现类)创建实例,调用该对象的run方法或者直接用线程池执行该实例,FutureTask实现了RunnableFuture接口,RunnableFuture实现了Runnable与Future接口。//线程池运行时,调用方法的线程等待返回值。//无返回值的线程池运行任务。//有返回值的线程池运行任务。//调用方法的线程执行。//调用方法的线程执行。//运调用方法的线程行。//自定义线程池工厂。
2024-04-06 14:05:51
849
原创 Aop的简单使用(一)
简单的去使用Aop,首先我们要创建一个Aop的工具类,在里面定义下我们需要的基础方法。以上方法完善后就可以简单的实现Aop的使用。
2023-08-28 11:18:31
119
原创 Linux命令学习(一)grep命令
q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context。-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before。-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after。-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数。-e:实现多个选项的匹配,逻辑or关系。
2023-08-28 10:37:06
387
原创 日志学习(二)日志得使用
File: #文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用。status: warn #日志级别 有高到低 ERROR、WARN、INFO、DEBUG、TRACE。日志的配置方式我一般接触到的有三种,一种是xml,一种是properties,还有一种是yml;ThresholdFilter: #过滤debug后的。ThresholdFilter: #过滤error后的。# PatternLayout: #输出格式。
2023-03-22 16:51:47
145
1
原创 MQ的对比
特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 10万级,RocketMQ也是可以支撑高吞吐的一种MQ 10万级别,这是kafka最大的优点,就是吞吐量....
2022-08-08 10:52:02
247
原创 Can’t load IA 32-bit .dll on a AMD 64
Can’t load IA 32-bit .dll on a AMD 64
2022-06-28 14:40:42
247
原创 java.util.ArrayList cannot be cast to com.github.pagehelper.Page
mybatis分页插件得问题;原因:因为这段代码PageHelper.startPage(pageNum, pageSize);只会对靠近的第一个select查询语句进行分页;原本的代码:public PageResult findPageByLogin(Tcsa tcsa, int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); Authentication authentication = Secu
2022-05-15 15:22:33
5523
原创 spring boot 项目集成security
springboot集成security需要三步:一、引入依赖 <!--集成安全框架--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </depen
2022-04-22 09:28:10
2729
3
原创 静态与非静态
static所修饰得变量属性、方法、代码块、内部类,被称为静态变量属性、静态方法、静态代码块、静态内部类;我们都知道:静态成员不可以访问非静态成员,而非静态成员可以访问静态成员;但是原因是为什么呢。 对此我进行了研究,首先我们要了解类得生命周期;类的生命周期:——装载——验证——准备——解析——初始化——对象实例化——垃圾收集——对象终结,卸载类型如下图:静态成员的创建是在类加载时得准备阶段所创建的,可以被类的所有实例所共享,而非静态成员是在类实例化得时...
2022-04-20 16:49:19
86
转载 MVC-三层架构-SSM
MVCMVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型):模型代表一个存取数据的对象或JAVA POJO. 它也可以带有逻辑,在数据变化时更新控制器。View(视图): 视图代表模型包含的数据的可视化。Controller(控制器): 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。MVC架构程序的工作流程是这样的:(1)用户通过View页面向服务端提出请求
2022-04-20 16:25:39
3534
原创 JVM的整理
首先百度百科关于jvm的描述很精确了,但是有些地方理解起来难,因此写了这篇博客,借鉴百科的同时,用简明的语言去阐述Jvm,一方面是梳理一遍会利于自己对jvm的进一步理解与记忆,再者是希望大家看完后能有所收获,有什么问题希望大家指正。什么是Jvm?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言...
2022-02-10 16:12:42
101
转载 ElasticSearch和solr的差别
Elasticsearch简介Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。StackOv
2022-02-10 11:21:17
154
转载 本地部署RabbitMQ
一.下载RabbitMQ管理工具1.windows下载地址:http://www.rabbitmq.com/install-windows.html2.Linux,BSD, UNIX下载地址:①:Debian and Ubuntuhttp://www.rabbitmq.com/install-debian.html#downloads②:RHEL, CentOS, Fedora, openSUSEhttp://www.rabbitmq.com/install-rpm.html③:Gen
2022-02-10 10:53:49
542
原创 MQ消息队列(二)RabbitMQ
首先了解RabbitMQ的成员Producer:生产者,将消息发送到Exchange;Exchange:交换器,将从生产者收到的消息路由到Queen;Queen:存放消费者消费的消息;Consumer:消费者,从Queen中获取消息;BindingKey:绑定键,Exchange与Queen之间的的配置,换句话说就是Exchange将怎样的消息路由到Queen;RoutingKey:路由键,Producer(生产者)将消息与路由键发送给Exchange(交换器),交换器对比Bin..
2022-02-09 18:10:37
1205
1
转载 RabbitMQ安装与集成
一、前言RabbitMQ是一个开源的消息代理软件(面向消息的中间件),它的核心作用就是创建消息队列,异步接收和发送消息,MQ的全程是:Message Queue中文的意思是消息队列。1.1 使用场景削峰填谷:用于应对间歇性流量提升对于系统的“破坏”,比如秒杀活动,可以把请求先发送到消息队列在平滑的交由系统去处理,当访问量大于一定数量的时候,还可以直接屏蔽后续操作,给前台的用户友好的显示;延迟处理:可以进行事件后置,比如订单超时业务,用户下单30分钟未支付取消订单;系统解耦:消息队列也可以帮开
2022-02-09 18:03:45
43
原创 MQ消息队列(一)MQ
什么是MQ?消息队列可以简单理解为:把要传输的数据放在队列中。·把数据放到消息队列叫做生产者 ·从消息队列里边取数据叫做消费者为什么用MQ?解耦、异步、削峰解耦传统方法:public void 方法(){ 代码1; 调用系统B服务; 调用系统C服务; 代码2;}MQ方法:public void 方法(){ 代码1; 发送消息; 代码2;}异步传统方式:传统方法:public void 方法(){ 代码1;...
2022-02-09 16:59:17
721
原创 安装多个jdk出现的切换jdk版本异常的问题
最近装了多个jdk,明明已经把原来的jdk配置更改了,依然找到的是原来版本得jdk,百度了一下才知道是因为:a)jdk1.6、jdk1.7会生成这三个文件在:C:\Windows\System32目录下;b)jdk1.8会生成这三个文件在:C:\ProgramData\Oracle\Java\javapath目录下;所以我们有两种处理方式一,删掉C:\ProgramData\Oracle\Java\javapath或C:\Windows\System32目录下的java.exe、java.
2022-02-08 18:17:34
2022
原创 idea项目maven与maven仓库永久性的设置
不同版本的idea设置方式不同,之前我记得是有个othersetting,后来找不到了,现在需要打开首页面,也就是下图,找到自定义,点击所有设置,后会进入设置页面,跟在项目中设置一样,设置maven属性就可以了。然后:...
2022-02-07 17:17:02
820
转载 tomcat安装与配置
https://jingyan.baidu.com/article/e8cdb32be15b0437052bad17.html
2022-02-07 14:26:00
43
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人