自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (15)
  • 问答 (1)
  • 收藏
  • 关注

原创 redis相关面试题

volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。allkeys-random: 回收随机的键使得新添加的数据有空间存放。数据快照 (RDB)

2023-11-29 14:34:42 267

原创 Kafka相关面试题

因此你可以指定 partition,将相应的消息发往同 1个 partition,并且在消费端,Kafka 保证1 个 partition 只能被1 个 consumer 消费,就可以实现这些消息的顺序消费。对于消息队列来说,出现重复消息的概率还是挺大的,不能完全依赖消息队列,而是应该在业务层进行数据的一致性幂等校验。另外,你也可以指定 key(比如 order id),具有同 1 个 key 的所有消息,会发往同 1 个partition,那这样也实现了消息的顺序消息。2、kafka中ack的三种机制。

2023-11-29 14:20:23 271

原创 java面试-zookeeper

在提交阶段,Leader 将提案发送给所有节点,并等待多数节点的确认。在这个阶段,Zookeeper集群中的所有节点都会参与选举,并且需要确保最终选出的Leader是正确的。也就是说,所有写操作会先到 Leader 节点,然后 Leader 节点在通过 2PC(两阶段提交:预提交、ACK、确认提交等流程)来进行数据同步,当写入成功过半就认为信息写入成功。ZAB 协议还包括了崩溃恢复机制,当 Leader 节点崩溃时,系统会选择一个新的 Leader 来取代原先的 Leader 节点。1、什么是zap协议。

2023-11-21 17:02:10 727

原创 初识Kubernetes

1、Kubernetes主要由以下几个核心组件组成etcd保存了整个集群的状态 apiserver提供资源操作的唯一入口,提供认证,授权,访问控制,api注册和发现等机制 controller manager负责维护集群的状态,比如故障检测,自动扩展,滚动更新等 scheduler负责资源调度,按照预定的调度策略将pod调度到相应的机器 kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理; container runtime负责镜像管理以及pod和容器

2023-11-21 16:52:37 67

原创 java并发-Exchanger

Exchanger的底层实现基于AQS(AbstractQueuedSynchronizer)同步器,并使用了类似于管道的结构,它维护了两个格子,一个是slot1,另一个是slot2,线程1放入的对象会保存在slot1中,线程2放入的对象会保存在slot2中,当双方都调用exchange()方法时,会互相交换slot中的对象,并返回,让线程1获取到线程2放入的对象,线程2获取到线程1放入的对象,然后两个格子就会重新变成空的,以便下一次交换使用。可以看到,两个线程交换了自己的数据,并接收到了对方交换的数据。

2023-05-19 10:18:43 843

原创 java并发-Semaphore

它通过一个计数器来表达可用资源的数量,当有新线程需要访问该资源时,会先进行请求,然后进行P(proberen)操作,如果此时计数器的值为0,则线程就会被阻塞并进入等待队列中,等到其他线程释放资源后才重新获得控制权。本文中介绍了Semaphore的简介、底层实现和应用场景,同时演示了Semaphore在生产消费模型中的实现方式,相信读者可以通过本文进一步熟悉Semaphore的使用方法,从而提高对Java并发编程的理解和实践能力。需要注意的是,一旦线程获取到许可证资源,则许可证数量就会减1。

2023-05-19 10:17:24 1016

原创 java并发-CountDownLatch

下面是一个简单的CountDownLatch的例子,使用了2个线程协同工作,主线程等待两个线程都执行完毕后再输出"All threads have finished."1. CountDownLatch是一次性的,计数器的值减为0后,就无法再次使用。3. CountDownLatch是一次等待,线程等待多少次唤醒多少次,而CyclicBarrier是多次等待,线程等待一次,唤醒多次。2. CountDownLatch的计数器是顺序倒减的,而CyclicBarrier的计数器是可循环的。

2023-05-19 10:13:54 526

原创 java并发-CyclicBarrier

