区块链即拼商城系统开发源码及构建(Java)

15055107162区块链开发
企业专栏
热度: 3969
运用JAVA语言开发即拼商城系统,分享源码,以及开发总结; 完整源码看下面

运用JAVA语言开发即拼商城系统,分享源码,以及开发总结;完整源码看下面

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;

  3. public class RegexMatches {

  4. public static void main(String args[]) {
  5. String str = "";
  6. String pattern = "18929564420";

  7. Pattern r = Pattern.compile(pattern);
  8. Matcher m = r.matcher(str);
  9. System.out.println(m.matches());
  10. System.out.println("即拼商城系统开发源码" + "项目完整源码找白鯨18929564420")
  11. }

  12. }

https://blog.csdn.net/weixin_44956451/article/details/108625915

即拼商城系统开发介绍:

  • 进入条件:购买任意399产品,即可成为会员,进入排位,可以分享下级
  • 排位方式:二二复制,按订单下单顺序,从上到下从左到右,自动滑落到每个点的上级队伍,凑满6个人(点位)
  • 出局及奖励:
  • 队伍里面排满7个点位,顶上的点位出局,
  • 出局可以拿到层奖励为150/点,即300RMB,第二层奖励为120/点,即480RMB,总共次出局可以拿到至少可以拿到780RMB,
  • 如果二层人员都是自己直推的则第二层奖励也按150/点计算

开发环境:一般包括数据库(mysql,sqlserver,oracle,db2),运行的中间件,即应用服务器,如tomcat,jetty,jboss,weblogic,webphere,以及运行的操作系统环境,如windows,unix(AIX,solaris),各版本的linux等。

硬件环境:如pc server,ibm、hp、SUN(已被oracle收购)的小型机等等;

开发工具:有ibm开源的eclipse及衍生的myeclipse,sun的netbeans、或者收费的好用的IntelliJ IDEA等等。

数据库

编译源文件

定义: 使用Java编译器(javac.exe)编译源文件,得到字节码文件。

格式: javac 文件名.java

运行程序

使用Java平台中的Java解释器(java.exe)来解释、执行字节码文件。

格式: java 文件名 //注意不要有添加后缀

 

