- 博客(29)
- 收藏
- 关注
原创 分库分表详解
垂直分库通过将表按业务分类,然后分布在不同数据库,并且可以将这些数据库部署在不同服务器上,从而达到多个服务器共同分摊压力的效果,但是依然没有解决单表数据量过大的问题。库内的水平分表,解决了单一表数据量过大的问题,分出来的小表中只包含一部分数据,从而使得单个表的数据量变小,提高检索性能。是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。是把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上。所以,当表数据量很大时,可以。
2024-03-19 11:06:38
229
原创 showdoc如何自动导入数据字典(windows)
好的数据字典文档能够清晰地反映出数据库的结构以及相关释义,方便技术人员查阅。我们很容易使用showdoc来生成展示数据库结构的字典文档,并且能根据数据库结构的变动来自动修改文档,省去人工编辑的麻烦。目前官方只支持linux下的mysql数据库。其他类型的数据库可以使用由第三方开发者维护的go脚本showdocdb生成,它支持postgres、sqlserver、sqlite3、oracle,win平台和linux平台皆可用 :这里以postgres数据库为例,详解showdocdb脚本的使用。
2024-03-19 10:41:20
1929
原创 BeanUtil.toBean
同时提供了map转bean的方法,与fillBean不同的是,此处并不是传Bean对象,而是Bean类,Hutool会自动调用默认构造方法创建对象。BeanUtil是hutool下的工具类。
2024-03-19 10:26:19
1491
原创 @Retention注解
source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期。runtime:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。,一共有三种策略,定义在RetentionPolicy枚举中.@Retention作用是定义。
2024-03-07 13:44:47
221
原创 @JsonFormat注解
从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题。
2024-03-07 13:44:17
247
原创 @Accessors(chain = true) 注解
不写默认为false,当该值为 true 时,对应字段的 setter 方法调用后,会返回当前对象。
2024-03-07 13:11:00
270
原创 @Repository 与 @Mapper的区别
1、@Mapper不需要配置扫描地址,可以单独使用,如果有多个mapper文件的话,可以在项目启动类中加入@MapperScan(“mapper文件所在包”)2、@Repository不可以单独使用,否则会报错误,要想用,必须配置扫描地址(@MapperScannerConfigurer)
2024-03-07 11:20:51
131
原创 MybatisPlus 主键策略(type=IdType.ASSIGN_ID)
该策略会使用雪花算法自动生成主键ID,主键类型为长或字符串(分别对应的MySQL的表字段为BIGINT和VARCHAR)雪花算法(雪花)是微博开源的分布式ID生成算法其核心思想就是:使用一个64位的长型的数字作为全局唯一ID。在分布式系统中的应用十分广泛,且ID引入了时间戳,基本上保持自增的。如果使用IdType.ASSIGN_UUID策略,并重新自动生成排除中划线的UUID作为主键。我们可以通过@TableId注解的 类型属性来设置主键id的增长策略,一共有几个多个主键策略,可根据情况自由配置。
2024-03-05 10:15:37
1793
1
原创 注解@PathVariable的作用,和@RequestParam的区别?
Pathvariable映射URL绑定的占位符,将URL中的占位符参数绑定到控制器的方法进行入参时,URL中{xxx}占位符可以通过@Pathvariable(“XXX”)进行绑定。用于获取URL中路径的参数值,参数名由RequestMapping注解请求路径时指定,常用于restful风格的api中,传递参数格式:直接在url后添加需要传递的值即可。如: https://localhost/pathVariable/test/value1/value2…获取URL中携带的请求参数的值既URL中“?
2024-03-05 10:05:08
177
1
原创 什么是serialVersionUID?
如果接收者为对象加载的类serialVersionUID与相应的发送者的类不同,则反序列化将导致 InvalidClassException。序列化运行时与每个可序列化的类关联一个版本号,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送者和接收者是否已加载了该对象的与序列化兼容的类。所述的serialVersionUID属性是用来序列的标识符/反序列化的对象序列化类。
2024-02-27 16:00:30
400
原创 pgsql的money类型对应java什么数据类型?
BigDecimal是Java的正确数据类型,如果要记录金钱数据,pgsql最好不要用money字段,而是用numeric字段,因为money字段超过1000会有样式变化,类似于1,000
2024-02-26 09:22:36
452
1
原创 哈尔滨理工大学软件与微电子学院程序设计竞赛I. Prime
•线性筛 + 前缀和•通过线性筛,得到isprime数组,如果isprime[i]为 真,说明i为质数。 •接下来创建前缀和数组num[i],代表从0到i质数的 个数。对于每次询问,只需要输出num[b] – num[a – 1]即可快速线性筛法#include<iostream> using namespace std; const long N = 200000; long prime[N] = {0},num_prime = 0; int i
2020-06-16 16:03:24
204
原创 a[i++]的含义
{a[i++]=b;}等于{a[i]=b;i++;}#include <iostream>using namespace std;int main(){ int num=0; int a[20]; for (int i=0;i<10;i++) { a[num++]=i; } for (int i=0;i<10;i++) { cout<<a[i]<<"
2020-06-16 01:27:07
4924
原创 哈尔滨理工大学软件与微电子学院程序设计竞赛L. Defeat the monster
•排序 + 双指针•我们先对数组进行排序,创建两个指针i和j,初始 都指向第一个元素的位置。i每次向后移动一位,j 每次向后找到最后一个a[j] – a[i] <= 5的位置,如 果j到了最后一个元素的位置,则跳出循环。最后 只需要输出每轮移动后j – i + 1的最大值即可#include<iostream>#include<cmath>#include<stdlib.h>#include<algorithm>using namespace
2020-06-15 23:32:23
202
原创 哈尔滨理工大学软件与微电子学院程序设计竞赛J.Compare
•用字符数组读入a和b,if else 判断即可#include <iostream>#include <string.h>using namespace std;int main(){ char a[10000],b[10000],i=0; int p,q; cin>>a>>b; p=strlen(a); q=strlen(b); if (p>q) cout<<"&g
2020-06-15 20:13:03
161
原创 哈尔滨理工大学软件与微电子学院程序设计竞赛A.Race
•模拟•有一种情况:如果小红在到达终点时小明还在休息, 那么在模拟结束后得到的时间可能会出现错误,如 果小红获胜,直接输出L / V2即可#include<bits/stdc++.h>using namespace std;int main(){ int v1,v2,t,s,l,s1=0,s2=0,T1=0,T2=0; cin>>v1>>v2>>t>>s>>l; while (!(s1==l||s2=
2020-06-15 20:07:44
189
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人