diff --git a/404.html b/404.html index 71e2c022a..077a78295 100644 --- a/404.html +++ b/404.html @@ -1,21 +1,14 @@ 页面没有找到 | The Blog - + - + -
文章总览 - 61
2023
IDEA常用快捷键
IDEA常用快捷键
\ No newline at end of file diff --git a/baidu_verify_codeva-ozeNvsdkMB.html b/baidu_verify_codeva-ozeNvsdkMB.html deleted file mode 100644 index 4610f084c..000000000 --- a/baidu_verify_codeva-ozeNvsdkMB.html +++ /dev/null @@ -1 +0,0 @@ -c85a2e02fb0d070b1c8547a14e94a998 \ No newline at end of file diff --git a/baidusitemap.xml b/baidusitemap.xml index 3ccda01f4..8e217c338 100644 --- a/baidusitemap.xml +++ b/baidusitemap.xml @@ -1,247 +1,243 @@ - https://jasonsgong.gitee.io/posts/46317.html + https://jasonsgong.github.io/posts/46317.html 2024-04-02 - https://jasonsgong.gitee.io/posts/14438.html + https://jasonsgong.github.io/posts/14438.html 2024-04-02 - https://jasonsgong.gitee.io/posts/18459.html + https://jasonsgong.github.io/posts/18459.html 2024-04-02 - https://jasonsgong.gitee.io/posts/63724.html + https://jasonsgong.github.io/posts/63724.html 2024-04-02 - https://jasonsgong.gitee.io/posts/40445.html + https://jasonsgong.github.io/posts/40445.html 2024-04-02 - https://jasonsgong.gitee.io/posts/26768.html + https://jasonsgong.github.io/posts/26768.html 2024-04-02 - https://jasonsgong.gitee.io/posts/29985.html + https://jasonsgong.github.io/posts/29985.html 2024-04-02 - https://jasonsgong.gitee.io/posts/5293.html + https://jasonsgong.github.io/posts/5293.html 2024-02-03 - https://jasonsgong.gitee.io/posts/40733.html + https://jasonsgong.github.io/posts/40733.html 2024-01-13 - https://jasonsgong.gitee.io/posts/1727.html + https://jasonsgong.github.io/posts/1727.html 2024-01-13 - https://jasonsgong.gitee.io/posts/56106.html + https://jasonsgong.github.io/posts/56106.html 2024-01-06 - https://jasonsgong.gitee.io/posts/8957.html + https://jasonsgong.github.io/posts/8957.html 2024-01-05 - https://jasonsgong.gitee.io/posts/1416.html + https://jasonsgong.github.io/posts/1416.html 2024-01-05 - https://jasonsgong.gitee.io/posts/20683.html + https://jasonsgong.github.io/posts/20683.html 2024-01-01 - https://jasonsgong.gitee.io/posts/5727.html + https://jasonsgong.github.io/posts/5727.html 2023-12-23 - https://jasonsgong.gitee.io/posts/64695.html + https://jasonsgong.github.io/posts/64695.html 2023-12-09 - https://jasonsgong.gitee.io/posts/19306.html + https://jasonsgong.github.io/posts/19306.html 2023-12-09 - https://jasonsgong.gitee.io/posts/58456.html + https://jasonsgong.github.io/posts/58456.html 2023-12-08 - https://jasonsgong.gitee.io/posts/28101.html + https://jasonsgong.github.io/posts/28101.html 2023-12-03 - https://jasonsgong.gitee.io/posts/12367.html + https://jasonsgong.github.io/posts/12367.html 2023-12-03 - https://jasonsgong.gitee.io/posts/46054.html + https://jasonsgong.github.io/posts/46054.html 2023-11-30 - https://jasonsgong.gitee.io/posts/50465.html - 2023-11-30 - - - https://jasonsgong.gitee.io/posts/62429.html + https://jasonsgong.github.io/posts/62429.html 2023-11-15 - https://jasonsgong.gitee.io/posts/47407.html + https://jasonsgong.github.io/posts/47407.html 2023-11-03 - https://jasonsgong.gitee.io/posts/39654.html + https://jasonsgong.github.io/posts/39654.html 2023-10-22 - https://jasonsgong.gitee.io/posts/29250.html + https://jasonsgong.github.io/posts/29250.html 2023-09-23 - https://jasonsgong.gitee.io/posts/62439.html + https://jasonsgong.github.io/posts/62439.html 2023-09-23 - https://jasonsgong.gitee.io/posts/29367.html + https://jasonsgong.github.io/posts/50908.html 2023-09-11 - https://jasonsgong.gitee.io/posts/50908.html + https://jasonsgong.github.io/posts/29367.html 2023-09-11 - https://jasonsgong.gitee.io/posts/28118.html + https://jasonsgong.github.io/posts/60685.html 2023-09-11 - https://jasonsgong.gitee.io/posts/60685.html + https://jasonsgong.github.io/posts/28118.html 2023-09-11 - https://jasonsgong.gitee.io/posts/21883.html + https://jasonsgong.github.io/posts/21883.html 2023-09-11 - https://jasonsgong.gitee.io/posts/17259.html + https://jasonsgong.github.io/posts/22654.html 2023-09-11 - https://jasonsgong.gitee.io/posts/24606.html + https://jasonsgong.github.io/posts/24606.html 2023-09-11 - https://jasonsgong.gitee.io/posts/53306.html + https://jasonsgong.github.io/posts/53306.html 2023-09-11 - https://jasonsgong.gitee.io/posts/73.html + https://jasonsgong.github.io/posts/17259.html 2023-09-11 - https://jasonsgong.gitee.io/posts/22654.html + https://jasonsgong.github.io/posts/73.html 2023-09-11 - https://jasonsgong.gitee.io/posts/56742.html + https://jasonsgong.github.io/posts/56742.html 2023-09-11 - https://jasonsgong.gitee.io/posts/32246.html + https://jasonsgong.github.io/posts/32246.html 2023-09-11 - https://jasonsgong.gitee.io/posts/38823.html + https://jasonsgong.github.io/posts/38823.html 2023-09-11 - https://jasonsgong.gitee.io/posts/855.html + https://jasonsgong.github.io/posts/64205.html 2023-09-11 - https://jasonsgong.gitee.io/posts/60684.html + https://jasonsgong.github.io/posts/855.html 2023-09-11 - https://jasonsgong.gitee.io/posts/12929.html + https://jasonsgong.github.io/posts/12929.html 2023-09-11 - https://jasonsgong.gitee.io/posts/64205.html + https://jasonsgong.github.io/posts/60684.html 2023-09-11 - https://jasonsgong.gitee.io/posts/13813.html + https://jasonsgong.github.io/posts/13813.html 2023-09-11 - https://jasonsgong.gitee.io/posts/54835.html + https://jasonsgong.github.io/posts/54835.html 2023-09-11 - https://jasonsgong.gitee.io/posts/30127.html + https://jasonsgong.github.io/posts/30127.html 2023-09-11 - https://jasonsgong.gitee.io/posts/13579.html + https://jasonsgong.github.io/posts/6932.html 2023-09-11 - https://jasonsgong.gitee.io/posts/432.html + https://jasonsgong.github.io/posts/13579.html 2023-09-11 - https://jasonsgong.gitee.io/posts/6932.html + https://jasonsgong.github.io/posts/432.html 2023-09-11 - https://jasonsgong.gitee.io/posts/36397.html + https://jasonsgong.github.io/posts/47003.html 2023-09-11 - https://jasonsgong.gitee.io/posts/47003.html + https://jasonsgong.github.io/posts/51007.html 2023-09-11 - https://jasonsgong.gitee.io/posts/51007.html + https://jasonsgong.github.io/posts/36397.html 2023-09-11 - https://jasonsgong.gitee.io/posts/45572.html + https://jasonsgong.github.io/posts/63333.html 2023-09-11 - https://jasonsgong.gitee.io/posts/63333.html + https://jasonsgong.github.io/posts/45572.html 2023-09-11 - https://jasonsgong.gitee.io/posts/35630.html + https://jasonsgong.github.io/posts/35630.html 2023-09-11 - https://jasonsgong.gitee.io/posts/27166.html + https://jasonsgong.github.io/posts/27166.html 2023-09-11 - https://jasonsgong.gitee.io/posts/31385.html + https://jasonsgong.github.io/posts/31385.html 2023-09-11 - https://jasonsgong.gitee.io/posts/6319.html + https://jasonsgong.github.io/posts/6319.html 2023-09-11 - https://jasonsgong.gitee.io/posts/11844.html + https://jasonsgong.github.io/posts/11844.html 2023-09-11 - https://jasonsgong.gitee.io/posts/45726.html + https://jasonsgong.github.io/posts/45726.html 2023-09-11 \ No newline at end of file diff --git a/categories/index.html b/categories/index.html index fda2b0147..566432d05 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,23 +1,16 @@ 分类 | The Blog - + - + -
IDEA常用快捷键
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
\ No newline at end of file diff --git a/pdf/MySQL-基础篇.pdf b/pdf/MySQL-基础篇.pdf deleted file mode 100644 index bd1da38ec..000000000 Binary files a/pdf/MySQL-基础篇.pdf and /dev/null differ diff --git a/pdf/MySQL-运维篇.pdf b/pdf/MySQL-运维篇.pdf deleted file mode 100644 index 5b7773142..000000000 Binary files a/pdf/MySQL-运维篇.pdf and /dev/null differ diff --git a/pdf/MySQL-进阶篇.pdf b/pdf/MySQL-进阶篇.pdf deleted file mode 100644 index a612b3519..000000000 Binary files a/pdf/MySQL-进阶篇.pdf and /dev/null differ diff --git a/posts/11844.html b/posts/11844.html index 0f154d304..2f47fd871 100644 --- a/posts/11844.html +++ b/posts/11844.html @@ -1,24 +1,17 @@ 验证码服务 | The Blog - + - + -

验证码服务

1.使用邮件发送验证码

1.1 引入依赖

坑点:有时候遇到验证码发不出去的情况,要调整依赖的版本,更新为高版本的依赖

+ })(window)

验证码服务

1.使用邮件发送验证码

1.1 引入依赖

坑点:有时候遇到验证码发不出去的情况,要调整依赖的版本,更新为高版本的依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--javaMail-->
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>
@@ -206,7 +199,7 @@

2.使用阿里云的短信服务

阿里云的短信服务不面向个人用户,无法使用,但是使用的基本逻辑和使用邮箱类似

3.Token字符串生成的工具类(JWT)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.atguigu.commonutils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
* @author helen
* @since 2019/10/16
*/
public class JwtUtils {

/**
* 设置token的过期时间
*/
public static final long EXPIRE = 1000 * 60 * 60 * 24;
/**
* 密钥
*/
public static final String APP_SECRET = "ukc8BDbRigUDaY6pZFfWus2jZWLPHO";


/**
* 生成token字符串
*/
public static String getJwtToken(String id, String nickname){

String JwtToken = Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setSubject("guli-user")
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
.claim("id", id)
.claim("nickname", nickname)
.signWith(SignatureAlgorithm.HS256, APP_SECRET)
.compact();

return JwtToken;
}

/**
* 判断token是否存在与有效
*/
public static boolean checkToken(String jwtToken) {
if(StringUtils.isEmpty(jwtToken)) return false;
try {
Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}

/**
* 判断token是否存在与有效
*/
public static boolean checkToken(HttpServletRequest request) {
try {
String jwtToken = request.getHeader("token");
if(StringUtils.isEmpty(jwtToken)) return false;
Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}

/**
* 根据token获取会员id
*/
public static String getMemberIdByJwtToken(HttpServletRequest request) {
String jwtToken = request.getHeader("token");
if(StringUtils.isEmpty(jwtToken)) return "";
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
Claims claims = claimsJws.getBody();
return (String)claims.get("id");
}
}

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

特殊符号大全

中文字符

零壹贰叁肆伍陆柒捌玖拾佰仟万亿吉太拍艾分厘毫微卍卐卄巜弍弎弐朤氺曱甴囍兀々〆のぁ〡〢〣〤〥〦〧〨〩㊎㊍㊌㊋㊏㊚㊛㊐㊊㊣㊤㊥㊦㊧㊨㊒㊫㊑㊓㊔㊕㊖㊗㊘㊜㊝㊞㊟㊠㊡㊢㊩㊪㊬㊭㊮㊯㊰㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉

+ })(window)

特殊符号大全

中文字符

零壹贰叁肆伍陆柒捌玖拾佰仟万亿吉太拍艾分厘毫微卍卐卄巜弍弎弐朤氺曱甴囍兀々〆のぁ〡〢〣〤〥〦〧〨〩㊎㊍㊌㊋㊏㊚㊛㊐㊊㊣㊤㊥㊦㊧㊨㊒㊫㊑㊓㊔㊕㊖㊗㊘㊜㊝㊞㊟㊠㊡㊢㊩㊪㊬㊭㊮㊯㊰㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉

常用特殊符号

❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©®™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉°✿ϟ☃☂✄¢€£∞✫★½✡×↙↘○◑⊕◣◢︼【】┅┇☽☾✚〓▂▃▄▅▆▇█▉▊▋▌▍▎▏↔↕☽☾の•▸◂▴▾┈┊①②③④⑤⑥⑦⑧⑨⑩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍿▓♨♛❖♓☪✙┉┋☹☺☻تヅツッシÜϡﭢ™℠℗©®♥❤❥❣❦❧♡۵웃유ღ♋♂♀☿☼☀☁☂☄☾☽❄☃☈⊙☉℃℉❅✺ϟ☇♤♧♡♢♠♣♥♦☜☞☝✍☚☛☟✌✽✾✿❁❃❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴✵✶✷✸✹✺✻✼❄❅❆❇❈❉❊†☨✞✝☥☦☓☩☯☧☬☸✡♁✙♆。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑•¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴々﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+=<__-\ˇ~﹉﹊()〈〉‹›﹛﹜『』〖〗[]《》〔〕{}「」【】︵︷︿︹︽_﹁﹃︻︶︸﹀︺︾ˉ﹂﹄︼☩☨☦✞✛✜✝✙✠✚†‡◉○◌◍◎●◐◑◒◓◔◕◖◗❂☢⊗⊙◘◙◍⅟½⅓⅕⅙⅛⅔⅖⅚⅜¾⅗⅝⅞⅘≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩⊰⊱⋛⋚∫∬∭∮∯∰∱∲∳%℅‰‱㊣㊎㊍㊌㊋㊏㊐㊊㊚㊛㊤㊥㊦㊧㊨㊒㊞㊑㊒㊓㊔㊕㊖㊗㊘㊜㊝㊟㊠㊡㊢㊩㊪㊫㊬㊭㊮㊯㊰㊙㉿囍♔♕♖♗♘♙♚♛♜♝♞♟ℂℍℕℙℚℝℤℬℰℯℱℊℋℎℐℒℓℳℴ℘ℛℭ℮ℌℑℜℨ♪♫♩♬♭♮♯°øⒶ☮✌☪✡☭✯卐✐✎✏✑✒✍✉✁✂✃✄✆✉☎☏➟➡➢➣➤➥➦➧➨➚➘➙➛➜➝➞➸♐➲➳⏎➴➵➶➷➸➹➺➻➼➽←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟↠↡↢↣↤↥↦↧↨➫➬➩➪➭➮➯➱↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿ┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬◤◥◄►▶◀◣◢▲▼◥▸◂▴▾△▽▷◁⊿▻◅▵▿▹◃❏❐❑❒▀▁▂▃▄▅▆▇▉▊▋█▌▍▎▏▐░▒▓▔▕■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯㋀㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼㏽㏾㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍘☰☲☱☴☵☶☳☷☯

十二星座符号

@@ -240,7 +233,7 @@

表情符号

