自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乃成的博客

回归本质,从零开始的算法世界生活!

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

原创 归并排序的总结和思考

引言归并排序是什么?是建立在归并操作上的一种有效,稳定的排序算法。????不明觉厉~最差的时间复杂度也有O(nlogn)。牛~归并排序跟二分,快速排序一样,也是分治算法。三步走(1)分解成可解的子问题(2)求解子问题(3)合并子问题的解并构成原问题的解。归并排序的粗略概括将一段序列不断的迭代划分成两个区间,直到子区间为空或者只剩一个元素。那么也就意味着所有子区间都成了有序的序列。(没有元素和一个元素算作序列有序)然后不断将已有序的子序列递归合并,最终得到完全有序的序列;聪明的小

2021-04-19 19:18:36 532 5

原创 快速排序的总结与思考

引言快速排序是什么?快速的排序!???? 平均时间复杂度O(nlogn)快速排序跟二分和归并排序一样,也属于分治算法。而分治算法可粗略分成三步。(1)分解成可解的子问题(2)求解子问题(3)合并子问题的解并构成原问题的解。快速排序的粗略概括随机从一个待排序区间取一个数x,将区间分成两个区间,第一区间所有数>= x ,第二区间所有数 <= x 。然后两个区间各自再随机从自身区间取一个数x,将其自身再次分成两个区间,同样的,其子第一区间所有数>= x ,子第二区间所有

2021-04-19 18:45:52 369 5

原创 二分算法的总结与思考

引言笼统概括:二分算法把一个区间对半分成两部分,按某种性质每次只取一部分。然后将取的那部分再次对半分,如此往复。直到区间只剩一个数。细心的小伙伴会对上面的加粗的字有所警觉。对半分 ? 整数能每次都对半分吗?奇数怎么办?这涉及向上向下取整。某种性质 ?例如 ">=x" 为一种性质,这样把区间分成 "<x" 和 ">=x" 。只剩一个数 ? 浮点数怎么可能只剩一个数?这涉及精度问题。整数二分(~手动音效)真正二分之前,其实按照题目的具体意思,已经对区间按性质划成了两部分。事实上

2021-04-19 16:57:00 426 4

原创 JAVA8-HashMap-源码探究

HashMap ,是一种散列表,用于存储 key-value 键值对的数据结构,一般翻译为“哈希表”,提供平均时间复杂度为 O(1)的、基于 key 级别的 get/put 等操作。目录标题一. 存在的原因(简单理解).标题二. HashMap中的Hash是什么标题三. HashMap的继承实现和底层结构标题四. HashMap核心属性分析标题五. 4个构造函数标题六. put方法标题七. resize()方法标题八. get() 方法标题九. remove()方法标题十. replace()..

2022-01-11 22:52:58 642

原创 [图解]Java Stream流之List<Integer>、Integer[]、int[]相互转换

2022-01-09 12:29:49 548

原创 单例模式(DCL, 静态内部类, 枚举)

