06 2024 档案
摘要:题目描述 公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。 过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,要求p1<p2 员工个数取值范国:O<n<100000 员工ID为整数,取值范围:0<=n
阅读全文
摘要:题目描述:整数对最小和 给定两个整数数组array1、array2,数组元素按升序排列。 假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素, 并对取出的所有元素求和,计算和的最小值。 注意: 两对元素如果对应于array1、array2中的两个下标均相同,则视为
阅读全文
摘要:题目描述 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “abira”是元音字符串,其瑕疵度为2 给定一个字符串,请找出指定瑕疵度的最长
阅读全文
摘要:题目描述:查找众数及中位数 众数是指一组数据中出现次数量多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。 查找整型数组中元素的众数并组成一个
阅读全文
摘要:题目描述:密码输入检测 给定用户密码输入流input,输入流中字符’<'表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。 密码安全要求如下: 1.密码长度>=8; 2.密码至少需要包含1个大写字母; 3.密码至少需要包含
阅读全文
摘要:题目描述: 全量和已占用字符集 、字符串统计 给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。 要求输出剩余可用字符集。 输入描述 输入一个字符串 一定包含@,@前为全量字符集 @后的为已占用字符集 已占用字符集中的字符一定是全量字符集中的字符 字符集中的字符
阅读全文
摘要:题目描述:用连续自然数之和来表达整数 一个整数可以由连续的自然数之和来表示。 给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 该整数的所有表达式和表达式的个数。如果有多种表达式,输出要求为: 自然数个数最少的
阅读全文
摘要:题目描述:构成指定长度字符串的个数 给定 M(0 < M ≤ 30)个字符(a-z),从中取出任意字符(每个字符只能用一次)拼接成长度为 N(0 < N ≤ 5)的字符串, 要求相同的字符不能相邻,计算出给定的字符列表能拼接出多少种满足条件的字符串, 输入非法或者无法拼接出满足条件的字符串则返回0。
阅读全文
摘要:题目描述;山脉的个数(本题分值100) 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。 登山者想要知道一张地图中
阅读全文
摘要:题目描述:字符串序列判定/最后一个有效字符 输入两个字符串S和L,都只包含英文小写字母。S长度<=100,L长度<=500,000。判定S是否是L的有效子串。 判定规则: S中的每个字符在L中都能找到(可以不连续), 且S在L中字符的前后顺序与S中顺序要保持一致。 (例如,S=”ace”是L=”ab
阅读全文
摘要:题目: 给你一个下标从 0 开始大小为 m x n 的二进制矩阵 grid 。 从原矩阵中选出若干行构成一个行的 非空 子集,如果子集中任何一列的和至多为子集大小的一半,那么我们称这个子集是 好子集。 更正式的,如果选出来的行子集大小(即行的数量)为 k,那么每一列的和至多为 floor(k / 2
阅读全文
摘要:Docker 简介 1、Docker 诞生 Docker 是 dotcloud 公司开源的一款产品 dotcloud 是 2010 年新成立的一家公司,主要基于 PAAS(Platfiom asaService)平台为开发者提供服务。2013年10月 dotcloud 公司改名为 Docker 股份
阅读全文
摘要:CI(Continuous Integration)持续集成,CD(Continuous Deployment)持续部署 持续集成(CI)是构建软件代码和完成初始测试的过程。 持续部署(CD)是将代码与基础设施相结合的过程,确保完成所有测试并遵循策略,然后将代码部署到预期环境中。 CI持续集成、CD
阅读全文
摘要:Redis的持久化机制 Redis是一个内存数据库,它的数据存放在内存中,但是如果关闭服务、机器关机或者断电的话,内存中的所有数据都会慢慢消失消失。 内存数据消失的原因:因为内存中的数据是半导体晶体管开关,这种开关高度依赖电源,当电源断电后,无法再控制晶体管的开关状态。这时候电容发挥作用,但是电容的
阅读全文
摘要:什么是Redis Redis是一个高读写性能的NoSQL缓存数据库。性能极高,单读性能可达 11万次每秒,单写性能可达8万1千次每秒,并且具有丰富的数据类型,包括string、hash、list、set、zset(sorted set),每种类型具有不同的特性。并且支持数据的持久化,可以通过RDB/
阅读全文
摘要:一、缓存穿透 大量查询访问一个缓存中不存在的key,导致大量请求直接查询到数据库,这种查询不存在的缓存数据就叫做缓存穿透。 解决: 1.使用布隆过滤器,将所有有效的key缓存到一个集合中,不存在的key,直接返回空,难点在于需要对所有缓存的key进行预热。 2.将查询的key以空值的方式存入 缓存,
阅读全文
摘要:一、普通事物 编程式事务,TranscationManager/Connection/Session,操作 commit和rollback 声明式事物,通过AOP技术,对方法前后进行拦截,并加入编程式事物操作来完成。使用的时候需要在方法上加上@Transcational注解 二、分布式事物 1.产生
阅读全文
摘要:一、先了解事物 事物,程序能实现 事物的acid四个特性,说明程序是支持事物的。 1.A(Atomicity),原子性 原子性就是不可拆分的特性,要么全部成功然后提交(commit),要么全部失败然后回滚 (rollback)。若开启事务,在上述场景就不会出现 A 少 100 成功,B 多 100
阅读全文
摘要:InjectionMetadata.inject resolveFieldValue解析去解析 对象的属性时 会自动去解析该属性是否是Bean依赖对象 DefaultListableBeanFactory.doResolveDependency会去调用DependencyDescriptor.res
阅读全文
摘要:AbstractAutowireCapableBeanFactory.doCreateBean方法 一、创建实例对象 调用createBeanInstance 方法中 会获取容器中所有的BeanPostProcessor对象,并进行循环筛选出来自于 SmartInstantiationAwareBe
阅读全文
摘要:AbastractApplicationContext.FinishBeanFactoryInitialization 模版调用子类DefaultListableBeanFacotry.preInstantiateSingletons 通过循环子类DefaultListableBeanFactory
阅读全文
摘要:自定义context:component-scan标签的解析流程 除了ComponentScan和Spring自己添加注册的BeanDefinition,其他所有的BeanDefinition都是基于XML解析流程。 而在解析component-scan标签时,使用了ComponentScanBea
阅读全文
摘要:1.将配置文件解析成Document对象 2.解析Document对象的每个Element标签 3.将Element标签解析成BeanDefinition对象 4.最后将BeanDefinition对象保存到DefaultLisableBeanFactory的BeanDefinitionNames和
阅读全文
摘要:1.AbstractApplicationContext.obtainBeanFactory方法中,模版调用 2.AbstractRefreshableApplicationContex.refreshBeanFactory 该方法中会创建 DefaultListableBeanFactory用于收
阅读全文
摘要:1.id 再Spring容器中作为Bean的唯一标识 2.name 用于为id属性创建一个或多个别名,用空格、逗号分开 3.class Bean的类名,全限定名 primary 多个相同Bean再容器中的优先级 5.parent 标注该Bean的父类Bean,继承父类Bean的所有属性 6.abst
阅读全文
摘要:Spring的核心流程是读取配置文件,解析并封装成BeanDefinition,并将所有的BeanDefinition收集到一个叫DefaultListableBeanFactory的容器中。 一、setConfigLocation 设置配置路径方便后续对其进行解析 二、refresh方法,解析并封
阅读全文
摘要:Spring有四种加载方式 一、ClassPathXMLApplicationContext classPath中的xml启动方式 二、AnnotationConfigurationApplicationContext 注解扫描的启动方式 三、FileSystemXMLApplicationCont
阅读全文
摘要:自旋锁 锁的四种状态 无所状态、偏向锁状态、轻量级锁状态、重量级锁状态。 偏向锁定义 大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。无竞争时不需要进行CAS操作来加锁和解锁。 轻量级锁 通过CAS操作来加锁和解锁 重量级锁
阅读全文
摘要:Java 内存模型(JMM) 从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不真实
阅读全文
摘要:一、线程封闭 栈封闭,也就是局部变量表,每个线程单独拷贝一份到线程内存中 线程封闭,需要开发者自己实现,不靠谱 二、无状态的类 无任何成员变量的类,这种类一定是线程安全的。 三、让类不可变 1.加final关键字 2.不提供任何修改成员变量的入口。 3.volatile 不能保证线程安全,只能保证可
阅读全文
摘要:使用线程池带来的三个好处 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 +
阅读全文
摘要:一、集合 Vector CopyOnWriteArrayList 和 CopyOnWriteArraySet ConcurrentSkipListSet 有序 Set 二、Map HashTable ConcurrentHashMap ConcurrentSkipListMap 有序 Map 三、队
阅读全文
摘要:AtomicInteger AtomicIntegerArray AtomicReference AtomicStampedReference AtomicMarkableReference AtomicIntegerFieldUpdater AtomicLongFieldUpdater Atomi
阅读全文
摘要:假定有两个操作 A 和 B,如果从执行 A 的线程来看,当另一个线程执行 B 时, 要么将 B 全部执行完,要么完全不执行 B,那么 A 和 B 对彼此来说是原子的。 synchronized 关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候, 访问同一资源的其它线程需要等待,直到该线程释放
阅读全文
摘要:一、Fork-Join 二、CountDownLatch 三、CyclicBarrier 四、Semaphore 五、Exchange 六、Callable、Future和FutureTask
阅读全文
摘要:本质原因是ThreadLocalMap中的ThreadLocal对象是一个软引用类型,弱引用类型在在触发gc时被回收,也就是将ThreadLocalMap中的key回收了,但是threadLocalMap中的value未被回收,对应的ThreadLocalMap中的entry只有value,而没有k
阅读全文
摘要:synchronized内置锁 对象锁和类锁: 对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的 class 对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个 class 对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。 但是有一
阅读全文
摘要:Thread 和 Runnable 的区别 Thread 才是 Java 里对线程的唯一抽象,Runnable 只是对任务(业务逻辑)的抽象。 Thread 可以接受任意一个 Runnable 的实例并执行 启动线程的方式有: 1、X extends Thread;,然后 X.start 2、X i
阅读全文
摘要:高并发编程的意义、好处和注意事项 由于多核多线程的 CPU 的诞生,多线程、高并发的编程越来越受重视和关注。 多线程可以给程序带来如下好处。 (1)充分利用 CPU 的资源 从上面的 CPU 的介绍,可以看的出来,现在市面上没有 CPU 的内核不使用多线程并发机制的,特别是服务器还不止一个 CPU,
阅读全文
摘要:并行 我们举个例子,如果有条高速公路 A 上面并排有 8 条车道,那么最大的并行车辆就是 8 辆,此条高速公路 A 同时并排行走的车辆小于等于 8 辆的时候,车辆就可以并行运行。 CPU 也是这个原理,一个 CPU 相当于一个高速公路 A,核心数或者线程数就相当于并排可以通行的车道;而多个 CPU
阅读全文
摘要:CPU 时间片轮转机制 我们平时在开发的时候,感觉并没有受 cpu 核心数的限制,想启动线程就启动线程,哪怕是在单核 CPU 上,为什么?这是因为操作系统提供了一种 CPU 时间片轮转机制。 时间片轮转调度是一种最古老、最简单、最公平且使用最广的算法,又称 RR调度。每个进程被分配一个时间段,称作它
阅读全文
摘要:CPU 核心数和线程数的关系 多核心:也指单芯片多处理器( Chip Multiprocessors,简称 CMP),CMP 是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的 SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。这种依靠多个 CPU 同时并行地运行程序是实现
阅读全文
摘要:什么是进程和线程 进程是系统运行资源分配的最小单位 进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘 IO 等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配
阅读全文
摘要:面向对象 01、构造器参数太多怎么办? 如果参数很多,会导致构造方法非常多,拓展性差,代码难编写,且难以看懂。 用 JavaBeans 模式, get 和 set 一行构造编程多行代码实现,需要使用额外机制确保一致性和线程安全。 用 builder 模式, 1、5 个或者 5 个以上的成员变量 2、
阅读全文
摘要:调优的原则 1、 大多数的 java 应用不需要 GC 调优 2、 大部分需要 GC 调优的的,不是参数问题,是代码问题 3、 在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多; 4、 GC 调优是最后的手 目的 GC 的时间够小 GC 的次数够少 发生 Full GC 的周期足够的
阅读全文
摘要:JDK 为我们提供的jvm工具 命令行工具 jps 、jstat、jinfo、jmap、jhat、jstack 可视化工具 JMX、Jconsole、visualvm 生产服务器推荐开启 -XX:-HeapDumpOnOutOfMemoryError 默认关闭,建议开启,在 java.lang.Ou
阅读全文
摘要:类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7 个
阅读全文
摘要:垃圾回收算法 复制算法(Copying) 将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使 用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要按顺序分配内
阅读全文
摘要:判断对象的存活 引用计数法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。(Python 在用,但主流虚拟 机没有使用) 优点:快,方便,实现简单。 缺陷:对象相互引用时(A.instance=B 同时 B.instance=A)
阅读全文
摘要:虚拟机中的对象 对象的分配 虚拟机遇到一条 new 指令时:根据 new 的参数是否能在常量池中定位到一个类的符号引用,如果没有,说明还未定义该类,抛出ClassNotFoundException 1)检查加载 先执行相应的类加载过程。如果没有,则进行类加载 2)分配内存 根据方法区的信息确定为该类
阅读全文
摘要:一、JVM运行时数据区 JVM运行时数据区是一个抽象概念,主要依赖于寄存器、高速缓存、主内存几个部分组成。 计算机运行 = 指令 + 数据,指令用于执行 方法, 数据 用于指向 存放的数据和对象。 虚拟机栈 用于执行java方法 本地方法栈 执行本地方法(通常时c语言实现的) 程序计数器 用于对 执
阅读全文
摘要:一、索引的数据结构 MySQL中索引是一种数据结构,可以理解为 像一本书的目录一样的结构。 B+Tree的理解 B+Tree说白了还是Tree,属于二叉树的高级变体 先了解二叉树 平衡二叉树,能对结构进行左旋、右旋,以达到左子树与右子树 高度差的绝对值不超过1,即高度差为0-1之间。 平衡二叉树的旋
阅读全文
摘要:事务特性 事务应该具有 4 个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID 特 性。 原子性(atomicity) 一致性(consistency) 持久性(durability) 隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的
阅读全文
摘要:MySQL 5.7.22查询时候报错 argument out of range 报错代码 原因sql_mode模式导致 参考sql_mode默认配置 show variables like 'sql_mode'; ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_
阅读全文
摘要:一、 MySQL 中的锁 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发 度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发 度也最高。 页面锁(gap 锁,间隙锁):开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度
阅读全文
摘要:一、InnoDB 是一种事务型存储引擎,完全支持acid事务特性,redo log 和 undo log ,使用行级锁,并发程度最高。 二、MyISAM MyISAM 对整张表加锁,而不是针对行,并发程度低。读取时会对需要读到的所有表加共享锁,写入时则对表添加排它锁。但是在表有读取查询时, 也可以往
阅读全文
摘要:数据库SQL优化通常涉及以下方面: 1.查询优化:确保使用正确的索引来优化查询。 2.避免全表扫描:避免不必要的全表扫描,使用索引就是为了避免全表扫描。 3.使用EXPLAIN分析查询:检查SQL查询的执行计划,判断sql语句存在的问题。 4.使用JOIN代替子查询:适当情况下,使用JOIN来合并表
阅读全文
摘要:字符串类型 数字类型 日期类型 JSON类型 MySQL5.7之后支持json 数据类型
阅读全文
摘要:SELECT INTO 语句 如:SELECT * INTO WebsitesBackup2016 FROM Websites; INSERT INTO语句 如:INSERT INTO Websites (name, country) SELECT app_name, country FROM ap
阅读全文
摘要:GROUP BY 分组查询语句, 如:SELECT site_id, SUM(access_log.count) AS nums FROM access_log GROUP BY site_id; 组合函数: count(),min(),max(),sum(),avg(),first(),last(
阅读全文
摘要:DISTINCT column_name 去除字段的重复 WHERE 条件筛选操作 AND、OR 用于where条件后的多条件连接 如果第一个条件和第二个条件都成立,则用 AND 运算符连接这两个条件。 如果第一个条件和第二个条件中只要有一个成立,则用 OR 运算符连接这两个条件。 如:SELECT
阅读全文
摘要:初识SQL 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理 关系数据库管理系统(Relational Database Management System:RDBMS)的语言,
阅读全文
摘要:介绍 BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码,BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记
阅读全文
摘要:由来 Java中有assert关键字,但是存在许多问题: assert关键字需要在运行时显式开启才能生效,否则你的断言就没有任何意义。 用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试调试程序时使用的,但如果不小心用a
阅读全文
摘要:为什么会有这个类 平常我们使用单例不外乎两种方式: 在对象里加个静态方法getInstance()来获取。此方式可以参考 【转】线程安全的单例模式 (opens new window)这篇博客,可分为饿汉和饱汉模式。 通过Spring这类容器统一管理对象,用的时候去对象池中拿。Spring也可以通过
阅读全文
摘要:由来 如果你了解Python,你一定知道Python有dict这一数据结构,也是一种KV(Key-Value)结构的数据结构,类似于Java中的Map,但是提供了更加灵活多样的使用。Hutool中的Dict对象旨在实现更加灵活的KV结构,针对强类型,提供丰富的getXXX操作,将HashMap扩展为
阅读全文
摘要:介绍 提供ClassLoader相关的工具类,例如类加载(Class.forName包装)等 方法 获取ClassLoader getContextClassLoader 获取当前线程的ClassLoader,本质上调用Thread.currentThread().getContextClassLo
阅读全文
摘要:介绍 CharsetUtil主要针对编码操作做了工具化封装,同时提供了一些常用编码常量。 常量 常量在需要编码的地方直接引用,可以很好的提高便利性。 字符串形式 ISO_8859_1 UTF_8 GBK Charset对象形式 CHARSET_ISO_8859_1 CHARSET_UTF_8 CHA
阅读全文
摘要:介绍 SPI(Service Provider Interface),是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 更多介绍见:https://www.jianshu.com/p/3a3edbcd8f24 使用 定
阅读全文
摘要:介绍 法人和其他组织统一社会信用代码制度,相当于让法人和其他组织拥有了一个全国统一的“身份证号”。 规则如下: 第一部分:登记管理部门代码1位 (数字或大写英文字母) 第二部分:机构类别代码1位 (数字或大写英文字母) 第三部分:登记管理机关行政区划码6位 (数字) 第四部分:主体标识码(组织机构代
阅读全文
摘要:介绍 在数据处理或清洗中,可能涉及到很多隐私信息的脱敏工作,因此Hutool针对常用的信息封装了一些脱敏方法。 现阶段支持的脱敏数据类型包括: 用户id 中文姓名 身份证号 座机号 手机号 地址 电子邮件 密码 中国大陆车牌,包含普通车辆、新能源车辆 银行卡 整体来说,所谓脱敏就是隐藏掉信息中的一部
阅读全文
摘要:由来 在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是IdcardUtil应运而生。 IdcardUtil从3.0.4版本起加入Hutool工具家族,升
阅读全文
摘要:由来 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做: String content = "ZZZaaabbbccc中文1234"; Pattern pattern = Pa
阅读全文
摘要:介绍 引用工具类,主要针对Reference 工具化封装 主要封装包括: SoftReference 软引用,在GC报告内存不足时会被GC回收 WeakReference 弱引用,在GC时发现弱引用会回收其对象 PhantomReference 虚引用,在GC时发现虚引用对象,会将PhantomRe
阅读全文
摘要:在Java中,对文件、文件夹打包,压缩是一件比较繁琐的事情,我们常常引入Zip4j (opens new window)进行此类操作。但是很多时候,JDK中的zip包就可满足我们大部分需求。ZipUtil就是针对java.util.zip做工具化封装,使压缩解压操作可以一个方法搞定,并且自动处理文件
阅读全文
摘要:介绍 在分布式环境中,唯一ID生成应用十分广泛,生成方法也多种多样,Hutool针对一些常用生成策略做了简单封装。 唯一ID生成器的工具类,涵盖了: UUID ObjectId(MongoDB) Snowflake(Twitter) 使用 UUID UUID全称通用唯一识别码(universally
阅读全文
摘要:说明 RandomUtil主要针对JDK中Random对象做封装,严格来说,Java产生的随机数都是伪随机数,因此Hutool封装后产生的随机结果也是伪随机结果。不过这种随机结果对于大多数情况已经够用。 使用 RandomUtil.randomInt 获得指定范围内的随机数 例如我们想产生一个[10
阅读全文
摘要:介绍 数组工具中的方法在2.x版本中都在CollectionUtil中存在,3.x之后版本(包括4.x版本)中拆分出来作为ArrayUtil。数组工具类主要针对原始类型数组和泛型数组相关方法进行封装。 数组工具类主要是解决对象数组(包括包装类型数组)和原始类型数组使用方法不统一的问题。 方法 判空
阅读全文
摘要:在Java世界中,如果想与其它语言打交道,处理调用接口,或者JNI,就是通过本地命令方式调用了。Hutool封装了JDK的Process类,用于执行命令行命令(在Windows下是cmd,在Linux下是shell命令)。 方法 基础方法 exec 执行命令行命令,返回Process对象,Proce
阅读全文
摘要:枚举(enum)算一种“语法糖”,是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。Java从JDK5开始,引入了对枚举的支持。 E
阅读全文
摘要:类处理工具 ClassUtil 这个工具主要是封装了一些反射的方法,使调用更加方便。而这个类中最有用的方法是scanPackage方法,这个方法会扫描classpath下所有类,这个在Spring中是特性之一,主要为Hulu (opens new window)框架中类扫描的一个基础。下面介绍下这个
阅读全文
摘要:在Hutool群友的强烈要求下,在3.2.0+ 中新增了ClipboardUtil这个类用于简化操作剪贴板(当然使用场景被局限)。 使用 ClipboardUtil 封装了几个常用的静态方法: 通用方法 getClipboard 获取系统剪贴板 set 设置内容到剪贴板 get 获取剪贴板内容 针对
阅读全文
摘要:由来 分页工具类并不是数据库分页的封装,而是分页方式的转换。在我们手动分页的时候,常常使用页码+每页个数的方式,但是有些数据库需要使用开始位置和结束位置来表示。很多时候这种转换容易出错(边界问题),于是封装了PageUtil工具类。 使用 transToStartEnd 将页数和每页条目数转换为开始
阅读全文
摘要:针对 java.lang.reflect.Type 的工具类封装,最主要功能包括: 获取方法的参数和返回值类型(包括Type和Class) 获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型) 方法 首先我们定义一个类: public class TestClass { public List
阅读全文
摘要:Java的反射机制,可以让语言变得更加灵活,对对象的操作也更加“动态”,因此在某些情况下,反射可以做到事半功倍的效果。Hutool针对Java的反射机制做了工具化封装,封装包括: 获取构造方法 获取字段 获取字段值 获取方法 执行方法(对象方法和静态方法) 使用 获取某个类的所有方法 Method[
阅读全文
摘要:在我们的日常使用中,有些方法是针对Object通用的,这些方法不区分何种对象,针对这些方法,Hutool封装为ObjectUtil。 方法 默认值 借助于lambda表达式,ObjectUtil可以完成判断给定的值是否为null,不为null执行特定逻辑的功能。 final String dateS
阅读全文
摘要:由来 在日常编码中,我们接触最多的除了JSON外,就是XML格式了,一般而言,我们首先想到的是引入Dom4j包,却不知JDK已经封装有XML解析和构建工具:w3c dom。但是由于这个API操作比较繁琐,因此Hutool中提供了XmlUtil简化XML的创建、读和写的过程。 使用 读取XML 读取X
阅读全文
摘要:介绍 URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示互联网上的资源,如网页或者FTP地址。在Java中,也可以使用URL表示Classpath中的资源(Resource)地址。 方法 获取URL对象 URLUtil.url 通过一个字符
阅读全文
摘要:介绍 HashUtil其实是一个hash算法的集合,此工具类中融合了各种hash算法。 方法 这些算法包括: additiveHash 加法hash rotatingHash 旋转hash oneByOneHash 一次一个hash bernstein Bernstein's hash univer
阅读全文
摘要:转义和反转义工具类Escape / Unescape。escape采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。 此类中的方法对应Javascript中
阅读全文
摘要:十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(其中:AF即1015)。例如十进制数57,在二进制写作111001,在16进制写作39。 像java,c这样的语言为了区分十六进制和十进制数值,会在十六进制数的前面加上 0x,比如0x20是十进制的
阅读全文
摘要:这个工具的用处类似于Apache Commons Lang (opens new window)中的StringUtil,之所以使用StrUtil而不是使用StringUtil是因为前者更短,而且Str这个简写我想已经深入人心了,大家都知道是字符串的意思。常用的方法例如isBlank、isNotBl
阅读全文
摘要:什么是ClassPath 简单说来ClassPath就是查找class文件的路径,在Tomcat等容器下,ClassPath一般是WEB-INF/classes,在普通java程序中,我们可以通过定义-cp或者-classpath参数来定义查找class文件的路径,这些路径就是ClassPath。
阅读全文
摘要:ResourceUtil提供了资源快捷读取封装。 使用 ResourceUtil中最核心的方法是getResourceObj,此方法可以根据传入路径是否为绝对路径而返回不同的实现。比如路径是:file:/opt/test,或者/opt/test都会被当作绝对路径,此时调用FileResource来读
阅读全文
摘要:资源(Resource)在Hutool中是一个广泛的概念,凡是存储数据的地方都可以归类到资源,那为何要提供一个如此抽象的接口呢? 在实际编码当中,我们需要读取一些数据,比如配置文件、文本内容、图片甚至是任何二进制流,为此我们要加入很多的重载方法,比如: read(File file){...} re
阅读全文
摘要:文件名操作工具类,主要针对文件名获取主文件名、扩展名等操作,同时针对Windows平台,清理无效字符。 此工具类在5.4.1之前是FileUtil的一部分,后单独剥离为FileNameUtil工具。 使用 获取文件名 File file = FileUtil.file("/opt/test.txt"
阅读全文
摘要:有时候我们要启动一个线程实时“监控”文件的变化,比如有新内容写出到文件时,我们可以及时打印出来,这个功能非常类似于Linux下的tail -f命令。 使用 Tailer tailer = new Tailer(FileUtil.file("f:/test/test.log"), Tailer.CON
阅读全文
摘要:顾名思义,FileAppender类表示文件追加器。此对象持有一个文件,在内存中积累一定量的数据后统一追加到文件,此类只有在写入文件时打开文件,并在写入结束后关闭之。因此此类不需要关闭。 在调用append方法后会缓存于内存,只有超过容量后才会一次性写入文件,因此内存中随时有剩余未写入文件的内容,在
阅读全文
摘要:相应的,文件读取有了,自然有文件写入类,使用方式与FileReader也类似: FileWriter writer = new FileWriter("test.properties"); writer.write("test"); 写入文件分为追加模式和覆盖模式两类,追加模式可以用append方法
阅读全文
摘要:使用 在JDK中,同样有一个FileReader类,但是并不如想象中的那样好用,于是Hutool便提供了更加便捷的FileReader类。 //默认UTF-8编码,可以在构造中传入第二个参数做为编码 FileReader fileReader = new FileReader("test.prope
阅读全文
摘要:使用 这个工具类使用非常简单,通过调用FileTypeUtil.getType即可判断,这个方法同时提供众多的重载方法,用于读取不同的文件和流。 File file = FileUtil.file("d:/test.jpg"); String type = FileTypeUtil.getType(
阅读全文
摘要:很多时候我们需要监听一个文件的变化或者目录的变动,包括文件的创建、修改、删除,以及目录下文件的创建、修改和删除,在JDK7前我们只能靠轮询方式遍历目录或者定时检查文件的修改事件,这样效率非常低,性能也很差。因此在JDK7中引入了WatchService。不过考虑到其API并不友好,于是Hutool便
阅读全文
摘要:在IO操作中,文件的操作相对来说是比较复杂的,但也是使用频率最高的部分,我们几乎所有的项目中都躺着一个叫做FileUtil或者FileUtils的工具类,我想Hutool应该将这个工具类纳入其中,用来解决大部分的文件操作问题。 总体来说,FileUtil类包含以下几类操作工具: 文件操作:包括文件目
阅读全文
摘要:方法 拷贝 流的读写可以总结为从输入流读取,从输出流写出,这个过程我们定义为拷贝。这是一个基本过程,也是文件、流操作的基础。 以文件流拷贝为例: BufferedInputStream in = FileUtil.getInputStream("d:/test.txt"); BufferedOutp
阅读全文
摘要:由来 IO的操作包括读和写,应用场景包括网络操作和文件操作。IO操作在Java中是一个较为复杂的过程,我们在面对不同的场景时,要选择不同的InputStream和OutputStream实现来完成这些操作。而如果想读写字符流,还需要Reader和Writer的各种实现类。这些繁杂的实现类,一方面给我
阅读全文
摘要:Hutool通过封装TimeInterval实现计时器功能,即可以计算方法或过程执行的时间。 TimeInterval支持分组计时,方便对比时间。 使用 TimeInterval timer = DateUtil.timer(); // // 这是执行过程 // timer.interval();/
阅读全文
摘要:在Java开发中,我们经常需要处理与时间和日期相关的任务。多年来,java.util.Date类一直是处理日期和时间的主要工具。然而,随着Java 8的发布,我们有了更好的选择:java.time包中的LocalDateTime类。在本文中,我们将探讨为什么在现代Java开发中,推荐使用LocalD
阅读全文
摘要:介绍 从Hutool的5.4.x开始,Hutool加入了针对JDK8+日期API的封装,此工具类的功能包括LocalDateTime和LocalDate的解析、格式化、转换等操作。 使用 日期转换 String dateStr = "2020-01-23T12:23:56"; DateTime dt
阅读全文
摘要:介绍 农历日期,提供了生肖、天干地支、传统节日等方法。 使用 构建ChineseDate对象 ChineseDate表示了农历的对象,构建此对象既可以使用公历的日期,也可以使用农历的日期。 //通过农历构建 ChineseDate chineseDate = new ChineseDate(1992
阅读全文
摘要:考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。 对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,
阅读全文
摘要:日期时间包是Hutool的核心包之一,提供针对JDK中Date和Calendar对象的封装,封装对象如下: 日期时间工具 DateUtil 针对日期时间操作提供一系列静态方法 DateTime 提供类似于Joda-Time中日期时间对象的封装,继承自Date类,并提供更加丰富的对象方法。 FastD
阅读全文
摘要:在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数、从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢?常用的办法是先整成String,然后调用XXX.parseXXX方法,还要承受转换失败的风险,不得不加一层try catc
阅读全文
摘要:解决什么问题 我们知道,JDK中的Cloneable接口只是一个空接口,并没有定义成员,它存在的意义仅仅是指明一个类的实例化对象支持位复制(就是对象克隆),如果不实现这个类,调用对象的clone()方法就会抛出CloneNotSupportedException异常。而且,因为clone()方法在O
阅读全文
摘要:maven仓库jar包下载太慢 阿里镜像推荐 一、仓库地址 Maven仓库1 : http://repo1.maven.org/maven2 maven maven http://repo1.maven.org/maven2 central Maven仓库2:http://repo2.maven.o
阅读全文
摘要:一、下载 MySQL官网 https://dev.mysql.com/downloads/mysql/ 二、安装图解
阅读全文
摘要:4.采用计算机和网络通信技术的最新成果 ERP除了已经普遍采用的图形用户界面技术(GUI)、结构化查询语言(SQL)、关系型数据库管理系统(RDBMS)、面向对象技术(OOT)、第四代语言/计算机辅助软件工程客户一服务器和分布式数据处理系统等技术之外,还要实现更为开放的不同平台间的相互操作,采用适用
阅读全文
摘要:3.体现事先计划与实时决策的思想 ERP系统中的计划体系主要包括:主生产计划、物流需求计划、能力需求计划、采购计划、销售执行计划、利润计划、财务预算和人力资源计划等,而且这些计划功能与价值控制功能已完全集成到整个供应链系统中。 另一方面,ERP系统通过定义与事务处理相关的会计核算科目和核算方式,在事
阅读全文
摘要:2.体现精益生产、敏捷制造和并行工程的思想 ERP支持对混合型生产方式的管理,其管理思想表现在两方面: 一是“精益生产LP”,即企业按大批量生产方式组织生产时,把客户、销售代理商、供应商、协作单位纳入生产体系,企业同其销售代理、客户和供应商的关系已不再是简单的业务往来关系,而是利益共享的合作伙伴关系
阅读全文
摘要:1.支撑整个供应链管理 供应链管理(SCM)是通过前馈的信息流(需方向供方流动,如订货合同、加工单采购单等)、反馈的物料流和信息流(供方向需方流动的物料流及伴随的供给信息流,如提货单、入库单、完工报告等),使供应商、制造商、分销商、零售商的最终用户连成一个整体的模式。供应链既是一条从供应商到用户的物
阅读全文
摘要:AOP 的设计: 每个 Bean 都会被 JDK 或者 Cglib 代理。取决于是否有接口。 每个 Bean 会有多个“方法拦截器”。注意:拦截器分为两层,外层由 Spring 内核控制流程,内层拦截器是用户设置,也就是 AOP。 当代理方法被调用时,先经过外层拦截器,外层拦截器根据方法的各种信息判
阅读全文
摘要:一、下载 网络搜索下载破解版 二、注册 三、打开idea 四、在idea中打开maven项目 选择pom.xml文件打开项目 五、idea中设置maven 一定要选择自己的maven,不然可能会编译失败 六、编译完成后,就可以开始开发工作了
阅读全文
摘要:一、官网下载 https://git-scm.com/ 二、下载安装程序后 直接点击下载下一步,下一步完成 三、完成后下载代码 鼠标右键会有,git-bash功能菜单选项,然后就可以使用git相关命令 查看文件状态 git status 查看文件改动详情 git diff 添加所有文件到暂存区 gi
阅读全文
摘要:一、maven下载 官网地址: https://maven.apache.org/download.cgi 最新版maven,最好选择3.8版本以上 其他版本maven: 二、安装 下载完成后直接解压 三、环境变量配置 重复的配置,我就不详细说了
阅读全文
摘要:一、下载java版本 现在大多数项目使用的java版本为jdk1.8 双击安装程序 一直下一步,选择好自己的安装路径。 二、环境配置 进入系统高级配置 添加配置JAVA_HOME环境变量 再在PATH变量中将该环境变量的bin目录添加到环境变量,如下图所示: 配置如下图所示
阅读全文
摘要:一、打开VUE项目的文件夹 二、package.json中有很多运行脚本 对应执行即可,启动项目
阅读全文
摘要:一、官网下载VSCode 官网地址:https://code.visualstudio.com/ 下载对应版本后,双击安装程序 二、插件安装 下载完成后,点击安装中文插件 查询选择安装其他必要的插件
阅读全文
摘要:一、node.js安装 node.js官网地址:https://nodejs.org/en 下载node.js 下载完成后,双击安装 一直下一步: 二、设置镜像地址 查看当前镜像源 npm config get registry 切换镜像源下载 阿里云: npm config set registr
阅读全文
摘要:ERP 系统的主要功能模块 前面我们介绍了ERP的基本摄念和发展历程、对ERP有了一个感性的认识。本中我们格进一步来熟悉ERP系统的主要功能模块、使大家在功能上对ERP有深一层理解 我们都知道,ERP理论是依靠具体的系统软件产品来实现的,但是国内外不同软件。 产商的ERP软件产品都不尽相同,风格和侧
阅读全文
摘要:企业资源计划(ERP) 之前,分别介绍了ROP、MRP、闭环MRP和MRP II 的理论知识,这些理论在相应的历史阶段都发挥了极其重要的作用,对传统制造型企业的发展和壮大影响深远。进入20世纪90年代,随着市场竞争进一步加剧,企业的竞争空间和竞争范围变得更加广阔,20世纪80年代主要面向企业内部资源
阅读全文
摘要:MRP Ⅱ 理论的局限性 MRPI思想的局限性主要表现在以下几个方面: (1)企业竞争范围的扩大,要求在企业的各个方面加强管理,并要求企业有更高的信息化集成,要求对企业的整体资源进行集成管理,而不仅仅只是对制造资源进行集成管理。 现代企业都意识到,企业的竞争是综合实力的竞争,要求企业有更强的资金实力
阅读全文
摘要:制造资源计划(MRPI) 20世纪70年代末和80年代初,物料需求计划MRP经过发展和扩充逐步形成了资源计划的生产管理方式。制造资源计划(manufacturingresources planning,MRPI)是指以物料需求计划MRP为核心的闭环生产计划与控制系统,它将MRP的信息共享扩大,使生产
阅读全文
摘要:闭环 MRP 时段式MRP能根据有关数据计算出相关物料需求的准确时间与数量,但它还不够完善,其主要缺陷是没有考虑到生产企业现有的生产能力和采购的有关条件约束。因此计算出来的物料需求日期有可能因设备和工时的不足而没有能力生产,或者因原料的不足而无法生产。同时,它也缺乏根据计划实施情况的反馈信息对计划进
阅读全文
摘要:物料需求计划(MRP) 20世纪60年代中期,美国IBM公司奥列基博士(DrJosephA.Orlicky)首先提出物料需求计划(materialrequirements planning.MRP)方案。把企业生产中涉及的所有产品零部件、原材料、中间件等,在逻辑上统一视为物料,再把企业生产中需要的各
阅读全文
摘要:库存订货点方法(ROP) 企业为了维持均衡的生产,一般会有相应的原材料和产成品库存,作为应付异常变化的一种缓冲手段。但是,库存要占用流动资金,应该考虑机会成本、库存需要场所和管理人员带来的相关费用,以及库存物可能丢失、变质、贬值、淘汰,造成损失。因此说明,企业在不断地为库存付出代价。如何协调生产与库
阅读全文
摘要:ERP发展的几个阶段 企业生产经营活动的最终目的是获取利润,为了达到此目的,就必须合理地组织和有效地利用设备、人员、物料等制造资源,以最低的成本、最短的制造周期、最高的质量生产出满足顾客需求的产品。为此,必须采取先进且十分有效的生产管理技术来组织、协调、计划与控制企业的生产经营活动。MRP II、E
阅读全文
摘要:企业在发展过程中经常会遇到如下现象。 现象一:企业发展带来的麻烦 某企业开始创业时,只有不到10个人。此时企业的老板对企业的方方面面都是清清楚楚的,如他的客户是谁,他的供应商是谁,他的产品是如何构成的,客户还欠他多少钱,他欠供应商多少钱,他每卖出一个产品能赚多少钱等。后来这个企业发展到了百人以上,销
阅读全文
摘要:中国正式加入WTO后,全球众多制造业巨头都想争夺中国这个大市场,中国成为亚太地区的制造业中心,大量外资的注入,给中国本土的企业带来了相当大的冲击,同时也带来了前所未有的发展机遇。各行各业都在思考该如何面对来自经济、生活、文化等诸多方面的影响。一方面大量的国货可以走进世界市场,另一方面,更多的洋货走进
阅读全文