- 博客(192)
- 资源 (2)
- 收藏
- 关注
原创 中等难度算法题—字符串加密
有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,将所得结果作为新字母表开头,并将新建立的字母表中未出现的字母按照正常字母表顺序加入新字母表。在对信息进行加密时,信息中的每个字母被固定于顶上那行,并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。数据范围:1≤n≤100 ,保证输入的字符串中仅包含小写字母。请实现下述接口,通过指定的密匙和明文得到密文。
2024-06-27 16:15:15
151
原创 WCS立体仓
【自动仓储系统】共分为三层,最上层是WMS仓库管理系统,主要负责仓储业务逻辑处理,最下层是具体的物流设备,比如全自动(AGV)小车、机器人等,而WCS位于WMS与物流设备之间,负责协调调度各个物流设备,执行仓储系统的业务流程需要使用底层物流设备,该过程全权由预设的程序执行,全程无须人工。WCS设备调度系统在自动化立体库上的不断实践,优化,升级目前已经具备相当完善的功能,WCS系统功能包含:上位系统同步、任务准备、步骤执行、监控看板、设备单机控制、设备通讯、设备运行日志、日志存档方式。
2024-06-07 16:54:26
835
原创 银企直连业务
银行回单指银行在办理业务后出示的一个有效凭证,用来证明在银行办理了某种业务。企业每天发生的收付款业务都会有银行回单与之对应,用来企业日常的账务处理。电子回单记载了企业网上付款交易的各种详细信息。当流水和回单记录到系统后,根据流水号、账户号、金额等信息自动搜寻到系统中对应的流水或回单。
2024-05-26 18:00:44
240
1
原创 CRM系统业务学习
在CRM销售域里的账号都要和HR系统关联,如果离职了,CRM这里也会不允许登陆。线索与线索池、客户与公海池、跟进计划与跟进记录、联系人、商机等。线索管理、客户管理、商机管理、订单管理、财务管理、薪酬管理。通知公告、待办消息、线索跟进、日历任务。录入、领取、跟进、转换。
2024-05-14 15:51:47
175
原创 WMS系统业务学习
需求—采购申请—报价请求—供应商报价—采购订单—接收—付款。业务流程:采购订单—到货预约—货物交接—(质检)—上架。销售订单审核—任务拆解分配任务—拣货确认—出库交接。销售订单审核—波次管理—拣货—验货打包—称重交接。核心功能聚焦于入库及出库管理的各个作业环节。库位管理—盘点—批次/SN—动态库存。仓内转移—仓间调拨—补货—库内加工。销售定价—订单—发运—收款—开票。
2024-05-14 11:21:29
216
原创 ERP与MES与WMS集成
刚好最近接入了一些KA型客户,这些客户希望A海外仓能提供一套对外的OpenAPI,然后通过接口可以实现从客户的ERP或者后台管理系统直接推送商品数据、业务单据到WMS。A零售公司,之前都是做线下的批发和零售业务,对接的都是一些主要做B2B业务的仓库。最近根据业务的规划要开拓电商业务,所以想要对接B2C的电商相关的仓库,目前已经找好了一家意向的仓库,对方用的是B公司的WMS,所以需要对接B公司的WMS接口。终端用户使用RFID(无线射频技术)平台,来查看供应链中流通的货品,以实现简化的自动化操作。
2024-05-13 00:24:06
312
原创 mes系统业务学习
有那些车间,车间里有那些产线,产线上有那些工序,工序上的工位是什么,安排的是设备还是人员。系统对即将进行生产的物料进行预占库存,并在物料实际使用之前,进行扣减。mes线边库预占量可以减少因物料不足导致的工人停工、加班等情况。叫料是指生产过程中向上级工序提出的原材料或零部件的请求,以便下一步制作。从产品原材料到成品的各环节追溯。每个产品在生产过程中都被赋予一个唯一的标识码或批次号,系统可以记录该产品的生产过程和相关信息。通过批次管理,可以精确追踪每个产品的原材料来源、生产工艺、生产人员等关键信息。
2024-05-11 17:03:24
903
原创 CRM(客户关系管理系统)
在CRM套件的基础上自定义编辑/搭建了适合公司业务的CRM+ERP 两大应用,将两大管理环节进行联动,实现信息互通、高效管理。很多客户有复杂的订单成本计算方式,复杂多变的审批流程,个性化/流程化的数据结构,没有自定义能力就很难满足。数据导入->公海池/客户->商机填写->合同审批->仪表盘数据呈现。管理线索/客户->管理商机->管理合同执行。可新增:询价、招投标、项目管理等。
2024-05-08 16:52:34
232
原创 银行ETL-监管报送
事实表就是你要关注的内容。维度表就是你观察该事务的角度。拉链表是为了保留历史数据,并且使存储最为节约。不需要保留历史记录的表一般不做拉链表。
2024-05-04 21:15:43
845
原创 redis分布式锁的使用
分布式锁工具类LockUtils.javapackage com.shein.pmj.utils;import lombok.extern.slf4j.Slf4j;@Slf4jpublic final class LockUtils { /** * 分布式锁,根据业务情况传入缓存失效时间 * PS:上面的tryGetLock,自增和设置失效时间不是原子的,如果redis自增后, * 系统正好挂了,此时还未设置时效时间,那么定时任务当天就无法执行了(出现概率
2023-08-08 09:11:39
151
原创 复杂SQL优化实例
重写为 JOIN 之后,子查询的选择模式从 DEPENDENT SUBQUERY 变成 DERIVED,执行速度大大加快,从7秒降低到2毫秒。比如下面 UPDATE 语句,MySQL 实际执行的是循环/嵌套子查询(DEPENDENT SUBQUERY),其执行时间可想而知。这种写法不仅存在额外的开销,还使得整个语句显的繁杂。在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的。不难看出子查询 c 是全表聚合查询,在表数量特别大的情况下会导致整个语句的性能下降。
2023-06-06 17:21:56
650
1
原创 复杂SQL实践-MYSQL
题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。窗口函数总体上可以分为序号函数, 分布函数, 前后函数, 首尾函数和其他函数。MySQL从8.0版本开始支持窗口函数。限定条件:第二天再来。会过滤掉不符合的记录。
2023-05-30 21:24:39
607
原创 物联网网络通讯知识
RS485是一个物理接口,DTU和传感器就是通过RS485接口进行连接的。标准的串行工业协议。可以支持RS485,RS232接口。举个简单的例子,服务器下发读取雨量计的命令:分别对应的该传感器的通信id,功能码等。如下图,这是一串指令。
2023-05-20 11:08:06
514
原创 实现布隆过滤器
它实际上是由一个很长的二进制数组+一系列hash算法映射函数,用于判断一个元素是否存在于集合中。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
2023-05-16 11:27:08
127
原创 k8s简单记录
while true;每隔3秒向文件中写入当前时间。创建一个/tmp/hello.txt 文件。“/bin/sh”,“-c”, 使用sh执行命令。
2023-05-15 15:45:27
558
原创 spring项目里的大事务优化
少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据非事务执行异步处理。
2023-05-15 10:22:18
539
原创 oracle的OLAP 函数
*OLAP(On-line Analytical Processing,联机分析处理)**是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。
2023-05-11 22:26:04
180
原创 Dockerfile部署java项目
要想退出 container 时,让 container 仍然在后台运行着,可以使用“docker exec -it”命令。这是一个多步骤的dockerfile,第一步git下载代码,第二步使用maven进行打包,第三步将运行时环境准备好,并设置命令。将DockerFile 配置文件放到 maven项目目录内,和pom.xml同级。/bin/bash:在container中启动一个bash shell。自动检测的文件名为Dockerfile ,使用。: 保持标准输入打开,默认为false;
2023-05-09 16:06:13
1182
原创 SQL知识汇总
为了应对这种业务场景,MySQL有一种专有语法,一条SQL语句实现插入或更新,可单条可批量。使用要点表要求必须有主键或唯一索引才能起效果,否则insert或update无效。该语法是根据主键或唯一键来判断是新增还是更新。VALUES() 后面应为需要更新的字段,不需要更新的字段不用罗列。遇到已存在记录(根据唯一键或主键)时,自动更新已有的数据;如果表中有多个唯一键(可以是单列索引或复合索引),则任意一个唯一键冲突时,都会自动更新数据。
2023-05-03 17:32:54
1910
原创 SpringBoot单元测试断言 assertions
断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法。加断言可以避免对数据库的误操作,以及缩短测试流程(断言失败就不再执行之后的代码了)上面一个是我测试建的,如果要新建应该选第二个:Create New Test…待测试的Service方法就不贴了,根据自己的实际情况写逻辑就行;也可以设置异常报文,第一个参数是期望值,第二个参数是实际值。会弹出新建测试类的框。
2023-04-18 15:00:10
1640
原创 sql优化总结
在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。
2023-04-18 14:30:55
363
原创 JAVA代码优化实践
这样做的好处是,减少了读写文件的次数,而我们都知道读写文件是非常耗时的操作。最关键的地方是定义了一个buffer字节数组,把从1.txt文件中读取的数据临时保存起来,后面再把该buffer字节数组的数据,一次性批量写入到2.txt中。IO流想必大家都使用得比较多,我们经常需要把数据写入某个文件,或者从某个文件中读取数据到内存中,甚至还有可能把文件a,从目录b,复制到目录c下等。因为这个例子中,从1.txt文件中读一个字节的数据,就会马上写入2.txt文件中,需要非常频繁的读写文件。
2023-04-17 18:05:15
348
原创 Java Stream API的使用
日常编程工作中,Java集合会经常被使用到,且经常需要对集合做一些类似过滤、排序、对象转换之类的操作。为了简化这类操作,Java8添加了一套新的Stream API,使用方式就像写SQL一样,大大简化了这类处理的实现代码量与可读性。
2023-04-17 17:19:54
330
原创 多线程事务怎么回滚?
1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。3,下面用一个简单示例演示多线程事务。
2023-04-17 15:41:56
274
原创 Java的CPU 飙升700%优化的真实案例
最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?
2023-04-17 11:14:47
329
原创 runnable和callable的区别
runnable和callable的区别主要在于它们的用途和实现方式。主要区别:orcallable的执行,被ExecutorService执行or作为FeatureTask的参数or使用FeatureTask这里还有一个很好的总结
2023-03-31 11:42:10
1054
原创 Snowflake算法生成分布式全局唯一ID
3)22~62位(共41bit)表示时间戳,最大值2^41=2 199 023 255 552(单位:ms),意味着在这么多时间内我们可以肆意妄为地制造ID。1)0~11位(共12bit)表示序列号,最大值2^12=4096,意味着在一个时间单位(例如1毫秒)内最多可以生成4096个ID;2)12~21位(共10bit)表示机器id,最大值2^10=1024,意味着支持的最大集群规模为1024台机器。4) 63位(共1bit)最高位是符号位,不使用,设置为固定值“0”。
2023-03-31 10:38:44
106
原创 索引失效-sql
下面的例子中,dept_id是一个varchar2型的字段,在这个字段上有索引,但是下面的语句会执行全表扫描。如果被索引的列中有很多null,就不会使用这个索引。如果没有使用基于函数的索引,那么where子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。通过把用 or 语法替代不等号进行查询,就可以使用索引,以避免全表扫描:上面的语句改成下面这样的,就可以使用索引了。但是把函数应用在条件上,索引是可以生效的,把上面的语句改成下面的语句,就可以通过索引进行查找。
2023-03-28 17:35:09
580
原创 Java中的双冒号“::”
形如 ClassName::methodName 或者 objectName::methodName 的表达式,叫做方法引用(Method Reference)。看看编译器是如何根据 “晦涩难懂” 的 Method Reference 来推断开发者的意图的。方法引用的格式是类名::方法名。一般是用作Lambda表达式。
2023-03-21 16:18:04
5060
原创 java8之在Map中新增的好用api
java8之后,常用的Map接口中添加了一些非常实用的函数,可以大大简化一些特定场景的代码编写,提升代码可读性。
2023-03-21 15:54:16
269
原创 Java 判空新写法,干掉 if else
在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示在这种情况下,有如下代码这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法这种写法是比较丑陋的,为了避免上述丑陋的写法,让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明。
2023-03-20 16:20:35
160
原创 mybatis批量插入5000+条数据
在我们的项目中,会不停地使用批量插入这个方法,而因为MyBatis对于含有的语句,无法采用缓存,那么在每次调用方法时,都会重新解析sql语句。乍看上去这个foreach没有问题,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长,达到了14分钟,这是不能忍的。总结一下,如果MyBatis需要进行批量插入,推荐使用 ExecutorType.BATCH 的插入方式,如果非要使用插入的话,需要将每次插入的记录控制在 20~50 左右。
2023-03-20 15:50:59
1129
原创 Java的CPU 飙升700%优化的真实案例
最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?
2023-03-19 11:44:11
1237
《Java并发编程实战》
2017-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人