自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 多线程事务怎么回滚

多线程事务问题

2023-06-26 10:59:44 263

原创 spring aop切入点汇总

spring aop

2022-12-15 11:55:00 471 1

原创 七大设计原则

学习、理解、吸收

2022-03-15 14:39:34 203

原创 java优化分析

常用命令

2022-03-03 21:10:24 683

原创 SpringData&JPA学习笔记

jpa:Java Persistence api,是一种规范,hibernate是它的一种实现。jpql/hql:查询语言,jpql是hql的子集。1、基础用法以及注解解释@MappedSuperclass1.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。2.标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。@MappedSuperclass@E

2022-01-16 23:21:30 652

原创 seata分布式事务配置

学习笔记。

2021-12-12 18:57:34 958

原创 java操作poi导出excel

两个依赖版本保持一样就行。<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version></dependency><dependency> <groupId>org.apache.poi</groupId&gt

2021-09-18 18:19:15 104

原创 C++基础知识学习总结3

上一篇-类语法入门

2021-09-12 21:37:06 108

原创 STL基础语法总结

STL

2021-09-07 14:32:27 664

原创 C++基础知识学习总结2

类入门

2021-08-29 22:24:06 224

原创 图片合成pdf

图片url下载

2021-08-15 08:59:33 108

原创 Canal学习笔记&mysql安装

canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。工作原理...

2021-06-24 17:13:27 209

原创 Lua学习笔记

lua是什么Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。特性支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和t

2021-06-23 16:44:05 73

原创 OpenResty

安装和简单使用yum install yum-utilsyum-config-manager --add-repo https://openresty.org/package/centos/openresty.repoyum install openresty默认安装目录/usr/local/openresty启动openrestycd /usr/local/openresty/nginx/sbin./nginx重启openrestycd /usr/local/openresty

2021-06-23 15:47:01 233

原创 策略设计模式

定义该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。优点1、多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if…else 语句、switch…case 语句。2、策略模式提供了一系列的可供重用的算法族

2021-06-09 18:04:35 60

原创 观察者模式

在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心。气象局的天气预报与听众。股票价格与股民。//显示当前天气情况public class CurrentConditions { //温度 气压 湿度 private float temperature; private float pressure; private float humidity;

2021-05-24 19:09:08 74

原创 Threadlocal学习总结

作用&场景作用:主要用来做线程变量的隔离。场景:支付宝每秒钟同时会有很多用户请求,那每个请求都带有用户信息,我们知道通常都是一个线程处理一个用户请求,我们可以把用户信息丢到Threadlocal里面,让每个线程处理自己的用户信息,线程之间互不干扰。程序在处理用户请求的时候,通常后端服务器是有一个线程池,来一个请求就交给一个线程来处理,那为了防止多线程并发处理请求的时候发生串数据,比如AB线程分别处理用户a和用户b的请求,A线程本来处理用户a的请求,结果访问到用户b的数据上了,把用户b支付宝的钱

2021-05-11 19:15:54 173

原创 C语言运算符优先级

优先级一 结合方向 左到右[] 数组下标 数组名[常量表达式]() 圆括号 (表达式)/函数名(形参表). 成员选择 对象.成员名->成员选择(指针) 对象指针->成员名

2021-05-09 17:46:57 142

原创 C++基础知识学习总结1

认识输入输出#include <iostream>using namespace std;int main(){ int a; cin >> a; //标准输入流 cout << "hello ---cout" << " a的值:" << a << endl ; //标准输出流 cerr << "hello ---cerr" << endl ; //标准错误流 cl

2021-05-09 17:21:47 240

原创 BitMap

学习用,仅方便自己查看https://www.cnblogs.com/cjsblog/p/11613708.html

2021-04-28 19:25:21 105

原创 SQL 窗口函数

