自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (5)
  • 收藏
  • 关注

原创 Posgresql macOS安装和基础操作

本文介绍macOS 13-15版本Postgresql-12的安装,pg常用命令。作为笔记记录,后续方便查看。

2024-01-15 23:05:43 871

原创 SpringBoot基础:一步步创建SpringBoot工程

需要在:File – ProjectStructure – Facets – Spring – Configuration Files – Customize Spring Boot(左下角绿色叶子) – Add custom configuration files(+号) 添加配置文件。否则SpringBoot无法识别配置文件,可能导致启动失败。

2024-01-15 09:57:47 1000

原创 简单工厂、工厂方法、抽象工厂和策略模式

在抽象工厂模式中,可以使用简单工厂模式中的工厂类 + 反射技术,替换简单工厂方法中switch分支语句,再+配置文件,可以将反射需要的变量配置在配置文件中。这种方式解决了工厂类冗余问题,又满足开闭原则。

2023-12-25 11:57:14 1259

原创 线程池、及Springboot线程池实践

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。

2023-12-04 22:57:59 1053 2

原创 JAVA序列、反序列化及漏洞

介绍序列化、反序列化背景;java实现,以及存在的漏洞和解决方案。

2023-11-11 16:00:37 274

原创 VSCode离线安装插件

离线安装VSCode插件

2023-06-05 10:28:27 2111

原创 Spring开发过程编码风格

规范编码风格:统一异常处理、规范日志打印和国际化、参数定义和参数校验、规范方法返回值、规范接口定义、明确Conroller、Service层负责功能

2023-03-13 13:42:30 244 1

原创 如何优雅的中断线程?

本文介绍了java中3种线程终止方式。分别是:volatile 标志位、interrupt()方法终止、重写Thread.interrupte()方法终止阻塞的socket。

2022-07-15 18:31:03 588

原创 JAVA单元测试Mock实践

本文介绍了Mock背景,常见的单元测试场景以及对应的测试方法,最后简单介绍了powermockit测试框架。理解本文内容,会带你入门java单元测试,其中第一章、第二章需要重点理解。

2022-07-03 15:58:03 3566

原创 Maven Pom文件详解

Pom全称Project Object Model(工程对象模型)。Pom文件是Maven运行的基础,其中详细描述了一些详细的工程配置信息。Pom文件分类默认Pom文件内容<project> <modelVersion>4.0.0</modelVersion> <repositories> <repository> <id>central</id> <name&

2022-05-21 12:59:58 1292

原创 Maven工具详解

maven是什么?Maven本质上是一种项目管理、部署工具,提供了如下功能:项目构建 文档 报告 依赖处理 SCMs 发布版本 包分发创建mvn工程mvn -B archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4maven工具生命周期验.

2022-05-21 12:04:51 779

原创 java日期格式转换SimpleDateFormat详细介绍

SimpleDateFormat类简介SimpleDataFormat类可用于格式化、解析携带区域的日期,可以将日期格式化为文本,可以将文本解析为日期,还可以进行日期规范化。SimpleDataFormat类支持用户自定义日期格式,同时也提供一些内置的日期格式,例如可通过getTimeInstance、getDateInstance或DateFormat中的getDateTimeIns.

2022-05-19 20:52:19 5486

原创 Kafka数据持久化、高效传输设计原理

一、kafka解决的业务痛点解决大量数据的实时传输问题。例如:可能需要支持高吞吐量的实时日志聚合系统事件流 可能需要支持大量后台日志处理中,离线系统周期加载数据 低延时消息传输这需要kafka系统支持分区,分布式,实时处理接收到的数据。此外,当数据被送到其他服务系统中时,kafka系统在机器出现问题是还必须有容错性保证。从某种程度上理解,kafka系统更像是一个日志数据库。二、kafka持久化存储数据设计kafka强依赖于文件系统和操作系统页缓存,摈弃java堆缓存机制,同时

2022-05-05 16:12:41 860

原创 OS系统中swap分区和虚拟内存关系

物理内存RAM即内存:随机存取存储器(random access memory),是与CPU交换数据的内部存储器。内存和CPU之间还存在L1-L3缓存用于解决CPU处理数据和读写数据之间的差异。虚拟内存基本概念:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族...

2022-04-28 20:02:03 2568

原创 SpringBoot统一异常处理

来源:Spring Boot - Exception Handlinghttps://www.tutorialspoint.com/spring_boot/spring_boot_exception_handling.htm总体思路使用注解@ControllerAdvice注入统一处理异常的类 使用注解@ExceptionHandler注入处理指定异常的方法 其他地方入controller throw出异常后,该异常对应的ExceptionHandler注解方法会处理抛出的异常异常触发流程

