提交一些常见问题

This commit is contained in:
qiurunze 2018-09-18 23:21:28 +08:00
parent 08741e946a
commit 133946bdff
3 changed files with 312 additions and 182 deletions

View File

@ -2,7 +2,9 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="59bd24de-7908-4982-927f-6d236db7e416" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/target/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@ -18,14 +20,15 @@
<session id="-262413793">
<usages-collector id="statistics.lifecycle.project">
<counts>
<entry key="project.closed" value="6" />
<entry key="project.closed" value="7" />
<entry key="project.open.time.1" value="1" />
<entry key="project.open.time.10" value="3" />
<entry key="project.open.time.2" value="1" />
<entry key="project.open.time.6" value="1" />
<entry key="project.open.time.7" value="1" />
<entry key="project.open.time.8" value="3" />
<entry key="project.open.time.9" value="1" />
<entry key="project.opened" value="10" />
<entry key="project.opened" value="11" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.open">
@ -33,40 +36,41 @@
<entry key="DemoController" value="1" />
<entry key="class" value="22" />
<entry key="finanacial" value="1" />
<entry key="htm" value="10" />
<entry key="htm" value="12" />
<entry key="html" value="12" />
<entry key="java" value="163" />
<entry key="java" value="179" />
<entry key="js" value="1" />
<entry key="md" value="1" />
<entry key="md" value="2" />
<entry key="properties" value="6" />
<entry key="sql" value="1" />
<entry key="ts" value="1" />
<entry key="txt" value="9" />
<entry key="xml" value="3" />
<entry key="xml" value="4" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.types.open">
<counts>
<entry key="CLASS" value="22" />
<entry key="HTML" value="22" />
<entry key="JAVA" value="163" />
<entry key="HTML" value="24" />
<entry key="JAVA" value="179" />
<entry key="JavaScript" value="1" />
<entry key="Markdown" value="1" />
<entry key="Markdown" value="2" />
<entry key="PLAIN_TEXT" value="10" />
<entry key="Properties" value="6" />
<entry key="SQL" value="1" />
<entry key="TypeScript" value="1" />
<entry key="UML" value="1" />
<entry key="XML" value="3" />
<entry key="XML" value="4" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.edit">
<counts>
<entry key="class" value="1" />
<entry key="dummy" value="18" />
<entry key="htm" value="1" />
<entry key="html" value="7" />
<entry key="java" value="6929" />
<entry key="md" value="210" />
<entry key="java" value="6990" />
<entry key="md" value="414" />
<entry key="properties" value="55" />
<entry key="regexp" value="11" />
<entry key="txt" value="615" />
@ -76,9 +80,9 @@
<usages-collector id="statistics.file.types.edit">
<counts>
<entry key="CLASS" value="1" />
<entry key="HTML" value="7" />
<entry key="JAVA" value="6929" />
<entry key="Markdown" value="210" />
<entry key="HTML" value="8" />
<entry key="JAVA" value="6990" />
<entry key="Markdown" value="414" />
<entry key="PLAIN_TEXT" value="633" />
<entry key="Properties" value="55" />
<entry key="RegExp" value="11" />
@ -89,72 +93,69 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/GoodsController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1122">
<caret line="74" selection-start-line="74" selection-end-line="74" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/LoginController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
<caret line="18" column="13" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="726">
<caret line="59" column="54" selection-start-line="59" selection-start-column="54" selection-end-line="59" selection-end-column="54" />
<state relative-caret-position="-130">
<caret line="89" column="13" selection-start-line="84" selection-start-column="4" selection-end-line="89" selection-end-column="13" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/service/MiaoshaService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="704">
<caret line="48" selection-start-line="48" selection-end-line="48" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1958">
<caret line="103" column="19" selection-start-line="103" selection-start-column="19" selection-end-line="103" selection-end-column="19" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
<entry file="file://$PROJECT_DIR$/src/main/resources/static/order_detail.htm">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-584">
<caret line="12" lean-forward="true" selection-start-line="12" selection-end-line="12" />
<state relative-caret-position="332">
<caret line="18" column="42" selection-start-line="18" selection-start-column="42" selection-end-line="18" selection-end-column="42" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/miaosha.sql">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="2" column="16" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/BasePrefix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="12" column="5" lean-forward="true" selection-start-line="12" selection-start-column="5" selection-end-line="12" selection-end-column="5" />
<folding>
<element signature="e#333#334#0" expanded="true" />
<element signature="e#362#363#0" expanded="true" />
<element signature="e#410#411#0" expanded="true" />
<element signature="e#457#458#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/GoodsKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="9" column="64" selection-start-line="9" selection-start-column="64" selection-end-line="9" selection-end-column="64" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/resources/static/goods_detail.htm">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1474">
<caret line="67" column="89" selection-start-line="67" selection-start-column="89" selection-end-line="67" selection-end-column="89" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
@ -170,7 +171,7 @@
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="814">
<caret line="52" column="34" selection-start-line="52" selection-start-column="34" selection-end-line="52" selection-end-column="34" />
<caret line="52" column="42" selection-start-line="52" selection-start-column="42" selection-end-line="52" selection-end-column="42" />
</state>
</provider>
</entry>
@ -178,8 +179,14 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="4" column="43" selection-start-line="4" selection-start-column="43" selection-end-line="4" selection-end-column="43" />
<state relative-caret-position="176">
<caret line="11" column="23" selection-start-line="11" selection-start-column="23" selection-end-line="11" selection-end-column="23" />
<folding>
<element signature="e#178#179#0" expanded="true" />
<element signature="e#213#214#0" expanded="true" />
<element signature="e#272#273#0" expanded="true" />
<element signature="e#324#325#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -199,6 +206,8 @@
<find>getByToken</find>
<find>商品已经秒杀完毕</find>
<find>refreshVerifyCode</find>
<find>path</find>
<find>/path</find>
</findStrings>
</component>
<component name="Git.Settings">
@ -207,7 +216,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/DemoController.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/Md5Utils/MD5Utils.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/vo/LoginVO.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/service/UserService.java" />
@ -246,7 +254,6 @@
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisService.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/service/GoodsService.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java" />
<option value="$PROJECT_DIR$/src/main/resources/application.properties" />
@ -256,6 +263,8 @@
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessKey.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/UserContext.java" />
<option value="$PROJECT_DIR$/src/main/resources/static/goods_detail.htm" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisService.java" />
<option value="$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java" />
<option value="$PROJECT_DIR$/README.md" />
</list>
@ -310,6 +319,78 @@
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="miaosha" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="miaosha" type="462c0819:PsiDirectoryNode" />
<item name="access" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="miaosha" type="462c0819:PsiDirectoryNode" />
<item name="controller" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="miaosha" type="462c0819:PsiDirectoryNode" />
<item name="redis" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="miaosha_1" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
<item name="static" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="miaosha_1" type="b2602c69:ProjectViewProjectNode" />
<item name="Scratches and Consoles" type="1a2a3e82:ScratchProjectViewPane$MyProjectNode" />
@ -329,7 +410,7 @@
<property name="RequestMappingsPanelWidth2" value="75" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1537111194354" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1537284032538" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
@ -440,12 +521,13 @@
<workItem from="1536918768483" duration="15837000" />
<workItem from="1536975289539" duration="26867000" />
<workItem from="1537060950052" duration="25966000" />
<workItem from="1537148890283" duration="3488000" />
<workItem from="1537148890283" duration="12735000" />
<workItem from="1537236248667" duration="3148000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="90423000" />
<option name="totallyTimeSpent" value="102818000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
@ -622,32 +704,6 @@
</expressions>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/resources/templates/order_detail.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-594" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="110">
<caret line="5" column="33" selection-start-line="5" selection-start-column="33" selection-end-line="5" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/vo/GoodsDetailVo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="8" column="19" selection-start-line="8" selection-start-column="19" selection-end-line="8" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/templates/goods_list.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="704">
<caret line="32" column="12" selection-start-line="32" selection-start-column="12" selection-end-line="32" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/vo/OrderDetailVo.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
@ -655,13 +711,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/eekQMainApplication.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="286">
<caret line="14" lean-forward="true" selection-start-line="14" selection-end-line="14" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/4.3.12.RELEASE/spring-aop-4.3.12.RELEASE.jar!/org/springframework/aop/framework/ReflectiveMethodInvocation.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="199">
@ -704,11 +753,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/static/order_detail.htm">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1619" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/application.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="217">
@ -772,20 +816,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/GoodsKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="9" column="64" selection-start-line="9" selection-start-column="64" selection-end-line="9" selection-end-column="64" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="64" column="26" selection-start-line="64" selection-start-column="26" selection-end-line="64" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
@ -793,20 +823,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/static/goods_detail.htm">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="541">
<caret line="151" column="12" selection-start-line="151" selection-start-column="11" selection-end-line="151" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/BasePrefix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="273">
<caret line="14" column="11" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/dao/OrderDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="352">
@ -899,30 +915,6 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/readme.txt" />
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/GoodsController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1122">
<caret line="74" selection-start-line="74" selection-end-line="74" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/LoginController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
<caret line="18" column="13" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="726">
<caret line="59" column="54" selection-start-line="59" selection-start-column="54" selection-end-line="59" selection-end-column="54" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/service/MiaoshaService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="704">
@ -937,15 +929,74 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1958">
<caret line="103" column="19" selection-start-line="103" selection-start-column="19" selection-end-line="103" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/miaosha.sql">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/eekQMainApplication.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="10" column="5" lean-forward="true" selection-start-line="8" selection-start-column="2" selection-end-line="10" selection-end-column="5" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1650">
<caret line="13" lean-forward="true" selection-start-line="13" selection-end-line="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="132">
<caret line="7" column="13" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/LoginController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-88">
<caret line="18" column="13" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/GoodsController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1122">
<caret line="74" selection-start-line="74" selection-end-line="74" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/miaosha.sql">
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="13" column="10" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/RedisService.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="748">
<caret line="43" column="33" selection-start-line="43" selection-start-column="33" selection-end-line="43" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/static/order_detail.htm">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/static/goods_detail.htm">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1474">
<caret line="67" column="89" selection-start-line="67" selection-start-column="89" selection-end-line="67" selection-end-column="89" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessLimit.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
@ -956,21 +1007,61 @@
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="814">
<caret line="52" column="34" selection-start-line="52" selection-start-column="34" selection-end-line="52" selection-end-column="34" />
<caret line="52" column="42" selection-start-line="52" selection-start-column="42" selection-end-line="52" selection-end-column="42" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/access/AccessKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="88">
<caret line="4" column="43" selection-start-line="4" selection-start-column="43" selection-end-line="4" selection-end-column="43" />
<state relative-caret-position="176">
<caret line="11" column="23" selection-start-line="11" selection-start-column="23" selection-end-line="11" selection-end-column="23" />
<folding>
<element signature="e#178#179#0" expanded="true" />
<element signature="e#213#214#0" expanded="true" />
<element signature="e#272#273#0" expanded="true" />
<element signature="e#324#325#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="2" column="16" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/BasePrefix.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="264">
<caret line="12" column="5" lean-forward="true" selection-start-line="12" selection-start-column="5" selection-end-line="12" selection-end-column="5" />
<folding>
<element signature="e#333#334#0" expanded="true" />
<element signature="e#362#363#0" expanded="true" />
<element signature="e#410#411#0" expanded="true" />
<element signature="e#457#458#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/redis/GoodsKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="9" column="64" selection-start-line="9" selection-start-column="64" selection-end-line="9" selection-end-column="64" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-130">
<caret line="89" column="13" selection-start-line="84" selection-start-column="4" selection-end-line="89" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-584">
<caret line="12" lean-forward="true" selection-start-line="12" selection-end-line="12" />
<state relative-caret-position="332">
<caret line="18" column="42" selection-start-line="18" selection-start-column="42" selection-end-line="18" selection-end-column="42" />
</state>
</provider>
</entry>

