java工作随笔

news2024/11/24 4:50:11
        String s = JSONObject.toJSONString(fixedAsset);
        logger.error("-----------------8------------------" + s);
        CusFixedAssettDTO CusFixedAssettDTO3 = JSONObject.parseObject(s, CusFixedAssettDTO.class);

父类转子类

相同对象合并

import java.util.Date;
@Data
@ToString(callSuper=true)
@EqualsAndHashCode(callSuper = true)
public class CusFixedAssetsDTO extends FixedAssetDTO {
    @ApiModelProperty(value = "计数单位")
    


//解决相同对象在select赋值之后互相为空的情况,将两个对象合并
    private CusFixedAssettDTO combineSydwCore(CusFixedAssettDTO sourceBean,CusFixedAssettDTO targetBean){
        Class sourceBeanClass = sourceBean.getClass();//sourceBean.getClass().getSuperclass();获取父类
        Class targetBeanClass = targetBean.getClass();
        Field[] sourceFields = sourceBeanClass.getDeclaredFields();
        Field[] targetFields = targetBeanClass.getDeclaredFields();
        for(int i=0; i<sourceFields.length; i++){
            Field sourceField = sourceFields[i];
            if(Modifier.isStatic(sourceField.getModifiers())){
                continue;
            }
            Field targetField = targetFields[i];
            if(Modifier.isStatic(targetField.getModifiers())){
                continue;
            }
            sourceField.setAccessible(true);
            targetField.setAccessible(true);
            try {
                //if( !(sourceField.get(sourceBean) == null) &&  !"serialVersionUID".equals(sourceField.getName().toString())){ targetField.set(targetBean,sourceField.get(sourceBean));}
                if(sourceField.get(sourceBean) == null){
                    sourceField.set(sourceBean,sourceField.get(targetBean));
                }
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return sourceBean;
    }

循环list对象

        JSONArray array = JSONObject.parseArray(otOutput); // json字符串转json数组
 for(Object object:content){
            //String s = String.valueOf(object);
            String body = JSONObject.toJSONString(object);
            Object parse1 = JSON.parse(body);
            String s = parse1.toString();
            Asset asset1 = JSON.parseObject(s, Asset.class);

[root@localhost logs]# cd /home/hzero/jar/logs
tail -f alm-origin.log

tail -500f ./dev-environment/bangpu/bp-alm-origin/target/app.log

/*
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("Content-Type","application/json;charset=utf-8");
        httpPost.setHeader("X-ECC-Current-Tenant","10000");
        httpPost.setHeader("Accept-Language","zh-CHS");
        //加账号密码//
        String encoding = null;
        try {
            encoding = DatatypeConverter.printBase64Binary("sap_dev2023@163.com:WGwg@1928".getBytes("UTF-8" ));  //username  password 自行修改  中间":"不可少
        } catch (
                UnsupportedEncodingException e) {
            // 如果系统不支持UTF-8编码,会捕获到UnsupportedEncodingException:
            System.out.println(e); // 打印异常信息
        }
        httpPost.setHeader("Authorization", "Basic " + encoding);
        //加账号密码end//
        StringEntity se = new StringEntity(jsonPrarms, "utf-8");
        httpPost.setEntity(se);

        CloseableHttpClient httpClient = HttpClientBuilder.create().build();   //获取浏览器信息
        HttpResponse response = null;
        try {
            response = httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
        }
        StatusLine statusLine = response.getStatusLine();   //获取请求对象中的响应行对象
        int responseCode = statusLine.getStatusCode();
        StringBuffer jsonString = new StringBuffer();
        if (responseCode == 200) {
            BufferedReader bufferedReader = null;
            try {
                bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            } catch (IOException e) {
                e.printStackTrace();
            }
            String line;
            try {
                while((line = bufferedReader.readLine()) != null) {
                    jsonString.append(line);//拼接字符串
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
*/
//        System.out.print(jsonString.toString());
//        JSONObject jsonResult = null;
//        if (responseCode == 200) {
//            String str = "";
//            try {
//                //读取服务器返回过来的json字符串数据
//                str = EntityUtils.toString(response.getEntity());
//                //把json字符串转换成json对象
//                //导入import com.alibaba.fastjson.JSONObject;不然报错(不行试试import net.sf.json.JSONObject;)
//                jsonResult = JSONObject.parseObject(str);
//                System.out.print("jsonResult");
//            } catch (Exception e) {
//                jsonResult = JSONObject.parseObject("字符串错误!");
//            }
//        }
        //return result;

查询表结构
select column_name, column_comment from information_schema.columns where table_name = ‘arm_gift’ ;

json处理
https://blog.csdn.net/JavaSupeMan/article/details/123919039

maven库中包找不到:(前提是仓库中有jar文件!!!!)
1.删除仓库中所有的.repositories和.lastUpdated文件
2.项目中执行clean
3.项目中删除.idea文件
4.项目中删除.iml文件
5.重新打开项目
6.如果失败
7.打开idea查看setting文件的指定库是否正确
这里idea有个脑残bug在这里插入图片描述
在你每次新打开一个项目时他会默认找maven中写的xml文件,这时如果你新确定了一个文件但是你没有在idea中来的及改,会导致你会生成两个仓库,所以一定注意仓库指定路径!!!
8.如错误再来一遍
9.如正确删除库重新导包

微服务项目的跨库查询数据:https://www.cnblogs.com/east7/p/15731636.html

一个接口有多个实现类时,调用接口时,如何判定调用的哪个实现类?https://blog.csdn.net/zhanduo0118/article/details/120116160

CusAssetDTO 是asset类的子类:实现父子转换:
CusAssetDTO cusAssetDto = CommonConverter.beanConvert(CusAssetDTO.class, asset);

导出excel

1.在导出的DTO类上,使用@ExcelSheet标注导出的Sheet,头行结构中,行上也需要使用该注解标注。在@ExcelSheet中,可配置导出Sheet的标题,分页查询大小等,基本不需配置,使用默认的即可。
2在导出DTO类中,在需要作为导出列的字段上,使用@ExcelColumn标注,该注解可配置列标题、显示顺序等。
Example:
@ExcelSheet(zh = “收货记录”, en = “Receiving record”)
public class ReveRecodeDTO {
@ExcelColumn(zh = “事务编号”, en = “trxNum”, showInChildren=true)
private String trxNum;
@ExcelColumn(zh = “客户”, en = “companyName”, groups = {Group2.class})
private String companyName;
@ExcelColumn(zh = “物品编码”, en = “itemCode”, order = 4, groups = {Group1.class})
private String itemCode;
@ExcelColumn(zh = “物品名称”, en = “itemName”, order = 3, groups = {Group1.class})
private String itemName;
@ExcelColumn(zh = “日期”, en = “trxDate”, pattern = BaseConstants.Pattern.DATE)
private Date trxDate;
@ExcelColumn(zh = “数量”, en = “quantity”, groups = {Group2.class})
private BigDecimal quantity;
@ExcelColumn(zh = “金额”, en = “netAmount”, pattern = BaseConstants.Pattern.TB_ONE_DECIMAL)
private BigDecimal netAmount;
@ExcelColumn(zh = “原因”, en = “moveReason”)
private String moveReason;
@ExcelColumn(zh = “接收人”, en = “receiptPerson”)
private String receiptPerson;
@ExcelColumn(zh = “备注”, en = “remark”, renders = RemarkValueRenderer.class)
private String remark;
@ExcelColumn(zh = “详情列表”, en = “detailsList”, child = true)
List detailsList;

public interface Group1 {}

public interface Group2 {}

public class RemarkValueRenderer implements ValueRenderer {
    @Override
    public Object render(Object value, Object data) {
        RecordLineDTO dto = (RecordLineDTO) data;
        return "显示备注:" + dto.remark;
    }
}

// getter/setter

}

3.在导出接口上,使用@ExcelExport标注,注解需配置导出的DTO。
Example:
@GetMapping(“/export”)
@ExcelExport(ReveRecodeDTO.class)
public ResponseEntity export(ReveRecodeDTO record, ExportParam exportParam, HttpServletResponse response, PageRequest pageRequest) {
List list = repository.export(record, exportParam, pageRequest);
return Results.success(list);
}

固定值集

1.固定值集获取
List queryLovValue(String lovCode, Long tenanId)

2.固定值集翻译
目标方法上使用 @ProcessLovValue(targetField = BaseConstants.FIELD_BODY)
目标对象上使用 @LovValue(lovCode = “SPFM.COMPANY_PROCESS_STATUS”)
并添加翻译字段eg:
@LovValue(lovCode = “SPFM.COMPANY_PROCESS_STATUS”)
private ProcessStatus processStatus;
private String processStatusMeaning;

方法上
@ProcessLovValue

dto上
    @RemoteField(fieldType = AlmOrgCommand.class, meaningField = "usingOrgName")
    private Long usingOrgId;

    @RemoteField(fieldType = AssetStatusCommand.class, meaningField = "assetStatusName")
    private Long assetStatusId;

    @RemoteField(fieldType = EmployeeCommand.class, meaningField = "userPersonName")
    private Long userPersonId;

编码规则

1.使用说明
org.hzero.boot.platform.code.builder.CodeRuleBuilder#generateCode
参数具体意思如下:
参数名称
参数描述
level 应用维度,可选值:PLATFORM/TENANT/COMPANY
tenantId 租户ID
ruleCode 编码编码
levelCode 编码规则层级,可选值:GLOBAL/COMPANY
levelValue 编码规则层级值
variableMap 变量替换列表

加上这个注解,不然刷不出来
@Permission(level = ResourceLevel.ORGANIZATION)

excel导入
@Override
@Transactional(rollbackFor = Exception.class)
public void importSupplierByTemplate(Long organizationId, Long projectId, Long purchaseTemplateId, MultipartFile multipartFile) {
//1.校验文件和单据
List projectPackages = validateUploadFileAndDoc(organizationId, projectId, multipartFile);
//2.根据询价单号将采购包集合转为Map
Map<String, PurchaseProjectPackage> rfxNumPackageMap = projectPackages.stream().filter(pack -> Objects.nonNull(pack.getPackageCode()))
.collect(Collectors.toMap(PurchaseProjectPackage::getPackageCode, Function.identity()));
//3.读取Excel文件
try {
EasyExcel.read(multipartFile.getInputStream(), RfxLineSupImpTemplateDTO.class,
new RfxLineSupImportListener(purchaseTemplateId, lineSupplierService, rfxLineItemRepository,
customCommonQueryRepository, rfxNumPackageMap)).sheet().doRead();
} catch (IOException e) {
throw new CommonException(“供应商批量导入失败” + e.getMessage());
}
}

redis
背景:redis的火,就像java一样,对于测试人员来说,使用它就需要好好搞下,现在就整理下命令行模式,来查询获取自己想要的值;

命令行连接命令:redis-cli -h 主机名 -p 端口号 -a 密码

1、keys key值,如keys 1153331

keys 值会找到很多对应的keys,通过get方法,就可以得到很多value;

2、下面整理下redis常见的命令

a、对string类型数据的操作:set key value ,把名称为key的值赋值为value

                                            get key   返回名称为key的value

b、对list的数据类型操作:rpush key value 在名称为key的list尾部添加一个value的值

                                        lpush key value   在名称为key 的list头部添加一个value的值;

                                        llen  key     返回名称为key的list长度

                                        lrange  key start  end  返回名称为key的list中start到end的值

                                        lset key index value  给名称为key的list中索引为index的值赋值为value

c 、对hash数据类型的操作:hset key field value 向名称为key的hash中添加元素field <—>value

                                            get key field     返回名称为key的hash中field对应的value值

                                            hgetall     返回名称为key的hash中所有键(field)及其对应的value值

                                           hlen key:返回名称为key的hash中元素个数
                                          ◼ hdel key field:删除名称为key的hash中键为field的域

d、redis的常用命令 :exists key 确认一个key 是否存在

                                 del  key  删除一个key

                                 type  key  返回值的类型

                                dbsize    返回当前数据库key的数目

                               keys  pattern 返回满足pattern的所有key

                             select dbindex 切换数据库

                            flushdb   删除所有的key值  ,小心操作

e、redis的持久化;

        redis的持久化就是将redis的数据内存存储到物理内存上;

       2种持久化的方式;

       1、rdb  在指定的时间间隔内将内存中的数据集快照写入磁盘

          优点:性能最大话,如果数据集很大,rdb的启动效率很高

          缺点:数据安全性差

       2、aof   以日志的形式记录服务器每一个写、删除操作,查询操作不会被记录;

          优点:数据安全性好

          缺点:对于相同数量的数量集而言,AOF文件通常要大于RDB文件。恢复数据慢

f、多实例部署和主从配置后面再说

六、Redis 多数据库常用命令
Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。
多数据库相互独立,互不干扰。
#多数据库间切换
select 序号
使用 redis-cli 连接 Redis 数据库后,默认使用的是序号为 0 的数据库。
1
2
3
#多数据库间移动数据
move 键值 序号
例:
select 1
get lucien

select 0
get lucien

move lucien 1
get lucien

select 5
get lic

select 0
get lucien
清除数据库内数据
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,慎用!

在这里插入图片描述

过滤器小结:
Java过滤器的创建与使用
Java Web之过滤器Filter
JavaWeb之监听器Listener
Spring MVC过滤器-超类

http的获取处理
HttpServletRequest接口详解(还有其他的)

javascript中new url()属性,轻松解析url地址


1.首先写一个假的地址(q=URLUtils.searchParams&topic=api)相当于当前的window.location.href
复制代码
const urlParams = new URL(window.location.href);
urlParams.searchParams.has("topic") === true; // true
urlParams.searchParams.get("topic") === "api"; // true
urlParams.searchParams.getAll("topic"); // ["api"]
urlParams.searchParams.get("foo") === ""; // true
urlParams.searchParams.append("topic", "webdev");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
urlParams.searchParams.set("topic", "More webdev");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
urlParams.searchParams.delete("topic");
urlParams.searchParams.toString(); // "q=URLUtils.searchParams"
复制代码
是不是很好用?参考(https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams#%E7%A4%BA%E4%BE%8B)

url简单加密:java中URLEncode和URLDecode

Java解析或生成xml字符串的各种方法

Java字符串常用操作

mybatis的通用Mapper函数库以及Example条件函数总结记录

SpringBoot Controller接收参数的几种常用方式

JAVA重定向的几种方法

response.sendRedirect()实现重定向

字符串(String与日期的转换(Date)

java中Date日期类型的大小比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/772289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你搭建SpringCloud项目(九)集成OpenFeign服务接口调用

一、OpenFeign简介 什么是Feign&#xff1f; Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行封装&#xff0c;使其支持…

要想做好日语翻译,你需要这样做?

我们知道&#xff0c;中日两国一衣带水比邻而居&#xff0c;彼此之间的文化贸易往来非常频繁&#xff0c;对日语翻译的需求也日益增加。那么&#xff0c;想要做好日语翻译&#xff0c;我们该怎么做&#xff1f; 首先&#xff0c;要具备扎实的日语语言能力、较高的母语水平以及灵…

零基础学习,轻松打造物业服务小程序

现如今&#xff0c;物业服务已经成为了人们生活中不可或缺的一部分。为了更好地满足人们对物业服务的需求&#xff0c;许多企业和个人开始开发物业服务小程序&#xff0c;以便提供更加便捷和高效的服务。然而&#xff0c;对于大多数人来说&#xff0c;搭建一个小程序可能需要一…

从小白到大神之路之学习运维第64天--------Zabbix监控mysql、ftp服务以及自定义配置

第三阶段基础 时 间&#xff1a;2023年7月19日 参加人&#xff1a;全班人员 内 容&#xff1a; Zabbix监控mysql、ftp服务以及自定义 目录 一、Zabbix监控mysql数据库 二、Zabbix监控ftp服务 三、Zabbix自定义监控项 整体zabbix搭建完成&#xff0c;server端huyang1监…

golang 日志库zap和日志切割实践

介绍 在许多Go语言项目中&#xff0c;我们需要一个好的日志记录器能够提供下面这些功能&#xff1a; 能够将事件记录到文件中&#xff0c;而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。 支持不同的日志级别。例如INFO&#xff0c;DEBUG&a…

uni.app开发小程序如何获取当前经纬度、位置信息以及如何重新发起授权定位

uni.app开发小程序如何获取当前经纬度、位置信息以及如何重新发起授权定位 前提 先去微信小程序后台申请 wx.getLocation接口1.引入下载的高德小程序SDK2.data中定义所需变量3.onLoad中获取实例 并调用获取经纬度 位置方法4.定义获取定位经纬度 位置信息方法5.用户拒绝授权后,可…

【MySQL】查询进阶

查询进阶 数据库约束约束类型NULL , DEFAULT , UNIQUE 约束主键约束外键约束 聚合查询聚合函数group by子句HAVING 联合查询内连接外连接自连接子查询单行子查询多行子查询 数据库约束 约束类型 NOT NULL #表示某行不能储存空值 UNIQUE #保证每一行必须有唯一的值 DEFAULT #规…

DT灯光基础(辉光 雾 阴影 渲染选项)

点光源 不能宣染&#xff0c;换个版本。不能正常预览 聚光灯 t 手柄 挡光版 平行光阴影 光线追踪阴影 没有看见阴影 灯光使用贴图 环境光 不进行渲染物体 不渲染阴影 接收阴影 不反射 可以看到反射 没有反射了 灯光链接 取消灯照 灯光雾 辉光 变化不明显

【C++】C++入门必备知识详细讲解

C入门必备知识 一、命名空间1. namespace2. namespace 的使用场景 二、了解 C 中的输入和输出三、缺省参数四、函数重载1. 函数重载的概念2. C支持函数重载的原理 五、引用1. 引用的概念2. 引用特性3. 常引用4. 引用的使用场景&#xff08;1&#xff09;做参数&#xff08;传引…

No.2(3)——双指针算法实现平方数组排序

双指针算法指的是&#xff0c;从数组的两侧开辟指针变量进行查找&#xff0c;这类问题往往通过暴力&#xff08;双循环&#xff09;可以解出&#xff0c;而采用双指针相当于用空间换取时间&#xff0c;省略双层循环中重复的部分。 对于一个含有负数的有序数组&#xff0c;要求保…

Kubernetes Volume及其类型(NFS、SAN) - PV - PVC - PV与PVC与Pod的关系

目录 volume 卷 官方文档&#xff1a;卷 | Kubernetes 一、emptyDir&#xff08;临时卷&#xff09; 二、hostPath卷 type字段参数 hostPath 实验&#xff1a; 三、第3方提供的存储卷&#xff08;百度云、阿里云、亚马逊云、谷歌云等&#xff09; 四、local卷 五、NF…

Geany配置python虚拟环境(Anaconda)

Geany配置python运行环境步骤&#xff1a; 以我的conda为例 我的conda中python虚拟环境base环境python位于路径 D:\Anaconda3 打开Geany -> 生成 -> 设置生成命令 在弹出的窗口内输入以下命令 # Compile选项后修改 "D:\Anaconda3\python.exe" -m py_compi…

准备WebUI自动化测试面试?这30个问题你必须掌握(一)

本文共有8600字&#xff0c;包含了前十五个问题&#xff0c;如需要后十五个问题&#xff0c;可查看文末链接~ 1. 什么是WebUI自动化测试&#xff1f; WebUI自动化测试是指使用自动化测试工具和技术来模拟用户在Web用户界面&#xff08;UI&#xff09;上执行操作&#xff0c;并…

条件概率我知道,但什么是条件期望?--草稿

目录 1 目标问题&#xff1a; 什么是条件期望 2 条件期望&#xff0c;全期望公式 1 目标问题&#xff1a; 什么是条件期望 这次先不说目标 先引用一个小学数学题 1班平均分是93,2班平均分是95,两个班的平均分怎么算 错误算法&#xff0c;(9395)/294 除非两个班的学生数量一…

园区电能监测系统

园区电能监测系统是一种能够对园区内电能使用情况进行实时监测和管理的系统&#xff0c;可以帮助企业更好地控制能源消耗&#xff0c;提高能源利用效率&#xff0c;从而降低能源成本&#xff0c;对于推进节能减排和可持续发展具有重要意义。 园区电能监测系统通常由多个子系统组…

RocketMQ 5.0 快速入门

RocketMQ 5.0 Apache RocketMQ 自诞生以来&#xff0c;因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨&#xff0c;RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案&#xff0c;被广泛应用于互联…

大二web作业精仿王者荣耀(html+css)

经过漫长的期末考试季节&#xff0c;我成功地完成了一个王者荣耀的仿写项目&#xff0c;并且非常高兴地与大家分享。 作品展示 作业-王者荣耀 作品目录 获取源码 1&#xff0c;复制该网站 https://download.csdn.net/download/qq_42431718/87946610 2&#xff0c;点击上方下…

Lazygit贴合 neovim

功能性要比gitui 好用&#xff0c;vim 的键位习惯 > 嵌入式数据库 &#xff0c;python 的性能够用了 … … ,分析差异&#xff0c;选择 备份和升级

ROS:action通信

目录 一、前言二、概念三、作用四、实际案例4.1需求4.2action通信自定义action文件4.2.1定义action文件4.2.2编辑配置文件4.2.3编译 4.3action通信自定义action文件调用(C)4.3.1流程4.3.2vscode配置4.3.3服务端4.3.4客户端4.3.5编译配置文件4.3.6执行 4.4action通信自定义actio…

python_day11_practice

将文本数据插入数据库 两文本文件为day10面向对象练习案例 将data_define.py文件复制过来&#xff08;导入失败&#xff0c;疑惑&#xff09; 新建数据库&#xff0c;建表orders -- CREATE DATABASE py_sql charset utf8;use py_sql;create table orders(order_date date,…