基于javaweb的oa办公管理系统(java+layui+ssm+mysql+jsp+html)

news2024/11/17 17:52:26

基于javaweb的oa办公管理系统(java+layui+ssm+mysql+jsp+html)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519000213

20220519000214

20220519000215

20220519000216

20220519000218

基于javaweb+jsp的OA办公管理系统(java+Layui+SSM+Maven+mysql+JSP+html)

一、项目运行 环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等

用户管理控制层:

/**

  • @author yy

*/

@Controller

@RequestMapping(“/user”)

public class UserController extends BaseController{

private String prefix = “system/user/”;

@Autowired

IUserService iUserService;

@Autowired

IRoleService iRoleService;

@Autowired

IDeptService iDeptService;

@Autowired

IPositionService iPositionService;

@Autowired

private SysPasswordService passwordService;

/**

  • @描述 跳转到用户页面

  • @date 2018/9/16 10:54

*/

@RequestMapping(“/tolist”)

@RequiresPermissions(“user:list”)

public String toUserList()

return prefix + “user”;

/**

  • @描述 用户数据

  • @date 2018/9/15 12:30

*/

@RequestMapping(“/tableList”)

@ResponseBody

public TableDataInfo list(User user)

startPage();

List users = iUserService.selectByUser(user);

return getDataTable(users);

/**

  • 编辑用户 system/user/edit/20180914-1

*/

@RequiresPermissions(“user:update”)

@RequestMapping(“/edit/{userId}”)

public String edit(@PathVariable(“userId”) String userId, Model model)

// 个人信息

User user = iUserService.selectByPrimaryKey(userId);

Map<String, Object> role_post_dept = getRole_Post_Dept();

model.addAttribute(“depts”, role_post_dept.get(“dept”));

model.addAttribute(“roles”, role_post_dept.get(“role”));

model.addAttribute(“positions”, role_post_dept.get(“position”));

model.addAttribute(“user”, user);

return prefix + “edit”;

/**

  • @描述 保存用户

  • @date 2018/9/15 18:53

*/

@PostMapping(“/editSave”)

@RequiresPermissions(“user:update”)

@Operlog(modal = “用户管理”, descr = “修改用户信息”)

@ResponseBody

public AjaxResult save(User user)

if (StringUtils.isNotNull(user.getUid()) && User.isBoss(user.getUid()))

return error(“不允许修改管理员用户”);

if(user.getPwd()!=null){

user.setSalt(ShiroUtils.randomSalt());

SimpleHash md5 = new SimpleHash(“MD5”, user.getPwd(), user.getSalt(), 1024);

user.setPwd(md5.toHex());

return result(iUserService.updateByPrimaryKeySelective(user));

/**

  • @描述 添加用户页面

  • @date 2018/9/15 18:46

*/

@RequestMapping(“/toAdd”)

@RequiresPermissions(“user:add”)

public String toaddUser(Model model)

Map<String, Object> role_post_dept = getRole_Post_Dept();

model.addAttribute(“depts”, role_post_dept.get(“dept”));

model.addAttribute(“roles”, role_post_dept.get(“role”));

model.addAttribute(“positions”, role_post_dept.get(“position”));

return prefix + “add”;

/**

  • @描述 添加用户

  • @date 2018/9/15 20:40

*/

@RequestMapping(“/addSave”)

@RequiresPermissions(“user:add”)

@Operlog(modal = “用户管理”, descr = “添加用户”)

@ResponseBody

public AjaxResult addUser(User user)

user.setSalt(ShiroUtils.randomSalt());

SimpleHash md5 = new SimpleHash(“MD5”, user.getPwd(), user.getSalt(), 1024);

user.setPwd(md5.toHex());

user.setAvatar(CsEnum.avatar.USER_AVATAR.getValue());

user.setCreateTime(new Date());

return result(iUserService.insertSelective(user));

/**

  • @描述 批量删除

  • @date 2018/9/16 9:31

*/

@RequestMapping(“/del”)

@RequiresPermissions(“user:del”)

@Operlog(modal = “用户模块”, descr = “删除用户”)

@ResponseBody

public AjaxResult delByUserIds(String[] ids)

try

int i = iUserService.deleteByPrimaryKeys(ids);

catch (Exception e)

return error(e.getMessage());

return success();

/**

  • @描述 编辑密码修改页面

  • @date 2018/9/16 10:25

*/

@RequestMapping(“/resetPwd/{userId}”)

@RequiresPermissions(“user:update”)

public String editPwd(@PathVariable(“userId”) String id, Model model)

model.addAttribute(“uid”, id);

return prefix + “resetPwd”;

/**

  • @描述 密码修改

  • @date 2018/9/16 10:42

*/

@RequestMapping(“/resetPwd”)

@RequiresPermissions(“user:update”)

@Operlog(modal = “用户模块”, descr = “修改密码”)

@ResponseBody

public AjaxResult resetPwd(User user)

return result(iUserService.resrtPwd(user));

/**

  • 校验手机号码

*/

@PostMapping(“/checkPhoneUnique”)

@ResponseBody

public String checkPhoneUnique(User user)

String uniqueFlag = “0”;

if (user != null)

uniqueFlag = iUserService.checkPhoneUnique(user);

return uniqueFlag;

/**

  • 校验email邮箱

*/

@PostMapping(“/checkEmailUnique”)

@ResponseBody

public String checkEmailUnique(User user)

String uniqueFlag = “0”;

if (user != null)

uniqueFlag = iUserService.checkEmailUnique(user);

return uniqueFlag;

/**

  • @描述: 校验登录名唯一性

  • @params:

  • @return:

  • @date: 2018/10/2 17:06

*/

@PostMapping(“/checkLoginNameUnique”)

@ResponseBody

public String checkLoginNameUnique(User user)

String uniqueFlag = “0”;

if (user != null)

uniqueFlag = iUserService.checkLoginNameUnique(user);

return uniqueFlag;

public Map<String, Object> getRole_Post_Dept()

Map<String, Object> map = new HashMap<>();

// 角色

List roles = iRoleService.selectRoleList(new Role());

// 部门信息

List depts = iDeptService.selectDeptList(new Dept());

// 岗位

List positions = iPositionService.selectPositionList(new Position());

map.put(“role”, roles);

map.put(“dept”, depts);

map.put(“position”, positions);

return map;

/**

  • 用户个人信息查看页面

*/

@RequestMapping(“/myMsg”)

public String ToMyMsg(Model model, HttpServletRequest request)

User user = iUserService.selectByPrimaryKey(getUserId());

model.addAttribute(“user”, user);

model.addAttribute(“loginIp”, HttpHeaderUtil.getIpAddr(request));

return prefix + “profile/msg”;

/**

  • 密码修改页面

*/

@RequestMapping(“/resetMyPwd”)

public String toResetPwd(Model model)

User user = iUserService.selectByPrimaryKey(getUserId());

model.addAttribute(“user”, user);

return prefix + “profile/resetPwd”;

/**

  • 密码修改保存

*/

@RequestMapping(“/updateMyPwdSave”)

@ResponseBody

@RequiresPermissions(“user:update”)

@Operlog(modal = “个人信息”, descr = “修改密码”)

public AjaxResult updateMyPwdSave(String password)

User user = new User();

user.setSalt(ShiroUtils.randomSalt());

SimpleHash md5 = new SimpleHash(“MD5”, password, user.getSalt(), 1024);

user.setPwd(md5.toHex());

user.setUid(getUserId());

int i = iUserService.updateByPrimaryKeySelective(user);

if (i > 0)

//更新shiro中的信息

ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));

