SSH项目整合基本步骤

一、项目简介

  该项目是由Spring4、Struts2 以及 Hibernate4 整合搭建的 web 项目,把Action分开编写,便于查看,使用JSTL、EL标签。

二、项目目录

三、项目所需Jar包

  ①Spring:

  aopalliance-1.0.jar
  aspectjweaver.jar
  spring-aop-4.3.0.RELEASE.jar
  spring-aspects-4.3.0.RELEASE.jar
  spring-beans-4.3.0.RELEASE.jar
  spring-context-4.3.0.RELEASE.jar
  spring-core-4.3.0.RELEASE.jar
  spring-expression-4.3.0.RELEASE.jar
  spring-jdbc-4.3.0.RELEASE.jar
  spring-orm-4.3.0.RELEASE.jar
  spring-tx-4.3.0.RELEASE.jar
  spring-web-4.3.0.RELEASE.jar

  ②Struts2:

  asm-5.0.2.jar
  asm-commons-5.0.2.jar
  asm-tree-5.0.2.jar
  commons-fileupload-1.3.1.jar
  commons-io-2.2.jar
  commons-lang3-3.2.jar
  freemarker-2.3.19.jar
  ognl-3.0.6.jar
  struts2-core-2.3.20.jar
  struts2-spring-plugin-2.3.20.jar
  xwork-core-2.3.20.jar

  ③Hibernate:

  antlr-2.7.7.jar
  dom4j-1.6.1.jar
  hibernate-commons-annotations-4.0.5.Final.jar
  hibernate-core-4.3.11.Final.jar
  hibernate-jpa-2.1-api-1.0.0.Final.jar
  jandex-1.1.0.Final.jar
  jboss-logging-3.1.3.GA.jar
  jboss-logging-annotations-1.2.0.Beta1.jar
  jboss-transaction-api_1.2_spec-1.0.0.Final.jar

  ④C3P0:

  c3p0-0.9.5.1.jar
  mchange-commons-java-0.2.10.jar
  mysql-connector-java-5.1.8-bin.jar

  ⑤JSTL:

  taglibs-standard-compat-1.2.5.jar
  taglibs-standard-impl-1.2.5.jar
  taglibs-standard-jstlel-1.2.5.jar
  taglibs-standard-spec-1.2.5.jar

  ⑥log4j:

  log4j-1.2.17.jar

四、项目源码

1、db.properties

 db.username=root
db.password=root
db.driverClass=com.mysql.jdbc.Driver
db.jdbcUrl=jdbc:mysql://localhost:3306/ssh_01
db.initialPoolSize=2
db.maxPoolSize=20

2、log4j.properties

 # Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
# Start logging
log4j.logger.cn.com.zfc.model.UserMapper=TRACE

3、applicationContext.xml(可以把通用的配置抽取出来,便于管理)

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <!-- 注册数据库链接文件 -->
<context:property-placeholder location="classpath:db.properties" /> <!-- 注册C3P0 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${db.username}"></property>
<property name="password" value="${db.password}"></property>
<property name="driverClass" value="${db.driverClass}"></property>
<property name="jdbcUrl" value="${db.jdbcUrl}"></property>
<property name="initialPoolSize" value="${db.initialPoolSize}"></property>
<property name="maxPoolSize" value="${db.maxPoolSize}"></property>
</bean> <!-- 注册 LocalSessionFactoryBean,这种配置可以省略 Hibernate 的主配置文件 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 配置 hibernate 映射文件的位置及名称,可以直接写目录 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:cn/com/zfc/ssh/entity</value>
</list>
</property>
</bean> <!-- 注册事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- 注册通知,是对 Service 层的方法起作用 -->
<tx:advice transaction-manager="transactionManager" id="txadvice">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="find*" read-only="true" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice> <!-- 注册切面 -->
<aop:config>
<!-- Service 层 -->
<aop:pointcut expression="execution(* *..service.*.*(..))"
id="txPoint" />
<aop:advisor advice-ref="txadvice" pointcut-ref="txPoint" />
</aop:config> <!-- 注册 User -->
<!-- Dao -->
<bean id="userDao" class="cn.com.zfc.ssh.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- Service -->
<bean id="userService" class="cn.com.zfc.ssh.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean> <!-- Action -->
<!-- 跳转到 User 添加的视图的Action -->
<bean id="userAddViewAction" class="cn.com.zfc.ssh.action.UserAddViewAction"></bean> <!-- User 添加的 Action -->
<bean id="userAddAction" class="cn.com.zfc.ssh.action.UserAddAction">
<property name="userService" ref="userService"></property>
</bean> <!-- User 查询全部的 Action -->
<bean id="usersFindAction" class="cn.com.zfc.ssh.action.UsersFindAction">
<property name="userService" ref="userService"></property>
</bean> <!-- User 删除的 Action -->
<bean id="userRemoveAction" class="cn.com.zfc.ssh.action.UserRemoveAction">
<property name="userService" ref="userService"></property>
</bean> <!-- 跳转到 User 修改视图的 Action -->
<bean id="userModifyViewAction" class="cn.com.zfc.ssh.action.UserModifyViewAction">
<property name="userService" ref="userService"></property>
</bean> <!-- User 修改的 Action -->
<bean id="userModifyAction" class="cn.com.zfc.ssh.action.UserModifyAction">
<property name="userService" ref="userService"></property>
</bean> </beans>

