备注:代码下载链接:采油厂绩效考核系统的实现与开发-Javascript文档类资源-CSDN下载
1 绪论
绩效管理是企业组织管理的核心和枢纽,它是组织提升团队绩效最有力的手段。在一个组织中能否实现有效的绩效管理,关系到企业是否能在日益激烈的市场竞争,环境中保持优势。一套行之有效的绩效管理系统,将极大助力员工工作改进和业绩提高,激励员工持续改进,并实现组织战略目标。
1.1 研究背景和意义
在经济全球化的发展趋势下,各企业的竞争越发激烈,企业存在的问题在于企业战略和日常营运活动的断层问题。战略、目标、资源和风险往往只停留在执行层进行讨论,但是日常运营活动和绩效方法论不能对此进行衔接,企业可以测评绩效但却做不到管理绩效。因此人力资源的有效管理绩效将成为企业取得竞争优势的重要途径。在人力资源管理中,绩效考核则为其中的重要组成部分。近年来,为了寻找更科学、有效、客观、公正的考核方法,业内人士进行了诸多艰苦的探索。然而,由于绩效的多因、多维、动态等特点及考核者的情感等因素,考核难以取得令人满意的效果,所以能否高效的解决目前绩效考核存在的难题,对企业的长远发展起着至关重要的作用。
基于目前采油厂的基本考核体系存在的不合理现象,以及当前信息时代高速发展的计算机技术,设计和建立科学有效的绩效考核系统越来越受到采油厂管理者的关注和重视。企业绩效考核是将集体和个人的努力与公司战略目标相连接,并通过计划、组织、指挥、协调与控制的手段使之实现的过程。绩效考核可以保证组织战略目标的实现、促进管理流程和业务流程优化、促进组织和个人绩效的提升。绩效考核有助于采油厂在员工晋升、工资等方面做出公平、公正、合理的决策,以便于管理者对下属的工作进行审查并规范其职责范围,有针对性的制定计划。高效的发掘员工的潜能,为实现采油厂的生产目标辅以客观的评判方法,促进采油厂的进一步发展。从而提出了一套科学、可行、有效的石油企业绩效考核体系,使石油企业的考核规范化、体系化,考核流程可视化,从而提升企业的管理理念。
1.2 国内外文献综述
绩效考核作为企业管理的重要模块,一直受到各方的研究实践,对绩效考核方式更是研究重点。随着计算机水平的提高和互联网的普及,考核模式也由人工操作转变为在线考核,考核系统的实现也因编程语言的差异,各有特色。经查阅总结国内外对于绩效考核系统的文献后,发现对于绩效考核的研究大都分为考核体系或系统实现方法两方面研究。
1.2.1 考核体系研究现状
自十九世纪国外政治领域就有了绩效考核的的概念,到二十世纪企业管理有了明确的绩效考核方法。随着管理理念和公司经营模式的改变,至今常用的几种考核方法有:
360度考核法:经企业成员多方位、全面评测,每位被考核者都要由客户、领导、同事、下属和本人五方共同考核,考核内容包含工作效率、工作态度、专业能力、沟通能力和领导者的管理能力等方面。该考核法对于不同级别被考核对象有不同的考核问询者[1],全面的考核环境,使得考核结果更客观。且直接将被考核者本人纳入考核体系中,让所有参与考核的成员对考核状况有清晰的了解[2],可以更快速的对考核过程进行反馈,使考核结果更公平。但其独特的考核环境,造成了考核的周期过长,人员涉及广,使考核时间成本、人力成本都成倍增长。
KPI考核法:将企业的战略目标由上及下层层分解,量化指标,每个部门根据自身特色“领取”指标。再将其分解到部门个人,并设置关键绩效指标,使员工明确自身对企业的贡献[3],提升员工对企业的责任感。由分配指标完成度进行考核,避免了360度考核法中形成的人员主观因素影响,使考核更公正。通过指标实现过程,可以判断员工的工作能力和对其职位的胜任度,从而完成对员工的奖惩和指导建议,让员工晋升机制更透明。对集体指标的归纳总结,使员工清晰个人与集体的联系,明确自身及企业发展方向,培养员工对企业的归属感。但因各部门工作内容不同,导致部门指标差异过大,企业内组织与组织的联系过少,可能导致企业战略目标的实现出现偏差。并难以确定整体的考核规范,不能对员工全面考核,可能影响企业的长久发展。
BSC(平衡计分卡)考核法:作为KPI考核法的扩展方法,在KPI基础上以客户、财务、员工工作流程和学习成长维度等方面,分解公司战略目标,突出分支目标的可执行性、相互平衡性、可计量性等特点[4]。该方法将分解企业发展长远目标,引导员工、部门逐步完成对公司的发展建设,铺成未来市场的有力竞争路线。从多方面进行考核,即结合了360考核的优点,又避免了KPI考核的缺点,将员工发展和成长相结合,促成企业核心竞争力形成。该考核法既可以完成对员工能力的考核,对员工晋升也提供了学习空间,实现了企业与员工共同成长的战略目标。
1.2.2 系统构建方法研究现状
在互联网背景下,绩效考核的模式也发生了变革,由最初的人工表单填写,到便捷的计算机系统。这样的改变一是基于计算机软硬件的升级,二是基于云服务的兴起。云可以使软硬件程序在互联网上完成服务,处理远程任务,避免了客户端的安装部署及环境限制。其强大的计算能力和高度的可扩展性,可以完美的适应使用者的需求,既保证了服务质量又降低了维护管理的费用[5]。在云服务的基础上,各类应用程序的开发应运而生,基于编程语言的不同,应用开发框架也有所不同。以零客户端作为条件,统一采用B/S(Browser/Server)软件架构,对此国内外对绩效考核系统的开发框架大致分为以下几类:
SOA(Service-Oriented Architecture)框架:即为面向服务的IT体系结构,以服务模式作为开发思路,将系统分解为三个模块:开发服务、业务服务、管理服务[6]。该架构模式下,服务模块形成一组业务链,以企业的服务总线为核心,分解出一系列子系统。员工根据个人业务类型,通过网络访问服务总线从中调取相应子系统。以层次清晰地信息传输、方便快捷地系统维护和安全简便的系统集成功能为设计理念[7]。该模式可以保证企业产品、服务的绝对安全,但只适应于员工阶层分工明显的企业,不能适应小型企业的绩效管理需求。
SSH(Struts+Spring+Hibernate)框架:即为几种轻量组件的集成框架,是J2EE平台最流行的开发架构,分为表示层、业务层以及持久层。以Struts作Web页面开发,Spring实现业务逻辑的接口,Hibernate实现接口与数据库间的转换访问。该架构模式下,客户的请求指令以XML的格式封装,Struts中的控制器对其分析,由Spring对分析后的数据按规范查找相应的服务进行调用[8]。该模式使用广泛,经多方测试,基于该框架的应用安全性高、稳定性好、可扩展性强。
TSH(Tapestry+Spring+Hibernate)框架: 与SSH框架类似,其Web页面的编写框架调整为Tapestry,实现了视图逻辑与业务逻辑彻底分离的目标[9]。因为Tapestry包含了前端开发的图层模板,页面只需由HTML模板和页面类组成。业务逻辑存放在页面类中,和模板组件完全分开,脱离了页面的束缚[10]。该框架使得应用开发更加便捷,完全可以实现分工协作,节省开发时间成本以及维护升级的人力成本。
1.3 本项目研究内容
本项目所研究的绩效考核系统是集计算机技术、服务器技术和数据库技术为一体的技术系统和社会系统,属于“互联网+”时代大背景下衍生的战略工具。依据参考文献的研究,绩效考核系统在完整的考核体系基础上,用编程语言将其实现,使企业办公更方便、透明、公正、安全。
现以采油厂为例作为系统服务的对象,针对采油厂实情,结合国内外流行的考核方法,在规定员工的任务指标的同时,兼顾员工的学习成长能力,制定出一套适合采油厂长久发展的考核体系。完成绩效考核体系的构建后,选用当前最普遍的系统架构及数据库管理模式编写系统程序,使得系统的应用性更广泛,避免硬件设施出现问题。
通过调查研究,设计更适合用户使用习惯的人性化界面,达到界面友好,使用户办公时无技术性困难。完成整个系统之后,若经过调试没有出现漏洞,则将系统暂时投放到班级中,小范围测试系统功能,根据同学们的意见,对系统做最后完善。争取完成考核系统更人性化、更方便快捷、更公平公开的目标。
2 系统设计原则
2.1 先进性和规范化原则
采用符合国际标准的、先进而且成熟的系统平台和开发平台,使系统具有较高的起点和较长的生命周期,同时具备较好的开放性、可靠性和可扩展性。在开发过程控制、文档规范化等遵循相应的软件开发标准和惯例。
2.2 高度的兼容性和可移植性
兼容性是指当用户由于业务的改进而使原有的业务系统升级或移植到其他平台时,通过修改环境定义即可将系统数据源重新定义,从而降低应用系统的维护难度及成本。
可移植性是指应用系统的软件各种流行的软、硬件平台。生成的代码无需修改即可平稳移植到其他平台上运行。当用户硬件系统改变或其他环境变化时,只需修改配置部分,而无需在整个范围内重新定义镜像,这样就实现了软件系统与硬件平台的性能伸缩同步。
2.3 人性化、使用性
系统充分考虑客户体验的个性化要求、使用方便、界面友好。在系统设计师充分考虑用户的使用习惯,提供大量人性化设计,帮助用户快速定位所需要的功能、简便操作,满足绩效考核审核、汇总操作的需要。
3 设计思路
3.1 采用基于J2EE的体系结构
系统采用完全基于J2EE的体系结构。Java 2 Platform Enterprise Edition(J2EE)
技术提供了一个基于组件的方法来设计、开发、装配和部署企业级应用程序。J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用组件的功能、基于扩展标记语言的数据交互、统一的安全模式和灵活的事物控制。
图3.1 J2EE的标准结构
设置集中数据库服务器,数据库系统采用Mysql,所有的系统客户端直接使用IE浏览器或其他通用浏览器登录应用服务器,运行绩效考核管理程序,完成绩效考核指标设置、考核评分、考核汇总、考核导出、考核查询全流程操作。
3.2 绩效考核数据存储方式
系统需要支持绩效考核模板的自定义,根据不同的部门要求,设置不同的考核指标,将不同模板下的绩效考核数据统一的存储在绩效考核数据库中,同时实现绩效考核数据的高效率汇总、检索查询。
4 设计方案
4.1 系统网络拓扑图
图4.1 系统的网络部署拓扑图
4.2 系统结构图
整个系统分为10个功能模块:、日常工作、重点工作、作风建设、基层评议、其他工作、人员考核、报表统计、绩效分析、考核管理、系统权限管理,每个模块具体的功能描述如下:
日常工作:由被考核机关科室及附属部门于每月5日前,将月度工作计划报送(上传)厂主(协)管领导进行审核;由厂主(协)管领导于次月5日前,完成对应考核。厂机关党总支负责按月/季度/年对考核结果进行汇总。
重点工作:由厂长(党委)办公室根据各类重要会议安排,及时制定月度重点工作计划,于次季度第一个月5日前,完成考核工作。厂机关党总支负责按月/季度/年对考核结果进行汇总。
作风建设:由厂纪检监察科牵头,人事科(党委组织科)、机关党总支参与此项考核工作,于次季度第一个月5日前,完成考核工作。厂机关党总支负责按月/季度/年对考核结果进行汇总。
基层评议:由厂机关党总支负责此项考核工作,于次季度第一个月5日前,组织各基层单位对机关科室及附属部门进行满意度测评。
其他工作:由厂机关党总支每月5日前,收集厂领导、监管部门对相关科室(部门)安排的临时性工作及“涉外业务”考核意见,并完成考核结果汇总。
人员考核:由各机关科室及附属部门每月5日前,收集相关科室(部门)对人员的考核工作,并于次月5日前完成考核结果汇总。
绩效分析:通过绩效考核的各项基础数据以及考核结果数据,分析部门及被考核人员的相关情况。
考核管理:对各个考核周期与细则进行维护。
系统权限管理:管理系统中的用户信息、角色信息、用户可见的菜单以及用户可见菜单中的数据范围。
系统功能模块的核心业务处理以组件方式部署在应用服务器中,用户通过安全认证机制进行身份验证后进入相应的系统操作界面,进行相应的业务处理。本系统涉及的访问用户主要包括系统管理员、员工、部门负责人、财务、人力资源等。
图4.2 系统的整体结构图
4.3 系统业务流程
图4.3 系统业务流程
5 系统功能设计
系统主要的模块功能包括:日常工作、重点工作、作风建设、基层评议、其他工作、人员考核、报表统计、绩效分析、考核管理、系统权限管理。
5 . 1 日常工作
由被考核机关科室及附属部门于每月5日前,将月度工作计划报送到科室负责人进行审批,审批通过报送厂主(协)管领导进行审核,审批不通过则打回报送人员进行重新制定;厂主(协)管领导审批不通过,打回至科室负责人重新制定,审批通过后于次月5日前,完成对应考核。厂机关党总支负责按月/季度/年对考核结果进行汇总。
当被考核机关科室及附属部门(包含科室负责人)于每月5日前未将月度工作计划报送至厂主(协)管领导进行审核时,则被考核机关科室及附属部门当月日常工作考核分数为0。
厂主(协)管领导日常工作考核成绩为所有被考核机关科室及附属部门的平均分,由系统后台计算完成。
5.2 重点工作
针对绩效考核中的评分方式进行设置,对系统中的指标库进行自定义的组合,形成绩效考核的考核规则。系统通过对形成的考核规则进行解析得出最终的绩效考核结果。
5.3 作风建设
将本地系统收集到的所有数据在本地库中进行数据筛选、清洗、抽取,形成绩效考核所需的数据,按照系统功能的要求提供相应的故事存储的数据。
5.4 基层评议
由厂机关党总支负责此项考核工作,于次季度第一个月5日前,组织各基层单位对机关科室及附属部门进行满意度测评。
该工作每季度进行一次,由各个基层人员对机关科室及附属部门进行打分,各个部门得分取所有打分人员平均分,若在规定期内没有进行打分,视为自动放弃。
5.5 其他工作
由厂机关党总支每月5日前,收集厂领导、监管部门对相关科室(部门)安排的临时性工作及“涉外业务”考核意见,并完成考核结果汇总。
5.6 人员考核
由各机关科室及附属部门每月5日前,收集相关科室(部门)对人员的考核工作,并于次月5日前完成考核结果汇总。
各部门人员内部考核成绩进行排名,数据仅内部科室可见,各个部门之间互相不可见。厂领导部门人员拥有所有数据可见权限。
5.7 报表统计
将日常工作、重点工作、作风建设、基层评议、其他工作所形成的月度/季度/年度报表进行统计排名。并且导出为标准的EXCEL文件。
5.8 绩效分析
由绩效管理人员根据定制的考核标准,结合系统的考核基础数据,通过系统自动对不同岗位的被考核人员进行管理,最终得出考核评价结果。
以图表的形式(柱状图或饼图)展示汇总数据与分析结果。
5.9 考核管理
由绩效管理人员根据定制的考核标准,结合系统的考核基础数据,通过系统自动对不同岗位的被考核人员进行管理,最终得出考核评价结果。
5.9.1 考核细则管理
各个被考核部门综合岗的人员每月定时对考核细则进行维护、上报。可选择历史考核细则作为本月考核细则,并可在历史考核上进行二次修改。
5.9.2 考核周期管理
维护考核的周期,月度考核,季度考核,年度考核,不定期考核等维护管理。
5.10 系统权限管理
通过分配和取消角色来完成用户权限的授予和取消,根据不同的职能岗位划分角色,资源访问许可被封装在角色中。用户通过赋予角色间接地访问系统资源和对系统资源进行操作。授权者根据需要定义各种角色,并设置合适的访问权限。而用户根据其工作性质和职责再被指派为不同的角色,完成权限授予。这样,整个访问控制过程就分成两个部分,即访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。
5.10.1 角色管理
管理系统中的角色信息,提供系统角色的定义,新增、修改、删除、查询等功能。
5.10.2 用户管理
管理系统中的用户信息,提供系统用户的定义,新增、修改、删除、查询、用户角色关系绑定。
5.10.3 角色权限设置
定义角色可查看的系统功能,将角色绑定对应的可见数据。
5.10.4 组织机构设置
管理系统的组织机构,各考核单位和被考核单位的定义,新增、修改、删除、查询。
6 系统实现
6.1 开发基础
6.1.1 开发环境
本系统将使用IntelliJ IDEA作为开发工具,该软件拥有强大的整合能力、全面的提示功能和快捷键设置,可以加载各种系统开发需要使用的插件工具,使软件开发更方便快速.
6.1.2 开发技术
作为企业开发项目,采取J2EE框架,该技术集合了各类不同组件,便于系统功能的实现,符合了系统的设计原则,具有兼容性高、可移植性强、安全性好和再用性强[13]的优点.开发者即可将主要精力集中于系统逻辑结构和整体架构上,提高系统开发效率[14].一般J2EE项目的开发,使用HTML、CSS和JavaScript三种技术结合完成任何样式的前端页面的搭建,本项目还将采用前端开发框架Bootstrap完成页面搭建.
HTML:是一种超文本标记语言,用于搭建基础网页,通过浏览器的解析,展示页面内容;
CSS:是一种叠加式样式集,用于控制HTML元素,美化页面,控制页面布局样式;
JavaScript:是一种脚本语言,具有程序的逻辑性,用于增强页面元素的使用性,提高用户的体验感;
Bootstrap:是上述三种开发语言的集成工具,将各组件的模板样式进行封装,开发者只需引用其专属类,就可完成对组件样式的初步更改,减少开发的代码量.
6.1.3 其他开发环境
为保证编程语言被计算机全面解析,我们需要安装配置JDK、Tomcat、MySQL等插件,完成IDEA的配置.
JDK:为编程提供开发环境以及Java系统的类库;
Tomcat:为J2EE项目的开发提供服务器支持;
MySQL:为项目面向对象的信息表单提供存取支持.
6.2 系统架构
作为企业发展前提,利润最大化永远是企业追求的目的,为避免企业财力、人力资源的浪费,办公设备当然选择前期部署、后期维护都简洁的方案.因此,本系统选用B/S架构模式,该模式下开发应用程序只需客户端通过浏览器访问页面处理器[16],服务器就会对访问请求做出响应,在浏览器页面呈现出系统内容,完成与用户的交互过程.该模式将应用和开发分离,使用者若需要增加软件系统的功能,开发者只需完成功能代码编写后,更新服务器的项目部署,就可使用户再次访问时功能更新,不需要对客户端在此部署.所以,该模式不仅在维护上无需过多投入,功能的扩展性也非常强大,同时统一浏览器作为使用界面,也降低了操作的难易度.
6.3 Web页面实现
基于上述开发技术和架构模式,整体系统的Web页面搭建会根据页面的复杂度逐步增加JavaWeb组件应用难度,现将系统分为两类页面:简单页面和复杂页面.将页面实现过程,详细阐述如下:
6.3.1 简单功能页面
在企业需求分析中所述,系统需面向三类人群,所以需要通过登录端口来区别用户类型,在未登录前系统内容应不予显示.因此,登录成功之前的系统页面与用户的交互较为简单,将其划分为简单功能页面.这类页面的搭建只需要编写HTML和CSS即可完成页面实现.
系统登录页面的构建,需要完成账号和密码的填写,无须丰富的动态内容.所以,只需使用HTML的标签、组件即可完成布局,通过设置其组件属性值更改显示形式.登录页面效果图如图6.1所示:
图6 . 1 登录页面
主体部分为登录小窗口,通过
标签实现窗口布局,输入框实现部分代码如下:
若用户第一次使用系统,可通过点击立即注册的超链接,将注册页面跳转为注册页面,其页面效果图如图6.2所示:
图6 . 2 注册页面
该页面显示元素较多,为方便控制布局,将在HTML中引入CSS的选择器组件对其元素进行控制.选择器的使用,可以使系统开发耦合性更低,可允许多人协作完成开发任务,减少开发时间.在标签中添加class属性,以便于多元素组件合理布局,其部分代码如下:
通过修改class选择器的属性,同时控制需要显示相同样式的元素.
在上述两个页面的使用过程中,都需要对填写的表单有提交功能,那么对表单填写的信息需要有对应的规则,为提高用户的体验,在提交前就应对信息进行格式校验.这时就需要使用到JavaScript中DOM模型的相关组件,通过对提交按钮绑定事件和监听器来完成校验工作,其部分代码如下:
function checkUsername{
var username=document.getElementById(“username”).value; //获取用户名信息;
var reg_username=/^\w{6,12}$/; //设置用户名输入格式为6-12位字母或数字;
var flag=reg_username.test(username); //对输入信息进行校验判断;
var s_username=document.getElementById(“s_username”);//获取显示提示组件
if(flag);else{s_username.innerHTML=”格式有误”}; //修改提示位置信息
return flag;
}
以上,则完成了简单页面的全部功能实现.
6.3.2 交互复杂页面
在通过登录页面表单校验后,用户进入系统,对页面的功能性要求就非常繁复了.因此,若仍然坚持一步步添加页面元素再控制样式,不仅代码量非常庞大,代码的可读性也会比较差.所以我们使用了前端的Bootstrap框架,直接使用相应组件的模板样式,更快速的完成前端页面搭建.
通过引用Bootstrap封装好的语言,完成对页面内各组件的布局,按上文所述系统结构有层次的完成系统页面布局.将各功能类按菜单分类布局到导航栏,根据选择不同通过href地址的指引,跳转到相应页面.
(1)管理员系统:
通过身份验证后,将进入管理员系统首页如图6.3所示,可以浏览企业内部新闻,点击新闻链接,即可跳转至新闻页面.点击相应的菜单选项,将进入考核管理与系统管理的操作中,对相应的表单、信息进行增删改查操作,考核管理页面如图6.4所示:
图6 . 3 管理员系统首页
图6.4 部门考核指标设置页面
在考核指标设置中,如需更改考核指标,则需点击更新考核指标按钮,对考核指标的权重进行重新计算,如添加考核指标后,未通过一致性检验,页面如图6.6所示,如通过一致性检验,页面如图6.5所示:
图6.5 考核指标更新通过页面
打开考核管理菜单,对部门、人员的信息进行增、删、改、查功能,可以通过任意关键字对成员进行搜索,点击添加员工信息即可完成信息添加功能.如图6.6所示:
图6.6 部门人员信息管理页面
在该页面组成中不仅添加了导航栏和分页组件的使用,对事件的监听机制有了更深一步的语言应用.通过HTML DOM中innerHTML的使用,使得数据添加功能本来繁多的代码量急剧减伤,点击部门人员管理页面的添加员工信息按钮,即可进入员工信息的填写,其页面如图6.7所示:
图6.7 员工信息添加页面
点击确认添加按钮,就会触发该按钮的监听,完成人员信息页面成员的添加.部分代码如下:
var table = document.getElementsByTagName("table")[0]; //获取需添加信息的表格
table.innerHTML += "\n" + //获取添加信息并新增表格末行直接填入
" "+id+" \n" +
" "+name+" \n" +
" "+gender+" \n" +
" "+tel+" \n" +
" 删除 \n" +
" ";
在上述方法中this的使用,与obj对象相结合,实现了系统对删除操作的执行,点击人员管理页面删除按钮后,将调用delTr()方法,完成删除操作,部分代码如下:
function delTr(obj){
var table = obj.parentNode.parentNode.parentNode; //一层层获取操作单元格父节点,直到获取到执行操作的表格;
var tr = obj.parentNode.parentNode; //获取到执行删除操作的行;
table.removeChild(tr); //删除表格中的行结点;
}
(2)绩效管理系统:
分两种等级的登录权限进入后,普通部门领导将对绩效表单进行填写报送,在页面显示中使用了card组件以及DOM的Date类,实现登陆者信息以及当前时间的显示.其页面如图6.8所示:
图6.8 部门考核表单填写页面
部分代码为:
信息卡
innerHTML=username;
innerHTML=userobject
领导层
当前时间为
当纪检监察科领导登录后,将进入到对其他部门提交绩效考核表单进行审核,通过查看附属证明与考核指标库进行对比,完成提交分数的核查.如需对登录密码等信息进行修改即可进入系统设置的修改页面.页面如图6.9和图6.10所示:
图6.9 考核表审批页面
图6. 10 登录密码修改
(3)绩效考核系统:
当身份验证为普通权限后,用户则为企业普通员工,进入绩效考核系统中,考核指标、排名、成绩的查询结果,将调用管理员系统及绩效管理系统中对应的部门、个人考核表数据.如对考核成绩存在质疑,可以通过绩效反馈功能,对相关项目填写申辩理由,并点击申辩按钮,将申辩请求提交到部门领导的系统中,等待申辩结果.页面如图6.11、图6.12和图6.13所示:
图6. 11 部门考核结果排名页面
图6. 12 个人考核结果查看
图6. 13 考核结果反馈界面
根据上月考核结果,员工可自行在学习课程页面中完成选课,并对所选课程进行学习考试,学习状态与考试结果将同步在该页面中,如图6.14所示:
图6. 14 员工学习课程页面
如个人信息发生改变,需要在系统中进行变更,则可进入个人信息页面完成信息修改,进入页面后,信息呈现不可修改状态,需点击修改按钮后,方可修改,点击确认后,修改后的信息将同步到数据库中.页面如图6.15所示:
图6. 15 个人信息修改页面
6.4 服务器
将系统基本部署完成后,用户要做到通过域名访问系统就需要应用服务器,由安装了服务器软件的计算机根据用户请求将所需资源返回到用户的浏览器上.我们作为开发端,要让用户能唯一的访问到我们,我们就需要配置相关web服务器对访问作出响应,本文将采用开源的免费服务器Tomcat为系统提供服务器支持.下载安装后,并正确配置计算机的JAVA_HOME环境变量,运行bin/startuo.bat程序即可启动Tomcat.通过配置Tomcat安装目录下conf\Catalina\localhost中创建任意名称xml文件,在文件中编写.那么,其他用户即可通过访问:开发端ip地址/xml文件的名称作为URL,即可成功访问到项目系统.
6.5 数据库
将项目部署到服务器后,用户在系统使用过程中,无论是用户注册信息,还是对绩效指标设置信息、绩效表单数据等等,都需要存放在数据库中,以保证数据在调用过程中的安全性.本项目将使用MySQL数据库提供用户表单的信息存取,保证大量数据存取的完整性.
根据本系统的页面设计以及UML建模,数据库共设计了12个表,表与表之间包括一对多关系11个,多对多关系1个.其中用户表(user)中的数据将被登录后信息卡片以及绩效表单内容所调用,绩效反馈(feedback)中的数据将被绩效管理中考核表管理模块所调用,学习内容(study)中数据将被绩效管理中员工考核表填写和考核结果管理等模块调用,绩效表单(performance)将被绩效管理系统和绩效考核系统都调用,实现三个系统的数据互通.系统的整体的数据库表单之间的关系如图6.16所示:
图6. 16 绩效考核系统数据结构图
在系统功能与数据库的连接中,使用JDBC技术完成代码的编写引用数据库资源,为避免数据库路径更改而造成的引用失败,配置DBConfig.properties文件在其中编写以下代码:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db
user=root
password=123123 //数据库密码
完成数据库的环境配置后,在编程文档中引入需要使用的数据库java类,使用create关键字进行数据库和表的创建.然后,在调用数据库信息的方法中编写以下部分代码来获取数据库信息:
static {
ResourceBundle bundle = ResourceBundle.getBundle("DBConfig");
url = bundle.getString("url");
username = bundle.getString("user");
password = bundle.getString("password");
try {
Class.forName(bundle.getString("driver"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,pwd);
}
7 结论
本文通过文献查阅比较,分析了目前绩效考核方法以及系统开发模式的利弊,基于企业具体实情,对绩效考核系统的开发做了论述。通过该系统的设计,实现了办公与互联网的结合,让办公时的信息交流变得更加迅速,避免了因信息交互周期长而耽误企业效益。在绩效考核实现上,完成了从线下到线上的变革,将整个绩效考核系统根据用户需求的不同,实现了多方登录系统的集成使用,统一显示界面简化操作,避免用户花费时间学习系统的使用规范。
在整个系统功能设计中,绩效考核模块作为其核心功能,在该模块的设计中,采取考核流程状态显示的效果,使用户在使用过程中及时发现问题,解决了传统模式中反馈不及时的问题。而绩效考核模块的另一重要设计,是指标权重占比的算法更新,将采用更新一次考核指标则重新计算权重的模式,来实现员工绩效结果的计算。将每位员工为企业做出的最大贡献进行比较,以此确保考核的公平、公正性。员工系统模块关于部门绩效考核结果的排序,使得考核的透明性更高,员工可以根据考核成绩,明确与其他员工的具体差异在哪。避免了企业做出员工晋升决策后,引起员工的不满质疑。针对员工能力提升而设计的学习模块,可以提升员工的专业能力,弥补考核结果上呈现的欠缺,更好的完成日常工作,从而提高个人的绩效成绩。因此,整个系统的功能设计都以增强企业的最终利益为目的,从每位员工出发,立足于促进员工进步发展,从而提高企业的人才竞争力和口碑竞争力。
在系统的实现上,基于JAVA编程语言,学习使用了JavaWeb技术完成整个系统的构建实现。页面实现过程中,程序编写由浅及深,一步步加入各组件的使用,让读者对系统页面的构建过程有全面的了解。文章所述的系统实现技术,对前端、服务器、数据库等方面的技术都有涉及,并采用当前最新使用规范,以延长系统的生命周期。AHP的应用模块,不仅可以作用于绩效考核因素权重计算,也可作用于员工绩效优劣排序,使系统算法更简洁。计算机技术的发展带给我们诸多便利,数学的发展为我们解决了许多细节上的难题,本项目将课堂所学知识做了综合应用及扩展,完成具有科学性、公正性的考核系统,真正做到学有所用。
你可能感兴趣的:(servlet,java,tomcat)
代码随想录算法训练营第52天 | 101.孤岛的总面积 、102.沉没孤岛、103.水流问题、104.建造最大岛屿
Amor_Fati_Yu
算法 java 数据结构
101.孤岛的总面积importjava.util.*;publicclassMain{privatestaticintcount=0;privatestaticfinalint[][]dir={{0,1},{1,0},{-1,0},{0,-1}};//四个方向privatestaticvoidbfs(int[][]grid,intx,inty){Queueque=newLinkedList=gr
将字符串数组String[]转换成List的三种方法
积极向上的Elbert
java学习 java 开发语言
通过Arrays.asList(strArray)方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。String[]strArray=newString[2];Listlist=Arrays.asList(strArray);list.add("1");//此处会报错原因解析:Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态
Java Fork/Join 框架详解
empti_
数据结构与算法 java
JavaFork/Join框架详解Fork/Join框架是Java7引入的一个并行编程框架,专门设计用来高效地实现分治算法(Divide-and-Conquer)。它通过工作窃取(Work-Stealing)算法来最大化多核处理器的利用率。一、核心概念1.基本组成ForkJoinPool:特殊的线程池,管理工作线程ForkJoinTask:表示任务的抽象类,有两个重要子类:RecursiveAct
Java注解的实现原理
empti_
Java基础 java
Java注解的实现原理Java注解的实现涉及Java语言规范、编译器处理和JVM支持等多个层面。下面我将详细解释注解在Java中的实现机制。一、注解的本质注解本质上是一种特殊的接口,所有注解类型都隐式继承自java.lang.annotation.Annotation接口。当你定义一个注解时:public@interfaceMyAnnotation{Stringvalue();}编译器实际上会生成
并行归并排序的 Java 实现
empti_
数据结构与算法 java 算法 排序算法
并行归并排序Java实现importjava.util.concurrent.RecursiveAction;importjava.util.concurrent.ForkJoinPool;publicclassParallelMergeSort{//主方法,供外部调用publicstaticvoidparallelMergeSort(int[]array){ForkJoinPoolpool=ne
Spring Boot项目初始化加载自定义配置文件内容到静态属性字段
@Corgi
Java面试题 spring boot 后端 java
文章目录创建配置文件cXXX.properties配置类XXXConfig.java添加第三方JAR包创建配置文件cXXX.properties在resource目录下新建配置文件cXXX.properties,内容如下:#商户号mch_id=xxxxx#商户密码pwd=xxxx#接口请求地址req_url=https://xxx#异步回调通知地址(请替换为实际地址)notify_url=htt
Nginx与Tomcat:谁更适合你的服务器?
当归1024
java 中间件 nginx nginx tomcat 服务器
nginx和Tomcat是两种不同类型的服务器软件,它们各有不同的用途和特点:基本定义nginx轻量级的HTTP服务器和反向代理服务器主要用于静态文件服务、负载均衡、反向代理TomcatJavaWeb应用服务器专门用于运行JavaWeb应用(JSP、Servlet)主要区别1.功能定位nginx:静态文件服务器反向代理服务器负载均衡器HTTP缓存服务器Tomcat:Java应用容器JSP/Serv
Spring AI Alibaba 支持国产大模型的Spring ai框架
程序员老陈头
面试 学习路线 阿里巴巴 spring 人工智能 java
总计30万奖金,SpringAIAlibaba应用框架挑战赛开赛点此了解SpringAI:java做ai应用的最好选择过去,Java在AI应用开发方面缺乏一个高效且易于集成的框架,这限制了开发者快速构建和部署智能应用程序的能力。SpringAI正是为解决这一问题而生,它提供了一套统一的接口,使得AI功能能够以一种标准化的方式被集成到现有的Java项目中。此外,SpringAI与原有的Spring生
Node.js 全局对象
froginwe11
开发语言
Node.js全局对象引言Node.js作为一种流行的JavaScript运行环境,以其高性能、轻量级和跨平台的特点,被广泛应用于服务器端编程、网络应用开发等领域。在Node.js中,全局对象是一个重要的概念,它为开发者提供了一系列内置的全局变量和方法,使得编程变得更加便捷。本文将详细介绍Node.js的全局对象,帮助开发者更好地理解和运用它们。Node.js全局对象概述Node.js的全局对象指
企业级AI开发利器:Spring AI框架深度解析与实战_spring ai实战
AI大模型-海文
人工智能 spring python 算法 开发语言 java 机器学习
企业级AI开发利器:SpringAI框架深度解析与实战一、前言:Java生态的AI新纪元在人工智能技术爆发式发展的今天,Java开发者面临着一个新的挑战:如何将大语言模型(LLMs)和生成式AI(GenAI)无缝融入企业级应用。传统的Java生态缺乏统一的AI集成方案,开发者往往需要为不同AI供应商(如OpenAI、阿里云、HuggingFace)编写大量重复的接口适配代码,这不仅增加了开发成本,
009 【入门】单双链表及其反转-堆栈诠释
要天天开心啊
算法专栏 算法 链表
链表与堆栈系统详解|[数据结构]-[中级]-[通用]一、基础概念与内存模型1.按值传递vs按引用传递|[Java]-[基础]-[内存]//[典型错误示例]-Java中的引用传递陷阱voidmodify(Nodenode){node=node.next;//[警告]错误!仅修改局部引用的指向,不影响原始链表}//[正确做法]-通过引用修改对象内部状态voidrealModify(Nodenode){
深度解析JavaScript 闭包
coding随想
JavaScript javascript 开发语言 ecmascript
深度解析JavaScript闭包引言:为什么闭包让人又爱又怕?在JavaScript的学习过程中,闭包(Closure)是一个绕不开的“坎”。很多开发者第一次接触闭包时,会感到一头雾水:“为什么函数能记住外部作用域的变量?”、“为什么闭包会导致内存泄漏?”。但另一方面,闭包又是JavaScript最强大的特性之一,它支撑着模块化开发、数据封装、异步编程等核心场景。本文将通过通俗的语言和生动的案例,
JavaScript中的函数柯里化(Currying):从概念到实战
coding随想
JavaScript javascript ecmascript 开发语言 前端
JavaScript中的函数柯里化(Currying):从概念到实战在JavaScript开发中,函数式编程(FunctionalProgramming)逐渐成为一种主流思想。而函数柯里化(Currying),正是这一思想中的核心技巧之一。它不仅能提升代码的复用性和灵活性,还能帮助我们构建更优雅、更模块化的解决方案。本文将带你从零开始,深入理解柯里化的原理、实现方式及实际应用场景。一、什么是函数柯
webpack和vite区别
PromptOnce
webpack 前端 node.js
一、Webpack1.概述Webpack是一个模块打包工具,它会递归地构建依赖关系图,并将所有模块打包成一个或多个bundle(包)。2.特点配置灵活:Webpack提供了高度可定制的配置文件,可以根据项目需求进行各种优化。生态系统丰富:Webpack拥有庞大的插件和加载器生态系统,可以处理各种资源类型(JavaScript、CSS、图片等)。支持代码拆分:通过代码拆分和懒加载,Webpack可以
javascript 动态画心加文字
das白
# javascript javascript 动态 心型线 文字
测试//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width);document.getElementById("gycanvas"
javascript 动态画心
das白
# javascript javascript 动态 心型线
测试canvas{background:lawngreen;//画布背景色}//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width
javascript 画心型线
测试canvas{background:lawngreen;//画布背景色}//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width
掌握Web3开发:从入门到精通
夲奋亻Jay
Web3 web3
掌握Web3开发是一个涉及多个步骤和学习阶段的过程。以下是一些关键的步骤和开发案例,以及它们在搜索结果中的索引编号:了解区块链基础:学习区块链的基本概念,如去中心化、加密技术、共识机制等[1]。学习智能合约:学习智能合约的工作原理和它们在区块链上的应用,特别是以太坊平台上的智能合约[1]。掌握Web3.js或Ethers.js:学习如何使用这些JavaScript库与智能合约交互、发送交易和监听事
JavaScript性能优化
lyh1344
javascript 性能优化 开发语言
JavaScript性能优化方法减少重绘和回流频繁操作DOM会导致浏览器反复计算布局,引发性能问题。使用documentFragment进行批量DOM操作,或通过classList一次性修改多个样式属性。缓存DOM查询结果,避免重复访问。事件委托利用事件冒泡机制,将事件监听器绑定到父元素而非多个子元素。减少内存占用,提升动态内容的事件处理效率。节流与防抖高频事件(如滚动、输入)通过节流(Throt
将图片的base64编码直接嵌入到html文件的css中
Kuo-Teng
软件开发实战 html css javascript
将图片的base64编码直接嵌入到html文件的css中1.背景2.将图片进行base64编码3.将图片的base64编码写入到css1.背景如果你需要在html中引入一张外部图片,你可能会这样做:如果你将引用的图片保存到本地,你可能会这样做:但是,如果网络延迟较高,或者在jar包中运行Java项目时无法根据路径顺利找到图片呢?那么,将图片的base64编码直接写入html文件便是最好的选择!2.
什么是Node.js,有什么特点
前端与小赵
node.js
Node.js简介Node.js是一个基于ChromeV8引擎的JavaScript运行时环境,由RyanDahl于2009年创建。Node.js允许开发者使用JavaScript编写服务器端应用程序,打破了JavaScript仅限于浏览器端的限制。Node.js的设计目标是提供一种简单、高效的方式来构建可伸缩的网络应用。Node.js的特点非阻塞I/O特点:Node.js使用事件驱动的非阻塞I/
Node.js到底是什么
浪裡遊
杂文 node.js php 开发语言 前端 javascript vue.js
我想像是npm、vite这些名词大家都很熟悉,对它们的作用也有大致印象,但是可能都像我一样不明白Node.js到底是什么,这里给大家带来一个简单介绍。Node.js详解:历史发展、生态构建与底层原理一、Node.js的起源与历史发展诞生背景2009年5月:Node.js由RyanDahl开发并首次发布。其核心目标是解决JavaScript仅限于浏览器端运行的局限性,通过ChromeV8引擎(Jav
【Html实现“心形日出”(附效果+源代码)】| JavaScript面试题:解释一下异步编程中的回调函数、Promise和Async/Await的概念。它们有什么区别?
追光者♂
html5 css3 心形日出 前端特效 JS面试题 Promise Async/Await
风会带走你曾经存在过的证明。——虞姬作者主页:追光者♂个人简介:[1]计算机专业硕士研究生[2]2023年城市之星领跑者TOP1(哈尔滨)[3]2022年度博客之星人工智能领域TOP4[4]阿里云社区特邀专家博主[5]CSDN-人工智能领域优质创作者无限进步,一起追光!!!
java毕业设计房产中介系统mybatis+源码+调试部署+系统+数据库+lw
兮兮科技
java mybatis 开发语言
java毕业设计房产中介系统mybatis+源码+调试部署+系统+数据库+lwjava毕业设计房产中介系统mybatis+源码+调试部署+系统+数据库+lw本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码地址
JavaSE -- 时间类的详细介绍(Date,LocalDate)
@Touper
Java学习笔记 java 开发语言
Date类构造方法newDate():当前系统日期和时间。newDate(long):给定的日期时间常用方法after(Date):判断当前日期对象是否在给定日期之后before(Date):判断当前日期对象是否在给定日期之前equals(Object):判断两日期是否相等compareTo(Date):比较两日期前后顺序,如果当前日期对象大于给定日期对象返回1,小于返回-1,等于返回0。Date
支持java8的kafka版本
兮动人
kafka 分布式 支持java8的kafka版本
文章目录1.Kafka支持Java8的版本范围2.官方建议与兼容性3.版本迁移建议4.关键时间点5.注意事项6.总结1.Kafka支持Java8的版本范围Kafka2.x和3.x版本:Kafka2.x和3.x版本(如2.8.0、3.0.0等)理论上支持Java8,但官方已逐步弃用对Java8的支持。Kafka3.0:官方在3.0版本中弃用Java8(但仍允许使用),并强烈建议升级到Java11或更
Java基础:流程控制语句:条件、循环和跳转
越重天
Java 基础入门教程 Java 宝藏 java 开发语言 java流程控制语句 零到一学Java
前言Java中的流程控制语句其实和C、C++一样,在Java中,流程控制会涉及到包括if-else、while、do-while、for、return、break以及选择语句switch。下面以此进行分析。流程控制语句,分为三大类:条件语句,循环语句和跳转语句,如下图所示:1.条件语句条件语句可根据不同的条件执行不同的语句。包括if条件语句与switch多分支语句。1.1if语句if语句
HTML中引入JavaScript的三种方式
北冥郇翔
javascript html 前端
在HTML中引入JavaScript主要有以下三种方式,每种方式都有其适用场景和注意事项:1.内嵌方式(在标签内直接编写代码)直接在HTML文件的或中使用标签编写JavaScript代码。特点:代码与HTML混合,适用于简单逻辑或快速测试。alert()等函数会阻塞HTML页面渲染(如引用[1]所示)。示例:window.alert("页面加载被阻塞!");//阻塞后续内容渲染2.外部引入方式(推
Java/Kotlin 主线程IO操作全方位监控指南(实战代码+性能优化)
时小雨
Android实战与技巧 android kotlin
本文涵盖从基础监控到高级诊断的全套解决方案,包含10+个可直接落地的代码示例一、为什么需要监控主线程IO?主线程IO阻塞会导致界面卡顿、响应延迟等严重问题。典型场景:文件读写阻塞UI渲染网络请求未使用异步线程数据库查询未优化日志输出同步阻塞二、代码级监控方案(Kotlin实现)1.装饰器模式监控流操作classMonitoredInputStream(privatevalorigin:InputS
org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.setNamespaceV2(java.lang.String) not exist
nextera-void
java-rocketmq apache rocketmq
***************************APPLICATIONFAILEDTOSTART***************************Description:Anattemptwasmadetocallamethodthatdoesnotexist.Theattemptwasmadefromthefollowinglocation:org.apache.rocketmq.sp
apache 安装linux windows
墙头上一根草
apache inux windows
linux安装Apache 有两种方式一种是手动安装通过二进制的文件进行安装,另外一种就是通过yum 安装,此中安装方式,需要物理机联网。以下分别介绍两种的安装方式
通过二进制文件安装Apache需要的软件有apr,apr-util,pcre
1,安装 apr 下载地址:htt
fill_parent、wrap_content和match_parent的区别
Cb123456
match_parent fill_parent
fill_parent、wrap_content和match_parent的区别:
1)fill_parent
设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。
2) wrap_conte
网页自适应设计
天子之骄
html css 响应式设计 页面自适应
网页自适应设计
网页对浏览器窗口的自适应支持变得越来越重要了。自适应响应设计更是异常火爆。再加上移动端的崛起,更是如日中天。以前为了适应不同屏幕分布率和浏览器窗口的扩大和缩小,需要设计几套css样式,用js脚本判断窗口大小,选择加载。结构臃肿,加载负担较大。现笔者经过一定时间的学习,有所心得,故分享于此,加强交流,共同进步。同时希望对大家有所
[sql server] 分组取最大最小常用sql
一炮送你回车库
SQL Server
--分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb( col1 int, col2 int, Fcount int)insert into tbselect 11,20,1 union allselect 11,22,1 union allselect 1
ImageIO写图片输出到硬盘
3213213333332132
java image
package awt;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imagei
自己的String动态数组
宝剑锋梅花香
java 动态数组 数组
数组还是好说,学过一两门编程语言的就知道,需要注意的是数组声明时需要把大小给它定下来,比如声明一个字符串类型的数组:String str[]=new String[10]; 但是问题就来了,每次都是大小确定的数组,我需要数组大小不固定随时变化怎么办呢? 动态数组就这样应运而生,龙哥给我们讲的是自己用代码写动态数组,并非用的ArrayList 看看字符
pinyin4j工具类
darkranger
.net
pinyin4j工具类Java工具类 2010-04-24 00:47:00 阅读69 评论0 字号:大中小
引入pinyin4j-2.5.0.jar包:
pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j。
本人以前用AscII编码提取工具,效果不理想,现在用pinyin4j简单实现了一个。功能还不是很完美,
StarUML学习笔记----基本概念
aijuans
UML建模
介绍StarUML的基本概念,这些都是有效运用StarUML?所需要的。包括对模型、视图、图、项目、单元、方法、框架、模型块及其差异以及UML轮廓。
模型、视与图(Model, View and Diagram)
&
Activiti最终总结
avords
Activiti id 工作流
1、流程定义ID:ProcessDefinitionId,当定义一个流程就会产生。
2、流程实例ID:ProcessInstanceId,当开始一个具体的流程时就会产生,也就是不同的流程实例ID可能有相同的流程定义ID。
3、TaskId,每一个userTask都会有一个Id这个是存在于流程实例上的。
4、TaskDefinitionKey和(ActivityImpl activityId
从省市区多重级联想到的,react和jquery的差别
bee1314
jquery UI react
在我们的前端项目里经常会用到级联的select,比如省市区这样。通常这种级联大多是动态的。比如先加载了省,点击省加载市,点击市加载区。然后数据通常ajax返回。如果没有数据则说明到了叶子节点。 针对这种场景,如果我们使用jquery来实现,要考虑很多的问题,数据部分,以及大量的dom操作。比如这个页面上显示了某个区,这时候我切换省,要把市重新初始化数据,然后区域的部分要从页面
Eclipse快捷键大全
bijian1013
java eclipse 快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+En
js 笔记 函数
征客丶
JavaScript
一、函数的使用
1.1、定义函数变量
var vName = funcation(params){
}
1.2、函数的调用
函数变量的调用: vName(params);
函数定义时自发调用:(function(params){})(params);
1.3、函数中变量赋值
var a = 'a';
var ff
【Scala四】分析Spark源代码总结的Scala语法二
bit1129
scala
1. Some操作
在下面的代码中,使用了Some操作:if (self.partitioner == Some(partitioner)),那么Some(partitioner)表示什么含义?首先partitioner是方法combineByKey传入的变量,
Some的文档说明:
/** Class `Some[A]` represents existin
java 匿名内部类
BlueSkator
java匿名内部类
组合优先于继承
Java的匿名类,就是提供了一个快捷方便的手段,令继承关系可以方便地变成组合关系
继承只有一个时候才能用,当你要求子类的实例可以替代父类实例的位置时才可以用继承。
在Java中内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类。
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相
盗版win装在MAC有害发热,苹果的东西不值得买,win应该不用
ljy325
游戏 apple windows XP OS
Mac mini 型号: MC270CH-A RMB:5,688
Apple 对windows的产品支持不好,有以下问题:
1.装完了xp,发现机身很热虽然没有运行任何程序!貌似显卡跑游戏发热一样,按照那样的发热量,那部机子损耗很大,使用寿命受到严重的影响!
2.反观安装了Mac os的展示机,发热量很小,运行了1天温度也没有那么高
&nbs
读《研磨设计模式》-代码笔记-生成器模式-Builder
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF)
* 个人理解:
* 构建一个复杂的对象,对于创建者(Builder)来说,一是要有数据来源(rawData),二是要返回构
JIRA与SVN插件安装
chenyu19891124
SVN jira
JIRA安装好后提交代码并要显示在JIRA上,这得需要用SVN的插件才能看见开发人员提交的代码。
1.下载svn与jira插件安装包,解压后在安装包(atlassian-jira-subversion-plugin-0.10.1)
2.解压出来的包里下的lib文件夹下的jar拷贝到(C:\Program Files\Atlassian\JIRA 4.3.4\atlassian-jira\WEB
常用数学思想方法
comsci
工作
对于搞工程和技术的朋友来讲,在工作中常常遇到一些实际问题,而采用常规的思维方式无法很好的解决这些问题,那么这个时候我们就需要用数学语言和数学工具,而使用数学工具的前提却是用数学思想的方法来描述问题。。下面转帖几种常用的数学思想方法,仅供学习和参考
函数思想
把某一数学问题用函数表示出来,并且利用函数探究这个问题的一般规律。这是最基本、最常用的数学方法
pl/sql集合类型
daizj
oracle 集合 type pl/sql
--集合类型
/*
单行单列的数据,使用标量变量
单行多列数据,使用记录
单列多行数据,使用集合(。。。)
*集合:类似于数组也就是。pl/sql集合类型包括索引表(pl/sql table)、嵌套表(Nested Table)、变长数组(VARRAY)等
*/
/*
--集合方法
&n
[Ofbiz]ofbiz初用
dinguangx
电商 ofbiz
从github下载最新的ofbiz(截止2015-7-13),从源码进行ofbiz的试用
1. 加载测试库
ofbiz内置derby,通过下面的命令初始化测试库
./ant load-demo (与load-seed有一些区别)
2. 启动内置tomcat
./ant start
或
./startofbiz.sh
或
java -jar ofbiz.jar
&
结构体中最后一个元素是长度为0的数组
dcj3sjt126com
c gcc
在Linux源代码中,有很多的结构体最后都定义了一个元素个数为0个的数组,如/usr/include/linux/if_pppox.h中有这样一个结构体: struct pppoe_tag { __u16 tag_type; __u16 tag_len; &n
Linux cp 实现强行覆盖
dcj3sjt126com
linux
发现在Fedora 10 /ubutun 里面用cp -fr src dest,即使加了-f也是不能强行覆盖的,这时怎么回事的呢?一两个文件还好说,就输几个yes吧,但是要是n多文件怎么办,那还不输死人呢?下面提供三种解决办法。 方法一
我们输入alias命令,看看系统给cp起了一个什么别名。
[root@localhost ~]# aliasalias cp=’cp -i’a
Memcached(一)、HelloWorld
frank1234
memcached
一、简介
高性能的架构离不开缓存,分布式缓存中的佼佼者当属memcached,它通过客户端将不同的key hash到不同的memcached服务器中,而获取的时候也到相同的服务器中获取,由于不需要做集群同步,也就省去了集群间同步的开销和延迟,所以它相对于ehcache等缓存来说能更好的支持分布式应用,具有更强的横向伸缩能力。
二、客户端
选择一个memcached客户端,我这里用的是memc
Search in Rotated Sorted Array II
hcx2013
search
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given ta
Spring4新特性——更好的Java泛型操作API
jinnianshilongnian
spring4 generic type
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
CentOS安装JDK
liuxingguome
centos
1、行卸载原来的:
[root@localhost opt]# rpm -qa | grep java
tzdata-java-2014g-1.el6.noarch
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
[root@localhost
二分搜索专题2-在有序二维数组中搜索一个元素
OpenMind
二维数组 算法 二分搜索
1,设二维数组p的每行每列都按照下标递增的顺序递增。
用数学语言描述如下:p满足
(1),对任意的x1,x2,y,如果x1<x2,则p(x1,y)<p(x2,y);
(2),对任意的x,y1,y2, 如果y1<y2,则p(x,y1)<p(x,y2);
2,问题:
给定满足1的数组p和一个整数k,求是否存在x0,y0使得p(x0,y0)=k?
3,算法分析:
(
java 随机数 Math与Random
SaraWon
java Math Random
今天需要在程序中产生随机数,知道有两种方法可以使用,但是使用Math和Random的区别还不是特别清楚,看到一篇文章是关于的,觉得写的还挺不错的,原文地址是
http://www.oschina.net/question/157182_45274?sort=default&p=1#answers
产生1到10之间的随机数的两种实现方式:
//Math
Math.roun
oracle创建表空间
tugn
oracle
create temporary tablespace TXSJ_TEMP
tempfile 'E:\Oracle\oradata\TXSJ_TEMP.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent m
使用Java8实现自己的个性化搜索引擎
yangshangchuan
java superword 搜索引擎 java8 全文检索
需要对249本软件著作实现句子级别全文检索,这些著作均为PDF文件,不使用现有的框架如lucene,自己实现的方法如下:
1、从PDF文件中提取文本,这里的重点是如何最大可能地还原文本。提取之后的文本,一个句子一行保存为文本文件。
2、将所有文本文件合并为一个单一的文本文件,这样,每一个句子就有一个唯一行号。
3、对每一行文本进行分词,建立倒排表,倒排表的格式为:词=包含该词的总行数N=行号