2022-04-01 19:26:26 653

原创 平衡二叉树ALVBinaryTreeList

简介:本文介绍平衡二叉树基本概念,并通过继承AbstractBinaryTree抽象类,java实现ALVBinaryTreeList,主要操作算法有插入和删除。一、平衡二叉树基本概念1.平衡二叉树是什么?平衡二叉树时一种结构平衡的二叉树,即叶节点高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。2.为什么会出现平衡二叉树?1)二叉树插入时存在最坏情况,导致查找的时间复杂度为O(n)。例如:顺序插入1,2,3,...,时,二叉树严重失衡,退化为普通链表,查找时间复杂.

2021-12-23 18:31:28 870

原创 二叉树BinaryTreeList

本文介绍二叉树基本概念,并通过继承java集合List接口,java实现BinaryTreeList操作算法:插入、删除、前中后层次遍历、二叉树深度、最大小宽度等。

2021-12-22 18:26:51 517

原创 8. java并发包--ThreadLocalRandom和原子操作类

ThreadLocalRandom类是JDK7新增的JUC下的随机数生成器,弥补了Random类在多线程情况下的缺陷。1. java.util.Random类存在的问题Random类生成随机数原理:首先根据旧的种子生成新的种子,然后根据新的种子生成随机数。多线程情况下,为了避免多个线程同时根据旧种子生成相同的新种子,导致生成相同的随机数,Random类使用一个原子变量,用于保存初始化时的种子。通过循环CAS操作,以保证只有一个线程拿到旧种子来计算新种子。问题:多个线程通过CAS操作竞争

2021-10-26 08:38:22 146

原创 7.并发编程基本知识和基本原理

1.java中内存可见性问题JMM规定,所有变量都放在内存中,线程使用变量时,从内存中复制一份变量到线程工作空间,线程读写变量都是操作自己工作空间内部变量。由JMM可知,当线程A修改了变量C的值后,只修改了其本地内存的值,此时线程B并不知道线程A修改了变量C的值。导致变量C的值修改后不可见。共享内存不可见原因:与cpu多级缓存命中有关。JMM工作内存对应实际内存:JMM中对应的线程工作内存,对应CPU内部的L1、L2缓存、寄存器。2. 如何解决内存可见性问题?2.

2021-10-14 20:18:46 87

原创 6. ThreadLocal

反倒是看回放

2021-10-09 09:22:09 74

原创 1.kafka基本命令和配置说明

1.基本命令cd /opt/program-files/kafka/kf/bin./kafka-topics.sh --list --zookeeper zk:2181 #查看所以主题./kafka-topics.sh --create --zookeeper zk:2181 --replication-factor 1 --partitions 1 --topic test #创建主题test./kafka-topics.sh --describe --zookeeper zk

2021-09-27 14:41:59 429

原创 5. 线程死锁

1.线程上下文切换缘由:cpu个数小于线程个数,为了让用户觉得所有程序都在并行进行,需要cpu切换时间片。线程A时间片结束后,为了下一次再次运行线程A时知道该从哪里继续运行,需要保存线程A的上下文信息。线程切换时机:线程的cpu时间片使用完毕时,线程被其他线程中断时。2.线程死锁从表现定义死锁:两个或两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象。在无外力干涉情况下,这种情况会持续等待下去。...

2021-09-24 09:05:33 76

原创 4.线程中断

总结:yield方法告知cpu调度器,当前线程请求让出自己的cpu使用。线程让出cpu后处于就绪状态。下次cpu调度还可能有限调度到刚刚让出cpu的线程。和sleep和wait不同的是:sleep方法让出cpu到指定时间,阻塞挂起,但是不释放锁;wait方法让出cpu直到指定时间或被notify,阻塞挂起,同时释放锁资源。而yield方法仅仅是让出cpu,随后进入就绪状态。...

2021-09-17 17:45:20 147

原创 3.线程睡眠的Thread.sleep和让出cpu的Thread.yield静态方法