什么是窗口函数?窗口函数(Window Function)是SQL2003标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。window_function (expression) OVER ( [ PARTITION BY part_list ] [ ORDER BY or

2021-04-25 17:50:48 492

原创 equals()

boolean result; Integer a = 99; Integer b = 99; result = a == b; System.out.println("Integer a=99 is == Integer b = 99" + result); Integer c = 128; Integer d = 128; result = c == d; System.out.println("Integer c...

2021-02-20 14:23:12 92 1

原创 LRU-算法

redis内存淘汰算法LRU 算法,全称是Least Recently Used(最近最少使用)。核心思想:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。所以,当指定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。解决方案数组查找快,增删慢O(n)。链表查找慢O(n),增删快。最佳方案双向链表+哈希表(LinkedHashMap)。想要查询和插入的时间复杂度都是 O(1),满足以下条件:1.首先这个数据结构必须是有时序的,以区分最近使用的和很久没有使用的数据

2021-01-20 00:22:36 141

原创 存储过程和函数

存储过程学习概念语法游标函数概念存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程和函数的区别在于函数必须有返回值,而存储过程没有。函数:是一个有返回值的过程;过程:是一个没有返回值的函数;语法delimiter $ 声明分隔符(默认是分号;,命令行创建的时候需要用哦)。为了方便,以下是Navicat Premium 15操作。create

2021-01-01 21:56:55 126

原创 动态代理

动态代理JDK动态代理JDK(基于子类)public class CgLib implements MethodInterceptor{ private Object target; public CgLib(Object object) { this.target = object; } public Object getProxy() { //通过Enhancer对象中的create()方法生成一个类,用于生成代理对象

2020-12-23 21:03:24 62

原创 AQS学习笔记

1、概述AQS是AbstractQueuedSynchronizer(抽象队列同步器)的简称。两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。

2020-12-22 09:30:47 220

原创 模拟CAS

public class AtomicCompareAndSwap { private int value; public synchronized int getValue() { return value; } //比较 public synchronized int compareAndSwap(int expectValue, int newValue) { int oldValue = this.value;

2020-12-07 17:30:00 84

原创 volatile验证案例

可见性验证 private volatile static int num = 0; public static void main(String[] args) throws Exception { new Thread(new Runnable() { @Override public void run() { while (num == 0) {} } }).s

2020-11-28 11:52:01 56

原创 死锁

死锁入门public class deadLockDemo { public static void main(String[] args) { String lockA = "a"; String lockB = "b"; new Thread(new DeadLock(lockA, lockB)).start(); new Thread(new DeadLock(lockB, lockA)).start(); }}cl

2020-11-27 17:00:25 53

原创 自旋锁入门

自旋锁Demopublic class Spinlock { AtomicReference serialNumber = new AtomicReference(); public void LockMe() { Thread thread = Thread.currentThread(); System.out.println(thread.getName() + "加锁"); while (!serialNumber.compareAn

2020-11-27 15:10:43 44

原创 反射入门

什么是反射?反射是一种在运行时解析类的技术。public class Reflex { public static void main(String[] args) throws Exception { //1、必须获得操作类所对应的Class对象-一个类只对应唯一的一个class对象 //类名.class //对象.getClass() //Class.forName("类的全路径限定名") Class c1 =

2020-11-26 17:43:41 54

原创 FastDFS入门

java操作fastDFS1、添加jar <dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27.0.0</version> </dependency>2、classp

2020-11-26 00:32:27 136

原创 ReadWriteLockTest

读写锁public class TestReadWriteLock { public static void main(String[] args) { ReadWriteLockDemo readWriteLockDemo = new ReadWriteLockDemo(); for (int i = 0; i < 16; i++) { int finalI = i; new Thread(new Runna

2020-11-24 14:18:37 48

原创 线程计数

CountDownLatchpublic class TestCountDownLatch { public static void main(String[] args) { /** * 闭锁 * 1、CountDownLatch end = new CountDownLatch(N); //构造对象时候 需要传入参数N * 2、end.await() 能够阻塞线程 直到调用N次end.countDown() 方法才释放线程

2020-11-23 17:40:56 319 1

原创 ForkJoin任务拆分

ForkJoin任务拆分public class TestForkJoinSum { public static void main(String[] args) { ForkJoinPool forkJoinPool = new ForkJoinPool(); ForkJoinSumTask task = new ForkJoinSumTask(0L, 50L); Long invoke = forkJoinPool.invoke(task);

2020-11-23 10:49:26 181

原创 线程8锁练习

线程锁的8个问题public class TestThread8Monitor { /** * 1、两个普通同步方法,两个线程,打印输出 //one two * 2、给getOne新增sleep方法(以下测试getOne的sleep方法不要去掉),打印输出 //one two * 3、新增普通方法getThree,打印输出//three one two * 4、两个普通同步方法,两个number对象,两个线程 //two one * 5、更改get

2020-11-16 16:32:19 67

原创 线程池入门

线程池的简单使用public class TestThreadPool { /** * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 * 二、线程池的体系结构: * java.util.concurrent.Executor :负责线程的使用与调度的根接口 * --**ExecutorService子接口:线程池的主要接口 * --ThreadPoolExe

2020-11-16 16:28:04 72

原创 单例设计模式

饿汉式public class Singleton { private Singleton() { } private static Singleton s = new Singleton(); public static Singleton getIns() { return s; }}懒汉式public class Singleton { private Singleton() { } private static

2020-11-14 19:01:17 51

原创 线程按顺序交替执行

线程按顺序交替输出ABABAB…//newCondition能为多个线程提供不同的condition,详情见代码,特定的condition能唤醒特定的线程public class TestLockCondition { public static void main(String[] args) { Resource resource = new Resource(); new Thread(() -> { for (int

2020-11-13 13:19:09 75

原创 生产者消费者

synchronized实现public class TestProducerAndConsumer { public static void main(String[] args) { Resource resource = new Resource(); ProducerThread p1 = new ProducerThread(resource); ConsumerThread c1 = new ConsumerThread(resource

2020-11-13 11:33:04 54

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除