自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(252)
  • 收藏
  • 关注

原创 maven之pom中的build标签

针对整个项目的所有情况都有效。

2024-04-10 09:30:12 826 2

原创 maven的settings.xml、pom.xml配置文件

maven的配置文件主要有 settings.xml 和pom.xml 两个文件。其中在maven安装目录下的settings.xml,如:D:\Program Files\apache-maven-3.6.3\conf\settings.xml 是全局配置文件用户目录的.m2子目录下的settings.xml,如:C:\Users\chenxc.m2\settings.xml 配置只是针对当前用户的配置文件。项目根路径下的pom.xml主要是对当前项目的配置。局部配置优先于全局配置。

2024-04-09 15:00:11 781 1

原创 maven依赖管理:依赖仓库管理

答案是:可以把上面的标签配置到Maven的setting.xml文件中,配置在标签内。

2024-04-07 11:29:15 880

原创 springboot自定义starter,实现自动装配

先创建一个项目,在该项目中定义 Starter 的内容,然后通过 Maven 将其打成 jar 包,之后在另一个项目中使用该 Starter。这是SpringBoot提供的扩展点,主要在SpringBoot的不同生命周期执行相应操作[email protected](" DemoApplicationContextInitializer 初始化成功 ");@Override。

2024-02-22 14:57:59 1035 1

原创 shell脚本学习

变量名不能用数字开头#等号左右两侧不能有空格#变量的值如果有空格,必须用引号包含预定义变量作用最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。$$当前进程的进程号(PID)后台运行的最后一个进程的进程号(PID)示例1:$?#ls命令正确执行#预定义变量“$?”的值是0,证明上一个命令执行正确ls:无法访问install.log:没有那个文件或目录。

2023-10-11 23:18:47 559

原创 shell定时清理日志文件、及crontab说明

服务器日志文件一般是每天一个或多个文件,如果日志文件不清理,时间久了就会将磁盘空间占满,从而影响系统的正常运行。

2023-10-08 15:52:10 1859

原创 linux之date命令

date 命令用于系统的时间或日期。date [参数] [+日期格式]date后面有一个空格,否则无法识别命令,shell对空格是很严格的。

2023-10-07 15:26:40 1025

原创 ThreadLocal学习

java.lang.ThreadLocal类实现了线程的本地存储。【强引用】:1、threalLocal对象指向threalLocalMap中的key .2、线程对象 指向 堆中的 threalLocalMap。【弱引用】:1、threalLocalMap 的key为 threadLocal对象,即threadLocal对象 指向key为弱引用。

2023-07-12 16:05:56 342

原创 并发编程学习(十四):tomcat线程池

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。ConnectorContainer由 Engine、Host、Context和Wrapper 四个容器组成ServiceConnector 和 Container 两个核心组件。

2023-05-31 14:27:38 1981

原创 并发编程学习(十二):字段更新器、原子累加器

字段更新器,主要是用来更新自定义类的字段。注意的是:字段更新器要操作(原子操作)哪个字段,哪个字段必须被 volatile 修饰,否则会出现异常。运行结果:102020。

2023-05-12 09:17:13 490 1

原创 并发编程学习(十一):原子数组、

方法名说明创建给定长度的新创建与给定数组具有相同长度的新,并从给定数组复制其所有元素方法名说明创建与给定数组具有相同长度的新,并从给定数组复制其所有元素。这个构造方法传入一个数组对象时,该数组对象必须是引用类型,int[]不可以,但是Integer[]的可以创建给定长度的新 AtomicReferenceArray。为数组的每一位设置什么值是没有要求的,类似于Map的形式。

2023-05-11 17:20:34 639

原创 并发编程学习(十):共享模式无锁、原子整数、原子引用类型

获取共享变量时,为了保证该变量的可见性,需要使用volatile修饰。它可以用来修饰成员变量和静态成员变量,它可以避免线程从自己的工作缓存中查找变量,必须到主存中获取它的值,线程操作volatile变量都是直接操作主存,即一个线程对volatile变量的修改,对另一个线程可见。注意:volatile仅仅保证了共享变量的可见性,让其它线程能够开到新值,但不能解决指令交错问题(不能保证原子性)。CAS必须借助volatile才能读取到共享变量的最新值来实现【比较和交换】的效果。

2023-05-11 15:45:11 534

转载 Mysql里的锁(一):悲观锁、乐观锁

