mirror of
https://github.com/qiurunze123/miaosha.git
synced 2023-11-19 22:41:03 +08:00
提交一些常见问题
This commit is contained in:
parent
08741e946a
commit
133946bdff
|
@ -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/GeekQMainApplication.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/GeekQMainApplication.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>
|
||||
|
|
57
README.md
57
README.md
|
@ -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.手动确认
|
||||
|
||||
|
||||
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user