4、struts.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 声明对象是由 Spring 创建的 -->
<constant name="struts.objectFactory" value="spring"></constant> <!-- 定义包,有关 User 的配置 -->
<package name="userPackage" extends="struts-default" namespace="/">
<!-- User 添加 -->
<action name="userAddViewAction" class="userAddViewAction"
method="userAddView">
<result>/user_add.jsp</result>
</action> <!-- 添加页面 -->
<action name="userAddAction" class="userAddAction" method="addUser">
<!-- 直接跳转到查询全部 User 的Action -->
<result type="redirectAction">/usersFindAction</result>
</action> <!-- Users 查询 -->
<action name="usersFindAction" class="usersFindAction" method="findUsers">
<result>/users_query.jsp</result>
</action> <!-- User 删除 -->
<action name="userRemoveAction" class="userRemoveAction"
method="removeUser">
<result type="redirectAction">/usersFindAction</result>
</action>
<!-- User 修改页面 -->
<action name="userModifyViewAction" class="userModifyViewAction"
method="modifyUserView">
<result>/user-modify.jsp</result>
</action> <!-- User 修改 -->
<action name="userModifyAction" class="userModifyAction"
method="modifyUser">
<result type="redirectAction">/usersFindAction</result>
</action> </package>
</struts>

5、web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>SSH</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

6、User.java

 package cn.com.zfc.ssh.entity;

 public class User {
private Integer id;
private String userName;
private int userAge; public User() {
super();
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public int getUserAge() {
return userAge;
} public void setUserAge(int userAge) {
this.userAge = userAge;
} @Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", userAge=" + userAge + "]";
} }

7、User.hbm.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-6-9 23:41:28 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping package="cn.com.zfc.ssh.entity">
<class name="User" table="USER_INFO">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<!-- 主键生成策略 -->
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="USER_NAME" />
</property>
<property name="userAge" type="int">
<column name="USER_AGE" />
</property>
</class>
</hibernate-mapping>

8、UserDao.java

 package cn.com.zfc.ssh.dao;

 import java.util.List;

 import cn.com.zfc.ssh.entity.User;

 public interface UserDao {
void insertUser(User user); void deleteUser(int id); void updateUser(User user); User queryUserById(int id); List<User> queryUsers();
}

9、UserDaoImpl.java

 package cn.com.zfc.ssh.dao.impl;

 import java.util.List;

 import org.hibernate.SessionFactory;

 import cn.com.zfc.ssh.dao.UserDao;
import cn.com.zfc.ssh.entity.User;
/**
*
* @title UserDaoImpl
* @describe User 相关的 Dao 层操作,Session 要与当前线程绑定
* @author zfc
* @date 2017年6月10日下午3:31:49
*/
public class UserDaoImpl implements UserDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} @Override
public void insertUser(User user) {
sessionFactory.getCurrentSession().save(user);
} @Override
public void deleteUser(int id) {
User user = (User) sessionFactory.getCurrentSession().get(User.class, id);
sessionFactory.getCurrentSession().delete(user); } @Override
public void updateUser(User user) {
sessionFactory.getCurrentSession().update(user); } @Override
public List<User> queryUsers() {
String hql = "From User";
return sessionFactory.getCurrentSession().createQuery(hql).list();
} @Override
public User queryUserById(int id) {
return (User) sessionFactory.getCurrentSession().get(User.class, id);
}
}

10、UserService.java

 package cn.com.zfc.ssh.service;

 import java.util.List;

 import cn.com.zfc.ssh.entity.User;

 public interface UserService {
void addUser(User user); void removeUser(int id); void modifyUser(User user); List<User> findUsers(); User findUserById(int id);
}

11、UserServiceImpl.java

 package cn.com.zfc.ssh.service.impl;

 import java.util.List;

 import cn.com.zfc.ssh.dao.UserDao;
