自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dingwen

小白学习成长在路上

  • 博客(217)
  • 收藏
  • 关注

原创 PG数据库导入导出

【代码】PG数据库导入导出。

2023-04-13 13:25:35 232 1

原创 来自菜鸡Java工程师的日积月累

目前Treasure是个微服务架构的纯后端项目,前端部分后期进行;同时Treasure是一个来自菜鸡Java工程师本着对技术的积累与个人的成长的开源项目。学习成长过程中一些技术点整合一些常见业务的解决方案面试中一些业务场景模拟及解决方案工作中积累的一些心得合理应用设计模式进行一些业务代码的重构优化一些更优雅的编码实现常用小轮子的积累技术点备忘。

2022-12-11 12:31:45 296

原创 文章迁移说明

1. 说明各位亲,愿一切安好。今后笔记将迁移到新地址,持续更新,谢谢支持✍️2. 地址http://47.98.251.224/book/index.html

2022-01-08 17:57:27 316

原创 Spring5学习笔记

文章目录Spring5学习笔记1. 简介1.1 介绍1.2 发展历程1.3 理念1.4 优点1.4 组成1.4.1 Spring Core1.4.2 Spring Context1.4.3 Spring AOP1.4.4 Spring DAO1.4.5 Spring ORM1.4.6 Spring Web1.4.7 Spring Web MVC1.5 扩展2. 控制反转2.1 原型2.1.1 `UserDao`2.1.2 `UserDaoMysqlImpl`2.1.3 `UserDaoOracleImpl`

2021-10-07 17:43:36 311 1

原创 ThreadLocal

文章目录ThreadLocal1. 简介2. 常用方法3. 基本使用3.1 未使用案例3.2 使用ThreadLocal3.3 synchronized同步方式3.4 ThreadLocal与synchronized的区别4. 内部结构4.1 设计说明4.2 设计优势5. 核心方法源码分析5.1 set()5.2 get ()5.3 remove()5.4 *initialValue()*6.内存泄露分析6.1 **强引用**6.2 **弱引用**6.3 ThreadLocalMap中的key使用强引用分析

2021-10-02 14:32:47 157

原创 nginx-性能优化配置

文章目录性能优化配置1. 高效文件传输模式2. gzip2.1 gzip_types总结性能优化配置1. 高效文件传输模式[!NOTE]参数sendfile on 用于开启文件高效传输模式,同时将tcp_nopush on 和tcp_nodelay on 两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率。#开启高效文件传输模式sendfile on;#减少网络报文段数量tcp_nopush on;#提高I/O性能tcp_nodelay on;2. gzip

2021-10-01 16:44:11 97

原创 nginx-413-Request Entity Too Large

