项目实践点点滴滴

【论文精读】DisCo: Graph-Based Disentangled Contrastive Learning for Cold-Start Cross-Domain Recommendat 源域中具有相似偏好的用户在目标域中可能会表现出不同的兴趣。因此,直接迁移嵌入可能会引入不相关的源域协同信息。提出了一个基于图的解耦对比学习框架,以捕捉细粒度的用户意图并过滤掉不相关的协同信息,从而避免负迁移。 具体而言,对于每个域,我们使用多通道图编码器来捕捉多样化的用户意图。然后,我们在嵌入空间中构建亲和图,并执行多步随机游走以捕捉高阶用户相似性关系。将一个域视为目标域,我们提出了一种以用户相似性为指导的解耦意图对比学习方法,以优化跨域的用户意图桥接。 阅读详情

1) 先HTML再JSP
web application对客户来说就是一堆html的集合,做出一个html样本既能让客户及早调整需求,也易于将来用html+struts转化

2) Reusable Design
可以把很多共同特性写成可复用系统,它们有超于当前项目的地位,由高手负责设计实现和维护,这样的模块可以找到很多,比如内部搜索(含底层的sql search engine也可复用),角色资源权限系统

3) Don't reinvent the wheel
Jarkata Commons项目拥有众多出色的实用jar,从出名的digester,BeanUtils,DBCP,Collections到Codec,IO,Net,FileUpload,HTTPClient能利用的资源太多了,好好学习非常受用

4) 显式的和分层次的异常声明
如果一个method可能抛出DaoException,NoDataFoundException,AppException,UnexpectedException,那么需要全部列出不能在方法声明出直接写 throw Exception { ... } 另外我觉得j2ee项目,每一个层次需要定义两层exception(在逻辑上,非必要),一层是内部使用,一层与上下层交互,比如java.rmi.RemoteException就是一种较高层次的异常,所有细节层次的异常在出这个层的时候应该用exception的initCause()方法包装再抛出。

以上所说的分层次也并非必需,但在大部分情况下一个完整的exception体系需要建立,如web app有一个叫ApplicationException作为所有被这个application内部抛出的异常的super class,这样在某个层次,如果必要,程序就可以catch appException继而完全避免这些可预见的异常,当然与此对应的unexpectedException当然就不需要application处理。常见的ApplicationException有InvalidParameterException, DaoException, NoDataFoundException, TooLargeResultsetException, OptimisticLockingException等等。为了方便管理和使用(前端报错需要),每个exception最好有一个ID和一个String类型的field用于说明真正出错原因

5) VO/DTO的应用(Value Object, Data Transfer Object)
就我的理解VO/DTO的作用并不在于简化程序,倒在于降低耦合。其实有些时候VO的使用挺烦的,它的好处在接口要改动时才会体现,使得一个人不用通读另一个的代码而只要照着VO/DTO更改即可。我现在的项目VO主要用于Action<-->EJB之间,总的来说没什么大的问题。
我不清楚应用了hibernate后会怎样,只是当前在我们的ibatis实践中,专门加了对于主要entity的VO,让ibatis将数据库获取的结果直接映射进VO entity再返回,用处不小

6) 事务处理
EJB容器可以自行管理事务,那么每个EJB Call都将是一个Transaction,这个特性实在吸引人。
下面是一个ejb-jar.xml的片断
    <session>
      <display-name>AccountCodeMgr</display-name>
      <ejb-name>AccountCodeMgr</ejb-name>
      <home>com.medlog.business.parasetting.AccountCodeMgrHome</home>
      <remote>com.medlog.business.parasetting.AccountCodeMgr</remote>
      <ejb-class>com.medlog.business.parasetting.AccountCodeMgrEJB</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>

在没有ejb的时候,以ibatis为例,可以用以下方法在baseDAO里实现Transaction处理
constructor() { sqlMap = SqlMapUtil.getInstance().getSqlMap(); }
startTransaction() { sqlMap.startTransaction(); }
endTransaction() { sqlMap.commitTransaction(); sqlMap.endTransaction(); }
rollbackTransaction() { sqlMap.endTransaction(); }
剩下的就好处理了。

