Web项目之人力资源管理系统
项目Gitee
地址
博客地址
项目需求
人力资源管理系统定位
- 实现的人力资源管理系统面向股东,员工以及实习生服务。
- 通过实现各模块功能,通过系统的方法进行公司的人员的加入,内部调动及离职人员变动,并为这些人员流动提供辅助管理。
- 以确保在适当的职位上又各种适当的人才能够既有效率又有效能地完成各项任务。
用户权限与认证
- 本模块实现的功能是用户的注册以及权限的分配,连接数据库和
shiro
实现用户安全,结合thymeleaf-shiro
实现用户权限分组。 JS
设计登录的密码长度判断,用户名格式是否正确。- 登陆成功跳转到主页,或者选择注册,注册成功后,跳转到登录。
- 不同权限用户可查看的页面不同,操作权限也不同。
部门管理
- 前端方面,需要画树状图,在点击结点的时候,显示其对应部门下的所有员工。
- 在这里,树状图的绘制通过模板的
fuel ux
库完成。 - 在前端中得到从后端传来的
json
字符串作为画树状图的数据源,在js中用其parse
函数转换为js
对象,并定义渲染时的回调函数。 - 在点击结点的时候,调用一个
jumptoDepartment
函数,根据点击的节点自动跳转到相应的部门人员显示页面。 - 后端方面,建立一颗树用来表示部门之间的从属关系,每个结点中用一个
List
储存子部门的各个信息,同时给前端提供其相应的函数。
薪资管理
- 员工信息统计:
包括基础工资,所属部门,每月加班时长累计,每月考勤请假情况等;并且实现查询功能,员工信息添加功能,删除功能,分页功能,模糊查询功能,分页查询功能。 - 薪资明细表:
算出员工的奖金,处罚金,纳税金额,最后结算工资;并且实现查询功能,删除功能,分页功能,模糊查询功能,分页查询功能。
考勤管理
- 本模块实现的功能是查看员工的考勤状况
- 将员工的考勤状态分为:1:出勤,2:请假,3:出差,4:加班,5:补休,6:调班,7:停工。
- 页面在显示状态的同时也显示出员工的ID,姓名,状态的开始和结束时间,并添加备注。
- 在每个员工表格行的末尾添加修改功能,点击修改跳转到修改页面,可以修改该员工考勤状态、时间和备注。
- 另外增加了筛选功能,可以通过选择考勤状况查看处于该状态的员工。
人事处理
- 此模块实现调动管理管理模块,包括职员入职、转正、调岗、调薪、离职、复职等业务。
发布部署到服务器
- 项目最终打包(jar)发布到服务器。
项目设计
登录注册
部门管理
薪资管理
考勤管理
人事处理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oW5MNeXf-1642738246406)(C:\Users\86176\OneDrive\桌面\5.png)]
数据库设计
Userall
(用户)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
user | varchar | 255 | 0 | 1 | key |
password | varchar | 255 | 0 | 1 | |
salt | varchar | 255 | 0 | 0 |
UserPer
(用户权限)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
user | varchar | 255 | 0 | 1 | key |
perms | varchar | 255 | 0 | 0 |
department
(部门)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
department | varchar | 255 | 0 | 1 | |
d_id | int | 255 | 0 | 1 | key |
parid | int | 255 | 0 | 0 |
employees
(职员【所有】)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
id | int | 11 | 0 | 1 | key |
name | varchar | 255 | 0 | 1 | |
age | int | 11 | 0 | 1 | |
sex | varchar | 2 | 0 | 1 | |
phone | varchar | 255 | 0 | 0 | |
varchar | 255 | 0 | 0 | ||
dName | varchar | 255 | 0 | 1 | |
pName | varchar | 255 | 0 | 1 | |
gName | varchar | 255 | 0 | 1 | |
flag | bit | 1 | 0 | 1 |
gangwei
(岗位)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
name | varchar | 255 | 0 | 0 | |
g_id | int | 255 | 0 | 1 | key |
kaoqin
(考勤)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
id | int | 11 | 0 | 1 | key |
name | varchar | 255 | 0 | 0 | |
type | int | 11 | 0 | 1 | |
start | date | 0 | 0 | 0 | |
end | date | 0 | 0 | 1 | |
remark | varchar | 255 | 0 | 0 |
position
(职位)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
position | varchar | 255 | 0 | 1 | |
p_id | int | 255 | 0 | 1 | key |
level | int | 255 | 0 | 0 |
salary
(薪资)
名 | 类型 | 长度 | 小数点 | 不是null | |
---|---|---|---|---|---|
time | varchar | 255 | 0 | 0 | |
gid | int | 11 | 0 | 1 | key |
pid | int | 11 | 0 | 1 | |
username | varchar | 255 | 0 | 0 | |
basicSalary | int | 11 | 0 | 1 | |
dname | varchar | 255 | 0 | 0 | |
workovertime | int | 11 | 0 | 1 | |
checkaccout | int | 11 | 0 | 1 |
项目核心代码
详细设计
登录与注册
@RequestMapping(value = "/index", method = RequestMethod.GET) public String indexPage(String username, String password, Map<String, Object> map, HttpSession session, HttpServletRequest request, Model model) { /** * 使用shiro编写认证的操作 */ //1.获取Subject Subject subject = SecurityUtils.getSubject(); //2.封装用户数据 UsernamePasswordToken token = new UsernamePasswordToken(username, password); try {
//3.执行登录方法 subject.login(token); model.addAttribute("username", username); session.setAttribute("username", username); return "index"; } catch (UnknownAccountException e) { //登录失败,用户名错误 model.addAttribute("msg", "用户名不存在!"); return "login"; } catch (IncorrectCredentialsException e) { //登录失败,密码错误 model.addAttribute("msg", "用户名或密码错误!"); return "login"; }
}
@RequestMapping(value = "/login") public String regPageToLogin(String username, String password, Map<String, Object> map, HttpSession session, Model model) { Userall userall = new Userall(username, password); if (username == null || password == null) { return "reg"; } if (password.length() < 4 || password.length() > 10) { return "reg"; } Userall userall1 = userCheckServiceImpl.selectByKeyName(username); if (userall1 != null) { map.put("error", "用户名重复"); return "reg"; } try { Integer id = Integer.parseInt(username); boolean flag = userCheckServiceImpl.insert(username, password); if (flag) { //设置用户权限 String role = employServiceImpl.getRole(Integer.parseInt(username)); userCheckServiceImpl.insertUserPer(username, role); return "login"; } else { Userall usercheck = userCheckServiceImpl.selectByNameAndPassword(username, password); if (usercheck == null) { return "reg"; } else { return "login"; } } } catch (Exception e) { map.put("error", "用户名不符合数字格式"); return "reg"; }
}
/** * 执行认证逻辑 * * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { System.out.println("执行认证:Authentiction"); //假设数据库的用户名和密码 UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; Userall user = userCheckService.selectByKeyName(token.getUsername()); String DBPassword = user.getPassword(); String Salt = user.getSalt(); System.out.println(Salt); return new SimpleAuthenticationInfo(user,DBPassword, ByteSource.Util.bytes(Salt),"");
}
@Override public boolean insert(String username, String password) { String Salt = new SecureRandomNumberGenerator().nextBytes().toHex(); //加密 SimpleHash simpleHash = new SimpleHash("md5",password,Salt,1); String NewPassword = simpleHash.toString(); //System.out.println(password); userallMapper.insert(username,NewPassword,Salt); return true; }
<div class="container"> <form class="form-signin" action="/index" id = "signForm"> <div class="form-signin-heading text-center"> <h1 class="sign-title">登录</h1> <img src="../static/images/login-top.png" alt=""/> </div> <div class="login-wrap"> <input type="text" class="form-control" placeholder="User ID" autofocus name="username" id = "username" required="required"> <input type="password" class="form-control" placeholder="Password" name="password" id = "password" required="required"><p class="message">请输入4~10位密码</p> <script> var password = document.querySelector('.form-control'); var message = document.querySelector('.message'); password.onblur = function() { if (this.value.length < 4 || this.value.length > 10) { message.innerHTML = '密码长度错误,应为4~10位'; message.className = 'message wrong'; } else { message.innerHTML = '密码长度正确'; message.className = 'message right'; } } </script> <button class="btn btn-lg btn-login btn-block" type="submit" onclick="mycheck()" > <i class="fa fa-check"></i> </button> <div class="registration"> <a class="" href="/reg"> 注册 </a> </div> </div> </form>
</div> <div class="login-wrap"> <input type="text" autofocus="" placeholder="输入编号,实习生请输入0" class="form-control" name="username" required="required" id="username"> <input type="password" autofocus="" placeholder="password" class="form-control" name="password" required="required" id="password"><p class="message">请输入4~10位密码</p> <p th:text="${error}" color="red"></p> <script> var password = document.querySelector('.form-control'); var message = document.querySelector('.message'); password.onblur = function() { if (this.value.length < 4 || this.value.length > 10) { message.innerHTML = '密码长度错误,应为4~10位'; message.className = 'message wrong'; } else { message.innerHTML = '密码长度正确'; message.className = 'message right'; } } </script> <button type="submit" class="btn btn-lg btn-login btn-block" onclick="mycheck()"> <i class="fa fa-check"></i> </button> <div class="registration"> Already Registered. <a href="login.html" class=""> Login </a> </div>
</div>
部门管理
Controller层
Service层
@Servicepublic class departmentTree {private Department department;private List<departmentTree> children;departmentTree() {}departmentTree(DepartmentMapper departmentMapper, int id) {department = departmentMapper.getById(id);department.setdId(id);children = new ArrayList<departmentTree>();for (int childrenId : departmentMapper.geIdtByParId(id)) {children.add(new departmentTree(departmentMapper, childrenId));}}// 获取该节点下所有的员工ArrayList<Employees> getAllEmployee(EmployeesMapper employeesMapper) {ArrayList<Employees> ans = employeesMapper.getBydName(department.getDepartment());for (departmentTree tmp : children) {ans.addAll(tmp.getAllEmployee(employeesMapper));}return ans;}Department getDepartment() {return department;}public List<departmentTree> getChildren() {return children;}
}@Service
public class departmentTool implements departmantToolService {@AutowiredDepartmentMapper departmentMapper;@AutowiredEmployeesMapper employeesMapper;private String getJSONByNode(departmentTree node) {JSONObject JSON = new JSONObject();// 获取该节点之下的所有值String ch = null;for (departmentTree son : node.getChildren()) {if (ch == null)ch = getJSONByNode(son);elsech = ch + "," + getJSONByNode(son);}return "{" + "\"name\": \"" + node.getDepartment().getDepartment()+ "\" ,\"type\": \"" + (node.getChildren().size() != 0 ? "folder" : "item")+ "\" ,\"id\": " + node.getDepartment().getdId()+ " ,\"children\": " + "[" + (ch == null ? "" : ch) + "]"+ "}";}// 获取根节点@Overridepublic departmentTree getRoot() {return new departmentTree(departmentMapper, 0);}// 获取JSON@Overridepublic String getJSON() {// JSONObject JSON = new JSONObject();return "[" + getJSONByNode(new departmentTree(departmentMapper, 0)) + "]";}// 根据id寻找某个部门下所有的员工@Overridepublic ArrayList<Employees> getEmployeeById(int id) {return (new departmentTree(departmentMapper, id)).getAllEmployee(employeesMapper);}
}
Mapper层
@Mapper
public interface DepartmentMapper { int deleteByPrimaryKey(Integer dId); int insert(Department record); int insertSelective(Department record); Department selectByPrimaryKey(Integer dId); int updateByPrimaryKeySelective(Department record); int updateByPrimaryKey(Department record); @Select("select * from department where d_id = #{id} ") Department getById(int id); @Select("select d_id from department where parid = #{id} ") List<Integer> geIdtByParId(int id); // 通过父节点找到所有子节点的id @Select("select * from department")
List<Department> getAll();
}
@Mapper
public interface EmployeesMapper { int deleteByPrimaryKey(Integer id); int insert(Employees record); int insertSelective(Employees record); Employees selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(Employees record); int updateByPrimaryKey(Employees record); @Select("select * from employees") List<Employees> getAll(); @Select("select * from employees where dName = #{dName} ") ArrayList<Employees> getBydName(String dName);
}
前端HTML&JS
var DMPTree = function () {return {//main function to initiate the moduleinit: function () {var DataSourceTree = function (options) {this._data = options.data;this._delay = options.delay;};DataSourceTree.prototype = {data: function (options, callback) {var nodes;if($.isEmptyObject(options)) {nodes = this._data;}else {if(options.children == null || options.children == undefined) {nodes = {};}else {nodes = options.children;}}setTimeout(function () {callback({ data: nodes });}, this._delay)}};var treeDataSourceDynamicStr = $("#dataTreeSrc").val();var treeDataSourceDynamic = JSON.parse(treeDataSourceDynamicStr);var deparmentTreeSrc = new DataSourceTree({data: treeDataSourceDynamic,delay: 400});$('#DepartmentTree').tree({dataSource: deparmentTreeSrc,loadingHTML: '<img src="../static/images/input-spinner.gif"/>'});}};
}();
前端管理跳转函数:
<script>function jumpToDepartment() {var dmpid = ($('#DepartmentTree').tree('selectedItems')[0]).id;window.location.href = "/index/department/" + dmpid;}
</script>
HTML接收后端传入json字符串:
<input type="hidden" id="dataTreeSrc" th:value="${treeDataSrc}">
薪资管理
Controller层
@RequestMapping("/index/salary_search")public String salary_select(Model model,String username,@RequestParam(required = false,defaultValue="1",value="pageNum")Integer pageNum,@RequestParam(defaultValue="5",value="pageSize")Integer pageSize){if(pageNum==null || pageNum<=0){pageNum = 1;}if(pageSize == null){pageSize = 1;}PageHelper.startPage(pageNum,pageSize);try {List<Salary> users=salaryServiceImpl.findUserByName(username);PageInfo<Salary> pageInfo = new PageInfo<Salary>(users,pageSize);model.addAttribute("pageInfo",pageInfo);model.addAttribute("salary",users);model.addAttribute("username",username);}finally {}return "salary_search";
@GetMapping("/index/salary_delete/{id}")public String salary_delete(@PathVariable Integer id){salaryServiceImpl.salary_delete(id);return "redirect:/index/salary";}
@RequestMapping("/index/salary_insert")public String insertPage(){return "salary_insert";}@RequestMapping("/index/salaryBack")public String insert(Salary salary) {salaryServiceImpl.add(salary);return "redirect:/index/salary_control";}
Service层
List<Salary> getSalary();int salary_delete(Integer id);List<Salary> findUserByName(String username);void add(Salary salary);int update(Salary salary);
Mapper层
@Select("select * from salary")List<Salary> getSalary();@Select("select * from kaoqin")List<Salary> getKaqqinInformation();/*删除用户
*/@Delete("delete from salary\n" +" where gid = #{gid,jdbcType=INTEGER}")int salary_delete(Integer gid);/*查询用户信息*/@Select("select * from salary where username like CONCAT('%',#{name},'%')")List<Salary> findUserByName(String username);@Insert("insert into salary (`time`, pid, username, \n" +" basicSalary, dname, workovertime, \n" +" checkaccount)\n" +" values (#{time,jdbcType=VARCHAR}, #{pid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, \n" +" #{basicsalary,jdbcType=INTEGER}, #{dname,jdbcType=VARCHAR}, #{workovertime,jdbcType=INTEGER}, \n" +" #{checkaccount,jdbcType=INTEGER})")void add(Salary user);
考勤管理
Controller层
@RequestMapping("/index/employee_table2")
public String KaoqinList(Model model,
@RequestParam(required = false,defaultValue="1",value="pageNum")Integer pageNum,
@RequestParam(defaultValue="10",value="pageSize")Integer pageSize){ //为了程序的严谨性,判断非空: //设置默认当前页 if(pageNum==null || pageNum<=0){ pageNum = 1; } //设置默认每页显示的数据数 if(pageSize == null){ pageSize = 1; } // System.out.println("当前页是:"+pageNum+"显示条数是:"+pageSize); //1.引入分页插件,pageNum是第几页,pageSize是每页显示多少条,默认查询总数count PageHelper.startPage(pageNum,pageSize); //2.紧跟的查询就是一个分页查询-必须紧跟.后面的其他查询不会被分页,除非再次调用PageHelper.startPage List<Kaoqin> kaoqins = kaoqinServiceImpl.kaoqinList(); //3.使用PageInfo包装查询后的结果,5是连续显示的条数,结果list类型是Page<E> PageInfo<Kaoqin> pageInfo = new PageInfo<Kaoqin>(kaoqins,pageSize); //4.使用model传参数回前端 model.addAttribute("pageInfo",pageInfo); model.addAttribute("kaoqins",kaoqins); return "kaoqin_table"; }
//根据考勤类型查找
@RequestMapping("/find")
public String find(Integer type, Model model){ List<Kaoqin> kaoqins = kaoqinServiceImpl.findKaoqin(type); model.addAttribute("kaoqins",kaoqins); System.out.println(type); return "kaoqin_table"; }
//根据id更新考勤内容
@GetMapping("/update/{id}")
public String update(Model model, @PathVariable int id){ Kaoqin kaoqin = kaoqinServiceImpl.findKaoqinById(id); model.addAttribute("kaoqin",kaoqin); return "updateKaoqin"; }
//更新考勤
@PostMapping("/update")
public String updateKaoqin(Kaoqin kaoqin){ kaoqinServiceImpl.updateKaoqin(kaoqin); return "redirect:/index/employee_table2"; }
Service层
@Autowired
KaoqinMapper kaoqinMapper;
@Override
public List<Kaoqin> kaoqinList(){ return kaoqinMapper.kaoqinList();
}
@Override
public List<Kaoqin> findKaoqin(Integer type){ return kaoqinMapper.findKaoqin(type);
}
@Override
public Kaoqin findKaoqinById(int id){ return kaoqinMapper.findKaoqinById(id);
}
@Override
public int updateKaoqin(Kaoqin kaoqin){ return kaoqinMapper.updateKaoqin(kaoqin);
}
List<Kaoqin> kaoqinList();
List<Kaoqin> findKaoqin(Integer type);
Kaoqin findKaoqinById(int id);
int updateKaoqin(Kaoqin kaoqin);
Mapper层
@Select("select * from kaoqin")
List<Kaoqin> kaoqinList();
@Select("select * from kaoqin where type = #{type}")
List<Kaoqin> findKaoqin(Integer type);
@Select("select * from kaoqin where id = #{id}")
Kaoqin findKaoqinById(int id);
@Update("update kaoqin set type = #{type}, start = #{start}, end = #{end}, remark = #{remark} where id = #{id}")
int updateKaoqin(Kaoqin kaoqin);
人事处理
Controller层
public String employeeListPage(Model model, @RequestParam(defaultValue = "1") Integer pageNum) {PageHelper.startPage(pageNum, 5);List<Employees> list = employServiceImpl.getAll();PageInfo<Employees> pageInfo = new PageInfo<Employees>(list);model.addAttribute("pageInfo", pageInfo);model.addAttribute("employee", list);return "employee_table";}@RequestMapping(value = "/index/addEmployee")public String addStus(String name,int age,String sex,String dname,String pname,String gname,boolean flag,int id,String email,String phone,@RequestParam(defaultValue = "1") Integer pageNum,Model model) {Employees employees = new Employees(name,age,sex,dname,pname,gname,email,phone,id,flag);try {employServiceImpl.addEmployees(employees);}catch (Exception e){return "addStu";}return "index";}@RequestMapping(value = "/index/delEmployee")public String delEmployee(String name,int age,String sex,String dname,String pname,String gname,boolean flag,int id,String email,String phone) {Employees employees = new Employees(name,age,sex,dname,pname,gname,email,phone,id,flag);employServiceImpl.delEmployees(employees);return "delSuccess";}
Sevice层
EmployeesMapper employeesMapper;@Overridepublic void addEmployees(Employees employees) {employeesMapper.save(employees);}@Overridepublic void delEmployees(Employees employees) {employeesMapper.delete(employees);}@Overridepublic List<Employees> getAll() {return employeesMapper.getAll();}
Mapper层
@Select("select * from employees")
List<Employees> getAll();
@Delete("DELETE from employees where name = #{name} and age = #{age} and sex = #{sex} and id = #{id} ")
void delete(Employees employee);
@Insert("INSERT INTO employees VALUES(#{id},#{name},#{age},#{sex},#{phone},#{email},#{dname},#{pname},#{gname},#{flag})")
void save(Employees employee);
用户权限分组
shiroConfiguration
@Configuration
public class ShiroConfiguration { /** * LifecycleBeanPostProcessor,这是个DestructionAwareBeanPostProcessor的子类, * 负责org.apache.shiro.util.Initializable类型bean的生命周期的,初始化和销毁。 * 主要是AuthorizingRealm类的子类,以及EhCacheManager类。 */ @Bean(name = "lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } /** * HashedCredentialsMatcher,这个类是为了对密码进行编码的, * 防止密码在数据库里明码保存,当然在登陆认证的时候, * 这个类也负责对form里输入的密码进行编码。 */ @Bean public HashedCredentialsMatcher hashedCredentialsMatcher() { HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); hashedCredentialsMatcher.setHashAlgorithmName("md5"); return hashedCredentialsMatcher; } /** * ShiroRealm,这是个自定义的认证类,继承自AuthorizingRealm, * 负责用户的认证和权限的处理,可以参考JdbcRealm的实现。 */ @Bean(name = "shiroRealm") @DependsOn("lifecycleBeanPostProcessor") public ShiroRealm shiroRealm() { ShiroRealm realm = new ShiroRealm(); realm.setCredentialsMatcher(hashedCredentialsMatcher()); return realm; } /** * SecurityManager,权限管理,这个类组合了登陆,登出,权限,session的处理,是个比较重要的类。 * // */ @Bean(name = "securityManager") public DefaultWebSecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(shiroRealm()); return securityManager; } /** * ShiroFilterFactoryBean,是个factorybean,为了生成ShiroFilter。 * 它主要保持了三项数据,securityManager,filters,filterChainDefinitionManager。 */ @Bean(name = "shiroFilter") public ShiroFilterFactoryBean shiroFilterFactoryBean() { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager()); Map<String, Filter> filters = new LinkedHashMap<String, Filter>(); LogoutFilter logoutFilter = new LogoutFilter(); logoutFilter.setRedirectUrl("/login"); shiroFilterFactoryBean.setFilters(filters); Map<String, String> filterChainDefinitionManager = new LinkedHashMap<String, String>(); //登录 // 添加shiro的内置过滤器 /** * anon:无需认证就可以访问 * authc:必须认证了才能访问 * user:必须拥有记住我功能才能用 * perms:拥有对某个资源的权限才能访问 * role:拥有某个角色的权限才能访问 */ filterChainDefinitionManager.put("/login","anon"); filterChainDefinitionManager.put("/logout", "anon"); filterChainDefinitionManager.put("/index","anon"); filterChainDefinitionManager.put("/index/**", "authc"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionManager); shiroFilterFactoryBean.setLoginUrl("/"); shiroFilterFactoryBean.setSuccessUrl("/index"); shiroFilterFactoryBean.setUnauthorizedUrl("/403"); return shiroFilterFactoryBean; } /** * DefaultAdvisorAutoProxyCreator,Spring的一个bean,由Advisor决定对哪些类的方法进行AOP代理。 */ @Bean @ConditionalOnMissingBean public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator(); defaultAAP.setProxyTargetClass(true); return defaultAAP; } /** * AuthorizationAttributeSourceAdvisor,shiro里实现的Advisor类, * 内部使用AopAllianceAnnotationsAuthorizingMethodInterceptor来拦截用以下注解的方法。 */ @Bean public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() { AuthorizationAttributeSourceAdvisor aASA = new AuthorizationAttributeSourceAdvisor(); aASA.setSecurityManager(securityManager()); return aASA; } /** * 配置 shiroDialect 用于thymeleaf和 * @return */ @Bean public ShiroDialect getShiroDialect() { return new ShiroDialect(); }
}
shiroRealm
public class ShiroRealm extends AuthorizingRealm { @Autowired userCheckServiceImpl userCheckService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out.println("执行授权:Authorization"); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); Subject subject = SecurityUtils.getSubject(); Userall userall = (Userall)subject.getPrincipal(); String role = userCheckService.getUserPer(userall.getUser()); System.out.println(role); info.addStringPermission(role); return info; } /** * 执行认证逻辑 * * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { System.out.println("执行认证:Authentiction"); //假设数据库的用户名和密码 UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; Userall user = userCheckService.selectByKeyName(token.getUsername()); String DBPassword = user.getPassword(); String Salt = user.getSalt(); System.out.println(Salt); return new SimpleAuthenticationInfo(user,DBPassword, ByteSource.Util.bytes(Salt),""); }
}
thymeleaf+shiro
<li class="menu-list nav-active" shiro:hasAnyPermissions="boss,deputy,fudeputy,staff"><a href="#"><i class="fa fa-th-list"></i> <span>人事归档</span></a> <ul class="sub-menu-list"> <li class="active"><a href="/index/employee_table">人事归档</a></li> <li class="active" shiro:hasAnyPermissions="boss,deputy,fudeputy"><a href="/index/addStu">员工入职</a></li> <li class="active" shiro:hasAnyPermissions="boss,deputy,fudeputy"><a href="/index/delStu">员工离职</a></li> </ul>
</li>
项目部署
部署网址
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Qt编译Qscintilla Designer插件(C++版)过程记录
Qscintilla Designer插件[C版] 过程记录一、编译环境二、下载链接三、编译&安装库一、编译二、安装三、编译要点本文是编译该 QScintilla 组件库供 QDesigner 开发 C 桌面软件 流程记录【只适配当前 编译套件 中的 QDesigner】 编译该插件之前,确保编译安装了和…...
2024/5/8 22:38:23 - 蓝桥杯大赛 青少年创意编程 第十二届 C++组
第十二届 蓝桥杯青少年C中级组1月比赛题目详解https://www.bilibili.com/video/BV1dR4y1x7J8/ 第十二届蓝桥杯青少年C中级组1月比赛题目详解https://www.bilibili.com/video/BV1dR4y1x7J8/ 第十二届 蓝桥杯青少年 C中级组 1月比赛 第1题https://blog.csdn.net/dllglvzhenfeng…...
2024/4/14 10:38:10 - PIL.Image 、QImage和QPixmap的相互转化
PIL.Image 、QImage和QPixmap的相互转化 from PIL import Image, ImageQt from PyQt5.QtGui import QPixmapimage Image.open("xxx.jpg")# Image -> QImage qimage ImageQt.toqimage(image)# QImage -> Image,使用这个方法 image ImageQt.fromq…...
2024/5/8 15:47:46 - 第九届蓝桥杯JavaA组(2018年)省赛真题解析
第九届蓝桥杯JavaA组(2018年)省赛真题解析 1.分数 1/11/21/41/81/16…每项是前一项的一半,如果一共有20项,求这个和是多少结果用分数表示,类似:3/2,当然这这是加了前2项而已,分子分母要求互质,…...
2024/4/14 10:37:40 - 三、Vue 组件通信方式之$refs/ $parens /$children /$root
Vue 组件通信方式$refs/ $parens /$children /$root $refs:通常会将$refs绑定在DOM元素上,来获取DOM元素的attribute。在实现组件通信上,也可以将$refs绑定在子组件上,从而获取子组件的实例。 $parens : 在Vue中风直接通过this.$parent来获取…...
2024/5/8 19:28:29 - 满足javabean的条件
1.属性为私有 2.构造器为public或 无参 3.有获取属性的get,setName()方法 4.实现序列化接口...
2024/4/14 10:39:01 - 基于WaterDetect的水域面积提取,以长江中上游水面为例
一、安装环境 这里使用的SA2影像数据,鉴于该数据的L1C格式存在未大气校正等问题,因此需要手动将其转换为L2A数据格式,因此需要安装sen2cor进行转换,软件安装及教程如:https://www.jianshu.com/p/200bc5d6f890。 界面如…...
2024/4/14 10:38:51 - js导出csv文件
遇到的问题: 1. 含有逗号(,) 问题描述:因为csv是一种通用的、相对简单的逗号分隔值文件格式,含有, 的字符串导出会根据,分开,占据不同单元格 解决办法:我们可以把数据格式从 kakakak ,alakk …...
2024/4/26 18:29:21 - 【性能优化】减少操作数据,提高性能
一、背景 在自测的时候,发现有个函数统计的数据很少,但是耗时比同类型复杂函数更多。然后用Django调试models输出的SQL语句,发现该函数在统计数据时,用了很多count()操作,产生了很多sql查询操作。 二、分析 考虑到代…...
2024/5/8 19:15:28 - librosa.feature.melspectrogram() 梅尔频谱图 示例
librosa.feature.melspectrogram() 梅尔频谱图 示例 import librosay, sr librosa.load(librosa.ex(nutcracker), # 音频路径( librosa.ex(nutcracker) 可换成:1.wav )sr 18000, # 设置输出采样率,默认是22050duration 1 # 截取时长为1秒 ) print…...
2024/4/19 15:34:50 - 虚拟DOM(virtual DOM)VUE
简介 说明 本文介绍Vue的虚拟DOM。Vue的版本 Vue 2.x 中模板渲染采用的是Virtual DOM。(Vue 1.x 采用的是 DocumentFragment)。Vue 2.x比Vue 1.0的渲染速度提升了2-4倍,并大大降低了内存消耗。什么是虚拟DOM 虚拟DOM(Virtual Dom&…...
2024/5/9 0:26:24 - tensorflow.js基本使用 图标识别(八)
示例 import $ from jquery; import * as tf from tensorflow/tfjs; import * as tfvis from tensorflow/tfjs-vis; import { getInputs, img2x, file2img } from ./utils.js;$(async () > {const { inputs, labels } await getInputs();console.log(inputs, labels);con…...
2024/5/8 15:49:11 - Spring IoC 基础概念
目录一、IoC 相关概念1、什么是 IoC?2、为什么叫做控制反转?3、IoC 解决了什么问题?4、IoC 和 DI 的区别二、Spring IoC 基础概念1、 BeanFactory 与 ApplicationContext 区别:2、Bean 的 X 及生命周期1)作用范围的改变…...
2024/5/9 5:51:13 - Spring IoC 快速使用入门
目录一、启动 IoC 容器的方式:1、Java 环境下启动 IoC 容器:2、Web 环境下启动 IoC 容器:1)从 xml 启动容器;2)从配置类启动容器二、纯 xml 模式1、bean 对象的创建2、对象属性的依赖注入配置三、xml 与注解…...
2024/5/8 18:35:38 - C语言实现 队列 的链式存储
上文已写队列的顺序存储,本文介绍队列的链式存储 1 队列构造 typedef struct Node{//节点数据void *data;struct Node *next; } Node; typedef struct Queue//队列构造 {Node firstNode;int size;//队列大小 } Queue; 2 队列初始化 Queue *initQueue()//队列初始…...
2024/4/14 10:38:56 - 深度学习模型解决超声波手势识别
简 介: 以手势识别为代表的人类活动识别是一种重要的人机交互方式,其在可穿戴设备、虚拟现实以及驾驶舱智能交互等领域有着重要的应用前景,其中基于雷达前端的手势识别方法是相关研究的热点。本文针对基于超声波雷达的手势识别问题࿰…...
2024/4/14 10:39:06 - 一文看懂任务挖掘和流程挖掘的区别是什么?
如今,随着企业信息化管理改革的不断深化,面对复杂的业务流程,企业管理者迫不及待的想要深入了解其自身的根本问题,并加以处理和改进,以便于企业更好的经营管理。因此,越来越多的企业开始寻求企业级智能自动…...
2024/4/5 4:43:52 - 7 指针 定义使用 占用内存空间
//7、指针 //可以通过指针来保存一个地址 指针就是一个地址 //定义指针 //#include<iostream> //using namespace std; //int main() //{ // //1. 定义指针 数据类型 *指针变量 // int a 10; // int *p; // p &a; // cout << "a的地址&…...
2024/4/20 8:03:17 - COOtBu-PEG-OH,叔丁酯聚乙二醇羟基,COOtBu-PEG-Hydroxyl
英文名称:HO-PEG-COOtBu 中文名称:羟基-聚乙二醇-叔丁酯 分子量:1k,2k,3.4k,5k,10k,20k(可按需定制) 质量控制:95% 存储条件:-20C&…...
2024/4/17 19:29:54 - 【SSM】15-动态代理模式的使用总结
目录 一、代理模式 二、静态代理 (一)静态代理 (二)静态代理简单实现 三、动态代理 (一)动态代理 (二)动态代理简单实现 四、动态代理原理分析 五、InvocationHandler接口和Proxy类详…...
2024/5/8 20:23:59
最新文章
- Unrecognized function or variable ‘datachk‘. Matlab debug
Unrecognized function or variable ‘datachk’. Error in contourf (line 55) [pvpairs, ~, ~, errmsg, warnmsg] matlab.graphics.chart.internal.contourobjHelper(‘parseargs’, true, args{:}); solution: Check you have put the correct parameters into contourf …...
2024/5/9 6:13:07 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - OpenHarmony开发-连接开发板调试应用
在 OpenHarmony 开发过程中,连接开发板进行应用调试是一个关键步骤,只有在真实的硬件环境下,我们才能测试出应用更多的潜在问题,以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先…...
2024/5/8 15:56:24 - 云计算概述报告
以下是一篇论述类文章 文章目录 I. 云计算介绍(1)云计算基本概念(2)云计算基本特征 II. 云计算发展历程(1)云计算的起源(2)云计算的发展阶段 III. 云计算特点(1ÿ…...
2024/5/7 11:36:49 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57