😀😁😂😃😄😅😆😉😊😋😎😍😘😗😙😚☺😇😐😑😶😏😣😥😮😯😪😫😴😌😛😜😝😒😓😔😕😲😷😖😞😟😤😢😭😦😧😨😬😰😱😳😵😡😠😈👿👹👺💀👻👽👦👧👨👩👴👵👶👱👮👲👳👷👸💂🎅👰👼💆💇🙍🙎🙅🙆💁🙋🙇🙌🙏👤👥🚶🏃👯💃👫👬👭💏💑👪💪👈👉☝👆👇✌✋👌👍👎✊👊👋👏👐✍👣👀👂👃👅👄💋👓👔👕👖👗👘👙👚👛👜👝🎒💼👞👟👠👡👢👑👒🎩🎓💄💅💍🌂🙈🙉🙊🐵🐒🐶🐕🐩🐺🐱😺😸😹😻😼😽🙀😿😾🐈🐯🐅🐆🐴🐎🐮🐂🐃🐄🐷🐖🐗🐽🐏🐑🐐🐪🐫🐘🐭🐁🐀🐹🐰🐇🐻🐨🐼🐾🐔🐓🐣🐤🐥🐦🐧🐸🐊🐢🐍🐲🐉🐳🐋🐬🐟🐠🐡🐙🐚🐌🐛🐜🐝🐞🦋💐🌸💮🌹🌺🌻🌼🌷🌱🌲🌳🌴🌵🌾🌿🍀🍁🍂🍃🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜☀🌝🌞⭐🌟🌠☁⛅☔⚡❄🔥💧🌊💩🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍅🍆🌽🍄🌰🍞🍖🍗🍔🍟🍕🍳🍲🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯🍼☕🍵🍶🍷🍸🍹🍺🍻🍴🎪🎭🎨🎰🚣🛀🎫🏆⚽⚾🏀🏈🏉🎾🎱🎳⛳🎣🎽🎿🏂🏄🏇🏊🚴🚵🎯🎮🎲🎷🎸🎺🎻🎬👾🌋🗻🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽⛪⛲🌁🌃🌆🌇🌉🌌🎠🎡🎢🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚚🚛🚜🚲⛽🚨🚥🚦🚧⚓⛵🚤🚢✈💺🚁🚟🚠🚡🚀🎑🗿🛂🛃🛄🛅💌💎🔪💈🚪🚽🚿🛁⌛⏳⌚⏰🎈🎉🎊🎎🎏🎐🎀🎁📯📻📱📲☎📞📟📠🔋🔌💻💽💾💿📀🎥📺📷📹📼🔍🔎🔬🔭📡💡🔦🏮📔📕📖📗📘📙📚📓📃📜📄📰📑🔖💰💴💵💶💷💸💳✉📧📨📩📤📥📦📫📪📬📭📮✏✒📝📁📂📅📆📇📈📉📊📋📌📍📎📏📐✂🔒🔓🔏🔐🔑🔨🔫🔧🔩🔗💉💊🚬🔮🚩🎌💦💨💣☠♠♥♦♣🀄🎴🔇🔈🔉🔊📢📣💤💢💬💭♨🌀🔔🔕✡✝🔯📛🔰🔱⭕✅☑✔✖❌❎➕➖➗➰➿〽✳✴❇‼⁉❓❔❕❗©®™🎦🔅🔆💯🔠🔡🔢🔣🔤🅰🆎🅱🆑🆒🆓ℹ🆔Ⓜ🆕🆖🅾🆗🅿🆘🆙🆚🈁🈂🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗㊙🈺🈵▪▫◻◼◽◾⬛⬜🔶🔷🔸🔹🔺🔻💠🔲🔳⚪⚫🔴🔵♈♉♊♋♌♍♎♏♐♑♒♓⛎💘❤💓💔💕💖💗💙💚💛💜💝💞💟❣🌿🚧💒☎📟💽⬆↗➡↘⬇↙⬅↖↕↔↩↪⤴⤵🔃🔄🔙🔚🔛🔜🔝🔀🔁🔂▶⏩◀⏪🔼⏫🔽⏬📱📶📳📴♻🏧🚮🚰♿🚹🚺🚻🚼🚾⚠🚸⛔🚫🚳🚭🚯🚱🚷🔞

汉语字典为您提供特殊符号大全,网名符号,特殊符号☎☏✄☪☣☢☠♨« »큐〓㊚㊛囍㊒㊖☑✔☐☒✘㍿☯☰☷♥♠♤❤♂♀★☆☯✡※卍卐■□◆◇▲△▂▃▄▅▆▇█●○◎⊕⊙㊣↑↓←→↖↗↘↙㎡№§※≡✿ⓛⓞⓥⓔ∞∑√øπ×÷±∫∵∴⊥∥∠€¥℃™©®①❶㊀㈠⑴⒈Ⓐⓐ⒜

转载于: https://shijianchuo.net/tesufuhao

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

SpringBoot整合MongoDB

1.介绍

​ MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

+ })(window)

SpringBoot整合MongoDB

1.介绍

​ MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

适用场景
1、网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2、缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由M ongo搭建的持久化缓存层可以避免下层的数据源过载。
3、大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵, 在此之前,很多时候程序员往往会选择传统的文件进行存储。
4、高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对Map Reduce弓摩的内置支持。
5、用于对象及 JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储 及查询。
不适用场合
1、高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
2、传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

中文文档:https://docs.mongoing.com/

2.入门

​ spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足

@@ -217,7 +210,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

力扣(LeetCode)算法刷题

刷题网站: 力扣 视频: AcWing

+ })(window)

力扣(LeetCode)算法刷题

刷题网站: 力扣 视频: AcWing

一.数组

A.简单

1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

示例 1:

1
2
3
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
@@ -262,7 +255,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

SpringBoot整合Redis

1.Redis的介绍

​ Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

+ })(window)

SpringBoot整合Redis

1.Redis的介绍

​ Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

中文文档:https://www.redis.net.cn/

2.入门

2.1 引入依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- spring2.X集成redis所需common-pool2-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
@@ -283,7 +276,7 @@

key的生成规则如下图:

image-20230414152035347

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

压力测试与性能监控

一.压力测试

性能指标

+ })(window)

压力测试与性能监控

一.压力测试

性能指标

  • 响应时间(Response Time: RT)响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。

  • @@ -277,7 +270,7 @@

    安装成功之后显示如下

    image-20230709160932416

    image-20230709170626946

    -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

常见问题和细节知识

一.常见问题

1.前后端时间格式的问题

配置文件中设置时间的格式和时区

+ })(window)

常见问题和细节知识

一.常见问题

1.前后端时间格式的问题

配置文件中设置时间的格式和时区

image-20230506130238222

2.MyBatis分页插件统计总记录数total失效的问题

检查一下分页插件的配置 选择以下正确的分页插件配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.atguigu.common.config.mp;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* mp的分页插件
*/
@Configuration
@MapperScan("com.atguigu.auth.mapper")
public class MybatisPlusConfig {

/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}

@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
@@ -233,7 +226,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

MySQL5.7安装教程

1.下载的地址

下载之后直接解压使用(下载之前看电脑上有没有mysql的服务,如果有先删除),解压的文件路径最好不要有中文

+ })(window)

MySQL5.7安装教程

1.下载的地址

下载之后直接解压使用(下载之前看电脑上有没有mysql的服务,如果有先删除),解压的文件路径最好不要有中文

查看的方式

1
Win + R   输入    services.msc  回车打开   找是否有一个名为mysqld的服务
@@ -226,7 +219,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

代码注释模板

完整的模板大全:佛祖保佑永无BUG、神兽护体、注释图案 · OBKoro1/koro1FileHeader Wiki (github.com)

+ })(window)

代码注释模板

完整的模板大全:佛祖保佑永无BUG、神兽护体、注释图案 · OBKoro1/koro1FileHeader Wiki (github.com)

在线生成代码注释模板:http://patorjk.com/software/taag/

image-20240113150435680

1
2
3
4
5
6
7

██╗ █████╗ ███████╗ ██████╗ ███╗ ██╗███████╗ ██████╗ ██████╗ ███╗ ██╗ ██████╗ ██████╗ ██╗████████╗███████╗███████╗ ██╗ ██████╗
██║██╔══██╗██╔════╝██╔═══██╗████╗ ██║██╔════╝██╔════╝ ██╔═══██╗████╗ ██║██╔════╝ ██╔════╝ ██║╚══██╔══╝██╔════╝██╔════╝ ██║██╔═══██╗
██║███████║███████╗██║ ██║██╔██╗ ██║███████╗██║ ███╗██║ ██║██╔██╗ ██║██║ ███╗ ██║ ███╗██║ ██║ █████╗ █████╗ ██║██║ ██║
██ ██║██╔══██║╚════██║██║ ██║██║╚██╗██║╚════██║██║ ██║██║ ██║██║╚██╗██║██║ ██║ ██║ ██║██║ ██║ ██╔══╝ ██╔══╝ ██║██║ ██║
╚█████╔╝██║ ██║███████║╚██████╔╝██║ ╚████║███████║╚██████╔╝╚██████╔╝██║ ╚████║╚██████╔╝██╗╚██████╔╝██║ ██║ ███████╗███████╗██╗██║╚██████╔╝
╚════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═════╝
@@ -222,7 +215,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

Git命令速查

安装教程

+ })(window)

Git命令速查

安装教程

官网下载:https://git-scm.com/downloads

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#以下的操作在下载安装完毕之后进行
#1.鼠标在桌面右键 选择Git Bash Here 打开控制台

#2.配置用户名和邮箱
git config --global user.name "用户名" #随意
git config --global user.email "邮箱" #自己的邮箱

#3.配置SSH免密连接
#生成密钥
ssh-keygen -t rsa -C "在码云上注册的邮箱地址" #连续三次回车
#查看密钥并复制公钥的内容
cat ~/.ssh/id_rsa.pub

#4.将密钥的复制到码云的SSH公钥中
#4.1添加公钥 公钥名随意 公钥内容就是上面复制的内容

#5.测试
ssh -T git@gitee.com

常用命令

image-20230520173824247

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

Docker容器化技术

img

+ })(window)

Docker容器化技术

img

1.Docker概念

• Docker 是一个开源的应用容器引擎

• 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)

• Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。

@@ -225,10 +218,10 @@

5.Docker 应用部署

Docker中常见的应用安装部署,详细内容请参考下面文章

-

Linux中开发环境的搭建 | The Blog (gitee.io)

+

Linux中开发环境的搭建 | The Blog (gitee.io)

-

开发环境的搭建 | The Blog (gitee.io)

+

开发环境的搭建 | The Blog (gitee.io)

5.1、部署MySQL

  1. 搜索mysql镜像
  2. @@ -355,7 +348,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

Linux中开发环境的搭建

一.Linux操作系统的安装与配置

软件:VMware 、Linux镜像文件
VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

+ })(window)

Linux中开发环境的搭建

一.Linux操作系统的安装与配置

软件:VMware 、Linux镜像文件
VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

二.配置Java环境

2.1.删除自带的JDK

1
2
3
4
5
6
#查看系统是否有java环境
java -version
# 查找Linux中已有的java环境的相关文件
rpm -qa |grep java
# 执行命令 删除上面的java文件
rpm -e --nodeps +上面查找出来的文件
@@ -198,7 +191,7 @@ -

三.使用Docker安装常用软件

Docker容器化技术 | The Blog (gitee.io)

+

三.使用Docker安装常用软件

Docker容器化技术 | The Blog (gitee.io)

3.1 Docker的安装

3.1.1 安装Docker

1
2
3
4
5
6
7
8
9
10
# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
@@ -245,7 +238,7 @@

测试访问:http://虚拟机ip:8848/nacos

image-20230811105925843

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

Linux设置静态IP

1.查看IP的状态

1
2
#查看是否为静态ip
ip addr
+ })(window)

Linux设置静态IP

1.查看IP的状态

1
2
#查看是否为静态ip
ip addr

如图所示的是动态IP,我们要配置静态IP

image-20230511230406172

@@ -204,7 +197,7 @@

image-20230511234154523

虚拟机ping外部也可以ping通

image-20230511235621228

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

ElasticSearch

官网: https://www.elastic.co/cn/elasticsearch/

+ })(window)

ElasticSearch

官网: https://www.elastic.co/cn/elasticsearch/

简介

​ Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

一.基本概念

1.Index(索引)

动词:相当于mysql的insert

@@ -396,7 +389,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

MybatisX插件的使用

代码生成器 根据数据库表生成Mapper接口,Mapper配置文件,service

+ })(window)

MybatisX插件的使用

代码生成器 根据数据库表生成Mapper接口,Mapper配置文件,service

注解 mybatisPlus提供的注解

公共字段的自动填充 逻辑删除 乐观锁 雪花算法生成主键

image-20230321181437910

image-20230321181452909

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

Maven配置文件settings.xml

用途:更换IDEA中Maven配置文件实现不下载配置maven的阿里云镜像

+ })(window)

Maven配置文件settings.xml

用途:更换IDEA中Maven配置文件实现不下载配置maven的阿里云镜像

设置本地仓库磁盘存储位置

1.在C盘的根目录下创建如下的文件夹C:\maven\maven-repository

2.任选下面的两个配置文件中的一个放在C:\maven目录下 配置文件的名字为 settings.xml

3.在IDEA中配置本地仓库的位置和配置文件的位置

@@ -202,7 +195,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

数据校验

​ 在前端接收数据和前端向后端传递数据的时候,都需要进行数据校验,避免传入错误的信息,比如在需要传入一个非空的值时,传入了一个空字符串,需要传入邮箱号码的时候,传入的非邮箱格式的数据。同时在写接口时经常要写效验请求参数逻辑,这时候我们会常用做法是写大量的 if 与 if else 类似这样的代码,大量if-else代码看起来比较混乱,降低了代码的可读性。

+ })(window)

数据校验

​ 在前端接收数据和前端向后端传递数据的时候,都需要进行数据校验,避免传入错误的信息,比如在需要传入一个非空的值时,传入了一个空字符串,需要传入邮箱号码的时候,传入的非邮箱格式的数据。同时在写接口时经常要写效验请求参数逻辑,这时候我们会常用做法是写大量的 if 与 if else 类似这样的代码,大量if-else代码看起来比较混乱,降低了代码的可读性。

一.JSR303数据校验

1.引入依赖

1
2
3
4
5
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>

2.给实体类添加校验注解,并定义自己的message提示

常用的检验注解

@@ -251,7 +244,7 @@

image-20230615151144311

测试自定义的注解

image-20230615152331597

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

DFA算法实现敏感词自管理

一.需求分析

​ 在审核文本内容的时候,我们可以调用第三方成熟的服务(例如阿里云的内容安全)来实现,但是基于不同的场景,第三方的服务不可能涉及到方方面面的敏感词,比如在游戏类的场景中,开挂一词算敏感词,但是在其它的场景中,开挂一词是一个正常的词汇。这时候需要我们根据不同场景自己维护一套敏感词,在文本审核的时候,需要验证文本中是否包含这些敏感词。

+ })(window)

DFA算法实现敏感词自管理

一.需求分析

​ 在审核文本内容的时候,我们可以调用第三方成熟的服务(例如阿里云的内容安全)来实现,但是基于不同的场景,第三方的服务不可能涉及到方方面面的敏感词,比如在游戏类的场景中,开挂一词算敏感词,但是在其它的场景中,开挂一词是一个正常的词汇。这时候需要我们根据不同场景自己维护一套敏感词,在文本审核的时候,需要验证文本中是否包含这些敏感词。

二.可选方案

@@ -223,8 +216,8 @@

结果:

1
{冰毒=2, 法轮功=1}
-

最佳实践: 项目实战-黑马头条 | The Blog (gitee.io)

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

JWT-token生成工具

1.介绍

​ JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。JWT最重要的作用就是对 token信息的防伪作用。

+ })(window)

JWT-token生成工具

1.介绍

​ JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。JWT最重要的作用就是对 token信息的防伪作用。

​ JWT的原理:

​ 一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。

image-20230420102523288

@@ -218,7 +211,7 @@

获取token字符串 -> 将token字符串和用户信息存放在cokkie中 -> 页面在cokkie中获取用户信息显示在页面上

前端登录与否的校验、后端网关登录与否的校验…….

之后补充完整的代码示例 这里没有遇到好的登录示例 ……….

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

简历模板

黑马程序员新版Java面试专题视频教程,java八股文面试全套真题+深度详解(含大厂高频面试真题) https://www.bilibili.com/video/BV1yT411H7YK/?share_source=copy_web&vd_source=aee5e475191b69e6c781059ab6662584