return success();

return error();

/**

  • 编辑用户头像修改

*/

@RequestMapping(“/updateAvatar”)

public String toupdateAvatar(Model model)

model.addAttribute(“user”, getUser());

return prefix + “profile/avatar”;

/**

  • 修改保存用户头像

*/

@RequestMapping(“/updateAvatarSave”)

@RequiresPermissions(“user:update”)

@Operlog(modal = “个人信息”, descr = “修改头像”)

@ResponseBody

public AjaxResult toupdateAvatar(MultipartFile file)

try

String imgPath = UploadFile.uploadUserImg(file);

if (StringUtils.isEmpty(imgPath))

return error(“图片上传失败,稍后再试!”);

User user = new User();

user.setUid(getUserId());

user.setAvatar(imgPath);

int i = iUserService.updateByPrimaryKeySelective(user);

if (i > 0)

ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));

return result(i);

catch (IOException e)

return error();

catch (FileSizeException e)

//文件过大

return error(e.getMsg());

catch (FileNameLengthException e)

//文件名字超长

return error(e.getMsg());

/**

  • 校验密码和原来密码是否相同

*/

@RequestMapping(“/checkPassword”)

@ResponseBody

public boolean checkPassword(String password)

//加密后与数据库密码比较

User user = getUser();

SimpleHash md5 = new SimpleHash(“MD5”, password, user.getSalt(), 1024);

