随着第五代移动通信技术(5G)高速发展,推动新一代信息技术与各个行业的融合发展,各行各业都在积极融合智能现代化概念,努力把互联网技术运用到其中。在我国目前人口基数大,对医疗服务需求量大,在各大城市的中大型三甲医院中,看病人员多,医院医职人员管理,挂号就诊信息繁多,如果采用传统的方式来管理,这恐怕难以有效解决,而且低效。慧医疗利用互联网技术来解决人员管理,信息管理冗杂问题。在近年来,互联网5G技术已经率先在北上广等一线城市中开始运用到医疗服务的各方面中,尤其在2020年末以来的疫情中:绿康码、确诊接触在线追踪、疫苗预约等方面。智慧医疗,它可以实现最高效的办公和提供高效优质的医疗服务。 在未来,“智慧化医疗”、“互联网医院”等新型智能场景将会是人民高水平生活的保障趋势之一,它用技术便捷人民生活。
智慧医疗后台管理系统是基于Springboot+Vue+Element-UI开发的一个前后端分离的B/S后台管理系统。该系统致力于为医院客户提供更优的解决方案,推出了一套完整的医院内部的患者与人员的管理系统,通过该系统,对挂号门诊、科室、住院部、医院内部人员的实时跟踪和查看,实现最高效的办公和提供医疗服务,遇到各种业务需求时,为客户提供更好的方案解决实际问题。本系统界面使用当前流行的前端UI框架Element-UI展示,界面美观简洁风格。智慧医疗信息管理系统运用涵盖了患者就诊管理、住院管理,订单管理、药房药品管理、销售订单管理、人事管理、数据分析展示等功能,以客户的实际需求为主导,专注医院管理和向患者提供医疗服务,项目的需求分析阶段深入多个三甲医院进行调研了解业务需求,本系统各功能模块均根据用户的实际业务需求进行设计和研发,确保了项目实用性强,因此体现了一定的社会意义和商业化、智能化价值。每一个模块都是通过实际了解客户需求精心设计,每一个模块业务模块处理严谨、完善。在一定程度上对各模块进行了优化,减轻了医务工作人员繁重的工作负担,提高当前医疗在线信息管理效率。
…
本系统主要采用Springboot、Vue、Vuex、Axios、Element-UI、Spring Security、MyBatis为主要的技术栈,系统管理权限部分借鉴了一些框架…
Springboot:快速构建项目,让项目构建、部署、运行都So Easy。
Spring Security:一个功能强大且高度可定制的身份验证和访问控制框架,致力于为Java应用程序提供身份验证和授权。
MyBatis:一款持久层框架,能帮助快速映射POJO对象和数据库中的数据同时支持普通 SQL查询。
Vue:前端渐进式框架,让前后端数据交互、数据展示变得如此简单。
Axios: axios 是基于 Promise 的 HTTP 网络数据请求库,即HTTP 请求客户端;可以用于浏览器和Node.js服务器端。
Element-UI:Element,一套为开发者,设计师和产品经理准备的基于Vue 2.0的桌面端组件库,组件简介美观。
…
(1)登录功能:实现系统管理员、医院系统后台管理员登录;
(2)系统首页:展示系统技术选型、特点;
(3)系统管理:用户管理、角色管理、 菜单管理、部门管理、岗位管理、字典管理、日志管理;
(4)就诊管理:患者挂号就诊管理、药房药品管理、药房订单管理、住院管理;
(5)采购管理:医药采购管理、供应商管理;
(6)人事管理:医院员工在职档案管理;
(7)数据图表:展示看病挂号分析、药品采购分析、订单分析;
(8)在线聊天:管理员在线发送信息页面;
(9)用户中心:用户信息管理;
(10)退出登录:退出系统登录;
详细功能见下图介绍:

就诊挂号表:

住院信息表:

订单表:

药品采购管理表:

…
表有点多,就不一一列举了。
登录:

系统首页:

