工作日志
wangchenggong1988
这个作者很懒,什么都没留下…
展开
-
小经验小结
关于数据校验的一条经验: 先假定是合法的,直接落库,再校验数据是否有问题,有问题就抛异常回滚关于外部接口调用:调用外部接口的组件交给spring管理,这样方便将一些配置数据(如url地址、加密key等信息)注入进来关于功能自测:起码要用debug覆盖一遍自己的代码逻辑,避免明显的缺陷原创 2024-10-14 14:20:32 · 107 阅读 · 0 评论 -
工作中遇到了一个线程中断异常
而主线程随后又进行了数据查询,这时候从druid数据库连接池中获取数据连接会用到AQS中的可重入锁, 可重入锁会检查线程的中断标识,如果是中断,则抛出中断异常。主线程使用CompletableFuture开辟子线程进行了并行查询,但其中某个子线程执行时发生异常,没有捕获。结果就在主线程等待所有子线程都执行完毕时报ExecutionException。工作中遇到了一个线程中断异常,备忘记录一下。从而对主线程打上了中断标识。原创 2024-09-11 19:36:52 · 473 阅读 · 0 评论 -
【POI】多种实现导出的差异
在实际使用中,除非有特别的格式要求,一般优先选择 SXSSFWorkbook,以支持最大的数据量。所以总结来说,三种 Workbook 的选择依据是:文件格式要求、数据量大小、写入性能要求。SXSSFWorkbook:用于操作 xlsx 格式的 Excel,支持超过 2^20 行的数据,实际数据存储在临时文件中,只将部分数据加载到内存中。SXSSFWorkbook 只加载部分行到内存,大部分行存储在临时文件中,所以可以支持百万行级别的数据,不容易OOM。支持的文件格式和最大行数不同。转载 2024-05-09 11:53:31 · 72 阅读 · 0 评论 -
一个sql子查询的错误,记录一下
一、两处空指针改动一个方法的代码,要考虑所有依赖这个方法的接口是否会受到影响:比如,你把一个工具类中的方法改了,就要考虑所有调用了该方法的地方是否会受到影响。在处理一个对象前,要考虑它是否可能为空,换句话说,就是要养成判空的习惯,比如想对字符串做分割处理成字符串数组,务必要判断该字符串是否为空。二、两处自测验证不到位研发自测往往只做个冒烟测试,但bug往往就隐藏在你没覆盖到的测试用例里:比如,有个选填项,你往往只是考虑了它填写时能否正常保存,却容易忘掉它不填时可否找正常保存。边界条件是最需要原创 2024-04-02 10:01:13 · 150 阅读 · 1 评论 -
记一次mq消息没有收到的问题排查
变化的果是由变化的因导致的,在遇到问题时,应该首先基于这种思维去大胆猜测问题发生的原因。刻画的传播链模型要准确。比如图中B有落库操作,开始时以为落库了就证明AB之间的消息传递是正常的,一直在对B的消费逻辑进行debug。但实际上发现A也有落库操作,这个时候应该重新考量MQ1是否正常工作,结果大脑可能有思维惯性,还停留在之前的观念里,误以为问题肯定出在了B系统。都有好记性不如烂笔头,其实不仅仅是记忆可以借助笔,分析问题时如果能多动动笔,也不容易走进思维的误区。强化对二分法思想在定位问题上的运用。原创 2023-12-07 08:02:39 · 609 阅读 · 0 评论 -
刚踩的两个坑: CV大法要慎用,异常捕获要彻底
在一个图片分析的Service里写过如下代码, 本来是想避免用户重复提交分析图片的请求,结果由于dealImages方法中的异常没有捕获到位(只捕获了IO异常),导致了isRectifying标识一直为true,从而无法执行新的图片分析任务。代码是复制的,会想当然以为之前的代码是好用的, 所以复制过来,稍微一测,能冒烟就觉得OK了,殊不知遗漏的场景里可能存在bug,因为你很容易遗漏某处本该发生改动。我做的一个批量查询接口,在传入单个id时查询报错,就是一个教训。复制代码做类似的功能开发时要注意。原创 2023-11-27 20:41:47 · 490 阅读 · 0 评论 -
StringUtils和BigDecimal踩坑记
在使用jdk库或三方库的时候,一定要了解方法的含义,避免想当然,不然就可能会出现bug原创 2022-11-16 17:53:48 · 229 阅读 · 3 评论 -
getBytes方法需要注意字符集,避免乱码
String的getBytes方法需要注意字符集,避免乱码原创 2022-11-01 20:15:13 · 677 阅读 · 0 评论 -
一次接口性能优化的小结
尽可能减少数据库的查询次数,尤其要避免在循环中查询数据库对于关系型数据库:特殊情况下,尤其是牵涉到子查询、联接查询的sql,有可能拆开后的执行效率更高对于非关系型数据库(如redis):在key的个数较少时,mget的效率有可能不如逐一get的效率高对于读多写少的接口,性能瓶颈往往都在查询数据库上,但如果内存中的数据处理算法低效的话,也会成为瓶颈。需要避免内存中处理数据时的嵌套循环、多次循环。要选用合理的数据结构和算法来降低数据处理的时间复杂度。对多线程的使用及线程池的参数.原创 2022-03-29 12:38:38 · 1263 阅读 · 0 评论 -
最近工作的一些细节
JSON反序列化时,对象属性未被赋值的问题这种情况很可能是因为实体类覆盖了无参构造方法BigDecimal的toString和toPlainString前者在必要时会使用科学计数法,而后者则永远不会使用如果你不希望出现6000在输出时以“6E+3”来展示,一定要使用toPlainString方法MySQL 的 case when 的语法有两种简单函数CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END搜索函数CASE原创 2022-02-11 18:12:18 · 298 阅读 · 1 评论 -
一次查询资金流水的性能优化经历
你好import org.springframework.context.ApplicationEvent;/** * @Title:用户登录事件 * @Author:wangchenggong * @Date 2021/4/12 17:24 * @Description * @Version */public class LoginEvent extends ApplicationEvent { public LoginEvent(String userName) {原创 2021-04-14 09:57:49 · 274 阅读 · 0 评论 -
读《你的灯亮着吗》小结
这本书是我的小组长张海推荐的,明天要开始2014的工作了,我决定把这本小书看完。书中对问题的定义——你的期望 和 你的感受 之间的 差别!依照这个思路,我们在面对问题时就能很好地明确一个重要的前提——问题是什么。1.保持幽默感,你会看到解决问题的诸多方案。貌似滑稽的方案也可能是不错的方案。书中“借用隔壁大楼的电梯”到最后看来也不是不可行。2.不要把问题的原创 2014-02-09 13:32:50 · 999 阅读 · 0 评论 -
bug修改小结
页面样式问题,浏览器兼容性问题:很感谢那次到昌平政协修改网站样式的机会,我在配合美工赵芯的工作中,也学到了不少调试页面样式的技巧了,同时学到了一些css知识。之前我知道IE中的F11可以调试js,那次我知道了在IE中的F12可以调试样式,在火狐中采用FireBug调试样式。通过定位元素知道对应的样式如何继承,然后在调试工具中直接修改,调好以后可以再修改相应的css文件。原创 2014-02-10 16:04:32 · 964 阅读 · 1 评论 -
改造编辑器小结
除了收获了编辑器的配置、使用一些知识点外,我想,还有一些收获是在解决问题过程中产生的心得。1.在升级编辑器时,我试了很长时间才发现下载jsp版很好用;其实可以先问问同事陶子一下;一点点关键的信息可能就会少走很多弯路;就自己找到路子而言,经验是路走得很难的时候退出来放松了一下,重新去考虑问题了。2.在改造过程中,不断地自问自答,适时校正思路,对问题的推进大有裨益。事情的解决过程就原创 2014-02-27 11:10:43 · 835 阅读 · 0 评论 -
用心点,学着点
1. 看卡在了哪里,慢在了哪里,用点心就能少加点班——通过对比预期用时与实际用时,你就能明确问题出在了哪儿。2.要学会自我调节。换换脑子,效果更好。3.在执行时,径直行动,有问题再说;当然这话的意思 不是 说做事儿前不去分析和分解。期盼2014能有成长`原创 2014-02-18 11:59:14 · 777 阅读 · 0 评论 -
最近的工作及想法
3月马上就过完了,想想年后自己的工作有什么收获呢?首先是通过将一个项目改造为maven项目对maven有了认识,能够使用,并体会到了它的方便(它的自动编译,它的参数化,总之它能把项目管理得很规范);并体会到:不管工具把一个web项目怎么包装,在tomcat启动时,web应用文件夹的目录结构还是老样子,正所谓万变不离其宗。另外,就是对百度编辑器的使用及二次开发。自问自答的模式原创 2014-03-31 15:43:47 · 758 阅读 · 0 评论 -
如何把项目maven化
1.完成 maven环境的搭建http://www.blogjava.net/fancydeepin/archive/2012/07/13/382965.html2.按照maven的目录结构src--3.整理pom文件,完成构建,至BUILD SUCCESS4.解决jar包冲突问题,使项目启动成功原创 2014-02-16 17:50:05 · 1395 阅读 · 2 评论 -
时间都去哪儿了,你又想让它去哪儿
命名便于维护便于维护原创 2014-07-31 12:01:54 · 847 阅读 · 2 评论 -
模拟
1.模拟服务接口:在联调测试服务接口时,自己可以起两个web应用,来模拟2.模拟多站点:可以在开发机上配置多个域名指向127.0.0.1原创 2014-01-17 10:07:36 · 744 阅读 · 1 评论 -
是这个吗?
有时候走了很远却发现前提都错了。只要你有确认的意识,你就会找到确认的方法:1.在调试页面时,你可以把页面上的代码先全部删掉,在刷一下浏览器中的页面,看看是不是空白页面2.在你重启你的web应用时,你需要去确认一下它是否在tomcat下的server.xml中配置了。为了严谨起见,你还可以在web应用中的根目录下放一个测试页面如果真是这个的话,那么我XX,就会原创 2014-01-16 23:46:38 · 659 阅读 · 0 评论 -
工作小结
目前单位在给一家公司做一套业务系统,主要涉及工作流(用JPDL框架做的)。我所在的小组做的是物流,属于业务系统中的一个子模块,用的框架是Spring、SpringMVC、Hibernate,使用Eclipse开发,并且配置是基于注解的,表是由Hibernate根据实体类自动建的。在Controller中的方法往往都有一个参数ModelMap model,它的功能不可小觑啊,方法要进行重原创 2011-11-15 11:54:24 · 697 阅读 · 0 评论 -
Eclipse MySQL Hibernate 中文乱码问题 解决方案 心得
在用Eclipse开发Web项目时,遇到了中文乱码的问题 ,经过同事的耐心帮助、网上资料的查询和自己的分析,终于解决了。问题解决给我带来的心得是:关键是要确定问题是出在了哪个环节。造成中文乱码的原因可能Eclipse开发环境中,也可能是出在了Hiberna原创 2011-10-10 11:35:44 · 1630 阅读 · 1 评论 -
Dynamic Web Project 项目学习笔记
项目使用的是Spring、SpringMVC、Hibernate框架架构开发在eclipse环境下开发,创建的是Dynamic Web Project层次分明:宁愿多一些层次,也要让结构分明Web前端开发都在webapp包中,模型(业务逻辑)都在Java Re原创 2011-09-30 18:02:50 · 1668 阅读 · 1 评论 -
hibernate有实体类生成表
常规的思路是,设计好数据库,建好表,借助MyEclipse(也可以是其他IDE),自动生成映射,或者自己写映射。早就听说hibernate中可以自动生成表。但是一直没有试验。今天首先介绍其中的一个属性hbm2ddl.auto,这个就是这个方案的核心属性,有四个值:create,c转载 2011-09-28 14:23:30 · 2985 阅读 · 1 评论 -
Log4j 的作用和配置
背景对于有经验的开发者来说,日志记录的重要性显而易见。例如程序中的异常处理和安 全性都依赖于Logging的功能来帮助履行它们的指责。应用程序中的日志记录主要基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他 应用进行统计分析工作;跟踪代码运行时轨迹,作为日后转载 2011-09-28 13:52:02 · 1143 阅读 · 0 评论 -
<context-param>与<init-param>的区别
的作用:web.xml的配置中配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.转载 2011-09-28 16:06:26 · 1156 阅读 · 0 评论 -
page 分页的源代码
function jumpPage(pageIndex,pageSize){if(pageIndex==1){document.getElementById('start').value=0;}else{document.getElementById('start').value=(pageIndex-1)*pageSize;}var f = document.forms[0];if原创 2011-10-28 15:18:29 · 1978 阅读 · 0 评论 -
java web 开发入门心得
从事Java Web开发这一段时间来,对Java 面向对象的思想和MVC开发模式可以说已经熟悉了。我当前参与的项目使用的框架是Spring、SpringMVC、Hibernate。作为刚刚参加工作的入门者,我下面谈自己的几点心得,还恳请前辈指正。想必流行的做法都是把后台部分的代码分为entity(或domain)、dao、service、web几个层吧。实体类实体类就是原创 2011-12-15 00:05:45 · 12188 阅读 · 54 评论 -
转码项目小结
最近在忙新华社转码项目,中间出现了一些问题,通过耐心地探索,都一步步地解决了。原创 2013-08-31 23:51:53 · 1031 阅读 · 0 评论 -
使用soapUI测试WebService接口,xml字符串参数需要处理一下
WebService接口经常需要提供xml字符串作为参数,需要对参数作如下处理:原创 2013-05-16 15:07:30 · 6229 阅读 · 0 评论 -
初步接触全文检索小记
【全文检索功能优化的更新步骤】全文检索功能有一个索引生成工具,有一个目录,放置了字典文件夹和一系列文件。由于媒资系统当下较慢,需要重新生成索引。在生成索引这段时间,需要保证先前的全文检索是可用的。这就需要对媒资系统中索引文件的路径重新配置,然后将老的字典文件等移走,使两者仍保持对应关系,这样全文检索就仍然可用。然后把媒资系统中全文检索表中的记录状态为发布状态的ID字原创 2013-02-26 20:31:45 · 746 阅读 · 0 评论 -
工作小结备忘
媒资检索的优化对常用检索的个别域也进行了索引的生成,有利有弊利:检索效率提高弊:若有修改(如添加了一个检索条件),则需要重新生成索引对这一块,上次我到央广现场时,还不理解呢。这次我切实感受到了学习Lucene对理解这一块很有帮助,一直学习,一直在路上,却一直有收获和成就感相伴三个入库来源1.LT03导入excel和相应的实体文件(工作流程可以配置)2.媒原创 2013-03-21 22:18:30 · 703 阅读 · 0 评论 -
新建Oracle数据库
在项目的运维中,我学会了点东西。自己现在还是菜鸟,只能靠踏实、诚恳的点滴积累了。 1.远程访问计算机首先,被访问的计算机需要允许远程桌面连接在右击“计算机”----高级程序设置----弹出如下对话框,在远程桌面的单选框中选择“允许运行任意版本远程桌面的计算机连接”。 在“所有程序”中找到“附件”,找到“远程桌面连接”然后通过输入用户名和密码,就可以连接到远原创 2012-10-15 17:22:45 · 741 阅读 · 1 评论 -
工作中一道sql题目的收获
为了考察sql学习效果,经理给我们出了一道sql题,在工作中确实已经用到的。待大家把答案都发给他后,他把我们的答案做了个汇总,并进行了讲评。我感觉从中有不小的收获。 题目是这样的:wfm_taskexec、wfm_tasklog(两个表的结构一样,wfm_tasklog是wfm_taskexec的完成记录表)需求,同时满足以下四个条件:1、需要将wfm_tasklog中的部分记原创 2013-03-13 17:37:24 · 717 阅读 · 0 评论 -
PL/SQL Deleveloper导出的csv文件乱码问题
用PL/SQL Deleveloper导出csv文件格式数据,用excel打开是乱码,用记事本打开正常,怎么回事?马上Google,原来导出的文件的编码格式是UTF-8和而excel默认打开文件的编码是unicode,于是:1、用记事本打开文件,然后另存为,填写文件名,选择编码格式为unicode2、用excel打开新的文件,正常显示但是出现另外的问题,csv文件中转载 2012-11-13 12:50:46 · 2035 阅读 · 1 评论 -
Dynamic Web Project 的学习笔记
文章框架:1.Dynamic Web Project 概念 2.eclipse 中的动态Web 项目与 Myeclipse 中的web项目有何区别 3.动态的运行原理及目录结构---是否都涉及到由类生成表的技术(如果没的话,也应该 把这个搞清楚)4,如何原创 2011-09-28 15:14:17 · 17039 阅读 · 8 评论