- 博客(108)
- 资源 (1)
- 收藏
- 关注
原创 Spring Cloud Alibaba使用Seata实现分布式事务完全示例教程(1)
Spring Cloud Alibaba + Seata示例教程
2022-06-16 17:56:26
709
原创 使用Linux crontab开启定时任务
基本操作crontab -e 编辑crontab任务vim /var/log/cron 查看crontab服务执行日志/sbin/service crond reload 重载crontab任务数据/sbin/service crond restart 重启contab服务注意事项·不同于其他的cron表达式,Linux系统的crontab支持的最小粒度为分钟所以表达式比一般的表达式(比如Java调度任务中的)要少一位。典型的contrab表达式为*/5 * * * *,意思是每5分钟执行
2022-01-24 17:13:32
1662
原创 红黑树--原理,性质与应用
概述红黑树是一棵二叉搜索树, 主要用在更改比查询更加频繁的地方(而二叉平衡树用在搜索比更改频繁的地方).已经的一些性质:二叉搜索树上基本操作所花费的时间与这棵树的高度成正比.对于一棵完全二叉树, 这些操作的的最坏运行时间为O(lgn), 如果搜索二叉树退化为线性表, 则其最坏的运行时间是O(n).退化为线性表的搜索二叉树, 其操作时间为O(n):图(1)一棵完全二叉树的操作时间是O(lgn):图(2)搜索二叉树,平衡搜索二叉树,红黑树的区别与联系树种类是否完全二叉树是
2020-05-14 14:34:28
373
原创 Java动态代理
概述类图OriginalType1: 接口, 拥有method1, method2等方法. OriginalType2, OriginalType3也是接口.OriginalTypeImpl1: 是OriginalType1的实现类, 其他两个OriginalTypeImpl2,OriginalTypeImpl3分别是另外两个接口的实现类.InvocationHandler: 是实现了InvocationHandler接口的实现类, 并且持有originalInstance1,originalIn
2020-05-11 00:03:39
222
原创 Spring AOP 第一个简单示例
build.gradledependencies { compile group: 'org.springframework', name: 'spring-aop', version: '5.2.1.RELEASE' compile 'org.springframework:spring-context:5.2.1.RELEASE' compile 'org.springframework:spring-core:5.2.1.RELEASE' compile 'org.a
2020-05-10 22:34:44
191
原创 Spring IoC-依赖注入与属性装配(1)-自动装配
概述Spring容器能够通过检查ApplicationContext中的内容来实现依赖自动装配.自动转配的模式Spring IoC定义了几种装配模式可供选择:模式解释no不开启自动装配byName通过名称自动装配, 在容器中查找名称然后装配byType通过类型自动装配, 容器在内部查找匹配的类型进行自动装配, 如果存在多个会引发致命错误, 如果不村子一个则不会报错constructor通过构造函数自动装配, 和byType类似, 如果不存在bean, 则
2020-05-10 19:04:51
201
原创 Spring IoC-依赖注入与属性装配(1)-概述
概述依赖注入有三种注入方式:通过stter注入.通过构造函数注入.通过InstanceFactory注入.Setter注入提示: 如果Java中没有任何构造函数, 则编译会自动生成一个默认的构造函数.使用XML方式实现Setter注入Java代码:public class A {}public class B { private int id; private boolean expired; private A a; public v
2020-05-10 14:12:45
218
原创 Spring IoC(1)-概述
概述IoC是指控制反转, 将本来由对象自己管理的依赖交由容器管理. 而Spring IoC则是一个IoC框架.其中最为重要的一些概念包括如下:容器: 是指容纳Bean的一个对象, 它包含了所有bean的元数据, 并且能够对bean实例化.Bean: 通过元数据创建的对象.重点Bean的生命周期Bean的Scope自动装配参考Spring IoC Docs...
2020-05-09 23:41:45
140
原创 jstack命令使用
jstack查看死锁/** * 哲学家吃饭问题: * 获取锁的顺序不一致导致死锁 */public class PhilosopherEatingProblem { static class Philosopher implements Runnable { private int id; private final Object chopstick1; private final Object chopstick2; pri
2020-05-09 11:00:03
751
原创 Java并发-CountDownLatch
概述一种同步帮助,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。示例// 旅游巴士要等到每一个都准备好了才出发.public class CountDownLatchDemo { //代表游客准备任务 static class Traveler implements Runnable { private CountDownLatch re...
2020-05-07 00:23:33
161
原创 Java并发编程-同步工具类
概述同步工具类可以是任何一个对象, 只要它根据自身的状态来协调线程的控制流.比如阻塞队列, 信号量, 栅栏以及闭锁等.这些同步工具类都有一些特定的属性:它们封装了一些状态,这些状态将决定执行同步工具类的线程是继续执行还是等待, 还提供了一些方法对状态进行操作,以及一些方法用于高效地等待同步工具进入预期状态.常见的同步工具类闭锁(Latch)设计动机: 延迟线程进度直到其达到终止状态, 闭...
2020-05-06 13:56:40
168
原创 Java并发编程-线程的状态与相互转换
概述解析根据源码, 可以看到线程拥有的状态枚举.// java.lang.Thread 1742 public enum State { /** * Thread state for a thread which has not yet started. * 新建状态, 线程还没有启动. */ NEW,...
2020-05-06 12:50:33
158
原创 Java并发编程-并发容器
概述同步容器将所有的操作都串行化,这虽然实现了线程安全, 但是代价是严重降低性能和并发性.并发容器是针对多个线程并发访问来设计的, 通过并发容器, 可以极大的提高伸缩性并降低风险.并发容器: ConcurrentHashMap, CopyOnWriteArrayList,Queue, BlockingQueue.并发容器ConcurrentHashMap使用分段锁(Lock stripi...
2020-05-06 11:59:28
144
原创 Java并发编程-同步容器类
概述同步容器类包括Vector和HashTable,二者是早前JDK的一部分,这些同步类是由Collections.synchronizedXxx等工厂方法实现的. 这些类线程安全的方式是: 将他们的状态封装起来, 并对他们的每个公有方法进行同步, 使得每次只有一个线程能够访问容器.迭代器与CurrentModificationException对容器类进行标准的迭代操作都是使用Iterat...
2020-05-06 09:42:32
160
原创 MySQL事务隔离级别-脏读,幻读,不可重复读
概述名词解释共享锁(shared lock): 这种锁允许事务对读锁定的对象进行读取操作, 同时允许其他的事务也对这个对象施加共享锁, 但是不能对锁定的对象进行写入, 共享锁的反面是排它锁.排它锁(exclusive lock): 一种可以防止其他事务锁定同一行的锁, 这种锁可能会阻止其他事务写入或者读取锁定的对象, 而InnoDB使用MVCC技术来实现对呗排它锁锁定的对象读取来提高并发性....
2020-05-05 01:35:04
335
原创 MySQL中InnoDB存储B+树的应用
概述一般情况在, 我们的在线交易系统(OLTP)的每次查询可能只是返回几条甚至说一条数据, 这时候添加索引才是有意义的.联合索引联合索引和单列的索引的创建方法是一样的, 不同的只是对多个列进行索引.联合索引的本质上也是一棵B+树, 而B+树都是按照键值(key)排序的, 单列索引的键值只有一个, 而联合索引的键值是有多个.创建一张表如下:create table t1 ( id int...
2020-05-04 15:26:48
271
原创 InnoDB中的Cardinality
概述并不是在所有的查询条件中出现的列都需要添加索引, 对于添加B+树索引, 要让访问的行数变小才有意义. 比如性别这样的字段, 一般只有两个取值: M或者F, 这时候他们的可取的范围是很小的, 称为低选择性使用这个条件执行SQL, 可能得到的是表中50%的数据, 这样的索引是没有必要的. 而对于姓名, 这样的重复的可能性相对更小, 在此字段上建立索引是可行的.查看选择性通过show in...
2020-05-04 13:08:08
322
原创 InnoDB存储引擎-内存-缓冲池
概述InnoDB存储引擎是基于磁盘存储的, 并将其记录按照页的方式进行管理. 而磁盘IO与内存IO的速度相差可能接近1000倍, 所以使用缓冲池(Buffer Pool)可以有效提高响应能力. 当数据库需要进行数据页读取的时候, 先将页数据存储在缓冲池中, 下一次再读取的时候, 先检查缓冲池中是否存在数据, 如果存在则称为命中(hit), 否则会读取磁盘上的页.为了提高大容量读取的效率, 缓冲...
2020-05-03 01:32:20
313
原创 在CentOS6安装MySQL5.7安装完成之后的启动
在CentOS 6上安装MySQL5.7// 安装repository, el6代表CentOS6, el7代表CentOS7yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm// 安装数据库yum -y install mysql-community-server//...
2020-05-03 01:05:52
366
原创 MySQL字符列前缀索引长度的选择
概述字符串列具有不定长得特点,可能长度为0也可能长度为1024,当我们频繁查询这个列的时候,我们可以为这个字符串列建立一个索引,但是这个索引不应该是不定长的, 我们应该来选择一个合适的前缀长度来建立索引.下面介绍找到最佳长度的过程.找到最佳前缀索引长度创建表create table city ( id int(11) not null auto_increment, cname var...
2020-05-02 03:02:33
1473
原创 使用SQL语句快速插入200w测试数据
# 创建表create table ref_table( id int(11) auto_increment, col1 varchar(233), col2 int(11), primary key(id));# 插入200w条数据(手动点击执行数次)INSERT INTO ref_tbl (col1,col2) SELECT CONCAT(RAND() * 200000, c...
2020-05-02 01:38:54
1085
原创 MySQL中explain关键字
概述explain是去查看MySQL如何查询数据explain示例:EXPLAIN SELECT * FROM student WHERE `name`='Walter Yan' AND age=25idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra...
2020-05-01 15:15:53
325
原创 MySQL的JOIN总结
JOIN对于table_references部分 SELECT语句以及多表DELETE和 UPDATE语句, MySQL支持以下语法:table_references: escaped_table_reference [, escaped_table_reference] ...escaped_table_reference: { table_reference | { ...
2020-05-01 15:04:17
218
原创 高性能M\ySQL读书笔记
原则完成某件任务所需的时间度量,换句话说,性能就是响应时间.什么是性能?什么是性能优化?性能优化就是在一定的工作载荷下尽可能得降低相应时间....
2020-05-01 10:21:56
3932
原创 MyBatis动态SQL
本文章是<<深入浅出MyBatis技术原理与实战>>的读书笔记.概述MyBatis的动态SQL包含如下所示的元素元素作用备注if判断语句单个条件的判断choose,when,otherwise相当于Java中switch语句多重分支判断where用于构造where的辅助元素处理where的拼接问题set处理upda...
2020-04-29 23:59:01
469
原创 MyBatis主键回填获取自增主键
概述很多时候, 我们的数据库表是主键自增的, 我们在插入操作执行前无法获取到这个行的主键值, 所以我们可以用MyBatis的主键回填来获取到我们刚刚插入的行在数据库中的主键值.配置 <insert id="insertRole" parameterType="role" useGeneratedKeys="true" keyProperty="id"> inse...
2020-04-29 17:41:22
765
原创 MyBatis的自动映射
概述我们在使用select语句进行查询时候, 返回的是一个结果集(ResultSet), 但是我们需要的却是一个简单Java对象(POJO). 现在有以下常见问题:我们的规范POJO是驼峰式命名, 而规范的数据字段是下划线式的命名, 如何设置实现映射?我们如何配置实现嵌套的映射?MyBatis自动配置行为NONE: 取消自动映射.PARTICAL: 只会自动映射, 没有定义嵌套结...
2020-04-29 17:16:58
418
原创 MyBatis别名的使用
概述在MyBatis中, 很多地方我们需要配置全限定类名, 比如com.example.entity.Role就是一个全限定类名. 而这样的重复配置会让我们的文件看起来很长,所以我们可以配置一些别名, 在Mapper文件中直接使用别名.注册别名的两种方法方法1: 在configuration中配置typeAliases节点.// mybatis-cfg.xml<configurat...
2020-04-29 16:49:19
1153
原创 Spring Ioc过程
Spring IoC源码分析-obtainFreshBeanFactory()分析准备工作代码分析// AbstractApplicationContext 515public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) {...
2020-04-28 23:42:39
203
原创 判断是否为gzip文件 模板代码
package com.urun.flume.commons;import java.io.FileInputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;public class App { public static void main(String[] args) throws I...
2018-04-27 17:28:49
1709
原创 FLume Sink模板代码
public class SimpleSink extends AbstractSink implements Configurable{ private static final Logger logger = LoggerFactory.getLogger(SimpleSink.class); @Override public synchronized void start() ...
2018-04-27 16:06:25
272
原创 ZooKeeper Java API 创建Session连接
package lab.anoper.zk.main;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import java.io.IOException;import java.util.concurre...
2018-04-18 12:08:02
298
原创 kill -9 <PID>无法杀死一个进程
问题:使用 kill -9 PID 无法杀死一个进程.原因: 这个进程可能是一个僵尸进程(Zombie Process).解决:1. 查看僵尸进程:ps -ef | grep defunct#子进程, 父进程ps -ef | grep defunct | more2. 杀死僵尸进程的父进程:kill -9 PPID...
2018-04-17 19:52:59
10095
1
原创 HBase Shell基本命令
创建表create '<table name>', '<column family>', 'column family', ...create 'emp', 'personal data', 'professional data'列出所有表list#禁用一个表disable '<tableName>'disable 't1'启用一个表en...
2018-04-15 15:18:10
238
原创 Spark中RDD flatMap的示例
package examples;import constant.Constants;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.ap...
2018-04-09 21:01:47
1071
原创 Spark Accumulator示例代码
package examples;import org.apache.spark.Accumulator;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apach...
2018-04-09 17:49:40
311
原创 Spark SQL读取json文件
DataFrame是什么?是带有模式(Schema)的RDD, 类似于二维表, 有了Schema可以洞察更多的额信息.准备json数据, json数据需要是一行代表一个Row{"id":1, "name":"leo", "age":18}{"id":2, "name":"jack", "age":19}{"id":3, &q
2018-04-09 16:16:28
1608
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人