- 浏览: 3558331 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
一、帐户激活
在很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激活邮件,这封邮件的内容就是一个激活帐户的链接和一段简短的文字描述,如果用户没有去邮箱将帐户激活,可能在使用网站的某些功能时就会受到限制,比如不能发贴、下载资料、评论等限制。这么做的原因应该是为了保证帐户的安全性和邮箱的有效性,以后网站如果有什么活动、资讯或系统安全通知等,可以在第一时间通知到用户。比如我在奇艺视频网站注册一个帐号之后,它就会往我注册时填写的邮箱中发一封帐户激活的邮件,邮件中有一个激活的链接,点击它就可以将你的帐户激活。如下图所示:
这个功能是怎么做到的呢,其实实现也是很简单的,说白了就是一个Update操作。
实现思路:当一个用户注册成功之后,系统向用户注册时提供的email地址发送一封邮件,邮件的内容是一个激活帐户的链接和一段简短的文字描述,这个链接的功能就是将这个帐户的状态修改成激活状态。这个功能的重点在于如何生成这个激活帐户的链接。直接可以联想到的方法就是建一个Servlet,Servlet接收一个用户名参数,Servlet拿到用户名参数之后,到数据库把这条记录load出来,做一次update操作即可。但是这样做会有风险,比如有人想在你的网站上搞破坏,注册时他填的email地址就是乱填的,这个Email地址可能根据就收不到邮件(但符合email格式),注册完成之后,然后在浏览器地址栏输入网站之前发送的帐户激活链接,并加上新注册的用户名参数,这样一来就跳过了去邮箱激活的步聚,时间久了,库中可能会留下许多无效的email地址和帐户。为了避免这个问题,解决方案是在用户注册成功之后,在发送激活帐户的链接中加一个随机码,这个随机码是将用户名和一个随机数用md5加密后的一串16进制字符串,每次用户在激活帐户的时候,都验证这个随机码是否和注册时发送的一致,这样就可以避免人为的修改激活链接达到帐户激活的功能。
二、忘记密码
当你在某网站注册一个帐户之后,发现这个帐户很久没用了,密码也忘记了,如果还记得之前注册时填写的Email,那就可以向你的email中发一个重设密码的链接,就可以重新设置你的密码。大部份网站一般都提供了根据Email找回密码的功能。实现此功能的思路:在登录界面添加一个“忘记密码“的链接,用户点击进去之后,输入用户名或Email,系统根据用户名或Email找出用户信息,并生成一个重新设置密码的链接发送到用户的邮箱中(生成链接的方式和生成帐户激活链接的方式一样),用户在邮箱中点击重设密码的链接,根据提示进入密码重设页面,重新输入新的密码即可。
功能实现步聚(帐号激活):
1、用户注册页面
- <form action="${pageContext.request.contextPath}/register" method="post">
- 用户名:<input type="text" name="userName" value="${param.userName}"><span class="error">${errors.userName}</span><br/>
- 密码:<input type="password" name="password" ><span class="error">${errors.password}</span><br/>
- 确认密码:<input type="password" name="password2"><span class="error">${errors.password2}</span><br/>
- email:<input type="text" name="email" value="${param.email}"><span class="error">${errors.email}</span><br/>
- <input type="submit" value="注册">
- </form>
2、处理注册请求的Servlet(RegisterServlet)
- package org.study.accountactivate.web.servlet;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.study.accountactivate.dao.UserDao;
- import org.study.accountactivate.dao.impl.UserDaoImpl;
- import org.study.accountactivate.domail.User;
- import org.study.accountactivate.util.EmailUtils;
- /**
- * 用户注册
- */
- public class RegisterServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- private UserDao userDao = UserDaoImpl.getInstance();
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doPost(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String userName = request.getParameter("userName");
- String password = request.getParameter("password");
- String password2 = request.getParameter("password2");
- String email = request.getParameter("email");
- Map<String, String> errors = new HashMap<String,String>();
- if (userName == null || "".equals(userName)) {
- errors.put("userName", "用户名不能为空!");
- } else if (userName != null && userDao.findUserByName(userName) != null) {
- errors.put("userName", "该用户已注册!");
- }
- if (password == null || "".equals(password)) {
- errors.put("password","密码不能为空!");
- } else if (password != null && password.length() < 3) {
- errors.put("password","密码长度不能低于3位!");
- }
- if (password2 == null || "".equals(password2)) {
- errors.put("password2", "确认密码不能为空!");
- } else if (password2 != null && !password2.equals(password)) {
- errors.put("password2", "两次输入的密码不一致!");
- }
- if (email == null || "".equals(email)) {
- errors.put("email", "email不能为空!");
- } else if (email != null && !email.matches("[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+\\.[0-9a-zA-Z_-]+(\\.[0-9a-zA-Z_-])*")) {
- errors.put("email", "email格式不正确!");
- }
- if (!errors.isEmpty()) {
- request.setAttribute("errors", errors);
- request.getRequestDispatcher("/registerUI").forward(request, response);
- return;
- }
- User user = new User();
- user.setUserName(userName);
- user.setPassword(password);
- user.setEmail(email);
- user.setActivated(false);
- userDao.addUser(user);
- // 注册成功后,发送帐户激活链接
- EmailUtils.sendAccountActivateEmail(user);
- // 注册成功直接将当前用户保存到session中
- request.getSession().setAttribute("user", user);
- request.getRequestDispatcher("/WEB-INF/pages/registerSuccess.jsp").forward(request,response);
- }
- }
3、激活帐户的Servlet(ActivateAccountServle)
- package org.study.accountactivate.web.servlet;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.study.accountactivate.dao.UserDao;
- import org.study.accountactivate.dao.impl.UserDaoImpl;
- import org.study.accountactivate.domail.User;
- import org.study.accountactivate.util.GenerateLinkUtils;
- /**
- * 帐户激活
- */
- public class ActivateAccountServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String idValue = request.getParameter("id");
- int id = -1;
- try {
- id = Integer.parseInt(idValue);
- } catch (NumberFormatException e) {
- throw new RuntimeException("无效的用户!");
- }
- UserDao userDao = UserDaoImpl.getInstance();
- User user = userDao.findUserById(id);// 得到要激活的帐户
- user.setActivated(GenerateLinkUtils.verifyCheckcode(user, request));// 校验验证码是否和注册时发送的一致,以此设置是否激活该帐户
- userDao.updateUser(user);
- request.getSession().setAttribute("user", user);
- request.getRequestDispatcher("/accountActivateUI").forward(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
- package org.study.accountactivate.dao;
- import org.study.accountactivate.domail.User;
- public interface UserDao {
- void addUser(User user);
- void updateUser(User user);
- User findUserById(int id);
- User findUserByName(String userName);
- User findUserByNameOrEmail(String nameOrEmail);
- }
- package org.study.accountactivate.dao.impl;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.UUID;
- import org.study.accountactivate.dao.UserDao;
- import org.study.accountactivate.domail.User;
- public class UserDaoImpl implements UserDao {
- private static UserDaoImpl instance = new UserDaoImpl();
- private UserDaoImpl() {}
- public static UserDaoImpl getInstance() {
- return instance;
- }
- Map<Integer,User> users = new HashMap<Integer, User>();
- int nextId = 1;
- @Override
- public void addUser(User user) {
- user.setId(nextId++);
- user.setRandomCode(UUID.randomUUID().toString());
- users.put(user.getId(), user);
- }
- @Override
- public void updateUser(User user) {
- users.put(user.getId(), user);
- }
- @Override
- public User findUserById(int id) {
- return users.get(id);
- }
- @Override
- public User findUserByName(String userName) {
- Collection<User> userValues = users.values();
- for (Iterator<User> iterator = userValues.iterator();iterator.hasNext();) {
- User user = iterator.next();
- if (user.getUserName().equals(userName)) {
- return user;
- }
- }
- return null;
- }
- @Override
- public User findUserByNameOrEmail(String nameOrEmail) {
- Collection<User> userValues = users.values();
- for(Iterator<User> iterator = userValues.iterator();iterator.hasNext();) {
- User user = iterator.next();
- if (user.getEmail().equals(nameOrEmail) || user.getUserName().equals(nameOrEmail)) {
- return user;
- }
- }
- return null;
- }
- }
- package org.study.accountactivate.util;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Date;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Message.RecipientType;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import org.study.accountactivate.domail.User;
- public class EmailUtils {
- private static final String FROM = "xyang81@163.com";
- /**
- * 注册成功后,向用户发送帐户激活链接的邮件
- * @param user 未激活的用户
- */
- public static void sendAccountActivateEmail(User user) {
- Session session = getSession();
- MimeMessage message = new MimeMessage(session);
- try {
- message.setSubject("帐户激活邮件");
- message.setSentDate(new Date());
- message.setFrom(new InternetAddress(FROM));
- message.setRecipient(RecipientType.TO, new InternetAddress(user.getEmail()));
- message.setContent("<a href='" + GenerateLinkUtils.generateActivateLink(user)+"'>点击激活帐户</a>","text/html;charset=utf-8");
- // 发送邮件
- Transport.send(message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 发送重设密码链接的邮件
- */
- public static void sendResetPasswordEmail(User user) {
- Session session = getSession();
- MimeMessage message = new MimeMessage(session);
- try {
- message.setSubject("找回您的帐户与密码");
- message.setSentDate(new Date());
- message.setFrom(new InternetAddress(FROM));
- message.setRecipient(RecipientType.TO, new InternetAddress(user.getEmail()));
- message.setContent("要使用新的密码, 请使用以下链接启用密码:<br/><a href='" + GenerateLinkUtils.generateResetPwdLink(user) +"'>点击重新设置密码</a>","text/html;charset=utf-8");
- // 发送邮件
- Transport.send(message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Session getSession() {
- Properties props = new Properties();
- props.setProperty("mail.transport.protocol", "smtp");
- props.setProperty("mail.smtp.host", "smtp.163.com");
- props.setProperty("mail.smtp.port", "25");
- props.setProperty("mail.smtp.auth", "true");
- Session session = Session.getInstance(props, new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- String password = null;
- InputStream is = EmailUtils.class.getResourceAsStream("password.dat");
- byte[] b = new byte[1024];
- try {
- int len = is.read(b);
- password = new String(b,0,len);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return new PasswordAuthentication(FROM, password);
- }
- });
- return session;
- }
- }
6、生成帐户激活、密码重设链接的工具类(GenerateLinkUtils)
- package org.study.accountactivate.util;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import javax.servlet.ServletRequest;
- import org.study.accountactivate.domail.User;
- /**
- * 生成帐户激活、重新设置密码的链接
- */
- public class GenerateLinkUtils {
- private static final String CHECK_CODE = "checkCode";
- /**
- * 生成帐户激活链接
- */
- public static String generateActivateLink(User user) {
- return "http://localhost:8080/AccountActivate/activateAccount?id="
- + user.getId() + "&" + CHECK_CODE + "=" + generateCheckcode(user);
- }
- /**
- * 生成重设密码的链接
- */
- public static String generateResetPwdLink(User user) {
- return "http://localhost:8080/AccountActivate/resetPasswordUI?userName="
- + user.getUserName() + "&" + CHECK_CODE + "=" + generateCheckcode(user);
- }
- /**
- * 生成验证帐户的MD5校验码
- * @param user 要激活的帐户
- * @return 将用户名和密码组合后,通过md5加密后的16进制格式的字符串
- */
- public static String generateCheckcode(User user) {
- String userName = user.getUserName();
- String randomCode = user.getRandomCode();
- return md5(userName + ":" + randomCode);
- }
- /**
- * 验证校验码是否和注册时发送的验证码一致
- * @param user 要激活的帐户
- * @param checkcode 注册时发送的校验码
- * @return 如果一致返回true,否则返回false
- */
- public static boolean verifyCheckcode(User user,ServletRequest request) {
- String checkCode = request.getParameter(CHECK_CODE);
- return generateCheckcode(user).equals(checkCode);
- }
- private static String md5(String string) {
- MessageDigest md = null;
- try {
- md = MessageDigest.getInstance("md5");
- md.update(string.getBytes());
- byte[] md5Bytes = md.digest();
- return bytes2Hex(md5Bytes);
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- return null;
- }
- private static String bytes2Hex(byte[] byteArray)
- {
- StringBuffer strBuf = new StringBuffer();
- for (int i = 0; i < byteArray.length; i++)
- {
- if(byteArray[i] >= 0 && byteArray[i] < 16)
- {
- strBuf.append("0");
- }
- strBuf.append(Integer.toHexString(byteArray[i] & 0xFF));
- }
- return strBuf.toString();
- }
- }
7、实体类(User)
- package org.study.accountactivate.domail;
- public class User {
- // 编号
- private int id;
- // 用户名
- private String userName;
- // 密码
- private String password;
- private String email;
- // 是否激活
- private boolean activated;
- // 随机码(激活帐户与生成重设密码链接时使用)
- private String randomCode;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public boolean isActivated() {
- return activated;
- }
- public void setActivated(boolean activated) {
- this.activated = activated;
- }
- public String getRandomCode() {
- return randomCode;
- }
- public void setRandomCode(String randomCode) {
- this.randomCode = randomCode;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- }
功能实现步骤(忘记密码):
1、登录页面
- <form action="${pageContext.request.contextPath}/login" method="post">
- <span class="error" style="display: block;">${errors.loginError}</span>
- 用户名:<input type="text" name="userName" value="${param.userName}"><span class="error">${errors.userName}</span><br/>
- 密码:<input type="password" name="password"><span class="error">${errors.password}</span><br/>
- <input type="submit" value="登录">
- <a href="${pageContext.request.contextPath}/forgotPwdUI">忘记密码?</a>
- <a href="${pageContext.request.contextPath}/registerUI">注册</a>
- </form>
2、发送重设密码申请的页面
- <form action="${pageContext.request.contextPath}/forgotPwd" method="post">
- <span style="color: red">${requestScope.sendMailMsg}</span>
- 用户名/邮箱:<input type="text" name="userNameOrEmail" /><span style="color: red">${requestScope.errorMsg}</span><br/>
- <input type="submit" value="提交" /><a href=""></a>
- </form>
3、处理“发送重设密码链接“请求的Servlet(ForgotPwdServlet)
- package org.study.accountactivate.web.servlet;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.study.accountactivate.dao.UserDao;
- import org.study.accountactivate.dao.impl.UserDaoImpl;
- import org.study.accountactivate.domail.User;
- import org.study.accountactivate.util.EmailUtils;
- /**
- * 发送重设密码申请的链接
- */
- public class ForgotPwdServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String userNameOrEmail = request.getParameter("userNameOrEmail");
- UserDao userDao = UserDaoImpl.getInstance();
- User user = userDao.findUserByNameOrEmail(userNameOrEmail);
- if (user == null) {
- request.setAttribute("errorMsg", userNameOrEmail + ",不存在!");
- request.getRequestDispatcher("/forgotPwdUI").forward(request, response);
- return;
- }
- // 发送重新设置密码的链接
- EmailUtils.sendResetPasswordEmail(user);
- request.setAttribute("sendMailMsg", "您的申请已提交成功,请查看您的"+user.getEmail()+"邮箱。");
- request.getRequestDispatcher("/WEB-INF/pages/forgotPwdSuccess.jsp").forward(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
- <form action="${pageContext.request.contextPath}/resetPassword" method="post">
- <span class="error" style="display: block;">${errors.passwordError}</span>
- 用户名:<input type="text" name="userName" value="${userName}" readonly="readonly"/><br/>
- 新密码:<input type="password" name="newPassword" /><span class="error">${errors.newPassword }</span><br/>
- 确认新密码:<input type="password" name="newPassword2"/><span class="error">${errors.newPassword2 }</span><br/>
- <input type="submit" value="修改" />
- </form>
- package org.study.accountactivate.web.servlet;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.study.accountactivate.dao.UserDao;
- import org.study.accountactivate.dao.impl.UserDaoImpl;
- import org.study.accountactivate.domail.User;
- /**
- * 重新设置密码
- */
- public class ResetPasswordServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String userName = request.getParameter("userName");
- String newPassword = request.getParameter("newPassword");
- String newPassword2 = request.getParameter("newPassword2");
- Map<String,String> errors = new HashMap<String, String>();
- if (newPassword == null || "".equals(newPassword)) {
- errors.put("newPassword", "新密码不能为空!");
- }
- if (newPassword2 == null || "".equals(newPassword2)) {
- errors.put("newPassword2", "确认新密码不能为空!");
- }
- if (!newPassword.equals(newPassword2)) {
- errors.put("passwordError", "两次输入的密码不一致!");
- }
- if (!errors.isEmpty()) {
- request.setAttribute("errors", errors);
- request.getRequestDispatcher("/resetPasswordUI?userName=" + userName).forward(request, response);
- return;
- }
- UserDao userDao = UserDaoImpl.getInstance();
- User user = userDao.findUserByName(userName);
- user.setPassword(newPassword);
- request.getRequestDispatcher("/WEB-INF/pages/resetPasswordSuccess.jsp").forward(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
帐户激活操作流程:
1)、注册页面
2)、注册成功页面
3)、帐户未激活,登录后的界面
4)、前往邮箱中激活帐户
5)、激活成功
6)、帐户已激活,登录后的界面
忘记密码操作流程:
1)、登录页面(点击“忘记密码”链接,进入重设密码页面)
2、重设密码申请页面(输入用户名或邮箱,点击“提交”按钮)
3、重设密码申请成功页面
4、邮箱中重设密码的链接
5、重新设置密码页面
6、密码重新设置成功页面
发表评论
-
snmp
2020-04-13 11:07 429https://www.iteye.com/blog/zhan ... -
snmp
2020-04-10 21:33 566https://blog.csdn.net/qq_333141 ... -
服务器监控软件
2019-12-31 11:07 513[ERROR] org.hyperic.sigar.Sigar ... -
多数据源
2019-12-23 22:09 455https://gitee.com/baomidou/dyna ... -
mybatis多数据源
2019-12-23 18:09 449https://blog.csdn.net/qq_288042 ... -
springboot ueditor
2019-12-17 18:26 381https://blog.csdn.net/u01216982 ... -
java支持多数据源
2019-12-13 15:59 456spxcms是否支持多数据源 ... -
java日志
2019-12-10 12:01 297https://blog.csdn.net/peng_wei_ ... -
spring 多数据源
2019-12-06 09:55 432https://www.jb51.net/article/10 ... -
idea
2019-12-04 17:13 411https://blog.csdn.net/dengachao ... -
手机大屏
2019-11-30 16:02 350http://demo.demohuo.top/modals/ ... -
quarz配置
2019-11-08 11:48 462https://blog.csdn.net/BryantLmm ... -
mysql同步
2019-11-06 12:20 352https://blog.csdn.net/baidu_418 ... -
nginx配置多个服务
2019-11-04 20:35 775https://blog.csdn.net/everljs/a ... -
h5 加壳
2019-11-04 16:05 630https://jingyan.baidu.com/artic ... -
jeui 前端框架
2019-10-22 14:30 1208http://www.jemui.com/demo/ http ... -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ htt ... -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/ -
jeui 维护
2019-10-22 14:29 2http://www.jemui.com/demo/
相关推荐
Jupyter-Notebook
Jupyter-Notebook
高效甘特图模板下载-精心整理.zip
lstm Summary Framework: z = U>x, x u Uz Criteria for choosing U: • PCA: maximize projected variance • CCA: maximize projected correlation • FDA: maximize projected intraclass variance
OpenGL调试工具,适合图形开发者,包括视频开发,播放器开始以及游戏开发者。
全国行政区划shp最新图.zip
全国研究生招生与在校数据+国家线-最新.zip
Jupyter-Notebook
直播电商交流平台 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
《林黛玉进贾府》课本剧剧本
2000-2020年沪深A股上市公司融资约束程度SA指数-最新数据发布.zip
PPT模版资料,PPT模版资料
CPA注会考试最新教材资料-最新发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
内容概要:本文提供了一个完整的职工管理系统的C++源代码。通过面向对象的编程方法,实现了包括创建新职工、查询、增加、修改、删除、排序、统计以及存储和恢复职工数据在内的多个基本操作功能。该系统支持不同的用户角色(如管理员与老板),并通过菜单驱动方式让用户方便地进行相关操作。此外,还包括了错误检测机制,确保操作过程中的异常得到及时处理。 适合人群:有一定C++语言基础,特别是面向对象编程经验的程序员;企业管理人员和技术开发人员。 使用场景及目标:适用于中小型企业内部的人力资源管理部门或IT部门,用于维护员工基本信息数据库,提高工作效率。通过本项目的学习可以加深对链表、类和对象的理解。 阅读建议:建议先熟悉C++的基本语法和面向对象概念,再深入学习代码的具体实现细节。对于关键函数,比如exchange、creatilist等,应当重点关注并动手实践以加强理解。
Jupyter-Notebook
考研公共课历年真题集-最新发布.zip
Huawei-HKUST Joint Workshop on Theory for Future Wireless 15-16 September 2022 华为-香港科技大学未来无线理论联合研讨会 Speaker:Jingwen Tong
演出人员与观众疫情信息管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
《林黛玉进贾府》课本剧剧本.pdf