index.vue:
<template>
<div id="app">
<el-container>
<el-header>
<h2>智慧医疗后台管理系统</h2>
<p>SmartMedical,一个专门为大中小型医院各类医疗信息管理量身打造的后台信息管理平台</p>
</el-header>
<el-main>
<el-row :gutter="0" class="home_content">
<div class="banner">
<div class="banner-content">
<el-row :gutter="20">
<el-col :xs="24" :sm="24" :md="12" :lg="12" >
<el-card class="update-log" >
<div slot="header" class="clearfix">
<h3># 开发技术</h3>
</div>
<div class="body">
<h4>1. 后端技术</h4>
<ul>
<li>SpringBoot</li>
<li>Spring Security</li>
<li>JWT</li>
<li>MyBatis</li>
<li>Fastjson</li>
</ul>
<h4>2. 前端技术</h4>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>Vue</li>
<li>Javascript</li>
<li>Vuex</li>
<li>Element-UI</li>
<li>Axios</li>
</ul>
</div>
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" >
<el-card class="update-log">
<div slot="header" class="clearfix">
<h3># 开发环境</h3>
</div>
<div class="body">
<ul>
<li>JDK-1.8</li>
<li>Mysql-5.7.26</li>
<li>Maven-3.6.3</li>
<li>Java开发工具 IDEA2019.3.3</li>
<li>Vue开发工具 IDEA2019.3.3</li>
<li>UI设计 PhotoshopCC2020</li>
</ul>
</div>
</el-card>
</el-col>
</el-row>
</div>
</div>
</el-row>
<el-row class="home-item">
<el-col :xs="16" :sm="8" :md="4" :lg="4">
<el-card :body-style="{ padding: '40px' }">
<div class="img" >
<img src="../assets/images/home/home4.png" alt="" class="image">
</div>
<div>
<h3 style="padding: 10px;text-align: center;color: #62aff1">就诊追踪</h3>
<p style="text-align: center">追踪患者就诊记录,负责、透明</p>
</div>
</el-card>
</el-col>
<el-col :xs="16" :sm="8" :md="4" :lg="4">
<el-card :body-style="{ padding: '40px' }">
<div class="img" >
<img src="../assets/images/home/home1.png" alt="" class="image">
</div>
<div>
<h3 style="padding: 10px;text-align: center;color: #62aff1">药房管理</h3>
<p style="text-align: center">管理药房各类药品订单,库存</p>
</div>
</el-card>
</el-col>
<el-col :xs="16" :sm="8" :md="4" :lg="4">
<el-card :body-style="{ padding: '40px' }">
<div class="img" >
<img src="../assets/images/home/home2.png" alt="" class="image">
</div>
<div>
<h3 style="padding: 10px;text-align: center;color: #62aff1">住院管理</h3>
<p style="text-align: center">完善,详细记录患者住院记录</p>
</div>
</el-card>
</el-col>
<el-col :xs="16" :sm="8" :md="4" :lg="4">
<el-card :body-style="{ padding: '40px' }">
<div class="img" >
<img src="../assets/images/home/home3.png" alt="" class="image">
</div>
<div>
<h3 style="padding: 10px;text-align: center;color: #62aff1">医药采购</h3>
<p style="text-align: center">详细,入账各类药品采购记录</p>
</div>
</el-card>
</el-col>
</el-row>
</el-main>
<el-footer><a href="#">? 2021 Software 2 Li YingXia Apache License 1.0 粤ICP备xxxxxxx号-x</a></el-footer>
</el-container>
</div>
</template>
<script>
export default {
name: "index",
data() {
return {
version: "1.1.0",
};
},
methods: {
goTarget(href) {
window.open(href, "_blank");
},
},
};
</script>
<style scoped lang="scss">
#app{
/*background: #EFF5FD;*/
background: #ffffff;
}
.el-header, .el-footer {
color: #3b3b3b;
text-align: center;
}
.el-header{
font-size: 20px;
margin-bottom: 30px;
}
.el-header p, .el-footer a{
font-size: 16px;
color: #3a3a3a;
margin-top: 0px;
}
.el-header p{
font-size: 16px;
line-height: 28px;
color: #888;
font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
}
.el-main {
width: 90%;
color: #1e1e1e;
margin: 20px auto;
}
.home_content{
background: #fff;
}
.banner{
width: 100%;
height: 550px;
background: url("../assets/images/home/banner1.png") no-repeat;
}
.banner .banner-content{
width: 45%;
float: right;
margin-left: 10%;
height: 100%;
padding: 15px;
margin-bottom: 10px;
}
.image {
width: 120px;
height: 120px;
display: block;
}
.home-item{
justify-content: space-between;
display: flex;
margin-top: 20px;
}
.img{
background: #EFF5FD;
height: 124px;
width: 124px;
border-radius: 50%;
}
.el-footer a{
font-size: 14px;
color: #1e1e1e;
font-family: 'Open Sans', Arial, sans-serif;
}
.el-footer{
margin: 0;
text-align: center;
padding-top: 0px;
}
ul {
padding: 5px;
margin: 5px;
list-style-type: none;
}
.el-main .banner-content .update-log ul li{
color: #989898;
}
.el-main .banner-content .update-log h4{
color: #6f6f6f;
}
.el-main .banner-content .update-log h3{
color: #555555;
}
</style>
用户管理:

