- 博客(66)
- 问答 (2)
- 收藏
- 关注
原创 dockers安装rabbitmq
访问exchanges的时候Management API returned status code 500 -之后出现了一个问题,
2023-12-07 19:50:26 266
原创 docker基础学习
安装 yum 源 docker#安装 docker 此处安装的是18版本的,还有19,20等等更高版本#启动#校验安装#出现以下的客户端及服务端信息就是安装成功了。
2023-10-03 01:08:18 774
原创 MybatisPlus的使用
)// or如果返回类型是 IPage 则入参的 IPage 不能为null,因为 返回的IPage == 入参的IPage;如果想临时不分页,可以在初始化IPage时size参数传
2023-08-18 13:28:33 212
原创 SpringBoot整合Druid、Mybatis、MybatisPlus以及MybatisPlus代码生成器
1)引入jar包2)在application.yml中注意: initialization-mode: always 第一次用过之后注释掉,或者将其改成never用户名:admin/密码:123456(在配置文件中有)
2023-08-17 17:41:45 521
原创 SpringCloudAlibaba之Sentinel(一)流控篇
为什么使用Sentinel,这是一个高可用组件,为了使我们的微服务高可用而生我们的服务会因为什么被打垮?一,流量激增 缓存未预热,线程池被占满 ,无法响应二,被其他服务拖垮,比如第三方的接口响应慢三,异常没有处理:缓存击穿,缓存穿透等等总之而言:系统缺乏可用性防护,没有容错机制,尤其是针对流量的防护会降低服务的可用性服务雪崩:首先是积分系统服务挂掉了,一个系统不可用,导致整个微服务系统都不可用限制流量熔断。
2023-08-03 13:45:48 1051
原创 SpringCloudAlibaba之Nacos服务的发现与注册中心(二)配置
在nacos中的雪崩保护和阈值(0~1)与spring.cloud.nacos.discovery.ephemeral这个配置有关ephemeral为false,永久实例epheme为true,临时实例(默认)健康实例数/总实例数
2023-08-03 09:41:51 327
原创 SpringCloudAlibaba之Nacos服务的发现与注册中心(一)
在windows上搭建:下载nacos ,我在本地下载的是2.1.0解压:进入nacos目录>bin目录找到startup.cmd文件,用记事本打开:修改其模式为standalone单机模式,之后保存文件,再双击startup.cmd出现以下,启动成功访问注意:nacos安装之前先安装jdk,并且配置好环境变量JAVA_HOME,JD的版本需要在1.8+,如果不安装好或者皮质好,会各种报错用户名/密码:nacos/nacos。
2023-08-03 08:30:59 161
原创 SpringCloudAlibaba之Nacos配置中心
注意:Data ID和项目名称相同才能读取到配置,Data ID也输入order-nacos。bootstrap.yml中就不再指定项目名称了。
2023-08-02 16:06:43 255
原创 ElasticSearch学习之ElasticSearch快速入门实战
1.先“分词”2.倒排索引(前提是分词)ElasticSearch官网地址:欢迎来到 Elastic — Elasticsearch 和 Kibana 的开发者 | Elastic。
2023-07-31 16:20:36 1053
原创 SpringCloudAlibaba之Ribbon
在@ComponentScan能扫到的范围外写一个类:(注意:是扫描范围之外)Ribbon是nacos自带的负载均衡器,属于客户端的负载均衡。但是在Spring高级版本中让LoadBalancer替代了。本人用的是2.1.0的nacos,ribbon还没有被替换。在配置类中:@LoadBalanced。在代码中怎么配置呢?
2023-07-29 17:31:12 736
原创 常见linux命令
永久关闭防火墙(禁用开机自启)下次启动,才生效:systemctl disable firewalld;永久开启防火墙(启用开机自启)下次启动,才生效:systemctl enable firewalld。暂时关闭防火墙的命令:systemctl stop firewalld;暂时开启防火墙:systemctl start firewalld。查看防火墙状态的命令:systemctl status firewalld 或者 firewall-cmd --state。
2023-07-23 13:21:48 78
原创 xxl-job分布式任务调度器的学习
先看一下原生的任务调度器定时任务调度器在什么场景下使用呢?房贷车贷的还款,花呗借呗白条的还款等等这种参加定时活动的场景。原生的任务调度器有什么弊端呢?1.在分布式环境下,每个应用都配一个任务调度器的话那么执行多次;2.如果任务执行失败了,不能重试;执行异常了,不能报警;3.重新配置了任务的话,必须要重启应用 等等。所以需要选择一种机制进行定时调度,那就选择xxl-job,是中国人开发,完整的中文文档,低门槛,易于管理。这里选择GITEE下载,下载到本地的代码中有sql,doc,源码等等,
2023-07-22 11:54:43 199
原创 日常代码优化(一)
今天在做项目的时候遇到了很平常的一个功能——新增一条商品数据,但是这条数据字段很多,与之有关系的还有很多其他表中的信息,是一对多的关系。其中的这几个List操作都是需要:1,遍历的每条数据中加入pproductId。写的视乎就不是很满意了,但是先完成这个功能也很重要。想一想可不可以把这样的操作提出来呢?怎么才能把代码写好呢?
2023-07-13 16:01:28 215
原创 并发容器(三)BlockigQueue
2.LinkedBlockingQueue 底层是由链表实现的,锁的粒度更细,但是占用的内存更大。1.ArrayBlockingQueue是最简单的一种阻塞队列,底层是由数组实现。3.SynchronousQueue这是一个很有意思的队列,不存储数据。当移除元素的时候takeLock和putLock一起加。* 每个put 必须等待一个 take, 反之亦然。* 更像是一手交钱,一手交货。
2023-07-11 09:09:19 77
原创 Redis专题学习(一)Redis核心数据结构实战与高性能原理剖析
redis中有五种基本的数据结构;来看看 这5中基本数据类型的基本使用和应用string是最常见和最基本的数据结构set key value // 存入字符串键值对mset key value [key value ...] // 批量存入字符串键值对get key //获取一个字符串的键值mget key [key ... ] //批量获取字符串的键值del key [key...] 删除一个(多个)键expire key senconds //设置一个键的过期时间 单位为秒。
2023-07-10 09:51:03 412
原创 并发容器(二)ConcurrentHashMap
在JDK1.8之前,ConcurrentHashMap使用了自旋+cas+synchronized关键字,在哈希冲突的时候,数组的数量大于64,链表的数量大于8的时候转换成红黑树的结构,不过这个是千万万分之六的概率,也就是说转换成红黑树的概率是很小的。在JDK1.7之前,ConcurrentHashMap使用了Segments数组+HashEntry数组+链表的方式实现。提到ConcurrentHashMap都能想到啥?这里有个很重要的思想:分段锁的思想。
2023-07-09 16:40:42 127
原创 并发容器(一)CopyOnWriteArrayList
同步容器:Vector,HashTable,SynchronizedList是线程安全的,因为里面加了synchronized,所以这样的容器也叫同步容器,这样的容器在高并发的情况下性能会很低,相当于并发的线程串行化执行了。以add(o)方法为例,看看源码:add属于写操作,是需要上独享锁的,这里的锁可能根据jdk版本的不同而不同,jdk11用的是synchronized关键字, jdk8用的是可重入锁。我们知道,ArrayList,LikedList,HashMap都是现成不安全的容器。
2023-07-05 21:54:13 158
原创 Mysql中IP地址如何在数据库中存储
如果用字符串来存储的话呢,最短是(0.0.0.0)是7个字符,最长是(255.255.255.255)15个字符,在mysql中,还要额外的一个字节来存储字符串的长度,是为了让数据库准确的跟踪列里有多少条数据。在Mysql中,当存储ipv4地址的时候,应该使用32位的无符号(int unsigned)来存储ip地址,而不是使用字符串,用int unsigned类型存储,ip地址是由32位2进制数组成,也就是4个字节长的整数。用无符号的32位整数存储,不要用字符串存储ip。
2023-07-05 13:25:13 1189 1
原创 深入学习单例设计模式
保证一个类只有一个实例,并且提供一个全局访问点使用的场景:重量级的对象、不需要多个实例,及我们想复用的对象,如线程池,数据库连接池等 等。Spring中的IOC容器是单例对象,JDK的Runtime也是单例对象。
2023-06-28 11:10:37 532
原创 学习AQS
JUC包中 的很多同步器如ReentrantLock、Semaphore、CountDownLatch等等都是有一些基础的共同的行为,比如:等待队列、条件队列、独占获取、共享获取等等,这些抽象行为就被封装成一个抽象类,就是AbstractQueuedSynchronizer(抽象队列同步器)。一般是通过一个内部类Sync继承 AQS将同步器所有调用都映射到Sync对应的方法看图,抽象类AbstractQueuedSynchronizer的实现类几乎都是各种我们常见的JUC工具类中的内部类——各种Sync。
2023-06-26 09:34:45 362
原创 ReentrantLock实现生产者和消费者
java.util.concurrent类库中提供Condition类来实现线程之间的协调。调用Condition.await() 方法使线程等待,其他线程调用Condition.signal() 或 Condition.signalAll() 方法唤醒等待的线程。注意:调用Condition的await()和signal()方法,都必须在lock保护之内。
2023-06-25 13:37:36 111
原创 用synchronized实现一个简单的生产者和消费者
2)如果条件不满足,那么调用对象的wait()方法,被通知后仍要检查条件。3)通知所有等待在对象上的线程。3)条件满足则执行对应的逻辑。等待方遵循如下原则。通知方遵循如下原则。
2023-06-25 13:05:00 121
原创 导致JVM内存泄露的ThreadLocal详解
多个线程共同操作一个共享变量,一定会引发并发问题,那么解决的方法就是对代码进行同步,比如synchronized关键字,但是ThreadLocal换了一种思路:让每个线程都拥有共享变量的副本,这样就不会引发多线程并发问题了。类中有一个静态内部类ThreadLocalMap,这个Map就是用来存储线程局部变量数据的,底层是一个Entry的数组,注意这个Entry的键 是一个弱引用,而且键类型是。虚拟机栈中的栈帧会不断的出栈,而且当一个任务运行结束后,虚拟机栈会销毁, 那么下图中的引用就没有了。
2023-06-21 17:46:38 1439 1
原创 学习Spring之声明式事务
事务底层是用AOP实现的,加上@Transactional注解之后,会依据动态代理创建一个子类,进而会将这个方法作为切入点,切面就是之前编程式事务的内容,在要执行的方法前后加上事务的逻辑commit和rollback,设计到了跨方法,将conn放入ThreadLocal中。可重复读 repeatable read (其实是上了一个行锁)事务1开始了还没结束 ,读取表数据,这时候事务2修改了表数据并且已经提交,那么事务1在这个事务中是查不到的,但是事务1能查询到事务2已经提交的增加的数据,这就是幻影读。
2023-06-21 14:13:51 566
原创 Mybatis多表关联查询
用了MybatisPlus之后,感觉自己写sql的机会不多,但是一些多表关联还是需要自己写的。今天复习一下mybatis中的多表关联查询建两个简单的表:emp员工表dept部门表员工:部门=多:1部门:员工=1:多如果项目中有多对多的关系,需要引入中间表,比如rbac中的用户角色表就是多对多的关系。
2023-06-20 23:55:56 7652
原创 复习并发编程的基础知识之线程池及线程池的核心线程数设置
workQueue:the queue to use for holding tasks before they are executed.这个队列用于存放任务,什么样的任务呢?在这些任务被执行之前的任务。也就是说,任务没执行的时候都放在这个阻塞队列中。unit:和keepAliveTime成对出现,存活时间的单位。其中线程池的几个重要参数是面试中经常被问的内容。threadFactory:线程工厂。线程池中的线程对象–》银行的服务窗口。在java中我们在使用线程池的时候,handler:拒绝策略。
2023-06-15 09:25:56 2015 2
原创 复习并发编程的基础知识(二)
同步:一些敏感的数据(比如共享的需要修改的资源)不允许被多个线程同时访问,此时就是用同步访问技术,保证数据在任何同一时刻,最多有一个线程可以访问,以保证数据的完整性。但是sleep()和yield()方法都不会释放锁资源。2.Runnable(Ready和Running)正常情况下,run方法执行结束了就会释放锁。两种方式:1,同步代码块的方式。wait()方法也会释放锁。
2023-06-12 21:35:49 456
原创 复习并发编程的基础知识(一)
我们在启动一个java进程的时候,main()是主线程,在main()方法中又启动了子线程,当主线程运行结束了不意味着进程就结束了,所有线程结束了进程才结束。如下图程序中,当运行该程序的时候,控制台输入jconsole,可以查看线程的情况,当main()方法执行完成之后会退出,Thread-0会继续执行。底层是调用了start0()方法,这个方法是native方法,即本地方法,底层是C或者C++实现的,是JVM来调用的,真正实现了多线程。守护线程服务于用户线程,当用户线程结束的时候,守护线程也结束了。
2023-06-12 20:06:09 499
原创 CentOS 7安装docker 及docker 不能被外网访问的问题
以下是下载最新的docker的方式:对于 CentOS 系统:sudo yum install -y yum-utils device-mapper-persistent-data lvm22.设置 Docker 的存储库:3. 安装 Docker:4.启动 Docker 服务:5.验证 Docker 是否正确安装,运行以下命令检查 Docker 版本:随机启动。
2023-06-09 21:46:01 3118
原创 Vue路由到新的页面,页面的名称需要改变
如下图:在页面中点击“属性列表”和“参数列表”的时候,要路由到新的页面,之后页面要显示对应的按钮名称,也就是说这个路由地址的名称是动态的。
2023-06-09 14:34:35 1871
原创 activeMQ持久化报错的问题
我本地用的是mysql8.0以上,记得要在lib目录中加入响应的jar包。activeMQ持久化,启动activeMQ报错,其中useSSL=false一定要加上,在active.xml中。
2023-04-23 11:11:22 600
eclipse自带的svn导入代码,突然就这样了!
2015-12-05
hibernate中怎么把字符串转成数字类型?
2015-11-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人