import cn.com.zfc.ssh.entity.User;
import cn.com.zfc.ssh.service.UserService;
/**
*
* @title UserServiceImpl
* @describe 业务逻辑实现
* @author zfc
* @date 2017年6月11日下午8:16:50
*/
public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} @Override
public void addUser(User user) {
userDao.insertUser(user); } @Override
public void removeUser(int id) {
userDao.deleteUser(id); } @Override
public void modifyUser(User user) {
userDao.updateUser(user); } @Override
public List<User> findUsers() {
return userDao.queryUsers();
} @Override
public User findUserById(int id) {
return userDao.queryUserById(id);
} }

12、UserAddViewAction.java

 package cn.com.zfc.ssh.action;
/**
*
* @title UserAddViewAction
* @describe User 添加的视图的 Action
* @author zfc
* @date 2017年6月10日下午3:29:15
*/
public class UserAddViewAction { public String userAddView() {
return "success";
}
}

13、UserAddAction.java

 package cn.com.zfc.ssh.action;

 import cn.com.zfc.ssh.entity.User;
import cn.com.zfc.ssh.service.UserService;
/**
*
* @title UserAddAction
* @describe User 添加的Action
* @author zfc
* @date 2017年6月10日下午3:28:57
*/
public class UserAddAction { private UserService userService;
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public void setUserService(UserService userService) {
this.userService = userService;
} public String addUser() {
// System.out.println("user:" + user);
userService.addUser(user);
return "success";
} }

14、UsersFindAction.java

 package cn.com.zfc.ssh.action;

 import java.util.List;
import java.util.Map; import org.apache.struts2.interceptor.RequestAware; import cn.com.zfc.ssh.entity.User;
import cn.com.zfc.ssh.service.UserService;
/**
*
* @title UsersFindAction
* @describe User 查询全部的 Action
* @author zfc
* @date 2017年6月10日下午3:31:07
*/
public class UsersFindAction implements RequestAware { private UserService userService;
private Map<String, Object> request; public void setUserService(UserService userService) {
this.userService = userService;
} @Override
public void setRequest(Map<String, Object> request) {
this.request = request;
} public String findUsers() {
// System.out.println("查询全部Users Action");
List<User> users = userService.findUsers();
request.put("users", users);
// System.out.println(userService.findUsers());
return "success";
} }

15、UserRemoveAction.java

 package cn.com.zfc.ssh.action;

 import cn.com.zfc.ssh.service.UserService;
/**
*
* @title UserRemoveAction
* @describe User 删除的 Action
* @author zfc
* @date 2017年6月10日下午3:30:50
*/
public class UserRemoveAction {
private Integer id; private UserService userService; public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String removeUser() {
userService.removeUser(id);
return "success";
}
}

16、UserModifyViewAction.java

 package cn.com.zfc.ssh.action;

 import java.util.Map;

 import org.apache.struts2.interceptor.RequestAware;

 import cn.com.zfc.ssh.entity.User;
import cn.com.zfc.ssh.service.UserService; /**
*
* @title UserModifyViewAction
* @describe 跳转 User 修改视图的 Action
* @author zfc
* @date 2017年6月10日下午3:29:56
*/
public class UserModifyViewAction implements RequestAware { private Map<String, Object> request;
private UserService userService;
private Integer id; public void setId(Integer id) {
this.id = id;
} public void setUserService(UserService userService) {
this.userService = userService;
} @Override
public void setRequest(Map<String, Object> request) {
this.request = request;
} public String modifyUserView() {
User user = userService.findUserById(id);
// System.out.println(user);
request.put("user", user);
return "success";
} }

17、UserModifyAction.java

 package cn.com.zfc.ssh.action;
import cn.com.zfc.ssh.entity.User;
import cn.com.zfc.ssh.service.UserService;
/**
*
* @title UserModifyAction
* @describe User 修改的Action
* @author zfc
* @date 2017年6月10日下午3:29:40
*/
public class UserModifyAction { private User user;
private UserService userService; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} public String modifyUser() {
System.out.println(user);
userService.modifyUser(user);
return "success";
} }

18、index.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SSH_01</title>
</head>
<body>
<a href="usersFindAction">Users Query</a>
<hr />
<a href="userAddViewAction">User Add</a>
</body>
</html>

19、user_add.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户添加</title>
</head>
<body>
<form action="userAddAction" method="post">
UserName:<input type="text" name="user.userName">
<hr />
UserAge:<input type="text" name="user.userAge">
<hr />
<input type="submit" value="ADD" />
</form>
<hr />
<a href="usersFindAction">Users Query</a>
</body>
</html>

20、users_query.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户查询</title>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="1" width="50%">
<thead>
<tr>
<th>ID</th>
<th>UserName</th>
<th>UserAge</th>
<th>Operate</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.userName}</td>
<td>${user.userAge}</td>
<td><a href="userModifyViewAction?id=${user.id}">Update</a>&amp;<a
href="userRemoveAction?id=${user.id}">Remove</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<hr />
<a href="userAddViewAction">User Add</a>
</body>
</html>

