笔记
Java充电桩
这个作者很懒,什么都没留下…
展开
-
lambda常用 备忘录
lambda常用备忘录原创 2024-07-03 09:36:10 · 123 阅读 · 0 评论 -
linux安装acitveMQ已启动,windows无法访问8161
今天在学习activeMQ,将其装在linux上也启动了,但是windows就是无法访问,所以来一步一步找问题。项目是否有启动首先查询是不是真的有启动ps -ef|grep activemq|grep -v grep然后再看看端口是否用被占用再看看losf -i:61616然后发现这里好像用的是IPv6,因为那啥我虽然不是很清楚,但是知道有个IPv6和IPv4的东西,这个以后再研究一下这个东西。然后先看看MQ前端页面的8161有没有查出来是这么一个玩意,百度了一下也没结果。原创 2021-04-17 14:38:29 · 474 阅读 · 1 评论 -
硬盘、内存、CPU、缓存
硬盘的特点是容量大,数据主要存储在硬盘中。但是CPU不能直接访问硬盘,因为硬盘的运行速度实在太慢了,所以就以内存为媒介。内存先读到硬盘,CPU在来拿去做运算或处理。但是内存还是不够快,所以CPU里面还分出来一块叫缓存,CPU会先去缓存中读取,没有就去内存中读再放到缓存中,方便下次使用,有就直接拿去用。硬盘是外部存储,内存和缓存是内部存储,CPU则是负责运算...原创 2021-04-13 13:40:13 · 385 阅读 · 0 评论 -
数据结构之链表
链表与数组对比我们常用的集合就是arraylist他的结构是数组,而linkedlist的结构则是链表。数组是开辟一串连续的空间,将值一个个按顺序放进去,所以可以通过索引获取。如果进行插入时,需要将元素挨个往旁边推,腾出空间来塞。而链表的存储空间则不重要,第一个元素除了值,还带有下一个元素的地址。通过这个指向地址找到第二个元素,所以可以随意放。当需要插入时,只要把前一个元素的地址改成指向目标元素,元素指向下个元素即可。如A-> B,要插入C即变成A-> C -> B,删原创 2021-04-13 13:35:23 · 101 阅读 · 0 评论 -
mysql数据库索引与sql优化
索引索引一般设置不要超过6个,且每个索引一般不要超过3个字段。索引是直接以B树或B+树的形式存储在拼盘中。虽然索引多了有助于查询,但数据每次在增删改时,都需要修改索引,所以需要耗费时间,如果索引越多耗时越长,所以不要设太多索引。如果有碰到大量重复的字段,如男/女就不要设成索引了。如果可以,尽量选择数字类型当索引,因为数字只需要比较值,而字符串则需要逐字比较。设索引主要针对where和gourp by字段索引主要有三种,唯一索引、主键索引、复合/联合/组合索引(叫法不同)。主键索引必然是唯一索原创 2021-04-13 13:23:03 · 193 阅读 · 0 评论 -
gateway网关
gateway与zuul对比gateway三大特性Route 路由由gateway进行路由转发,可以不用对外暴露服务的地址动态路由,通过服务名进行路由,方便集群模式下,负载均衡,需要在连接前加lb(@LoadBalance),还需开启动态路由Predicate 断言通过断言进行匹配Filter过滤...原创 2021-04-11 18:56:49 · 101 阅读 · 0 评论 -
read timeout exception
起因是导入数据时,因为从excel读取时根据数据库的字段类型进行翻译,把数据库number类型的字段都由字符串转成了数字类型。但是我们要对数据做检核,需要用到java的正则表达式进行,公司自行封装了一套检核系统,仅支持字符串,所以这个数字类型传过去就会报类型错误。于是我们又把数据处理了一下,先把值取出来判断类型if(o instanceof Integer || …){map.put(key,o.toString);}遍历map,如果是数字类型,我们就给他toString()。然后再去试,这次原创 2021-04-09 13:50:19 · 1053 阅读 · 0 评论 -
hystrix服务治理:服务降级,服务熔断,服务限流
服务降级当我们用feign访问其他服务的接口时,可能会因为对方处理业务较久而等待较长的时间。或者是调用接口报异常,这个时候我们就需要对其提供的服务进行降级处理。首先配pom然后配yml,打开hystrixfeign:hystrix:...原创 2021-04-09 08:20:25 · 118 阅读 · 0 评论 -
redis缓存穿透,缓存击穿,缓存雪崩
缓存穿透就是redis中没有,DB中也没有。比如一个userid,主键为数字自增但是被人恶意查询,查主键为-1,那肯定没有反复的刷,查不到还要一直查,这样就会对db造成很大的压力。解决方法1.可以将-1存为key,结果为null,这样反复刷,查到的redis都直接返回null。2.但如果是-1 -2-3这样的刷,可以使用布隆过滤器,为其过滤数据。布隆过滤器的原理例如有四个位,分别为0 0 0 0,开始去数据库里拿值来穿进去A数据传过来,经过hash散列,结果为1000,有1存1,无则不原创 2021-04-07 08:26:12 · 92 阅读 · 0 评论 -
redis实现分布式锁
现如分布式系统已成主流趋势,有分布式就会有集群,前面虽然有synchronized和lock这两种锁,但都只是单机锁,只能锁住本服务器的内存,并不能锁定其他服务器的内存,有可能造成超卖现象,于是就得用分布式锁来解决。分布式锁有三种:数据库锁(乐观锁/悲观锁)zookeeper锁redis锁今天我们就主要讲一下redis实现分布式锁。首先配置redisTemple;然后开始使用,手机上的笔记,后续补充代码。用redis的setnx命令实现分布式锁加锁要记得释放锁并且要放在finally原创 2021-04-02 06:54:02 · 125 阅读 · 0 评论 -
单机版加锁synchronized和lock
在只有一台服务器的情况下,碰到并发时需要对数据进行加锁,主要有两种方式,synchronized和lock不见不散之synchronized当一个线程抢到资源后,其他线程就一直等待,直到抢到锁,可以直接用synchronized,但是可能造成线程挤压和拥堵synchronized(this){}过时不候之locklock更为灵活,我们可以先进行trylock,判断有没有获得锁,获取不到就干else的事if(lock.trylock()){lock.lock()…finally {lock原创 2021-04-01 10:02:38 · 349 阅读 · 0 评论 -
redis持久化机制RDB与AOF
redis持久化机制,将数据写到磁盘,避免数据因重启或断电,宕机等问题造成丢失。分为两种,RDB和AOFRDB可以理解为快照,会将数据都直接记录下来。可以手动快照,也可以设置根据场景条件进行快照AOF可以理解为日记,每执行一行命令都会记录下来,哪怕结果被覆盖,无意义的语句也不会删除,所以会浪费空间。redis可以设置阈值,当大小达到阈值,如64MB时,进行rewrite,将无意义的语句清除,以此压缩文件的大小。混合模式不过在redis4以后的版本,可以打开混合模式,采用RDB+AOF的形原创 2021-03-31 22:30:16 · 59 阅读 · 0 评论 -
nginx快速入门
安装与使用三大特点反向代理首先理解一下什么是正向代理,如vpn,我们国内访问不了国外的网站,这个时候就可以通过vpn正向代理我们的请求,帮助我们转到一些可以访问国外服务器的ip。而反向代理就是处理我们服务提供的接口,如项目是集群发布在2台服务器,一台128…,一台146…这个时候用户要来访问我们的请求,总不能让他直接输入地址访问任意一个吧!而是给一个固定的地址,用户访问后,nginx拦截下来转发到配置的ip中,进行轮询。负载均衡说到轮询就要提到第二个特点负载均衡了,有两种简单的均衡策略。轮原创 2021-03-31 21:52:53 · 68 阅读 · 0 评论 -
redis整合springboot实现分布式锁
redis由于是天生单线程,所以在一些不是爆炸高的并非中,足够使用了。springboot很好的继承了redis,所以可以整合起来实现分布式锁原创 2021-03-31 16:04:23 · 95 阅读 · 0 评论 -
什么是spring三级缓存?如何解决循环依赖
依赖注入一般分为两种,构造注入和setter注入。循环依赖指的是对象在注入期间相互依赖,造成循环。当我们进行构造注入时,如下class A{private B b;public A(B b){this.b=b;}}class B{private A a;public B(A a){this.a=a;}}当new A的时候需要用到B于是new B,这时又需要用到A在new A,如此就会造成循环依赖new A(new B(new A(new B(new A(…)))))所原创 2021-03-31 07:18:13 · 328 阅读 · 0 评论 -
spring Aop五大注解执行顺序
现如今主流的springboot版本都是2以上,其底层还是基于spring,版本为5。而早起的springboot1则是用的spring4,其aop的执行顺序,优化的更加人性化spring5的AOP执行顺序@Around@Before@AfterReturning/AfterThrowing@After@Around其执行顺序可以理解为//@Aroundtry{//@Beforereturn//@AfterReturning}catch(){//@AfterThrowing}fin原创 2021-03-30 20:34:45 · 431 阅读 · 0 评论 -
CountDwonLatch/CyclicBarrier/Semaphore
JUC并发工具类中的三种资源控制锁CountDownLatch 倒计数锁一开始使用构造方法时先设定最大计数每执行完一次目标任务后,使用latch.countDown()方法对计数减1。在需要计数结束后操作的代码块前加上await()方法,等待计数结束后立即执行!import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo {public static void main(String[] args) thr原创 2021-03-26 15:37:43 · 75 阅读 · 0 评论 -
读写锁ReentrantReadWriteLock
读写操作一般分为三种ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();1. 读+读,共享锁rwlock.readLock().lock()共享锁,锁住的内存,其他线程依然可读,做到资源共享,其他人来访问并不影响,无需阻塞rwLock.readLock.().unlock()2. 读+写,独占锁rwLock.writeLock().lock();独占锁,一次只有一个线程可以进行写操作,其他线程不可参与进来rwLock.w原创 2021-03-26 13:01:29 · 100 阅读 · 0 评论 -
可重入锁ReentrantLock(同递归锁) 之 公不公平锁?Lock与synchronized对比
上回书集合中说到,写时读集合中会先用锁,锁上在操作,用的就是可重入锁ReentrantLock()。这个锁有两个构造方法,一个空构造默认方法生成一个不(非)公平锁。一个boolean类型的单参赛构造方法,为true时生成公平锁,为false时同空构造。公平锁公平锁讲究先来后到,挨个排队,一个个来,像我们排队买饭一个道理非公平锁谁先抢到就是谁的,类似抢绣球,总不能给排队好,直接送第一个吧?绣球就直接白给吧!毕竟小姐就一个,绣球自然也只有一个,谁能抢到就嫁谁!当然这只是比喻,不是让你一个一个来跟原创 2021-03-25 16:01:24 · 136 阅读 · 0 评论