双重检查锁(double checked locking)只在第一次调用getInstance时, 进行同步加锁public class DclSingleton{ private DclSingleton(){} private static volatile DclSingleton instance = null; public static DclSingleton getInstance(){ if (instance == null){ synchronized(DclSi

2021-09-23 12:27:25 262 2

原创 JVM笔记

0.java程序的执行过程1.JVM的位置2.JVM的体系结构a.简图b.详细图引用都在栈中, 具体对象在堆中3. 类加载器和双亲委派机制JVM 提供了3种类加载器启动类加载器:负责加载 Java_HOME/lib 目录中的类库扩展类加载器:负责加载 Java_HOME/lib/ext 目录中的类库应用程序类加载器:负责加载用户路径(classpath)上的类库 既然有这么多加载器,加载一个类时使用的是哪个类加载器?如果不同类加载器有同名类,以哪个为准,如何避免类名冲突?双亲

2021-08-18 18:19:33 600 5

原创 count(字段名),count(*),count(1)区别?? sql相关知识点和易错点, 持续更新

SQL易错点count(字段名):会忽略该列中所有的null值count(*):不会忽略null值,本质计算的是行数count(1):不会忽略null值,本质计算的是行数当字段名默认非空, default not nullcount(字段名) = count(*) = count(1) = 行数avg(字段名)会忽略null值, 即只计算有非零数字的当字段名默认空, default nullsum(字段名) / count(字段名) = avg(字段名)...

2021-08-17 19:22:22 337

原创 xx商城项目(软件+相关问题)持续更新

笔记的目的将遇到的问题和解决的方案列出, 供各位参考, 少走弯路.人人为我, 我为人人,开源精神✌.笔记的目的全套文档、视频、软件视频+文档 下载链接提取码: a9ka单独软件集合Vagrant: goVirtualBox: goPowerDesigner: go其他软件下载连接 go链接包含内容:①alipay.trade.page.pay-JAVA-UTF-8.zip②Navicate客户端.zip③redis-desktop-manager-0.8.8.3

2021-08-15 19:12:46 1247 3

原创 Redis笔记

NoSQLNoSQL = Not Only Sql (不仅仅是sql)泛指非关系型数据库, Redis就是NoSQL特点解耦!方便扩展!(数据之间没有关系,很好扩展!)大数据量高性能!(Redis 一秒写8万次,读取11万次)数据类型是多样型的!(不需要实现设计数据库!随取随用!)传统RDBMS 和 NoSQL对比传统的 RDBMS结构化组织SQL数据和关系都存在单独的表中操作数据,数据定义语言严格的一致性基础的事务…NoSql不仅仅是数据没有

2021-08-14 22:29:25 77

原创 算法:LRU缓存机制-stl极简+手写双向链表

原题stl极简 O(1)class LRUCache {private: typedef pair<int, int> PII; int cap;//容量 list<PII> li;//双向链表, 存储key-val结点, 排在前面表示最近使用 unordered_map<int, list<PII>::iterator> map;//快速判断存不存在这个结点,public: LRUCache(int capac

2021-08-13 14:36:31 126

原创 Linux笔记

环境搭建1.安装CentOS7.72.购买云服务器购买服务器.购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了下载 xShell 工具,进行远程连接使用!ps: 打开端口,需要在阿里云的安全组面板中开启对应的出入规则开机一般来说,用户的登录方式有三种:命令行登录ssh登录图形界面登录关机在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。sync # 将数据由

2021-08-11 23:02:39 231

原创 Git笔记

相关概念版本控制版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。版本控制的作用实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量并行开发、提高开发效率跟踪记录整个软件的开发过程减轻开发人员的负担,节省时间,同时降低人为错误总结:版本控制是用于管理多人协同开发项目的技术常见的版本控制工具Git SVN(Sub

2021-08-08 18:32:06 92

原创 Mybatis常用配置文件o_0

文章目录mybatis-config.xmldb.propertiescom.kuang.utils.MybatisUtilsmaven配置com.kuang.dao.UserMappercom/kuang/dao/UserMapper.xml带结果集映射的UserMap.xml工程结构mybatis-config.xmlmybatis核心配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration

2021-07-28 23:13:55 109 2

原创 java泛型复习笔记

概念Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。用处类型安全消除了强制类型的转换常见类型E - Element (在集合中使用,因为集合中存放的是元素)T - Type(表示Java 类,包括基本的类和我们自定义的类)K - Key(表示键,比如Map中的key)V - Value(表示值)N - Number

2021-07-25 23:22:05 418 2

原创 JDBC复习笔记

JavaWeb技术概览第1章:JDBC概述JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。在Java中,数据库存取技术可分为如下几类:JDBC直接访问数据库JDO (Java Data Object )技术第三方O/R工具,如Hibernate,

2021-07-24 16:56:00 171 5

原创 java 重难点-反射

笔记不易,点赞留香????更好的阅读体验(含代码)反射的概述关于反射的理解Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个 类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。框架 =

2021-06-17 11:25:46 168 12

原创 java 网络编程

笔记不易,点赞留香哈????更好的阅读体验一. InetAddress类实现网络通信需要解决的两个问题如何准确地定位网络上一台或多台主机;定位主机上的特定的应用找到主机后如何可靠高效地进行数据传输网络通信的两个要素对应问题一:IP和端口号对应问题二:提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)通信要素一:IP和端口号IP的理解IP:唯一的标识 Internet 上的计算机(通信实体)在Java中使用InetAddress类代表IPIP分类:IP

2021-06-15 20:25:29 136 2

原创 Java IO流

笔记不易,点赞留香????更好的阅读体验一. File类的使用理解a. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)b. File类声明在java.io包下c. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。d. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的”终点”.File的实例化a. File(String fileP

2021-06-14 22:26:25 1229 4

原创 java 集合Collection

更好的阅读体验一. 集合框架的概述数组,集合都是对多个数据进行存储操作的结构,简称Java容器。a. 说明:存储是内存层面的存储,不是持久化的存储b. 数组一旦定义,长度和类型就固定。集合框架a. Collection接口:单列集合,用来存储一个一个的对象ⅰ. List接口:存储有序的,可重复的数据—>"动态"数组ArrayList : 作为List接口的主要实现类;线程不安全,效率高;底层用Object[]存储a. 开始创建长度为10的Object[] ,不够后扩容,默

2021-06-11 10:47:23 102 5

原创 Java面试题:ArrayList、LinkedList和Vector的异同?

相同点三个类都实现了List接口,存储数据的特点相同:存储有序的、可重复的数据不同点ArrayList : 作为List接口的主要实现类;线程不安全,效率高;底层用Object[]存储LinkedList:对频繁的删除、插入操作,使用此类必ArrayList效率高;底层使用双向链表存储Vector:作为List接口的古老实现类;线程安全,效率低;底层用Object[]存储...

2021-06-09 15:05:54 141 2

原创 java 枚举类与注解

一. 枚举类的使用理解:类的对象有限个,明确的。定义一组常量,强烈建议使用枚举类若枚举类只有一个对象,可以作为单例模式的实现方法jdk5.0之前,自定义枚举类a. jdk5.0,使用enum关键字定义枚举类a. Enum类中常用方法a. toString(): 返回当前枚举类对象的常量名称b. values():返回枚举类的对象数组c. valueOf(String objName):返回枚举类中对象名为objName的对象,没有找到抛异常使用enum关键

2021-06-08 15:14:43 117

原创 java 中对象的排序comparable和comparator

说明:java中的对象,正常情况下,只能使用 == 和 != 。而不能使用 > 或 < 。但是开发需求需要用到,如排序。那如何实现呢?实现Comparable接口或实现Comparator接口。Comparable接口的使用-自然排序a. String类、包装类等实现了Comparable接口,重写了compareTo方法,进行了从小到大的排列b. 重写compareTo(obj)规则i. 如果当前对象this 大于 形参对象obj,返回正整数ii. 如果当前对象this 等于 .

2021-06-07 20:58:13 155

原创 java中DateTime常用方法

1.System类中的currentTimeMillis() 获得时间戳时间戳:指格林威治时间1970年01月01日00时00分00秒 (北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数2.java.util.Date类|— java.sql.Date类构造器的使用创建当前对应当前时间的Date对象创建指导毫秒数的Date对象·两个方法的使用toString(): 显示当前的 年月日 时分秒getTime(): 获取当前Date对象的时间戳Date d2 = n

2021-06-07 18:57:20 6546 6

原创 String、StringBuffer和StrinBuilder的异同与常用方法

不同点String:不可变的字符序列StringBuffer:可变的字符序列;线程安全,效率低StringBuilder:可变的字符序列;jdk5.0引入,线程不安全,效率高相同点底层使用char[] 存储

2021-06-06 16:23:23 138

原创 [Java] throw 和 throws 的区别

throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内。throws 属于异常处理的一种方式,声明在方法的生命处。

2021-05-30 17:21:26 57

原创 [JAVA] 关于多态性的理解

1.实现代码的通用性Object类中定义的 public boolean equals(Object obj)JDBC:使用Java程序操作(获取数据库连接,增删改查(CRUD))数据库(Mysql, Oracal,DB2,SQL Server)2.抽象类和接口的使用也体现多态性(抽象类和接口不能实例化)ps: 多态是运行时行为...

2021-05-27 20:13:36 57

原创 [JAVA] == 和 equals() 的区别

1. == 运算符== 是个运算符== 适用于基本数据类型变量和引用数据类型变量基本数据类型变量=>比较数值大小引用数据类型变量=>比较地址值2. equals()方法equals()是个方法equals()只适用于引用数据类型变量eqauls()又分 没重写的 和 重写的没重写的 会调用父类Object的equals()方法 => 比较 地址值 就是 == 运算符重写的 像String、Date、File 、包装类等 =&gt

2021-05-26 10:26:16 55

原创 [JAVA]重载与重写的区别

相同点: 名词中都有一个 “重” 字。不同点:重写是子类继承父类后,可以对父类中同名同参数的方法进行覆盖操作重载是同一个类中同名的方法有多个,它们的参数列表不同(顺序,个数)也就是说重载实现于一个类中;重写实现于子类中...

2021-05-24 22:49:19 63

原创 重读古文有感

卖油翁原文陈康肃公善射,当世无双 ,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之久而不去。见其发矢十中八九,但微颔之。  康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“无他,但手熟尔。”康肃忿然曰:“尔安敢轻吾射!”翁曰:“以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:“我亦无他,惟手熟尔。”康肃笑而遣之。读后感想如今我再读这篇文章,生出比以往更深的感触。早前,我的更多关注点在于不同身份地位的人之间的矛盾冲突,情节处理,情感表达,性格展现,字词

2021-05-02 17:13:03 172

原创 三种并查集-思考与总结

概念并查集:每个集合用一棵树来表示,树根的编号就是整个集合的编号。朴素并查集一般有一个变量,为p[N]有三个基本操作,为初始化,查找根结点find(u),合并集合有三个共同操作,分别为查找父结点,查询关系,判断根结点第零步-名词解释p[N] p[]存储每个结点的父结点,p[x]表示x的父结点点或根结点第一步-三个基本操作初始化// 初始化,假定结点编号是1~nfor (int i = 1; i <= n; i ++ ) p[i] = i; // 每个结点的根结点(或父节点)都是自

2021-04-26 23:12:08 137

原创 堆的基本版和加强版(手撕堆)

堆的基本版基本堆有两个变量,分别为h[N], siz两个基本操作,分别为down(u), up(u)四个细节操作,分别为 初始化,插入值,求最值,删最值第零步-名词解释h[i] 表示第i个结点存储的值,i从1开始,2i是左子节点,2i + 1是右子节点siz 既表示堆里存储的元素个数,又表示最后一个结点的下标第二步-基本操作down(u)void down(int u){ int t = u;//t存储三个结点中存在的最小的结点的下标,初始化为当前结点u if (u *

2021-04-26 22:19:39 219

原创 栈与队列的模拟(手撕栈与队列)

为什么要栈与队列的模拟?虽然有stl,但模拟写的会更快!既然追求刺激,那就贯彻到底咯~栈栈一般有两个变量,分别为stk[N], tt;栈一般有五个操作,分别为初始化,尾插入, 尾弹出, 判栈空, 取栈顶。第零步-变量解释stk[N] 存储栈中元素,用时再初始化tt 栈顶指针,初始化为0第一步-初始化tt = 0; //作全局变量就不用初始化第二步-尾插入stk[ ++ tt] = x;第三步-尾弹出tt -- ;第四步-判栈空if (tt > 0) no emp

2021-04-26 16:25:24 122 2

原创 静态单链表与静态双链表(手撕链表)

为什么要用静态单双链表?之所以要静态单链表与静态双链表,是因为,相对而言用链表创建速度慢,而且,用链表书写也麻烦。静态单链表一般有四个变量,分别为head, e[N], ne[N], idx一般有五个操作,分别为初始化,头插,任意插,头删,任意删。第零步-变量解释head 表示头指针,指向头节点,存储头结点的下标,初始化为-1.e[i] 表示第 i 个结点存储的值 。用时再初始化。ne[i] 表示第 i 个结点指向的下一个结点,存储下一个结点的下标 。用时再初始化idx 表示下一个可以

2021-04-26 15:56:06 403

原创 蓝桥杯省赛2020年第十一届C/C++ A组第二场编程题待更新

第六题:成绩统计题目描述小蓝给学生们组织了一场考试,卷面总分为100 分,每个学生的得分都是一个0 到100 的整数。请计算这次考试的最高分、最低分和平均分。【输入格式】 输入的第一行包含一个整数n,表示考试人数。 接下来n 行,每行包含一个0 至100 的整数,表示一个学生的得分。【输出格式】 输出三行。 第一行包含一个整数,表示最高分。 第二行包含一个整数,表示最低分。第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。【样例输入】 7 80 92 56 74 88 99 10 【样

2021-04-04 16:40:35 569

原创 二分查找算法模板(理解和详细注释)

之前一直学得不明不白,似懂非懂,如今算是懂了大概。首先了解二分查找的定义,使用原因,使用要求和目标有助于高效掌握这个算法。什么是二分查找?二分查找也称折半查找(Binary Search),又分为整数二分和浮点二分为什么使用二分查找?效率比线性查找高。什么时候可以二分查找?1.必须采用顺序存储结构。 2.必须按关键字大小有序排列。二分查找查找的是什么?(重要)在有序区间里找到第一个大于等于目标值的值,或最后一个大于等于目标值的值前者寻找左边界(即寻找符合性质的第一个点)后者寻找右边界

2021-04-01 21:29:10 366

原创 2020年蓝桥杯第十一届省赛C/C++ A组第二场填空题

前面两道题暴力搜索第三题 蛇形填数思路第一行第一列 1+4*0第二行第二列 1+4*1第三行第三列 1+4*1+4*2...第n行第n列 1+4*1+4*2+...+4*(n-1)代码int main(){ int sum=1; for(int i=0; i<20; i++){ sum += 4*i; } cout<< sum << endl; return 0; } 第四题:7段码题目描述小蓝要用七段码数码管来表示一种特殊的文字。

2021-03-29 11:44:07 286 2

原创 并查集的路径压缩(迭代版本与非迭代版本)

非迭代版本int find(int x){ int a = x; while(x != parent(x)){ x = parent(x); } 路径压缩 while(a!=parent(a)){ int z = a; a = parent(a); parent(z)=x; } return x;}迭代版本int find(x){ if(x!=parent(x)) parent(x) = find(parent(x)); //如果本身不是根结点,那么本身的根结点

2021-03-28 16:27:38 332

原创 2020年7月5日第十一届蓝桥杯省赛真题C/C++ A组第一场 编程题

第六题:解码题目描述小明有一串很长的英文字母,可能包含大写和小写。在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。例如,连续的 5 个 a,即 aaaaa,小明可以简写成 a5(也可能简写成 a4a、aa3a 等)。对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。为了方便表达,小明不会将连续的超过 9 个相同的字符写成简写的形式。现在给出简写后的字符串,请帮助小明还原成原来的串。输入格式 输

2021-03-26 19:05:04 1138

原创 完美平方数

第五题:完美平方数题目描述如果整个整数X本身是完全平方数,同时它的每一位数字也都是完全平方数,我们就称X是完美平方数。 前几个完美平方数是0、1、4、9、100、144… 请你计算第 2020 个完美平方数是多少?思路强行暴力,会超出数据范围。要用大整数来运算。运算时间爆炸。。非暴力的方法还不知晓。????代码#include <cstdio>#include <cstring>struct bign{ int d[1000]; int len;

2021-03-26 15:02:37 2579

空空如也

空空如也

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

TA关注的人

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