总结:代码块内调用Thread.sleep方法不会释放监视器等锁资源,被其他线程中断后会抛出中断异常。验证sleep不会释放锁资源代码示例:如果线程A获取了锁资源,睡眠过程中,线程B也想获取锁资源,但是获取失败。这间接验证了Thread.sleep静态方法睡眠过程中不会释放锁资源。private static final Lock LOCK = new ReentrantLock(); public static void main(String[] args) { Thread

2021-09-16 10:00:02 799

原创 2.等待线程终止的Thread.join方法

定义:主线程中执行子线程Thread.join()方法会让主线程等待子线程执行完毕。1.主线程调用子线程的join方法后阻塞自己等待子线程返回代码举例:main主线程首先会在调用threadOne.join()方法后被阻塞,等待threadOne执行完毕后返回。然后主线程调用threadTwo.join()方法后再次被阻塞,等待threadTwo执行完毕后返回。CountDownLatch工具更好用。//等待线程终止的join方法 Thread threadOne

2021-09-15 22:24:04 557

原创 1.并发编程挑战

书行天下(1)上下文切换上下文切换:cpu通过时间片来执行任务,时间片结束后,需要切换线程。任务从保存到再加载的过程就是上下文切换。上下文切换存在的问题:上下文切换存在时间的开销,因此线程个数对系统存在影响。如何减少上下文切换:无锁并发编程、CAS算法、使用最少线程、协程。无锁并发编程 :多线程竞争锁存在线程切换,例如多线程处理数据时,将数据id经过hash算法取模分段到不同线程计算,避免使用锁。 CAS算法:比较、交换、自旋 适当数量的线程 协程:在单线程中实现多任务调度,并在

2021-09-09 22:49:03 88

原创 归并排序以及Tim排序

递归概念:方法自己调用自己。注意需要有返回条件,basecase。归并排序:递归+合并。是分治思想的实践,在递归基础上的一种排序算法。稳定,速度仅次于快速排序。归并排序思想:分解(Divide):将n个元素分成个含n/2个元素的子序列。 解决(Conquer):用合并排序法对两个子序列递归的排序。 合并(Combine):合并两个已排序的子序列已得到排序结果。默认的mergestatic void merge(){ int[] arr = {1,4,7,8,

2021-08-27 21:20:26 343

原创 java输入Scanner基本用法

1.基本介绍java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,每个next获取输入对应的字符。Scanner sc = new Scanner(System.in);当我们通过 Scanner 类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext与hasNextLine判断是否还有输入的数据:next() -->hasNext() nextLine() --...

2021-08-24 22:13:49 20505

转载 Linux中profile、bashrc、bash_profile之间的区别和联系

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用

2021-08-24 18:47:19 143

原创 数据结构与算法基本概念

介绍数据结构和算法的背景,以及两者的关系

2021-08-22 19:17:57 141

原创 冒泡排序优化算法

和选择排序区别:冒泡排序两两比较大小后都会交换,而选择排序仅仅记录最值的下标,一轮结束后再交换值。思路:重复找子数组中最大数,每次比较后都会交换最大数,最大数逐渐冒泡到顶部。代码思路:数组内值两两比较,符合条件后交换,再用同样的方法作用于子数组。方法1:平均时间复杂度:O(n ^ 2),最好、最坏时间复杂度:O(n ^ 2),两两交换,稳定private void bubbleSort() { int[] arrayRandom = new int[100];

2021-08-22 19:14:04 177

原创 验证排序算法是否稳定

思路:两个连续数字存储在数组中,内存地址是递增的,只需判断两个相同数字内存地址是否还是递增即可。具体方案:需要自定义MyInteger对象,因为对象才可获取内存地址。此外,获取对象内存地址,需要引入jol-core依赖包。代码示例:private boolean isStable(){ MyInteger[] array = new MyInteger[]{new MyInteger(2),new MyInteger(2),new MyInteger(2)};

2021-08-22 19:11:17 180

原创 插入排序优化算法

选择排序、冒泡排序、插入排序区别:选择排序,每次选择最大/小值放到前面合适位置,每轮内层循环交换一次。排好的子数组有序。 冒泡排序,每次两两比较都交换,将最大/小值交换到子数组位置。排好子数组有序。 插入排序,每次插入后子数组都有序,且不是根据最大/最小值排序。思路 :前i个数字有序,第i+1个数字和前面i个数字依次比较并交换顺序插入到前i个数字合适。和最小值冒泡排序有点像。代码思路:​从第二个位置开始,和前面有序数字两两比较交换。但是优化后的插入排序,只需要交换1次。时空复杂度:平

2021-08-22 19:09:17 472

原创 选择排序算法优化

1.默认选择排序算法实现思路:记录最小数下标,重复一轮后,调换最小位置和前面位置,重复此过程。 private void selectSort(){ int[] array = {5,4,3,7,8,2,1,9,6}; for (int i = 0;i<array.length - 1;i++){//边界处理 int minPos = i; for (int index = i+1;index <

2021-08-18 15:32:16 547

原创 SpringBoot框架自定义工具类静态方法如何注入Bean

问题来源:工具类一般都是静态方法,静态方法只能调用静态成员,然而通过@Autowired注入的Bean不是静态成员,如何解决?解决方案:利用@PostConstruct注解,代码示例如下: //定义static类型的变量 private static ApplicationEventPublisher thisApplicationEventPublisher; @Autowired private ApplicationEventPublisher applicationEve

2021-08-08 22:15:16 1599

原创 Apache的Map子接口MultiValueMap

包来源:org.apache.commons.collections4.multimap定义:一个key可以对应多个value。和Map不同的时,同一个key存储多个value时,前面的value不会被后者覆盖。数据结构:基于Map、list、set。实际的数据结构包括:数组、链表(红黑树)实现原理:实际上是一个HashMap对象,但是其value是一个list对象。添加对象时,将value放入MultiValueMap的list中。获取对象时,一样通过get(key)方法获取list。贴出Ar

2021-08-08 22:02:55 2112

转载 手撸spring源码--设计模式实现spring容器

# 实现简单的spring容器# 1.背景##(1)spring容器是什么?用于承载对象的容器。对于spring容器来说,bean对象应该以类似零件方式拆解后放到bean定义中,对象解偶操作更有利于spring管理bean。当bean信息被定义后,再由spring统一装配,包括bean初始化、属性填充等,最后得到完整的实例化对象。##(2)hashmaphashmap是一种基于扰动函数、负载因子、红黑树转换等技术,形成的拉链寻址的数据结构,它能让数据更加散列的分布在哈希桶以及碰撞

2021-07-16 13:40:48 397

原创 设计模式六大原则

六大原则简述:单一职责原则:实现类/方法职责单一;开闭原则:要对扩展开放,对修改旧代码关闭。里氏替换原则:不要破坏继承体系;依赖倒置原则:要面向接口编程;接口隔离原则:在设计接口要精简单一;迪米特原则:要降低耦合;六大原则目的:为了构建灵活、可扩展、可维护的软件系统,它的重要性高于设计模式的,设计模式只是它的具体实践。(1)单一职责原则定义:一个类只负责一个功能领域中的相应职责。就一个类而言,应该只有一个引起它变化的原因。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职

2021-07-15 10:37:06 1380

原创 Java Static关键字

1.static静态关键字修饰变量:静态变量是类公有的,所有类的实例化对象共同享有静态变量,多线程修改时非线程安全。但是搭配final使用时,线程安全。修饰方法:静态方法是类公有的,所有类的实例化对象共同公有静态变量,常作为工具类出现。静态方法只能调用静态变量、其他静态方法(调用非静态变量则与静态方法公有矛盾)。修饰块:静态块在类加载器加载对象时,要执行的一组语句,用于初始化静态变量。通常用于类加载的时候创建静态资源。其中,在静态块中不能访问非静态变量。修饰类:不能声明静态外部类/包,但是可

2021-07-08 22:42:49 51

原创 SpringBoot核心接口ApplicationContext

1.SpringBoot核心接口ApplicationContextApplicationContext是一个核心接口:<span style="background-color:#dadada"><span style="color:#1f0909"><span style="color:#770088">public</span> <span style="color:#770088">interface</span> &

2021-06-28 11:35:50 465

mac-postgresql-12

macOS下Postgresql,用于64bit macOS 10.13 - 10.15 官网地址下载很慢:https://www.postgresql.org/

2024-01-15

shadow file

包含谷歌的switcomega插件,还有运行在插件上所需要的文件备份。

2018-05-24

AmbientGAN: Generative models from lossy measurements--有损测量生成模型

AmbientGAN属于生成模型的一种,18年很新的文章。下载过后加上后缀名.pdf即可打开。翻译地址:https://mp.csdn.net/postedit/80369226

2018-05-18

Alexnet训练mnist和cfar10数据集

TensorFlow实现训练Alexnet网络,训练mnist数据集合cfar数据集。mnist数据集测试准确度0.986.不需要下载权重,因为输出大小不一样。

2018-04-30

VGG16 & VGG19复现代码与权重

复现VGG16与VGG19,其中VGG16,VGG19权重放了连接,可自行下载。链接https://blog.csdn.net/jainszhang/article/details/79810478

2018-04-05

改进Le-net

Lenet卷积核改变为3*3,原来7层改为9层,效果比原论文中好

2018-04-02

空空如也

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

TA关注的人

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