7) Fast Lane Reader Pattern for DAO 外交快速通道??
EJB的初始化,jndi查找以及事务管理都附带一笔额外的开销,所以在前端只需浏览而不需改变数据库内容的时候,我们应用了Fast Lane Reader模式,action照样把业务交予Business Delegate处理,而BizDelegate根据是否改变数据库做出判断,如果答案肯定,它会将请求交给EJB处理,但若只是view,BizDelegate会直接唤醒dao执行select操作,从而绕过ejb层加快速度

8) BusinessDelegate和EJB的参数检查
还是因为EJB有overhead,经常在bizDelegate层就要进行一次参数检查,如果有错直接返回InvalidParameterException, 不浪费EJB资源,但是还存在这样一种可能,EJB_A called EJB_B with a set of invalid inputs, 这样的情况使得EJB层还需要再复查参数,虽然这样会有重复,但这种overhead毕竟不可避免

9) WebKey的应用
定义一些公用的jsp+actionrequest/session的attributeName,.让程序可读性更高,因为大部分情况下一个请求都不需要用到5个以上的attributes,所以我们可以有:
USER_VO_KEY,USER_ROLE_LIST存用户信息,MENU_ITEM_LIST存菜单项,SEARCH_CRITERIA_ONE(~FIVE)存搜索条件,SEARCH_RESULT_LIST_ONE(~FIVE)存结果,LIST_ONE(~FIVE)和OBJECT_ONE(~FIVE)存其他信息。毫无疑问代码可读性大大提高,只是我还在考虑是否有更好的方法,毕竟webkey还是摆脱不了初级程序员随便乱加/乱给各object赋值的恶梦

10) Optimistic Locking
我现在做的项目也用到了OptLocking的思想,简单说有几点,第一我们假设每一个用户在update前都会查看数据,或者说我们的网页设计使得frontend每一个可能的数据改变之前都有一个相对应的查看(select)操作. 基于此,我们限定了如果某数据D在用户A看后被另一用户B改动,那么用户A接下来对D的更改请求将被退回(with a special exception),而要求A重新查看数据再更新。如果这一个假设和限定都满足,可以有以下方法保证数据的更新是按顺序依次生效的 <1>每个需要的表加入lastUpdatedOn域 <2>每次select时选出该字段供待会儿update使用 <3>update时加入where lastUpdatedOn=#lastUpdatedOn# 这样如果用户B改过了某数据,他一定也改过了lastUpdatedOn,这样用户A用带where lastUpdatedOn=***的update就不可能真正更改到任何数据,frontend也可以根据此(updatedCount=0)用js提醒用户

--==欢迎大家跟贴就该文章和感兴趣的话题和我讨论问题==--

【仿真技巧】Smart Eye Probe在ADS信号仿真中的应用 Smart_Eye_Probe是一个眼探头,允许灵活数量的输入通道,输入通道支持单端或差分信号的混合,并且,可以使用一个共同的时钟信号触发通道的眼图。目前,仅支持瞬态(Transient)和通道(Channel Sim)逐位模式(Bit by bit)模拟,不支持信道统计(Statistical)模式和DDR总线(DDRSim)仿真。 阅读详情

相关推荐

Kriging代理模型理论相关推导

代理模型,Kriging,加点准则

森屹的博客 1万+

2021年终总结--量变质变

2021关键词:社会实践、班导生、项目上线、特等奖学金、国家奖学金、数学建模国奖、字节跳动。

ATFWUS的博客 745

Qt制作大数据可视化大屏展示电子看板

Qt制作大数据可视化大屏展示电子看板 解决当前最火的大数据可视化大屏展示,整个项目通过Qt开发,集成了QML/QChart/ECharts及自定义控件等模块,所有的可视化控件都可以集成到其中。可以随意增加和减少模块,各个模块可以随意拖拽,整体可以个性化布局。模块标题栏可自定义,包括标题文本信息、文本颜色、宽度/高度、背景颜色、按钮个数等功能,满足各个样式需求。 实例中主要展示了现成的一些仪表盘...

Qt自定义控件及应用开发 7707