View File

@ -16,24 +16,23 @@
#### 需注意几点:
1.如何解决卖超问题
### <font color=#0099ff size=3 >1.如何解决卖超问题<br></font><br>
① sql加上判断如果防止数据变为负数<br>
② 数据库加唯一索引防止用户重复购买<br>
③ redis预减库存减少数据库访问 内存标记减少redis访问 请求先入队列缓冲异步下单增强用户体验
### <font color=#0099ff size=3 >如何解决分布式session<br></font><br>
2.如何解决分布式session<br>
① 生成一个随机的uuid一类的写回到cookie中<br>
② redis 内存写入<br>
③ 下一个页面拿到uuid 内存取对象
### <font color=#0099ff size=3 >3.如何优雅解决接口防刷限流<br></font><br>
3.如何优雅解决接口防刷限流 <br>
>
如果有缓存的话 这个功能实现起来就和简单,在一个用户访问接口的时候我们把访问次数写到缓存中,在加上一个有效期。
通过拦截器. 做一个注解 @AccessLimit 然后封装这个注解,可以有效的设置每次访问多少次,有效时间是否需要登录!
4.通用缓存key的封装采用什么设计模式<br>
### <font color=#0099ff size=3 >4.通用缓存key的封装采用什么设计模式<br></font><br>
模板模式的优点<br>
①具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。<br>
@ -41,11 +40,12 @@
③存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。<br>
缺点: 每个不同的实现都需要定义一个子类,会导致类的个数增加,系统更加庞大
5.LVS , tomcat(apr) , keepalive 高可用 --待更新<br>
6.限流算法 令牌桶,漏桶算法--待更新
### <font color=#0099ff size=3 >5.LVS , tomcat(apr) , keepalive 高可用 --待更新</font><br>
7.Nginx优化前端缓存
### <font color=#0099ff size=3 >6.限流算法 令牌桶,漏桶算法--待更新</font><br>
### <font color=#0099ff size=3 >7.Nginx优化前端缓存</font><br>
①并发优化<br>
②keepAlive长链接nginx,tomcat默认没有配置长链接<br>
③压缩优化.配置缓存<br>
@ -55,5 +55,44 @@
![整体流程](http://i2.bvimg.com/601558/23f54a389b2b23e8.png)
### <font color=#0099ff size=3 >8.服务降级--服务熔断(过载保护)</font><br>
自动降级: 超时.失败次数,故障,限流<br>
人工降级秒杀双11<br>
9.所有秒杀相关的接口比如:秒杀,获取秒杀地址,获取秒杀结果,获取秒杀验证码都需要加上<br>
秒杀是否开始结束的判断
### <font color=#0099ff size=3 >10.redis的库存如何与数据库的库存保持一致?</font><br>
redis的数量不是库存,他的作用仅仅只是为了阻挡多余的请求透穿到DB起到一个保护的作用<br>因为秒杀的商品有限比如10个让1万个请求区访问DB是没有意义的因为最多也就只能10<br>
个请求下单成功,所有这个是一个伪命题,我们是不需要保持一致的。<br>
### <font color=#0099ff size=3 >11.redis 预减成功DB扣减库存失败怎么办</font><br>
其实我们可以不用太在意,对用户而言,秒杀不中是正常现象,秒杀中才是意外,单个用户秒杀中<br>
本来就是小概率事件,出现这种情况对于用户而言没有任何影响<br>
2.对于商户而言,本来就是为了活动拉流量人气的,卖不完还可以省一部分费用,但是活动还参与了,也就没有了任何影响<br>
3.对网站而言,最重要的是体验,只要网站不崩溃,对用户而言没有任何影响<br>
### <font color=#0099ff size=3 >12.为什么redis数量会减少为负数</font><br>
//预见库存
long stock = redisService.decr(GoodsKey.getMiaoshaGoodsStock,""+goodsId) ;
if(stock <0){
localOverMap.put(goodsId, true);
return Result.error(CodeMsg.MIAO_SHA_OVER);
假如redis的数量为1,这个时候同时过来100个请求大家一起执行decr数量就会减少成-99这个是正常的
### <font color=#0099ff size=3 >13.为什么要单独维护一个秒杀结束标志?</font><br>
1.前提所有的秒杀相关的接口都要加上活动是否结束的标志,如果结束就直接返回,包括轮寻的接口防止一直轮寻<br>
2.管理后台也可以手动的更改这个标志,防止出现活动开始以后就没办法结束这种意外的事件
### <font color=#0099ff size=3 >14.redis挂掉了怎么办</font><br>
1.具体我会有时间更新关于redis的知识
### <font color=#0099ff size=3 >15.rabbitmq如何做到消息不重复不丢失即使服务器重启</font><br>
1.exchange持久化2.queue持久化3.发送消息设置MessageDeliveryMode.persisent这个也是默认的行为4.手动确认

View File

@ -82,12 +82,12 @@ public class MiaoshaController implements InitializingBean {
if(over) {
return Result.error(CodeMsg.MIAO_SHA_OVER);
}
//预见库存
long stock = redisService.decr(GoodsKey.getMiaoshaGoodsStock,""+goodsId) ;
if(stock <0){
localOverMap.put(goodsId, true);
return Result.error(CodeMsg.MIAO_SHA_OVER);
}
//预见库存
long stock = redisService.decr(GoodsKey.getMiaoshaGoodsStock,""+goodsId) ;
if(stock <0){
localOverMap.put(goodsId, true);
return Result.error(CodeMsg.MIAO_SHA_OVER);
}
MiaoshaMessage mm = new MiaoshaMessage();
mm.setGoodsId(goodsId);
mm.setUser(user);