Preview怎么调用出来;Java处理带经纬度的地址 安卓返回的是这样的数据结构;代码来看看方法重载;数据结构优化方案;Java开发场景多用一些其他更好好用的方法建议;指针变量

Preview怎么调用出来

在这里插入图片描述
CSDN话题挑战赛第2期
参赛话题:Java微服务

大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉淀自己的技术,一起来分享吧!
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解进行创作,参考如下:

Java处理带经纬度的地址 安卓返回的是这样的数据结构

Java处理带经纬度的地址
安卓返回的是这样的数据结构

{
    "shop_basic": [
        {
            "key": "address",
            "value": "{\"address\":\"广东省深圳市南山区高新南七道12号惠恒大楼二期1楼米奥卡诺\",\"latitude\":22.534523,\"longitude\":113.947624}"
        },
        {
            "key": "name",
            "value": "店铺名字"
        },
        {
            "key": "type",
            "value": "1"
        },
        {
            "key": "covered",
            "value": "664"
        },
        {
            "key": "rent_month",
            "value": "666"
        },
        {
            "key": "shop_type",
            "value": "1"
        },
        {
            "key": "open_status",
            "value": "1"
        }
    ],
    "shop_business": [
        {
            "key": "rent_day",
            "value": "999"
        },
        {
            "key": "property_status",
            "value": "1"
        }
    ],
    "shop_image": [
        {
            "key": "door",
            "value": "[https://sscm-prod.oss-cn-hangzhou.aliyuncs.com/lego/prod/saas/collect/Screenshot_2021-08-16-15-15-25-555_com.sscm.jpg, https://sscm-prod.oss-cn-hangzhou.aliyuncs.com/lego/prod/saas/collect/Screenshot_2021-08-17-16-29-59-232_com.sscm.jpg, https://sscm-prod.oss-cn-hangzhou.aliyuncs.com/lego/prod/saas/collect/Screenshot_2021-08-16-15-15-25-555_com.sscm.jpg, https://sscm-prod.oss-cn-hangzhou.aliyuncs.com/lego/prod/saas/collect/Screenshot_2021-08-16-15-15-25-555_com.sscm.jpg, https://sscm-prod.oss-cn-hangzhou.aliyuncs.com/lego/prod/saas/collect/Screenshot_2021-08-16-15-15-25-555_com.sscm.jpg]"
        }
    ],
    "shop_project": [
        {
            "key": "renovation",
            "value": "88"
        },
        {
            "key": "water_supply",
            "value": "1"
        },
        {
            "key": "drainage",
            "value": "1"
        },
        {
            "key": "smoke_tube",
            "value": "1"
        },
        {
            "key": "fire",
            "value": "[]"
        }
    ]
}

我们后台在处理的时候,分析得到只有第一个地址有所区别,其他的都可以统一进行处理
所以我们单独解决带经纬度的地址
如下代码

private void parseBasicLngLatInfo(List<BunkSaveReq> shopBasicList, CollectionShop collectionShop) {
    Map<String, String> basicMap = new HashMap<>(16);
    if (CollectionUtil.isNotEmpty(shopBasicList)) {
        basicMap = shopBasicList.stream().collect(Collectors.toMap(BunkSaveReq::getKey, BunkSaveReq::getValue));
        if (null != basicMap.get(CollectShopRequireEnum.ADDRESS.getKey())) {
            try {
                String address = basicMap.get(CollectShopRequireEnum.ADDRESS.getKey());
                JSONObject addressObj = JSONObject.parseObject(address);
                Double longitude = Double.valueOf(addressObj.get("longitude").toString());
                Double latitude = Double.valueOf(addressObj.get("latitude").toString());
                collectionShop.setLongitude(longitude);
                collectionShop.setLatitude(latitude);
            } catch (Exception e) {
                log.info("save: e:{}", e);
            }
        }
    }
}

代码来看看方法重载


1、完整代码

public class OverLoadTest {    
public static void main(String[] args) { 
       OverLoadTest test = new OverLoadTest();        test.getprint(10203,2422424);  
         }   
public void getprint(int i,int j){
        System.out.println("1222");   
         }    
public void getprint(String s,int i){ 
       System.out.println("4234");    
       }   
public void getprint(double i,double jdfjkdls){        System.out.println("jfjei2r");    }    
public void getprint(double a,int b){        System.out.println("2222222");    }   
 public void getprint(int a,double b){        System.out.println("the last");    }}

自然默认实现最匹配的int int
在这里插入图片描述

2、将int int 注释掉

// public void getprint(int i,int j){
// System.out.println(“1222”);
// }

在这里插入图片描述

所报的错误为都匹配,因为 int double和double int 都是同等匹配的方法,系统不知道匹配那个方法,所以报错
3、只留

public void getprint(String s,int i){
System.out.println(“4234”);
}

在这里插入图片描述

4、

public void getprint(String s,int i){
System.out.println(“4234”);
}
// public void getprint(double i,double jdfjkdls){
// System.out.println(“jfjei2r”);
// }
public void getprint(double a,int b){
System.out.println(“2222222”);
}

在这里插入图片描述

数据结构优化方案

数据结构优化方案