CyclicBarrier的内部状态主要由两个变量组成:一个是“参与者数目”,表示需要等待的线程数,另一个是“屏障状态”,表示屏障是否已经被打破。当所有线程都到达屏障,屏障状态变为true,线程们被唤醒,执行继续。1. 数据分块:当我们需要并行处理一段很大的数据时,可以把它分成多个小块,让每一个线程处理一块,等所有线程都完成后,再把它们组合起来。3. 循环计算:如果需要多次重复计算一个任务,可以使用CyclicBarrier来让所有线程在每次计算完成后等待,直到所有线程都完成一次计算,再开始下一次计算。

2023-05-19 10:11:33 320

原创 java并发-Condition

当某个线程想要通知Condition中的其他线程时,它将会唤醒等待队列中的一个线程。在increase()方法中,我们先通过lock.lock()获得锁,然后进入while循环,当count的值大于等于10时,调用condition.await()方法将该线程加入等待队列,并释放锁。在decrease()方法中也使用了类似的机制,通过while循环和condition.await()方法等待条件满足,然后更新count的值,并调用condition.signalAll()方法唤醒等待中的线程。

2023-05-19 10:08:42 682

原创 java并发-ReentrantReadWriteLock

在使用 ReentrantReadWriteLock 时,如果有线程持有写锁,那么其他线程无法获取读锁或写锁。如果有线程请求写锁,也会被阻塞。在使用它时,需要注意调用 lock() 和 unlock() 方法,尽可能多地使用读锁,减少写锁。使用 ReentrantReadWriteLock 非常简单,只需要创建一个 ReentrantReadWriteLock 对象,然后使用 lock() 和 unlock() 方法进行锁操作即可。如果有线程持有读锁,那么其他线程可以继续获取读锁,但无法获取写锁。

2023-05-18 14:30:30 524

原创 java并发-ReentrantLock

对于公平锁,`tryAcquire` 方法中会先检查队列中是否有等待锁的线程,如果有的话,当前线程就不会去争抢锁,而是会进入到等待队列中,等待锁被释放后再次尝试获取锁。ReentrantLock是ReentrantLock类的实例化对象,其核心方法是lock()和unlock(),在线程访问共享资源时,获取锁之后进行操作,操作完成之后释放锁,以便其他线程也能访问共享资源。对于非公平锁,`tryAcquire` 方法中则直接通过 `CAS` 获取锁,此时不会去检查等待队列中是否有线程在等待锁。

2023-05-18 14:28:34 613

原创 java并发-CAS

Java中的CAS(Compare and Swap)是一种多线程同步的技术,它是一种无锁算法,也就是说在实现线程同步时不需要使用锁,而是使用了一种乐观锁的思想。Unsafe类是Java中一个不安全的类,因为它提供了一些不安全的操作,如直接访问内存地址、分配内存等。Unsafe类中的compareAndSwapInt()方法可以实现对整型变量的原子性更新,而compareAndSwapObject()方法可以实现对对象引用的原子性更新。Java中的CAS技术是一种无锁算法,可以实现线程安全的操作。

2023-05-12 17:02:58 664

原创 java并发-AQS

AQS的核心思想是使用一个双向队列来维护等待线程的状态。当一个线程需要获取同步器的状态时,它将会被加入到等待队列的尾部。当同步器的状态被释放时,队列的头部线程将会被唤醒并且获取同步器的状态。AQS的状态是一个整数,表示同步器的状态。在锁的情况下,状态为0表示锁是可用的,状态为1表示锁已经被占用。同步器的状态使用一个整数来表示,可以使用CAS(Compare and Swap)操作来实现原子性的状态修改。- release(int arg):释放同步器的状态,并唤醒队列中的下一个线程。

2023-05-12 17:01:07 863

原创 java-并发-volatile关键字