java项目(学习和研究)

  java项目就是研究,不断的对项目进行迭代,把产品做的越来越好,就是research。   自己想着做一个java项目把,可以类似牛客网,想好自己的预期产品,在设计的过程中可以不断改进和扩展,在做这个项目的过程中学习开发中的点点滴滴。可以先想好大致框架,然后再逐步实现,这也是一个创作的过程。谁会知道你会做成什么样子呢?重要的是你发现了问题,解决了问题,这些才是最关键的。让别人和你交流时就觉得...

weixin_34284188的博客 170

MATLAB 设置legend加标题

x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon

早起CaiCai的学习空间 4713

STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。 总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

anquanyuanqqadsy的博客 6171

蓝的成长记——追逐DBA(20):何故缘起,建库护航 (二次发布-练习使用markdown编辑)

体现本文更好浏览效果请访问源地址: http://blog.youkuaiyun.com/huangyanlong/article/details/48776573原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。深蓝的blog: http://blog.youkuaiyun.com/huangyanlong/article/details/48776573【前言】 自

深蓝@黄炎龙 1922

fragstats:景观指数趋势分析

优快云@_养乐多_本文将介绍景观指数时间序列的趋势分析,包括趋势类型、斜率、截距等。以及景观指数突变分析所用的软件和 python 代码。结果如下图所示,

养乐多的博客 2859

2012逝去,2012总结

2013年在新年的鞭炮声中开始了,回首2012年,又一个春夏秋冬从我脚下走过。2012不平凡的一年,这一年发生了很多事……                                                                                     ——题记

信息技术提高班第九期 2355

Nerf 训练自有数据

colmap相机位姿转为LLFF格式数据

zfjBIT的专栏 2309

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【项目模块依赖构建顺序规划】

某公司正在开发一个大型软件系统,系统包含 N 个模块,每个模块之间存在构建依赖关系。例如,模块 A 可能依赖于模块 B,这意味着必须先构建模块 B,才能构建模块 A。 请根据依赖关系,输出所有可能的模块构建顺序(按照构建顺序排列模块名称),要求:

MISAYAONE的博客 404

过去五年的点点滴滴,应该值得大家学习分析下

像往常一样,在夜色下插上电源和网线,启动笔记本电脑,登录QQ,找到所有有关公司的群,逐一的申请退出和确认退出。今天,2012年9月7日 终于离开了服务了五年的公司,随着零星记忆片段让我回忆下这五年的点点滴滴。 2007年9月的深圳还是烈日当空,我顶着骄阳,怀揣梦想和希望走进现在这家公司总部,新的环境,新的面孔都等着我去适应和挑战。 2008年3月,公司为了发展需要把整个研发团队迁移到了

java教程 1395

VCAST创建单元测试工程

选择工作目录,后面创建胡UT工程将会生成到这个目录。

qq_42851449的博客 2482

点点滴滴从这里开始

一切都成为过去时,新的一天,新的改变,记录成长中的点点滴滴,欢迎来访!

谁的青春不迷茫 629

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

草根程序员转型做项目管理走过的点点滴滴之三人团队

这个些列的文章只是把我个人的经历记录一下,里面涉及到的观点属于个人观点,如果不妥之处请多多指教。    续接着上篇(一人团队):草根程序员转型做项目管理走过的点点滴滴之一人团队    一个人做完一个项目后,按照时间顺序依次是一个三人团队的项目;一个一人项目;另外一个三人团队的项目。 第一个项目可以说是只做了比较糙的一版就移交给分公司那边去负责了。一个人的项目让我接触了到了公司的水利主

anders lu 的专栏 3530

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

项目中的点点滴滴

在使用Eclipse的时候一定要注意插件的使用,在安装插件前一定看清楚干什么用的以及安装的方法。不要下载非官方提供的链接。今天我就遇到了TOMCAT插件和JOCKY。 在使用eclipse的clean时如果发现不能编译。 主要原因是:编译时eclipse进行了一次错误检查遇到包下错误文件,包以及里面的文件和排序后该文件以下的文件停止编译。 解决办法:把properties属性里的java c...

baiyujie的专栏 257

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

探索C++的奇妙世界:学习之旅的点点滴滴

在这个信息技术飞速发展的时代,编程语言作为计算机与人类沟通的桥梁,其重要性不言而喻。在众多编程语言中,C++以其高效、灵活和强大的特性,吸引了无数编程爱好者的目光。今天,我将与大家分享我学习C++的历程和心得,希望能为初学者提供一些启示和帮助。