@Override
    public Boolean setOrderCustomerServiceStatus(Long id, Integer status) {
        LOGGER.info("id:{}, status:{}", id, status);
        OrderCustomerService orderCustomerService = orderCustomerServiceMapper.getById(id);
        if (null == orderCustomerService) {
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_NOT_EXITS);
        }
        if (OrderConstant.ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED.equals(orderCustomerService.getStatus())) {
            LOGGER.info("备注已处理,不能更新");
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED);
        }
        if (status.equals(orderCustomerService.getStatus())) {
            LOGGER.info("订单备注状态重复");
            throw new OrderException(OrderExceptionResult.ORDER_CUSTOMER_SERVICE_STATUS_REPEAT);
        }
        Date now = DateUtils.getNow();
        orderCustomerServiceMapper.setOrderCustomerServiceStatus(id, status, now);
        return true;
    }

考虑到不同的情况,做一个处理
如不存在
如备注已处理,不能更新
如订单备注状态和前端传入的值一样
以上情况都提示

将被下面代码处理

   	public enum OrderExceptionResult implements IExceptionResult {

	。。。。。   	
   	ORDER_CUSTOMER_SERVICE_STATUS_PROCESSED(1025, "订单备注状态已处理"),
    ORDER_CUSTOMER_SERVICE_NOT_EXITS(1026, "订单备注不存在"),
    ORDER_CUSTOMER_SERVICE_STATUS_REPEAT(1027, "订单备注状态重复"),
    ;

    private int code;
    private String msg;

    OrderExceptionResult(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    public IExceptionResult buildParamErrorMsg(String paramErrorMsg) {
        if (paramErrorMsg == null || "".equals(paramErrorMsg)) {
            paramErrorMsg = "";
        }

        if (this.code == PARAM_ERROR.code) {
            this.msg = "参数 " + paramErrorMsg + " 不能为空";
        }
        return this;
    }


Java开发场景多用一些其他更好好用的方法建议

1、集合实现类不一定只用ArrayList、LinkedList
(Vector比较老了就算了)、HashSet、TreeSet、LinkedHashSet、HashMap、TreeMap、LinkedHashMap都可以,特别是Tree开头的。生僻的Hashtable、ConcurrentHashMap也不是不能用
2、jdk 8 新特性能用就尽量用
Lambda
Stream流

if (null != studentMap) {
			studentMap.keySet().forEach(o -> {
				System.out.println("key = " + o + ", value = " + studentMap.get(o));
			});
		}
private Map<String, String> getGeoHashHeatMapDataMap(String categoryInfo) {
    List<KeyValueData> categoryList = JSONObject.parseArray(categoryInfo, KeyValueData.class);
    Map<String, String> map = categoryList.stream()
            .collect(Collectors.toMap(KeyValueData::getK, KeyValueData::getV));
    return map;
}

3、创建对象
反射
采用clone机制
通过序列化
用newInstance吧

//2 newInstance
		try {
			Class aClass = Class.forName("basice.Hello");
			Hello h2 = (Hello) aClass.newInstance();
			h2.sayWorld("newInstance");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		}

4、数据结构与算法
排序

5、优化多余if else(表达式写法、case等)
电商公司枚举类如下:

package basice;

/**
 * @author kegekeqi
 * @version 1.0
 * @date 2021-12-19 17:32
 */
public enum EleCommerceEnum {

	TAOBAO(1, "淘宝"),
	PINGDUODUO(2, "拼多多");

	Integer id;
	String name;

	EleCommerceEnum(Integer id, String name) {
		this.id = id;
		this.name = name;
	}
}


if else的方式,如果电商平台越多,代码就越显得冗余:

换成switch case 精简了不少代码


package basice;

/**
 * @author kegekeqi
 * @version 1.0
 * @date 2021-12-19 17:35
 */
public class EleCommerceMain {
	public Double count(EleCommerceEnum company, Integer weight) {
		switch (company) {
			case TAOBAO:
				System.out.println(10 + weight * 1.1);
				return 10 + weight * 1.1;
			case PINGDUODUO:
				System.out.println(6 + weight * 1.2);
				return 6 + weight * 1.2;
			default: throw new IllegalArgumentException("No Data");
		}
	}
	public static void main(String[] args) {
		Class aClass = null;
		try {
			aClass = Class.forName("basice.EleCommerceMain");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		EleCommerceMain h = null;
		try {
			h = (EleCommerceMain) aClass.newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
//		EleCommerceMain h = new EleCommerceMain();
		h.count(EleCommerceEnum.TAOBAO, 2);
	}
}

指针变量

指针变量定义的一般形式:
类型说明符 (*指针变量名)();
函数指针变量是个变量,所有也可以作为参数来用。下面来调用fun1和fun2

#include <stdio.h>
/*int max(int a,int b){
	if(a>b) return a;
	else return b;
}*/

int fun1(int x); int fun2(int x);
typedef int(*FunType)(int);
void testFunCall(FunType fp,int x);

int main(){
	/*int max(int a,int b);
	int(*funptr)();
	int x,y,z;
	funptr = max;
	printf("input two numbers:\n");
	scanf("%d %d,&x,&y");
	z = (*funptr)(x,y);
	printf("maxmum=%d",z);
	printf("后来\n");*/
	testFunCall(fun1,10);
	testFunCall(fun2,20);
	return 0;
}
void testFunCall(FunType fp,int x){
	int t;
	t = fp(x);
	printf("result:%d\n",t);
}
int fun1(int x){
	int t;
	t=x*x;
	printf("函数fun1的参数为:%d\t返回值为:%d\n",x,t);
	return t;
}
int fun2(int x){
	int t;
	t=(int)sqrt(x);
	printf("函数fun2的参数为:%d\t返回值为:%d\n",x,t);
	return t;
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习微站公众平台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值