工作感想随笔

公司的一个项目,没有测试环境,所以没法测试,只能直接放到正式环境。。。齐问我有没有把握,我说没有。。。我怎敢保证。事实也证明,确实没把握。第一次推上线,是星期一上午,没注意看readme文件,没把SocketClient类里使用的端口号改过来,结果导致所有请求都没得到响应,很快就收到客服那边反馈的用户投诉。星期二晚上十点第二次推上线,用设备测试了一下基本操作,是可以的,可不到两个小时,就又收到了投诉,只好把旧版本放回去。

回过头来看看日志,也没找出问题所在。只能看到些莫名其妙的错误。很郁闷。这使我不得不去怀疑,正在跑的程序的代码和我从gitlab上拷的是一样的代码吗?

我做的改动就是修改之前的日志管理,即logger语句的写法。除此之外,我还使用了ThreadLocal对象,我封装了一个静态的ThreadLocal对象,写了set方法和get方法和release方法:

public class ThreadLocalUtils {
    private static ThreadLocal<String> threadLocal = new ThreadLocal<String>();
    public static void setToThreadLocal(String phone){
        threadLocal.set(phone);
    }
    public static String getFromThreadLocal(){
        return threadLocal.get();
    }
    public static void releaseInThreadLocal(){
        threadLocal.remove();
    }
}

然后,在service层方法执行了根据id去redis缓存查找相应信息后,我将电话号码通过set方法存到ThreadLocal对象中,然后在controller层当抛出异常时,即在catch处通过get方法获取电话号码,最后在finally通过release方法释放资源。使用ThreadLocal对象前也是有了解过的,应该是没问题的吧?我在我的毕设作品上模拟了这个操作,是可以的。ThreadLocal对象以线程号为key,这样是不会相互影响到才对啊,而且我也有释放资源啊。

日志中,奇怪的事情来了,当抛出BusinessException异常时,第一个logger语句执行了,而后面的logger语句却没执行:

 catch (BusinessException e) {
    OutputObject outputObject = new OutputObject();
    outputObject.error(e);
    logger.error("捕获BusinessException:" + outputObject);

    //钉钉机器人通知部分
    String tipMessage = "用户uuid为"+ input.getUseruuid()
            + ",卡号" + input.getCardNo()
            + ",号码" + ThreadLocalUtils.getFromThreadLocal()
            + ",在调用【/xxxx/xxxx】(订单申请)时,结果提示:" + outputObject.getStatusCode()
            + "错误,错误信息为:" + outputObject.getMessage() ;

    SendMessageUtils.sendTextMessage(tipMessage);
    logger.warn("<<<" + tipMessage);

    return outputObject;
}

第一个logger语句执行了,第二个logger语句没执行!!而且我调用钉钉通知的接口方法也没有生效。我只能得出这样的结论,这个get操作抛出了异常:

ThreadLocalUtils.getFromThreadLocal()

也只能这样解释了。不然后面的logger语句怎么会不执行?因为我的sendTextMessage方法是使用了try catch捕获的,所以sendTextMessage方法肯定不是罪魁祸首。

可是我在我的毕设作品上也试着用这个ThreadLocal类,也是类似的操作,在service层里set,在controller层的catch里get,然后在finally里release,却是能正常执行的,钉钉上也收到了消息!!!这真的让我很不解。

真的想不懂,想不懂。到底是哪个环节出了问题。很认真很认真的和初始版本比较了,现在就真的只是改了日志的输出,没有改到其他东西。明天再推上线,又出问题,我就真的真的真的真的不知道该怎么办了。抓狂。。。

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据。数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球的数据,数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据的免费下载服务,你可以根据自己的需求选择合适的网站进行下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值