添加用户:

操作日志:

岗位管理:

部门管理:

就诊管理:

添加挂号就诊:

人事管理:

供应商管理:


采购管理:

药品管理:


住院管理:

添加住院信息:
数据分析:

用户中心:

在线聊天:
这个本来想实现后台发送信息,功能在完善中…

…
controller(控制处理前端发送的请求) 一> service(业务逻辑层) 一> serviceImpl(业务逻辑实现类) 一> mapper.java(Mapper接口,与mapper.xml相对应) 一> mapper.xml(写操作数据库的sql语句–DRUD操作),以上依次调用各层。
以住院管理接口实现为例:
住院管理数据表:

1、controller层
MchInpatientController:
/**
* @Package: com.medical.controller
* @Description: 住院档案 Controller
* @Author: liyingxia
* @CreateDate: 2021/5/03 16:32
*/
@RestController
@RequestMapping("/inpatient")
public class MchInpatientController extends BaseController {
@Autowired
private IMchInpatientService mchInpatientService;
/**
* 查询住院档案列表
*/
@PreAuthorize("@ss.hasPermi('inpatient:list')")
@GetMapping("/list")
public TableDataInfo list(MchInpatient mchInpatient) {
super.startPage();
List<MchInpatient> result = mchInpatientService.selectMchInpatientList(mchInpatient);
return super.getDataTable(result);
}
/**
* 导出住院档案列表
*/
@PreAuthorize("@ss.hasPermi('inpatient:export')")
@Log(title = "住院档案", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(MchInpatient mchInpatient) {
List<MchInpatient> result = mchInpatientService.selectMchInpatientList(mchInpatient);
ExcelUtil<MchInpatient> mchInpatientExcelUtil = new ExcelUtil<>(MchInpatient.class);
mchInpatientExcelUtil.init(result,"住院档案", Excel.Type.EXPORT);
return mchInpatientExcelUtil.exportExcel();
}
/**
* 获取住院档案详细信息
*/
@PreAuthorize("@ss.hasPermi('inpatient:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
MchInpatient Inpatient = mchInpatientService.selectMchInpatientById(id);
return AjaxResult.success(Inpatient);
}
/**
* 新增住院档案
*/
@PreAuthorize("@ss.hasPermi('inpatient:add')")
@Log(title = "住院档案", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MchInpatient mchInpatient) {
return super.toAjax(mchInpatientService.insertMchInpatient(mchInpatient));
}
/**
* 修改住院档案
*/
@PreAuthorize("@ss.hasPermi('inpatient:edit')")
@Log(title = "住院档案", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MchInpatient mchInpatient) {
return super.toAjax(mchInpatientService.updateMchInpatient(mchInpatient));
}
/**
* 删除住院档案
*/
@PreAuthorize("@ss.hasPermi('inpatient:remove')")
@Log(title = "住院档案", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return super.toAjax(mchInpatientService.deleteMchInpatientByIds(ids));
}
}
2、service层
IMchInpatientService:
/**
* 患者住院档案service业务逻辑层
*
* @author liyingxia
* @date 2021/5/03 16:32
*/
public interface IMchInpatientService {
/**
* 患者住院档案
*
* @param id 患者住院档案ID
* @return 患者住院档案
*/
public MchInpatient selectMchInpatientById(Long id);
/**
* 查询患者住院档案列表
*
* @param mchInpatient 患者住院档案
* @return 患者住院档案集合
*/
public List<MchInpatient> selectMchInpatientList(MchInpatient mchInpatient);
/**
* 新增患者住院档案
*
* @param mchInpatient 患者住院档案
* @return 结果
*/
public int insertMchInpatient(MchInpatient mchInpatient);
/**
* 修改患者住院档案
*
* @param mchInpatient 患者住院档案
* @return 结果
*/
public int updateMchInpatient(MchInpatient mchInpatient);
/**
* 删除患者住院档案
*
* @param id 患者住院档案ID
* @return 结果
*/
public int deleteMchInpatientById(Long id);
/**
* 批量删除患者住院档案
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteMchInpatientByIds(Long[] ids);
}
3、serviceImpl实现类
MchInpatientServiceImpl:
/**
* @Package: com.medical.service.impl
* @Description: 住院管理实现类
* @Author: liyingxia
* @CreateDate: 2021/5/03 16:32
*/
@Service
public class MchInpatientServiceImpl implements IMchInpatientService {
@Autowired
private MchInpatientMapper mchInpatientMapper;
/**
* 查询住院档案
* @param id
* @return
*/
@Override
public MchInpatient selectMchInpatientById(Long id) {
return mchInpatientMapper.selectMchInpatientById(id);
}
/**
* 查询住院档案列表
* @param mchInpatient
* @return
*/
@Override
public List<MchInpatient> selectMchInpatientList(MchInpatient mchInpatient) {
return mchInpatientMapper.selectMchInpatientList(mchInpatient);
}
/**
* 新增住院档案
* @param mchInpatient
* @return
*/
@Override
public int insertMchInpatient(MchInpatient mchInpatient) {
return mchInpatientMapper.insertMchInpatient(mchInpatient);
}
/**
* 修改住院档案
* @param mchInpatient
* @return
*/
@Override
public int updateMchInpatient(MchInpatient mchInpatient) {
return mchInpatientMapper.updateMchInpatient(mchInpatient);
}
/**
* 批量删除住院档案
* @param ids 需要删除的住院档案ID
* @return
*/
@Override
public int deleteMchInpatientByIds(Long[] ids) {
return mchInpatientMapper.deleteMchInpatientByIds(ids);
}
/**
* 删除住院档案
* @param id
* @return
*/
@Override
public int deleteMchInpatientById(Long id) {
return mchInpatientMapper.deleteMchInpatientById(id);
}
}
4、mapper
MchInpatientMapper:
/**
* 患者档案Mapper接口
*
* @author liyingxia
* @date 2021/5/03 16:32
*/
public interface MchInpatientMapper {
/**
* 档案
*
* @param id 患者档案ID
* @return 患者档案
*/
public MchInpatient selectMchInpatientById(Long id);
/**
* 查询患者档案列表
*
* @param mchInpatient 患者档案
* @return 患者档案集合
*/
public List<MchInpatient> selectMchInpatientList(MchInpatient mchInpatient);
/**
* 新增患者档案
*
* @param mchInpatient 患者档案
* @return 结果
*/
public int insertMchInpatient(MchInpatient mchInpatient);
/**
* 修改患者档案
*
* @param mchInpatient 患者档案
* @return 结果
*/
public int updateMchInpatient(MchInpatient mchInpatient);
/**
* 删除患者档案
*
* @param id 患者档案ID
* @return 结果
*/
public int deleteMchInpatientById(Long id);
/**
* 批量删除患者档案
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteMchInpatientByIds(Long[] ids);
}
5、mapper.xml
MchInpatientMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.medical.mapper.MchInpatientMapper">
<resultMap type="MchInpatient" id="MchInpatientResult">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<result property="inpatientNo" column="inpatient_no"/>
<result property="inpatientCost" column="inpatient_cost"/>
<result property="inpatientAddress" column="inpatient_address"/>
<result property="inpatientPhone" column="inpatient_phone"/>
<result property="inpatientCategory" column="inpatient_category"/>
<result property="inpatientRemark" column="inpatient_remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectMchInpatientVo">
select id,name, age,inpatient_no,inpatient_cost, inpatient_address, inpatient_phone,
inpatient_category, inpatient_remark from mch_inpatient
</sql>
<select id="selectMchInpatientList" parameterType="MchInpatient" resultMap="MchInpatientResult">
<include refid="selectMchInpatientVo"/>
<where>
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
<if test="inpatientNo != null and inpatientNo != ''">and inpatient_no = #{inpatientNo}</if>
<if test="age != null and age != ''">and age = #{age}</if>
</where>
</select>
<select id="selectMchInpatientById" parameterType="Long" resultMap="MchInpatientResult">
<include refid="selectMchInpatientVo"/>
where id = #{id}
</select>
<insert id="insertMchInpatient" parameterType="MchInpatient" useGeneratedKeys="true" keyProperty="id">
insert into mch_inpatient
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null and name != ''">name,</if>
<if test="age != null and age !=''">age,</if>
<if test="inpatientNo != null and inpatientNo != ''">inpatient_no,</if>
<if test="inpatientCost != null and inpatientCost != ''">inpatient_cost,</if>
<if test="inpatientAddress != null">inpatient_address,</if>
<if test="inpatientPhone != null">inpatient_phone,</if>
<if test="inpatientCategory != null">inpatient_category,</if>
<if test="inpatientRemark != null">inpatient_remark,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createTime != null">create_time,</if>
<if test="createBy != null">create_by,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null and name != ''">#{name},</if>
<if test="age != null and age !=''">#{age},</if>
<if test="inpatientNo != null and inpatientNo != ''">#{inpatientNo},</if>
<if test="inpatientCost != null and inpatientCost != ''">#{inpatientCost},</if>
<if test="inpatientAddress != null">#{inpatientAddress},</if>
<if test="inpatientPhone != null">#{inpatientPhone},</if>
<if test="inpatientCategory != null">#{inpatientCategory},</if>
<if test="inpatientRemark != null">#{inpatientRemark},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createTime != null">#{createTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateMchInpatient" parameterType="MchInpatient">
update mch_inpatient
<trim prefix="SET" suffixOverrides=",">
<if test="name != null and name != ''">name=#{name},</if>
<if test="age != null and age !=''">age=#{age},</if>
<if test="inpatientNo != null and inpatientNo != ''">inpatient_no=#{inpatientNo},</if>
<if test="inpatientCost != null and inpatientCost != ''">inpatient_cost=#{inpatientCost},</if>
<if test="inpatientAddress != null">inpatient_address=#{inpatientAddress},</if>
<if test="inpatientPhone != null">inpatient_phone=#{inpatientPhone},</if>
<if test="inpatientCategory != null">inpatient=category=#{inpatientCategory},</if>
<if test="inpatientRemark != null">inpatient_remark=#{inpatientRemark},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteMchInpatientById" parameterType="Long">
delete from mch_inpatient where id = #{id}
</delete>
<delete id="deleteMchInpatientByIds" parameterType="String">
delete from mch_inpatient where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
6、domain实体类
MchInpatient.class:
/**
* 住院档案对象 mch_inpaticent
*
* @author liyingxia
* @date 2021/5/03 16:32
*/
public class MchInpatient extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
/**
* 是否删除
*/
private String delFlag;
/**
* 名称
*/
@Excel(name = "患者名称")
private String name;
/**
* 客户编号
*/
@Excel(name = "患者编号")
private String inpatientNo;
@Excel(name = "住院费用")
private double inpatientCost;
/**
* 客户编号
*/
@Excel(name = "患者年龄")
private int age;
/**
/**
* 地址
*/
@Excel(name = "患者地址")
private String inpatientAddress;
/**
* 联系电话
*/
@Excel(name = "联系电话")
private String inpatientPhone;
@Excel(name = "病科")
private String inpatientCategory;
@Excel(name = "备注")
private String inpatientRemark;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInpatientNo() {
return inpatientNo;
}
public void setInpatientNo(String inpatientNo) {
this.inpatientNo = inpatientNo;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getInpatientCost() {
return inpatientCost;
}
public void setInpatientCost(double inpatientCost) {
this.inpatientCost = inpatientCost;
}
public String getInpatientAddress() {
return inpatientAddress;
}
public void setInpatientAddress(String inpatientAddress) {
this.inpatientAddress = inpatientAddress;
}
public String getInpatientPhone() {
return inpatientPhone;
}
public void setInpatientPhone(String inpatientPhone) {
this.inpatientPhone = inpatientPhone;
}
public String getInpatientCategory() {
return inpatientCategory;
}
public void setInpatientCategory(String inpatientCategory) {
this.inpatientCategory = inpatientCategory;
}
public String getInpatientRemark() {
return inpatientRemark;
}
public void setInpatientRemark(String inpatientRemark) {
this.inpatientRemark = inpatientRemark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("createBy", getCreateBy())
.append("delFlag", getDelFlag())
.append("name", getName())
.append("age", getAge())
.append("inpatientNo", getInpatientNo())
.append("inpatientCost", getInpatientCost())
.append("inpatientAddress", getInpatientAddress())
.append("inpatientPhone", getInpatientPhone())
.append("inpatientRemark", getInpatientRemark())
.toString();
}
}
前端用的是Vue-CLI搭建的Vue项目,代码太多就不放了,主要Vue给我的体验就是组件化。
…
系统不免有错误和待改进之处,有问题欢迎提出。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我想在随机字符串前后添加一个空格。我试过使用"Random_string".center(1,"")但它不起作用。谢谢 最佳答案 我发现这是最优雅的解决方案:padded_string="#{random_string}"走简单的路没有错。 关于ruby-在ruby中的字符串前后添加空格?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3357897/
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
我在下面定义了api端点:paramsdorequires:ids,type:Array,desc:'Arrayofgroupids'end我无法从Swagger生成的UI传递数组。如果我输入[1,2,3,4]或ids%5b%5d=1&ids%5b%5d=2&ids%5b%5d=3然后两者都无效.如果我使用数组调用spec中的api,它就可以工作。我的客户想尝试Swagger的整个api,所以我想要一个适用于SwaggerUI的解决方案。 最佳答案 我对所有情况的解决方案:paramsdorequires:ids,type:Arra
这个问题已经被问过几次了,但我尝试了提供的解决方案,但仍然没有帮助,所以我提出了一个新问题。gem文件gem'jquery-ui-rails'按照建议,我将gem放在:assets组之外Application.css~*=require_self*=requirejquery.ui*=requirebootstrap-datepicker*=requirejquery.timepicker*=require_tree.*/RailsAssetPipeline根据列出的顺序加载Assets。在这里,我把它排在列表的第2位。Application.css.scss*=require_sel
我有一个Rails应用,使用Rails5.1.6和ruby2.3.5p376我的Gemfile中有这两个gemgem'jquery-rails','~>4.3.3'gem'jquery-ui-rails','~>6.0.1'在show.html.erb中我有以下内容:$(function(){$("#datepicker").datepicker();});Date:在application.js中//=requirejquery-ui//=requirejquery//=requirerails-ujs//=requireturbolinks//=require_tree.在appl
我的第一个想法是这样的:classAbstractBuilderattr_reader:time_takendefbuild_with_timerstarted_at=Time.nowbuild@time_taken=Time.now-started_atenddefbuildraise'Implementthismethodinasubclass'endendclassMyBuilder我怀疑有更好的方法可以提供更好的灵active,例如理想情况下,我想在MyBuilder的实例上调用“build”而不是“build_with_timer”,并且始终记录执行时间。我确实考虑过使用al
Handler在UI线程与子线程中的使用一、Handler基本概念Handler:其作用是在新启动的线程中发送消息,在主线程中获取和处理消息。Message:Handler接收和处理的消息对象。MessageQueue:消息队列,采用先进先出的方式来管理Message。由Looper对象进行管理,在程序创建Looper对象时,会在它的构造方法中创建MessageQueue对象,两者是相互依存的。Looper:每个线程只能拥有一个Looper对象。它在loop()方法会不断在MessageQueue中读取Message消息,分给对应的Handler来进行处理。二、Handler使用步骤在主线程中