Skip to content

Instantly share code, notes, and snippets.

@wutingjia
wutingjia / Spring事务处理.md
Last active March 12, 2019 06:23
Spring事务处理

事务处理.png
首先可以自己选择自己的数据源连接池等。
以JDBC和mybatis为例,使用DataSourceTranscationManager,不管哪种Manager都是PlatformTransactionManager的具体实现类。
使用注解方式:

@Bean("myDataSource")
DataSource DataSource(){
  return new DataSource();//类似
}
@wutingjia
wutingjia / 批量.md
Last active May 30, 2019 12:23
批量

主要使用spring batch+quartz进行批量的处理与控制

Spring Batch

层次结构


(运行时的元数据储存在jobRepository中)。
JobRepository: 提供之所有持久机制。提供对于JobLauncher, Job, Step的CRUD。@EnableBatchProcessing 将会自动提供JobRepository。
JobLauncher: 是一个简单的接口,其中的run方法接受Job, JobParameters作为参数,用于启动批量。
ItemReader: 提供Step中业务数据的输入。
ItemWriter: 提供Step中业务数据的输出。

@wutingjia
wutingjia / 数据库索引.md
Last active March 13, 2019 12:47
数据库索引

MySQL 5.5之前版本默认的存储引擎是MyISAM,5.5之后,MySQL默认的存储引擎是InnoDB。 MyISAM使用B-Tree实现主键索引、唯一索引和非主键索引。 InnoDB中非主键索引使用的是B-Tree(B树)数据结构,而主键索引使用的是B+Tree。

B树的出现所要解决的问题是:在进行大量数据的操作中,不可能一下子将数据都读进内存。因此频繁的对磁盘进行读写,I/O读写速度严重的影响了性能,B树正是为了减少对磁盘的读写次数。

以下是一个5阶B树,叶子节点没有画出,叶子节点将指向记录

由于网上对此的解释都比较拗口且术语都用的不一致,对于新手比较难以理解,以下将使用更加通俗的语言解释。

@wutingjia
wutingjia / mysql自动分区.md
Last active June 21, 2021 12:29
mysql自动分区

手动分区

对于需要定时分区的表,必须先进行一次手动分区。
对于新建的表,在建表语句后添加:

partition by range(partition_key)( #对于基于日期分期 推荐使用 to_days(pdate) to_days函数会将日期类型转化为int值提高效率
  partition p20190301 values less than (to_days('2019-03-02')), # 分区名字 一般习惯以p开头后面接日期
  partition p20190302 values less than (to_days('2019-03-03'),
);

对于已经存在的表创建分区:

redis是key-value,其中的value可能是map,这个map中键为了避免歧义被称为field
需要强一致性的数据不应该使用缓存。

redis为什么快

  • 它是基于内存的操作,CPU不是redis的瓶颈,可以轻松处理每秒几十万的请求。
  • redis是单线程省去了很多上下文线程切换的时间。 从而不需要各种锁的性能消耗。增加性能可以使用单线程多进程的集群方案。
  • 全程使用Hash结构,对一些数据储存进行了优化比如压缩表和跳表。
  • redis使用多路复用技术。非阻塞IO内部采用epoll。

redis的过期策略

定期删除+惰性删除:

@wutingjia
wutingjia / linux常用.md
Created March 18, 2019 12:57
linux常用

查看所有文件(包括隐藏文件):ll -a
创建文件:touch [filename]
在不注销重新登陆的情况下使修改的配置文件生效:source [filename]
在用户目录下的隐藏文件.bashrc中配置环境变量例如export JAVA_HOME=/JAVA/jdk1.8.0_190

@wutingjia
wutingjia / 类加载机制.md
Created March 18, 2019 13:33
类加载机制

1

@wutingjia
wutingjia / Skywalking.md
Last active May 31, 2019 02:50
Skywalking

Skywalking

skywalking 是一个全链路监控系统,用于分析和串起微服务间的各种指标。主要有三部分构成:探针、后端、前端UI. 1、探针 探针就是一个agent,随着spring容器的启动而一起启动。类似AspectJ通过操作字节码达到效果。 agent.config:

agent.service_name=${SW_AGENT_NAME} #显示的服务名
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES} #后端的Ip地址
logging.level=${SW_LOGGING_LEVEL:DEBUG}
@wutingjia
wutingjia / kafkaClient.md
Last active May 31, 2019 01:06
kafkaClient

Kafka-Clients

1、添加依赖

<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
  <version>2.1.4.RELEASE</version>
</dependency>
<dependency>