- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 分布式ID
但是过快的话,需要将时间调回去,雪花算法极有可能会生成重复的id,雪花算法是根据时间来进行判断的,这段时间已经使用了,所以再次使用就会生成重复的id。保存分布式id服务的工作节点和数据中心可以使用redis,zookeeper,db等来做持久化处理,这样分布式id服务重启后的工作节点和数据中心就不会丢失或者出现重复。数据库A的id自增步长为1,数据库B的id自增步长为2,步长可以通过下面的方式确认。Oracle,DB2,达梦,TD等分布式数据库有自增id,可以实现对应需求。假如有服务A,B,C。
2025-03-09 11:51:29
1146
原创 juc常用工具:读写锁,减少计数器,循环栅栏,信号灯
读写锁读写锁读写锁读写锁读写锁读写锁应用场景,读写日志等,写日志是原子性的,但是读取日志不分先后顺序public class MyReentrantReadWriteLock { Object data = null; ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); public void write(Object data){ ReentrantReadWriteLock.W
2021-03-18 16:14:42
308
原创 SpringBoot使用Quartz
目录依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> <relativePath/> <!-- looku
2021-02-26 20:43:02
1226
3
原创 @RequestParam
/** * 删除多个视频 * @param videoIdList * @return */ @DeleteMapping("deleteMultiVideo") public RetVal deleteMultiVideo(@RequestParam List<String> videoIdList){ String join = StringUtils.join(videoIdList, ","); ...
2021-02-22 20:20:37
275
原创 eureka的基本工作流程
1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常4、当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,
2021-01-21 10:33:37
485
原创 ron表达式
Cron表达式cron表达式分为七个域,之间使用空格分隔。其中最后一个域(年)可以为空。每个域都有自己允许的值和一些特殊字符构成。使用这些特殊字符可以使我们定义的表达式更加灵活。下面是对这些特殊字符的介绍:逗号(,):指定一个值列表,例如使用在月域上1,4,5,7表示1月、4月、5月和7月横杠(-):指定一个范围,例如在时域上3-6表示3点到6点(即3点、4点、5点、6点)星号(*):表示这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发斜线(/):表示递增,例如
2021-01-12 21:18:56
382
原创 对于springmvc中ajax请求正确,但是总返回error
给方法加上@ResponseBody不管方法是否有返回值,都加上或者给方法加上@RestController@RestController注解相当于@ResponseBody + @Controller
2020-12-14 19:49:44
282
原创 spring中注解的自动装配时的id是什么
自动装配的注解- @Component:组件 应用场景:这个类确实需要加入IOC容器,但是又不是下面典型的三种情况,其实就是 你在ApplicationContext.xml里面配置的bean <bean id="happyFactoryBean" class="com.etu.spring.component.HappyFactoryBean"> <property name="factoryName" value="马保国说:年轻人好之为之"/>
2020-12-04 20:27:59
1089
1
原创 记一下,Mybatis逆向工程mbg配置未自动生成,targetProject正确路径
加载generatorConfig.xml的路径怎么写按照平常加载文件的路径正常写法就行,从你的项目路劲下开始写的我的是放在一个项目的模块的src下的①InputStream configFile = Resources.getResourceAsStream("generatorConfig.xml");②//InputStream configFile = new FileInputStream("pro07-mybatis-MBG\\src\\generatorConfig.xml");一和
2020-12-01 19:58:25
664
原创 java中判断字符串为空
asd情况一什么都不写的空字符串 String str = ""; System.out.println(str == null); //false System.out.println(str.length() == 0); // true情况二字符串内容为空格的字符串 String str = " "; System.out.println(str == null); //false System.out.p.
2020-11-19 12:43:26
800
原创 javaweb中idea无缘无故的抽疯
前提是tomcat配置正确和idea中的代码,配置之类的正确。列如上午就还可以运行,下午没做任何修改,但是就无缘无故的报错步骤一先深呼吸几次放平心态????,先把启动的项目关了步骤二刷新一下硬盘的文件步骤三删除out文件夹然后启动,项目。如果还报错的话,因该是代码或者配置的问题了(╯‵□′)╯︵┴─┴...
2020-11-17 20:35:06
284
原创 Collection中的Set
Set接口是Collection的子接口,set接口没有提供额外的方法。但是比Collection接口更加严格了。Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。Set集合支持的遍历方式和Collection集合一样:foreach和Iterator。Set的常用实现类有:HashSet、TreeSet、LinkedHashSet。HashSetHashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。jav.
2020-10-24 09:30:39
283
原创 java关于自定义的comparable排序
调用方法的对象和参数对象比较如果返回0,代表两个对象相等。返回负数,代表调用方法的对象小,参数对象的大(升序)。返回正数,代表调用方法的对象大,参数对象小(降序)。理解不了,直接把规律记住就行了 @Override public int compareTo(Student stu) { int result = (int) Math.ceil(this.getScope() - stu.getScope()); result = result ==.
2020-10-23 19:49:40
181
转载 运行时数据区,内存结构
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JWM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JM对于内存的划分方式和管理机制存在着部分差异。即表示线程之间栈,本地栈,计数器是独立的。线程运行结束就销毁,而堆与方法区之间是共享的,JVM进程结束就销毁,除了守护线程以外时,没有了其他线程就可以结束JVM的运行了对于栈空间来说就是先进先出,而且,线程以结束,就会被GC回收,一般不做优..
2020-10-22 19:54:08
200
原创 String字符串拼接后比较的原则
1、拼接结果的存储和比较问题原则:(1)常量+常量:结果是常量池(2)常量与变量 或 变量与变量:结果是堆(3)拼接后调用intern方法:结果在常量池new 出来的是在堆空间对于new出来字符串对象,现在堆空间创建一个String对象,然后再指向常量池,创建字符串...
2020-10-22 19:35:59
376
原创 random(Max – Min +1) + Min 推导过程
都知道可以使用java.util.Random 产生一个随机数。通过指定参数,使得产生一个小于次数的随机数。值的范围为:[ 0, Max) ; 其中Max 就是指定的参数。但是业务需求想产生一个 [ 10, 100]; 内的随机数怎么产生呢。这个问题极其了我的兴趣。其实他是个二元一次方程。通过解方程,得到了他的公式,下面是我推导的公式。【Min, Max】= random(Max – Min +1) + Min 推导过程题目:已知random方法能返回一个【0, Max-1】左闭右闭的随机数。其中Ma
2020-10-17 11:42:24
1020
原创 java Math.Rondom产生int的随机数
都知道可以使用java.util.Random 产生一个随机数。通过指定参数,使得产生一个小于次数的随机数。值的范围为:[ 0, Max) ; 其中Max 就是指定的参数。但是业务需求想产生一个 [ 10, 100]; 内的随机数怎么产生呢。这个问题极其了我的兴趣。其实他是个二元一次方程。通过解方程,得到了他的公式,下面是我推导的公式。【Min, Max】= random(Max – Min +1) + Min 推导过程题目:已知random方法能返回一个【0, Max-1】左闭右闭的随机数。其中Ma
2020-10-17 11:41:01
388
原创 java的异常简单处理
异常继承体系异常分类我们平常说的异常就是指Exception,因为这类异常一旦出现,我们就要对代码进行更正,修复程序。异常(Exception)的分类:根据在编译时期还是运行时期去检查异常?编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如文件找不到异常)运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会被编译器检测到(不报错)。(如数组索引越界异常,类型转换异常)。程序员应该积极避免其出现的异常,而不是使用try…ca
2020-10-14 20:02:34
106
原创 Java包装类常量池
包装类缓存对象Byte-128~127Short-128~127Integer-128~127Long-128~127Float没有Double没有Character0~127Booleantrue和false
2020-10-12 21:16:25
275
原创 java中的实例化初始化
先类初始化单个类按照正常类的加载顺序加载,就是将类通过类加载器加载到内存有继承先加载父类再加载子类,就是先将父类通过类加载器加载到内存,然后就是子类再成员属性单个类类初始化后,加载有静态的到方法区,然后没有静态的属性到栈空间有继承类初始化后,加载有父类静态的到方法区,然后子类静态的到方法区,再加载父类的没有静态的属性到栈空间,最后加载子类的没有静态的属性到栈空间最后实例化初始化首先实例化初始化必须要知道的知识实列化之前会默认调用父类的无参构造将没有静态的属性(成员
2020-10-12 00:02:55
785
转载 java中this与super
1、this的含义this代表当前对象2、this使用位置this在实例初始化相关的代码块和构造器中:表示正在创建的那个实例对象,即正在new谁,this就代表谁this在非静态实例方法中:表示调用该方法的对象,即谁在调用,this就代表谁。this不能出现在静态代码块和静态方法中3、this使用格式(1)this.成员变量名当方法的局部变量与当前对象的成员变量重名时,就可以在成员变量前面加this.,如果没有重名问题,就可以省略this.this.成员变量会先从本类声明的成员变量列
2020-10-09 19:33:25
123
原创 Java成员变量初始化
1、成员变量有默认值类别具体类型默认值基本类型整数(byte,short,int,long)0浮点数(float,double)0.0字符(char)‘\u0000’布尔(boolean)false数据类型默认值引用类型数组,类,接口null2、初始化的过程1)没有被static修饰的成员变量,是在 类----》static修饰的成员变量-----》static代码块(静态代码块)----》没有被static修饰的成员
2020-10-09 19:11:16
1215
原创 java二维数组的动态初始化
两种定义 方法动态的,可以随意定义二维数组的长度,但是一维数组长度,必须固定 String[][] arr3 = new String[2][]; arr3[0] = new String[]{"小明"}; arr3[0] = new String[2]; System.out.println(arr3[0]); System.out.println(arr3[0][0]); System.out.println(
2020-09-28 20:00:02
2711
原创 必须会的三个循环
九九乘法表public class Test1 { public static void main(String[] args) { for(int i = 1; i <= 9; i++){ for(int j = 1; j <= 9; j++){ if(i >= j){ System.out.print(j + "*" + i + "=" + j * i + "\t"); } } System.out.println();
2020-09-27 18:29:52
237
原创 自己对Java中if变量赋值的理解
if条件中的局域变量的作用域在if条件里面定义的变量没法在,if外面共享比如下面2. if条件,程序不一定会,执行,但是else条件肯定会执行。所以不要在if条件里面定义变量但是如果加上else结果就不一样了if-else if -else中的条件有作用区间的先看段简单的代码,结果是啥很明显了 int score = 89; if(score<0 || score>100){ System.out.println("你的成绩是错误的");
2020-09-26 18:11:06
4901
原创 java自动类型转换
简单的理解一下进行算数运算时,会将数据转换位同一级别在运算整型默认用int进行计算 (列如,你short类型与short类型进行计算时,你不将结果强制转换为short类型,就会报错)浮点型的默认用double进行计算至于为什么,官方文档就这样写的,(这官方闲着没事干,做出这种设定)简单的理解下转换关系可以简单理解为,每个类型的存储的字节从小到大的关系,自动转换...
2020-09-24 19:12:15
299
原创 java ++i与i++的学问
简单的理解变量前++ :变量先自身加1,然后再取值。变量后++ :变量先取值,然后再自身加1。public class Test3 { public static void main(String[] args) { int i = 1; int j = ++i; int a = 1; int b = a++; System.out.println("i:" + i + ",j:" + j); //i:2,j:2 System.out.println("a:" +
2020-09-24 19:00:04
131
原创 Spring用xml来使用JDBCTemplate的简单案例
看这篇文章得首先会Spring的bean.xml的配置,还有JDBCTemplate,还有我用的maven工程看下目录结构看下pom.xml配置如果出现版本号显示位红色的话,可以参考这篇文章,基本上可以解决的。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/.
2020-07-13 14:18:37
516
原创 javaweb简单的ajax登录
目录结构连接数据库的操作可以参考前面的博客https://blog.csdn.net/qq_43515464/article/details/106690577将对象转换为json数据的操作可以参考博客https://blog.csdn.net/qq_43515464/article/details/107028632前端页面效果图我这里用的是layui做的前端页面前端的html代码实际开发中前端都是html页面,不是jsp页面index.jsp的代码<%--
2020-06-29 22:17:22
1024
原创 jackson的简单使用
常用方法json方便数据的传输,现在前后端数据分离,前端一般为html的页面,后端一般传送数据过来就可以了。后端不需要对前端的样式做过多的操作。一般写后台的时候怎么方便怎么来,所以前端的样式,后端一般不控制,后台的样式后端可以控制。先认真把方法记到,才能更好使用jackson 1. JSON转为Java对象 1. 导入jackson的相关jar包 2. 创建Jackson核心对象 ObjectMapper 3. 调用ObjectMapper的相关方法进行转换 1. r
2020-06-29 21:38:29
459
原创 java反射的简单用法
什么是反射可以简单的理解为将类的各个组成部分封装为其他对象,这就是反射机制比如ide(集成开发工具)里面的代码提示功能,判断某个包是否含有某个类,属性,变量等;或者你接手某个同事的代码时,可以用反射判断该同事某个方法是否写了的。常用方法得先知道用法,才能写代码* 获取Class对象的方式: 1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象 * 多用于配置文件,将类名定义在配置文件中。读取文件,加载类 2. 类名.class:通过类名的属性
2020-06-23 18:36:44
187
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人