+ })(window)

简历模板

打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

FreeMarker模板引擎

一.FreeMarker介绍

​ FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

+ })(window)

FreeMarker模板引擎

一.FreeMarker介绍

​ FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

​ 模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

image-20230816145012534

技术选型对比

@@ -379,7 +372,7 @@

③ :运行结果

image-20230816174550953

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

面试题集锦

参考资料:

+ })(window)

面试题集锦

参考资料:

Java工程师面试 宝典学习说明_互联网校招面试真题面经汇总_牛客网 (nowcoder.com)

Java | JavaGuide(Java面试 + 学习指南)

一.Java基础面试题

1.谈谈你对面向对象的理解

​ 对比面向过程,是两种不同处理问题的角度,面向过程更注重事情的每一步骤及顺序,面向对象更注重事情有哪些参与者(对象),以及各自需要做什么。面向过程比较直接高效,面向对象易于复用、扩展和维护。

@@ -650,7 +643,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.Java基础面试题
    1. 1.谈谈你对面向对象的理解
    2. 2.JDK、JRE、JVM之间的区别
    3. 3.==和equals⽅法的区别
    4. 4.String,StringBuffer,StringBuilder的区别
    5. 5.重载和重写的区别
    6. 6.接口和抽象类的区别
    7. 7.List和set的区别
    8. 8.hashCode()与equals()之间的关系
    9. 9.ArrayList和LinkedList的区别
    10. 10.HashMap和HashTable的区别?底层实现是什么?
    11. 11.ConcurrentHashMap
    12. 12.如何实现一个IOC容器
    13. 13.什么是字节码?采用字节码的好处是什么?
    14. 14.Java类加载器有哪些
    15. 15.双亲委派模型
    16. 16.Java中的异常体系
    17. 17.GC如何判断对象可以被回收
    18. 18.线程的生命周期,线程有哪些状态
    19. 19.sleep(),wait(),join(),yield()的区别
    20. 20.说说你对线程安全的理解
    21. 21.说说你对守护线程的理解
    22. 22.ThreadLocal的原理和使用场景
    23. 23.ThreadLocal内存泄漏原因,怎么避免
    24. 24.产生内存泄漏的原因有哪些
    25. 25.并发、并行、串行的区别
    26. 26.并发的三大特性
    27. 27.为什么用线程池?解释线程池参数?
    28. 28.简述线程池的处理流程
    29. 29.线程池中阻塞队列的作用?为什么是先添加队列而不是先创建最大线程?
    30. 30.线程池中线程复用原理
    31. 31.Spring是什么
    32. 32.谈谈你对AOP的理解
    33. 33.谈谈你对IOC的理解
    34. 34.BeanFactory和ApplicationContext有什么区别?
    35. 35.深拷贝和浅拷贝
    36. 36.TCP和UDP有什么区别?TCP为什么是三次握手,而不是两次?
    37. 37.JVM中有哪些垃圾回收算法?
    38. 38.集合相关的面试题
  2. 二.框架篇相关面试题
    1. 1.Spring Bean的生命周期
    2. 2.Spring框架中的单例Bean是线程安全的吗?
    3. 3.Spring Bean作用域
    4. 4.Spring框架中用到了哪些设计模式?
    5. 5.spring中事务实现方和原理式以及隔离级别?
    6. 6.Spring事务传播机制
    7. 7.Spring事务什么时候会失效?
    8. 8.什么是bean的自动装配,有哪些方式?
    9. 9.Spring Boot、SpringMVC和Spring有什么区别?
    10. 10.SpringMVC的工作流程
    11. 11.SpringMvc中的九大组件
    12. 12.SpringBoot自动配置原理(简答的阐述见下面15条)
    13. 13.MyBatis的优缺点
    14. 14.MyBatis中#{}和${}的区别是什么?
    15. 15.Spring Boot自动装配的过程
  3. 二.Mysql相关面试题
    1. 1.存储引擎InnoDB 与MyISAM 的区别
    2. 2.索引的基本原理
    3. 3.索引失效的场景
    4. 4.事务的隔离级别有哪些?MySQL 的默认隔离级别是什么?
    5. 5.事务的基本特性
    6. 6.怎么处理慢查询
    7. 7.ACID靠什么保证的
  4. 三.Redis相关面试题
    1. 1.Redis过期键的删除策略
    2. 2.Redis的线程模型,单线程为什么快
    3. 3.缓存雪崩、缓存穿透、缓存击穿
    4. 4.Redis的数据结构
最近更新
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.Java基础面试题
    1. 1.谈谈你对面向对象的理解
    2. 2.JDK、JRE、JVM之间的区别
    3. 3.==和equals⽅法的区别
    4. 4.String,StringBuffer,StringBuilder的区别
    5. 5.重载和重写的区别
    6. 6.接口和抽象类的区别
    7. 7.List和set的区别
    8. 8.hashCode()与equals()之间的关系
    9. 9.ArrayList和LinkedList的区别
    10. 10.HashMap和HashTable的区别?底层实现是什么?
    11. 11.ConcurrentHashMap
    12. 12.如何实现一个IOC容器
    13. 13.什么是字节码?采用字节码的好处是什么?
    14. 14.Java类加载器有哪些
    15. 15.双亲委派模型
    16. 16.Java中的异常体系
    17. 17.GC如何判断对象可以被回收
    18. 18.线程的生命周期,线程有哪些状态
    19. 19.sleep(),wait(),join(),yield()的区别
    20. 20.说说你对线程安全的理解
    21. 21.说说你对守护线程的理解
    22. 22.ThreadLocal的原理和使用场景
    23. 23.ThreadLocal内存泄漏原因,怎么避免
    24. 24.产生内存泄漏的原因有哪些
    25. 25.并发、并行、串行的区别
    26. 26.并发的三大特性
    27. 27.为什么用线程池?解释线程池参数?
    28. 28.简述线程池的处理流程
    29. 29.线程池中阻塞队列的作用?为什么是先添加队列而不是先创建最大线程?
    30. 30.线程池中线程复用原理
    31. 31.Spring是什么
    32. 32.谈谈你对AOP的理解
    33. 33.谈谈你对IOC的理解
    34. 34.BeanFactory和ApplicationContext有什么区别?
    35. 35.深拷贝和浅拷贝
    36. 36.TCP和UDP有什么区别?TCP为什么是三次握手,而不是两次?
    37. 37.JVM中有哪些垃圾回收算法?
    38. 38.集合相关的面试题
  2. 二.框架篇相关面试题
    1. 1.Spring Bean的生命周期
    2. 2.Spring框架中的单例Bean是线程安全的吗?
    3. 3.Spring Bean作用域
    4. 4.Spring框架中用到了哪些设计模式?
    5. 5.spring中事务实现方和原理式以及隔离级别?
    6. 6.Spring事务传播机制
    7. 7.Spring事务什么时候会失效?
    8. 8.什么是bean的自动装配,有哪些方式?
    9. 9.Spring Boot、SpringMVC和Spring有什么区别?
    10. 10.SpringMVC的工作流程
    11. 11.SpringMvc中的九大组件
    12. 12.SpringBoot自动配置原理(简答的阐述见下面15条)
    13. 13.MyBatis的优缺点
    14. 14.MyBatis中#{}和${}的区别是什么?
    15. 15.Spring Boot自动装配的过程
  3. 二.Mysql相关面试题
    1. 1.存储引擎InnoDB 与MyISAM 的区别
    2. 2.索引的基本原理
    3. 3.索引失效的场景
    4. 4.事务的隔离级别有哪些?MySQL 的默认隔离级别是什么?
    5. 5.事务的基本特性
    6. 6.怎么处理慢查询
    7. 7.ACID靠什么保证的
  4. 三.Redis相关面试题
    1. 1.Redis过期键的删除策略
    2. 2.Redis的线程模型,单线程为什么快
    3. 3.缓存雪崩、缓存穿透、缓存击穿
    4. 4.Redis的数据结构
最近更新

使用Robot类编写自动化脚本

一.概述

​ Java中Robot类位于java.awt.Robot,该类用于为测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,Robot类的主要目的是便于Java平台实现自动测试

+ })(window)

使用Robot类编写自动化脚本

一.概述

​ Java中Robot类位于java.awt.Robot,该类用于为测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,Robot类的主要目的是便于Java平台实现自动测试

二.基本API

@@ -237,7 +230,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

统一异常处理

我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理。

+ })(window)

统一异常处理

我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理。

image-20230506153955544

1.全局异常处理

异常返回的结果也为统一的返回结果的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.atguigu.common.exception;

import com.atguigu.common.result.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* @author GongChangjiang
* @version 1.0
* @Date 2023/5/6
* @Description 全局的异常处理器
*/
@ControllerAdvice
public class GlobalExceptionHandler {

/**
* 全局的异常处理
*/
@ExceptionHandler(Exception.class) //标记什么异常使用该方法
@ResponseBody //返回的是json数据
public Result error(Exception e){
e.printStackTrace();
return Result.fail().message("全局异常处理器捕获到该异常");
}


/**
* 特定的异常处理(先找特定的异常 再找全局的异常)
*/
@ExceptionHandler(ArithmeticException.class) //标记什么异常使用该方法
@ResponseBody //返回的是json数据
public Result error(ArithmeticException e){
e.printStackTrace();
return Result.fail().message("数学运算异常");
}

/**
* 自定义异常处理
* GuiguException为自定义的异常
*/
@ExceptionHandler(GuiguException.class) //标记什么异常使用该方法
@ResponseBody //返回的是json数据
public Result error(GuiguException e){
e.printStackTrace();
//获取抛出异常的时候填入的code和message的值并返回
return Result.fail().code(e.getCode()).message(e.getMessage());
}
}
@@ -198,7 +191,7 @@

在需要抛出自定义异常的地方抛出异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 查询所有的方法
*/
@ApiOperation("查询所有角色的接口")
@GetMapping("/findAll")
public Result<List<SysRole>> findAll() {
List<SysRole> sysRoles = sysRoleService.list();
try {
//这里我们使用除零模拟异常
int i = 1/0;
} catch (Exception e) {
throw new GuiguException(2001, "抛出了自定义的异常");
}
return Result.ok(sysRoles);
}

全局异常处理器捕获异常并返回异常信息

image-20230506154605339

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

SpringBoot中整合Swagger2

1.Swagger2的介绍

什么是swagger2

+ })(window)

SpringBoot中整合Swagger2

1.Swagger2的介绍

什么是swagger2

编写和维护接口文档是每个程序员的职责,根据Swagger2可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率。

常用注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息等等

@@ -209,7 +202,7 @@

2.4使用接口文档

1
2
3
//浏览器访问该网址
//这里的端口号是要生成接口文档端口的端口号
http://localhost:8080/swagger-ui.html

image-20230412141010237

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

接口测试工具

一 Postman的使用

官网网址: https://www.postman.com/

+ })(window)

接口测试工具

一 Postman的使用

官网网址: https://www.postman.com/

Postman的首页

image-20230813162510205

1 使用教程

1.1 发送Post请求

以一个普通的登录操作来演示Postman的使用教程

@@ -200,11 +193,11 @@

响应数据的格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"host": null,
"code": 200,
"errorMessage": "操作成功",
"data": {
"user": {
"id": 4,
"salt": "",
"name": "admin",
"password": "",
"phone": "13511223456",
"image": null,
"sex": true,
"certification": null,
"identityAuthentication": null,
"status": true,
"flag": 1,
"createdTime": "2020-03-30T08:36:32.000+00:00"
},
"token": "eyJhbGciOiJIUzUxMiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAAADWLQQrDMAzA_uJzc3DnBKe_cRKPpVAIOIWNsb_PPfQmIfSFfXbYgCqlEkmDVI6BHlJCrrWF9IzKiMKNERboMmHDlDFjTMgL2Fn8to9NPa5u5vrSfoibnM1NxnDW97jPvF5n90a_P2LDCJyAAAAA.Rk6wC_YpLmxrqylQxEgz19uKHkrBRV6_JmIqbHrSQENkURtavrzhLzr0D8mQf-wtKivaGGviDGHmdckw8IWi7g"
}
}
-

二 Swagger的使用

SpringBoot整合Swagger:https://jasonsgong.gitee.io/posts/32246.html

+

二 Swagger的使用

SpringBoot整合Swagger:https://jasonsgong.gitee.io/posts/32246.html

以一个普通的登录操作来演示Swagger的使用教程

image-20230813170950932

image-20230813171244848

-

三 knife4j的使用

SpringBoot整合Knife4j教程: https://jasonsgong.gitee.io/posts/855.html

+

三 knife4j的使用

SpringBoot整合Knife4j教程: https://jasonsgong.gitee.io/posts/855.html

gitee地址:https://gitee.com/xiaoym/knife4j

官方文档:https://doc.xiaominfo.com/

核心功能 :文档说明 在线调试 个性化配置 离线文档 接口排序

@@ -215,7 +208,7 @@

image-20230813172605624

下载成功之后打开的效果

image-20230813172720116

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

对象存储服务MinIO

一.MinIo基本介绍

1.简介

​ MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

+ })(window)

对象存储服务MinIO

一.MinIo基本介绍

1.简介

​ MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

S3 ( Simple Storage Service简单存储服务)

基本概念

    @@ -266,7 +259,7 @@ 1,不支持动态增加节点 -

    二.MinIo安装教程

    使用Docker的方式安装MInIo,Docker使用教程 https://jasonsgong.gitee.io/posts/19306.html

    +

    二.MinIo安装教程

    使用Docker的方式安装MInIo,Docker使用教程 https://jasonsgong.gitee.io/posts/19306.html

    1
    2
    3
    4
    5
    6
    #拉取minio的镜像
    docker pull minio/minio
    #创建并运行容器
    #设置用户名-e "MINIO_ACCESS_KEY=minio"
    #设置密码 -e "MINIO_SECRET_KEY=minio123"
    docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data

    访问: http://192.168.200.130:9000

    @@ -337,7 +330,7 @@
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package com.heima.minio;


    /**
    * @author Jason Gong
    * @version 1.0
    * @website https://jasonsgong.gitee.io
    * @Date 2023/8/18
    * @Description
    */
    @SpringBootTest(classes = MinIOApplication.class)
    @RunWith(SpringRunner.class)
    @Slf4j
    public class MinIOTest {

    @Autowired
    private FileStorageService fileStorageService;

    @Test
    public void testMinIOStarter(){
    //读取一个文件
    try {
    FileInputStream inputStream = new FileInputStream("C:\\Gong\\data\\test.html");
    String s = fileStorageService.uploadHtmlFile("", "test,html", inputStream);
    log.info(s);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    }
    }

    image-20230818165138917

    -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

SpringBoot整合EasyExcel

1.EasyExcel介绍

​ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

+ })(window)

SpringBoot整合EasyExcel

1.EasyExcel介绍

​ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

官网地址:https://easyexcel.opensource.alibaba.com/

2.入门

2.1 引入依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
@@ -216,7 +209,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

MySql进阶教程

全部的PDF笔记: https://jasonsgong.gitee.io/posts/50465.html

+ })(window)

MySql进阶教程

全部的PDF笔记: https://jasonsgong.gitee.io/posts/50465.html

原视频地址: 黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括

一.Mysql入门

1.SQL

全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。

1.1 SQL通用语法

image-20230926220120609

@@ -334,7 +327,7 @@

举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- 外键约束
create table dept
(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '部门名称'
) comment '部门表';

INSERT INTO dept (id, name)
VALUES (1, '研发部'),
(2, '市场部'),
(3, '财务部'),
(4, '销售部'),
(5, '总经办');

create table employee
(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导ID',
dept_id int comment '部门ID'
) comment '员工表';

INSERT INTO employee (id, name, age, job, salary, entrydate, managerid, dept_id)
VALUES (1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5),
(2, '张无忌', 20, '项目经理', 12500, '2005-12-05', 1, 1),
(3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),
(4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),
(5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),
(6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1);

select *
from dept;
select *
from employee;

-- 添加外键 员工表employee的部门id字段关联到部门表的id字段以建立外键约束
alter table employee
add constraint fk_emp_dept foreign key (dept_id) references dept (id);

