前言
工作的时候,因为是内网开发,所以遇到难题Milo都记在纸上。原本想一月一发,事实上却因为各种缘由拖了大半年,一下子整理起来问题还真有点多。以下内容可以说是问题集锦,或者大杂烩了。
问题总结
- Front-End
- 强制刷新
答:使用this.$forceUpdate(); - 立即刷新绑定的数据
答:使用this.$set(对象, 属性, 值); - Echarts3中,legend如何底部显示?
答:可以使用x和y属性定位。例如:x: ‘center’, y: ‘bottom’ - Echarts3中,坐标文字如何对齐刻度线?
答:在xAxis或者yAxis中设置axisTick的属性alignWithLabel为true。 - Echarts3中,如何调整图与外层的边距?
答:调整grid中的left,top,right,bottom属性即可,无需调整div的边距。 - Echarts3中,如何设置值为0时,不显示tooltip?
答:设置formatter,值为0时,调整回调函数中的params参数。 - Echarts3的柱状图中,如果某个y值为0,如何设置不显示它的x柱?
答:略。 - \$nextTick()的作用?
答:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。因为Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。\$nextTick()是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 nextTick,则可以在回调中获取更新后的 DOM。 - 如何跨页面触发刷新?
答:使用this.\$root.eventHub.\$emit、this.\$root.eventHub.\$on();、this.\$root.eventHub.\$off();。其中,this.\$root.eventHub.\$off()写在beforeDestroy(){}中。 - vue中引用图片的方式?
答:除了使用@/assets/路径以外,还可以先import图片,然后再引用。 - 正则表达式:/[,|.| ]|OR/
答:[]中只匹配其中一个。|右边匹配OR。整体解释是:匹配逗号,句号,空格,或者OR。 - 埋点的实现?
答:略。
- 强制刷新
- Back-End
- 使用static变量,还是使用@Value,还是使用@PostConstruct?
答:代码中尽量不要不出现魔法数值。取而代之使用取名的静态变量,或者配置。 - Variable used in lambda expression should be final or effectively final异常。
答:使用数组或者原子类型AtomicInteger。我通常是使用数组,因为有一次使用AtomicInteger时,出现了无法定位的数值不改变问题。 - yml配置文件中,list或者set的写法?
答:pets: - 1 - 2 - 3 // 或者 pets: [1,2,3]
- 运行docker的几种方式?
docker start container docker exec container docker run image
- 如何删除docker镜像?
答:先使用rm删除容器,再使用rmi删除镜像。 - 使用poi-tl时,如何在同一个占位符上插入多张图片?
答:首先,一定要是v1.7.0以上,如果要使用#this占位符,一定要v1.7.2以上。其次,修改模板文件,使用区块标签。 - Json中,如何添加多个相同的key,但value值不同?
答:多加一层JsonObject inner = new JsonObject(); - Java8如何获取时间戳?
答:LocalTime.now(); - Java8中,Date类型如何转换成Temporal类型?
答:Date.toInstant。 - 国密算法?
答:略。有现成的jar包。bcprov-jdk15on的v1.64和hutool-all的5.2.5。 - 拷贝数组?
答:使用System.arrayCopy(src, srcStart, target, targetStart, length); - IDEA重新编译/热部署?
答:CTRL + F9或者JRebel插件。 - 如何进行自定义全局异常处理?
答:首先创建@ControllerAdvice,其次创建@ExceptionHandler。 - axis 2中关于RPC调用?
答:略。 - 如何制作自定义starter?
答:略。 - @Cacheable和@CachePut的用法
答:@CachePut可以确保方法被执行,同时方法的返回值也被记录到缓存中。@Cacheable当重复使用相同参数调用方法的时候,方法本身不会被调用执行,即方法本身被略过了,取而代之的是方法的结果直接从缓存中找到并返回了。@CachePut和@Cacheable这两个标签可以结合使用,当需要根据请求改变值的时候,利用@CachePut将值改变并写入到缓存中,而@Cacheable标签除了第一次之外,一直是取的缓存的值。注意:必须是同一个缓存实例。且,key值必须是相同的。 - redisTemplate和stringRedisTemplate操作?
答:redisTemplate是对象操作。stringRedisTemplate是字符串操作。 - rabbitmq执行流程?
答:rabbitmq——发送——交换器——交换器对应的queue。 - actuator是什么?
答:起到监控作用。另外,启动配置中,设置-verbose可以显示jvm启动详情。 - Elasticsearch限制超过10000数据量的查询,如何解决?
答:方法一:通过设置index 的设置参数max_result_window的值。方法二:使用scroll(游标)的方式进行查询。其中,方式二似乎无法进行翻页。 - @Value(“${}”)和@Value(“#{}”)的区别?
答:前者直接翻译成字符串。如果配置值为空,写法是@Value(“${配置项:默认配置}”)。后者是SpEL表达式,会解析内容。如果配置值为空,写法是@Value(“#{表达式?:默认值}”)。如果是在设置list的默认值,将list内容以逗号拼接即可。 - 如何导出mysql数据?
答:mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; - 如何导入sql文件?
答:进入mysql命令行,source A.sql; - SQL如何截取子字符串?
答:substring(“AAA”, 0, 4);表示:从第0位开始,截取4位。 - token的生成机制?
答:略。 - awk的用法?
答:略。
- 使用static变量,还是使用@Value,还是使用@PostConstruct?
经验总结
- 修改template和修改借口一样,一定要检查所有使用该组件的地方。
- 算法有分布式和非分布式之分,在分布式环境下,要考虑选择的算法是否可用。
- 编程的时候一定要有:分布式和大数据的思想,一定要考虑大数据量的情况。例如,前端要考虑显示X亿Y千万,后端要考虑使用多线程处理。
- 编程步骤一定是:先写算法思想的注释,再编码。
- 实现需求的步骤一定是:先重构现有的代码,再考虑能否最简单的实现方式,考虑后再进行实现。因为一味地添加代码,增加字段,最终只会使系统越来越臃肿,而变得无法维护。
- 重构一定是:一个功能一段代码,提高代码复用。变量有时候是必不可少的,可以用于定位异常。
- 代码中一定要有log输出,因为上了远程环境,很多时候通过log可以直接定位bug点。
- 删除操作尽量不要使用xxxTemplate.delete(),要使用逻辑删除。例如,把某个字段置为1。
- 删除数据时,要考虑效率问题。例如,删除7天前的数据,如果7天前的数据有好几十亿,删除操作会影响到业务流程的执行效率。应该考虑异步多线程操作会不会影响到当前的业务需求。
- 如果列表中多个组件调用同一个弹出框,不能在for遍历里写弹出框,会导致弹出框组件数据异常,它会总是列表项最后一项。应该在for循环范围外,独立创建一个template。
- 前端可以使用+ new Date(),其含义为转换数值。
- 后端查询涉及统计/聚集时,可以采用定时写表,随时查询的形式进行。
- 定时器的调用可以提取到一个单独的微服务中,首先避免直接调用正式环境的借口。其次,发布时可以独立发布,同样不影响系统运行。
- vue中使用watch时,如果设置了immediate为true。它在绑定时会立即执行,监控对象的值为空时也会执行handler。监控时应该判断具体的属性。
- 后端修改CRUD代码时,应该时刻谨记数据的回填,保证整个CRUD流程数据回填的完整性。
- 为了防止后端乱码问题,配置项和配置值尽量使用英文数字下划线。涉及中文时,提交代码和发布到线上环境,应该将中文转化成accii码。
- 系统启动时,一般会将部分数据写入缓存中。应该考虑是否可以提供刷新缓存的接口,和刷新定时器一样,应该单独一个微服务。避免某些数据更新后,需要重启正式环境。
本文内容转自冰部落,仅供学习交流,版权归原作者所有,如涉及侵权,请联系删除。 声明: 本平台/个人所提供的关于股票的信息、分析和讨论,仅供投资者进行研究和参考之用。 我们不对任何股票进行明确的买入或卖出推荐。 投资者在做出投资决策时,应自行进行充分的研究和分析,并谨慎评估自己的风险承受能力和投资目标。 投资有风险,入市需谨慎。请投资者根据自身的判断和风险承受能力,自主决策,理性投资。