21、user_modify.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="userModifyAction" method="post">
${user}
<!-- 隐藏域,用来保存当前 User 的 id -->
<input type="hidden" name="user.id" value="${user.id}" />
<hr />
UserName:<input type="text" name="user.userName" value="${user.userName}">
<hr />
UserAge:<input type="text" name="user.userAge" value="${user.userAge}">
<hr />
<input type="submit" value="Modify" />
</form>
<hr />
<a href="usersFindAction">Users Query</a>
</body>
</html>

五、数据库

 六、程序运行效果图

SSH项目整合基本步骤的更多相关文章

  1. FreeMarker与SSH项目整合流程

    FreeMarker与SSH项目整合流程 学习了SSH之后,一般为了减少数据库的压力,会使用FreeMarker来生成静态HTML页面.下面简单说一下FreeMarker与SSH项目的整合全过程~ 前 ...

  2. spring4+hibernate4+struts2项目整合的步骤及注意事项

    首先,在整合框架之前,我们需要知道Spring框架在普通Java project和Web project中是略有不同的. 这个不同地方就在于创建IOC容器实例的方式不同,在普通java工程中,可以在m ...

  3. SSH项目整合教学Eclipse搭建SSH(Struts2+Spring3+Hibernate3)

    这篇博文的目的 尝试搭建一个完整的SSH框架项目. 给以后的自己,也给别人一个参考. 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hiberna ...

  4. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  5. SSH 项目整合

    SSH整合:spring + springmvc + hibernate 1.1 生成Maven项目:ar_ssh 1.2 添加jar包:pom.xml 与ssm相比,主要添加了spring与hibe ...

  6. SSH项目整合

    其实框架的整合无非就是jar包和配置文件: struts2.spring.Hibernate这三个框架,分清楚什么作用就好配置了. jar包我们就不说了,这里看下配置文件吧: struts.xml: ...

  7. 搭建一个SSH项目框架的步骤

    1.导入jar包(38个) 2.配置文件 applicationContext,xml (beans.xml) (数据源.LocalSessionFactoryBean.事务管理器.事务通知.AOP切 ...

  8. 使用eclipse整合ssh项目的例子--lljf(1)

    最近向自己单独做一个基于ssh的项目,来预习和巩固自己的Java基础.找了一个实际生活中的定做衣服的例子来做一做,放到博客上给大家一起分享学习,后边会持续更新项目编写时候遇到的困难和使用的技术等. 1 ...

  9. 【转载】SSH整合使用步骤

    SSH整合使用步骤 由于刚开始学习SSH,其中的配置比较多,为了下次能够快速的进行配置,将SSH整合的过程记录下来,以便下次查阅. 软件环境:MyEclipse 9.0.Struts2.2.Sprin ...

随机推荐

  1. Java NIO 之 Channel(通道)

    历史回顾: Java NIO 概览 Java NIO 之 Buffer(缓冲区) 其他高赞文章: 面试中关于Redis的问题看这篇就够了 一文轻松搞懂redis集群原理及搭建与使用 一 Channel ...

  2. mysql -> 启动&多实例_03

    常用的连接方式: 套接字: mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock Tcp/Ip: mysql -uroot -p123 -h ...

  3. 转载:Github项目解析(七)-->防止按钮重复点击

    不错的东西,记录下... http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/qq_23547831/article/deta ...

  4. 19 Error handling and Go go语言错误处理

    Error handling and Go go语言错误处理 12 July 2011 Introduction If you have written any Go code you have pr ...

  5. mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by

    在mysql 工具 搜索或者插入数据时报下面错误: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause ...

  6. WebApi Owin SelfHost OAuth2 - client_credentials

    参考:http://neverc.cnblogs.com/p/4970996.html

  7. 练习题 --- 10种Xpath定位

    写出10种不同的Xpath定位语法

  8. 洛谷P2149 Elaxia的路线

    传送门啦 分析: 我最开始想的是跑两遍最短路,然后记录一下最短路走了哪些边(如果有两条最短路就选经过边多的),打上标记.两边之后找两次都标记的边有多少就行了. 但...我并没有实现出来. 最后让我们看 ...

  9. opencv(0)安装与配置

    1.windows下 1.1 exe安装 windows下可以安装opencv的exe版本,已经编译好了,很省事. 到https://opencv.org/releases.html下载需要的open ...

  10. hihocoder1636 Pangu and Stones(区间DP(石子合并变形))

    题目链接:http://hihocoder.com/problemset/problem/1636 题目大意:有n堆石头,每次只能合并l~r堆,每次合并的花费是要合并的石子的重量,问你合并n堆石子的最 ...