Java
木南曌
从藩而始,笃志笃行
展开
-
生成4位不重复的字符串
实际的业务场景中需要生成4位不重复的字符串,这个场景比较特殊,不具有普遍性,正常场景的唯一单号都不会只有4位。最先想到的是随机生成4位字符串,字符包括数字、大小写字母一共62位,基本可以满足使用要求,但是越到后面,重复的概率就会越大。想要保证不重复,可以加入时间戳,机器id等,类似雪花算法的思路,但是长度都比较长,将其映射为4位长度的字符串有点困难。只能换一个思路,通过递增的方式来保证唯一性,递增可以借助数据库实现。同时将10进制转换为62进制可以满足4位长度的限制。这样10进制的最大值为 147763原创 2020-11-20 15:08:27 · 2175 阅读 · 0 评论 -
单例模式的实现方法
单例模式(Singleton)是一种使用率非常高的设计模式,其主要目的在于保证某一类在运行期间仅被创建一个实例,并为该实例提供了一个全局访问方法。下面分别给出 java 和 python 的实现方式:java 的 6 种实现方法:1 懒汉式,线程不安全public class SingletonModle1 { private static SingletonModle1 inst...原创 2020-05-05 19:05:17 · 171 阅读 · 0 评论 -
java 高并发
线程安全 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。...原创 2018-07-29 17:08:06 · 155 阅读 · 0 评论 -
spring batch
参考:Spring Batch 批处理框架介绍原创 2018-07-08 14:29:11 · 134 阅读 · 0 评论 -
IDEA 小技巧
参考:Intellij IDEA神器那些让人爱不释手的小技巧原创 2018-06-05 19:53:55 · 148 阅读 · 0 评论 -
精确地测量java对象的大小
参考:如何精确地测量java对象的大小原创 2018-05-28 12:47:03 · 210 阅读 · 0 评论 -
Java 内存模型
概念Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理...原创 2018-04-29 15:04:42 · 911 阅读 · 0 评论 -
Spring 知识点
Spring父子容器Spring,Spring MVC 共存时,会有两个容器一个Spring MVC的Servlet WebApplicationContext为子容器。 一个Spring的Root WebApplicationContext 为父容器。当子容器找不到对应的bean时会委托父容器中的bean。 Root WebApplicationContext (父容器)中的b...原创 2018-03-06 12:58:09 · 103 阅读 · 0 评论 -
Java 代理
参考: 代理模式实现方式及优缺点对比原创 2018-03-13 12:52:50 · 107 阅读 · 0 评论 -
Java 多线程
线程的创建Java 使用 Thread 类代表线程,所有的线程对象都必须是 Thread 类或其子类的实例。Java 可以用三种方式来创建线程,如下所示:继承 Thread 类创建线程 一般步骤如下: 定义 Thread 类的子类,并重写该类的 run() 方法,该方法的方法体就是线程需要完成的任务,run() 方法也称为线程执行体创建 Thread 子类的实例,也就是创建了线程对...原创 2018-03-06 10:57:51 · 93 阅读 · 0 评论 -
Java 中使用 IO 流实现大文件的分拆与合并
记录一下大文件的拆分和合并,代码如下: Java分割文件的方法: //文件分割的方法(方法内传入要分割的文件路径以及要分割的份数) private static void splitFileDemo(File src, int m) { if(src.isFile()) { //获取文件的总长度 long l = ...转载 2016-12-22 21:21:11 · 390 阅读 · 0 评论 -
Java 编码问题汇总
问题一:在java中读取文件时应该采用什么编码?Java读取文件的方式总体可以分为两类:按字节读取和按字符读取。按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String(byte[]);把字节数组转换成String。在最后一步隐藏了一个编码的细节,new String(byte[]);会使用操作系统默认的字符集来解码...转载 2017-03-21 21:24:27 · 176 阅读 · 0 评论 -
Java 正则表达式
1. 正则表达式的构造摘要简介1.1 字符类[abc] a、b 或 c(简单类)[^abc] 任何字符,除了 a、b 或 c(否定)[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)[a-z&&[def]] d、e 或 f(交集)[a-z&&...原创 2017-05-24 16:04:05 · 176 阅读 · 0 评论 -
阻塞队列
参考:什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?原创 2018-03-15 12:50:44 · 114 阅读 · 0 评论 -
Java 反射
参考资料:Java 基础之反射原创 2018-03-07 15:55:15 · 118 阅读 · 0 评论 -
Java9 新特性详解
参考资料:Java9新特性原创 2018-02-24 12:57:25 · 714 阅读 · 0 评论 -
Java8 新特性
1、接口改善a.接口中可以定义静态方法b.更重要的是,接口中的方法,可以用default修饰后,添加方法体2、函数式接口 核心概念就是函数式接口。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。比如,java.lang.Runnable就是一个函数式接口,因为它只定义一个抽象方法: public abstract void run();原创 2017-07-04 19:08:53 · 182 阅读 · 0 评论