-- 删除外键
alter table employee drop foreign key fk_emp_dept;
-

3.3.3 删除/更新行为

详细介绍见PDF文件 https://jasonsgong.gitee.io/posts/50465.html

+

3.3.3 删除/更新行为

详细介绍见PDF文件 https://jasonsgong.gitee.io/posts/50465.html

添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:

image-20231004164211535

具体语法为:

@@ -685,7 +678,7 @@

2.将传入的200分制的分数,进行换算,换成百分制,然后返回

1
2
3
4
5
6
7
8
9
-- 2.将传入的200分制的分数,进行换算,换成百分制,然后返回
create procedure p5(inout score double)
begin
set score := score * 0.5;
end;
-- 调用(score既是输入又是输出)
set @score = 78;
call p5(@score);
select @score;
-

4.2.6 case

打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.Mysql入门
    1. 1.SQL
      1. 1.1 SQL通用语法
      2. 1.2 SQL分类
      3. 1.3 DDL-数据定义语言
      4. 1.4 DML-数据操作语言
      5. 1.5 DQL-数据查询语言
        1. 1.5.1 基础查询
        2. 1.5.2 条件查询
        3. 1.5.3 聚合函数
        4. 1.5.4 分组查询
        5. 1.5.5 排序查询
        6. 1.5.6 分页查询
        7. 1.5.7 DQL语句案例
        8. 1.5.8 执行顺序
      6. 1.6 DCL-数据控制语言
        1. 1.6.1 管理用户
        2. 1.6.2 权限控制
    2. 2.函数
      1. 2.1 字符串函数
      2. 2.2 数值函数
      3. 2.3 日期函数
      4. 2.4 流程函数
    3. 3.约束
      1. 3.1 概述
      2. 3.2 约束演示
      3. 3.3 外键约束
        1. 3.3.1 介绍
        2. 3.3.2 语法
        3. 3.3.3 删除/更新行为
    4. 4.多表查询
      1. 4.1 多表关系
      2. 4.2 多表查询概述
        1. 4.2.1 数据准备
        2. 4.2.2 概述
        3. 4.2.3 分类
      3. 4.3 内连接
      4. 4.4 外连接
      5. 4.5 自连接
      6. 4.6 联合查询
      7. 4.7 子查询
      8. 4.8 多表查询案例
    5. 5.事务
      1. 5.1 事务介绍
      2. 5.2 事务操作
      3. 5.3 事务四大特性
      4. 5.4 并发事务问题
      5. 5.5 事务隔离级别
  2. 二.MySql进阶
    1. 1.存储引擎
      1. 1.1 MySql的体系结构
      2. 1.2 存储引擎简介
      3. 1.3 存储引擎特点
      4. 1.4 存储引擎的选择
    2. 2.索引
      1. 2.1 索引概述
        1. 2.1.1 介绍
        2. 2.1.2 演示
        3. 2.1.3 优缺点
      2. 2.2 索引结构
        1. 2.2.1 索引的数据结构有哪些
        2. 2.2.2 B+树的索引数据结构
        3. 2.2.3 hash的索引数据结构
        4. 2.3.4 思考题
      3. 2.3 索引分类
      4. 2.4 索引语法
      5. 2.5 SQL性能分析
        1. 2.5.1 SQL执行频率
        2. 2.5.2 慢查询日志
        3. 2.5.3 profile详情
        4. 2.5.4 explain执行计划
      6. 2.6 索引使用
        1. 2.6.1 验证索引效率
        2. 2.6.2 最左前缀法则
        3. 2.6.3 索引失效的情况
        4. 2.6.4 SQL提示
        5. 2.6.5 覆盖索引
        6. 2.6.6 前缀索引
        7. 2.6.7 单例索引与联合索引的选择问题
      7. 2.7 索引设计原则
    3. 3.SQL优化
      1. 3.1 插入数据的优化
      2. 3.2 主键优化
      3. 3.3 order by优化
      4. 3.4 group by优化
      5. 3.5 limit优化
      6. 3.6 count优化
      7. 3.7 update优化
      8. 3.8 总结
    4. 4.视图/存储过程/触发器
      1. 4.1 视图
        1. 4.1.1 视图介绍
        2. 4.1.2 语法
        3. 4.1.3 检查选项
        4. 4.1.4 视图更新
        5. 4.1.5 视图作用
        6. 4.1.6 视图案例
      2. 4.2 存储过程
        1. 4.2.1 介绍
        2. 4.2.2 基本语法
        3. 4.2.3 变量
          1. 4.2.3.1 系统变量
          2. 4.2.3.2 用户定义变量
          3. 4.2.3.3 局部变量
        4. 4.2.4 if判断
        5. 4.2.5 参数
        6. 4.2.6 case
最近更新
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.Mysql入门
    1. 1.SQL
      1. 1.1 SQL通用语法
      2. 1.2 SQL分类
      3. 1.3 DDL-数据定义语言
      4. 1.4 DML-数据操作语言
      5. 1.5 DQL-数据查询语言
        1. 1.5.1 基础查询
        2. 1.5.2 条件查询
        3. 1.5.3 聚合函数
        4. 1.5.4 分组查询
        5. 1.5.5 排序查询
        6. 1.5.6 分页查询
        7. 1.5.7 DQL语句案例
        8. 1.5.8 执行顺序
      6. 1.6 DCL-数据控制语言
        1. 1.6.1 管理用户
        2. 1.6.2 权限控制
    2. 2.函数
      1. 2.1 字符串函数
      2. 2.2 数值函数
      3. 2.3 日期函数
      4. 2.4 流程函数
    3. 3.约束
      1. 3.1 概述
      2. 3.2 约束演示
      3. 3.3 外键约束
        1. 3.3.1 介绍
        2. 3.3.2 语法
        3. 3.3.3 删除/更新行为
    4. 4.多表查询
      1. 4.1 多表关系
      2. 4.2 多表查询概述
        1. 4.2.1 数据准备
        2. 4.2.2 概述
        3. 4.2.3 分类
      3. 4.3 内连接
      4. 4.4 外连接
      5. 4.5 自连接
      6. 4.6 联合查询
      7. 4.7 子查询
      8. 4.8 多表查询案例
    5. 5.事务
      1. 5.1 事务介绍
      2. 5.2 事务操作
      3. 5.3 事务四大特性
      4. 5.4 并发事务问题
      5. 5.5 事务隔离级别
  2. 二.MySql进阶
    1. 1.存储引擎
      1. 1.1 MySql的体系结构
      2. 1.2 存储引擎简介
      3. 1.3 存储引擎特点
      4. 1.4 存储引擎的选择
    2. 2.索引
      1. 2.1 索引概述
        1. 2.1.1 介绍
        2. 2.1.2 演示
        3. 2.1.3 优缺点
      2. 2.2 索引结构
        1. 2.2.1 索引的数据结构有哪些
        2. 2.2.2 B+树的索引数据结构
        3. 2.2.3 hash的索引数据结构
        4. 2.3.4 思考题
      3. 2.3 索引分类
      4. 2.4 索引语法
      5. 2.5 SQL性能分析
        1. 2.5.1 SQL执行频率
        2. 2.5.2 慢查询日志
        3. 2.5.3 profile详情
        4. 2.5.4 explain执行计划
      6. 2.6 索引使用
        1. 2.6.1 验证索引效率
        2. 2.6.2 最左前缀法则
        3. 2.6.3 索引失效的情况
        4. 2.6.4 SQL提示
        5. 2.6.5 覆盖索引
        6. 2.6.6 前缀索引
        7. 2.6.7 单例索引与联合索引的选择问题
      7. 2.7 索引设计原则
    3. 3.SQL优化
      1. 3.1 插入数据的优化
      2. 3.2 主键优化
      3. 3.3 order by优化
      4. 3.4 group by优化
      5. 3.5 limit优化
      6. 3.6 count优化
      7. 3.7 update优化
      8. 3.8 总结
    4. 4.视图/存储过程/触发器
      1. 4.1 视图
        1. 4.1.1 视图介绍
        2. 4.1.2 语法
        3. 4.1.3 检查选项
        4. 4.1.4 视图更新
        5. 4.1.5 视图作用
        6. 4.1.6 视图案例
      2. 4.2 存储过程
        1. 4.2.1 介绍
        2. 4.2.2 基本语法
        3. 4.2.3 变量
          1. 4.2.3.1 系统变量
          2. 4.2.3.2 用户定义变量
          3. 4.2.3.3 局部变量
        4. 4.2.4 if判断
        5. 4.2.5 参数
        6. 4.2.6 case
最近更新

数据结构与算法

代码仓库的地址:https://gitee.com/JasonsGong/DataStructures

+ })(window)

数据结构与算法

打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.经典算法问题
  2. 二.数据结构与算法的概述
    1. 2.1 数据结构与算法的关系
    2. 2.2解决实际的问题
    3. 2.3 数据结构
  3. 三.稀疏数组和队列
    1. 3.1稀疏数组
      1. 3.1.1 基本的介绍
      2. 3.1.2使用的场景
      3. 3.1.3图解
      4. 3.1.5实现的思路
      5. 3.1.5代码实现
    2. 3.2队列
      1. 3.2.1基本的介绍
      2. 3.2.2代码实现
      3. 3.2.3 数组模拟环形队列
  4. 四.链表
    1. 4.1 链表(Linked List)介绍
    2. 4.2单链表的应用实例(CRUD)
      1. 4.2.1向单链表中添加数据
      2. 4.2.2修改单链表中节点的方法
      3. 4.2.3删除单链表中节点的方法
      4. 4.2.4完整代码
      5. 4.2.5 单链表的面试题(新浪,百度,腾讯)
        1. 1.求单链表中有效节点的个数
        2. 2.查找单链表中的倒数第K个节点(新浪面试题)
        3. 3.单链表的反转(腾讯面试题)
        4. 4.从尾到头打印单链表(百度面试题)
        5. 5.合并两个有序的单链表,合并之后的链表依然有序
        6. 全部代码
    3. 4.3 双向链表
    4. 4.4 单向环形链表的应用场景(Josephu问题)
  5. 五.栈
    1. 1.介绍
    2. 2.应用场景
    3. 3.图解
    4. 4.使用数组模拟栈
    5. 5.栈实现综合计算器
    6. 6.逆波兰计算器的设计与实现
  6. 六.递归
    1. 1.简单介绍
    2. 2.入门案例
    3. 3.递归解决的问题
    4. 4.递归遵循的规则
    5. 5.递归的实际应用
      1. 5.1递归解决迷宫问题
      2. 5.2 递归解决八皇后问题
  7. 七.排序算法
    1. 1.介绍
    2. 2.时间复杂度
    3. 3.空间复杂度
    4. 4.冒泡排序
      1. 4.1 基本介绍
      2. 4.2 图解
      3. 4.3 代码实现
    5. 5.选择排序
      1. 5.1 基本介绍
      2. 5.2图解
      3. 5.3代码实现
    6. 6.插入排序
      1. 6.1 基本介绍
      2. 6.2 图解
      3. 6.3 代码实现
    7. 7.希尔排序
      1. 7.1基本介绍
      2. 7.2.图解
      3. 7.3 代码实现
    8. 8.快速排序
      1. 8.1 基本介绍
      2. 8.2 图解
      3. 8.3 代码实现
    9. 9. 归并排序
      1. 9.1基本介绍
      2. 9.2 图解
      3. 9.3代码实现
    10. 10.基数排序
      1. 10.1 基本介绍
      2. 10.2 图解
      3. 10.3 代码实现
    11. 11.常用排序算法总结和对比
  8. 八.查找算法
    1. 1.简单介绍
    2. 2.线性查找算法
      1. 2.1代码实现
    3. 3.二分查找算法
      1. 3.1 图解
      2. 3.2 代码实现
    4. 4.插值查找算法
      1. 4.1 图解
      2. 4.2 代码实现
      3. 4.3 注意事项
    5. 5.斐波那契(黄金分割法)查找算法
      1. 5.1 基本介绍
      2. 5.2 原理介绍
  9. PDF笔记
最近更新
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
目录
  1. 一.经典算法问题
  2. 二.数据结构与算法的概述
    1. 2.1 数据结构与算法的关系
    2. 2.2解决实际的问题
    3. 2.3 数据结构
  3. 三.稀疏数组和队列
    1. 3.1稀疏数组
      1. 3.1.1 基本的介绍
      2. 3.1.2使用的场景
      3. 3.1.3图解
      4. 3.1.5实现的思路
      5. 3.1.5代码实现
    2. 3.2队列
      1. 3.2.1基本的介绍
      2. 3.2.2代码实现
      3. 3.2.3 数组模拟环形队列
  4. 四.链表
    1. 4.1 链表(Linked List)介绍
    2. 4.2单链表的应用实例(CRUD)
      1. 4.2.1向单链表中添加数据
      2. 4.2.2修改单链表中节点的方法
      3. 4.2.3删除单链表中节点的方法
      4. 4.2.4完整代码
      5. 4.2.5 单链表的面试题(新浪,百度,腾讯)
        1. 1.求单链表中有效节点的个数
        2. 2.查找单链表中的倒数第K个节点(新浪面试题)
        3. 3.单链表的反转(腾讯面试题)
        4. 4.从尾到头打印单链表(百度面试题)
        5. 5.合并两个有序的单链表,合并之后的链表依然有序
        6. 全部代码
    3. 4.3 双向链表
    4. 4.4 单向环形链表的应用场景(Josephu问题)
  5. 五.栈
    1. 1.介绍
    2. 2.应用场景
    3. 3.图解
    4. 4.使用数组模拟栈
    5. 5.栈实现综合计算器
    6. 6.逆波兰计算器的设计与实现
  6. 六.递归
    1. 1.简单介绍
    2. 2.入门案例
    3. 3.递归解决的问题
    4. 4.递归遵循的规则
    5. 5.递归的实际应用
      1. 5.1递归解决迷宫问题
      2. 5.2 递归解决八皇后问题
  7. 七.排序算法
    1. 1.介绍
    2. 2.时间复杂度
    3. 3.空间复杂度
    4. 4.冒泡排序
      1. 4.1 基本介绍
      2. 4.2 图解
      3. 4.3 代码实现
    5. 5.选择排序
      1. 5.1 基本介绍
      2. 5.2图解
      3. 5.3代码实现
    6. 6.插入排序
      1. 6.1 基本介绍
      2. 6.2 图解
      3. 6.3 代码实现
    7. 7.希尔排序
      1. 7.1基本介绍
      2. 7.2.图解
      3. 7.3 代码实现
    8. 8.快速排序
      1. 8.1 基本介绍
      2. 8.2 图解
      3. 8.3 代码实现
    9. 9. 归并排序
      1. 9.1基本介绍
      2. 9.2 图解
      3. 9.3代码实现
    10. 10.基数排序
      1. 10.1 基本介绍
      2. 10.2 图解
      3. 10.3 代码实现
    11. 11.常用排序算法总结和对比
  8. 八.查找算法
    1. 1.简单介绍
    2. 2.线性查找算法
      1. 2.1代码实现
    3. 3.二分查找算法
      1. 3.1 图解
      2. 3.2 代码实现
    4. 4.插值查找算法
      1. 4.1 图解
      2. 4.2 代码实现
      3. 4.3 注意事项
    5. 5.斐波那契(黄金分割法)查找算法
      1. 5.1 基本介绍
      2. 5.2 原理介绍
  9. PDF笔记
最近更新

免费好用的PDF工具

一.PDFgear

+ })(window)

免费好用的PDF工具

一.PDFgear

免费、无需登录注册、支持编辑和PDF与格式文件的相互转换!

1.下载地址

官网地址:https://www.pdfgear.com/zh/

@@ -204,7 +197,7 @@

部署命令

1
2
3
4
5
6
7
8
docker run -d \
-p 8080:8080 \
-v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata \
-v /location/of/extraConfigs:/configs \
-v /location/of/logs:/logs \
-e DOCKER_ENABLE_SECURITY=false \
--name stirling-pdf \
frooodle/s-pdf:latest
-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
公告
本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

前端基础知识

一.VSCode的使用

常用插件

image-20230521233651126

+ })(window)

