![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习总结
文章平均质量分 65
学习总结
郑鹏川
不积跬步,无以至千里
展开
-
并发的世界(基本概念一)
1.同步和异步同步:同步方法调用一旦开始,调用者必须等待调用方法返回后,才能继续后续的行为。异步:异步方法调用更像一个消息传递,一旦开始,方法就会立即返回原创 2021-05-31 14:34:25 · 140 阅读 · 0 评论 -
Idea中Maven指令作用
1.clean2.validate3.com原创 2021-05-31 11:00:21 · 429 阅读 · 0 评论 -
JVM概念、调优
1. 对于JVM的理解 JVM将内存主要划分为:程序计数器、JAVA虚拟机栈、本地方法栈、堆、方法区等几个部分。1)程序计数器 是线程私有的区域,每个线程需要有个计数器记录当前执行到那个指令。如果当前线程是在执行java方法,那么这个计数器记录的是正在执行的虚拟机字节码指令地址。如果执行的是native方法,则计数器的值为空。2) java虚拟机栈 也是线程私有的。其生命周期与线程相同。里面存放的元素叫栈帧。栈帧里面存放的是一个函数的上下文,具体存放的是执行函数的一些数据。执行...原创 2021-03-18 13:42:49 · 118 阅读 · 1 评论 -
JDK 1.8特性 Stream是串行还是并行
目录一、串行流和并行流的概念二、串行流和并行流的源码比较3、 关于串行流和并行流的效率比较Stream可以是并行也可以是串行。一、串行流和并行流的概念1) 串行流 API:stream()执行机制:基于pipeline(管道) 流的特性: 1. stream不存储数据 2. stream不改变数据源 3. stream不可重复使用 4. stream串行执行 5. 上个节点会影响下个节点2) 并行流 API:parallel...原创 2021-03-17 23:27:46 · 1380 阅读 · 1 评论 -
String是值传递还是引用传递
示例/** * DES:测试类 */public class Test { /** * 修改参数内容 * @param name */ public void updateName(String name) { name = "李四"; } public static void main(String[] args) { String name = "张三"; Test test =原创 2021-03-10 18:18:33 · 166 阅读 · 0 评论 -
IDEA的项目不能创建java class文件
IDEA中右击项目点击新建,出现的文件没有JavaClass文件解决办法1. 项目右键点击新建2.点击 Mark Directory as3.点击Sources Root转载 2021-03-10 17:27:35 · 712 阅读 · 0 评论 -
线程相关的概念总结
1. 线程池是什么? 是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行。2. 关于BIO、NIO、AIO原理 I/O是以流为基础进行数据的输入输出的 1)BIO(同步阻塞):服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善.(发送请求后,先咨询服务端是否有线程...原创 2021-03-05 17:34:11 · 151 阅读 · 2 评论 -
rabbit原理以及集群总结
目录1. 什么是AMQP2. 消息队列的作用与使用场景3. 多个消费者监听一个队列时,消息如何分发?4. RabbitMQ如何实现延时队列?5. 无法被路由的消息去了哪里?6. 消息基于什么传输?7. 消息幂等性怎么实现?8. 如何确认消息不丢失?9. Exchange是什么?10. 什么是Binding?11. 通信过程?12. rabbitMq、activeMq、rocketMq、kafka对比分析1. 什么是AMQP AMQP,即Advance.原创 2021-03-04 23:12:10 · 427 阅读 · 1 评论 -
关于声明式事务@Transactional的源码解析
上源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transactional { @AliasFor("transactionManager") String value() default ""; @AliasFor("value") String transac原创 2021-02-26 16:09:51 · 432 阅读 · 0 评论 -
浅谈事务
1.什么是事务 访问并可能更新数据库中各种数据项的一个程序执行单元2.事务的ACID特性1)原子性(Atomicity):要么都执行,要么都不执行;执行过程中出错,会回滚到事务开始前的状态。2)一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监...原创 2021-02-26 14:12:43 · 195 阅读 · 0 评论 -
怎么删除列表中的数据
前言面试时经常遇到问你:怎么删除列表中的数据?没有遇到过for循环遍历list删除数据坑的。第一反应就是1.使用for循环遍历删除匹配数据 2.使用iterator迭代器删除数据一、使用for循环遍历删除匹配数据(标准的错误答案)上代码: List<String> a = new ArrayList<>(); a.add("1"); a.add("2"); System.out.println(.原创 2021-02-23 09:40:43 · 915 阅读 · 1 评论 -
Hashtable、HashMap和ConcurrentHashMap源码解析、对比
ConcurrentHashMap的简单介绍如图:ConcurrentHashMap是一种哈希表,支持检索的完全并发性和更新的高预期并发性。该类遵循与Hashtable相同的功能规范,并包含与Hashtable的每个方法相对应的方法版本。但是,即使所有操作都是线程安全的,检索操作也不需要锁定,并且不支持以阻止所有访问的方式锁定整个表。这个类在依赖于它的哈希表的程序中完全可以与哈希表互操作。简单来说:1.ConcurrentHashMap遵循与Hashtable相同的功能规范,并有与Hasht原创 2021-02-22 11:50:58 · 144 阅读 · 0 评论 -
HashMap和Hashtable源码解析、对比
1.hashMap原创 2021-02-22 10:24:33 · 130 阅读 · 0 评论 -
高并发情况下如何保证订单号不重复
概述:上家公司面试,面试官问我一个问题,如何保证服务器在5000dps的时候订单号不重复? 当时前公司用的订单号还是32位的,用的方法是:UUID的16位随机数+截取时间戳的一部分+用户openId的一部分+随机数。我就凭借自己的经验回答了。面试官觉着没问题。紧接着他问:如果订单号压缩16位的呢? 当时我一下子还不知道怎么说。就说的是UUID的一部分加时间戳。今天实验:在高并发的情况下,时间戳,进程ID,线程ID都是一样的,所以再用这三个东西就没必要了。时间...原创 2020-07-30 16:31:32 · 2291 阅读 · 0 评论 -
对分布式锁的认知和实现
为了防止并发编程,或多或少会接触到锁这个概念。Java的锁有 synchronized 和 Lock 两种。最大的区别在于:synchronized是个关键字,而Lock是个接口类。但是Java的锁,只能保证在同一个JVM中执行的时候起作用,那么分布式项目呢?一、什么是锁 锁的执行: · 加锁(锁持有) 去KTV开了个包间,把门一关,这个时候你就给这个包间加了个锁,明确说明这个包间是本大爷的了。其他人想用这个包间,就只能等你用完了。这个时候...原创 2021-01-19 17:09:54 · 229 阅读 · 0 评论 -
静态工具类中注入service的两种方法
方法一:不使用@PostConstruct注解@Component // 1.将工具类注入到容器中public class TokenUtils { // 2.注入想引用的对象的静态实例 private static RedisService redisService; // 3.初始化有参构造器 @Autowired public TokenUtils (RedisService redisService) { TokenUtils.re原创 2020-12-21 16:09:05 · 3080 阅读 · 0 评论 -
设置实体类中字段为非数据库字段
设置实体类中字段为非数据库字段,加以下注解:@TableField(exist = false)是不是数据库字段:true是;false不是源码:原创 2020-12-02 17:21:31 · 4020 阅读 · 0 评论 -
springboot读取配置文件的简单方法
配置文件server: ip: 127.0.0.1 port: 8888方法一、import org.springframework.beans.factory.annotation.Value;@Value("${server.ip}")private String ip;@Value("${server.port}")private String port;方法二、import lombok.Data;import org.springfra..原创 2020-12-02 17:00:47 · 85 阅读 · 0 评论 -
springboot设置静态资源不拦截的方法
1. 代码层面,springboot不拦截静态资源需配置如下的类:import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;public class WebMvcConfig implements WebMvcConfigurer{ /**原创 2020-11-30 10:02:23 · 3298 阅读 · 0 评论 -
重启服务jenkins
1.登录Jenkins的web管理界面,输入用户名和密码登录2.然后在浏览器地址最后加上/restart3.点击是就OK原创 2020-12-23 10:24:54 · 266 阅读 · 0 评论 -
DataX学习笔记篇一
1.dataX是什么 (1) 定义:DataX是阿里巴巴内被广泛使用的异构数据源离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 (2) 技术支持: (3) 设计理念:为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要...原创 2020-07-30 11:16:11 · 1685 阅读 · 0 评论