- 博客(60)
- 收藏
- 关注
原创 PostgreSQL-04-入门篇-连接多张表
表别名在执行查询期间临时为表分配新名称。在此语法中,为table_name分配了一个别名alias_name。与列别名类似,AS 关键字是可选的。在关系数据库中,数据通常分布在多个表中。为了查询完整的数据,经常需要从多个表中查询数据。假设有两个表 A 和 B。表 A 有一个列pka,其值与表 B 的fka列中的值匹配。要从两个表中查询数据,请在SELECT语句中使用INNER JOINSELECTpka,c1,pkb,c2FROMA要将表A与表B首先,指定要在SELECT。
2024-08-20 18:20:52
1066
原创 设计模式-结构型-10-享元模式
1)享元模式(Flyweight Pattern)也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象2)常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个3)享元模式能够解决重复对象的内存浪费的问题。当系统中有大量相似对象,需要缓冲池时,不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。
2024-08-20 08:07:35
688
原创 PostgreSQL-03-入门篇-过滤数据
SELECT语句返回表中一列或多列的所有行。要选择满足指定条件的行,可以使用WHERE子句。PostgreSQL 的WHEREWHERE子句出现在SELECT语句的FROM子句之后。WHERE子句使用condition来过滤从SELECT列表子句返回的行。condition的计算结果必须为真、假或未知。它可以是布尔表达式或使用AND和OR运算符的布尔表达式的组合。该查询仅返回满足WHERE子句中condition的行。换句话说,只有导致condition计算结果为 true 的行才会包含在结果集中。
2024-08-16 14:18:05
678
原创 PostgreSQL-02-入门篇-查询数据
使用数据库时最常见的任务之一是使用SELECT语句从表中查询数据。SELECT语句是 PostgreSQL 中最复杂的语句之一。它有许多子句,您可以使用它们来形成灵活的查询。由于其复杂性,我们将其分解为许多简短且易于理解的教程,以便您可以更快地了解每个子句。SELECT使用DISTINCT运算符选择不同的行。使用ORDER BY子句对行进行排序。使用WHERE子句过滤行。使用LIMIT或FETCH子句从表中选择行的子集。使用GROUP BY子句将行分组。使用HAVING子句过滤分组。
2024-08-16 08:03:28
846
原创 PostgreSQL-01-入门篇-简介
相比之下,PostgreSQL 采用了类似于 MIT 的许可协议,允许开发人员在开源或闭源产品中自由使用,这使得 PostgreSQL 成为了一种极具吸引力的选择。1990 年 6 月发布的版本 2 包含了重新设计的规则系统。Postgres95 的开发重点在于识别和解决后端代码的问题,而 PostgreSQL 的开发则转向了更具争议性的特性和功能,尽管这两个方面的工作同时进行。随着外部用户社区的增长,代码维护的时间成本增加,为了减少支持负担,伯克利的 POSTGRES 项目在版本 4.2 时正式终止。
2024-08-06 15:31:24
891
原创 java-数据结构与算法-02-数据结构-07-优先队列
kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…队列是一种先进先出的结构,但是有些时候,要操作的数据带有优先级,一般出队时,优先级较高的元素先出队,这种数据结构就叫做优先级队列。比如:你在打音游的时候,你的朋友给你打了个电话,这种时候,就应该优先处理电话,然后再来继续打音游,此时,电话就是优先级较高的。给你一个链表数组,每个链表都已经按升序排列。
2024-07-30 21:00:00
1705
原创 java-数据结构与算法-02-数据结构-06-双端队列
双端队列、队列、栈对比Java 中 LinkedList 即为典型双端队列实现,不过它同时实现了 Queue 接口,也提供了栈的 push pop 等方法不同语言,操作双端队列的方法命名有所不同,参见下表接口定义/*** 双端队列接口* 双端队列是一种可以在其两端进行添加和移除元素的线性数据结构。* 该接口定义了在队列的首端和尾端进行操作的方法。* @param <E> 队列中元素的类型*/ /*** 双端队列接口* @param <E> 队列中元素类型/**
2024-07-29 17:28:49
638
原创 windows下定时执行bat脚本删除无用文件和文件夹
整体来说,这段代码的作用是在SrcDir目录下(及其所有子目录),查找所有以2020开头且最后修改时间超过30天的文件和目录,并将它们删除。注意:应为在常规中选中了不管用户是否登录都要运行(W),所以在确定时需要输入用户密码,如果不选此项则不会弹出用户账户窗口。命令来遍历指定目录下的文件和子目录,并根据条件执行删除操作。在操作页签中通过新建窗口来选择与设置执行脚本的路径,如下图。这里设置执行一次,可根据实际使用场景来设置。输入用户密码后,点击确定,如下。设置完成后点击确定,如下。
2024-07-29 11:31:38
1064
原创 设计模式-结构型-09-外观模式
外观模式(Facade),也叫过程模式(或门面模式)外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节,这个接口使得这一子系统更加容易使用原理类图原理类图的说明(外观模式的角色)● 1)外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子系统对象● 2)调用者(Client):外观接口的调用者。
2024-07-26 11:15:23
874
1
原创 java-数据结构与算法-02-数据结构-05-栈
计算机科学中,stack 是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为栈顶,另一端不能操作数据的称之为栈底,就如同生活中的一摞书栈是一种特殊的线性表,只能在一端进行操作往栈中添加元素的操作,一般叫做 push,入栈从栈中移除元素的操作,一般叫做 pop,出栈(只能移除栈顶元素,也叫做:弹出栈顶元素)后进先出的原则,Last In First Out,LIFO先提供一个栈接口/*** 向栈顶压入元素* @param value 待压入值。
2024-07-25 17:51:23
302
原创 java-数据结构与算法-02-数据结构-04-队列
计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为尾,移除的一端称为头,就如同生活中的排队买商品先定义一个简化的队列接口/*** 向队列尾插入值* @param value 待插入值* @return 插入成功返回 true, 插入失败返回 false/*** 从对列头获取值, 并移除* @return 如果队列非空返回对头值, 否则返回 null/*** 从对列头获取值, 不移除。
2024-07-16 11:33:29
766
原创 java-数据结构与算法-02-数据结构-03-递归
定义计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集return;自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归内层函数调用(子集处理)完成,外层函数才能算调用完成原理假设链表中有 3 个节点,value 分别为 1,2,3,以上代码的执行流程就类似于下面的伪码return;思路确定能否使用递归求解。
2024-07-08 15:46:42
767
转载 JVM笔记01-JVM 与 Java 体系结构
作为 Java 工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接 OOM想解决线上 JVM GC 问题,但却无从下手新项目上线,对各种 JVM 参数设置一脸茫然,直接默认吧然后就 JJ 了每次面试之前都要重新背一遍 JVM 的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优 VM 参数,如何解决 GC、OOM 等问题,一脸懵逼。
2024-07-03 22:30:00
34
原创 设计模式-结构型-08-组合模式
1)组合模式(Composite Pattern),又叫部分整体模式。它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系2)组合模式依据树形结构来组合对象,用来表示部分以及整体层次3)这种类型的设计模式属于结构型模式4)组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象对原理结构图的说明一即组合模式的角色及职责1)Component:这是组合中对象声明接口。在适当情况下,实现所有类共有的接口默认行为,用于访问和管理。
2024-07-03 11:44:05
1260
原创 docker容器时间和主机时间不一致(时区问题)
Docker容器内默认使用UTC时间(标准时间),我们一般使用CST时间(东八区时间)。首先先查看容器内时间。
2024-07-02 16:48:19
306
原创 设计模式-结构型-07-装饰者模式
1)装饰者模式:动态地将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式体现了开闭原则(OCP)2)这里提到的动态的将新功能附加到对象和 OCP 原则,在后面的应用实例上会以代码的形式体现,请同学们注意体会原理。
2024-06-28 20:00:00
755
原创 java-数据结构与算法-02-数据结构-02-链表
定义在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续可以分类为单向链表,每个元素只知道其下一个元素是谁双向链表,每个元素知道其上一个元素和下一个元素循环链表,通常的链表尾节点 tail 指向的都是 null,而循环链表的 tail 指向的是头节点 head链表内还有一种特殊的节点称为哨兵(Sentinel)节点,也叫做哑元( Dummy)节点,它不存储数据,通常用作头尾,用来简化边界判断,如下图所示随机访问性能根据 index 查找,时间复杂度On。
2024-06-27 11:28:31
704
原创 数仓笔记001
数据仓库诞生原因历史数据积存企业数据分析需要历史数据积存历史数据使用频率低,堆积在业务库中,导致性能下降企业数据分析需要各个部门自己建立独立的数据抽取系统,导致数据不一致数据仓库(Data Warehouse,DW)由数据仓库之父比尔·恩门(Bill Inmon)提出数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能数据仓库特点。
2024-06-26 18:00:16
958
原创 设计模式-结构型-06-桥接模式
桥接模式(Bridge模式):一种结构型设计模式:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展举个例子说明下:对于手机来说,我们可以根据手机品牌分类,也可以根据手机类型来分类。
2024-06-18 10:24:59
870
原创 java-数据结构与算法-02-数据结构-01-数组
定义在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识知道了数组的数据起始地址BaseAddressBaseAddress,就可以由公式BaseAddressi∗sizeBaseAddressi∗size计算出索引iii元素的地址iii即索引,在 Java、C 等语言都是从 0 开始sizesizesize是每个元素占用字节,例如intintin。
2024-06-17 15:04:27
769
原创 基础-02-数据通信基础
光纤利用光在玻璃或塑料纤维中的全反射原理而达成的光传导工具。光在光纤中传导损耗很低,适合用作长距离的信息传递。光纤特点:重量轻、体积小、传输远(衰减小)、容量大、抗电磁干扰光缆光缆一般由多根光纤和塑料保护套管及塑料外皮构成。通常看到工人敷设的黑色线缆叫做光缆,里面包含了多组光纤。常用数字化技术就是脉冲编码调制技术(Pulse Code Modulation,PCM),简称脉码调制。PCM数字化过程3个步骤:采样、量化和编码。
2024-06-14 21:45:00
502
原创 java-数据结构与算法-01-初识算法
定义在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算不正式的说,算法就是任何定义优良的计算过程:接收一些值作为输入,在有限的时间内,产生一些值作为输出。定义在计算机科学领域,数据结构是一种数据组织、管理和存储格式,通常被选择用来高效访问数据数据结构是一种存储和组织数据的方式,旨在便于访问和修改可以说,程序 = 数据结构 + 算法,它们是每一位程序员的基本功,下面我们通过对一个非常著名的二分查找算法的讲解来认识一下算法。
2024-06-13 22:00:00
1002
原创 设计模式-结构型-05-适配器模式
1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)2)适配器模式属于结构型模式3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。
2024-06-13 17:56:58
747
原创 JUnit 5学习笔记
JUnit 5 中的前置条件(assumptions【假设】)类似于断言,不同之处在于不满足的断言会使得测试方法失败,而不满足的前置条件只会使得测试方法的执行终止。前置条件可以看成是测试方法执行的前提,当该前提不满足时,就没有继续执行的必要。利用@ValueSource等注解,指定入参,我们将可以使用不同的参数进行多次单元测试,而不需要每新增一个参数就新增一个单元测试,省去了很多冗余代码。参数化测试是JUnit5很重要的一个新特性,它使得用不同的参数多次运行测试成为了可能,也为我们的单元测试带来许多便利。
2024-06-13 11:47:00
635
原创 基础-01-计算机网络概论
深入理解:数据链路层与传输层的区别,比如有3个节点是123,1到3是端到端,可靠性通过传输层协议保障,1到2或者2到3是物理链路,可靠性通过数据链路层保障,那么这这题明显问的是物理链路上的可靠性。【解析】掌握几种数据封装的命名,传输层的数据单立叫数据段或数据报(简称报文)。【解析】掌握每个层次的功能,传输层实现端到端的应答、分组排序和流量控制功能。在OSI参考模型中,实现端到端的应答、分组排序和流量控制功能的协议层是()在OSI参考模型中,传输层上传输的数据单位是(13)。按照覆盖范围可以把网络分为。
2024-06-12 15:24:54
1153
原创 MYSQL的(WITH RECURSIVE)递归使用
是 SQL 中的一种高级查询结构,用于执行递归查询。递归查询是一种特殊的查询方式,它能够通过反复应用一个规则或算法,逐步构建出一个结果集,常用于解决层次化或树状数据结构的遍历问题。MySQL是一种基于递归思想的MySQL查询方式,可以实现对数据的递归查询和处理,应用广泛。在使用时需要注意递归的层数和数据量大小等因素。通过学习本文,相信大家已经对MySQL有了深入的理解,并能够熟练运用该功能。
2024-06-12 10:22:23
1128
原创 设计模式-创建型-04-建造者模式
1)建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象2)建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
2024-06-12 08:46:50
1185
原创 JUC 笔记 10
线程安全集合类可以分为三大类:遗留的线程安全集合遗留的线程安全集合如 Hashtable , Vector使用 Collections 装饰的线程安全集合使用 Collections 装饰的线程安全集合,如:JUC下的安全集合: Blocking、CopyOnWrite、Concurrent重点介绍 java.util.concurrent.* 下的线程安全集合类,可以发现它们有规律,里面包含三类关键词: Blocking、CopyOnWrite、Concurrent。
2024-06-11 15:13:56
1028
原创 设计模式-创建型-03-原型模式
1)原型模式(Prototype 模式)是指:用原型实例指定创建对象种类,并通过拷贝原型创建新的对象2)原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节3)工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()4)形象的理解:孙大圣拔出猴毛,变出其它孙大圣。
2024-06-11 08:30:50
1005
原创 设计模式-创建型-02-工厂模式
通过上述例子,帮助我们体会到两者各自适用的使用场景,不难发现工厂方法模式和抽象工厂模式之间的区别生产的产品种类只有一种,但是该产品种类会不断地扩展新的具体产品,同时需要添加对应的具体工厂,这时使用工厂方法模式更好生产的产品种类会有多种,种类基本固定下来了,不会轻易更改或添加,但是每个种类的具体产品会不断扩展,并在具体工厂中形成新的组合,这时使用抽象工厂模式更好试想一下,如果对上述种菜和做手机使用的工厂模式进行交换,即种菜使用抽象工厂模式、做手机使用工厂方法模式又会怎样?
2024-06-06 11:18:36
708
原创 JUC 笔记 9
ˈsaɪklɪk ˈbæriɚ] 循环栅栏,用来进行线程协作,等待线程满足某个计数。构造时设置『计数个数』,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足『计数个数』时,继续执行.其中构造参数用来初始化等待计数值,await() 用来等待计数归零,countDown() 用来让计数减一。这里不用 CountDownLatch;,应该也可以,future#get本来就是阻塞的。用来进行线程同步协作,等待所有线程完成倒计时。可以配合线程池使用,改进如下。
2024-06-06 09:42:06
222
原创 设计模式-创建型-01-单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。
2024-06-05 08:42:59
917
原创 设计模式-00-简介
1)第1层:刚开始学编程不久,听说过什么是设计模式2)第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道3)第3层:学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式挺好用的4)第4层:阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好处5)第5层:代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写了出来1)设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验。
2024-06-04 14:07:03
1145
原创 JUC 笔记 7
1. * AQS 原理1. * AQS(AbstractQueuedSynchronizer) 原理1. 概述全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架AbstractQueuedSynchronizer有一个静态内部类Node,属性有volatile Thread thread;volatile Node prev;volatile Node next;volatile int waitStatus;Node nextWaiter;
2024-05-27 13:35:11
918
原创 RocketMQ 001
在开始搭建 RocketMQ 服务之前,我们先来对它做下简单的了解。RocketMQ 是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。
2024-05-23 09:55:32
925
原创 Docker 003
容器间的互联和通信以及端口映射。容器 IP 变动时候可以通过服务名直接网络通信而不受影响。(类似Eureka,通过服务名直接互相通信,而不是写死IP地址)。容器间的互联和通信以及端口映射。docker中还有一个 --link进行容器网络互联,但是已经被标记为过时的,可能会在将来的版本中移除这个功能。推荐使用自定义网络替换link。新建自定义网络查看网络列表创建容器时,指定加入我们自定义的网络中此时进入tomcat1中,使用ping命令测试连接tomcat2容器名,发现可以正常连通。
2024-05-20 08:48:48
973
原创 Docker 002
当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行期命令,而是将CMD的内容作为参数传递给ENTRYPOINT指令,它们两个组合会变成 “”。类似于CMD命令,但是ENTRYPOINT不会被docker run后面的命令覆盖,这些命令参数会被当做参数送给ENTRYPOINT指令指定的程序。基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板。Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。(一般不修改该配置)
2024-05-17 10:20:55
883
原创 Docker 001
Docker是基于Go语言实现的云开源项目。Docker的主要目标是:Build, Ship and Run Any App, Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。Docker有比虚拟机更少的抽象层:由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker有明显优势。Docker利用的是宿主机
2024-05-11 16:23:25
696
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人