前端基础知识

一.VSCode的使用

常用插件

image-20230521233651126

二. ES6

菜鸟ES6教程教程

1.简介

​ ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。

2.基础语法

img @@ -338,7 +331,7 @@
1
2
3
4
5
6
# 启动项目
npm start
#或者
npm run dev
# 将项目打包
npm run build

4.Eelment-UI

官方文档:https://element.eleme.cn/#/zh-CN/component/quickstart

-
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

微信登录

1、OAuth2

微信登录使用了OAuth2解决方案

+ })(window)

微信登录

1、OAuth2

微信登录使用了OAuth2解决方案

1.1 OAuth2解决什么问题

1.1.1 开放系统间授权

照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源

IMG_256

1.1.2图例

资源拥有者:照片拥有者

@@ -331,7 +324,7 @@ -
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论

项目实战-谷粒商城

一.项目简介

1.项目背景

电商模式 谷粒商城使用的B2C模式,销售自营的商品给客户

+ })(window)

项目实战-谷粒商城

一.项目简介

1.项目背景

电商模式 谷粒商城使用的B2C模式,销售自营的商品给客户

市面上5种常见的电商模式B2B、B2C、C2B、C2C、O2O

1、B2B模式:
business to business,是指商家与商家建立的商业关系。如阿里巴巴。

2、B2C模式:
business to consumer,商对客模式。即通常说的商业零售,供应商直接把商品卖给用户。如:苏宁易购、京东、天猫、小米商城。

@@ -253,11 +246,11 @@ image-20230518014732955

三.环境搭建

1.安装虚拟机

需要使用虚拟机安装相关的软件和部署集群

-

VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

+

VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

将Linxu的IP地址固定下来

-

Linux设置静态IP | The Blog (gitee.io)

+

Linux设置静态IP | The Blog (gitee.io)

2.Docker安装与配置

包含docker安装、开启开机自启动、配置镜像加速服务

-

Docker容器化技术 | The Blog (gitee.io)image-20230518141429712

+

Docker容器化技术 | The Blog (gitee.io)image-20230518141429712

image-20230518145456236

3.Docker安装mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#下载mysql的镜像文件 这里以下载mysql5.7为例
docker pull mysql:5.7

#查看是否下载成功
docker images

#使用MySQL的镜像启动一个容器
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
#参数说明
# -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
#-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
#-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
#-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
#-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

#查看是否运行成功 这时使用Navicat就可以连接上了 连接不上 关闭防火墙
docker ps #查看正在运行的容器

#进入容器的内部
docker exec -it mysql /bin/bash

#查看容器内部的目录结构 我们可以看到容器的内部是一个小小的linux系统
ls / #注意中间有一个空格

#查看与mysql相关的目录
whereis mysql

#退出容器
exit;

#在容器外部查看mysql挂载在本地的三个文件
#容器内部文件的变化会同步在这三个文件中 conf data log
#外部修改 也会同步到内部
cd /mydata/mysql
ls

#创建一个mysql的配置文件设置字符编码 将下面的内容粘贴到配置文件中
#1.创建配置文件
vi /mydata/mysql/conf/my.cnf
#2.将以下的内容粘贴到配置文件配置文件内容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
#3.重启MySQl的服务 让配置文件生效 这个配置文件也会同步到容器内部
docker restart mysql

#设置开机自启动
docker update mysql --restart=always
@@ -265,7 +258,7 @@

5.统一开发环境

其中Java使用的是java8及以上

Maven 配置阿里云的镜像 profiles

-

开发环境的搭建 | The Blog (gitee.io)

+

开发环境的搭建 | The Blog (gitee.io)

IDEA中修改使用自己安装的Maven

IDEA插件:Lombok|MybatisX

VSCode插件:

@@ -572,7 +565,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让 image-20230520212001874 -

2.前端开发的基础知识

前端基础知识 | The Blog (gitee.io)

+

2.前端开发的基础知识

前端基础知识 | The Blog (gitee.io)

前后端技术类比

image-20230520212351174

五.基础篇程序设计

提示:所有的API路径一定要和老师的一样,不然在后面会吃亏!!!

@@ -691,7 +684,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让
1
2
3
4
5
6
7
8
9
10
 /**
* 修改
*/
@RequestMapping("/update")
//@RequiresPermissions("product:brand:update")
public R update(@RequestBody BrandEntity brand){
brandService.updateById(brand);

return R.ok();
}

品牌添加功能

-

阿里云对象存储OSS | The Blog (gitee.io)

+

阿里云对象存储OSS | The Blog (gitee.io)

image-20230611153418426

前端的代码

品牌管理的列表页面

@@ -711,7 +704,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让

配置网关,通过网关访问到该接口

1
2
3
4
5
6
- id: third_party_route
uri: lb://gulimall-third-party
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/api/thirdparty/(?<segment>.*),/$\{segment}
-

1.2.2 JSR303-数据校验

数据校验 | The Blog (gitee.io)

+

1.2.2 JSR303-数据校验

数据校验 | The Blog (gitee.io)

1.依赖文件

1
2
3
4
5
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
@@ -723,7 +716,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让

返回的json格式示例

image-20230612165021780

-

1.2.3 统一异常处理

统一异常处理 | The Blog (gitee.io)

+

1.2.3 统一异常处理

统一异常处理 | The Blog (gitee.io)

统一异常返回状态码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.atguigu.common.exception;

/**
* @author Jason Gong
* @version 1.0
* @Date 2023/6/12
* @Description 返回的状态码信息
*/
public enum BizCodeEnum {
UNKNOWN_EXCEPTION(10000,"系统未知异常"),
VALID_EXCEPTION(10001,"参数格式校验");

private Integer code;
private String msg;

BizCodeEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}

public Integer getCode() {
return code;
}