前端页面

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  5. <bean id="dataSource_1" class="org.apache.commons.dbcp.BasicDataSource">
  6. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  7. <property name="url" value="jdbc:mysql://localhost:3306/test1"></property>
  8. <property name="username" value="root"></property>
  9. <property name="password" value="root"></property>
  10. <property name="maxActive" value="100"></property>
  11. <property name="maxIdle" value="30"></property>
  12. <property name="maxWait" value="500"></property>
  13. <property name="defaultAutoCommit" value="true"></property>
  14. </bean>

  15. <bean id="dataSource_2" class="org.apache.commons.dbcp.BasicDataSource">
  16. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  17. <property name="url" value="jdbc:mysql://localhost:3306/test2"></property>
  18. <property name="username" value="root"></property>
  19. <property name="password" value="root"></property>
  20. <property name="maxActive" value="100"></property>
  21. <property name="maxIdle" value="30"></property>
  22. <property name="maxWait" value="500"></property>
  23. <property name="defaultAutoCommit" value="true"></property>
  24. </bean>

  25. <bean id="dataSource_3" class="org.apache.commons.dbcp.BasicDataSource">
  26. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  27. <property name="url" value="jdbc:mysql://localhost:3306/test3"></property>
  28. <property name="username" value="root"></property>
  29. <property name="password" value="root"></property>
  30. <property name="maxActive" value="100"></property>
  31. <property name="maxIdle" value="30"></property>
  32. <property name="maxWait" value="500"></property>
  33. <property name="defaultAutoCommit" value="true"></property>
  34. </bean>

  35. <bean id="dataSource_4" class="org.apache.commons.dbcp.BasicDataSource">
  36. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  37. <property name="url" value="jdbc:mysql://localhost:3306/test4"></property>
  38. <property name="username" value="root"></property>
  39. <property name="password" value="root"></property>
  40. <property name="maxActive" value="100"></property>
  41. <property name="maxIdle" value="30"></property>
  42. <property name="maxWait" value="500"></property>
  43. <property name="defaultAutoCommit" value="true"></property>
  44. </bean>

  45. <bean id="dataSource_5" class="org.apache.commons.dbcp.BasicDataSource">
  46. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  47. <property name="url" value="jdbc:mysql://localhost:3306/test5"></property>
  48. <property name="username" value="root"></property>
  49. <property name="password" value="root"></property>
  50. <property name="maxActive" value="100"></property>
  51. <property name="maxIdle" value="30"></property>
  52. <property name="maxWait" value="500"></property>
  53. <property name="defaultAutoCommit" value="true"></property>
  54. </bean>

  55. <bean id="dataSource_6" class="org.apache.commons.dbcp.BasicDataSource">
  56. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  57. <property name="url" value="jdbc:mysql://localhost:3306/test6"></property>
  58. <property name="username" value="root"></property>
  59. <property name="password" value="root"></property>
  60. <property name="maxActive" value="100"></property>
  61. <property name="maxIdle" value="30"></property>
  62. <property name="maxWait" value="500"></property>
  63. <property name="defaultAutoCommit" value="true"></property>
  64. </bean>


  65. <bean id="dataSource_7" class="org.apache.commons.dbcp.BasicDataSource">
  66. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  67. <property name="url" value="jdbc:mysql://localhost:3306/test7"></property>
  68. <property name="username" value="root"></property>
  69. <property name="password" value="root"></property>
  70. <property name="maxActive" value="100"></property>
  71. <property name="maxIdle" value="30"></property>
  72. <property name="maxWait" value="500"></property>
  73. <property name="defaultAutoCommit" value="true"></property>
  74. </bean>

  75. <bean id="dataSource_8" class="org.apache.commons.dbcp.BasicDataSource">
  76. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  77. <property name="url" value="jdbc:mysql://localhost:3306/test8"></property>
  78. <property name="username" value="root"></property>
  79. <property name="password" value="root"></property>
  80. <property name="maxActive" value="100"></property>
  81. <property name="maxIdle" value="30"></property>
  82. <property name="maxWait" value="500"></property>
  83. <property name="defaultAutoCommit" value="true"></property>
  84. </bean>

  85. <bean id="dataSource_9" class="org.apache.commons.dbcp.BasicDataSource">
  86. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  87. <property name="url" value="jdbc:mysql://localhost:3306/test9"></property>
  88. <property name="username" value="root"></property>
  89. <property name="password" value="root"></property>
  90. <property name="maxActive" value="100"></property>
  91. <property name="maxIdle" value="30"></property>
  92. <property name="maxWait" value="500"></property>
  93. <property name="defaultAutoCommit" value="true"></property>
  94. </bean>

  95. <bean id="dataSource_10" class="org.apache.commons.dbcp.BasicDataSource">
  96. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  97. <property name="url" value="jdbc:mysql://localhost:3306/test10"></property>
  98. <property name="username" value="root"></property>
  99. <property name="password" value="root"></property>
  100. <property name="maxActive" value="100"></property>
  101. <property name="maxIdle" value="30"></property>
  102. <property name="maxWait" value="500"></property>
  103. <property name="defaultAutoCommit" value="true"></property>
  104. </bean>

  105. <bean id="dataSource_single" class="org.apache.commons.dbcp.BasicDataSource">
  106. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  107. <property name="url" value="jdbc:mysql://localhost:3306/test_single"></property>
  108. <property name="username" value="root"></property>
  109. <property name="password" value="root"></property>
  110. <property name="maxActive" value="100"></property>
  111. <property name="maxIdle" value="30"></property>
  112. <property name="maxWait" value="500"></property>
  113. <property name="defaultAutoCommit" value="true"></property>
  114. </bean>

  115. <bean id="dataSource" class="com.liuchaojun.DynamicDataSource">
  116. <property name="targetDataSources">
  117. <map>
  118. <entry key="test1" value-ref="dataSource_1"/>
  119. <entry key="test2" value-ref="dataSource_2"/>
  120. <entry key="test3" value-ref="dataSource_3"/>
  121. <entry key="test4" value-ref="dataSource_4"/>
  122. <entry key="test5" value-ref="dataSource_5"/>
  123. <entry key="test6" value-ref="dataSource_6"/>
  124. <entry key="test7" value-ref="dataSource_7"/>
  125. <entry key="test8" value-ref="dataSource_8"/>
  126. <entry key="test9" value-ref="dataSource_9"/>
  127. <entry key="test10" value-ref="dataSource_10"/>
  128. <entry key="test_single" value-ref="dataSource_single"/>
  129. </map>
  130. </property>
  131. </bean>

  132. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  133. <property name="configLocation" value="classpath:cfg/mybatis.xml"></property>
  134. <property name="dataSource" ref="dataSource" />
  135. </bean>

  136. <bean id="iDemo" class="org.mybatis.spring.mapper.MapperFactoryBean">
  137. <property name="mapperInterface" value="com.liuchaojun.IDemo"></property>
  138. <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
  139. </bean>

  140. <bean id="iDemoService" class="com.liuchaojun.DemoServiceImpl">
  141. <property name="idemo" ref="iDemo"></property>
  142. </bean>

  143. </beans>