asuf1364的博客 616

研究生的点点滴滴

研究生的点点滴滴

Jarvan_Song的博客 1172

点点滴滴——如何管理一个项目

一、进行中的项目 这是我第一次,以一个小组长的身份来带一个团队开发一个项目,包括前期的框架选择,真真实实的感受到了一个项目,从无到有所经历的一切。现在,这个项目可以说已经到了后期,剩下的工作不是太多,但是也是最关键的时候了,项目的工期一拖再拖,不知其他的项目也是像这样的吗?也许吧。也许前方不远处,就是我拨开迷雾之时,现在的团队可以是处于疲惫状态了,有道是,“一鼓作气,再而竭,三而衰”,诚然如是,

scu_Bao的专栏 611

项目团队转型成产品团队的点点滴滴

  转眼间我的博客已经有将近一年半的时间没有进行更新了,从今以后要重新对博客进行维护了,新时期开始的第一篇文章,来说一说工作上的一些感悟。   刚刚参加工作的时候,进的是一个项目型的团队,主要是通过外包项目来盈利,幸运的是,应公司发展战略的要求,我们的项目团队奉命向产品研发转型,因此我才有了这篇博客中的感悟,本人工作经验不足,说的不合适的地方请大家多多包涵。   首先,一句话总结,项目是客户的,...

陈俊岭的程序员之路(公众号求关注,方便交流) 5350

开源博客项目Blog .NET Core源码学习(15:App.Hosting项目结构分析-3)

学习并分析App.Hosting项目中前台页面的关于本站页面和点点滴滴页面。

gc_2299的博客 712

记录工作中的点点滴滴!

[color=darkblue]ITEYE--记录工作中的点点滴滴![/color][size=x-small][/size][align=left][/align]

yaoyaolingma的专栏 327

Scrum实践路上点点滴滴(一)

大周末在家突发奇想,想总结下这一年的点点滴滴。就从Scrum开始吧。 1.对敏捷,对Scrum要抱有信心。   2011年开始接触敏捷,Scrum概念,最开始报否定态度,看了几本入门的书籍比如《轻松敏捷之旅》,《敏捷无敌》之类的。由否定态度变成怀疑态度。有试试看的想法。到现在来看,实施敏捷之后,解决很多问题,确实收获很多。当然这里不是否定否定瀑布(我曾经是瀑布的卫道士),也不是说瀑布一定解决不...

weixin_30702887的博客 155

记录自己使用GitHub的点点滴滴

使用GitHub的记录 现有项目更换git地址 1.创建的git地址:https://git.new.com/gourd/new.git 进入git_test根目录(可以执行git命令的话,就证明进入了git_test根目录。) 2.查看项目目前的git地址 git remote -v origin https://git.old.com/gourd/old.git (fetch) origin https://git.old.com/gourd/old.git (push) 3.重新设置git的新

面包的博客 9643

草根程序员转型做项目管理走过的点点滴滴之一人团队

这个些列的文章只是把我个人的经历记录一下,里面涉及到的观点属于个人观点,如果不妥之处请多多指教。       一人也要称为团队有些牵强,就当是人格分裂吧,一人饰演多职。       2007年春节后大学最后一个学期开始从事软件开发工作,使用的VB编程语言,经历了一年才算刚刚入行,期间通过自学C#转型到了.Net平台,2008年年初来到北京凭借着自学的C#在北京找到了第一份.Net的软件

anders lu 的专栏 5453

五年程序员人生的点点滴滴

和大家一样,我也是一名普通的程序员,很快工作五年了。现在依然记得大学时软件工程老师曾说过的一句话,大概是这样的:“工作五年之后,就基本可以分出大家的区别了”,这句话大概有两层意思,第一,大家都基本确定了自己的工作或职业方向;第二,一个人的能力如何基本已经确定了。先抛开这句话的真理性,至少它本身是有些道理的,当然随着时间的迁移,当初的五年时间对于现在可能已经不太准确了。但这句话一直陪伴着我,每过一段

编程小丫 1万+
上一篇: J2EE学习笔记(6) Struts HTML Tags
下一篇: 网页前后端输入校验
smallfox
博客等级 码龄25年 0粉丝 15原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值