因此,在多线程编程中,我们应该充分了解volatile关键字的特性,遵循Java内存模型的规定,从而编写出高效、正确、可靠的多线程程序。具体来说,当一个线程修改了一个volatile变量时,它会向操作系统发出一个写请求,操作系统会将这个请求发送到所有CPU的缓存中,从而保证了所有线程都可以看到这个变量的最新值。在Java中,volatile关键字是Java内存模型中的一部分。1. 线程之间的可见性:当一个线程修改了一个变量时,它需要将这个变量的值写回到主内存中,以便其他线程可以看到这个变量的最新值。

2023-05-12 17:00:17 769

原创 java内存模型-synchronized

当一个线程获取锁时,JVM会将对象头中的锁状态改为“偏向锁”,并将当前线程ID记录在对象头中。synchronized关键字的实现机制有对象监视器和基于CAS的机制,为了提高性能,JVM提供了锁消除、锁粗化、轻量级锁和自旋锁等优化机制。其他线程在未获取这个锁之前,无法访问这个同步代码块。当一个线程尝试获取锁时,如果锁已经被其他线程占用,那么这个线程会进入一个循环中,不断尝试获取锁。如果JVM检测到一些同步代码块被频繁地执行,它会将多个同步块合并为一个大的同步块,从而减少锁的获取和释放次数,提高性能。

2023-05-10 12:16:24 342

原创 java内存模型

即对于所有的操作(包括读和写),Java内存模型要求它们必须按照程序中的顺序执行,且对于每个线程,所有的操作必须是原子的、不可分割的。但是,在多线程程序中,由于线程之间的执行顺序是不确定的,重排序会导致线程之间的执行结果不可预测。总结一下,Java内存模型通过限制重排序、采用顺序一致性、Happens-Before关系和as-if-serial语义等机制,保证了多线程程序的正确性和可预测性。1. 程序顺序规则:在一个线程中,按照程序的顺序,前面的操作Happens-Before于后面的操作;

2023-05-10 12:10:34 436

原创 java内存模型-线程通信机制

需要注意的是,在多线程编程中,线程之间的通信往往是比较复杂的,需要考虑多种因素,如锁的粒度、锁的性质、线程的调度等。同时,需要遵循“尽量少用锁”、“尽量减少线程间通信”等原则,以减少线程之间的竞争和同步开销,提高程序的并发性能。而消息传递则是通过wait()和notify()方法实现线程之间的通信,避免了内存共享所带来的同步和协调问题。也就是说,一个线程对于共享变量的修改,在其他线程读取该变量的值时是能够感知到的。也就是说,对于任何一个共享变量,一个线程的写操作对于其他线程来说是立即可见的。

2023-05-10 12:05:57 626

原创 超好用的银行卡验证api

https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=621423323&cardBinCheck=true

2021-12-08 10:23:07 549

原创 多线程(一)线程生命周期

2020-12-18 17:23:43 88 1

原创 springboot打包docker 镜像

