- 博客(122)
- 资源 (15)
- 收藏
- 关注
原创 JDK8对List对象根据属性排序
JDK8对List对象根据属性排序。排序字段为空时候报空指针异常,处理方式:1.Comparator.nullsLast:排序字段为null的排在后面 2.Comparator.nullsFirst:排序字段为null的排在前面。Stream流的方式students.stream().map(student -> { if("".equals(student.getName())){ student.setName(null);
2024-01-30 21:59:26
2807
原创 使用POI生成word文档的table表格
poi生成word文档的table表格,2种方式:1.生成一行一列的table,然后添加合并等操作;2.生成固定行列的table。table表格列合并:row4.getCell(0).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART); row4.getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);分页的两种方式:document.creat
2024-01-24 19:55:12
3301
原创 spire.doc合并word文档
spire.doc合并word文档Document document = new Document(file1);//将文档file2内容完全插入到文档file1document.insertTextFromFile(file2, FileFormat.Docx_2013);document.insertTextFromFile(file3, FileFormat.Docx_2013);document.saveToFile(mergeFilePath, FileFormat.Docx_2013)
2024-01-24 19:12:56
1120
1
原创 git本地创建分支并推送到远程关联起来
如:基于本地dev分支创建test分支,并把test分支推送到远程,然后将本地test分支和远程test分支关联起来。git本地基于当前分支创建个新的分支,然后推送到远程,并把本地新创建的分支和远程分支关联。
2024-01-05 23:46:14
736
原创 ES集群分片数据的高可用
集群中的索引主分片和副分片在不同的计算机上,如果某个主分片所在的节点宕机,则原有的某个副分片会提成为主分片继续对外进行服务,如果宕机的节点恢复了服务并加入集群中,该节点主分片会降为副分片,缺少的数据会从别的节点上提升为主分片的分片进行补充。请求地址:http://localhost:9202/shopping/_search。请求地址:http://localhost:9201/shopping/_doc/1。分片1:香蕉(id=2),苹果(id=3),桔子(id=4)分片2:甜瓜(id=1)
2024-01-05 23:27:28
562
原创 ElasticSearch集群(Windows)
把elasticsearch文件夹改名为node-9201,删除data文件夹,清空log日志,拷贝成三份,分别叫node-9201,node-9202,node-9203。请求地址:http://localhost:9201/product。请求地址:http://localhost:9203/product。status字段表示当前集群在总体上是否工作正常。请求方式:PUT请求。
2024-01-04 23:23:06
660
原创 git在本地创建dev分支并和远程的dev分支关联起来
git在本地创建dev分支并和远程的dev分支关联起来。1.git命令:git checkout -b dev origin/dev;2.使用idea工具。查看本地分支和远程分支的关系git branch -vv; git branch -vv -a
2024-01-04 00:16:59
1253
原创 Oracle修改用户密码
Oracle用户修改密码:alter user 用户 identified by 密码;Oracle两种常见的锁定状态:LOCKED(TIMED)是密码错误次数超过了系统设置的允许最大次数被锁;EXPIRED & LOCKED 账号过期被锁。改为不要求密码限制输错次数:alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;密码改成永不过期:alter profile default limit password_life_time unlim
2024-01-03 23:01:58
4381
原创 ElasticSearch数据同步
ElasticSearch中酒店数据来自于mysql数据库,因此MySQL数据发生改变时,ElasticSearch也必须跟着改变,这个就是ElasticSearch和MySQL之间的**数据同步**增量的有三种方式:同步调用,异步通知,监听binlog
2024-01-03 22:19:02
1231
原创 Redis持久化
Redis持久化RDB、AOF。RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做,简单来说就是把内存中的所有数据都记录到磁盘中。当Redis故障重启后,此磁盘读取快照文件,恢复数据。AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件
2024-01-02 11:45:00
409
原创 Redis双写一致性
Redis数据双写一致性:当修改数据库中数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。延迟双删(有脏数据风险):先删缓存,再修改数据库,延时再删缓存(删除可能是脏数据的缓存)。延迟时间不可控。异步通知(数据最终一致性):基于MQ;基于canal;分布式锁(数据强一致性,性能低):使用读多写少的情况,强一致,性能低
2024-01-02 10:45:00
1324
原创 Redis数据淘汰策略
Redis数据淘汰策略:当Redis的内存不够用时,此时向Redis添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据删除操作被称之为内存的淘汰策略。LRU:最近最少使用;LFU:最少频率使用。8种淘汰策略:noeviction(默认)不淘汰任何key,当内存满时不允许写入新数据,会直接报错;volatile-ttl对设置了ttl的key,比较key的剩余ttl值,越小越优先淘汰;allkeys-random对全体key,随机进行淘汰;volatile-random对设置了ttl
2024-01-02 09:45:00
402
原创 Redis缓存穿透,缓存击穿,缓存雪崩
Redis缓存穿透,缓存击穿,缓存雪崩。缓存穿透:查询一个不存在的数据,mysql查询不到也不会写入缓存,导致每次请求都查数据库。解决方案:1.缓存空数据;2.使用布隆过滤器。缓存击穿:某个key设置了过期时间,过期时候有大量并发请求过来,这些并发请求瞬间把mysql压垮。解决方案:1.互斥锁;2.逻辑过期.缓存雪崩:同一时间大量的缓存key同时过期或者Redis服务宕机,导致大量的请求到达mysql,给mysql带来巨大压力。解决方案:1.redis集群提高服务可用性;2.多级缓存;3.降级限流;4.给k
2024-01-02 09:00:00
1132
原创 Redis数据删除策略(惰性删除+定期删除)
Redis数据删除策略:惰性删除+定期删除。惰性删除:设置key过期时间后,不管它,需要用该key时,再检查是否过期,过期就删掉,没过期返回。对CPU友好,对内存不友好。定期删除:每隔一堆时间,对一些key(随机)进行检查,删除里面过期的key。两种模式:SLOW模式和FAST模式。SLOW模式:定时任务,执行频率默认10hz,每次不超过25ms。在redis.conf中修改。FAST模式:执行频率不固定,两次间隔不低于2ms,每次耗时不超过1ms。优点:可以限制操作的执行时长和频率来减少对cpu的影响缺点
2024-01-02 02:46:13
1437
原创 策略设计模式
策略(Strategy)模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。**策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法实现分割开来,并委派给不同的对象把这些算法进行管理。**主要角色:1)抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或者抽象类来实现。2)具体策略(Concrete Strategy)类:实现了抽象策略定义
2023-12-03 22:26:54
203
原创 Redis之zset类型
Redis之zset类型:添加元素:ZADD key score member [score member ...]按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素:ZRANGE key start stop [WITHSCORES]获取元素的分数:ZSCORE key member删除元素:ZREM key member [member ...]获取指定分数范围的元素:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset
2023-09-27 20:17:28
256
原创 Redis之set类型
Redis之set类型:添加元素:SADD key member [member ...]删除元素:SREM key member [member ...]获取集合中的所有元素:SMEMBERS key判断元素是否在集合中:SISMEMBER key member获取集合中的元素个数:SCARD key从集合中随机弹出一个元素,元素不删除:SRANDMEMBER key [数字]从集合中随机弹出一个元素,出一个删一个:SPOP key将元素从一个集合转移到另外一个集合:SMOVE ...
2023-09-25 21:27:29
532
原创 使用JAXB将Java对象转xml
使用JAXB将Java对象转xmlpublic class XmlUtil { public static String objToXml(Object obj) { try { //创建JAXB对象,用于映射java类和xml JAXBContext context = JAXBContext.newInstance(obj.getClass()); //创建Marshaller对象,用于将java对象序列
2023-09-22 23:32:05
589
原创 Redis之list类型
Redis之list类型:向列表左边添加元素:LPUSH key value [value...]向列表右边添加元素:RPUSH key value [value...]从列表左边弹出元素:LPOP key从列表右边弹出元素:RPOP key查看列表:LRANGE key start stop获取列表中元素的个数:LLEN key删除列表中指定的值:LREM key count value获取/指定索引元素的值:LINDEX key index; LSET key index value
2023-09-21 21:41:22
164
原创 Redis之hash类型
Redis之hash类型设置/获取一个字段:HSET key field value; HGET key field一次设置/获取多个字段:HMSET key field value [field value ...]/HMGET key field [field ...]获取所有字段值:HGETALL key获取kye内全部field数量:HLEN key删除key内字段:HDEL key field判断字段是否存在:HEXISTS key field...
2023-09-20 20:47:47
296
原创 Redis之String类型
Redis之String类型:赋值/取值:set key value ; get key同时设置/获取多个值: mset key value [key value ...]; mget key [key ...]数值增减:INCR key; INCRBY key increment; DECR key; DECRBY key decrement;获取字符串长度:STRLEN key向尾部追加值:APPEND key value分布式锁:setnx key value;
2023-09-19 21:41:08
283
原创 使用JAXB将xml转成Java对象
使用JAXB将xml转Java对象JAXBContext类,是应用的入口,用于管理XML/Java绑定信息Unmarshaller接口,将XML数据反序列化为Java对象@XmlType,将Java类或枚举类型映射到XML模式类型@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化- PUBLIC_MEMBER :默认值,public权限亦或是具有get/set方法属性- FIELD:对象中的所有属性- PROPERT:对象中所有具备get/s
2023-09-18 21:31:26
1164
原创 Linux命令awk
Linux命令awk将文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理基本用法:awk [选项参数] '/pattern1/{action1} /pattern2/{action2}...' filenamepattern: 表示awk再数据中查找的内容,就是匹配模式action: 在找到匹配内容时所执行的一系列命令选项参数说明:-F: 指定输入文件分隔符-v: 赋值一个用户定义变量内置变量:FILENAME: 文件名NR: 已读的记录数(行号
2023-07-18 21:31:53
639
原创 Oracle存储过程的使用DEMO(一)
Oracle存储过程的使用DEMO(一)1. Oracle中块的使用2. IF使用2.1 IF...ELSE...2.2 IF嵌套3. CASE...WHEN...4. LOOP5. WHILE6. FOR
2023-07-06 14:39:40
521
原创 Linux命令sort(文件排序,并将排序结果标准输出)
Linux命令sortsort命令是将文件进行排序,并将排序结果标注输出,**文件内容并没有改变**。1. 基本语法sort(选项)(参数)-n:依照数值的大小排序-r:以相反的顺序来排序-t:设置排序时所用的分隔字符-k:指定需要排序的列参数:指定待排序的文件列表
2023-07-04 23:34:18
1124
原创 Linux文本处理工具sed(流编辑器)
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区(模式空间)中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送到屏幕。接着处理下一行,这样不断重复直到文件末尾。**文件内容并没有改变**,除非你使用重定向存储输出。1. 基本用法sed[选项参数] ‘command’ filename2. 选项参数-e:直接在指令列模式上进行sed的动作编辑3. 命令功能a:新增,a的后面可以接字符串,在下一行出现d:删除s:查找并替换
2023-07-04 23:13:45
1027
原创 Oracle序列
Oracle序列:1.删除序列:DROP SEQUENCE TEST_SEQ1;。2.创建序列:CREATE SEQUENCE TEST_SEQ1MINVALUE 1 --第二次循环MAXVALUE 20START WITH 3 --第一次循环INCREMENT BY 2CYCLENOCACHE;3.获取序列的值:SELECT TEST_SEQ1.NEXTVAL FROM DUAL;SELECT TEST_SEQ1.CURRVAL FROM DUAL;
2023-07-04 11:47:06
1036
原创 通过properties和反射优化数据对接时候属性名不一样的问题
数据对接时候,传过来的数据和自己数据库表字段的数据不一致,一般if去转换处理,但是当字段特别多时候,比如一些软属性,有几百个,分别对应到自己数据库不同表不同字段上,这个时候if这样转换代码就特别多,而且有的属性修改时候是个很大的工作量。
2023-07-03 16:43:25
392
原创 map父子维护的ebom父子部件关系计算组套数量
使用ebom时候,把部件父子关系和安装数量维护在了map上面,要计算组套数量,需要递归从当前往上取出父级安装数量相乘,一直取到最顶层。B的组套数量:B=2。
2023-07-03 11:38:37
129
原创 Linux文本处理工具cut(截切数据)
cut在文件中负责剪切数据用的。cut命令从文件每一行剪切字节、字符、和字段并将这些字节、字符和字段输出。1. 基本用法cut [选项参数] filename说明:默认分隔符是制表符2. 选项参数说明-f::列号,提取第几列-d:分隔符,按照指定分隔符分割列-b:以字节为单位进行分隔-c:以字符的单位取出,固定字符区间
2023-07-03 00:42:45
644
原创 Shell中的函数
语法: Action;funname1)必须在调用函数的地方之前,先声明函数,shell脚本是逐行运行。2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果作为返回值。return后跟数值n(0-255)
2023-07-02 00:53:59
286
原创 Shell中使用read读取控制台输入
read (选项)(参数)选项:-p: 指定读取值时的提示符:-t: 指定读取值时等待的时间(秒)参数:变量:指定读取值时的变量名在8秒内提示“请输入您的姓名:”,输入后会显示“您的姓名是:输入的名字”;如果超过8秒没有输入,就会显示“您输入的姓名是:”
2023-07-02 00:11:58
491
原创 Shell中的流程控制(if/case/for/while)
1)case行尾必须为单词“in”,没一个模式匹配必须以右括号“)”结束。双引号包含时,$*会将所有的参数作为一个整体,以$1 $2 $3 …3)最后“*)”表示默认模式,相当于java中的default。 如果变量的值都不是以上的值,则执行此程序。 如果变量的值等于值1,则执行程序1。 如果变量的值等于值2,则执行程序2。for 变量 in 值1 值2 值3…if [ 条件判断式 ];while [ 条件判断式 ]elif [ 条件判断式 ]if [ 条件判断式 ]if [ 条件判断式 ]
2023-07-01 23:55:05
506
原创 Shell中的条件判断
Shell中的条件判断1. 语法1)test condition2)[ condition ]注意: condition前后要有空格条件非空返回true,[ abc ]返回true,[ ]返回false常用条件判断:字符串比较;整数比较;文件权限判断;文件类型判断;多条件判断:[ 5 > 3 ] && echo success || echo fail[ ] && echo ok || echo notok[ 5 > 3 ] && echo "5 > 3" || echo "5 < 3
2023-07-01 00:37:07
412
原创 Shell中的运算符
1. 语法1)$((运算式)) 或 $[运算式]2)expr +, -, \*, /, % 加, 减, 乘, 除, 取余注意:expr运算符间要有空格
2023-06-30 00:03:51
470
原创 Shell中的变量
语法1)定义变量:变量=值2)撤销变量:uset 变量3)声明静态变量:readonly 变量。注意:不能unset变量定义规则1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写2)等号两侧不能有空格3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算4)变量的值如果有空格,需要使用双引号或者单引号括起来可以给变量user_name的等号两边加个空格,测试下变量定义规则2)
2023-06-29 00:12:17
1399
原创 Shell脚本执行的几种方式
Shell脚本执行的几种方式:1. sh/bash 脚本的相对路径/绝对路径2. 脚本的相对路径/绝对路径(需要x权限)3. source 脚本的相对路径/绝对路径4. .空格脚本的相对路径/绝对路径shell父子进程演示
2023-06-28 00:26:16
4718
kettle的web版本(webspoon)
2021-01-11
postman win64位
2020-12-15
test-docker.zip
2020-04-01
redis4.0.10_linux安装包
2019-03-13
lombok eclipse的插件
2019-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人