public String getMsg() {
return msg;
}
}
@@ -960,7 +953,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让
  • 学技术一定要学会看开发文档(技术说明书),可以先从开发文档提供的demo开始
  • 六.高级篇程序设计

    1.ElasticSearch

    详细的教程

    -

    ElasticSearch | The Blog (gitee.io)

    +

    ElasticSearch | The Blog (gitee.io)

    2.商城业务

    2.1 商品上架

    1.商品Mapping

    创建一个product索引和指定映射关系

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    PUT product
    {
    "mappings": {
    "properties": {
    "skuId": {
    "type": "long"
    },
    "spuId": {
    "type": "keyword"
    },
    "skuTitle": {
    "type": "text",
    "analyzer": "ik_smart"
    },
    "skuPrice": {
    "type": "keyword"
    },
    "skuImg": {
    "type": "keyword",
    "index": false,
    "doc_values": false
    },
    "saleCount": {
    "type": "long"
    },
    "hasStock": {
    "type": "boolean"
    },
    "hotScore": {
    "type": "long"
    },
    "brandId": {
    "type": "long"
    },
    "catalogId": {
    "type": "long"
    },
    "brandName": {
    "type": "keyword",
    "index": false,
    "doc_values": false
    },
    "brandImg": {
    "type": "keyword",
    "index": false,
    "doc_values": false
    },
    "catalogName": {
    "type": "keyword",
    "index": false,
    "doc_values": false
    },
    "attrs": {
    "type": "nested",
    "properties": {
    "attrId": {
    "type": "long"
    },
    "attrName": {
    "type": "keyword",
    "index": false,
    "doc_values": false
    },
    "attrValue": {
    "type": "keyword"
    }
    }
    }
    }
    }
    }
    @@ -1059,7 +1052,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让

    image-20230708104321024

    image-20230708104848501 -

    2.4 性能压测

    压力测试与性能监控 | The Blog (gitee.io)

    +

    2.4 性能压测

    压力测试与性能监控 | The Blog (gitee.io)

    JMeter压力测试

    image-20230708152102009

    性能监控

    @@ -1076,7 +1069,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让

    2.5.2 整合redis

    1.安装Redis

    image-20230710144052877

    2.项目中使用Redis

    -

    SpringBoot整合Redis | The Blog (gitee.io)

    +

    SpringBoot整合Redis | The Blog (gitee.io)

    2.1 引入依赖

    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    @@ -1161,7 +1154,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让

    2.以前的笔记教程

    -

    SpringBoot整合Redis | The Blog (gitee.io)

    +

    SpringBoot整合Redis | The Blog (gitee.io)

    3.项目中整合SpringCache简化开发

    3.1.引入依赖

    1
    2
    3
    4
    5
    <!--我们使redis作为缓存的使用场景,在前面我们还要引入redis的依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    @@ -1224,7 +1217,7 @@ Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    package com.atguigu.gulimall.search.vo;

    import com.atguigu.common.to.es.SkuEsModel;
    import lombok.Data;

    import java.util.ArrayList;
    import java.util.List;

    /**
    * @author Jason Gong
    * @version 1.0
    * @website https://jasonsgong.gitee.io
    * @Date 2023/7/17
    * @Description 根据检索条件返回给页面的商品信息
    */
    @Data
    public class SearchResult {


    /**
    * 查询到的所有商品信息
    */
    private List<SkuEsModel> product;


    /**
    * 当前页码
    */
    private Integer pageNum;

    /**
    * 总记录数
    */
    private Long total;

    /**
    * 总页码
    */
    private Integer totalPages;

    private List<Integer> pageNavs;

    /**
    * 当前查询到的结果,所有涉及到的品牌
    */
    private List<BrandVo> brands;

    /**
    * 当前查询到的结果,所有涉及到的所有属性
    */
    private List<AttrVo> attrs;

    /**
    * 当前查询到的结果,所有涉及到的所有分类
    */
    private List<CatalogVo> catalogs;

    private List<NavVo> navs;

    @Data
    public static class NavVo {
    private String navName;
    private String navValue;
    private String link;
    }


    @Data
    public static class BrandVo {

    private Long brandId;

    private String brandName;

    private String brandImg;
    }


    @Data
    public static class AttrVo {

    private Long attrId;

    private String attrName;

    private List<String> attrValue;
    }


    @Data
    public static class CatalogVo {

    private Long catalogId;

    private String catalogName;
    }
    }

    未完待续(学习到177)……

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.项目简介
      1. 1.项目背景
      2. 2.项目架构图
      3. 3.项目技术和特色
      4. 4.项目的前置要求
    2. 二.分布式基础概念
      1. 1.微服务
      2. 2.集群|分布式|节点
      3. 3.远程调用
      4. 4.负载均衡
      5. 5.服务注册|发现|注册中心
      6. 6.配置中心
      7. 7.服务熔断和服务降级
      8. 8.API网关
    3. 三.环境搭建
      1. 1.安装虚拟机
      2. 2.Docker安装与配置
      3. 3.Docker安装mysql
      4. 4.Docker安装redis
      5. 5.统一开发环境
      6. 6.配置Git
      7. 7.从Gitee上初始化一个项目
      8. 8.创建微服务模块
      9. 9.数据库设计
      10. 10.后台管理系统的搭建
        1. 10.1.后端的搭建
        2. 10.2 前端的搭建
      11. 11.快速开发-逆向工程的搭建
        1. 1.代码生成器快速使用案例
        2. 2.代码生成器的使用步骤
        3. 3.后台搭建完成之后的项目树
    4. 四.项目前置知识
      1. 1.SpringCloud Alibaba
        1. 1.1简介
        2. 1.2为什么使用SpringCloud Alibaba?
        3. 1.3 SpringCloud Alibaba最终的技术搭配方案
        4. 1.4 项目中使用SpringCloud Alibaba
        5. 1.5 SpringCloud Alibaba的组件
          1. 1.Nacos注册中心
          2. 2.Feign声明式远程调用
          3. 3.Nacos配置中心
          4. 4.Gateway网关
      2. 2.前端开发的基础知识
    5. 五.基础篇程序设计
      1. 1.商品服务
        1. 1.1 三级分类
          1. 1.1.1 查询-递归树形结构数据获取
          2. 1.1.2 配置路由和网关和路径重写
          3. 1.2.3 查询-页面中树形显示
          4. 1.2.4 删除-删除商品分类
          5. 1.2.5 添加-添加商品分类
          6. 1.2.6 修改-修改商品的分类
        2. 1.2 品牌管理
          1. 1.2.1 品牌的增删改查功能
          2. 1.2.2 JSR303-数据校验
          3. 1.2.3 统一异常处理
          4. 1.2.4 关联分类功能
        3. 1.3 平台属性
          1. 1.3.1 属性分组功能
          2. 1.3.2 规格参数功能
          3. 1.3.3 销售属性功能
        4. 1.4 商品维护
          1. 1.4.1 SPU管理
          2. 1.4.2 发布商品
          3. 1.4.3 商品管理
      2. 2.库存系统
        1. 2.1 仓库维护
        2. 2.2 库存工作单
        3. 2.3 商品库存
        4. 2.4 采购单维护
          1. 2.4.1 采购需求
          2. 2.4.2 采购单
      3. 3.基础篇总结
    6. 六.高级篇程序设计
      1. 1.ElasticSearch
      2. 2.商城业务
        1. 2.1 商品上架
        2. 2.2 首页
          1. 2.2.1整合thymeleaf
          2. 2.2.2 首页面三级分类显示
        3. 2.3 搭建域名访问环境
        4. 2.4 性能压测
          1. 2.4.1优化中间件对性能的影响
        5. 2.5 缓存使用
          1. 2.5.1 本地缓存与分布式缓存
          2. 2.5.2 整合redis
          3. 2.5.3 高并发下缓存失效问题
          4. 2.5.4 分布式锁-Redisson
          5. 2.5.5 分布式缓存一致性问题
          6. 2.5.6 缓存-SpringCache
        6. 2.6 检索服务
          1. 2.6.1 整合页面
          2. 2.6.2 配置域名访问
          3. 2.6.3 首页和搜索页相互跳转
          4. 2.6.4 商品的检索
    最近更新
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.项目简介
      1. 1.项目背景
      2. 2.项目架构图
      3. 3.项目技术和特色
      4. 4.项目的前置要求
    2. 二.分布式基础概念
      1. 1.微服务
      2. 2.集群|分布式|节点
      3. 3.远程调用
      4. 4.负载均衡
      5. 5.服务注册|发现|注册中心
      6. 6.配置中心
      7. 7.服务熔断和服务降级
      8. 8.API网关
    3. 三.环境搭建
      1. 1.安装虚拟机
      2. 2.Docker安装与配置
      3. 3.Docker安装mysql
      4. 4.Docker安装redis
      5. 5.统一开发环境
      6. 6.配置Git
      7. 7.从Gitee上初始化一个项目
      8. 8.创建微服务模块
      9. 9.数据库设计
      10. 10.后台管理系统的搭建
        1. 10.1.后端的搭建
        2. 10.2 前端的搭建
      11. 11.快速开发-逆向工程的搭建
        1. 1.代码生成器快速使用案例
        2. 2.代码生成器的使用步骤
        3. 3.后台搭建完成之后的项目树
    4. 四.项目前置知识
      1. 1.SpringCloud Alibaba
        1. 1.1简介
        2. 1.2为什么使用SpringCloud Alibaba?
        3. 1.3 SpringCloud Alibaba最终的技术搭配方案
        4. 1.4 项目中使用SpringCloud Alibaba
        5. 1.5 SpringCloud Alibaba的组件
          1. 1.Nacos注册中心
          2. 2.Feign声明式远程调用
          3. 3.Nacos配置中心
          4. 4.Gateway网关
      2. 2.前端开发的基础知识
    5. 五.基础篇程序设计
      1. 1.商品服务
        1. 1.1 三级分类
          1. 1.1.1 查询-递归树形结构数据获取
          2. 1.1.2 配置路由和网关和路径重写
          3. 1.2.3 查询-页面中树形显示
          4. 1.2.4 删除-删除商品分类
          5. 1.2.5 添加-添加商品分类
          6. 1.2.6 修改-修改商品的分类
        2. 1.2 品牌管理
          1. 1.2.1 品牌的增删改查功能
          2. 1.2.2 JSR303-数据校验
          3. 1.2.3 统一异常处理
          4. 1.2.4 关联分类功能
        3. 1.3 平台属性
          1. 1.3.1 属性分组功能
          2. 1.3.2 规格参数功能
          3. 1.3.3 销售属性功能
        4. 1.4 商品维护
          1. 1.4.1 SPU管理
          2. 1.4.2 发布商品
          3. 1.4.3 商品管理
      2. 2.库存系统
        1. 2.1 仓库维护
        2. 2.2 库存工作单
        3. 2.3 商品库存
        4. 2.4 采购单维护
          1. 2.4.1 采购需求
          2. 2.4.2 采购单
      3. 3.基础篇总结
    6. 六.高级篇程序设计
      1. 1.ElasticSearch
      2. 2.商城业务
        1. 2.1 商品上架
        2. 2.2 首页
          1. 2.2.1整合thymeleaf
          2. 2.2.2 首页面三级分类显示
        3. 2.3 搭建域名访问环境
        4. 2.4 性能压测
          1. 2.4.1优化中间件对性能的影响
        5. 2.5 缓存使用
          1. 2.5.1 本地缓存与分布式缓存
          2. 2.5.2 整合redis
          3. 2.5.3 高并发下缓存失效问题
          4. 2.5.4 分布式锁-Redisson
          5. 2.5.5 分布式缓存一致性问题
          6. 2.5.6 缓存-SpringCache
        6. 2.6 检索服务
          1. 2.6.1 整合页面
          2. 2.6.2 配置域名访问
          3. 2.6.3 首页和搜索页相互跳转
          4. 2.6.4 商品的检索
    最近更新

    大数据开发相关笔记

    笔记转载于黑马程序员,详细的笔记来源于:https://www.bilibili.com/video/BV1WY4y197g7/?spm_id_from=333.337.search-card.all.click&vd_source=22300b9f40de74b7db529eb8f04510a9

    + })(window)

    大数据开发相关笔记

    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    面试专题

    参考资料:

    + })(window)

    面试专题

    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    常用正则表达式大全

    一、校验数字的表达式
    1 数字:^[0-9]$
    2 n位的数字:^\d{n}$
    3 至少n位的数字:^\d{n,}$
    4 m-n位的数字:^\d{m,n}$
    5 零和非零开头的数字:^(0|[1-9][0-9])$
    6 非零开头的最多带两位小数的数字:^([1-9][0-9])+(.[0-9]{1,2})?$
    7 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
    8 正数、负数、和小数:^(-|+)?\d+(.\d+)?$
    9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
    10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
    11 非零的正整数:^[1-9]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
    12 非零的负整数:^-[1-9][]0-9”$ 或 ^-[1-9]\d$
    13 非负整数:^\d+$ 或 ^[1-9]\d|0$
    14 非正整数:^-[1-9]\d|0$ 或 ^((-\d+)|(0+))$
    15 非负浮点数:^\d+(.\d+)?$ 或 ^[1-9]\d.\d|0.\d[1-9]\d|0?.0+|0$
    16 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d.\d|0.\d[1-9]\d))|0?.0+|0$
    17 正浮点数:^[1-9]\d.\d|0.\d[1-9]\d$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
    18 负浮点数:^-([1-9]\d.\d|0.\d[1-9]\d)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
    19 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d.\d|0.\d[1-9]\d|0?.0+|0)$

    + })(window)

    常用正则表达式大全

    一、校验数字的表达式
    1 数字:^[0-9]$
    2 n位的数字:^\d{n}$
    3 至少n位的数字:^\d{n,}$
    4 m-n位的数字:^\d{m,n}$
    5 零和非零开头的数字:^(0|[1-9][0-9])$
    6 非零开头的最多带两位小数的数字:^([1-9][0-9])+(.[0-9]{1,2})?$
    7 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
    8 正数、负数、和小数:^(-|+)?\d+(.\d+)?$
    9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
    10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
    11 非零的正整数:^[1-9]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
    12 非零的负整数:^-[1-9][]0-9”$ 或 ^-[1-9]\d$
    13 非负整数:^\d+$ 或 ^[1-9]\d|0$
    14 非正整数:^-[1-9]\d|0$ 或 ^((-\d+)|(0+))$
    15 非负浮点数:^\d+(.\d+)?$ 或 ^[1-9]\d.\d|0.\d[1-9]\d|0?.0+|0$
    16 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d.\d|0.\d[1-9]\d))|0?.0+|0$
    17 正浮点数:^[1-9]\d.\d|0.\d[1-9]\d$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
    18 负浮点数:^-([1-9]\d.\d|0.\d[1-9]\d)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
    19 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d.\d|0.\d[1-9]\d|0?.0+|0)$

    二、校验字符的表达式
    1 汉字:^[\u4e00-\u9fa5]{0,}$
    2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    3 长度为3-20的所有字符:^.{3,20}$
    4 由26个英文字母组成的字符串:^[A-Za-z]+$
    5 由26个大写英文字母组成的字符串:^[A-Z]+$
    6 由26个小写英文字母组成的字符串:^[a-z]+$
    7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
    8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
    9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
    10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
    11 可以输入含有^%&’,;=?$"等字符:[^%&’,;=?$\x22]+
    12 禁止输入含有的字符:[^\x22]+

    三、特殊需求表达式
    1 Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)$
    2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
    3 InternetURL:[a-zA-z]+://[^\s] 或 ^https://([\w-]+.)+[\w-]+(/[\w-./?%&=])?$
    4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    5 电话号码(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$
    6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
    7 身份证号:
    15或18位身份证:^\d{15}|\d{18}$
    15位身份证:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
    18位身份证:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
    8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
    9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
    11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.[A-Z]).{8,10}$
    12 日期格式:^\d{4}-\d{1,2}-\d{1,2}
    13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
    14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
    15 钱的输入格式:
    16 1.有四种钱的表示形式我们可以接受:”10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:^[1-9][0-9]$
    17 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符”0”不通过,所以我们采用下面的形式:^(0|[1-9][0-9])$
    18 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9])$
    19 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
    20 5.必须说明的是,小数点后面至少应该有1位数,所以”10.”是不通过的,但是 “10” 和 “10.2” 是通过的:^[0-9]+(.[0-9]{2})?$
    21 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$
    22 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})(.[0-9]{1,2})?$
    23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3}))(.[0-9]{1,2})?$
    24 备注:这就是最终结果了,别忘了”+”可以用””替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
    25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
    26 中文字符的正则表达式:[\u4e00-\u9fa5]
    27 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
    28 空白行的正则表达式:\n\s\r (可以用来删除空白行)
    29 HTML标记的正则表达式:<(\S?)[^>]>.?|<.? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
    30 首尾空白字符的正则表达式:^\s|\s$或(^\s)|(\s$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
    31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
    32 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
    33 IP地址:\d+.\d+.\d+.\d+ (提取IP地址时有用)

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    VMWare虚拟机安装Linux教程

    1.下载CentOs镜像文件

    这里下载的是7版本的 如果有其他的需要 自行安装其他的版本

    + })(window)

    VMWare虚拟机安装Linux教程

    1.下载CentOs镜像文件

    这里下载的是7版本的 如果有其他的需要 自行安装其他的版本

    下载完成之后 记录好安装的位置

    阿里镜像下载地址:https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.0.4eab4511uQRsgc

    image-20230510224239950

    @@ -240,8 +233,8 @@

    FinalShell的下载地址

    下载地址: http://www.hostbuf.com/downloads/finalshell_install.exe

    Tips:

    ​ 这里我们没有设置Linux的静态IP,电脑每次网络变化之后,IP地址会发生变化,这时我们需要获取最新的IP地址,重新执行以上的连接步骤。如果想要IP地址固定,我们可以设置静态IP,设置静态的IP的方法如下:

    -

    Linux设置静态IP | The Blog (gitee.io)

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论

    MySql基础进阶运维篇PDF笔记

    1.PDF笔记

    1.1MySql基础篇PDF笔记

    - -
    - -
    - - - - -

    1.2MySql进阶篇PDF笔记

    - -
    - -
    - - - - -

    1.3MySql运维篇PDF笔记

    - -
    - -
    - - - - - - - - -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    \ No newline at end of file diff --git a/posts/50908.html b/posts/50908.html index 5edf91f48..c7419f181 100644 --- a/posts/50908.html +++ b/posts/50908.html @@ -1,24 +1,17 @@ ElementUI使用示例 | The Blog - + - + -

    ElementUI使用示例

    ElementUI官网

    + })(window)

    ElementUI使用示例

    ElementUI官网

    一.树形显示-树形控件

    1.树形显示

    示例-以谷粒商城项目的商品分类为例

    数据中商品分类的数据表,所有的分类数据在同一张表中

    image-20230530174911409 @@ -240,7 +233,7 @@

    实现的效果

    image-20230605163004850

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    常用的DOS命令

    1.一些基础的DOS命令

    1
    c:\javacode>dir	  //查看C盘javacode目录下有那些文件
    + })(window)

    常用的DOS命令

    1.一些基础的DOS命令

    1
    c:\javacode>dir	  //查看C盘javacode目录下有那些文件
    1
    c:\javacode>cd /D d:   //从C盘切换到D盘
    @@ -206,7 +199,7 @@

    3.MySql的相关DOS命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    //开启MySQL和关闭MySQL服务
    >net start mysql //开
    >new stop mysql //关


    //登录mysql的命令
    >mysql -u 用户名 -p密码 //密码可以先不输入,直接回车输入,或者直接写在p的后面,中间不要空格



    //连接mysql服务(mysql数据库)的指令
    >mysql -h 主机ip -P端口 -u 用户名 -p密码
    //tips:
    //p和密码中间不要有空格
    //-p后面没有密码的话,会让回车的时候输入密码
    //如果没有写-h主机,默认就是本机
    //如果没有写-P端口,默认就是3306
    //在实际的工作中端口一般会修改,使用3306这一端口,容易被黑客发现并攻击





    //备份数据库的命令
    //备份整个数据库
    >mysqldump -u root -p -B 数据库 数据库 > c:\\test\\bak.sql
    //备份数据库的某个表
    >mysqldump -u root -p 数据库 表1 表2 表n > c:\\test\\bak.sql
    //这里就是把数据库hsp_db02 和数据库hsp_db03备份在C盘下面test目录中一个叫bak.sql的文件中,这里备份的是sql语句




    //根据备份的文件,恢复数据库
    //第一种方式
    >source c:\\test\\bak.sql //根据C盘下面的c:\\test\\bak.sql的文件恢复数据库
    //第二种方式
    //直接把这个.sql的文件再执行一遍,就会恢复两个数据库了

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    开源项目-若依框架

    一.若依简介

    官网简介

    + })(window)

    开源项目-若依框架

    一.若依简介

    官网简介

    RuoYi 是一个后台管理系统,主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。

    单体版本技术栈:Spring Boot、Apache Shiro、MyBatis、Thymeleaf

    前后端分离版本技术栈:SpringBoot、Spring Security、Jwt、Vue

    @@ -245,7 +238,7 @@
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    handleLogin() {
    this.$refs.loginForm.validate(valid => {
    if (valid) {
    this.loading = true;
    if (this.loginForm.rememberMe) {
    Cookies.set("username", this.loginForm.username, { expires: 30 });
    Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
    Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
    } else {
    Cookies.remove("username");
    Cookies.remove("password");
    Cookies.remove('rememberMe');
    }
    this.$store.dispatch("Login", this.loginForm).then(() => {
    this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
    }).catch(() => {
    this.loading = false;
    if (this.captchaEnabled) {
    this.getCode();
    }
    });
    }
    });
    }

    4.后端登录的实现逻辑

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    Mybatis-Plus的使用教程

    官方文档:MyBatis-Plus

    + })(window)

    Mybatis-Plus的使用教程

    官方文档:MyBatis-Plus

    常用插件

    1.公共字段填充

    对于每个实体类共有的属性字段,例如创建时间、修改时间、创建人、修改人,我们可以使用公共字段填充,来统一填充这些字段,这样我们在创建这些实体类的对象的时候就不需要set这些属性,实现丝滑开发

    1
    2
    3
    4
    @TableField(fill = FieldFill.INSERT) //插入的时候填充
    private String gmtCreate;
    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改的时候填充
    private String gmtModified;
    @@ -209,7 +202,7 @@ -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    Thymeleaf教程

    Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择。

    + })(window)

    Thymeleaf教程

    Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择。

    image-20230706152329777

    教程: https://www.thymeleaf.org

    项目集成Thymeleaf

    1.导入依赖

    @@ -231,7 +224,7 @@ -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    Linux运维管理面板-1Panel

    一.官方文档

    官网:1Panel - 现代化、开源的 Linux 服务器运维管理面板

    + })(window)

    Linux运维管理面板-1Panel

    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    SSM框架基础知识及整合

    PDF版本的笔记

    + })(window)

    SSM框架基础知识及整合

    PDF版本的笔记

    Mybatis

    @@ -208,7 +201,7 @@ -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    免费域名注册教程

    一.域名注册

    免费域名注册网址:https://nic.eu.org

    + })(window)

    免费域名注册教程

    一.域名注册

    免费域名注册网址:https://nic.eu.org

    image-20230913123344514

    1.注册账号

    第一步:点击: here

    image-20230913123704246

    @@ -214,7 +207,7 @@

    点击Submit按钮之后显示如下的内容表示这个免费的域名是可以申请到的,然后等待人工审核通过

    image-20230913132918535

    审核通过之后,你注册时使用的邮箱就会收到信息

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    OCR-图片文字识别

    一.什么是OCR

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程

    + })(window)

    OCR-图片文字识别

    一.什么是OCR

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程

    @@ -237,7 +230,7 @@

    2.配置文件中添加配置

    1
    2
    3
    tess4j:
    data-path: C:\workspace\tessdata # 字体库的路径
    language: chi_sim # 识别的字体d
    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论

    SpringBoot入门教程

    尚硅谷雷丰阳的SpringBoot零基础入门教程

    + })(window)

    SpringBoot入门教程

    尚硅谷雷丰阳的SpringBoot零基础入门教程

    本视频笔记地址:https://yuque.com/atguigu/springboot

    本视频源码地址:https://gitee.com/leifengyang/springboot2

    Spring官网: https://spring.io/

    @@ -214,8 +207,8 @@
  • idea 2019.1.2
  • **Maven的配置教程: **

    -

    Maven配置文件settings.xml | The Blog (gitee.io)

    -

    开发环境的搭建 | The Blog (gitee.io)

    +

    Maven配置文件settings.xml | The Blog (gitee.io)

    +

    开发环境的搭建 | The Blog (gitee.io)

    2.HelloWorld

    需求:浏览发送/hello请求,响应 Hello,Spring Boot 2

    1创建maven工程

    image-20230725160846882

    @@ -842,7 +835,7 @@

    3.视图解析与模板引擎

    视图解析:SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染

    3.1 视图解析

    image-20230815091741019

    -

    3.2 模板引擎-Thymeleaf

    详细的使用教程: https://jasonsgong.gitee.io/posts/54835.html

    +

    3.2 模板引擎-Thymeleaf

    详细的使用教程: https://jasonsgong.gitee.io/posts/54835.html

    3.2.1 Thymeleaf的使用

    1.引入依赖

    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    @@ -886,7 +879,7 @@

    3.MultipartAutoConfiguration

    1
    2
    3
    4
    5
    6
    @Configuration(proxyBeanMethods = false)
    @ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class })
    @ConditionalOnProperty(prefix = "spring.servlet.multipart", name = "enabled", matchIfMissing = true)
    @ConditionalOnWebApplication(type = Type.SERVLET)
    @EnableConfigurationProperties(MultipartProperties.class)
    public class MultipartAutoConfiguration {}
    -

    6.异常处理

    开发中异常处理方法: https://jasonsgong.gitee.io/posts/31385.html

    +

    6.异常处理

    开发中异常处理方法: https://jasonsgong.gitee.io/posts/31385.html

    1.默认规则

    • 默认情况下,Spring Boot提供/error处理所有错误的映射
    • 对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,响应一个“ whitelabel”错误视图,以HTML格式呈现相同的数据
    • @@ -1534,7 +1527,7 @@
    •  引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml
    • 总结: 指定环境优先,外部优先,后面的可以覆盖前面的同名配置项

      -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.SpringBoot2核心技术-基础入门
      1. 1.Spring能做什么
      2. 2.SpringBoot
        1. 2.1 SpringBoot的优点
        2. 2.2、SpringBoot缺点
        3. 2.3 官方文档
      3. 3.SpringBoot入门
        1. 1.系统的要求
        2. 2.HelloWorld
        3. 3.简化配置
        4. 4.简化部署
      4. 4.了解自动装配原理
        1. 4.1 依赖管理
          1. 1.SpringBoot的自动版本仲裁机制
          2. 2.Starters场景启动器
        2. 4.2 自动配置
        3. 4.3 容器功能
          1. 1.组件添加
            1. 1.1 @Configuration
            2. 1.2 @Bean @Component @Controller @Service @Repository
            3. 1.3 @ComponentScan @Import
            4. 1.4 @Conditional 条件装配:满足Conditional指定的条件,则进行组件注入
          2. 2.原生配置文件的引入
            1. 2.1、@ImportResource
          3. 3.配置绑定
            1. 3.1 @ConfigurationProperties
        4. 4.4 自动配置原理入门
          1. 1.引导加载自动配置类
          2. 2.按需开启自动配置项
          3. 3.修改默认配置
          4. 3.4.最佳实践
        5. 4.5 简化开发
          1. 1.Lombok
          2. 2.简化日志开发
        6. 3.dev-tools
        7. 4.Spring Initailizr(项目初始化向导)
    2. 二.SpringBoot2核心技术-核心功能
      1. 一.配置文件
        1. 1、文件类型
          1. 1.1、properties
          2. 1.2、yaml
            1. 1.2.1、简介
            2. 1.2.2、基本语法
            3. 1.2.3、数据类型
            4. 1.2.4、示例
        2. 2、配置提示
      2. 二.Web开发
        1. 1.简单的功能分析
          1. 1.1 静态资源访问
            1. 1.静态资源目录
            2. 2.静态资源访问前缀
            3. 3.webjar
          2. 1.2 欢迎页支持
          3. 1.3 自定义 Favicon
          4. 1.4 静态资源配置原理
        2. 2.请求参数处理与数据响应
          1. 2.1、请求映射
            1. 1、rest使用与原理
            2. 2、请求映射原理
          2. 2.2、普通参数与基本注解
            1. 1.注解
            2. 2.Servlet API
            3. 3.复杂参数:
            4. 4.自定义对象参数
          3. 2.3 参数处理原理
          4. 2.4 数据响应与内容协商
            1. 2.4.1 相关依赖的引入
            2. 2.4.2 内容协商原理
            3. 2.4.3 自定义MessageConverter
        3. 3.视图解析与模板引擎
          1. 3.1 视图解析
          2. 3.2 模板引擎-Thymeleaf
            1. 3.2.1 Thymeleaf的使用
          3. 3.3 后台管理系统注意点
        4. 4.拦截器
          1. 1.HandlerInterceptor接口
          2. 2.拦截器实现登录检查操作
          3. 3.拦截器原理
        5. 5.文件上传
          1. 1.页面表单
          2. 2.文件上传代码
          3. 3.MultipartAutoConfiguration
        6. 6.异常处理
          1. 1.默认规则
          2. 2.自定义错误页面
        7. 7.Web原生组件注入(Servlet、Filter、Listener)
          1. 7.1 使用Servlet Api
            1. 1.原生的Servlet的使用
            2. 2.原生的Filter的使用
            3. 3.原生的Listener的使用
          2. 7.2 使用RegistrationBean
        8. 8.嵌入式Servlet容器
          1. 8.1 切换嵌入式Servlet容器
          2. 8.2 定制Servlet容器
      3. 三.数据访问
        1. 1.SQL
          1. 1.1 JDBC的使用
          2. 1.2 分析自动配置
      4. 四.单元测试
        1. 1.JUnit5的变化
        2. 2.JUnit5常用注解
        3. 3.断言
          1. 3.1 简单断言
          2. 3.2 数组断言
          3. 3.3 组合断言
          4. 3.4 异常断言
          5. 3.5 超时断言
          6. 3.6 快速失败
        4. 4.前置条件
        5. 5.嵌套测试
        6. 6.参数化测试
        7. 7.迁移指南
      5. 五.指标监控
        1. 1.SpringBoot Actuator
          1. 1.1 如何使用
          2. 1.2 常用的EndPoints
          3. 1.3 Health Endpoint
          4. 1.4 Metrics Endpoint
          5. 1.5 管理Endpoint
          6. 1.6 定制Endpoint
            1. 1.6.1 定制health endpoint
            2. 1.6.2 定制 info endpoint
            3. 1.6.3 定制Metrics信息
          7. 1.7 新增Endpoint
          8. 1.8 可视化
      6. 六.原理解析
        1. 1.Profile功能
    最近更新
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.SpringBoot2核心技术-基础入门
      1. 1.Spring能做什么
      2. 2.SpringBoot
        1. 2.1 SpringBoot的优点
        2. 2.2、SpringBoot缺点
        3. 2.3 官方文档
      3. 3.SpringBoot入门
        1. 1.系统的要求
        2. 2.HelloWorld
        3. 3.简化配置
        4. 4.简化部署
      4. 4.了解自动装配原理
        1. 4.1 依赖管理
          1. 1.SpringBoot的自动版本仲裁机制
          2. 2.Starters场景启动器
        2. 4.2 自动配置
        3. 4.3 容器功能
          1. 1.组件添加
            1. 1.1 @Configuration
            2. 1.2 @Bean @Component @Controller @Service @Repository
            3. 1.3 @ComponentScan @Import
            4. 1.4 @Conditional 条件装配:满足Conditional指定的条件,则进行组件注入
          2. 2.原生配置文件的引入
            1. 2.1、@ImportResource
          3. 3.配置绑定
            1. 3.1 @ConfigurationProperties
        4. 4.4 自动配置原理入门
          1. 1.引导加载自动配置类
          2. 2.按需开启自动配置项
          3. 3.修改默认配置
          4. 3.4.最佳实践
        5. 4.5 简化开发
          1. 1.Lombok
          2. 2.简化日志开发
        6. 3.dev-tools
        7. 4.Spring Initailizr(项目初始化向导)
    2. 二.SpringBoot2核心技术-核心功能
      1. 一.配置文件
        1. 1、文件类型
          1. 1.1、properties
          2. 1.2、yaml
            1. 1.2.1、简介
            2. 1.2.2、基本语法
            3. 1.2.3、数据类型
            4. 1.2.4、示例
        2. 2、配置提示
      2. 二.Web开发
        1. 1.简单的功能分析
          1. 1.1 静态资源访问
            1. 1.静态资源目录
            2. 2.静态资源访问前缀
            3. 3.webjar
          2. 1.2 欢迎页支持
          3. 1.3 自定义 Favicon
          4. 1.4 静态资源配置原理
        2. 2.请求参数处理与数据响应
          1. 2.1、请求映射
            1. 1、rest使用与原理
            2. 2、请求映射原理
          2. 2.2、普通参数与基本注解
            1. 1.注解
            2. 2.Servlet API
            3. 3.复杂参数:
            4. 4.自定义对象参数
          3. 2.3 参数处理原理
          4. 2.4 数据响应与内容协商
            1. 2.4.1 相关依赖的引入
            2. 2.4.2 内容协商原理
            3. 2.4.3 自定义MessageConverter
        3. 3.视图解析与模板引擎
          1. 3.1 视图解析
          2. 3.2 模板引擎-Thymeleaf
            1. 3.2.1 Thymeleaf的使用
          3. 3.3 后台管理系统注意点
        4. 4.拦截器
          1. 1.HandlerInterceptor接口
          2. 2.拦截器实现登录检查操作
          3. 3.拦截器原理
        5. 5.文件上传
          1. 1.页面表单
          2. 2.文件上传代码
          3. 3.MultipartAutoConfiguration
        6. 6.异常处理
          1. 1.默认规则
          2. 2.自定义错误页面
        7. 7.Web原生组件注入(Servlet、Filter、Listener)
          1. 7.1 使用Servlet Api
            1. 1.原生的Servlet的使用
            2. 2.原生的Filter的使用
            3. 3.原生的Listener的使用
          2. 7.2 使用RegistrationBean
        8. 8.嵌入式Servlet容器
          1. 8.1 切换嵌入式Servlet容器
          2. 8.2 定制Servlet容器
      3. 三.数据访问
        1. 1.SQL
          1. 1.1 JDBC的使用
          2. 1.2 分析自动配置
      4. 四.单元测试
        1. 1.JUnit5的变化
        2. 2.JUnit5常用注解
        3. 3.断言
          1. 3.1 简单断言
          2. 3.2 数组断言
          3. 3.3 组合断言
          4. 3.4 异常断言
          5. 3.5 超时断言
          6. 3.6 快速失败
        4. 4.前置条件
        5. 5.嵌套测试
        6. 6.参数化测试
        7. 7.迁移指南
      5. 五.指标监控
        1. 1.SpringBoot Actuator
          1. 1.1 如何使用
          2. 1.2 常用的EndPoints
          3. 1.3 Health Endpoint
          4. 1.4 Metrics Endpoint
          5. 1.5 管理Endpoint
          6. 1.6 定制Endpoint
            1. 1.6.1 定制health endpoint
            2. 1.6.2 定制 info endpoint
            3. 1.6.3 定制Metrics信息
          7. 1.7 新增Endpoint
          8. 1.8 可视化
      6. 六.原理解析
        1. 1.Profile功能
    最近更新

    Java爬虫

    视频教程1: 狂神说Java Jsoup爬虫入门实战 https://www.bilibili.com/video/BV1La4y1x7Wm?vd_source=aee5e475191b69e6c781059ab6662584

    + })(window)

    Java爬虫

    视频教程1: 狂神说Java Jsoup爬虫入门实战 https://www.bilibili.com/video/BV1La4y1x7Wm?vd_source=aee5e475191b69e6c781059ab6662584

    视频教程2:https://www.bilibili.com/video/BV1RU4y147eZ?vd_source=aee5e475191b69e6c781059ab6662584

    具体的看视频 急速入门

    入门实战教程

    1.引入依赖

    1
    2
    3
    4
    5
    6
    <!-- 爬取视频或者音频需要使用别的依赖 -->
    <dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
    </dependency>
    @@ -207,7 +200,7 @@

    image-20230509233922789

    image-20230509234019249

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    SpringCloud相关资料

    SpringCloud相关资料

    一.Eureka注册中心、Ribbon负载均衡、Nacos注册中心

    + })(window)

    SpringCloud相关资料

    SpringCloud相关资料

    一.Eureka注册中心、Ribbon负载均衡、Nacos注册中心

    @@ -224,7 +217,7 @@ -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    Java生成二维码

    SpringBoot + zxing 生成二维码

    + })(window)

    Java生成二维码

    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论

    阿里云对象存储OSS

    1.官网介绍

    ​ 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。

    + })(window)

    阿里云对象存储OSS

    1.官网介绍

    ​ 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。

    2.使用

    2.1 使用的前置准备

    (1)申请阿里云账号
    (2)实名认证
    (3)开通“对象存储OSS”服务
    (4)进入管理控制台

    2.2 创建Bucket

    点击创建Bucket

    image-20230422210404204

    @@ -261,7 +254,7 @@

    image-20230612114314757

    解决方法

    image-20230612114238391

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论

    开发环境的搭建

    1.后端环境搭建

    1.1 JDK环境的配置

    常规的安装,无需教程

    + })(window)

    开发环境的搭建

    1.后端环境搭建

    1.1 JDK环境的配置

    常规的安装,无需教程

    IDEA中设置默认的JDK

    image-20230604120610791

    选中需要设置为默认JDK的JDK

    @@ -231,7 +224,7 @@

    3.前后端公共环境的搭建

    1.Git环境的搭建

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #以下的操作在下载安装完毕之后进行
    #1.鼠标在桌面右键 选择Git Bash Here 打开控制台

    #2.配置用户名和邮箱
    git config --global user.name "用户名" #随意
    git config --global user.email "邮箱" #自己的邮箱

    #3.配置SSH免密连接
    #生成密钥
    ssh-keygen -t rsa -C "在码云上注册的邮箱地址" #连续三次回车
    #查看密钥并复制公钥的内容
    cat ~/.ssh/id_rsa.pub

    #4.将密钥的复制到码云的SSH公钥中
    #4.1添加公钥 公钥名随意 公钥内容就是上面复制的内容

    #5.测试
    ssh -T git@gitee.com
    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论

    IDEA常用快捷键

    1.常用快捷键

      + })(window)

      IDEA常用快捷键

      1.常用快捷键

      1. 在写一个main主函数的时候可以直接在键盘上敲main ,然后根据提示补全全部(模板快捷键)

      2. 在写System.out.println();输出函数代码的时候可以直接在键盘上面敲sout,然后根据提示补全(模板快捷键)

        @@ -243,7 +236,7 @@
      3. Ctrl + F 全局查找

      -
      打赏
      • 微信
        微信
      • 支付宝
        支付宝

      评论
      公告
      本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
      打赏
      • 微信
        微信
      • 支付宝
        支付宝

      评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    SpringBoot整合Logback日志

    1.创建一个SpringBoot的工程

    2.在resources目录下创建logback-spring.xml的配置文件

    创建的时候要修改日志输出的路径

    + })(window)

    SpringBoot整合Logback日志

    1.创建一个SpringBoot的工程

    2.在resources目录下创建logback-spring.xml的配置文件

    创建的时候要修改日志输出的路径

    日志的级别根据需要自己修改

    级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="10 seconds">
    <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
    <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
    <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
    <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->

    <contextName>logback</contextName>
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <property name="log.path" value="C:/AlYun/log" />

    <!-- 彩色日志 -->
    <!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
    <!-- magenta:洋红 -->
    <!-- boldMagenta:粗红-->
    <!-- cyan:青色 -->
    <!-- white:白色 -->
    <!-- magenta:洋红 -->
    <property name="CONSOLE_LOG_PATTERN"
    value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>


    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
    <!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>INFO</level>
    </filter>
    <encoder>
    <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
    <!-- 设置字符集 -->
    <charset>UTF-8</charset>
    </encoder>
    </appender>


    <!--输出到文件-->

    <!-- 时间滚动输出 level为 INFO 日志 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_info.log</file>
    <!--日志文件输出格式-->
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    <charset>UTF-8</charset>
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 每天日志归档路径以及格式 -->
    <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <!--日志文件保留天数-->
    <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日志文件只记录info级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>INFO</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <!-- 时间滚动输出 level为 WARN 日志 -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_warn.log</file>
    <!--日志文件输出格式-->
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    <charset>UTF-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <!--日志文件保留天数-->
    <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日志文件只记录warn级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>warn</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>


    <!-- 时间滚动输出 level为 ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>${log.path}/log_error.log</file>
    <!--日志文件输出格式-->
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    <charset>UTF-8</charset> <!-- 此处设置字符集 -->
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <!--日志文件保留天数-->
    <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日志文件只记录ERROR级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>ERROR</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender>

    <!--
    <logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
    <logger>仅有一个name属性,
    一个可选的level和一个可选的addtivity属性。
    name:用来指定受此logger约束的某一个包或者具体的某一个类。
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
    如果未设置此属性,那么当前logger将会继承上级的级别。
    -->
    <!--
    使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
    第一种把<root level="INFO">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
    第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:
    -->
    <!--开发环境:打印控制台-->
    <springProfile name="dev">
    <!--可以输出项目中的debug日志,包括mybatis的sql日志-->
    <logger name="com.guli" level="INFO" />

    <!--
    root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
    可以包含零个或多个appender元素。
    -->
    <root level="INFO">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="INFO_FILE" />
    <appender-ref ref="WARN_FILE" />
    <appender-ref ref="ERROR_FILE" />
    </root>
    </springProfile>


    <!--生产环境:输出到文件-->
    <springProfile name="pro">

    <root level="INFO">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="DEBUG_FILE" />
    <appender-ref ref="INFO_FILE" />
    <appender-ref ref="ERROR_FILE" />
    <appender-ref ref="WARN_FILE" />
    </root>
    </springProfile>

    </configuration>

    3.日志的样式如下图所示

    image-20230412171350769

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    项目实战-黑马头条

    一.项目介绍

    1.项目概述

    ​ 随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也越来越高。黑马头条项目正是在这样背景下开发出来。黑马头条项目采用当下火热的微服务+大数据技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻。

    + })(window)

    项目实战-黑马头条

    一.项目介绍

    1.项目概述

    ​ 随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也越来越高。黑马头条项目正是在这样背景下开发出来。黑马头条项目采用当下火热的微服务+大数据技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻。

    image-20230810153039562

    2.业务说明

    功能架构图

    image-20230810153700690

    @@ -222,7 +215,7 @@

    5.使用FinalShell连接此虚拟机

    用户名: root 密码:root IP地址: 192.168.200.130

    image-20230811104741394

    -

    1.2 Linux软件安装

    Linux中开发环境的搭建 | The Blog (gitee.io)

    +

    1.2 Linux软件安装

    Linux中开发环境的搭建 | The Blog (gitee.io)

    2.开发环境的配置

    2.1 项目依赖的环境

    • JDK1.8

    • @@ -325,7 +318,7 @@

      1.3.2 登录思路分析

      image-20230812180918302

      1.3.3 登录关键代码实现

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      package com.heima.user.service.impl;

      import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
      import com.baomidou.mybatisplus.core.toolkit.Wrappers;
      import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
      import com.heima.model.common.dtos.ResponseResult;
      import com.heima.model.common.enums.AppHttpCodeEnum;
      import com.heima.model.user.dtos.LoginDto;
      import com.heima.model.user.pojos.ApUser;
      import com.heima.user.mapper.ApUserMapper;
      import com.heima.user.service.ApUserService;
      import com.heima.utils.common.AppJwtUtil;
      import lombok.extern.slf4j.Slf4j;
      import org.apache.commons.lang3.StringUtils;
      import org.springframework.stereotype.Service;
      import org.springframework.transaction.annotation.Transactional;
      import org.springframework.util.DigestUtils;

      import java.util.HashMap;
      import java.util.Map;


      /**
      * @author Jason Gong
      * @version 1.0
      * @website https://jasonsgong.gitee.io
      * @Date 2023/8/12
      * @Description
      */
      @Service
      @Transactional
      @Slf4j
      public class ApUserServiceImpl extends ServiceImpl<ApUserMapper, ApUser> implements ApUserService {
      @Override
      public ResponseResult login(LoginDto loginDto) {
      //1 正常的登录 用户名和密码
      if(StringUtils.isNotBlank(loginDto.getPhone()) && StringUtils.isNotBlank(loginDto.getPassword())) {
      //1.1 根据手机号查询用户的信息
      ApUser dbUser = getOne(new LambdaQueryWrapper<ApUser>().eq(ApUser::getPhone, loginDto.getPhone()));
      if(dbUser == null){
      return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"用户信息不存在");
      }
      String salt = dbUser.getSalt();
      String password = loginDto.getPassword();
      String pwd = DigestUtils.md5DigestAsHex((password + salt).getBytes());
      //1.2 比对密码
      if(!pwd.equals(dbUser.getPassword())){
      return ResponseResult.errorResult(AppHttpCodeEnum.LOGIN_PASSWORD_ERROR);
      }
      //1.3 生成token
      String token = AppJwtUtil.getToken(dbUser.getId().longValue());
      Map<String,Object> map = new HashMap<>();
      map.put("token",token);
      dbUser.setSalt("");
      dbUser.setPassword("");
      map.put("user",dbUser);
      return ResponseResult.okResult(map);
      }else {
      //2.游客登录
      String token = AppJwtUtil.getToken(0L);
      Map<String,Object> map = new HashMap<>();
      map.put("token",token);
      return ResponseResult.okResult(map);
      }
      }
      }
      -

      1.3.4 使用接口工具测试

      接口测试工具使用教程:https://jasonsgong.gitee.io/posts/35630.html

      +

      1.3.4 使用接口工具测试

      接口测试工具使用教程:https://jasonsgong.gitee.io/posts/35630.html

      image-20230813165436808

      2. app端网关搭建

      网关的概述

      image-20230814142355139

      @@ -523,8 +516,8 @@

      5. app端文章详情功能

      5.1 需求分析

      image-20230816143201242

      5.2 实现方案-静态模板展示

      image-20230816143544351

      静态模板展示关键技术-Freemarker

      -

      Freemarker教程: https://jasonsgong.gitee.io/posts/29367.html

      -

      5.3 对象存储服务MinIO

      MinIO 教程: https://jasonsgong.gitee.io/posts/36397.html

      +

      Freemarker教程: https://jasonsgong.gitee.io/posts/29367.html

      +

      5.3 对象存储服务MinIO

      MinIO 教程: https://jasonsgong.gitee.io/posts/36397.html

      5.4 实现思路以及代码实现

      image-20230818210507999

      image-20230818210638036

      代码实现

      @@ -987,7 +980,7 @@
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      @Autowired
      private WmSensitiveMapper wmSensitiveMapper;

      /**
      * 自管理的敏感词审核
      * @param content
      * @param wmNews
      * @return
      */
      private boolean handleSensitiveScan(String content, WmNews wmNews) {

      boolean flag = true;

      //获取所有的敏感词
      List<WmSensitive> wmSensitives = wmSensitiveMapper.selectList(Wrappers.<WmSensitive>lambdaQuery().select(WmSensitive::getSensitives));
      List<String> sensitiveList = wmSensitives.stream().map(WmSensitive::getSensitives).collect(Collectors.toList());

      //初始化敏感词库
      SensitiveWordUtil.initMap(sensitiveList);

      //查看文章中是否包含敏感词
      Map<String, Integer> map = SensitiveWordUtil.matchWords(content);
      if(map.size() >0){
      updateWmNews(wmNews,(short) 2,"当前文章中存在违规内容"+map);
      flag = false;
      }

      return flag;
      }

      image-20231203161902523

      -

      4.9 图片识别文字审核敏感词

      详细教程: https://jasonsgong.gitee.io/posts/58456.html

      +

      4.9 图片识别文字审核敏感词

      详细教程: https://jasonsgong.gitee.io/posts/58456.html

      ①:在heima-leadnews-common中创建工具类,简单封装一下tess4j

      需要先导入pom

      1
      2
      3
      4
      5
      <dependency>
      <groupId>net.sourceforge.tess4j</groupId>
      <artifactId>tess4j</artifactId>
      <version>4.1.1</version>
      </dependency>
      @@ -1023,7 +1016,7 @@

      测试

      image-20231209214205338

      image-20231209214309957

      -

      4.11 文章定时发布

    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.项目介绍
      1. 1.项目概述
      2. 2.业务说明
      3. 3.技术栈
    2. 二.环境搭建
      1. 1.Linxu环境的搭建
        1. 1.1 虚拟机的安装
        2. 1.2 Linux软件安装
      2. 2.开发环境的配置
        1. 2.1 项目依赖的环境
        2. 2.2 后端工程的搭建
    3. 三.app端功能开发
      1. 1.app登录
        1. 1.1 用户登录逻辑
        2. 1.2 用户模块搭建
        3. 1.3 登录功能实现
          1. 1.3.1 接口定义
          2. 1.3.2 登录思路分析
          3. 1.3.3 登录关键代码实现
          4. 1.3.4 使用接口工具测试
      2. 2. app端网关搭建
        1. 2.1 搭建过程
        2. 2.2 全局过滤器实现jwt校验
      3. 3.app前端项目集成
        1. 3.1 Nginx集成前端项目步骤
      4. 4.app端文章列表功能
        1. 4.1 数据库表的创建
        2. 4.2 文章模块搭建
        3. 4.3 首页文章的列表显示
          1. 4.2.1 接口定义
          2. 4.2.2 实现思路
          3. 4.2.3 功能的关键代码实现
      5. 5. app端文章详情功能
        1. 5.1 需求分析
        2. 5.2 实现方案-静态模板展示
        3. 5.3 对象存储服务MinIO
        4. 5.4 实现思路以及代码实现
    4. 四.自媒体端功能开发
      1. 1.后端环境搭建
      2. 2.前端环境搭建
      3. 3.自媒体素材管理功能
        1. 3.1 素材管理-图片上传
          1. 3.1.1 解决图片素材实体类中获取图片userId的问题
          2. 3.1.2 图片上传接口的定义
          3. 3.1.3 代码实现
        2. 3.2 素材管理-图片列表
      4. 4.自媒体文章管理功能
        1. 4.1 频道列表查询
        2. 4.2 文章列表加载
        3. 4.3 发布文章功能(核心功能)
        4. 4.4 文章的审核功能(未实现)
          1. 4.4.1 文章审核功能介绍
          2. 4.4.2 调用第三方的审核接口
          3. 4.4.3 分布式ID的实现
          4. 4.4.4 审核功能的具体实现
        5. 4.5 app端文章保存功能
        6. 4.6 发布文章提交审核集成
          1. 4.6.1 同步调用与异步调用
          2. 4.6.2 Springboot集成异步线程调用
        7. 4.7 文章审核功能-综合测试
          1. 4.7.1 服务启动列表
          2. 4.7.2 测试情况列表
        8. 4.8 自管理敏感词过滤
          1. 4.8.1 需求
          2. 4.8.2 可选方案
          3. 4.8.3 DFA算法
          4. 4.8.4 工具类
          5. 4.8.5 项目中集成自管理敏感词过滤
        9. 4.9 图片识别文字审核敏感词
        10. 4.10 文章详情-静态文件生成
        11. 4.11 文章定时发布
    最近更新
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    目录
    1. 一.项目介绍
      1. 1.项目概述
      2. 2.业务说明
      3. 3.技术栈
    2. 二.环境搭建
      1. 1.Linxu环境的搭建
        1. 1.1 虚拟机的安装
        2. 1.2 Linux软件安装
      2. 2.开发环境的配置
        1. 2.1 项目依赖的环境
        2. 2.2 后端工程的搭建
    3. 三.app端功能开发
      1. 1.app登录
        1. 1.1 用户登录逻辑
        2. 1.2 用户模块搭建
        3. 1.3 登录功能实现
          1. 1.3.1 接口定义
          2. 1.3.2 登录思路分析
          3. 1.3.3 登录关键代码实现
          4. 1.3.4 使用接口工具测试
      2. 2. app端网关搭建
        1. 2.1 搭建过程
        2. 2.2 全局过滤器实现jwt校验
      3. 3.app前端项目集成
        1. 3.1 Nginx集成前端项目步骤
      4. 4.app端文章列表功能
        1. 4.1 数据库表的创建
        2. 4.2 文章模块搭建
        3. 4.3 首页文章的列表显示
          1. 4.2.1 接口定义
          2. 4.2.2 实现思路
          3. 4.2.3 功能的关键代码实现
      5. 5. app端文章详情功能
        1. 5.1 需求分析
        2. 5.2 实现方案-静态模板展示
        3. 5.3 对象存储服务MinIO
        4. 5.4 实现思路以及代码实现
    4. 四.自媒体端功能开发
      1. 1.后端环境搭建
      2. 2.前端环境搭建
      3. 3.自媒体素材管理功能
        1. 3.1 素材管理-图片上传
          1. 3.1.1 解决图片素材实体类中获取图片userId的问题
          2. 3.1.2 图片上传接口的定义
          3. 3.1.3 代码实现
        2. 3.2 素材管理-图片列表
      4. 4.自媒体文章管理功能
        1. 4.1 频道列表查询
        2. 4.2 文章列表加载
        3. 4.3 发布文章功能(核心功能)
        4. 4.4 文章的审核功能(未实现)
          1. 4.4.1 文章审核功能介绍
          2. 4.4.2 调用第三方的审核接口
          3. 4.4.3 分布式ID的实现
          4. 4.4.4 审核功能的具体实现
        5. 4.5 app端文章保存功能
        6. 4.6 发布文章提交审核集成
          1. 4.6.1 同步调用与异步调用
          2. 4.6.2 Springboot集成异步线程调用
        7. 4.7 文章审核功能-综合测试
          1. 4.7.1 服务启动列表
          2. 4.7.2 测试情况列表
        8. 4.8 自管理敏感词过滤
          1. 4.8.1 需求
          2. 4.8.2 可选方案
          3. 4.8.3 DFA算法
          4. 4.8.4 工具类
          5. 4.8.5 项目中集成自管理敏感词过滤
        9. 4.9 图片识别文字审核敏感词
        10. 4.10 文章详情-静态文件生成
        11. 4.11 文章定时发布
    最近更新

    内网穿透

    第一步 官网下载

    客户端下载 –> windows 64位 –>解压后得到.exe文件

    + })(window)

    内网穿透

    第一步 官网下载

    客户端下载 –> windows 64位 –>解压后得到.exe文件

    image-20230409221503708

    第二步 官网注册并登录进入后台

    官网注册登录 –> 购买免费隧道 –>获取authtoken

    image-20230409221827414

    @@ -198,7 +191,7 @@

    image-20230409222457135

    image-20230409222628425

    第四步 根据生成的域名访问服务

    image-20230409222923480

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    SpringBoot中使用定时任务

    1.在启动类上添加@EnableScheduling注解

    1
    @EnableScheduling
    + })(window)

    SpringBoot中使用定时任务

    1.在启动类上添加@EnableScheduling注解

    1
    @EnableScheduling

    2.创建定时任务类,设置cron表达式

    定时任务可以单独建立一个包 package com.atguigu.schedule

    加上@Component注解,交给spring管理,启动这个模块,定时任务就开启了

    @@ -197,7 +190,7 @@

    image-20230329184540977

    3.Corn表达式(七子[七域]表达式)生成工具

    网址: https://cron.qqe2.com/

    image-20230329184618098

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    SpringBoot整合Knife4j

    1.介绍

    一句话介绍Knife4j: Swagger的增强版,界面更好看,功能更加的丰富

    + })(window)

    SpringBoot整合Knife4j

    1.介绍

    一句话介绍Knife4j: Swagger的增强版,界面更好看,功能更加的丰富

    文档地址:https://doc.xiaominfo.com/

    image-20230505222154471

    image-20230505223651097

    @@ -202,7 +195,7 @@

    image-20230505223433369

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    公告
    本网站是静态网站,更新页面资源请使用Ctrl+F5;若网站内文章对你有帮助,请使用Ctrl+D收藏该网站!

    Linux从入门到进阶

    本篇博客转载于传智播客黑马程序员,只作在线笔记使用,详细的课程资料请关注黑马程序员!

    + })(window)

    Linux从入门到进阶

    本篇博客转载于传智播客黑马程序员,只作在线笔记使用,详细的课程资料请关注黑马程序员!

    -

    Linux相关的书籍: 技术书籍-Linux指令大全 | The Blog (gitee.io)

    +

    Linux相关的书籍: 技术书籍-Linux指令大全 | The Blog (gitee.io)

    一.初识Linux

    ​ Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    image-20230919214601245

    视频链接: https://www.bilibili.com/video/BV1n84y1i7td/?share_source=copy_web&vd_source=aee5e475191b69e6c781059ab6662584

    -

    二.Linux的安装和配置教程

    1.通过虚拟机安装Linux

    Linux安装教程: VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

    -

    Linux设置静态IP:Linux设置静态IP | The Blog (gitee.io)

    -

    2.通过WSL获取Linux环境

    安装教程: Windows10的Linux子系统WSL的安装和使用 | The Blog (gitee.io)

    +

    二.Linux的安装和配置教程

    1.通过虚拟机安装Linux

    Linux安装教程: VMWare虚拟机安装Linux教程 | The Blog (gitee.io)

    +

    Linux设置静态IP:Linux设置静态IP | The Blog (gitee.io)

    +

    2.通过WSL获取Linux环境

    安装教程: Windows10的Linux子系统WSL的安装和使用 | The Blog (gitee.io)

    三.Linux的目录结构

    image-20230919230906304

    image-20230919231127383

    四.LInux基础命令

    ls命令

    功能:列出文件夹信息

    @@ -602,7 +595,7 @@

    光标移动的快捷键

    image-20230925132050649

    小技巧汇总

    image-20230925133017257

    -
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论
    打赏
    • 微信
      微信
    • 支付宝
      支付宝

    评论