准备工作1、一个打好的jar包2、一个编好的dockerfile3、一个装有docker的centos环境第一步打jar包在idea的terminal输入mvn clean package第二步编写dockerfileFROM java:8VOLUME /tmpADD boot-bucket-0.0.1-SNAPSHOT.jar boot.jarRUN bash -c "touch /boot.jar"EXPOSE 8088ENTRYPOINT ["java","-j

2020-12-11 15:31:30 149

原创 redis最全面试题

1、redis使用的是单线程为什么还这么快redis是基于内存操作的读写快 redis使用的io多路复用的内存模型 单线程好处减少多线程之间切换带来的资源消耗22、redis的数据结构及其使用场景 string,hash,list,set,sortset string是以一种纯字符串作为value的形式存在的。也是这几种之中使用最多的数据结构。value可以存储json格式、数值型等。string使用场景 ...

2020-11-19 14:37:29 154

原创 1、spring源码解析(一)设计模式讲解

最近开始拜读spring源码,先聊聊spring的几大模块1、Sring IOC 工厂,单例,装饰器2、Spring AOP 代理,观察者3、Spring MVC 委派,适配器4、Spring JDBC 模板方法

2020-10-10 16:36:21 125

原创 设置mysql表的字段支持emoj

alter table user modify column name varchar(255) character set utf8mb4;

2020-09-15 20:51:21 70

原创 linux删除多少天之前的文件

find /logs/ -type f -ctime +50 | xargs rm -rf

2020-08-15 16:14:54 734

原创 Java 判断对象的一个属性是否存在该对象的List中

import java.util.List;public class JudgeList { class Person{ private int id; private int age; private String name; public int getId() { return id; } public void setId(int id) { .

2020-07-02 09:04:07 8218

原创 nginx重启

1.nginx 重新加载命令./nginx -s reload,出现nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"问题。解决办法:第一步:执行命令killall -9 nginx杀掉nginx 进程第二步:执行命令/usr/local/nginx/sbin/nginx -c /usr/local/nginx/co...

2020-06-11 11:05:11 139

原创 centos7的kubernetes集群搭建

基于kubeadm搭建Kubernetes集群1 所有节点需要配置的操作1.1 关闭防火墙# systemctl stop firewalld# systemctl disable firewalld1.2 关闭selinux# sed -i 's/enforcing/disabled/' /etc/selinux/config1.3 禁用swap# swapoff -a# vim /etc/fstab # 将与swap有关的配置注释,重启...

2020-05-25 18:22:45 232

原创 springboot jar部署的日志分割解决

springboot 项目的jar部署的日志分割问题1、先安装cronolog2、nohup java -jar app.jar | /usr/sbin/cronolog /app/logs/console.log.%Y-%m-%d >> /dev/null 2>&1 &

2020-05-19 18:29:50 1919 3

原创 阿里redis使用规范

一、键值设计1、key名设计可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2、value设计拒绝bigkey防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。反例:一个包含200万..

2020-05-14 10:46:03 199

原创 nginx+fastdfs 遇到的问题

fastdfs 模块安装后需要重启nginx reload是无法生效nginx重启名systemctl restart nginx如果报错请参考此文章https://www.cnblogs.com/ansibee/p/8087476.htmlnginx启动报错解决方案:切换到安装的FastDFS下的conf目录,目录截图如下,将http.conf和mine.types文件复制到/etc/fdfs/下,启动nginx成功解决!...

2020-05-13 23:25:00 318 1

原创 阿里云服务器挂载数据盘

mkfs.ext4/dev/vdbblkid/dev/vdb把uuid那一列复制一下uuid=xxxxvim/etc/fstabmount-a再执行df-hT就可以看到新挂载的东西了 重启机器 再 执行df -hT设备文件名或UUID 挂载点 文件系统类型 默认挂载 0 不备份,1每天备份,2不定期备份(针对分区,在挂载点目录...

2019-12-27 15:44:52 97

原创 linux删除多久之前的文件

find /app/apache-tomcat-8.5.38/logs/ -mtime +30-type f -name \* -exec rm -f {} \;

2019-12-11 15:49:10 1263

转载 最全面试题链接

1、https://blog.csdn.net/qq_26465035/article/details/1031607112、https://blog.csdn.net/twjjava/article/details/1032499533.springboothttps://blog.csdn.net/Design407/article/details/103263416

2019-11-26 09:05:55 111

原创 docker安装

1、用wget -qO- https://get.docker.com | sh命令安装docker。 用service docker start命令启动docker服务 docker info查看docker存储位置

2019-11-22 09:29:23 98

原创 linux

# cd /app/tomcat/logs删除30天前的日志内容find /logs -type f -ctime +30 | xargs rm -rf (这里实现了删除30天之前文件的命令)然后保存该文件,最后执行如下命令给该文件服务可执行权限...

2019-11-20 09:18:04 73

原创 http_load使用

-parallel 简写-p :含义是并发的用户进程数-fetches 简写-f :含义是总计的访问次数-rate 简写-r :含义是每秒的访问频率-seconds 简写-s :含义是总计的访问时间http_load -p 并发访问进程数 -f 访问总数 需要访问的URL文件http_load -r 每秒访问频率 -s 访问时间 需要访问的URL文件 执行命令 http_loa...

2019-11-11 10:44:09 226

原创 windows安装rabbitmq出现的问题

1、启动mq需要管理员身份启动cmd 输入cmd 然后 ctrl+shift+enter快捷键 管理员身份进入cmd2、添加用户错误将C盘下面的C:\Users\Lenovo\.erlang.cookie 文件 拷贝到C:\Windows\System32\config\systemprofile替换掉.erlang.cookie文件重启 net stop RabbitM...

2019-08-21 14:28:28 445

原创 面试题集锦

1、说一下集中常见的排序算法和分别的复杂度2、用java写一个冒泡排序算法3、描述一下链式存储结构4、如何遍历一棵二叉树5、倒排一个LinkedList6、用java写一个递归遍历目录下面的所有文件java基础1、接口和抽象类的区别2、java中的异常有哪几类?分别怎么使用Throwable是所有异常的根,java.lang.ThrowableError...

2019-08-12 15:26:49 196

原创 kibana操作es 修改和删除

修改数据 修改某一个字段数据POST /weitu_seller/seller/2/_update{ "doc":{ "cityId":440100 }}覆盖修改数据PUT /weitu_seller/seller/1{ "name":"微途分销商", "cityId":"440300", "sales":200, "sellerType":1}...

2019-08-07 22:26:20 7065

转载 fdfs linux搭建

https://www.jianshu.com/p/c57ad2217544

2019-07-25 17:07:27 209

EasyPR-Java 车牌识别项目下载

里面有完整的项目和java依赖 只需要本机安装opencv即可运行

2023-05-19

kube-flannel.yml

kube集群搭建所需的文件kube-flannel.yml

2020-05-25

solr+ik.rar

solr7.4集成ik7.4分词器所需的资源下载,使用说明 1、jar包放入Solr服务的Jetty或Tomcat的webapp/WEB-INF/lib/目录下; 2、将其它配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下;

2020-04-01

springside-core-4.2.3-GA.jar

springside-core-4.2.3-GA.jar,如果jar包不完整,可能会导致异常:LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context

2019-12-25

spring-boot.rar

springboot整合死信队列来实现订单支付超时 系统取消的业务

2019-10-25

springboot+shiro整合

不使用xml文件配置shiro 采用java代码对shiro进行配置 新的尝试

2019-06-14

tomcat8日志分割 亲测有效

tomcat日志分割 先安装 cronolog yum install -y cronolog httpd cronolog安装路径为/usr/sbin/cronolog 然后用我的文件覆盖tomcat/bin下面的catalina.sh文件 重启tomcat便可

2019-04-19

全国省市区数据

完整的省市级联数据sql文件 和数据库表 包含 省 市 区 三级的所有数据

2019-02-25

swagger快速生成api

可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。

2019-01-08

springboot+mybatis+druid整合 包括druid监控配置

搞了一下午 见识到了springboot和druid的好用之处 监控太好用搞了一下午 见识到了springboot和druid的好用之处 监控太好用

2017-08-11

全国地名词库

很全的全国地名词库 对分词有很大作用 特别是对文章中地名提取

2016-05-26

jsp+servlet考勤管理系统

这是花了两周 受别人委托做出来的一个jsp+servlet的考勤系统,里面的代码值得学习,里面用了登录拦截技术和bootstrap的前端 数据库附加上去就能用

2016-05-26

ambari编译环境搭建

对ambari编译环境的搭建进行详解 ,和搭建时遇到的问题的解决方案

2015-07-10

ssh框架所有jar文件

开发ssh三层框架时所需要的所有jar文件,copy进去就能用

2014-03-25

jsp+servlet+mvc三层操作

操作jsp servlet mvc 三层的基础

2014-03-25

java的swing界面

如何使用java操作数据库,并进行绑定jTable操作,进行增删改查,和右键菜单

2013-05-24

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

TA关注的人

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