String oldPassword = md5.toHex();

String pwd = getPwd();

if (pwd.equals(oldPassword))

return true;

return false;

部门管理控制层:

/**

  • @author yy

*/

@Controller

@RequestMapping(“/dept”)

public class DeptController extends BaseController{

private String prefix = “system/dept/”;

@Autowired

IDeptService iDeptService;

@Autowired

IUserService iUserService;

/**

  • @描述 页面跳转到部门

  • @date 2018/9/16 10:59

*/

@RequestMapping(“/tolist”)

@RequiresPermissions(“dept:list”)

public String tolist()

return prefix + “dept”;

/**

  • @描述 ajax请求的所有部门

  • @date 2018/9/16 10:48

*/

@RequestMapping(“/ajaxlist”)

@ResponseBody

public List list(Dept dept)

List depts = iDeptService.selectDeptList(dept);

return depts;

/**

  • @描述 部门列表页

  • @date 2018/9/16 10:52

*/

@RequestMapping(“/tableList”)

@ResponseBody

public TableDataInfo listPag(Dept dept)

//开启分页

startPage();

List depts = iDeptService.selectDeptList(dept);

return getDataTable(depts);

/**

  • @描述 新增页面

  • @date 2018/9/16 11:37

*/

@RequiresPermissions(“dept:add”)

@RequestMapping(“/toAdd”)

public String toAdd(Model model)

List users = iUserService.selectByUser(new User());

model.addAttribute(“users”, users);

return prefix + “add”;

/**

  • @描述: 查询所有部门下的所有用户 用户归类 树状数据

  • @date: 2018/9/27 11:25

*/

@RequestMapping(“/getDeptAndUserTreeData”)

@ResponseBody

public List DeptAndUserTreeData()

List depts = iDeptService.selectDeptAndUser();

List users=new ArrayList<>();

LinkedList deptList = new LinkedList<>();

for (Dept dept : depts)

Map<String, Object> deptMap = new HashMap();

deptMap.put(“name”, dept.getDeptName());

deptMap.put(“id”, null);

users = dept.getUsers();

LinkedList userlist = new LinkedList<>();

for (User user : users)

Map<String, Object> userMap = new HashMap();

userMap.put(“name”,user.getName());

userMap.put(“id”,user.getUid());

userMap.put(“icon”,“/img/timg.jpg”);

userlist.add(userMap);

deptMap.put(“children”,userlist);

deptList.add(deptMap);

return deptList;

/**

  • @描述 批量删除

  • @date 2018/9/16 11:53

*/

@RequestMapping(“/del”)

@RequiresPermissions(“dept:del”)

@ResponseBody

@Operlog(modal = “部门管理”,descr = “删除部门”)

public AjaxResult del(String[] ids)

try

iDeptService.deleteByPrimaryKeys(ids);

catch (Exception e)

return error(e.getMessage());

return success();

/**

  • @描述 执行保存操作

  • @date 2018/9/16 11:54

*/

@RequestMapping(“/addSave”)

@Operlog(modal = “部门管理”,descr = “添加部门”)

@RequiresPermissions(“dept:add”)

@ResponseBody

public AjaxResult addDept(Dept dept)

dept.setCreateTime(new Date());

return result(iDeptService.insertSelective(dept));

/**

  • @描述 编辑修改页面

  • @date 2018/9/16 14:06

*/

@RequestMapping(“/edit/{id}”)

@RequiresPermissions(“dept:update”)

public String edit(@PathVariable(“id”) String id, Model model)

Dept dept = iDeptService.selectByPrimaryKey(id);

List users = iUserService.selectByUser(new User());

model.addAttribute(“users”, users);

model.addAttribute(“Dept”, dept);

return prefix + “edit”;

/**

  • @描述 修改保存

  • @date 2018/9/16 16:12

*/

@RequestMapping(“/editSave”)

@RequiresPermissions(“dept:update”)

@Operlog(modal = “部门管理”,descr = “修改信息”)

@ResponseBody

public AjaxResult save(Dept dept)

int i = 0;

try

i = iDeptService.updateByPrimaryKeySelective(dept);

catch (Exception e)

return error(e.getMessage());

return result(i);

/**

  • 校验部门名称

*/

@PostMapping(“/checkDeptNameUnique”)

@ResponseBody

public String checkDeptNameUnique(Dept dept)

String uniqueFlag = “0”;

if (dept != null)

uniqueFlag = iDeptService.checkDeptNameUnique(dept);

return uniqueFlag;

角色管理控制层:

/**

  • @author yy

*/

@Controller

@RequestMapping(“/role”)

public class RoleController extends BaseController{

private String prefix = “system/role/”;

@Autowired

IUserService iUserService;

@Autowired

IRoleService iRoleService;

@Autowired

IPermissionService iPermissionService;

/**

  • @描述 页面跳转

  • @date 2018/9/16 10:59

*/

@RequestMapping(“/tolist”)

@RequiresPermissions(“role:list”)

public String tolist()

return prefix + “role”;

/**

  • @描述 ajax请求所有

  • @date 2018/9/16 10:48

*/

@RequestMapping(“/ajaxlist”)

@ResponseBody

public List list(Role role)

List roles = iRoleService.selectRoleList(role);

return roles;

/**

  • @描述 列表

  • @date 2018/9/16 10:52

*/

@RequestMapping(“/tableList”)

@ResponseBody

public TableDataInfo listPag(Role role)

//开启分页

startPage();

List roles = iRoleService.selectRoleList(role);

return getDataTable(roles);

/**

  • @描述 新增页面

  • @date 2018/9/16 11:37

*/

@RequestMapping(“/toAdd”)

@RequiresPermissions(“role:add”)

public String toAdd(Model model)

return prefix + “add”;

/**

  • @描述 批量删除

  • @date 2018/9/16 11:53

*/

@RequestMapping(“/del”)

@RequiresPermissions(“role:del”)

@Operlog(modal = “角色管理”,descr = “删除角色”)

@ResponseBody

public AjaxResult del(Integer[] ids)

try

iRoleService.deleteByPrimaryKeys(ids);

catch (Exception e)

return error(e.getMessage());

return success();

/**

  • @描述 添加保存

  • @date 2018/9/16 11:54

*/

@RequestMapping(“/addSave”)

@RequiresPermissions(“role:update”)

@Operlog(modal = “角色管理”,descr = “添加角色”)

@ResponseBody

public AjaxResult addRole(Role role, Integer[] ids)

role.setCreateTime(new Date());

int insert = 0;

try

if (StringUtils.isEmpty(ids))

ids = new Integer[0];

insert = iRoleService.insert(role, ids);

catch (Exception e)

return error(e.getMessage());

//清空缓存

ShiroUtils.clearCachedAuthorizationInfo();

return result(insert);

/**

  • @描述: 根据ID 获取u他的所有权限 做回显

  • @params: roleId 角色Id

  • @return:

  • @date: 2018/9/27 14:04

*/

@RequestMapping(“/selectById/{roleId}”)

@ResponseBody

public Role selectById(@PathVariable(“roleId”) Integer roleId)

Role role = iRoleService.selectByPrimaryKey(roleId);

return role;

/**

  • @描述 编辑修改页面

  • @date 2018/9/16 14:06

*/

@RequestMapping(“/edit/{id}”)

@RequiresPermissions(“role:update”)

public String edit(@PathVariable(“id”) Integer id, Model model)

Role role = iRoleService.selectByPrimaryKey(id);

model.addAttribute(“Role”, role);

return prefix + “edit”;

/**

  • @描述 编辑修改权限页面

  • @date 2018/9/16 14:06

*/

@RequestMapping(“/editPower/{id}”)

@RequiresPermissions(“role:update”)

public String editPower(@PathVariable(“id”) Integer id, Model model)

Role role = iRoleService.selectByPrimaryKey(id);

model.addAttribute(“Role”, role);

return prefix + “editPower”;

/**

  • @描述 修改角色信息保存

  • @date 2018/9/16 16:12

*/

@RequestMapping(“/editSave”)

@RequiresPermissions(“role:update”)

@Operlog(modal = “角色管理”,descr = “修改角色信息”)

@ResponseBody

public AjaxResult save(Role role)

int i = 0;

try

i = iRoleService.updateByPrimaryKeySelective(role);

catch (Exception e)

return error(e.getMessage());

return result(i);

/**

  • @描述 修改角色权限信息保存

  • @date 2018/9/16 16:12

*/

@RequestMapping(“/editPowerSave”)

@RequiresPermissions(“role:update”)

@Operlog(modal = “角色管理”,descr = “修改角色权限”)

@ResponseBody

public AjaxResult editPowerSave(Role role, Integer[] ids)

int i = 0;

try

if (StringUtils.isEmpty(ids))

ids = new Integer[0];

i = iRoleService.updateByPrimaryKeyPowerSelective(role, ids);

catch (Exception e)

return error(e.getMessage());

//清空缓存

ShiroUtils.clearCachedAuthorizationInfo();

//如果用户正在修改的角色id 是当前用户的角色id 则刷新 subject的User信息

if (role.getRoleId().equals(getRoleId()))

ShiroUtils.reloadUser(iUserService.selectByPrimaryKey(getUserId()));

return result(i);

/**

  • 校验名称唯一

*/

@PostMapping(“/checkRoleNameUnique”)

@ResponseBody

public String checkDeptNameUnique(Role role)

String uniqueFlag = “0”;

if (role != null)

uniqueFlag = iRoleService.checkRoleNameUnique(role);

return uniqueFlag;

会议室管理控制层:

/**

  • @author yy

*/

@Controller

@RequestMapping(“/room”)

public class MeetRoomController extends BaseController{

private Logger log = LoggerFactory.getLogger(this.getClass());

private String prefix = “system/room/”;

@Autowired

private IMeetingRoomService iMeetingRoomService;

/**

  • @描述 页面跳转

  • @date 2018/9/16 10:59

*/

@RequestMapping(“/tolist”)

public String tolist()

return prefix + “room”;

/**

  • @描述 ajax请求

  • @date 2018/9/16 10:48

*/

@RequestMapping(“/ajaxlist”)

@ResponseBody

public List list(MeetingRoom meetingRoom)

List meetingRooms = iMeetingRoomService.selectMeetRoomList(meetingRoom);

return meetingRooms;

/**

  • @描述 列表页

  • @date 2018/9/16 10:52

*/

@RequestMapping(“/tableList”)

@ResponseBody

public TableDataInfo listPag(MeetingRoom meetingRoom)

//开启分页

startPage();

List meetingRooms = iMeetingRoomService.selectMeetRoomList(meetingRoom);

return getDataTable(meetingRooms);

/**

  • @描述 新增页面

  • @date 2018/9/16 11:37

*/

@RequestMapping(“/toAdd”)

@RequiresPermissions(“meetRoom:list”)

public String toAdd()

return prefix + “add”;

/**

  • @描述 批量删除

  • @date 2018/9/16 11:53

*/

@RequestMapping(“/del”)

@RequiresPermissions(“meetRoom:del”)

@Operlog(modal = “会议室管理”,descr = “删除会议室”)

@ResponseBody

public AjaxResult del(Integer[] ids)

try

iMeetingRoomService.deleteByPrimaryKeys(ids);

catch (Exception e)

return error(e.getMessage());

return success();

/**

  • @描述 执行保存操作

  • @date 2018/9/16 11:54

*/

@RequestMapping(“/addSave”)

@RequiresPermissions(“meetRoom:add”)

@Operlog(modal = “会议室管理”,descr = “添加会议室”)

@ResponseBody

public AjaxResult addMeetingRoom(MeetingRoom meetingRoom)

meetingRoom.setCreateTime(new Date());

return result(iMeetingRoomService.insertSelective(meetingRoom));

/**

  • @描述 编辑修改页面

  • @date 2018/9/16 14:06

*/

@RequestMapping(“/edit/{id}”)

@RequiresPermissions(“meetRoom:update”)

public String edit(@PathVariable(“id”) Integer id, Model model)

MeetingRoom meetingRoom = iMeetingRoomService.selectByPrimaryKey(id);

model.addAttribute(“room”, meetingRoom);

return prefix + “edit”;

/**

  • @描述 修改保存

  • @date 2018/9/16 16:12

*/

@RequestMapping(“/editSave”)

@RequiresPermissions(“meetRoom:update”)

@Operlog(modal = “会议室管理”,descr = “修改会议室”)

@ResponseBody

public AjaxResult save(MeetingRoom meetingRoom)

return result(iMeetingRoomService.updateByPrimaryKeySelective(meetingRoom));

/**

  • 校验部门名称

*/

@PostMapping(“/checkRoomNameUnique”)

@ResponseBody

public String checkMeetingRoomNameUnique(MeetingRoom meetingRoom)

String uniqueFlag = “0”;

if (meetingRoom != null)

uniqueFlag = iMeetingRoomService.checkRoomNameUnique(meetingRoom);

return uniqueFlag;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

迅为iMX6ULL开发板NXP嵌入式ARM核心板Linux系统i.MX6ULL超STM32

核心板参数 尺寸&#xff1a; 38mm*42mm PCB&#xff1a; 6层 CPU&#xff1a; iMX6ULL ARM Cortex-A7架构 单核 iMX6ULL 商业级&#xff1a; 内存&#xff1a;512M 存储&#xff1a;8G EMMC iMX6ULL 工业级&#xff1a; 内存&#xff1a;256M 存储&#xff1a;512M FL…

python正态分布中的normal函数

python正态分布中的normal函数 概念 1、正态分布又名高斯分布&#xff0c;是人们最常用的描述连续型随机变量的概率分布。 在金融学研究中&#xff0c;收益率等变量的分布假定为正态分布或者对数正态分布(取对数后服从正态分布)。因为形状的原因&#xff0c;正态分布曲线也被…

Mysql实战调优拾遗三

Mysql实战调优拾遗三优化小细节&#xff08;续&#xff09;索引监控查询优化查询慢的原因优化数据访问执行过程的优化查询缓存语法解析和预处理查询优化器优化器的优化策略优化器的优化类型关联与排序优化优化特定类型的查询优化count查询优化关联查询优化子查询优化group by 和…

DOS 命令

前提&#xff1a;打开命令行&#xff0c;winr打开窗口输入cmd回车 1、如何操作DOS命令 建议&#xff1a;初学者在虚拟机中完成实验&#xff01;&#xff01;&#xff01; 开始 --- 运行 --- 输入cmd --- 回车&#xff0c;将调出C:\windows\system32\cmd.exe 或者 win R --- 运…

BH1750( GY-302 )光照传感器

文章目录一、产品简介二、IIC通信三、BH1750的使用四、程序源码这里我先简单的介绍一下BH1750光照传感器模块的基本信息(不多废话)&#xff0c;我将着重讲解它的使用部分&#xff0c;相信对于屏幕前的你也是更关心它是怎么使用的&#xff0c;OK&#xff0c;gogogo&#xff01;&…

2019第一届长安杯

检材一 案情简介 在一起电诈案件中&#xff0c;受害者称自己的银行卡被他人冒用&#xff0c;曾收到假冒公安的短信&#xff0c;因为 自己在一个 P2P 网站中理财&#xff0c;假冒公安称该网站已被列外非法网站&#xff0c;要自己到公安备案网站 填写自己的信息&#xff0c;并…

基于javaweb的crm客户关系管理系统(java+springboot+mysql)

基于javaweb的crm客户关系管理系统(javaspringbootmysql) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 基于javawebsp…

云扩研习社 | RPA高级开发技巧(上)

高级元素选择技巧 XPath介绍 XPath是标准的结构化查询语言&#xff0c;内置丰富的语法、高阶函数可以提供非常强大的目标元素特征描述能力。 XPath是一种强大、复杂的查询语言&#xff1b;XPath与编辑器中内置的选择器没有本质区别&#xff0c;均可作为元素特征描述&#xff…

毕业设计 基于51单片机老人防跌倒GSM短信报警系统

基于51单片机无线蓝牙APP控LED灯亮灭亮度设计1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 GSM SIM800A模块电路设计2.2 蜂鸣器报警电路&#xff08;低电平有效&#xff09;设计2.3 ADXL345倾角传感器模块电路设计2.4 DS18B20温度传感器模块电路设计3、部分代码展示…

面试官问我 “A + B” 算法,我懵了

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

逆向学习-UltraEdit安装

一、相关软件安装 1、UltraEdit 1.1、简介 UltraEdit 是当今销量第一且最为强大的一款高性价比的文本编辑器。尽管不是一款开源软件&#xff0c;但多数程序员都使用这款编辑器&#xff0c;支持多种编程语言的语法着色和外挂编译功能。UltraEdit 是理想的文本、HTML 和十六进…

最新|全新风格原创YOLOv7、YOLOv5和YOLOX网络结构解析图

&#x1f4a1;本篇分享一下个人绘制的原创全新风格YOLOv7网络结构图、YOLOv5网络结构图和YOLOX网络结构图 个人感觉搭配还行&#xff0c;看着比较直观&#xff0c;所以开源分享一下。 文章目录YOLOv5 网络结构图(最新 推荐&#x1f525;&#x1f525;&#x1f525;)YOLOv7 网络…

【C++笔试强训】第十三天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

YOLOv5、v7改进之三十八:引入RepVGG模型结构

前 言&#xff1a;作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv7的如何改进进行详…

基于javaweb的养老院管理系统(java+springboot+thymeleaf+html+js+mysql)

基于javaweb的养老院管理系统(javaspringbootthymeleafhtmljsmysql) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 基于…

synchronized到底锁的是谁、何时生效

一、synchronized锁的几种形式 synchronized修饰普通方法synchronized修饰静态方法synchronized修饰代码块 1、synchronized修饰普通方法 简单示例 public class Test{private String age;private String name;public synchronized void print(String arg1, String arg2) {…

零代码,让业务人员实现应用创造自由

摘要&#xff1a;以汽车营销场景为例&#xff0c;从AppCube零代码和业务大屏入手&#xff0c;帮助开发者更好地理解AppCube低代码和零代码异同点&#xff0c;在实际使用时能更快选取更合适的工具能力&#xff0c;实现应用构建效率最大化。本文分享自华为云社区《DTT第8期直播回…

超级详细的Vue安装与配置教程

Vue web前端三大主流框架之一,是一套用于构建用户界面的渐进式框架,下面这篇文章主要给大家介绍了关于Vue安装与配置教程的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下 − 目录 一、下载和安装Vue二、创建全局安装目录和缓存日志目录三、配置环境变量 1. 环境…

【k哥爬虫普法】简历大数据公司被查封,个人隐私是红线!

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

mysql忘记密码怎么办(附免密登录和修改密码)

前言 博主个人社区&#xff1a;开发与算法学习社区 博主个人主页&#xff1a;Killing Vibe的博客 欢迎大家加入&#xff0c;一起交流学习~~ 一、打开MySQL&#xff08;能打开请跳过此步&#xff09; 第一种&#xff1a;安装完MySQL之后&#xff0c;MySQL提供大家的客户端程序 …