Java
阿姆斯特狸
这个作者很懒,什么都没留下…
展开
-
JAVA 锁相关
CAS 无锁优化 自旋 (Compare and set)cas(V,Expected,NewValue)if(V=E)V=Newotherwise try again or failABA问题-加version-A 1.0-B 2.0-C 3.0-cas(version)原创 2021-07-09 10:12:47 · 94 阅读 · 0 评论 -
CDN的作用与基本过程
简介CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN对于数据的分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的。动机为什么不进行数据的直接交付,即让用户直接从源站获取数据呢?我们常说的互联网实际上由两层组成,一层是以TCP/IP为核心的网络层即Internet(因特网),另一层则是以万维网WWW为代表的应用层。数据从服务器转载 2021-07-01 16:55:05 · 114 阅读 · 0 评论 -
数据库压力大解决思路
业务应用数据库压力解决方案引言一、原因分析二、在代码层面消化数据库压力创建索引转移压力三、给数据库请个保姆——中间件RedisMQ四、忍法——数据库分身术分布式架构主从读写分离架构五、总结注意:原创文章,转载请注明出处。引言数据库炸了,加CPU加内存?或许还有更合适的方法,例如优化代码逻辑、合理利用中间件、横向扩展数据库配置。之前在做业务应用系统压力测试项目的时候,发现性能不达标的应用,问题大多出在数据库上,服务器的资源才用了30%不到,数据库资源已经跑满的情况比比皆是。转载 2021-05-31 17:54:13 · 516 阅读 · 0 评论 -
Redission分布式锁原理
https://blog.csdn.net/a772304419/article/details/105647110转载 2021-05-31 17:49:41 · 163 阅读 · 0 评论 -
jvm内存模型以及各个分区
1. JVM 内存模型Java虚拟机内存的各个区域包括:程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区2. 程序计数器什么是程序计数器呢? 程序计数器是一块较小的内存空间,它可以是当前程序所执行的字节码的行号指示器。 注意:如果线程正在执行的是java的方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空(Undefined)。 程序计数器的作用 字节码解释器工作时,就是通过改变这个.转载 2021-05-31 14:13:06 · 642 阅读 · 0 评论 -
mysql 主从复制、读写分离、分库分表
思维导图微信公众号已开启:【java技术爱好者】,还没关注的记得关注哦~文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary前言在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。为什么要采用主从复制读写分离的架构?如何实现?有什么缺点?让我们带着这些问题开始这段学习之旅吧!为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简单,就是为了提转载 2021-05-25 10:46:55 · 350 阅读 · 0 评论 -
RabbitMQ实战教程(十) : 消息确认Ack
https://blog.csdn.net/qq_37653556/article/details/82860879转载 2021-05-14 14:08:21 · 101 阅读 · 0 评论 -
RabbitMQ和Kafka的比较,一比吓一跳!
导言作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。这篇文章会先介绍一下基本的异步消息模式,然后再介绍一下RabbitMQ和Kafka以及他们的内部结构信息。第二部分(未完成)主要介绍这两种转载 2021-05-14 13:51:54 · 303 阅读 · 0 评论 -
ribbon的注解 @LoadBalanced 报错 No instances available for [IP]
使用RestTemplate类调用其他系统的url的时候,加上ribbon的注解@LoadBalanced上这个注解之后访问,就报错了。java.lang.IllegalStateException: No instances available for localhost at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:89) ~[s原创 2021-04-21 16:42:45 · 1098 阅读 · 0 评论 -
Redis的持久化机制
Redis的持久化机制破执宜信 研发工程师60 人赞同了该文章Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis 的持久化机制有两种,第一种是RDB快照,第二种是 AOF 日志。快照是一次全量备份,AOF 日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。1、RDB快照转载 2021-04-16 11:14:39 · 120 阅读 · 0 评论 -
nginx keeplived相关
nginx中的root与alias的差别https://blog.csdn.net/asahinokawa/article/details/87702491搭建Keepalived双机热备https://blog.csdn.net/zhouchuan152/article/details/94976214Nginx高可用、高并发:Nginx+Keepalived部署https://blog.csdn.net/qq_35457078/article/details/84879338.原创 2021-04-02 14:42:59 · 93 阅读 · 0 评论 -
SpringBoot 如何实现AOP的权限控制
https://blog.csdn.net/ideaxx/article/details/89386855转载 2021-03-03 16:34:48 · 308 阅读 · 1 评论 -
SpringBoot项目修改内置tomcat版本
1.直接改starter<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion&原创 2021-01-21 09:41:07 · 489 阅读 · 0 评论 -
各个系统下ping IP+端口的方法
前言做开发的人员,可能都会遇到网络的一些问题。这时一般都需要测试指定的网络是否能正常访问。通常在windows系统下,在cmd里直接用命令ping指定的IP或者域名就可以快速的知道这个地址是否是可以访问通不通的。但是如果一个服务器上启动着好几个项目,通过指定不同的端口来区分。想要知道其中某个端口的系统是否可以访问通,一般的ping命令是解决不了这个问题的,因为不管在windows下还是linux下,ping命令只能跟IP地址或者域名,是不能加端口访问的。这时我们就可以借助一些工具,来帮助我们达成目的转载 2021-01-14 10:51:10 · 6521 阅读 · 0 评论 -
spingsecurity 相关文档
mall整合SpringSecurity和JWT实现认证和授权(一)http://spring security实现动态配置url权限的两种方法原创 2021-01-08 21:01:31 · 93 阅读 · 0 评论 -
解决:SpringBoot 错误:Caused by: org.yaml.snakeyaml.scanner.ScannerException 最终解决方案
https://blog.csdn.net/jiangyu1013/article/details/82495866添加依赖<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.25</version></dependency>原创 2020-12-11 16:49:34 · 2862 阅读 · 0 评论 -
springboot之pom配置profiles适用于不同开发环境(亲测可用)
pom.xml<profiles> <profile> <!-- 生产环境 --> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> <profile>转载 2020-12-09 16:58:14 · 1097 阅读 · 0 评论 -
MySQL索引-B+树(看完你就明白了)
http://www.liuzk.com/410.html引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引 Hash 索引 全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树转载 2020-11-04 09:33:42 · 214 阅读 · 0 评论 -
MST索引
并发编程面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104863992MySQL数据库面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104778621Redis面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/103522351...原创 2020-11-02 15:45:14 · 129 阅读 · 0 评论 -
mybatis使用注解和xml方式插入数据后获取自增长的主键值
写SQL,但不要自己插入主键值 配置@Options(useGeneratedKeys=true, keyProperty="对象.属性")这个的作用是设置是否使用JDBC的getGenereatedKeys()方法获取主键并赋值到keyProperty设置的对象的属性中,说白了就是把自增长的主键值赋值给对象相应的属性在插入后,使用对象.主键属性的getXXId()方法 获取主键值示例:@Insert("INSERT INTO api(component, clientA原创 2020-10-27 14:58:37 · 485 阅读 · 0 评论 -
RabbitMQ相关
RabbitMQ-解耦、异步、削峰https://www.cnblogs.com/wffzk/p/13467105.html转载 2020-08-21 11:09:53 · 124 阅读 · 0 评论 -
Redis相关
几率大的Redis面试题(含答案)https://blog.csdn.net/Butterfly_resting/article/details/89668661redis系列——基于Redis实现的单点登录(Demo)https://blog.csdn.net/qq_22172133/article/details/82291112转载 2020-08-11 13:57:17 · 111 阅读 · 0 评论 -
java filter intercepter aop 区别总结
我们这里来总结一下过滤器、拦截器、Aspect,看看区别如果三者方式同时采用,那他们的执行顺序是什么呢?filter -> interceptor -> ControllerAdvice -> aspect -> controller返回值顺序,或异常返回顺序controller -> aspect -> controllerAdvice -> Interceptor -> Filter补充说明: Spring的.转载 2020-08-04 10:44:42 · 338 阅读 · 0 评论 -
spring boot项目通过jasypt-spring-boot-starter加密配置Demo
https://blog.csdn.net/longe8000/article/details/887503231. pom.xml增加jasypt-spring-boot-starter依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</a...转载 2020-07-07 10:16:36 · 702 阅读 · 0 评论 -
sql语句中分组取每组的最新数据
今天敲sql的时候遇到了一个问题,业务流程是检查记录->整改通知->整改回复->检查组复查如果复查不通过 则 检查组复查->整改通知->整改回复->检查组复查此时一条检查记录就可能对应多条整改通知去最新数据就用到了分组简化一下模型 要显示最新时刻的物品价格goods(其实不太一样我的情况主键相当于这里的time)编号num 价格price 时间 time1 5 11 6 22 10 32 8 ...转载 2020-07-01 10:00:09 · 937 阅读 · 0 评论 -
HashSet的实现原理去重
集合 的体系:------------| Collection 单例集合的根接口----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。---...转载 2020-05-25 18:06:48 · 929 阅读 · 1 评论 -
使用Jasypt对SpringBoot配置文件加密
引入jasypt<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version></dependency>生成要加密的字符串将数据库的用户名和密码进行加密..转载 2020-05-25 16:29:34 · 374 阅读 · 0 评论 -
tomcat启动:startup.sh、catalina.sh、setclasspath.sh三者关系
1.概述JavaWeb项目发布tomcat容器,我们一般是到tomcat下的bin/startup.sh直接运行。很少去了解tomcat底层启动细节。后来实际开发中,需要在tomcat中显式配置-JVM启动使用内存大小;tomcat启动使用特定的jdk版本,才去大致了解下启动过程。2.问题解决1)在tomcat中显式配置-JVM启动使用内存大小解决:vim打开tomcat目录下的bin/catalina.sh文件,在文件最上部配置JAVA_OPTS属性。# ----------.转载 2020-05-22 09:41:42 · 3164 阅读 · 0 评论 -
SpringBoot 全局异常捕获 一样的代码咋就不生效?
新建全局异常捕获类@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(value=Exception.class) @ResponseBody public Map<String, Object> exceptionHandlerMy(HttpServletR...原创 2020-03-18 15:25:44 · 1692 阅读 · 0 评论 -
Spring 事务
课程目标:Spring事物概念、理解事物的传播行为一、事物的概述⑴原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行...转载 2020-02-28 12:31:10 · 198 阅读 · 0 评论 -
自定义的 Filter 加入到 Spring Security 中的 Filter 链中的指定位置
参考:https://blog.csdn.net/j3T9Z7H/article/details/79093929// 在 UsernamePasswordAuthenticationFilter 前添加 BeforeLoginFilterhttp.addFilterBefore(new BeforeLoginFilter(), UsernamePasswordAuthenticat...原创 2019-12-20 16:33:51 · 997 阅读 · 0 评论 -
mysql 数据库时间 与页面对应时间相差n个小时
环境:mysql-connector-java:8.0.16解决方案:jdbc:mysql://ip:port/instance?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&serverTimezone=Asia/Shanghai&useSS...原创 2019-11-12 14:52:25 · 179 阅读 · 0 评论 -
Android端RSA加密,Java后台无法解密的原因
如题,原因是因为,加密标准的原因。"RSA/ECB/PKCS1Padding" 与'RSA"解决:在android中应该使用这个标准Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");在服务端使用这个标准Cipher cipher = Cipher.getInstance("RSA");...原创 2019-10-23 18:35:02 · 1272 阅读 · 3 评论 -
关于Java反射的理解
反射的作用1.获取程序在运行时刻的内部结构。这对于程序的检查工具和调试器来说,是非常实用的功能。只需要短短的十几行代码,就可以遍历出来一个Java类的内部结构,包括其中的构造方法、声明的域和定义的方法等。这不得不说是一个很强大的能力。只要有了java.lang.Class类 的对象,就可以通过其中的方法来获取到该类中的构造方法、域和方法。对应的方法分别是getConstructor、g原创 2016-02-04 17:34:36 · 568 阅读 · 0 评论 -
线程同步的使用(synchronized)
线程同步结论:当多个线程共同修改同一个资源时使用线程同步,一个资源使用一个同步锁,尽量缩小同步块内的代码。线程同步:线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。 你不一定要把同步锁声明为static或者public,但是你一定要保证相关的同步代码之间,一定要使用同一个同步锁。同步锁:任何一个Object Ref原创 2015-12-30 16:19:35 · 489 阅读 · 0 评论 -
java mkdir()和mkdirs()区别
mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下:new File("/tmp/one/two/three").mkdirs();执行后, 会建立tmp/one/two/three四级目录new File("/tmp/one/two/three").mkdir();则不会建立任何目录, 因为找不到/tmp/one/tw原创 2015-12-01 17:32:06 · 376 阅读 · 0 评论 -
java List 排序 Collections.sort()
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下:[java] view plaincopy/** * 根据order对User排序 */ public class User implements Comparable{ pr转载 2015-11-10 16:28:30 · 473 阅读 · 0 评论 -
java 匿名内部类 抽象类跟接口可以直接New出来啊~~
java中的匿名内部类总结匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法12345678910转载 2015-09-01 10:26:11 · 1512 阅读 · 1 评论 -
HashMap,LinkedHashMap,TreeMap的区别+如何替换LinkedHashMap键位的值+RecyclerView单条更新
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时原创 2016-07-20 15:40:10 · 1921 阅读 · 0 评论 -
Java == 与 equals 区别
老生常谈的问题,居然忘了,写个博客记录一下,直接说本质不扯没用的!equal:是用来比较两个对象内部的内容是否相等的,由于所有的类都是继承自java.lang.Object类的,所以如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equal方法返回的却是==的判断,因此,如果在没有进行该方法的覆盖后,调用该方法是没有任何意义的。在java面向原创 2016-08-05 11:24:50 · 522 阅读 · 0 评论