顾名思义,悲观锁是基于一种悲观的态度类来防止一切数据冲突,它是以一种预防的姿态在修改数据之前把数据锁住,然后再对数据进行读写,在它释放锁之前任何人都不能对其数据进行操作,直到前面一个人把锁释放后,下一个人才可对数据进行加锁,然后才可以对数据进行操作,一般。乐观锁是对于数据冲突保持一种乐观态度,操作数据时不会对操作的数据进行加锁(这使得多个任务可以并行的对数据进行操作),只有到数据提交的时候才通过一种机制来验证数据是否存在冲突(一般实现方式是。数据库本身锁的机制都是基于悲观锁的机制实现的;

2023-02-26 16:03:14 668

原创 DecimalFormat的用法: 数字格式化

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。DecimalFormat 包含一个模式 和一组符号 ,在做数字格式化时,DecimalFormat还是比较方便的。常用于保留小数点后几位、数字间用,分割、四舍五入等场合。符号位置本地化含义0数字是阿拉伯数字数字是。

2023-02-21 23:15:56 934

原创 并发编程学习(九):同步模式之顺序控制、交替打印

同步模式之顺序控制、交替打印

2023-01-31 11:03:09 593

原创 并发编程学习(八):ReentrantLock特性、哲学家吃饭问题

ReentrantLock 是java.util.concurrent.locks包下的类。相对于synchronized,它具备如下特性:可中断。可以设置超时时间。可以设置公平锁。支持多个条件变量。即可以有个多个waitset等待队列。与synchronized都支持可重入。可冲入是指 同一个线程如果首次获得了这把锁,那么因为它是这把锁的拥有者,因此有权利再次获取这把锁。如果是不可冲入锁,那么第二次获取锁时,自己会被锁挡住。

2023-01-30 14:41:25 853 1

原创 并发编程学习(七):线程活跃性:死锁、活锁、饥饿

即可定位到死锁的类和行数。

2023-01-28 14:58:04 870

原创 Excel特殊符号及用法

000;(000代表次列有三位,不足的前面不自动补0)。点击确认后,就可以在表格中输入:001。

2023-01-13 16:02:49 7797

原创 数据库视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。

2023-01-10 14:10:19 533

原创 并发编程学习(六):park、unpark

它们是LockSupport类中的方法,内部调用的是Unsafe类中的native方法。RUNNINGLockSupport.unpark(要恢复的线程对象);先park再unpark的方式是容易理解的。但还有一个场景,先unpark后再次执行park方法,也不会阻塞调用了park方法的线程。理解为park方法就是校验获取一个通行令牌,而unpark方法是获取到一个通行令牌的过程。先执行unpark方法,代表先获得了通行令牌。

2022-12-23 17:57:19 1687

原创 并发编程学习(五):设计模式~同步模式之保护性暂停

保护性暂停 即Guarded Suspension,用于在一个线程等待另一个线程的执行结果。要点:有一个结果需要从一个线程传递到另一个线程,让它们关联同一个对象GuardedObject。如果有结果不断从一个线程到另一个线程,那么可以使用消息队列。JDK中,join的实现、Future的实现,采用的就是此模式。

2022-12-22 15:57:48 1001

原创 并发编程学习(四):wait()、nitify()

线程通信:wait() / notify() / notifyAll() 此三个方法定义在Object类中的。obj.wait() 让进入object监视器的线程 到waitset等待。obj.notify()在object上正在waitSet等待的线程挑一个唤醒。obj.notifyAll()让object上正在waitSet等待的线程全部唤醒。它们都是线程之间进行协作的手段,都属于Object对象的方法。必须获得此对象obj的锁,才能调用这几个方法。wait() 方法会释放对象的锁。

2022-12-22 14:57:09 932

原创 并发编程学习(三):主线程、守护线程

2、tomcat中的acceptor和poller线程都是守护线程,所以tomcat接收到shutdown命令后,不会等待它们处理完当前请求。调用Thread的 isDaemon() ,可以返回该线程是否为守护线程。返回true-守护线程。调用Thread的 setDaemon(true) ,代表设置该线程为守护线程。,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。默认情况下,java进程需要等待所有线程都运行结束,才会结束。1、 垃圾回收器线程就是一种守护线程。

2022-12-19 11:33:26 77

原创 并发编程学习(二):两阶段终止模式(two phase termination)

在一个线程t1中如何优雅的终止线程t2?这里的优雅指的是给t2一个料理后事的机会。该行为是为了防止while(true) 占用大量的内存资源,通过睡眠2s可以大幅度减少内存消耗。,会抛出异常,并清除打断标记,所以需要线程内部自己重新设置打断标记。

2022-12-13 15:48:05 96

原创 并发编程学习(一):Thread类中的常用的方法

1.启动当前线程;调用当前线程的run()。start方法只是让线程进入就绪,里面的代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用多次会出现IllegalThreadStateException.2. run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中.3. currentThread():静态方法,返回执行当前代码的线程4. getName():获取当前线程的名字。

2022-12-13 15:10:08 674

原创 JMH基准测试工具 (一):介绍

在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。 但是,如果熟悉JVM类加载机制的话,应该知道JVM默认的执行模式是JIT编译与解释混合执行。JVM通过热点代码统计分析,识别高频方法的调用、循环体、公共模块等,基于JIT动态编译技术,会将热点代码转换成机器码,直接交给CPU执行。 也就是说,JVM会不断的进行编译优化,这就使得很难确定重

2022-12-06 16:20:00 1613

原创 kafka学习(七):消息队列与JMS

Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目,目标是为处理实时数据提供一个统一、高通量、低等待的平台,Kafka被广泛地应用于各种流式计算中。

2022-11-25 09:53:26 1838

转载 kafka学习(六):kafka应用场景

消息队列中间件是分布式系统中重要的组件,主要解决,,等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。

2022-11-24 11:08:32 3904

原创 kafka学习(五):消费者分区策略(再平衡机制)

*** 返回序列化后的自定义数据*/}/*** 分区分配的计算逻辑*//*** 当组成员从领导者那里收到其分配时调用的回调*/}/*** 指明使用的再平衡协议* 默认使用RebalanceProtocol.EAGER协议, 另外一个可选项为 RebalanceProtocol.COOPERATIVE*/}/***/}/*** 分配器的名字。

2022-10-26 10:19:06 4082 2

原创 kafka学习(四):生产者发送消息的分区策略

自定义分区策略 跟DefaultPartitioner实现方式一样。1、创建一个类,实现Partitioner接口。2、重写 partitioner中的方法,partitioner()方法的参数说明:参数1:topic参数2:key值参数3:key值字节数组参数4:value数据参数5:value数据的字节数组参数6:集群对象3、在 partitioner() 方法中编写自定义分区逻辑,返回分区编号。4、在生产者配置信息中进行配置自定义分区:=配置类全路径。

2022-10-25 14:38:17 3816

原创 kafka学习(三):kakfa消息处理、索引、零拷贝

综上,这三层语义,没有好坏之分,主要看具体的应用场景。例:允许数据丢失,但追求高性能,使用 at most once 至多一次。对数据精度要求非常高,一条不能丢并且结果严格正确,使用exactly once。很多框架默认是第二种(折中的),如何降低数据重复处理的可能行呢?可以适当调高超时时间,尤其是网络环境不好时。

2022-10-24 11:28:21 1175

原创 kafka学习(一):介绍、相关概念

Kafka最初由Linkedin公司开发,是一个分布式的、⽀持分区的(partition)、多副本的(replica)、多订阅者,基于zookeeper协调的分布式消息系统(也可以当做MQ系统),也是一个分布式流处理平台常用于web/nginx日志、访问日志、消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

2022-10-24 10:01:50 1330

原创 kafka学习(二):单机环境搭建、基本使用

下载kafka很简单,可以使用源码的方式和安装包的方式安装。这里使用安装包的方式进行安装,只需要进行解压运行即可。源码下载地址:https://archive.apache.org/dist/kafka/2.5.0/kafka-2.5.0-src.tgz安装包下载地址:https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz。

2022-10-24 09:34:23 1966

原创 分库分表概念、使用场景、带来的问题

1、如果只是数据量大,达到了索引瓶颈,那么只需要分表即可;2、如果是数据量和并发量都大, 那么达到了io和cpu瓶颈,那么需要分库。

2022-10-20 11:14:17 982

原创 List集合排序

Java中集合排序,在Java8之前,可以通过 Collections类的sort方法进行排序;Java8之后,新增 lambda和stream ,都增加了相关的排序方法,本文将整理下常见的三种排序方法。说明:排序字段出现null值 会报错。

2022-09-29 14:25:43 1985

原创 elasticsearch学习(七):es客户端RestHighLevelClient

Java Low Level REST Client:ES官方的低级客户端。低级别的客户端通过http与Elasticearch集群通信。Java High Level REST Client:ES官方的高级客户端。基于上面的低级客户端,也是通过HTTP与ES集群进行通信。它提供了更多的接口。客户端(Client) Jar包的版本尽量不要大于Elasticsearch本体的版本,否则可能出现客户端中使用的某些API在Elasticsearch中不支持。

2022-09-24 18:44:32 34868 5

原创 elasticsearch学习(六):IK分词器

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。1)采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。

2022-09-19 18:12:39 10551

原创 ElasticSearch学习(五): 分词器

顾名思义,就是,也叫。在 ES 中,Analysis是通过来实现的,可使用 ES 内置的分析器或者按需定制化分析器。举一个分词简单的例子:比如你输入,会自动帮你分成两个单词,一个是mastering,另一个是,可以看出单词也被转化成了小写的。

2022-09-19 17:21:39 1832

原创 ElasticSearch学习(四):增删改查、高亮、聚合、别名、重建索引

Elasticsearch默认走的是http协议,而http协议它是一种无状态的协议,无状态就是指服务端它不会记录客户端的所有信息和操作,客户端必须每次带上自己的状态去请求服务器。因此,如果客户端想要操作这个服务器,必须通过某些手段,才能让服务器发生状态转化。而这种转化是建立在表现层之上的,所以说这就表现层的状态转化。我们对ES的所有操作,都被封装成了RestAPI,所以我们只要发送请求就行了。

2022-09-18 12:45:17 2016 1

原创 ElasticSearch学习(三): index的Settings配置参数

所谓静态配置项就是在创建index时指定,创建后不能再修改。静态配置里,有重要的部分是配置分析器(config analyzers)。所谓动态配置项是在创建index后,还可以通过API动态来修改。排序的字段只能是boolean,numeric,date,(1)慢搜索日志设置。(2)慢索引日志设置。

2022-09-17 00:00:31 3816 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除