前言
光阴荏苒,2020年即将成为历史!许多人都把这一年形容为“多灾多难的”的一年,对我而言,或许是,也或许不是。一方面,今年似乎都没见过美丽的夕阳,忙与不忙都在变相加班。另一方面,今年个人KPI顺利完成,值得庆贺!在这即将跨年之际,为了迎接美好的明天,现将下半年工作中遇到的问题及其解决方案总结如下:
问题总结
- Front-End
- substr(start, length)和substring(start, end)的区别?答:注意看参数!substr是从第start位开始截取length位。而substring是截取start到end之间的字符串,属于半开区间:(start, end]。
- Js网址的中文乱码如何处理?答:使用encodeURI/encodeURIComponent编码,使用decodeURI/decodeURIComponent解码。其中,encodeURI除了常见的符号以外,对其他一些在网址中有特殊含义的符号”; / ? : @ & = + $ , #”,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。encodeURIComponent与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。
另:(摘自阮一峰-关于URL编码)实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。”
- Back-End
- TreeMap的floorEntry特性?答:在方法调用返回的最大键小于等于key,或者null,如果不存在这样的键的条目。
- Es聚合如何返回对象?答:无解。
替代法:用查询返回结果map,并用groupby处理。
- cannot write type[class.xxx.SomeObject]答:Es实体类的属性类型定义错误,正常情况下应该是FieldType.Object。
- Es如何判断列表为null或者[]?答:exists。
- JsonMappingException(was java.lang.NullException)答:较多情况是parallelStream引起的,根据异常提示的相关集合进行排查。
可能情况一:多线程里进行不安全的增删操作。
可能情况二:集合中属性的类型定义错误。
- application.properties如何设置布尔值?答:使用spel,定义boolean变量:@Value(“${some.key:true}”)。
- Es使用scroll查询时,出现no search context for id [xxx]的问题?答:设置scroll时间长一些。
- Failed to bind properties under ‘’ to com.zaxxer.hikari.HikariDataSource问题?答:在application.properties中添加spring.datasource.driver_class_name=com.mysql.jdbc.privider。
- SQL如何判空?答:where ooxx is null or trim(ooxx) = ‘’;
- @Qualifier的作用?答:使用@Autowired注释进行byType注入,使用@Qualifier是byName(通过id)方式注入。一般在候选Bean数目不为1时应该加@Qualifier注释。添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为相关@Service注解的类名之一!
另:@Resource默认是byName方式注入。如果设置了type,则按byType方式注入。如果同时设置了name和type,则查找唯一匹配的bean,否则抛异常。
- Attempted read from closed stream的问题?答:EntityUtils.toString(HttpEntity)在每个方法中只能使用一次。
经验总结
- Jsp 500的问题,可以从页面源代码看到问题点在哪。
- 后端尽量不要返回null对象或者设置null对象,避免前端抛null异常。
- ElasticTemplate.save()如果有id会部分更新,如果没有id会创建新对象。
- 前端使用this.$set(item, key, value)可能会有属性冲突的风险,前后端分离需要规范命名。
- 分布式需要考虑:锁、一致性、偷取任务时前后依赖等问题。
- 可以使用stream().sorted()进行排序。
- 使用BeanUtils.copyProperties拷贝对象需要注意两点:一是导入哪个包,对应参数顺序;另一个是部分属性未拷贝,需要手动设置,例如:id。
- 可以使用SearchSourceBuilder.fetchSource和SearchQuery.withFields指定返回字段。
- SearchSourceBuilder.from(0).size(0)如果是查询solr,默认最多返回100条数据。
- Excel模板设置数据有效性时,使用OFFSET($sheet.$A$1,,1,COUNTA($sheet$1:$n))函数可以选择某行非空的值,选择某列非空值类似。
- 使用DateHistogramAggregationBuilder.format(“yyyy-MM-dd”)可以直接对时间属性进行格式化。
- 如果使用HTTP的Get方式请求接口,参数设置成long类型会报错,因为String无法转换成long。改用Post方式请求可以解决。
本文内容转自冰部落,仅供学习交流,版权归原作者所有,如涉及侵权,请联系删除。 声明: 本平台/个人所提供的关于股票的信息、分析和讨论,仅供投资者进行研究和参考之用。 我们不对任何股票进行明确的买入或卖出推荐。 投资者在做出投资决策时,应自行进行充分的研究和分析,并谨慎评估自己的风险承受能力和投资目标。 投资有风险,入市需谨慎。请投资者根据自身的判断和风险承受能力,自主决策,理性投资。