自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Resultful风格代码代码实践

4.资源唯一标识在通过参数传递时使用路径传递传递 urL?id=21(错误) ====> urL/21排序?sort=name 分页?2.使用复数名词 user==> users car ===> cars product ===> products。1.原则 GET 查询 POST 添加 PUI(全字段更新)、PATCH(更新部分字段)更新 DELETE 删除。3.请求和响应时候指定accpect: @RequestBody reponse: @ResponseBody。

2023-07-17 16:50:14 162

原创 Kafka 3.0 基础知识 + 原理 (了解一篇就够)

​ Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。​ 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件流平台

2022-09-05 13:40:01 6579 9

原创 UML类图 - 依赖 泛化 实现 关联 聚合 组合

UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类图中有类、接口、实现、泛化、依赖、组合、聚合等使用UML来建模,常用的工具有 Rational Rose , 也可以使用一些插件来建模在UML系统开发中有三个主要的模型:从用户的角度展示系统的功能,包括用例图。采用对象、属性

2022-06-26 13:46:14 1015

原创 单例设计模式-Java

​ 确保一个类只有一个实例,并提供该实例的全局访问点。单例模式有 3 个特点:单例模式的优点:单例模式的缺点:​ 以下实现中,私有静态变量 s1 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 s1,从而节约资源。​ 这个实现在多线程环境下是不安全的,如果多个线程能够同时进入 ,并且此时 s1 为 null,那么会有多个线程执行 语句,这将导致实例化多次 uniqueInstance。Ⅱ懒汉式-线程安全只需要对 getInstance () 方法加锁,那么在一个时间点只能有一个线

2022-06-23 00:05:57 172

原创 计算机网络-TCP/IP

计算机网络体系大致分为三种,OSI 七层模型、TCP/IP四层模型 和 五层模型源端口和目的端口字段序列号字段​ 序列号:占 32 位。0~ (2^32 - 1)既 0 ~ 4284967295在 TCP 连接中是面向字节流的,所传送的字节流的每一个字节都会按顺序编号。在TCP建立连接之处,每方需要使用随机数产生器产生一个初始序号(ISN)。由于连接双方各自随机产生初始序号,因此一个TCP连接的通信双方的序号是不同的。例如 一个TCP需要发送 4500B文件, 初始化ISN为10010,分为5个报文段发送

2022-06-13 23:33:07 1828

原创 04-JVM类加载

一个 Java 对象内存中存储为三部分:对象头(Header)、实例数据(Instance Data)和对齐填充 (Padding)对象头:* 普通对象:分为两部分 * **Mark Word**:用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等......

2022-06-07 20:24:56 243

原创 03-JVM字节码技术

类文件结构的信息主要包含有版本信息,常量池表,类/接口信息,类的成员变量/方法信息 class文件的常量池信息 访问标识与继承信息的表(不同版本的JDK有差异)

2022-06-03 19:38:56 224

原创 02-JVM垃圾回收

垃圾判断1.垃圾介绍垃圾:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾作用:释放没用的对象,清除内存里的记录碎片,碎片整理将所占用的堆内存移到堆的一端,以便 JVM 将整理出的内存分配给新的对象垃圾收集主要是针对堆和方法区进行,程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些

2022-05-31 15:50:43 219

原创 01-JVM内存结构

1.JVM概述1.1基本介绍JVM:全称 Java Virtual Machine,即 Java 虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作特点:Java 虚拟机基于二进制字节码执行,由一套字节码指令集、一组寄存器、一个栈、一个堆、一个方法区等组成自动的内存管理,垃圾回收机制数组下标越界检查JVM 屏蔽了与操作系统平台相关的信息,从而能够让 Java 程序只需要生成能够在 JVM 上运行的字节码文件,通过该机

2022-05-31 15:35:46 198

原创 eclipse 配置字符集 字体大小 护眼

