Java开发技术总结.ppt
《Java开发技术总结.ppt》由会员分享,可在线阅读,更多相关《Java开发技术总结.ppt(15页珍藏版)》请在冰豆网上搜索。
![Java开发技术总结.ppt](https://file1.bdocx.com/fileroot1/2022-10/7/f50c0305-6e15-49fc-94d5-290fcd4c642f/f50c0305-6e15-49fc-94d5-290fcd4c642f1.gif)
UDATA产品及JAVA开发心得,2018/5/22向永清,UDATA技术架构,UDATA后续工作,任务调度系统取代CRONTAB自助报表系统万花筒KylinAd-hoc即席查询HiveImpala、Presto、SparkSQL,JAVA-WEB技术体系,开发框架:
Spring-boot数据访问基础:
JDBC&JdbcTemplateJPA(ORM):
JAVAPersistenceAPI(Hibernate)实时调度:
Quartz接口访问:
RestController项目管理:
Maven,私有maven仓库其他:
AOP,注解,Filter,SSO(CAS),Servlet,JAVA开发坑-1:
整数比较,基础:
比较引用用=,比较数值用equals方法示例Integera=123;Integerb=123;Integerc=newInteger(123);(a=b)?
true(b=c)?
falseIntegere=1000;Integerf=1000;(e=f)?
false自动装箱缓存:
默认:
-128127-XX:
AutoBoxCacheMax=300,JAVA开发坑-2:
空引用null引起的,不直接使用引用,而是使用函数,比如:
使用String.valueOf(a)而不使用a.toString();/容易引起空指针异常函数形参中有引用类型变量时,一定要先判断空引用再使用。
voiddoSomething(Stringa,Stringb)if(a=null|b=null)return;,JAVA开发坑-3:
pomjar包版本冲突,通过maven自带的工具:
mvndependency:
treeDverbose,通过里面的信息可以看到两个jar都commons-logging存在依赖,但是版本不同。
里面的详细信息显示引用了commons-logging:
commons-logging:
jar:
1.1去掉了commons-logging:
commons-logging:
jar:
1.0.3(omittedforduplicate),JAVA开发坑-4:
Around切面注解,使用前提条件Component/没有导致切面不能正产工作AspectAround切面可以拦截函数返回值,publicObjectdoAround(ProceedingJoinPointpjp)throwsThrowableObjectobject=pjp.proceed();returnobject;/正常返回,JAVA开发坑-5:
减少SQL访问,改进前:
比如通过uid获取用户权限,以前是先获取用户,然后获取用户对应角色,最后循环获取每个角色的权限。
改进后:
自定义查询,一条SQL获取用户所有权限,性能能够提升3倍以上。
Query(value=select*fromprivilegewhereidin(selectprivilege_idfromrole_privilegeWHERErole_idin(selectrole_idfromaccount_roleleftjoinroleonaccount_role.role_id=role.idwhereaccount_idin(selectidfromaccountwhereuid=:
uidandstatus=1)androle.status=1)andprivilege.status=1),nativeQuery=true)ListfindByUid(Param(uid)Stringuid);,JAVA开发坑-6:
组合索引,组合索引生效原则:
从左到右依次匹配为where,orderby,groupby后字段建立合适索引对用and连接的多个条件建立组合索引使用数据量少的列和字符串前缀来建立索引使用explain来分析索引的优劣在区分度高的列上建立索引,JAVA开发坑-7:
IDEAJVM优化,IDEA默认的堆内存最大值和初始值都为128M,如果需要跑一些大数据集,显得很吃力。
优化设置如下:
-Xms4096m初始值-Xmx4096m最大值优化后运行效率提高10多倍。
JAVA开发坑-8:
权限管理,权限管理设置,标准的账户、角色、权限以及关联表设计,存在问题:
权限粒度设置过细,不方便使用部门接口运行速度慢使用自定义注解进行数据权限验证权限接口尚待完善,JAVA开发坑-9:
多进程争夺资源控制,哨兵双机热部署,两个进程同时写数据库?
防止写入重复的脏数据设置一张status表,记录当前写进程状态selectforupdate行锁谁抢到锁,谁拥有运行的权利,10.188.32.7,10.188.32.8,10.188.32.8,JAVA开发坑-10:
NS&Log&RAL,NS,命名服务,当前未上线Log基于Logback,已经上线RAL基于AOPDBRalHttpRal,com.sf.archcommons-logging1.1.0-SNAPSHOT,com.sf.archsftc-arch-data-ral1.0.0-SNAPSHOT,THANKYOU,2022/10/22,