文章目录Request Entity Too Large1. 问题描述2. 解决Request Entity Too Large1. 问题描述[!NOTE]在使用nginx时,在上传文件接口通过nginx转发到服务器时,发现抛出“error”错误,仔细发现抛出错误内容为:413-Request Entity Too Large,发现是nginx限制了文件上传的大小,直接将请求拦截了。这报错是因为nginx的默认上传文件大小配置client_max_body_size只有2MB。2. 解决[

2021-09-27 17:08:05 84

原创 nginx-stream端口转发

文章目录stream端口转发1.问题描述2.原因及解决stream端口转发1.问题描述[!DANGER]在完成端口转发配置时,出现了nginx unknown directive "stream"错误,配置如下:stream { upstream redis { server 127.0.0.1:6379 max_fails=3 fail_timeout=30s; } server { listen 16379; p

2021-09-14 22:57:30 1731

原创 nginx配置中一个不起眼字符“/“

文章目录nginx配置中一个不起眼字符"/"1.问题2.`location`3.`proxy_pass`4.总结5.案例总结nginx配置中一个不起眼字符"/"1.问题[!DANGER]nginx在配置proxy_pass代理转接和location时,多加少加“/”字符会产生完全不一样的效果。2.location[!TIP]nginx每个location都是一个匹配目录,nginx的策略是:访问请求来时,会对访问地址进行解析,从上到下逐个匹配,匹配上就执行对应location大括号中的策

2021-09-14 22:56:36 537

原创 save & load & export & import

文章目录save & load & export & import1.`export`2.`import`3.`save`4.`load`save & load & export & import1.export[!TIP]将容器导出为tar文件。docker export 【容器ID|容器名称】> 【指定压缩包名称】2.import[!TIP]将压缩包导入成本地镜像。cat 【压缩包】| docker import - 【镜

2021-09-12 20:43:45 93

原创 第21题-对守护线程的理解

文章目录第21题-对守护线程的理解1.定义2.生命周期3.总结第21题-对守护线程的理解1.定义[!NOTE]线程分为用户线程和守护线程,守护线程为所有非守护线程(用户线程)提供服务的线程。例如:GC线程。2.生命周期[!NOTE]当所有用户线程都退出时,守护线程会退出。3.总结[!NOTE]由于守护线程的终止是自身无法控制的,因此千万不要把IO、File等重要操作逻辑分配给它;因为它不靠谱。thread.setDaemon(true)必须在thread.start()之前设置

2021-09-11 17:17:01 100

原创 第20题-对线程安全的理解

文章目录第20题-对线程安全的理解1.诱因2.堆3.栈4.总结第20题-对线程安全的理解1.诱因[!NOTE]操作系统都是多任务的,即多个进程同时运行。为了保证安全,每个进程只能访问分配给自己的内存空间,而不能访问别的进程的,这是由操作系统保障的。在每个进程的内存空间中都会有一块特殊的公共区域,通常称为堆(内存)。进程内的所有线程都可以访问到该区域,就造成了线程安全问题。2.堆![DOTE]堆是进程和线程共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分 配

2021-09-11 16:28:09 83

原创 第19题- sleep&wait&join&yield区别

文章目录第19题- sleep&wait&join&yield区别1.两个概念1.1 锁池1.2 等待池2.比较第19题- sleep&wait&join&yield区别1.两个概念1.1 锁池[!NOTE]所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。1.2 等待池[

2021-09-11 16:15:59 87

原创 第18题-线程生命周期

文章目录第18题-线程生命周期1.线程状态2.创建(New)3.就绪(Runnable)4.运行(Running)5.阻塞(Blocked)5.1 等待阻塞5.2 同步阻塞5.3 其他阻塞第18题-线程生命周期1.线程状态创建就绪运行阻塞死亡2.创建(New)[!NOTE]新创建了一个线程对象。3.就绪(Runnable)[!NOTE]线程对象创建之后,其他对象调用了该对象的start()方法,该线程处于可以运行的线程池中,等待CPU调度。4.运行(Running)

2021-09-11 15:43:04 102

原创 第17题- GC如何判断对象是否可以回收

文章目录第17题- GC如何判断对象是否可以回收1. 可达性分析2.`GC Roos`对象3.回收流程第17题- GC如何判断对象是否可以回收1. 可达性分析[!NOTE]从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GC Roots 没有任何引用链相连时,则证明此对象是不可用的,那么虚拟机就判断是可回收对象。2.GC Roos对象虚拟机栈(栈帧中的本地变量表)中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中JNI(即一般说的Na

2021-09-11 15:27:05 117

原创 规则执行器的设计实现

文章目录规则执行器的设计实现1.使用场景2.规则`dto`3.规则的抽象接口4.规则执行器5.使用规则执行器的设计实现[!NOTE]此规则执行器的设计旨在替代大量的if、else if、else嵌套,对代码进行优化。其他规则以及实体,使用案例中使用的规则类参考完整代码。地址:https://gitee.com/dingwen-gitee/java8-study.git1.使用场景if (条件一){ }if (条件二){ }if (条件三){ }...

2021-09-11 12:09:28 531

原创 多线程基础

文章目录多线程基础1. 基本概念2. 创建线程2.1 继承自`Thread`,重写`run()`方法2.2 实现`Runnable`接口,重写`run()`2.3 实现`Callable`接口,重写`call()`3.案例3.1 多线程3.1.1 继承Thread实现3.1.2 实现Runable接口实现3.2 多线程同步下载网络图片3.3 买票3.4 龟兔赛跑4.线程状态5.常用方法6.线程停止7.线程休眠8.线程礼让9.线程插队10.线程状态11.线程优先级([1,10])12.守护线程13.线程同步

2021-09-08 22:09:58 450 1

原创 gitbook初识

文章目录gitbook初识1.环境要求1.1`node`安装参考1.2 版本检查2. 安装`gitbook-cli`脚手架工具3.基本命令使用3.1 初始化3.1.1 目录结构3.2 启动3.3 构建3.4 示例4. 预览gitbook初识使用gitbook开发电子书,本文主要采用gitbook-cli方式进行讲解。1.环境要求gitbook-cli是基于node环境的脚手架工具,使用之前必须准备好node环境。1.1node安装参考基于M1(arm)架构的Node环境:https:

2021-09-04 18:16:19 168

原创 gitbook出现TypeError: cb.apply is not a function解决办法

执行gitbook -V的时候出现如下错误[root@pes nodejs]# gitbook -VCLI version: 2.3.2Installing GitBook 3.2.3/data/soft/nodejs/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287 if (cb) cb.apply(this, arguments) .

2021-09-04 16:42:11 1497

原创 docker修改镜像名称以及tag版本

docker tag 【镜像ID】【镜像名称】:【tag版本信息】 docker tag 8ef375298394 mysql:v5.7

2021-09-02 21:07:28 10251

原创 更改目录文件所属用户&组

# 查看当前系统用户whomai# 查看用户列表cat /etc/passwd#查看组列表cat /etc/group# 更改文件所属用户&组chown 【用户名】:【组名】 【文件】# 更改目录所属用户&组chown 【用户名】:【组】 【目录】# 更改目录以及子目录所属用户&组chown -R 【用户名】:【组】【目录】...

2021-09-02 17:24:53 211

原创 vi & vim 搜索使用

# 命令模式下/ 【搜索字符串】# 查看下一个匹配n# 查看上一个匹配N# 打开|关闭 高亮 # 临时生效 #打开 set hlsearch # 关闭 set nohlsearch # 永久生效 vim ~/.vimrc #新增加 # 打开 set hlsearch # 关闭 set nohlsearch...

2021-09-01 23:00:24 85

原创 @Deprecared

@Deprecared若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。package demo;/** * annotation deprecated 演示 * * @author dingwen * @date 2021/09/01 */@Deprecatedpublic class AnnotationDeprecatedDemo { public static void

2021-09-01 22:50:52 111

原创 git报错warning: Clone succeeded, but checkout failed

git报错warning: Clone succeeded, but checkout failed参考文章: https://blog.csdn.net/dake1994/article/details/90601092

2021-08-30 21:36:43 578

原创 consoele.log不生效

2021-08-30 21:35:18 45

原创 使用静态代码块实现赋值静态成员变量

文章目录对于集合类型的静态成员变量,应该使用静态代码块赋值,而不是使用集合实现来赋值。//赋值静态成员变量反例private static Map<String, Integer> map = new HashMap<String, Integer>(){ { map.put("Leo",1); map.put("Family-loving",2); map.put("Cold on the out side pass

2021-08-30 21:34:49 994

原创 内存泄露 & 内存溢出

文章目录内存泄露内存溢出内存泄露memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出out of memory,指程序申请内存时,没有足够的内存供申请者使用,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。...

2021-08-30 21:34:25 55

原创 第17题-类加载器

文章目录`BootStrapClassLoader``ExtClassLoader``AppClassLoader`双亲委派好处JDK自带三个类加载器:BootStrapClassLoader ExtClassLoader AppClassLoaderBootStrapClassLoader是顶层类加载器,是ExtClassLoader的父加载器(通过parent属性指定,不是继承关系)。负责加载%JAVA_HOME%lib下的class文件。ExtClassLoader是AppClas

2021-08-30 21:32:15 54

原创 第16题-Java中的异常体系

Java中的所有异常都来自顶级父类Throwable。 Throwable下有两个子类Exception和Error。 Error是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行。 Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常和CheckedException检 查异常。 RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。CheckedException常 常发生在程序编译过程中,会导致程序编译不通过。..

2021-08-30 21:31:49 62

原创 第15题-什么是字节码?采用字节码的好处是什么?

文章目录Java中的编译器和解释器采用字节码的好处Java中的编译器和解释器Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器 在任何平台上都提供给编译程序一个的共同的接口。 编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展名为 .class的文件),它不 面向任何特定的处理器,只面向虚拟机。 每一种平台的解释器是不同的,但是实现的虚拟机是相同的。

2021-08-30 21:31:27 98

原创 第14题-ConcurrentHashMap

数组 + 链表 + 红黑树,synchronized + CAS。Node的val和next都用volatile修饰,保证可见性。查找,替换,赋值操作都使用CAS。锁链表的head节点,不影响其他元素的读写,锁粒度更细,效率更高,扩容时,阻塞所有的读写 操作、并发扩容。读操作无锁,写操作使用乐观锁,乐观锁不能保证数据安全的情况下如数组扩容时使用synchronized。...

2021-08-30 21:30:34 58

原创 类加载器-Java

文章目录1.加载过程2.类的加载3.连接3.1 验证3.2 准备3.3解析4.初始化5.类加载器5.1 分类5.2 根类加载器(Bootrap)5.2 扩展类加载器(Extension)5.3 系统类加载器(System)5.4 总结6.双亲委派6.1 实用双亲委派的好处7.ClassLoader7.1 `loadClass(String name, boolean resolve)`7.2 `findClass(String name)`7.3 `defineClass(String name, byte

2021-08-29 16:50:36 179

原创 第13题-HashMap和HashTable的区别

文章目录区别原理底层实现都是数组+链表+红黑树。区别HashMap线程不安全HashTable的方法都被synchronized修饰,线程安全(全局锁)HashMap允许key value为空,HasTable不允许原理jdk8开始链表高度到8、数组长度超过64,链表转变为红黑树,元素以内部类Node节点存在。计算key的hash值,二次hash然后对数组长度取模,对应到数组下标, 如果没有产生hash冲突(下标位置没有元素),则直接创建Node存入数组, 如果产生hash冲突,先进

2021-08-28 16:19:45 86

原创 第12题-ArrayList和LinkedList的区别

文章目录`ArrayList`扩容插入`LinkedList`总结ArrayList基于动态数组实现。在内存中是连续的内存空间,适合下标访问(随机访问)(数组中存储的是同一类型的数据,长度固定,方便实现下标访问)。扩容因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组。插入如果不是尾部插入数据还会 涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能。LinkedList基于链表实现。在内存中是不连续的内存空间,维护

2021-08-28 15:50:27 78

原创 第11题- List和Set的区别

文章目录`List``Set`List基于数组实现,有序,安装对象进入的顺序保存对象,可重复,允许多个null对象。可以使用Interator和for遍历。Set基于散列算法和数组实现(参考:HashMap)。无序,不可重复,只能有一个null对象,只能使用Interator遍历。...

2021-08-28 15:23:56 60

原创 第10题-接口与抽象类的区别

文章目录异同设计目的抽象类接口总结异同抽象类可以存在普通成员函数,而接口中只能存在抽象方法抽象类中的成员变量可以是多种类型的,二接口中成员变量只能是public static final类型只能继承一个抽象类,而接口可以有多个实现设计目的抽象类抽象类等设计目的是代码复用。当不同的类具有相同的行为切实现方式一致时,可以让这些类派生出一个抽象类,通用的行为交由抽象类实现,子类无需实现。抽象类本质是对类的抽象,表达的是是的关系。抽象类包含并实现子类的通用属性。将子类存在的差异化的特性 进行抽象

2021-08-28 15:05:41 128

原创 第9题- hashCode() 与 equals().md

文章目录`hash``hashCode()`分析`HashSet`检查重复hashhash哈希,也称为散列。基本原理是把任意长度的输入通过一定的映射规则转换为固定长度的输出。映射规则就是对应的哈希算法。由于输出空间值小于输入空间值,根据“抽屉原理”一定会存在不同的输入转换为相同的输出的情况。作为一个好的哈希算法需要做到让这种冲突发生的几率尽可能小。hashCode()hashCode()方法来自Object,Java中的任何类都有该方法。作用是获取哈希码(散列码)。返回值哈希码是一个int整数

2021-08-28 14:37:08 61

原创 第8题-重载和重写的区别

文章目录重载重写重载发生在同一个类中,方法名相同,参数类型、个数、顺序不同构成方法重载(发生在编译时)。注意:方法返回值和访问修饰符不构成重载。重写发生在父子类中,方法名、参数列表必须相同,返回值的范围小于等于父类,抛出异常的范围小于等于父类,访问修饰符大于等于父类。如果父类方法是private修饰则子类不能重写该方法。...

2021-08-28 12:28:50 95

原创 第7题String & StringBuffer & StringBuilder

文章目录使用原则String是final修饰的,不可变,每次操作都会产生新的对象。StringBuffer和StringBuilder都是在原对象上面操作。StringBuffer的方法都加了synchronized修饰是线程安全的,而StringBuilder是线程非安全的。使用原则字符串无需频繁改变使用String,在字符串需要频繁改变的情况下优先使用StringBuilder,在多线程共享变量情况下使用StringBuffer。...

2021-08-28 12:12:33 94

原创 第6题-为什么局部内部类和匿名内部类只能访问局部final变量

内部类和外部类是处于同一个级别的,内部类不会因为定义在方法中就会随着方法的执行完毕就被销毁。这里就会产生问题:当外部类的方法结束时,局部变量就会被销毁了,但是内部类对象可能还存在(只有没有人再引用它时,才会死亡)。这里就出现了一个矛盾:内部类对象访问了一个不存在的变量。为了解决这个问题,就将局部变量复制了一份作为内部类的成员变量,这样当局部变量死亡后,内部类仍可以访问它,实际访问的是局部变量的"copy"。这样就好像延长了局部变量的生命周期将局部变量复制为内部类的成员变量时,必须保证这两个变量是一样的.

2021-08-28 11:50:02 60

空空如也

空空如也

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

TA关注的人

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