修改字符集合Window -> Preferences -> General -> Workspace -> Text file encoding内容辅助 代码提示默认是输入**“.”**后出现自动提示,用于类成员的自动提示。设置自动提示的配置在:window->Preferences->Java->Editor->Content Assist:快速修复快捷键 Ctrl + 11.Eclipse字体大小调整:窗口(Window)-首选项(

2022-05-04 11:36:03 470

原创 MySQL事务,锁机制,MVCC ,LockTables

事务​ 维基百科的定义:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由 一个有限的数据库操作序列构成。1、首先,事务就是要保证一组数据库操作,要么全部成功,要么全部失败;2、在 MySQL 中,事务支持是在引擎层实现的;3、并不是所有引擎都支持事务,如 MyISAM 就不支持,InnoDB 就支持;1.事务的四大特性1.1原子性 (Atomicity)​ 原子性是指事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,

2022-05-04 00:50:26 701

转载 MySQL 悲观锁与乐观锁的理解

悲观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段。不要把他们与mysql中提供的锁机制(表锁,行锁,排他锁,共享锁)混为一谈。一、悲观锁顾名思义,就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改数据。所以在整个数据处理过程中,需要将数据锁定。悲观锁的实现,通常依靠数据库提供的锁机制实现,比如mysql的排他锁,select … for update来实现悲观锁。例子:商品秒杀过程中,库存数量的减少,避免出现超卖的情况。CREATE

2022-04-25 22:58:47 1634

原创 Redis 基本数据类型 持久化,分布式缓存,集群

Redis作为入门到实战,总结的实用教程,如果你发现缺那部分,私聊作者,会尽快补全有需要私聊作者,发给你markdown 源文档。应用场景Redis应用场景1.利用redis 中字符串类型完成项目中手机验证码存储的实现2.利用redis中字符串类型**完成具有失效性业务功能 ** 12306\淘宝 订单失效时间40分钟3.利用redis**分布式集群系统中Session共享 **mencagche 内存数据存储上限 数据类型比较简单Redis 内存数据上限数据类型丰富

2022-04-25 00:45:06 1641 6

原创 B树,B+树的详细MYSQL索引

1.索引定义官方定义: 一种帮助MySQL提高查询效率的数据结构索引的优点:1、大大加快数据查询速度索引的缺点:1、维护索引需要耗费数据库资源2、索引需要占用磁盘空间3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响2.索引分类- a.主键索引 设定为主键后数据库会自动建立索引,innodb为聚簇索引 主键索索引值不能为空 - b.普通索引 单值索引 单列索引 即一个索引只包含单个列,一个表可以有多个单列索引 - c.唯一索引 索引

2022-04-19 20:26:45 661

转载 数字签名,数字证书解释

前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视频。在一旁玩手机的女朋友突然问”你知道数字证书是来干啥的不,为啥浏览器提示证书不可信?”你要说这个,那我可来劲了,于是乎从加密、数字签名一直讲到了数字证书。。。终于把女朋友讲睡着了,独自写下这篇文章。正文如果你能非常清晰的回答出以下问题,可以直接拉到最下面帮我点个赞~,把时间用去陪陪女朋友:非对称加密中公私钥都可以加密,那么什么时候用公钥加密,什么时候用私钥“加密” ?什么是数字签名,数字签名的作用是什

2022-03-29 17:58:29 4162 6

原创 Idea控制台 CMD Tomcat乱码

一切乱码的原因都是源文本的编码与显示时使用的文本编码格式不一样,此处就是tomcat编码与idea控制台解码使用的编码格式不一样导致1. tomcat配置tomcat日志默认的编码设置为 UTF-8目录为:apache-tomcat-9.0.41\apache-tomcat-9.0.41\conf\logging.properties编码都设置为UTF-82. idea设置idea: setting > Editor > general > Console > Defa

2022-03-28 15:26:44 719

原创 代理模式 静态以及非静态 代码示例

代理设计模式代理是一种常用的设计模式,代理模式可以对原有的类进行扩展,即通过代理对象的模式来访问目标类。最通俗的例子就是假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子。1.1静态代理接口public interface ClothFactory { void produceCloth();}被代理类: 实现接口

2022-03-26 20:32:41 356

原创 Java8新特性全面

Java8新特性简介Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。速度更快代码更少(增加了新的语法:Lambda 表达式)强大的 Stream API便于并行最大化减少空指针异常:OptionalNashorn引擎,允许在JVM上运行JS应用1.Na

2022-03-21 11:21:25 28065 9

原创 阿里云短信服务(解决个人无法申请问题)

阿里云短信服务申请写在前面本人是在学习中遇到短信服务业务, 指导推荐是使用阿里云. 但是很多人说不好申请, 本着好奇 (技术人员,不应该多点这种想法) , 了解申请. 阿里云短信服务确实不好申请没有好奇精神的朋友可以退出, 可以考虑 腾讯云 ,容联云 , 想要搞东西的朋友推荐继续看1. 申请流程企业申请服务申请签名 -> 申请模板个人个人申请服务上线服务 -> 申请签名 -> 申请模板问题 : 作为个人开发者, 一般都不具备上线业务,所以导致无法申请签名2.

2022-03-17 18:00:44 15168 25

原创 计算星期几

题目描述假设今天是星期日,那么过 a 的 b 次方天之后是星期几?输入格式两个正整数 a,b,中间用单个空格隔开。0<a≤100,0<b≤10000输出格式一个字符串,代表过 a的 b 次方天之后是星期几。其中,Monday 是星期一,Tuesday 是星期二,Wednesday 是星期三,Thursday 是星期四,Friday 是星期五,Saturday 是星期六,Sunday 是星期日。输入输出样例输入 #13 2000输出 #1Tuesday思路这题肯定不能硬算

2021-11-18 22:38:19 1612 1

原创 哥德巴赫猜想 素数判断,质数,筛法

题目描述输入一个偶数 N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。输入格式第一行 : N输出格式4=2+2 6=3+3 …… N=x+y输入输出样例输入10输出4=2+26=3+38=3+510=3+7思路主要是你得知道啥是哥德巴赫猜想……哥德巴赫的猜想就是:一个大于2的偶数一

2021-11-14 23:56:14 965

原创 硬币翻转 数论

题目描述在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。输入格式一个自然数N(N为不大于100100的偶数)。输出格式第一行包含一个整数S,表示最少需要的操作次数。接下来的S行每行分别表示每次操作后桌上硬币的状态(一行包含N个整数(0或1),表示每个硬币的状态:0―正面向上,和1―反面向上,不允许出现多余空格)。对于有多种操作

2021-11-11 11:11:19 388

原创 取石子(求和 判断奇偶)

题目描述Alice 和 Bob 在玩游戏。他们有 n 堆石子,第 i 堆石子有 ai个,保证初始时ai ≤ai+1 (1≤i<n)。现在他们轮流对这些石子进行操作,每次操作人可以选择满足ai>ai−1(a0 视为 0)的一堆石子,并从中取走一个。谁最后不能取了谁输。Alice 先手,他们都使用最优策略,请判断最后谁会取得胜利。输入格式第一行一个整数 n(1≤n≤100),表示石子堆数。接下来一行 n 个数,第 i个数为 ai(1≤ ai ≤10^9 ),意义如上所述。输出格式“Ali

2021-11-07 23:59:14 1668

原创 FAKTOR (枚举)

题目描述给定 A,I,求一个最小的 N,使得⌈ N/ A ⌉ ≥ I输入格式一行两个整数A,I。输出格式一行一个整数 N。输入 #1 : 38 24输出 #1 : 875输入 #2 : 1 100输出 #2 : 100说明/提示1 ≤ A,I ≤ 100。测试平台 https://www.luogu.com.cn/problem/P7772思路题目要求是 N/A 向上取整后大于 I , 等价于求出 N/A 大于 I -1 .循环是逆循环, N 最大是 A* I .

2021-11-03 16:33:21 619

原创 Color the ball (差分数组)

题目N个气球排成一排,从左到右依次编号为1,2,3…N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。当N = 0,输入结束。Output每个测试实例输

2021-10-31 11:25:20 238

原创 数状数组解析 代码模板

对文档提及的不够清楚的,可以结合文章末尾给出的视频链接学习1.为什么需要树状数组问题 1.假如给你一个数组 A[1] …A[m], 现在要求对数组部分区间的求和.问题 2. 假如给你一个数组 A[1] …A[m], 现在要求对数组部分区间的每一个元素 +k .问题3. 假如给你一个数组 A[1] …A[m], 现在要求对数组某一区间进行求和,也要对某一区间的元素 +k.上面三个问题,可以进行通过遍历区间的每一个元素来求解,但是如果数据大,就会极大的减低代码运行的效率为什么需要树状数组, 数组

2021-10-29 15:35:58 94

原创 蛇形方阵 C语言

题目描述给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。输入4输出1 2 3 412 13 14 511 16 15 610 9 8 7思路:方式1. 题目数据范围实在是太小了,可以直接采用打表的方式.方式2. 矩阵依次是1 ~ n*n 的数, 从左往右,从上往下,再从右往左,下往上.所以只要循环的方式可以实现"蛇形"就可以得到答案.Copy 方式

2021-10-27 19:08:30 7896 1

原创 饮料换购C语言

题目:乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。输入格式输入一个整数 n,表示初始买入的饮料数量。输出格式输出一个整数,表示一共能够喝到的饮料数量。数据范围0<n<10000输入样例:100输出样例:149思路:考察的是对循环利用, 判断喝完饮料剩余的盖子数是否足够换饮

2021-10-23 21:36:18 611

原创 二进制一的个数

问题输入一个 32 位整数,输出该数二进制表示中 1 的个数。注意:负数在计算机中用其绝对值的补码来表示。样例1输入:9输出:2解释:9的二进制表示是1001,一共有2个1。样例2输入:-2输出:31解释:-2在计算机里会被表示成11111111111111111111111111111110,一共有31个1。思路 (两种方式)第一种: 判断正负数 ,如果是正数则通过辗转相除法求出1的个数.如果是负数,则需要提过通过原码求出补码,计算出补码中1的个数.(推荐)第二种(位运算

2021-10-21 00:37:50 228

原创 矩阵链乘法 动态规划

问题描述输入• ????个矩阵组成的矩阵链????????…???? =< ????????, ????????, … , ???????? > • 矩阵链????????…????对应的维度数分别为????????, ????????, … , ????????,????????的维度为????????−???? × ????????输出• 找到一种加括号的方式,以确定矩阵链乘法的计算顺序,使得最小化矩阵链标量乘法的次数 比如: 3个矩阵相乘 U1(40,8) U2(8,30

2021-06-14 20:03:19 844 1

原创 算法的稳定性解释

稳定 :如果a原本在b前面,而 a = b , 排序之后a依旧在b的前面。不稳定性:如果a原本在b的前面,而a = b,在排序之后a可能出现在b的后面。

2021-06-06 09:58:31 954

原创 十进制转换为二进制(java)

##方法一: 主要通过辗转相除法实现,既 不断除二求余数的过程,但是需要注意正负数。public class Number2Binary { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (true){ System.out.print("input a number:"); int numb

2021-05-31 23:30:26 4946

原创 位运算 二进制数

位运算 二进制数按位异或 “^”按位或 “|”左移运算符 “<<”右移运算符 “>>”实际使用按位异或 “^”按位异或运算通常用来将某变量中的某些位取反,且保留其他位不变。例如,如果需要将int型变量n的低8位取反,而其余位不变,则可以执行:n ^= 0xff;0xff: 1111 1111按位或 “|”按位或运算通常用来将某变量中的某些位置1且保留其他位不变。例如,如果需要将int型变量n的低8位全置成1,而其余位不变,则可以执行:n |= 0xff;0xff:

2021-05-31 22:32:32 1016

原创 分蛋糕、思路视频(动态规划)

分蛋糕问题总时间限制: 1000ms 内存限制: 65536kB描述有一块矩形大蛋糕,长和宽分别是整数w 、h。现要将其切成m块小蛋糕,每个小蛋糕都必须是矩形、且长和宽均为整数。切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕。请计算:最后得到的m块小蛋糕中,最大的那块蛋糕的面积下限。假设w= 4, h= 4, m= 4,则下面的切法可使得其中最大蛋糕块的面积最小。假设w= 4, h= 4, m= 3,则下面的切法会使得其中最大蛋糕块的面积最小:输入共有多行,每行表示一个测试案例。每行是三个

2020-12-05 19:17:48 404 5

转载 算法入门的经验之谈,学习算法的推荐途径

以下的经验技巧,对于算法新手,或大学没有搞过ACM,想利用业余时间提升算法能力的同学比较有帮助,对于算法高手和ACM大牛,可能不太适用,仅供参考。算法不是拼智商算法不是纯粹拼智商的,智商高,就一定很厉害,不够聪明,就一定不行。算法是一种技能,是可以通过科学合理的方式训练出来的能力。智商的高低,当然会有影响,但这个先天因素无法改变,而科学合理的方法是大家都可以掌握的。所以,首要的一点,是要意识到,算法不是只拼智商的,也是可以经由后天训练习得的。难度要循序渐进有些同学喜欢上来就是干,上来就是终极难度

2020-12-03 11:41:37 967

原创 滑雪,思路视频,测试用例(动态规划)

#include<iostream> #include<cstdio>#include<algorithm>#define NUM 103using namespace std;int r,c;int a[NUM][NUM];int dp[NUM][NUM];int dir[4][2] ={{1,0},{-1,0},{0,1},{0,-1}}; //分别判断下面、上面、右边、左边 //保存当前数据在二维数组中的位置以及高度 struct one {

2020-11-30 19:06:22 200

原创 Help jimmy、思路视频(动态规划实现)

帮助 Jimmyhelp jimmy 问题描述以及在线测试平台:http://bailian.openjudge.cn/practice/1661/思路:作者通过郭炜老师在大学慕课的程序设计与算法(二)中了解到这道题,并且课程中提到了这道题的结题思路,所以没有思路的小伙伴建议先看下郭炜老师的视频在再来看下面的源程序。源码#include<iostream>#include<algorithm>#define MAXX 99999999using namespace

2020-11-30 01:18:22 136

原创 最佳加法表达式,有思路视频(递归与递推)

最佳加法表达式总时间限制: 1000ms内存限制: 65536kB描述: 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为46输入 :有不超过15组数据 每组数据两行。第一行是整数m,表示有m个加号要放( 0<=m<=50) 第二行是若干个数字。数字总数n不超过50,且 m <= n-1输出: 对每组数据,输出最小加法表达式的值

2020-11-28 11:59:59 283

原创 Java API 1.6 与 1.8(下载链接)

网盘中提供API 1.6 与 1.8 版本,其中1.6的人工翻译降低了语义不通的可能,1.8版本为现在大多数人使用的版本。两个版本相互补充使用。链接:https://pan.baidu.com/s/1Gp-LAQy2f66NtqxpgbXamg提取码:API1...

2020-08-17 22:56:22 171

空空如也

空空如也

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

TA关注的人

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