2021-09-22 1、dataX安装及基本使用简介:多种数据库数据互导 同步工具框架设计:reader writer framework工作原理:将job 单个作业划分为若干个task schedule 将task组成组并发执行前置要求:JDK python使用示例:编写json脚本、执行脚本D:\JobSoftware\DataX\datax\bin>python datax.py D:\JobSoftware\DataX\datax\job\jobtest.json2.Sprin
学习笔记day12 synchronized底层实现及锁升级机制 原博客:https://blog.csdn.net/weixin_40394952/article/details/118693945一、synchronized使用方法1、修饰实例方法,对当前实例对象this加锁2、修饰静态方法,对当前类的class对象加锁3、修饰代码块,指定加锁对象,对给定对象加锁代码示例:package cn.mrhan.java.thread.synchronize;/** * @Author hanYu * @Date 2021/8/24 *
学习笔记day10(CAS原理) 原博客地址:https://blog.csdn.net/qq_37113604/article/details/815827841、什么是CAS?CAS加volatile关键字是实现并发包的基石。没有CAS就不会有并发包,synchronized是一种独占锁、悲观锁,java.util.concurrent中借助了CAS指令实现了一种区别于synchronized的一种乐观锁。核心是冲突检测和数据更新CAS操作包含三个操作数-内存位置、期望值、和新值,如果内存位置的值与期望值匹配那么处理器会自
9(记一次开发中的小bug) 今天在开发过程中,测试环境报了一个错误,就是通过spring容器获取某个类获取不到,报NoSuchBeanDefinitionException错误,伪代码如下:public interface RepayMessageService { void notifyRepayResult(String message);}public abstract class AbstractRepayMessageHelper implements RepayMessageService ...
学习笔记day07(GC回收机制+JVM优化) 一.java内存1)私有内存区:伴随线程的产生而产生,一旦线程终止,私有内存区也会自动消除2) 程序计数器 :指示当前程序执行到了哪一行,执行java方法时记录正在执行的虚拟机字节码指令地址3)虚拟机栈:用于执行java方法,栈帧存储局部变量表4)Java堆:java虚拟机管理的内存中最大的一块,所有线程共享,几乎所有的对象示例和数组都在这里分配内存,GC主要就是在Java堆中进行的。 堆内存又分为:新生代(新生代又分为Eden80%,Survivor20%)和老年代(Old),并且..
学习笔记day05(消息队列) 一、消息队列1、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ2、消息队列应用场景1)、异步处理传统的串行或者并行处理方式并发量、吞吐量、响应时间会有瓶颈,引入消息队列后,将不是必须的业务逻辑,异步处理,如发短信2)、应用解耦比如借据查询的订单状态为成功后需要将订单信息
学习笔记day04(反射、泛型、序列化) 一、反射1.什么是反射?将类的各个部分封装成其他对象,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制2.java代码在计算机中会经历三个阶段源代码阶段:java文件经过编译在硬盘中生成字节码文件 如Student.class类对象阶段:通过类加载器将class文件中的成员变量、构造方法、成员方法加载到内存中运行时阶段:可以创建对象和调用对象里的方法了..
学习笔记day03(apollo) 一、apollo在项目中的应用1、pom引入依赖(此处为公司内部的api) <dependency> <groupId>com.bestpay.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.3.0.6</version> <..
学习笔记day02(线程池ThreadPoolTaskExecutor+流处理之flatMap) 一、ThreadPoolTaskExecutor @Autowired @Qualifier(value = "contractProcessExector") private ThreadPoolTaskExecutor contractProcessExector;@Configurationpublic class ExecutorConfig { @Bean("contractProcessExector") public ThreadPoolTaskExecutor con
学习笔记day1(java对象克隆) 一、java克隆的作用存在一个对象A,此对象中已经有一些初始值,现在我们需要对象和对象A有同样的初始值,如果我们使用Ab = a的方式则改变b引用指向的对象的时候 a的值也会改变因为他们指向同一个对象,而如果使用A b = new A()的方式,此时就不能保证和a对象有相同的初始值。所以此时我们需要使用clone()方法二、深克隆和浅克隆的区别?当一个对象中仅仅有String、int等这些基本类型的变量的时候,使用浅克隆没有问题,但是当一个对象存在引用类型的变量的时候,就需要使用深克隆了..
SQL优化(二) 一、优化示例:假设有复合索引 idx_a1_a2_a3_a4explain select a1,a2,a3,a4 from test where a1 = 1 and a2 = 2 and a3=3 and a4=4—使用了全部的符合索引explain select a1,a2,a3,a4 from test where a1 = 1 and a2 = 2 and a4=3 order by a3 --a4 因为跨列使用 造成了该索引失效 需要回表查询 因此是using whereexplai
SQL优化(一) 一、MySql启动问题、配置文件1.Mysql主流版本 5.x验证 mysql --version启动:service mysql start关闭: service mysql stop重启: service mysql restart设置密码 /user/bin/mysqladmmin -u root password xxx登录: mysql -u - root -p数据库存放目录:ps -ef|grep mysqlmysql字符编码 show variables like ‘
MongoDB学习笔记 一、mongoDB的安装及常用命令1.安装和环境变量mongodb.com/try/download/community?tck=docs_server安装目录:C:\Program Files\MongoDB\Server\4.4\bin2.常用指令新建或打开数据库 mongod --dbpath D:\JobSoftware\MongoDB\db端口 27017连接 mongoshow dbs创建新的数据库 use test显示所有集合 show collections在名为use
SpringBosent框架 1.代码示例/** * 查询合同释放额度历史查询 * * @param dctx 适配器 * @param context 上下文 * @return 结果 * @throws BusinessException 异常 * @author hanyu * @see [类、类#方法、类#成员] */ public static Map<String, Object> queryContract
代码优化(工厂+策略+模板设计模式) 一:优化前的代码public static void noDesign(String name){ if(name.equals("张三")){ //....业务逻辑 System.out.println("张三完成任务A"); }else if(name.equals("李四")){ //....业务逻辑 System.out.println("李四完成任务A"); }else if(name.equals("王五"
学习笔记之索引 1.索引类型1)全文索引 : 为了解决where name like 这类针对文本的模糊查询效率较低的问题2)HASH :唯一、类似键值对 适合作为索引HASH索引可以一次定位,不需要像树索引那样逐层查找,因此具有极高的效率,但是这种高效是有条件的只再=和in条件下高效,对于范围查询、排序及组合索引仍然效率不高3)BTREEBTREE索引就是一种将索引值按一定的算法,存入二叉树数据结构中,每次查询都是从书的入口root开始 一次遍历node,获取leaf 这是Mysql里默认和最常用的索引类
HashMap put操作都发生了什么 大家都知道,HashMap 的底层在 JDK 1.7 的时候为数组+链表,在JDK 1.8的时候为数组+链表+红黑树。那么当我们在向HashMap中添加元素时,HashMap里面究竟发生了什么呢?让我们一起来一探究竟吧!首先,我们一起来看看JDK 1.8中put的源码:public V put(K key, V value) { //对传入的key做hash return putVal(hash(key), key, value, false, true); }final V
Dubbo框架学习(一) 一、基本概念1.什么是分布式系统?分布式系统是若干独立计算器的集合随着互联网的发展 网站应用的规模不断扩大,常规的垂直应用架构已无法应对2.应用架构的发展演变1)单一应用架构不易扩展,协同开发不容易,增大服务器的压力2)垂直应用架构将单一应用拆分成互不干扰的几个小应用,易于分工合作、扩展。问题:没有实现界面和业务逻辑的实现分离应用不可能完全独立,大量的应用之间需要交互3)分布式服务架构RPC:远程过程调用 不同服务器之间的服务调用分布式服务框架:dubbo 解决远程调用问题4