后端代码

  1. /**
  2. *
  3. */
  4. package com.liuchaojun;

  5. import java.lang.reflect.Method;

  6. /**
  7. * 数据库访问任务定义。将每一个对数据库访问的请求包装为一个任务对象,放到任务管理中, 然后等待任务执行完成,取出执行结果。
  8. *
  9. * @author liuchaojun
  10. */
  11. public class DBTask implements Runnable {
  12. // 操作数据库标识,用于指定访问的数据库。与spring配置文件中的数据动态数据源定义一致。
  13. private final String dbKey;

  14. // mybatis数据库访问对象
  15. private final Object dbAccessObject;

  16. // mysbatis数据库访问方法名称,用于反射调用
  17. private final String methodName;

  18. // 存储可变参数的值
  19. private final Object[] paraArray;

  20. // 存储可变参数类型
  21. @SuppressWarnings("rawtypes")
  22. private final Class[] paraClassArray;

  23. // 数据库操作结果。查询操作返回查询结果; 插入、删除、修改操作返回null。
  24. private Object operateResult;

  25. // 操作数据库抛出的异常信息
  26. private Exception exception;

  27. // 标识任务是否已经执行
  28. private boolean finish;

  29. /**
  30. * 构造函数
  31. *
  32. * @param dbKey
  33. * 数据库标识
  34. * @param dbAccessObject
  35. * 数据库访问对象
  36. * @param methodName
  37. * 数据库访问方法名称
  38. * @param paraArray
  39. * 参数列表
  40. */
  41. public DBTask(final String dbKey, final Object dbAccessObject,
  42. final String methodName, final Object... paraArray) {
  43. this.dbKey = dbKey;
  44. this.dbAccessObject = dbAccessObject;
  45. this.methodName = methodName;
  46. this.paraArray = paraArray;
  47. finish = false;
  48. exception = null;

  49. paraClassArray = new Class[paraArray.length];
  50. for (int index = 0; index < paraArray.length; ++index) {
  51. paraClassArray[index] = paraArray[index].getClass();
  52. }

  53. operateResult = null;
  54. }

  55. /**
  56. *
  57. * 任务执行函数
  58. *
  59. */
  60. @Override
  61. public void run() {
  62. try {
  63. DBIndetifier.setDBKey(dbKey);
  64. Method method = dbAccessObject.getClass().getMethod(methodName,
  65. paraClassArray);

  66. // 查询操作返回查询结果; 插入、删除、修改操作返回null
  67. operateResult = method.invoke(dbAccessObject, paraArray);
  68. } catch (Exception e) {
  69. exception = e;
  70. e.printStackTrace();
  71. }

  72. finish = true;
  73. }

  74. /**
  75. *
  76. * 返回操作结果。查询操作返回查询结果; 插入、删除、修改操作返回null
  77. *
  78. * @return 操作结果
  79. */
  80. public Object getRetValue() {
  81. return operateResult;
  82. }

  83. /**
  84. * 抛出数据库操作异常
  85. *
  86. * @return 异常
  87. */
  88. public Exception getException() {
  89. return exception;
  90. }

  91. /**
  92. *
  93. * 返回任务是否已执行
  94. *
  95. * @return 标记
  96. */
  97. public boolean isFinish() {
  98. return finish;
  99. }
  100. }
  101. package com.liuchaojun;

  102. import java.text.SimpleDateFormat;
  103. import java.util.ArrayList;
  104. import java.util.Date;
  105. import java.util.List;

  106. import org.springframework.context.ApplicationContext;
  107. import org.springframework.context.support.ClassPathXmlApplicationContext;

  108. /**
  109. * @author liuchaojun
  110. * @date 2018-3-20 上午10:09:12
  111. */
  112. public class TestMain {
  113. /**
  114. * 测试代码
  115. *
  116. * @param args
  117. */
  118. public static void main(String[] args) {
  119. ApplicationContext context = new ClassPathXmlApplicationContext(
  120. "cfg/spring.xml");
  121. IDemoService service1 = (IDemoService) context.getBean("iDemoService");

  122. // 创建任务对象
  123. DBTask task1 = new DBTask("test1", service1, "selectGroup");
  124. DBTask task2 = new DBTask("test2", service1, "selectGroup");
  125. DBTask task3 = new DBTask("test3", service1, "selectGroup");
  126. DBTask task4 = new DBTask("test4", service1, "selectGroup");
  127. DBTask task5 = new DBTask("test5", service1, "selectGroup");
  128. DBTask task6 = new DBTask("test6", service1, "selectGroup");
  129. DBTask task7 = new DBTask("test7", service1, "selectGroup");
  130. DBTask task8 = new DBTask("test8", service1, "selectGroup");
  131. DBTask task9 = new DBTask("test9", service1, "selectGroup");
  132. DBTask task10 = new DBTask("test10", service1, "selectGroup");
  133. DBTask task_single = new DBTask("test_single", service1, "selectGroup");

  134. // 单个线程直接查询单表
  135. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  136. DBTaskMgr.instance().excute(task_single);
  137. System.out.println("开始查询test_single表中的200万数据:"+ format.format(new Date()));
  138. while (true) {
  139. if (!task_single.isFinish()) {
  140. try {
  141. Thread.sleep(1000);
  142. } catch (InterruptedException e) {
  143. e.printStackTrace();
  144. }
  145. } else {
  146. break;
  147. }
  148. }
  149. System.out.println("结束查询test_single表中的200万数据结束:"+ format.format(new Date()));

  150. // 多个线程查询多个数据库中的表数据
  151. List<DBTask> taskList = new ArrayList<DBTask>();
  152. taskList.add(task1);
  153. taskList.add(task2);
  154. taskList.add(task3);
  155. taskList.add(task4);
  156. taskList.add(task5);
  157. taskList.add(task6);
  158. taskList.add(task7);
  159. taskList.add(task8);
  160. taskList.add(task9);
  161. taskList.add(task10);
  162. for (DBTask task : taskList) {
  163. DBTaskMgr.instance().excute(task);
  164. }
  165. System.out.println("开始查询10个数据库中的t_test_table表中的20万数据表:"+ format.format(new Date()));
  166. while (true) {
  167. int success = 0;
  168. for (DBTask task : taskList) {
  169. if (!task.isFinish()) { // 运行线程run方法这里为false,没有运行择true
  170. continue;
  171. } else {
  172. ++success;
  173. }
  174. }
  175. if (success == 10) {
  176. break;
  177. }
  178. }
  179. System.out.println("结束查询10个数据库中的t_test_table表中的20万数据表:"+ format.format(new Date()));
  180. }
  181. }

总结

分布式架构基本思想:

分拆(系统分拆,子系统分拆,存储分拆,计算分拆);

并发(多线程);

缓存;在线VS离线;同步VS异步;Push VS Pull;批量;

重读轻写VS重写轻读;读写分离(对数据库而言);动静分离(对前端界面而言);冷热分离(对数据备份而言);

限流;服务熔断与降级;CAP理论(C:数据一致性;A:稳定性和性能;P:分区容错性);

最终一致性。

数据库

声明:本文为入驻“火星号”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。 未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:作为区块链信息平台,本站所提供的资讯信息不代表任何投资暗示,本站所发布文章仅代表个人观点,与火星财经官方立场无关。鉴于中国尚未出台数字资产相关政策及法规,请中国大陆用户谨慎进行数字货币投资。
语音技术由科大讯飞提供
关键字:数据库GT

评论0