├── Blog
├── .gitignore
├── docs
│ └── theme-reco
│ │ ├── api.md
│ │ ├── theme.md
│ │ ├── plugin.md
│ │ └── README.md
├── .vuepress
│ └── public
│ │ ├── head.ico
│ │ ├── head.jpg
│ │ ├── hero.png
│ │ ├── logo.png
│ │ ├── note.jpg
│ │ ├── avatar.png
│ │ ├── favicon.ico
│ │ ├── 3e8826961ed690193a3fb720fee6bac.jpg
│ │ ├── 5f1a222c19115dc4b0f411ac0dff72b.jpg
│ │ └── 9bc0746b784d049483e300cd771ab87.jpg
├── blogs
│ └── 2022
│ │ ├── ElasticSearch
│ │ ├── assets
│ │ │ ├── image-20201115230147799.png
│ │ │ ├── image-20201115230900504.png
│ │ │ ├── image-20210109105135812.png
│ │ │ ├── image-20210506101053676.png
│ │ │ ├── image-20210506102630393.png
│ │ │ ├── image-20210506110249144.png
│ │ │ ├── image-20210506110704293.png
│ │ │ ├── image-20210506112225508.png
│ │ │ └── image-20210510165308064.png
│ │ ├── Ch02_CRUD.md
│ │ └── Ch00_Intro.md
│ │ ├── AITools
│ │ ├── Ch01_AISong.md
│ │ └── Ch00_AIPainting.md
│ │ ├── JS
│ │ ├── Ch04_BOM.md
│ │ ├── Ch03_PreParse.md
│ │ ├── Ch09_Date.md
│ │ ├── Ch08_Regex.md
│ │ ├── Ch06_css.md
│ │ ├── Ch10_CommonMethods.md
│ │ ├── Ch01_Event.md
│ │ ├── Ch02_Class.md
│ │ └── Ch05_BasicDataType.md
│ │ ├── markdown.md
│ │ ├── Model_Driven_Software_Development
│ │ ├── Ch04_Concrete_Syntex.md
│ │ ├── Task_one.md
│ │ ├── Ch03_MetaModel.md
│ │ └── Ch01_Introduction.md
│ │ ├── LLM
│ │ ├── Ch00_FineTuneLLMs.md
│ │ └── Ch01_Chainlit.md
│ │ ├── Jenkins
│ │ ├── Ch02_Basic.md
│ │ ├── Ch03_Gitee.md
│ │ └── Ch01_Intro.md
│ │ ├── JavaWeb
│ │ ├── Ch05_listener.md
│ │ ├── Ch00_CreateProject.md
│ │ ├── Ch06_Servlet.md
│ │ ├── Ch02_Response.md
│ │ └── Ch07_File.md
│ │ ├── SpringSecurity
│ │ └── Ch00_intro.md
│ │ ├── Go
│ │ ├── Ch06_Popular_Components.md
│ │ ├── Ch00_Install.md
│ │ └── Ch09_GoLinux.md
│ │ ├── Java_basic
│ │ ├── Ch02_JavaWeb_basic_structure.md
│ │ ├── Ch03_DesignPatten.md
│ │ ├── Ch05_Enum.md
│ │ ├── Ch07_File.md
│ │ ├── Ch08_Exception.md
│ │ ├── Ch11_Dynamic.md
│ │ ├── Ch09_Stream.md
│ │ ├── Ch01_JVM_basic.md
│ │ ├── Ch04_Generic.md
│ │ └── Ch10_Reflection.md
│ │ ├── SpringBoot
│ │ ├── Ch09_Notes.md
│ │ ├── Ch04_ImportResource.md
│ │ ├── Ch03_Conditional.md
│ │ ├── Ch05_ConfigureProperties.md
│ │ ├── Ch07_Yaml.md
│ │ ├── Ch06_NewProject.md
│ │ └── Ch00_HelloWorld.md
│ │ ├── HuggingFace
│ │ ├── Ch03_Notes.md
│ │ ├── Ch04_Tools.md
│ │ ├── Ch01_Env.md
│ │ └── Ch00_Basic.md
│ │ ├── react_chat
│ │ └── Ch00_intro.md
│ │ ├── PHP
│ │ ├── Ch01_Regex.md
│ │ └── Ch02_Form.md
│ │ ├── Spring
│ │ ├── Ch04_Transaction.md
│ │ ├── Ch00_CreateProject.md
│ │ └── Ch02_Annotation.md
│ │ ├── mybatis
│ │ ├── Ch03_Object.md
│ │ ├── Ch05_Config.md
│ │ ├── Ch02_Transaction.md
│ │ └── Ch00_record.md
│ │ ├── DataStructure
│ │ ├── Ch01_Linear_structure.md
│ │ ├── Ch05_Stack.md
│ │ ├── Ch04_Time_Complexity.md
│ │ ├── Ch09_Summary.md
│ │ └── Ch11_JavaBased.md
│ │ ├── Flink
│ │ ├── Ch07_DataFlow.md
│ │ ├── Ch08_DataType.md
│ │ ├── Ch03_Deploy.md
│ │ ├── Ch02_Introduction.md
│ │ ├── Ch15_Consistancy.md
│ │ ├── Ch01_Traditional.md
│ │ ├── Ch14_FaultTorlance.md
│ │ ├── Ch09_Sink.md
│ │ ├── Ch12_State.md
│ │ ├── Ch10_Streaming.md
│ │ ├── Ch17_RunningTime.md
│ │ └── Ch19_WaterMark.md
│ │ ├── Android
│ │ └── Ch02_WebView.md
│ │ ├── OS
│ │ ├── Ch17_ROS.md
│ │ ├── Lab_02.md
│ │ ├── Ch16_VM.md
│ │ ├── Ch12_GFS.md
│ │ ├── Lab_01.md
│ │ ├── Ch11_File.md
│ │ ├── Ch13_IO.md
│ │ ├── Ch14_Protection.md
│ │ └── Lab_00.md
│ │ ├── XML
│ │ ├── Ch01_SAX.md
│ │ ├── Ch03_DTD.md
│ │ └── Ch02_XPATH.md
│ │ ├── Java
│ │ ├── Ch07_Callback.md
│ │ ├── Ch02_Shortcut.md
│ │ ├── Ch03_JavaDS.md
│ │ ├── Ch05_C3p0.md
│ │ └── Ch04_CommonObject.md
│ │ ├── RabbitMQ
│ │ ├── Ch00_Intro.md
│ │ └── Ch02_MQ.md
│ │ ├── Nodejs
│ │ └── Ch01_Introduction.md
│ │ ├── SuperSet
│ │ └── SuperSet_build.md
│ │ ├── Redis
│ │ ├── Ch01_Conclusion.md
│ │ └── Ch02_Application.md
│ │ ├── MySQL
│ │ ├── Ch03_Advanced.md
│ │ ├── Ch01_Basic.md
│ │ └── Ch00_Index.md
│ │ ├── solr
│ │ ├── Ch03_Useage.md
│ │ ├── Ch02_start2.md
│ │ └── Ch01_start.md
│ │ ├── DistributedSystem
│ │ ├── Ch07_Time.md
│ │ ├── Ch06_Interprocess.md
│ │ └── Ch02_Bully.md
│ │ ├── Data_warehouse
│ │ ├── Ch08_Advanced_topics.md
│ │ └── Ch01_Data_warehouse_Architecture.md
│ │ ├── MongoDB
│ │ └── Ch01_Deployment.md
│ │ ├── SpringCloud
│ │ ├── Ch01_MicroService_basics.md
│ │ ├── Ch02_service_split.md
│ │ └── Ch08_Feign_basic.md
│ │ ├── Kubernetes
│ │ ├── Ch26_Advanced.md
│ │ ├── Ch29_Job.md
│ │ ├── Ch19_UseDashboard.md
│ │ ├── Ch20_Helm.md
│ │ └── Ch22_NFS.md
│ │ ├── Gin
│ │ └── Ch00_Intro.md
│ │ ├── DeepLearning
│ │ └── Ch01_practice2.md
│ │ ├── VuePress
│ │ └── VuePress_depoly.md
│ │ ├── DSD_VHDL
│ │ ├── Ch03.md
│ │ ├── Ch04_Component.md
│ │ ├── Ch06_Exercise.md
│ │ └── Ch01_intro.md
│ │ ├── Algorithm
│ │ ├── Ch13_DevideAndConque.md
│ │ └── Ch01_DutchFlag.md
│ │ ├── RealTimeSE
│ │ ├── Ch05_Implementation.md
│ │ ├── Ch01_Basic.md
│ │ └── Ch02_Requirement.md
│ │ ├── Service_Computing
│ │ ├── Ch03_Portals.md
│ │ ├── Ch02_CSS_Form.md
│ │ ├── Ch12_Axis_ESB.md
│ │ ├── Ch15_MicroServices.md
│ │ ├── Ch07_Dynamic_pages.md
│ │ ├── Ch13_Service_discovery.md
│ │ └── Ch01_Web_as_a_platform.md
│ │ ├── Zookeeper
│ │ ├── Ch01_Basic.md
│ │ └── Ch00_install.md
│ │ ├── TF
│ │ ├── Ch04_ActivationFunction.md
│ │ ├── Ch19_ResNet.md
│ │ ├── Ch03_Learningrate.md
│ │ └── Ch10_dataEnhance.md
│ │ ├── Linux
│ │ └── Ch00_Notes.md
│ │ ├── Prometheus
│ │ └── Ch00_Intro.md
│ │ ├── Haskell
│ │ └── Ch00_Basic.md
│ │ ├── React
│ │ └── Ch01_install.md
│ │ ├── Leetcode
│ │ └── Ch10_More.md
│ │ ├── Notes
│ │ └── Ch00_pressure.md
│ │ ├── Kafka
│ │ └── Ch00_intro.md
│ │ ├── Cloud_Computing
│ │ └── Ch00_intro.md
│ │ ├── HuaweiCloud
│ │ ├── Ch09_OpenSource.md
│ │ └── Ch02_Concept.md
│ │ ├── Nginx
│ │ └── Ch00_Basic.md
│ │ ├── SSM
│ │ └── Ch01_Mybatis.md
│ │ └── Docker
│ │ └── Ch01_Docker.md
├── Dockerfile
├── package.json
└── README.md
├── README.md
├── blog-service.yaml
└── blog-deployment.yaml
/Blog/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | yarn.lock
3 | yarn.error
4 | /public*/
--------------------------------------------------------------------------------
/Blog/docs/theme-reco/api.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: api
3 | date: 2020-05-29
4 | ---
5 |
6 | This is api.
--------------------------------------------------------------------------------
/Blog/docs/theme-reco/theme.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: theme
3 | date: 2020-05-27
4 | ---
5 |
6 | This is theme.
--------------------------------------------------------------------------------
/Blog/docs/theme-reco/plugin.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: plugin
3 | date: 2020-05-28
4 | ---
5 |
6 | This is plugin.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Personal-Blog
2 |
3 |
4 |
5 |
6 |
7 | This is a personal blog with k8s deployment.
8 |
9 |
--------------------------------------------------------------------------------
/Blog/docs/theme-reco/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: theme-reco
3 | date: 2020-05-29
4 | ---
5 |
6 | This is theme-reco.
--------------------------------------------------------------------------------
/Blog/.vuepress/public/head.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/head.ico
--------------------------------------------------------------------------------
/Blog/.vuepress/public/head.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/head.jpg
--------------------------------------------------------------------------------
/Blog/.vuepress/public/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/hero.png
--------------------------------------------------------------------------------
/Blog/.vuepress/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/logo.png
--------------------------------------------------------------------------------
/Blog/.vuepress/public/note.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/note.jpg
--------------------------------------------------------------------------------
/Blog/.vuepress/public/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/avatar.png
--------------------------------------------------------------------------------
/Blog/.vuepress/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/favicon.ico
--------------------------------------------------------------------------------
/Blog/.vuepress/public/3e8826961ed690193a3fb720fee6bac.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/3e8826961ed690193a3fb720fee6bac.jpg
--------------------------------------------------------------------------------
/Blog/.vuepress/public/5f1a222c19115dc4b0f411ac0dff72b.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/5f1a222c19115dc4b0f411ac0dff72b.jpg
--------------------------------------------------------------------------------
/Blog/.vuepress/public/9bc0746b784d049483e300cd771ab87.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/.vuepress/public/9bc0746b784d049483e300cd771ab87.jpg
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20201115230147799.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20201115230147799.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20201115230900504.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20201115230900504.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210109105135812.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210109105135812.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210506101053676.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210506101053676.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210506102630393.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210506102630393.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210506110249144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210506110249144.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210506110704293.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210506110704293.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210506112225508.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210506112225508.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/assets/image-20210510165308064.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0YHR0/Personal-Blog/HEAD/Blog/blogs/2022/ElasticSearch/assets/image-20210510165308064.png
--------------------------------------------------------------------------------
/Blog/blogs/2022/AITools/Ch01_AISong.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 AI Song
3 | date: 2024-06-24
4 | tags:
5 | - AISong
6 | categories:
7 | - AIGC
8 |
9 |
10 | ---
11 |
12 | # Online use
13 |
14 | https://suno.com/
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch04_BOM.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 BOM
3 | date: 2019-09-13
4 | tags:
5 | - JS
6 | categories:
7 | - JS
8 |
9 | ---
10 |
11 | # BOM
12 |
13 | https://blog.csdn.net/lhjuejiang/article/details/79453407
--------------------------------------------------------------------------------
/Blog/blogs/2022/markdown.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Markdown
3 | date: 2018-10-01
4 | tags:
5 | - markdown
6 | categories:
7 | - Markdown
8 | ---
9 |
10 | # markdown
11 |
12 | https://www.runoob.com/markdown/md-paragraph.html
--------------------------------------------------------------------------------
/Blog/blogs/2022/Model_Driven_Software_Development/Ch04_Concrete_Syntex.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 concrete syntex
3 | date: 2022-04-21
4 | tags:
5 | - Model
6 | categories:
7 | - MDSD
8 | ---
9 |
10 | # Concrete syntex
11 |
12 |
--------------------------------------------------------------------------------
/Blog/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:alpine
2 | WORKDIR /usr/share/nginx/html
3 | ADD ./public/ /usr/share/nginx/html/
4 | # ADD etc/nginx/nginx.conf /etc/nginx/nginx.conf
5 | # ADD etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
6 | EXPOSE 80
7 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/LLM/Ch00_FineTuneLLMs.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Fine Tune LLMs
3 | date: 2024-06-11
4 | tags:
5 | - LLMs
6 | categories:
7 | - LLMs
8 | ---
9 |
10 |
11 |
12 | # Fine Tune LLMs
13 |
14 |
15 |
16 | Details see: https://github.com/0YHR0/FineTuneLLMs
--------------------------------------------------------------------------------
/Blog/blogs/2022/Jenkins/Ch02_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Basic
3 | date: 2023-01-21
4 | tags:
5 | - Jenkins
6 | categories:
7 | - Jenkins
8 | ---
9 |
10 | # Basic
11 |
12 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/JavaWeb/Ch05_listener.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05_Listener
3 | date: 2019-05-29
4 | tags:
5 | - Java
6 | categories:
7 | - JavaWeb
8 |
9 | ---
10 |
11 | # Listener
12 |
13 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringSecurity/Ch00_intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Introduction
3 | date: 2022-12-16
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Spring Security
9 |
10 | ---
11 |
12 | # 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Go/Ch06_Popular_Components.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch06_Popular Components
3 | date: 2023-01-23
4 | tags:
5 | - Go
6 | categories:
7 | - Go
8 |
9 |
10 | ---
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | # log: Logrus https://github.com/sirupsen/logrus
21 |
22 | # 定时任务: Corn https://github.com/robfig/cron
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch02_JavaWeb_basic_structure.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Javaweb基本结构
3 | date: 2019-04-12
4 | tags:
5 | - Java
6 | - JVM
7 | categories:
8 | - JVM
9 |
10 | ---
11 |
12 | # Javaweb基本结构
13 |
14 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Jenkins/Ch03_Gitee.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_Gitee
3 | date: 2023-01-21
4 | tags:
5 | - Jenkins
6 | categories:
7 | - Jenkins
8 |
9 | ---
10 |
11 | # Jenkins + Gitee
12 |
13 | 
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch09_Notes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09 Notes
3 | date: 2021-09-18
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 |
10 | ---
11 |
12 | # Notes
13 |
14 | 连接postgresql
15 |
16 | ```yaml
17 | url: jdbc:postgresql://地址:端口/数据库?currentSchema=你的模式&characterEncoding=UTF-8
18 | ```
19 |
20 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/HuggingFace/Ch03_Notes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_Notes
3 | date: 2024-01-26
4 | tags:
5 | - HuggingFace
6 | categories:
7 | - NLP
8 | ---
9 |
10 |
11 |
12 |
13 |
14 | #### Generation prompts的意思
15 |
16 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/react_chat/Ch00_intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 chat
3 | date: 2022-11-17
4 | tags:
5 | - react
6 | - chat
7 | categories:
8 | - React
9 |
10 |
11 | ---
12 |
13 |
14 |
15 | https://github.com/0YHR0/react-native-gifted-chat
16 |
17 | 在example文件夹下删除yarn.lock 和.expo
18 |
19 | 执行expo upgrade 47
20 |
21 | 运行npm start
--------------------------------------------------------------------------------
/Blog/blogs/2022/PHP/Ch01_Regex.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_regex
3 | date: 2019-10-23
4 | tags:
5 | - regex
6 | - php
7 | categories:
8 | - PHP
9 | ---
10 |
11 | # Regex
12 |
13 | 
14 |
15 | 详细信息:https://www.jb51.net/article/160947.htm
--------------------------------------------------------------------------------
/Blog/blogs/2022/Spring/Ch04_Transaction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 Transaction
3 | date: 2019-08-05
4 | tags:
5 | - Spring
6 | - Java
7 | categories:
8 | - Spring
9 | ---
10 |
11 | # Transaction
12 |
13 | 应该是add*等等,要加*号表示配置事务
14 |
15 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Model_Driven_Software_Development/Task_one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Task One
3 | date: 2022-04-21
4 | tags:
5 | - Model
6 | categories:
7 | - MDSD
8 |
9 | ---
10 |
11 | ## Task one
12 |
13 | pragmatic: entertaining kids
14 |
15 | showing the real railway
16 |
17 | crying things around
18 |
19 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/PHP/Ch02_Form.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Form
3 | date: 2019-10-23
4 | tags:
5 | - form
6 | - php
7 | categories:
8 | - PHP
9 | ---
10 |
11 | # Form
12 |
13 | Form提交表单:
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch03_DesignPatten.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_DesignPattern
3 | date: 2019-04-13
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 | ---
11 |
12 | # DesignPattern
13 |
14 | 
15 |
16 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/HuggingFace/Ch04_Tools.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04_Tools
3 | date: 2024-01-26
4 | tags:
5 | - HuggingFace
6 | categories:
7 | - NLP
8 |
9 | ---
10 |
11 |
12 |
13 | ### Pandas
14 |
15 | 
16 |
17 | 
--------------------------------------------------------------------------------
/blog-service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | labels:
5 | k8s-app: blog
6 | name: blog
7 | namespace: blog
8 | spec:
9 | externalTrafficPolicy: Cluster
10 | ports:
11 | - name: blog
12 | port: 10080
13 | protocol: TCP
14 | targetPort: 80
15 | selector:
16 | k8s-app: blog
17 | type: LoadBalancer
18 | status:
19 | loadBalancer:
20 | ingress:
21 | - hostname: localhost
22 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/mybatis/Ch03_Object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Mybatis重要对象
3 | date: 2019-10-23
4 | tags:
5 | - Java
6 | - Mybatis
7 | categories:
8 | - Mybatis
9 |
10 | ---
11 |
12 | # Mybatis重要对象
13 |
14 | 
15 |
16 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/DataStructure/Ch01_Linear_structure.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Linear structure and non-linear structure
3 | date: 2019-06-11
4 | tags:
5 | - Data structure
6 | categories:
7 | - Data structure
8 |
9 | ---
10 |
11 | # Linear structure and non-linear structure
12 |
13 |
14 |
15 | **线性结构:数据元素之间存在一对一的线性关系**
16 |
17 | - 顺序存储结构:存储空间连续
18 | - 链式存储结构:存储空间不一定是连续的
19 |
20 | 例如:数组,链表,栈,队列
21 |
22 | **非线性结构:多维数组,广义表,树结构,图结构**
23 |
24 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch07_DataFlow.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07_DataFlow
3 | date: 2021-03-26
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 |
11 |
12 | ---
13 |
14 | # DataFlow
15 |
16 | 
17 |
18 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Android/Ch02_WebView.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Webview
3 | date: 2021-05-07
4 | tags:
5 | - Android
6 | categories:
7 | - Android
8 | ---
9 |
10 | # Webview
11 |
12 | ```java
13 | webView = findViewById(R.id.web_01);
14 | //加载本地HTML
15 | //webView.loadUrl("file:///android_asset/echarts.html");
16 | //加载网络url
17 | webView.getSettings().setJavaScriptEnabled(true);
18 | webView.loadUrl("https://m.baidu.com");
19 | ```
20 |
21 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch04_ImportResource.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 ImportResource
3 | date: 2021-08-12
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 |
10 | ---
11 |
12 | 在别的项目中如果别人bean是用原生配置文件写的,可以使用该注解进行引入
13 |
14 | 
15 |
16 | 
17 |
18 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch05_Enum.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05_Enum
3 | date: 2019-04-17
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 | ---
11 |
12 | # 
13 |
14 | Season单例模式示例:
15 |
16 | Season枚举类示例:和一般的类一样,可以实现接口,直接implements 接口名 就可以
17 |
18 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/AITools/Ch00_AIPainting.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Stable Diffusion
3 | date: 2024-05-05
4 | tags:
5 | - Stable Diffusion
6 | categories:
7 | - AIGC
8 |
9 | ---
10 |
11 | # Stable Diffusion
12 |
13 |
14 |
15 | ### 扩散原理
16 |
17 |
18 |
19 | 
20 |
21 |
22 |
23 |
24 |
25 | ## Use Online
26 |
27 | https://www.esheep.com/
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Go/Ch00_Install.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00_Install
3 | date: 2022-12-04
4 | tags:
5 | - Go
6 | categories:
7 | - Go
8 | ---
9 |
10 | # 环境配置
11 |
12 | 下载依赖:https://go.dev/dl/
13 |
14 | 配置环境变量:
15 |
16 | ```shell
17 | GOROOT=go的安装目录
18 | GOPATH=go的依赖下载目录
19 | ```
20 |
21 |
22 |
23 |
24 |
25 | 只有main package下的main函数才会被执行
26 |
27 | HelloWorld.go
28 |
29 | ```go
30 | package main
31 |
32 | import "fmt"
33 |
34 | func main() {
35 | fmt.Println("Hello, I am bubu!")
36 | }
37 |
38 | ```
39 |
40 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Ch17_ROS.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch17 ROS
3 | date: 2022-05-28
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 |
10 | ---
11 |
12 | # ROS
13 |
14 | - what is robot operating system:
15 | - roscore
16 | - 
--------------------------------------------------------------------------------
/Blog/blogs/2022/XML/Ch01_SAX.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_SAX
3 | date: 2019-11-29
4 | tags:
5 | - xml
6 | - SAX
7 | categories:
8 | - XML
9 | ---
10 |
11 | # SAX
12 |
13 | 
14 |
15 | 
16 |
17 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch03_PreParse.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Preparse
3 | date: 2019-09-12
4 | tags:
5 | - JS
6 | categories:
7 | - JS
8 | ---
9 |
10 | # Preparse
11 |
12 | 
13 |
14 | 
15 |
16 | ```sh
17 | 结果
18 |
19 | 9
20 |
21 | 9
22 |
23 | 9
24 |
25 | 9
26 |
27 | 9
28 |
29 | undefined
30 | ```
31 |
32 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java/Ch07_Callback.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07_Callback
3 | date: 2019-06-11
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # Callback
12 |
13 | 
14 |
15 | 
16 |
17 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch09_Date.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09 Date
3 | date: 2019-10-06
4 | tags:
5 | - Date
6 | categories:
7 | - JS
8 | ---
9 |
10 | # Date class
11 |
12 | Data每次new的时候都会获取当前最新的时间,并且会显示时区
13 |
14 | ```js
15 | var date = new Date();
16 | var data1 = new Date("12/01/1999 11:10:59");//不传参数默认当前时间,传了参数就会显示参数的时间
17 | /*
18 | 日期格式:月/日/年 时:分:秒
19 | 年份务必写完整
20 | */
21 | alert(data1.getDay());//返回星期几 0-6 周日是0
22 | alert(data1.getDate());//返回几月份
23 | // alert(date);
24 | var i = Date.now();//获取当前时间的时间戳:从1970年1.1开始到当前时刻的毫秒数,可以用来测试代码的执行效率
25 | ```
26 |
27 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/RabbitMQ/Ch00_Intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Intro
3 | date: 2022-11-22
4 | tags:
5 | - RabbitMQ
6 | - MQ
7 | categories:
8 | - RabbitMQ
9 |
10 | ---
11 |
12 |
13 |
14 | ## 
15 |
16 | 
17 |
18 | + 削峰,解耦,异步
19 |
20 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/mybatis/Ch05_Config.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05 Config
3 | date: 2019-10-28
4 | tags:
5 | - Java
6 | - Mybatis
7 | categories:
8 | - Mybatis
9 |
10 | ---
11 |
12 | # Config
13 |
14 | 配置文件
15 |
16 | 
17 |
18 | 
19 |
20 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Nodejs/Ch01_Introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Introduction
3 | date: 2020-12-25
4 | tags:
5 | - Nodejs
6 | categories:
7 | - Nodejs
8 | ---
9 |
10 | # Introduction
11 |
12 | Chrome中js运行环境:
13 |
14 | 
15 |
16 |
17 |
18 | Node.js是一个基于javascript的v8运行环境
19 |
20 | 
21 |
22 | + Node.js中无法调用BOM DOM等浏览器内置api
23 |
24 |
25 |
26 | NodeJs LTS是长期稳定版,推荐企业级项目使用
27 |
28 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SuperSet/SuperSet_build.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: SuperSet(Apache开源数据大屏)
3 | date: 2021-12-28
4 | tags:
5 | - Data
6 | categories:
7 | - SuperSet
8 |
9 | ---
10 |
11 | # SuperSet(Apache开源数据大屏)
12 |
13 | ## 搭建过程
14 |
15 | 参照官网:https://superset.apache.org/docs/installation/installing-superset-using-docker-compose
16 |
17 | docker安装:
18 |
19 | 需要python3环境 https://www.cnblogs.com/marvin-wen/p/13066152.html
20 |
21 | Git clone下载太慢解决办法:在https://ghproxy.com/后面加git的地址,注意保留https://
22 | 像这样git clone https://ghproxy.com/https://github.com/...
23 |
24 |
25 |
26 | 也可以参照鱼皮视频教程:https://www.bilibili.com/video/BV1eT4y197w6
--------------------------------------------------------------------------------
/Blog/blogs/2022/Redis/Ch01_Conclusion.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Conclusion
3 | date: 2019-08-08
4 | tags:
5 | - redis
6 | categories:
7 | - Redis
8 | ---
9 |
10 | # Conclusion
11 |
12 | 
13 |
14 | 
15 |
16 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch08_DataType.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch08_DataType
3 | date: 2021-03-26
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 | ---
11 |
12 | # DataType
13 |
14 | 1.Java,Scala基本数据类型
15 |
16 | 2.Java,Scala的元组类型(Tuple)
17 |
18 | 3. Scala 样例类(case classes)
19 |
20 | 4.Java简单对象(POJOs)【必须要有空参构造方法,属性是私有化的话必须有getter,setter方法】
21 |
22 | 5. 其他(Arrays,Lists,Maps, Enums等)
23 |
24 | 
25 |
26 | 
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DataStructure/Ch05_Stack.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05 Stack
3 | date: 2019-07-02
4 | tags:
5 | - Data structure
6 | categories:
7 | - Data structure
8 | ---
9 |
10 | # Stack
11 |
12 |
13 |
14 | **复杂计算机的实现:**
15 |
16 | - **中缀转后缀**
17 | - **计算后缀**
18 |
19 | **中缀转后缀原则:**
20 |
21 | + 两个栈,一个运算符栈,一个字母栈,运算符出栈前先出所有的字母栈
22 |
23 | - 当下一操作符的优先级高于栈顶操作符,入栈
24 | - 当下一操作符的优先级低于栈顶操作符,一直出栈,直到遇到比其低级的操作符,再入栈
25 | - 当 “( ” 入栈时,具有最高的优先级,直接压入栈
26 | - 当 “ ( ” 出栈时,具有最低的优先级,除非碰到 “ )”,否则不会出栈
27 | - 当读到“ ) ” 时,弹出栈中的操作符,直到遇到 “(”
28 |
29 | 例:a + b * c + ( d * e + f ) * g
30 |
31 | 后缀:a b c * + d e * f + g * +
32 |
33 | **后缀计算原则:**
34 |
35 | - 字母压入栈中,当遇到操作符时,弹出两个字母,并且把计算之后的数值继续压入栈中,以此类推
--------------------------------------------------------------------------------
/Blog/blogs/2022/LLM/Ch01_Chainlit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Chainlit
3 | date: 2024-07-04
4 | tags:
5 | - LLMs
6 | categories:
7 | - LLMs
8 |
9 | ---
10 |
11 |
12 |
13 | # Chainlit(UI for chat LLM)
14 |
15 | ref: https://github.com/Chainlit/chainlit
16 |
17 |
18 |
19 | ```python
20 | pip install chainlit
21 |
22 | chainlit --help # Auto create a config file
23 |
24 | chainlit hello # create a welcome page
25 | ```
26 |
27 |
28 |
29 | 1. Create a app.py in the project
30 |
31 | 2. ```python
32 | chainlit run app.py -w # hot loading
33 | ```
34 |
35 | 3. Call the model
36 |
37 | 1. URL + access token
38 | 2. Deploy locally
39 |
40 |
41 |
42 | Check my skeleton repo here:
--------------------------------------------------------------------------------
/Blog/blogs/2022/MySQL/Ch03_Advanced.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Advanced
3 | date: 2023-11-02
4 | tags:
5 | - DB
6 | categories:
7 | - DB
8 |
9 |
10 | ---
11 |
12 | # Mysql运维架构设计
13 |
14 |
15 |
16 | + 用MHA来监控有单点的问题,解决方案是用Orchestrator,是开源的mysql高可用,拓扑的可视化管理工具,检测,故障转移的组件,有UI界面,在此场景下也可以作为mysql的配置中心
17 |
18 | 
19 |
20 | 
21 |
22 | 
23 |
24 | + 在挂的时候千万不能自动切换,因为会有数据不一致性的问题
--------------------------------------------------------------------------------
/Blog/blogs/2022/solr/Ch03_Useage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Useage
3 | date: 2022-06-17
4 | tags:
5 | - Solr
6 | categories:
7 | - Solr
8 |
9 |
10 |
11 | ---
12 |
13 | # Ch03 Useage
14 |
15 |
16 |
17 | + q: Query不止找到需要的条件,而且会计算相关程度
18 |
19 | + fq:FilteredQuery:不会计算相关程度,并且对结果进行缓存
20 |
21 | + sort:结果排序
22 | + fl:只返回列出的字段
23 | + df:default field,比如原来要写feature:29,现在只要写29
24 | + wt:可以返回不同的数据类型
25 |
26 |
27 |
28 |
29 |
30 | 
31 |
32 |
33 |
34 | ## HTTP请求
35 |
36 | 
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Blog/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Blog of YHR",
3 | "version": "1.3.8",
4 | "author": "reco_luan",
5 | "scripts": {
6 | "dev": "vuepress dev . --open --host \"localhost\"",
7 | "build": "vuepress build ."
8 | },
9 | "devDependencies": {
10 | "@vuepress/plugin-active-header-links": "^1.9.7",
11 | "vuepress": "1.8.2",
12 | "vuepress-plugin-dynamic-title": "^1.0.0",
13 | "vuepress-plugin-medium-zoom": "^1.1.9",
14 | "vuepress-plugin-nuggets-style-copy": "^1.0.3",
15 | "vuepress-theme-reco": "1.6.14"
16 | },
17 | "description": "Blog of YHR",
18 | "dependencies": {
19 | "@vssue/api-github-v3": "^1.4.7",
20 | "@vssue/vuepress-plugin-vssue": "^1.4.8"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DistributedSystem/Ch07_Time.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07 Time
3 | date: 2022-06-24
4 | tags:
5 | - Distributed System
6 | categories:
7 | - Distributed System
8 |
9 | ---
10 |
11 | # Physical time
12 |
13 | - clock skew/时间=drift rate. 如一个表在十天内慢了10秒,skew就是10秒,drift rate就是1sec/day
14 |
15 | - Internal synchronization:内部各个时钟的差别不超过bound都可以,都是1970年都行
16 |
17 | - External synchronization:必须与精确的时钟差别不超过bound
18 |
19 | - Cristian’s algorithm:
20 |
21 | - Berkeley algorithm:Internal synchronization
22 |
23 | - master询问每个服务器时间,并且计算平均值(计算的时候包含了自己的时间)
24 |
25 | - 然后把偏移量发给各个服务器(因为可以避免传输时间的误差)
26 |
27 | - fault-torlance:会自动去除明显不对的时间
--------------------------------------------------------------------------------
/Blog/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | home: true
3 | heroText: Welcome to YHR's HOME!
4 | tagline: Man liebt zuletzt seine Begierde, und nicht das Begehrte. -- Friedrich Wilhelm Nietzsche
5 | heroImage: /5f1a222c19115dc4b0f411ac0dff72b.jpg
6 | heroImageStyle: {
7 | maxWidth: '700px',
8 | width: '100%',
9 | display: block,
10 | margin: '3rem auto 3rem',
11 | background: '#fff',
12 | borderRadius: '1rem',
13 | }
14 | #bgImageStyle: {
15 | # height: '900px'
16 | #}
17 | isShowTitleInHome: false
18 | actionText: Test
19 | actionLink: /views/
20 | features:
21 | - title: Yesterday
22 | details: 开发一款看着开心、写着顺手的 vuepress 博客主题
23 | - title: Today
24 | details: 希望帮助更多的人花更多的时间在内容创作上,而不是博客搭建上
25 | - title: Tomorrow
26 | details: 希望更多的爱好者能够参与进来,帮助这个主题更好的成长
27 | ---
--------------------------------------------------------------------------------
/Blog/blogs/2022/Data_warehouse/Ch08_Advanced_topics.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch08 Advanced topics
3 | date: 2021-01-25
4 | tags:
5 | - Data
6 | - Data warehouse
7 | - Data lake
8 | categories:
9 | - Data warehouse
10 | ---
11 |
12 |
13 |
14 | # Advanced topics
15 |
16 | Data的分类:
17 |
18 | Data lake和data warehouse
19 |
20 | 
21 |
22 |
23 |
24 | 好文:https://www.zhihu.com/question/433131888
25 |
26 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch03_Deploy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_Deploy
3 | date: 2021-03-01
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 | ---
11 |
12 | # Deploy
13 |
14 | 新建maven项目,引入依赖包
15 |
16 | ```xml
17 |
18 |
19 | org.apache.flink
20 | flink-java
21 | 1.10.1
22 |
23 |
24 | org.apache.flink
25 | flink-streaming-java_2.12
26 | 1.10.1
27 |
28 |
29 | ```
30 |
31 | 其中2.12为scala语言版本
32 |
33 | 因为flink运行时包中的akka的底层为scala(高并发处理)
34 |
35 | spark的底层也是scala
36 |
37 | 所以需要指定scala版本
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch08_Regex.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch08 Regex
3 | date: 2019-10-05
4 | tags:
5 | - regex
6 | categories:
7 | - JS
8 | ---
9 |
10 | # Regex
11 |
12 | ```js
13 | var i = new RegExp("a");//第一个参数为正则表达式,第二个参数为匹配模式
14 | //匹配模式中“i”为忽略大小写,“g”为全局匹配模式,可以返回所有符合正则的字符串
15 | var reg = /a/i;//快捷创建正则表达式方法
16 | reg = /a | b///表示a或者b,也可以表示为[ab],字母表示为[a-z]
17 | //[^ab]除了ab
18 | //^表示以什么开头,$表示以什么结尾
19 | var str = "ab";
20 | str.split(reg);//可以用正则表达式拆分字符串
21 | str.search(reg);//可以根据正则表达式搜索字符串,返回第一个找到的索引,如果是全局匹配则返回一个数组
22 | str.match(reg);//可以根据正则表达式提取出来匹配到的字符串,如果是全局匹配则返回一个数组
23 | str.replace(reg, "new");//把一个字符串中符合正则表达式的替换为新字符串
24 | //第一个参数为正则表达式,第二个参数为替换的字符串,不会影响原字符串,返回一个新的字符串
25 | alert(reg.test(str));//可以检查字符串中是否含有某个字母
26 | ```
27 |
28 | 详细语法: https://www.jb51.net/article/72044.htm
--------------------------------------------------------------------------------
/Blog/blogs/2022/RabbitMQ/Ch02_MQ.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 MQ
3 | date: 2022-11-29
4 | tags:
5 | - RabbitMQ
6 | - MQ
7 | categories:
8 | - RabbitMQ
9 |
10 |
11 | ---
12 |
13 | 
14 |
15 | 
16 |
17 | 
18 |
19 | 
20 |
21 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch07_File.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07_File
3 | date: 2019-04-20
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 |
11 |
12 | ---
13 |
14 | # File
15 |
16 | File类的各种方法:
17 |
18 | 使用filefilter过滤需要list出来的文件:
19 |
20 | 
21 |
22 |
23 |
24 | 创建文件:文件名大小写没有区别
25 |
26 | 
27 |
28 |
29 |
30 | 运行可执行文件:
31 |
32 | 
--------------------------------------------------------------------------------
/blog-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | labels:
5 | k8s-app: blog
6 | name: blog
7 | namespace: blog
8 | spec:
9 | progressDeadlineSeconds: 600
10 | replicas: 3
11 | selector:
12 | matchLabels:
13 | k8s-app: blog
14 | strategy:
15 | rollingUpdate:
16 | maxSurge: 25%
17 | maxUnavailable: 25%
18 | type: RollingUpdate
19 | template:
20 | metadata:
21 | labels:
22 | k8s-app: blog
23 | name: blog
24 | spec:
25 | containers:
26 | - image: 0yhr0/blog:1.3.1
27 | imagePullPolicy: IfNotPresent
28 | name: blog
29 | resources:
30 | requests:
31 | cpu: "0.1"
32 | memory: 100Mi
33 | dnsPolicy: ClusterFirst
34 | restartPolicy: Always
35 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch06_css.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch06 css
3 | date: 2019-09-30
4 | tags:
5 | - css
6 | categories:
7 | - JS
8 | ---
9 |
10 | # css
11 |
12 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/MongoDB/Ch01_Deployment.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Deployment
3 | date: 2022-11-13
4 | tags:
5 | - MongoDB
6 | - DB
7 | categories:
8 | - MongoDB
9 |
10 | ---
11 |
12 | ## 安装HELM
13 |
14 | ```sh
15 | wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz
16 | tar xf helm-v3.8.0-linux-amd64.tar.gz
17 | mv linux-amd64/helm /usr/local/bin/helm
18 | helm repo add bitnami https://charts.bitnami.com/bitnami
19 | ```
20 |
21 |
22 |
23 | ## 单机部署:
24 |
25 | https://github.com/0YHR0/Deployment-of-Mongodb-and-Mongo-Express-UI-on-Kubernetes/blob/master/mongo-secret.yaml
26 |
27 |
28 |
29 | https://www.bogotobogo.com/DevOps/Docker/Docker_Kubernetes_MongoDB_MongoExpress.php
30 |
31 |
32 |
33 | 记得把service改成node port
34 |
35 |
36 |
37 | ## K8s部署:
38 |
39 | https://github.com/mongodb/mongodb-kubernetes-operator
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Lab_02.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Lab 02
3 | date: 2022-06-18
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 |
10 | ---
11 |
12 | # Lab 02
13 |
14 | - memory descriptor是task struct的一部分,用来描述给一个进程的内存分配
15 |
16 | - Memory descriptor包含些什么:
17 |
18 |
19 |
20 | - kernel线程的memory-struct是null
21 |
22 | - 当几个线程共用一个进程的内存空间(创建子进程时,传递CLONE_VM参数)时,mm_users会增加
23 |
24 | - 共用内存空间的线程退出时:
25 |
26 | - mm_count一般都是1,除了kernel操作改内存空间时会+1
27 |
28 | - 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch02_Introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Introduction
3 | date: 2021-01-31
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 |
11 | ---
12 |
13 | # Introduction
14 |
15 |
16 |
17 | 
18 |
19 | 
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | Flink既可以批处理也可以流处理
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Ch16_VM.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch16 VM
3 | date: 2022-05-26
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 | ---
10 |
11 | # Virtual Machines
12 |
13 | - 结构:
14 |
15 | - type0是硬件支持,type1是软件支持:
16 |
17 | - 双模式cpu:
18 |
19 |
20 |
21 | - cpu有user mode和kernel mode
22 |
23 | - 虚拟机也有virtual user mode和virtual kernel mode,但是都运行在真实cpu的user mode中
24 |
25 | - 要切换到kernel mode必须从virtual kernel mode进行
26 |
27 | - Trap-and-Emulate
--------------------------------------------------------------------------------
/Blog/blogs/2022/HuggingFace/Ch01_Env.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_Env
3 | date: 2023-11-22
4 | tags:
5 | - HuggingFace
6 | categories:
7 | - NLP
8 | ---
9 |
10 | # Env
11 |
12 | + 在windows上因为下载的模型默认放到c盘,我们可以修改路径
13 | + 设置缓存地址的方法,也就是设置TRANSFORMERS_CACHE环境变量,我将其设置在了用户环境变量里面:
14 | + 接下来关键的一步:
15 | 在用户环境变量Path或者系统环境变零PATH中添加:
16 | **%TRANSFORMERS_CACHE%**
17 |
18 |
19 |
20 | ## python下载依赖 PT-CPU
21 |
22 | ```sh
23 | pip install torch==1.10.1+cpu torchvision==0.11.2+cpu torchaudio==0.10.1 -f https://download.pytorch.org/whl/cpu/torch_stable.html
24 |
25 | #安装transformers
26 | #pip安装
27 | pip install transformers==4.18.0
28 |
29 | #安装datasets
30 | #pip安装
31 | pip install datasets==2.4.0
32 |
33 | #安装torchtext
34 | pip install torchtext==0.11.2
35 | ```
36 |
37 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DataStructure/Ch04_Time_Complexity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 Time Complexity
3 | date: 2019-06-30
4 | tags:
5 | - Data structure
6 | categories:
7 | - Data structure
8 |
9 |
10 | ---
11 |
12 | **时间复杂度:**
13 |
14 | - 忽略常数项
15 | - 忽略低次项
16 | - 忽略系数
17 |
18 | 以下时间复杂度从小到大排列:
19 |
20 | 常数阶:O(1)
21 |
22 | ```java
23 | int c =a+b;
24 | a++;
25 | ```
26 |
27 | 对数阶:O(logN)
28 |
29 | ```java
30 | int i = 1;
31 | while(i < n){
32 | i = i * 2;
33 | }
34 | ```
35 |
36 | 线性阶:O(n)
37 |
38 | ```java
39 | for(int i = 0; i < n; i++){
40 | a = a + 1;
41 | }
42 | ```
43 |
44 | 线性对数阶:O(nlogN)
45 |
46 | ```java
47 | for(int i = 1 ; i < n; i++){
48 | while(m < k){
49 | m = m * 2;
50 | }
51 | }
52 | ```
53 |
54 | 平方阶:O(n2)
55 |
56 | ```java
57 | for(int i = 1; i < n; i++){
58 | for(int j = 1; j < n; j++){
59 | n = n + 1;
60 | }
61 | }
62 | ```
63 |
64 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringCloud/Ch01_MicroService_basics.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Microservice basics
3 | date: 2022-04-09
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Spring Cloud
9 | ---
10 |
11 | # Ch01 微服务基础
12 |
13 | 
14 |
15 | 
16 |
17 | 
18 |
19 |
20 |
21 | 与spring boot兼容:
22 |
23 |
24 |
25 | 基础springcloud创建项目模板:
26 |
27 | 链接:https://pan.baidu.com/s/1uK4BIJKzHVjWAIwwd0wutw?pwd=yyds
28 | 提取码:yyds
--------------------------------------------------------------------------------
/Blog/blogs/2022/XML/Ch03_DTD.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_DTD
3 | date: 2019-12-10
4 | tags:
5 | - xml
6 | - DTD
7 | categories:
8 | - XML
9 | ---
10 |
11 | # DTD
12 |
13 | 规范XML结构:
14 |
15 | 
16 |
17 | 
18 |
19 | 
20 |
21 | 
22 |
23 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/HuggingFace/Ch00_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00_Basic
3 | date: 2023-11-16
4 | tags:
5 | - HuggingFace
6 | categories:
7 | - NLP
8 |
9 |
10 | ---
11 |
12 | #
13 |
14 | 
15 |
16 | + BERT: 基于完型填空,挖词预测
17 | + GPT:不断回归,一个一个字往后生成
18 |
19 | 
20 |
21 | 
22 |
23 |
24 |
25 | 
26 |
27 | 
28 |
29 | + 只要提供模型的名字,会自动加载分词器
30 | +
31 |
32 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch10_CommonMethods.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch10 CommonMethods
3 | date: 2019-10-07
4 | tags:
5 | - Date
6 | categories:
7 | - JS
8 |
9 | ---
10 |
11 | # CommonMethods
12 |
13 | ```js
14 | var c = Infinity;//表示正无穷
15 |
16 | console.log(Number.MAX_VALUE);//输出number类型的最大值
17 |
18 | console.log(Number.MIN_VALUE);//表示大于0的最小值
19 |
20 | var a1 = "abc";
21 | var a2 = "bcd";
22 | console.log(a1*a2);//结果为NaN,表示not a number,但是使用type of返回值还是number
23 | console.log(typeof a);//输出a的数据类型
24 |
25 | console.log(Number.MAX_VALUE);//输出number类型的最大值
26 | console.log(Number.MIN_VALUE);//表示大于0的最小值
27 |
28 | var a = parseInt("10.2");//结果为10
29 |
30 | console.log("a" in p1);//检查对象中是否含有属性值,原型对象中也可以查到, 注意要加双引号
31 |
32 | console.log(p1.hasOwnProperty("age"));//检查对象自身中是否含有属性值,不能识别到原型对象中的属性
33 | ```
34 |
35 | ```js
36 | var str = "aaa,ggg,ff,d.3";
37 | var arr = str.split(",");//分割字符串,并返回一个数组
38 | alert(arr);
39 | ```
40 |
41 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch08_Exception.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch08_Exception
3 | date: 2019-04-20
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # Exception
12 |
13 | Try-catch自定义异常类使用方法:
14 |
15 | 
16 |
17 |
18 |
19 | 一般使用System.err.println();来输出错误,因为System.out可能会被重定向。
20 |
21 | Exception继承了Throwable
22 |
23 | 默认的方法:e.printStackTrace();将会提示方法调用处以及异常抛出处。
24 |
25 | 重新抛出异常会把异常抛给上一级异常处理程序
26 |
27 | 
28 |
29 | 
30 |
31 | 
32 |
33 |
34 |
35 | RuntimeException会自动捕获,finally不管是否抛出错误都执行
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kubernetes/Ch26_Advanced.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch26 Advanced
3 | date: 2023-11-02
4 | tags:
5 | - K8s
6 | - Kubernetes
7 | categories:
8 | - Kubernetes
9 |
10 | ---
11 |
12 |
13 |
14 | # KtConnect
15 |
16 | 
17 |
18 | + 在本地开发的时候不可能写几行代码就打包镜像到k8s进行调试,而且依赖的资源都在k8s上,所以要用这么一个本地开发联调k8s的工具
19 |
20 | 
21 |
22 | 
23 |
24 | 
25 |
26 | 
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kubernetes/Ch29_Job.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch29 Job and Cronjob
3 | date: 2024-05-01
4 | tags:
5 | - K8s
6 | - Kubernetes
7 | categories:
8 | - Kubernetes
9 |
10 |
11 | ---
12 |
13 |
14 |
15 | # Job & CronJob
16 |
17 | 
18 |
19 | 
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Gin/Ch00_Intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00_Intro
3 | date: 2022-12-22
4 | tags:
5 | - Gin
6 | - Web
7 | - Go
8 | categories:
9 | - Go
10 |
11 | ---
12 |
13 | #
14 |
15 | ```go
16 | go get github.com/gin-gonic/gin
17 | ```
18 |
19 | ```go
20 | package main
21 |
22 | import (
23 | "github.com/gin-gonic/gin"
24 | )
25 |
26 | func main() {
27 | //create a server
28 | ginServer := gin.Default()
29 |
30 | //request
31 | ginServer.GET("/hello", func(context *gin.Context) {
32 | context.JSON(200, gin.H{"msg": "hello from go"})
33 | })
34 |
35 | //run
36 | ginServer.Run(":8080")
37 | }
38 |
39 | ```
40 |
41 | https://github.com/0YHR0/Gin-Study
42 |
43 | 英文文档template:https://pkg.go.dev/html/template
44 |
45 | 中文翻译版: https://colobu.com/2019/11/05/Golang-Templates-Cheatsheet/#if/else_%E8%AF%AD%E5%8F%A5
46 |
47 | # Gorm+Mysql
48 |
49 | ```go
50 | //安装MySQL驱动
51 | go get -u gorm.io/driver/mysql
52 | //安装gorm包
53 | go get -u gorm.io/gorm
54 | ```
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DeepLearning/Ch01_practice2.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Practice2
3 | date: 2022-06-14
4 | tags:
5 | - DL
6 | categories:
7 | - DL
8 |
9 | ---
10 |
11 | # Ch00 Practice2
12 |
13 | 定义sigmoid函数和他的导数
14 |
15 | ```py
16 | import numpy as np
17 |
18 |
19 | def sigmoid(x: np.array):
20 | return 1 / (1 + np.exp(-x))
21 |
22 |
23 | def derivative_sigmoid(x: np.array):
24 | return np.exp(-x) * np.power((1 + np.exp(-x)), -2)
25 |
26 |
27 | if __name__ == '__main__':
28 | print(1)
29 | test = np.ones([2, 2])
30 | print(derivative_sigmoid(test))
31 | ```
32 |
33 |
34 |
35 | 绘制图像:
36 |
37 | ```py
38 | plt.figure(figsize=(5, 5))
39 | plt.title("function")
40 | x = np.linspace(-30, 30, 500)
41 | y1 = sigmoid(x)
42 | y2 = derivative_sigmoid(x)
43 | plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--', label='sigmoid')
44 | plt.plot(x, y2, color='blue', linewidth=1.0, linestyle='--', label='derivative_sigmoid')
45 | plt.legend()
46 | plt.show()
47 | ```
48 |
49 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/VuePress/VuePress_depoly.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Vuepress搭建博客+云服务器部署
3 | date: 2020-12-25
4 | tags:
5 | - Blog
6 | - Docker
7 | - Cloud server
8 | categories:
9 | - Vuepress
10 |
11 | ---
12 |
13 | # Vuepress搭建博客+云服务器部署
14 |
15 | + 安装 vuepress,最好不要用npm安装,因为依赖树会出错,截至2021/12/23,按照官方文档中使用yarn安装未发现问题https://vuepress.vuejs.org/zh/guide/getting-started.html
16 | + 安装脚手架工具:npm install @vuepress-reco/theme-cli -g
17 | + 创建项目:theme-cli init my-blog #my-blog可替换成自己需要的项目名称AIA
18 | + 启动项目
19 | + 打包项目:npm run build(每次修改完笔记之后重新打包并部署)
20 | + 把打包好的public文件夹下的项目部署到nginx上
21 | + md中的图片必须复制到服务器上并且改成相对路径
22 | + 文件名不能有中文
23 | + 文件名不能带空格
24 |
25 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/mybatis/Ch02_Transaction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Transaction
3 | date: 2019-10-21
4 | tags:
5 | - Java
6 | - Mybatis
7 | categories:
8 | - Mybatis
9 | ---
10 |
11 | # Transaction
12 |
13 | 
14 |
15 |
16 |
17 | mybatis默认执行sql语句是手工提交事务模式,在insert,delete,update后需要提交事务
18 |
19 | 
20 |
21 |
22 |
23 |
24 |
25 | 直接用java创建对象加入数据库:
26 |
27 | 
28 |
29 |
30 |
31 | 如果id要用default那就不在dao的xml文件中设置:
32 |
33 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Spring/Ch00_CreateProject.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Create Project
3 | date: 2019-07-09
4 | tags:
5 | - Spring
6 | - Java
7 | categories:
8 | - Spring
9 | ---
10 |
11 | # Ch00 Create Project
12 |
13 |
14 |
15 | 导入maven依赖:
16 |
17 | ```xml
18 |
19 |
20 | org.springframework
21 | spring-webmvc
22 | 5.3.9
23 |
24 |
25 | org.springframework
26 | spring-jdbc
27 | 5.3.9
28 |
29 |
30 |
31 | ```
32 |
33 | Spring主要特点:IOC:控制翻转(解析xml,用工厂模式,反射创建对象)
34 |
35 | DI(依赖注入)是实现IOC的一种方式
36 |
37 | service类调用factory类
38 |
39 | AOP:面向切面
40 |
41 | 还有对事务的支持
--------------------------------------------------------------------------------
/Blog/blogs/2022/DSD_VHDL/Ch03.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 lecture2
3 | date: 2022-11-04
4 | tags:
5 | - FPGA
6 | - VHDL
7 | categories:
8 | - VHDL
9 | ---
10 |
11 |
12 |
13 | ## gray code
14 |
15 | 
16 |
17 | + 第一位照抄,gray code的第n位等于原码判断第n位与n-1位是否一样,一样是0,不一样是1
18 |
19 |
20 |
21 | 并发执行
22 |
23 | 
24 |
25 | 
26 |
27 | 
28 |
29 |
30 |
31 | ### 锁存器
32 |
33 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/MySQL/Ch01_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Basic
3 | date: 2019-12-07
4 | tags:
5 | - DB
6 | categories:
7 | - DB
8 |
9 |
10 | ---
11 |
12 | # Basic
13 |
14 | 
15 |
16 | 
17 |
18 | 
19 |
20 | 
21 |
22 | 
23 |
24 | 
25 |
26 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kubernetes/Ch19_UseDashboard.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch19 UseDashboard
3 | date: 2022-05-25
4 | tags:
5 | - K8s
6 | - Kubernetes
7 | categories:
8 | - Kubernetes
9 |
10 | ---
11 |
12 | # UseDashboard
13 |
14 | **查看**
15 |
16 | 选择指定的命名空间`dev`,然后点击`Deployments`,查看dev空间下的所有deployment
17 |
18 | 
19 |
20 | **扩缩容**
21 |
22 | 在`Deployment`上点击`规模`,然后指定`目标副本数量`,点击确定
23 |
24 | 
25 |
26 | **编辑**
27 |
28 | 在`Deployment`上点击`编辑`,然后修改`yaml文件`,点击确定
29 |
30 | 
31 |
32 | **操作Pod**
33 |
34 | 选中某个Pod,可以对其执行日志(logs)、进入执行(exec)、编辑、删除操作
35 |
36 |
37 |
38 | 使用右上角+号可以新建资源
39 |
40 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Algorithm/Ch13_DevideAndConque.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch13 DevideAndConque
3 | date: 2020-04-02
4 | tags:
5 | - Algorithm
6 | categories:
7 | - Algorithm
8 |
9 |
10 |
11 | ---
12 |
13 | # DevideAndConque
14 |
15 | **汉诺塔问题:**
16 |
17 | - 如果只有一个盘,可以直接移动
18 | - 如果不是一个盘,总归可以把它看成两个部分,第一部分1为最低下那个盘,第二部分2为剩下的盘
19 |
20 | 设共有柱子ABC,需要把A柱移动到C柱
21 |
22 | 1. 先把2移动到B
23 | 2. 再把1移动到C
24 | 3. 再把2移动到C
25 |
26 | ```java
27 | public class Hanoitower {
28 |
29 | public static void main(String[] args) {
30 | Han(5, 'A' , 'B', 'C');
31 |
32 | }
33 | /**
34 | *
35 | * @param num: 要移动的数目
36 | * @param a:第一个柱子
37 | * @param b:第二个柱子
38 | * @param c:第三个柱子
39 | */
40 | public static void Han(int num, char a, char b, char c) {
41 | if(num == 1) {
42 | System.out.println(a + "=>" + c);
43 | }
44 | else {
45 | //先把上面那部分移动到b
46 | Han(num - 1, a, c, b);
47 | //再把下面那部分移动到c
48 | System.out.println(a + "=>" + c);
49 | //再把剩下的从b移动到c
50 | Han(num - 1,b,a,c);
51 | }
52 | }
53 |
54 | }
55 | ```
56 |
57 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java/Ch02_Shortcut.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Shortcut
3 | date: 2019-05-12
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 | ---
11 |
12 | # Idea常用快捷键
13 |
14 |
15 |
16 | Ctrl+H,查看接口的实现类
17 |
18 | **Ctrl+alt+v 自动生成返回值**
19 |
20 | fori 循环
21 |
22 | Ctrl+Alt+O 优化导入的类和包
23 |
24 | Alt+Insert 生成代码(如get,set方法,构造函数等)
25 |
26 | Ctrl+Alt+T 生成try catch 或者 Alt+enter
27 |
28 | CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里
29 |
30 | **Ctrl + O 重写方法**
31 |
32 | **Ctrl + I 实现方法**
33 |
34 | Ctr+shift+U 大小写转化
35 |
36 | ALT+回车 导入包,自动修正
37 |
38 | ALT+/ 代码提示
39 |
40 | CTRL+J 自动代码
41 |
42 | Ctrl+Shift+J,整合两行为一行
43 |
44 | CTRL+空格 代码提示
45 |
46 | CTRL+SHIFT+SPACE 自动补全代码
47 |
48 | CTRL+ALT+L 格式化代码
49 |
50 | CTRL+ALT+I 自动缩进
51 |
52 | CTRL+ALT+O 优化导入的类和包
53 |
54 | ALT+INSERT 生成代码(如GET,SET方法,构造函数等)
55 |
56 | CTRL+E 最近更改的代码
57 |
58 | CTRL+ALT+SPACE 类名或接口名提示
59 |
60 | CTRL+P 方法参数提示
61 |
62 | CTRL+Q,可以看到当前方法的声明
63 |
64 |
65 |
66 | Shift+F6 重构-重命名 (包、类、方法、变量、甚至注释等)
67 |
68 | Ctrl+Alt+V 提取变量
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Ch12_GFS.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch12 Google file system
3 | date: 2022-05-02
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 | ---
10 |
11 | # Google file system
12 |
13 | - https://zhuanlan.zhihu.com/p/458151870
14 | - 架构:
15 | - 租约:
16 | - 快照:写时才复制
17 | - 垃圾回收:
--------------------------------------------------------------------------------
/Blog/blogs/2022/DataStructure/Ch09_Summary.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09 Summary
3 | date: 2019-08-05
4 | tags:
5 | - Data structure
6 | categories:
7 | - Data structure
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 | - 单链表在删除节点时需要一个temp,指针移动的复杂度为2i
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 | + 对于一个平衡树的插入和查找等效率为O(logN) 平衡树: 树两边的数据均匀分布 非平衡树: 树两边的数据不均匀分布
72 | + 连续插入有序的数据,树分布不均匀,变成一个链表结构,插入和查找等效率变成 O(N)
73 |
74 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch01_Event.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Event
3 | date: 2019-09-09
4 | tags:
5 | - JS
6 | categories:
7 | - JS
8 | ---
9 |
10 | # Event
11 |
12 | 
13 |
14 | 
15 |
16 | 
17 |
18 | **使用这种方式添加的监听器会依次执行,推荐**
19 |
20 |
21 |
22 | **移除事件:**
23 |
24 | 
25 |
26 | 
27 |
28 | 
29 |
30 | 也就是先执行father的监听器
31 |
32 | 反之false先执行son的监听器
33 |
34 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java/Ch03_JavaDS.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03_Java_Datastructure
3 | date: 2019-05-12
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # 
12 |
13 |
14 |
15 | **Vector和ArrayList:**
16 |
17 | 1. Vector是线程安全的,因为大部分方法都用syncronized方法修饰,而ArrayList不是
18 |
19 | 2. ArrayList在原来的数组不够用的时候扩容0.5倍,Vector扩容1倍
20 |
21 | 所以单线程环境下,Vector的效率很低,而在多线程环境中不能直接用ArrayList,必须加处理
22 |
23 |
24 |
25 | **HashMap和HashTable:**
26 |
27 | 1. Hashtable中方法是synchronized,多线程可以直接用Hashtable,而HashMap必须手动处理。
28 |
29 | 2. Hashtable的key和value都允许null值,而HashMap中null只能作为键,并且只有一个。
30 |
31 | 3. Hashtable直接使用对象的hashcode,而HashMap是另外计算了hash值。
32 |
33 | 4. Hashtable的hash数组初始大小为11,增加方式是old*2+1,而hashMap中默认数组的大小为16,而且一定是2的指数。
34 |
35 |
36 |
37 | **TreeMap和HashMap:**
38 |
39 | 1. TreeMap继承自SortedMap,HashMap继承自Abstractap,TreeMap会把元素排序,所以更适合按自然顺序遍历元素,其他情况HashMap更常用,因为效率更高
40 |
41 |
42 |
43 | **HashMap和HashSet:**
44 |
45 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/RealTimeSE/Ch05_Implementation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05 Implementation
3 | date: 2022-12-29
4 | tags:
5 | - RealTimeSE
6 | categories:
7 | - RealTimeSE
8 | ---
9 |
10 | # Implementation
11 |
12 | - Overview
13 |
14 | - 高内聚,低耦合https://blog.csdn.net/walid1992/article/details/73278304
15 |
16 | - Develop platform 和 Target platform不一样:会导致每个平台都要自己的编译器
17 |
18 | - Buliding 代码的过程
19 |
20 |
21 |
22 | - micro-controller:多了分配地址空间,把机器码的地址映射到实际地址空间
23 |
24 | - 两个task之间通信,把数据的指针放到队列中
25 |
26 | - Timer:hard timer, soft timer
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch15_Consistancy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch15_Consistancy
3 | date: 2021-04-08
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 |
11 | ---
12 |
13 | # Consistancy
14 |
15 | 
16 |
17 | 
18 |
19 | 
20 |
21 | 
22 |
23 | 
24 |
25 | 2pc:https://blog.csdn.net/nazeniwaresakini/article/details/104220178
26 |
27 | 
28 |
29 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Service_Computing/Ch03_Portals.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 portals
3 | date: 2021-12-28
4 | tags:
5 | - Service
6 | - Service Computing
7 | categories:
8 | - Service Computing
9 |
10 | ---
11 |
12 | # Ch03 portals
13 |
14 | ## portlet:门户,模块
15 |
16 | #### portlet有自己的规则, 是restricted,比如不允许在一个页面中的不同模块中使用不同的background,这样会使整个页面看上去很丑
17 |
18 | #### portlet和servlet的区别
19 |
20 | #### potal的结构
21 |
22 | #### 根据登录信息显示不同的portal
--------------------------------------------------------------------------------
/Blog/blogs/2022/Zookeeper/Ch01_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Basic
3 | date: 2020-11-21
4 | tags:
5 | - Zookeeper
6 | categories:
7 | - Zookeeper
8 | ---
9 |
10 | # Zookeeper概述
11 |
12 | - Zookeeper是一个基于观察者模式设计的分布式服务管理框架,主要是文件系统+通知机制
13 |
14 | - Zookeeper的数据结构:
15 |
16 | - 可以看作一棵树,所有的节点ZNode都能用路径唯一标识,每个Znode默认存储1Mb的数据
17 |
18 | - Zookeeper提供的功能:
19 |
20 | - 统一命名服务
21 | - 对应用,服务进行统一命名,如:域名是很多ip的命名
22 |
23 | - 统一配置管理
24 |
25 | - 要求:
26 |
27 | - 一般要求在一个集群中,所有的节点的配置信息都是一致的,如Kafka集群
28 |
29 | - 对配置文件修改后,希望能快速同步到各个节点上
30 |
31 | - 实现:
32 |
33 | - 将配置文件写到一个Znode上
34 |
35 | - 各个客户端服务器监听这个Znode
36 |
37 | - 一旦Znode的数据发生修改,zookeeper通知各个客户端的服务器
38 |
39 | - 统一集群管理
40 |
41 | - 要求:
42 | - 根据节点的实时状态做出一定的调整
43 |
44 | - 实现:
45 |
46 | - 可将这些节点信息写入Znode
47 |
48 | - 监听这些Znode来获取他的实时变化
49 |
50 | - 服务器动态上下线
51 | - 客户端能实时洞察到服务器的上下线变化
52 |
53 | - 软负载均衡
54 | - Zookeeper记录每台服务器的访问数,让访问数最少的服务器处理最新的客户端请求
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kubernetes/Ch20_Helm.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch20 Helm
3 | date: 2022-06-12
4 | tags:
5 | - K8s
6 | - Kubernetes
7 | - Helm
8 | categories:
9 | - Kubernetes
10 |
11 |
12 | ---
13 |
14 | # Ch20 Helm
15 |
16 | Helm是 kubernetes的包管理器,包管理器类似于我们在ubuntu中使用的apt,在centos中使用的yum 或者python中的pip一样,能够快速查找,下载和安装软件包。helm由客户端组件helm和服务端组件Tiller组成,能够将一组众多分散的k8s资源打包统一管理,是查找、共享和使用为kubernetes构建软件的最佳方式
17 |
18 |
19 |
20 | ### centos7环境 的 k8s安装helm 3.7.1
21 |
22 | helm的官方网址:
23 |
24 | https://helm.sh/
25 |
26 | heml需要在k8s的主节点上安装。
27 |
28 | 下载安装包进行安装,helm发布的版本地址如下:
29 |
30 | https://github.com/helm/helm/releases
31 |
32 | centos7环境,则选择 Linux amd64 这个版本,下载地址如下:
33 |
34 | https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
35 |
36 | ```sh
37 | mkdir myhelm
38 | cd myhelm
39 | curl -SLO https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
40 | tar -zxvf helm-v3.7.1-linux-amd64.tar.gz
41 | mv linux-amd64/helm /usr/local/bin/helm
42 | helm version
43 | ```
44 |
45 |
46 |
47 | 例:安装solr operator
48 |
49 | https://apache.github.io/solr-operator/docs/local_tutorial#install-the-solr-operator
50 |
51 |
52 |
53 | 使用docker安装solr
54 |
55 | https://hub.docker.com/_/solr
56 |
57 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/TF/Ch04_ActivationFunction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 Activation Function
3 | date: 2022-06-25
4 | tags:
5 | - Tensorflow
6 | categories:
7 | - Tensorflow
8 |
9 | ---
10 |
11 | # Ch04 Activation Function
12 |
13 | 
14 |
15 | 
16 |
17 | 
18 |
19 | + sigmoid的导数在0-0.25之间
20 |
21 |
22 |
23 | 
24 |
25 | 
26 |
27 | + 因为过多的负数输入Relu函数会导致梯度为0,不能更新参数,所以在随机初始化的时候应该避免过多初始为负数输入进ReLu
28 |
29 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch11_Dynamic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch11_Dynamic
3 | date: 2020-04-22
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 | ---
11 |
12 | # 动态代理
13 |
14 | 比如有100个class中,一共有10000个方法需要在执行之前加上“开始执行”,在执行结束之后加上“方法执行完毕”,就可以使用动态代理。
15 |
16 | 被动态代理的方法必须写在接口内,而实体类不支持动态代理
17 |
18 | 具体步骤为:
19 |
20 | 1. 把被动态代理的方法写在接口内,并由一个真实的类class实现这个接口interface
21 | 2. 新建一个代理对象类proxyclass,实现接口InvocationHandler,成员变量为Object,将来传入被代理的类,并且提供传入参数的方法
22 | 3. 实现InvocationHandler中的invoke方法(将来method调用invoke方法时会自动跳转到此方法执行)【方法参数为:被代理的对象类;被代理的Method对象;方法参数】
23 | 4. 在方法体内写需要如何代理,先写被代理方法执行前需要添加的语句,再写method.invoke方法,第一个参数为被代理对象,第二个参数为被代理方法的参数,以便来确定唯一的一个方法。最后写被代理方法执行之后需要添加的语句。
24 | 5. 在main方法内创建一个被代理对象的interface上转型实例a,再创建一个代理对象的InvocationHandler接口的上转型实例,调用Proxy.newProxyInstance方法,返回值为interface实例(需要强制转换)【参数为:代理对象的类加载器;被代理对象的接口(使用getclass.getinterfaces()方法);代理对象】
25 | 6. 最后使用a.方法名调用方法
26 |
27 |
28 |
29 | 详情:https://blog.csdn.net/Dream_Weave/article/details/84183247
30 |
31 | 代码如下:
32 |
33 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/solr/Ch02_start2.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 二进制文件安装
3 | date: 2022-06-10
4 | tags:
5 | - Solr
6 | categories:
7 | - Solr
8 |
9 |
10 | ---
11 |
12 | # Ch02 二进制文件安装
13 |
14 | 在官网下载binary releases:https://solr.apache.org/downloads.html
15 |
16 | 上传到服务器并解压, -C后面的参数是解压位置
17 |
18 | ```sh
19 | tar -xvzf ./solr-8.11.1.tgz -C /home/haoran/solr
20 | ```
21 |
22 | 设置solr_home,
23 |
24 | ```sh
25 | # 只对当前shell生效
26 | export solr_home=/home/haoran/solr/solr-8.11.1
27 |
28 |
29 | # 或者切换到root下修改环境变量,对所有用户生效
30 | vim /etc/profile
31 | 添加 export solr_home=/home/haoran/solr/solr-8.11.1
32 | #运行以下代码重新加载环境变量
33 | source /etc/profile
34 | ```
35 |
36 |
37 |
38 | 开启solr
39 |
40 | ```ps
41 | cd $solr_home
42 | bin/solr start -p 8983
43 | ```
44 |
45 |
46 |
47 | 之后就可以通过服务器ip:端口访问到solradmin
48 |
49 | 创建一个solrCore
50 |
51 | instanceDir设置为: /home/haoran/solr/solr-8.11.1/server/solr/configsets/sample_techproducts_configs
52 |
53 |
54 |
55 | 在$solr_home/example/exampledocs使用post.jar下载一些示例文件:
56 |
57 | ```sh
58 | java -jar -Dc=solr_test_collection post.jar *.xml
59 | ```
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch01_Traditional.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_Traditional
3 | date: 2020-12-31
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 | ---
11 |
12 | # Traditional Processing structure
13 |
14 |
15 |
16 | ### 传统架构
17 |
18 | 
19 |
20 | **实时性好,但做不了高并发**
21 |
22 | 
23 |
24 | **ETL**-->Extract-Transform-Load的缩写,用来描述将[数据](https://baike.baidu.com/item/数据/5947370)从来源端经过抽取(extract)、[转换](https://baike.baidu.com/item/转换/197560)(transform)、加载(load)至目的端的过程。
25 |
26 | **可以处理高并发,但实时性不行**
27 |
28 |
29 |
30 | ### 流处理
31 |
32 | 
33 |
34 | 修改或扩展十分麻烦,要修改两套系统
35 |
36 | 
37 |
38 | 
39 |
40 | spark是从批处理演变过来,不是真正的流处理
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/RealTimeSE/Ch01_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Basic techniques
3 | date: 2022-12-19
4 | tags:
5 | - RealTimeSE
6 | categories:
7 | - RealTimeSE
8 |
9 | ---
10 |
11 | # Basic techniques
12 |
13 |
14 |
15 |
16 |
17 | - Function Tree
18 |
19 | - 同一层的抽象程度必须一样
20 |
21 | - 只有技术密切相关的才能有一个共同的父亲
22 |
23 | - Entity-Relationship Diagram(ERD)
24 |
25 | - Entity
26 |
27 | - Attribute
28 |
29 | - Associations
30 |
31 | - Cardinalities
32 |
33 | - State-Machine
34 |
35 | - 输出取决于输入和状态
36 |
37 | - 最终状态也不一定要有,如
38 |
39 | - Dicision table
40 |
41 | - 示意图:
42 |
43 | - Redundancy
44 |
45 | - Contradiction
46 |
47 | - Completeness test
48 |
49 | - Number of theoretically possible cases = number of condition combinations
50 |
51 | - 计算有几种情况,表中列出了几种情况,并把没有的情况补齐
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch09_Stream.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09_Stream
3 | date: 2019-04-21
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 |
10 | ---
11 |
12 | **底层流:文件字节输入(出)流:FileInputStream, FileOutputStream(可能出现乱码)**
13 |
14 | **文件字符输入(出)流:FileReader, FileWriter(解决乱码)**
15 |
16 | **数组流:ByteArrayInputStream, ByteArrayOutputStream(目的可以是内存)**
17 |
18 | **高级流:缓冲流:BufferedReader, BufferedWriter(增加了文件读取能力,可以按行读取)**
19 |
20 | **参数:Reader Writer**
21 |
22 | **数据流:DataInputStream, DataOutputStream(可以机器无关)**
23 |
24 | **参数:InputStream OutputStream**
25 |
26 | **对象流:ObjectInputStream, ObjectOutputStream(把对象(Serializable)存入文件)**
27 |
28 | **参数:InputStream OutputStream**
29 |
30 | **随机流:RandomAcessFile 既能读文件也能写文件,参数为File+mode**
31 |
32 | 数组流:流和源的目的地可以是文件,也可以是计算机内存
33 |
34 |
35 |
36 | 
37 |
38 |
39 |
40 | 数据流:可以按照机器无关的风格读取数值,不再关心该数值为多少字节,是输入输出流的一个高上层流
41 |
42 | **注意:不能随意使用tostring方法,当一char数组需要转化为string输出时,必须使用string的构造方法:new String(c);否则会出现乱码**
43 |
44 | **Java源码中tostring方法的返回值是 类型@哈希值;**
45 |
46 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Linux/Ch00_Notes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Notes
3 | date: 2018-10-02
4 | tags:
5 | - Linux
6 | categories:
7 | - Linux
8 |
9 | ---
10 |
11 | # Notes
12 |
13 |
14 |
15 | ## 用户
16 |
17 | ubuntu
18 |
19 | ```sh
20 | useradd -m haoran #创建用户并创建home
21 | passwd haoran #改密码
22 |
23 | #加root权限
24 | chmod u+w /etc/sudoers
25 |
26 | vim /etc/sudoers # 在root ALL=(ALL) ALL这一行下面添加
27 | haoran ALL=(ALL) ALL
28 |
29 | chmod u-w /etc/sudoers
30 |
31 | #可以用密码登录
32 | sudo vi /etc/ssh/sshd_config
33 |
34 | # 改 PasswordAuthentication yes
35 | systemctl restart sshd
36 |
37 | #再次修改密码
38 | sudo haoran passwd
39 |
40 | #修改登录脚本
41 | usermod -s /bin/bash haoran
42 | ```
43 |
44 |
45 |
46 | ubuntu22安装docker
47 |
48 | https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04
49 |
50 |
51 |
52 | docker 安装winery
53 |
54 | https://winery.readthedocs.io/en/latest/user/getting-started.html
55 |
56 | ```sh
57 | docker run -it -p 8080:8080 \
58 | -e PUBLIC_HOSTNAME=localhost \
59 | -e WINERY_FEATURE_RADON=true \
60 | -e WINERY_REPOSITORY_PROVIDER=yaml \
61 | -v :/var/repository \
62 | -u `id -u` \
63 | opentosca/radon-gmt
64 | ```
65 |
66 |
67 |
68 |
69 |
70 | # Netplan
71 |
72 | 使用netplan配置网络
73 |
74 | https://blog.csdn.net/h4241778/article/details/110099003
75 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Service_Computing/Ch02_CSS_Form.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 CSS&Form
3 | date: 2021-11-28
4 | tags:
5 | - Service
6 | - Service Computing
7 | - Css
8 | categories:
9 | - Service Computing
10 | ---
11 |
12 | # CSS&Form
13 |
14 | ## CSS
15 |
16 | + css结构
17 | + css选择器
18 |
19 |
20 |
21 | 详细教程:https://blog.csdn.net/wuyxinu/article/details/103583618
22 |
23 |
24 |
25 | ## Form
26 |
27 | + form结构:
28 | + target 属性规定在何处打开 action URL
29 | + input结构
30 | + 例子:单选按钮只有name一样才能实现互斥
--------------------------------------------------------------------------------
/Blog/blogs/2022/Prometheus/Ch00_Intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Intro
3 | date: 2023-01-26
4 | tags:
5 | - Prometheus
6 | categories:
7 | - Prometheus
8 | ---
9 |
10 | 
11 |
12 |
13 |
14 | 
15 |
16 |
17 |
18 | 
19 |
20 | 
21 |
22 | 
23 |
24 |
25 |
26 | ## Components
27 |
28 |
29 |
30 | 
31 |
32 | 
33 |
34 | 
35 |
36 | 
37 |
38 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch03_Conditional.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Conditional
3 | date: 2021-08-11
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 | ---
10 |
11 | **@Conditional**
12 |
13 | 条件装配, 满足一定的条件进行组件装配:
14 |
15 | 
16 |
17 | 例子:
18 |
19 | @ConditionalonBean:表示bean之间的依赖,只有容器中有指定的bean才会创建
20 |
21 | yxb只有dog的bean被创建了才会创建
22 |
23 | 
24 |
25 |
26 |
27 | 也可以把该注解放在配置类之上
28 |
29 | 
30 |
31 |
32 |
33 | **反向:意思是容器中没有指定bean的时候创建bean**
34 |
35 | 
36 |
37 |
38 |
39 | 扩展:控制bean的加载顺序:
40 |
41 | https://blog.csdn.net/qianshangding0708/article/details/107373538
42 |
43 | 1. @DependsOn
44 |
45 |
46 |
47 | 2. 参数注入
--------------------------------------------------------------------------------
/Blog/blogs/2022/Haskell/Ch00_Basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00_Basic
3 | date: 2023-11-01
4 | tags:
5 | - Haskell
6 | categories:
7 | - Haskell
8 |
9 | ---
10 |
11 | # Basic
12 |
13 | https://www.haskell.org/ghcup/ win powershell安装
14 |
15 |
16 |
17 | 装完之后在cmd运行
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | + !!表示索引值
26 | +
27 | +
28 | +
29 | +
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch01_JVM_basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_JVM基础
3 | date: 2019-05-12
4 | tags:
5 | - Java
6 | - JVM
7 | categories:
8 | - JVM
9 | ---
10 |
11 | # JVM架构图
12 |
13 |
14 |
15 | + **本地方法栈**:存储一些本地方法,与系统调用有关
16 |
17 | + **栈(线程)**:栈中存的局部变量,比如对象,存的是对象的引用。指向堆中的对象。每一个对象创建一个栈,每个方法为一个栈帧
18 |
19 | + **堆**:存储对象的值
20 |
21 | + **方法区(元空间)**:存储一些常量,静态变量以及类的信息。同样静态对象存的是引用,指向堆中的对象
22 |
23 | + **程序计数器**:存储线程运行到的位置,以便中断后继续运行
24 |
25 |
26 |
27 |
28 |
29 | # JVM垃圾回收机制
30 |
31 |
32 |
33 | **堆中创建的对象存放空间:(在执行GC的时候会STW(stop the world,停止应用程序的所有线程))**
34 |
35 | + 对象创建先放在Eden区,等Eden区放满之后会进行一次minor GC,判断哪些对象没有引用指向它(使用可达性算法【从root开始找】并遍历堆中的所有对象),就删除对象并且把剩下的对象存入Survivor区中的一个,并把这些对象的年龄+1.
36 |
37 | + 当第二次Eden区放满之后,相同的算法会回收Eden以及上一个Survivor区,并把剩下的对象放入另一个Survivor区,并年龄+1。如此往复,直到某个对象的年龄到达15,就把他放入老年代。(若文件过大【对象大于surviver区域的百分之50】,则直接放入老年代)
38 |
39 | + 当老年代满了(或剩余空间小于minorgc时的平均内存大小)之后会执行full GC,相比minor GC,他会花费大量的时间。所以性能调优的时候首要缩短full GC 的次数。
40 |
41 |
42 |
43 | **对象结构**:
44 |
45 | 
46 |
47 |
48 |
49 | 
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/TF/Ch19_ResNet.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch19 ResNet
3 | date: 2022-07-03
4 | tags:
5 | - Tensorflow
6 | - ResNet
7 | categories:
8 | - Tensorflow
9 | ---
10 |
11 | # Ch19 ResNet
12 |
13 | 使用残差跳连,引入了前方信息,缓解梯度消失,使神经网络层数增加成为可能
14 |
15 |
16 |
17 | 
18 |
19 | + 何凯明表示,单纯堆叠神经网络,会使神经网络退化,后面的神经网络会丢失最初始神经网络的特征,所以他用了跳连线,将前期的特征直接接到了后面
20 | + 
21 |
22 | 
23 |
24 | + 如果维度不同,调用红色框里的代码
25 | + 如果维度相同,则直接相加
26 |
27 | 
28 |
29 | + residual_path=true 用虚线连接, residual_path=false 用实线连接
30 | + block_list表示每个橙色块(block)中有几个ResnetBlock
31 |
32 | filter=卷积核的个数就是输出的深度
33 |
34 | 
35 |
36 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kubernetes/Ch22_NFS.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch22 NFS
3 | date: 2022-07-08
4 | tags:
5 | - K8s
6 | - Kubernetes
7 | - NFS
8 | categories:
9 | - Kubernetes
10 | ---
11 |
12 | # Ch22 NFS
13 |
14 |
15 |
16 | deploy a NFS service on one machine
17 |
18 | 新建一个目录,把它暴露给其他主机--->ch17
19 |
20 |
21 |
22 | 查看nfs:
23 |
24 | then
25 |
26 | 
27 |
28 | ```yaml
29 | ```
30 |
31 |
32 |
33 | ## 使用nfs做pv报错:
34 |
35 | ref:https://blog.csdn.net/m0_46090675/article/details/122276216
36 |
37 | ```sh
38 | [root@k8s-master ~]# kubectl logs nfs-9cf648dcf-c7w65
39 | 2022-01-02 06:19:36+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
40 | chown: changing ownership of '/var/lib/mysql/': Operation not permitted
41 |
42 | ```
43 |
44 | 解决:
45 |
46 | 
47 |
48 |
49 |
50 |
51 |
52 | NFS provisionor: https://computingforgeeks.com/configure-nfs-as-kubernetes-persistent-volume-storage/
53 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JavaWeb/Ch00_CreateProject.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00_CreateProject
3 | date: 2019-05-20
4 | tags:
5 | - Java
6 | categories:
7 | - JavaWeb
8 |
9 | ---
10 |
11 | # 创建项目
12 |
13 | 新建一个webapplication的model
14 |
15 | 记得勾上这个 webapplication
16 |
17 | 
18 |
19 | 创建完的目录如下
20 |
21 |
22 |
23 | web目录下存放web工程的资源文件,比如html,css,js等
24 |
25 | WEB-INF为受服务器保护的目录,浏览器无法直接访问到这个目录
26 |
27 | web.xml是整个动态web工程的部署描述文件,在这里可以配置很多web工程的描述文件
28 |
29 | Servlet程序
30 |
31 | Fliter过滤器
32 |
33 | Listener监听器
34 |
35 | Session超时
36 |
37 |
38 |
39 | 可以修改时热部署(在更新资源文件时服务器同步更新)
40 |
41 | 
42 |
43 |
44 |
45 |
46 |
47 | # Tomcat配置项目的路径
48 |
49 | Tomcat的核心分为3个部分:
50 |
51 | (1)Web容器---处理静态页面;
52 |
53 | (2)catalina --- 一个servlet容器-----处理servlet;
54 |
55 | (3)还有就是JSP容器,它就是把jsp页面翻译成一般的servlet。
56 |
57 | 工程一般放在webapps文件夹下
58 |
59 | 当在访问时不写工程名时,默认访问ROOT工程:http://ip:port
60 |
61 | 当访问没有资源名时,默认访问index.html页面
--------------------------------------------------------------------------------
/Blog/blogs/2022/DistributedSystem/Ch06_Interprocess.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch06 Interprocess
3 | date: 2022-06-22
4 | tags:
5 | - Distributed System
6 | categories:
7 | - Distributed System
8 | ---
9 |
10 | # Interprocess+RMI+components+Graph
11 |
12 |
13 |
14 | - events:represent the state changes
15 |
16 | - socket建立方法:
17 |
18 | - stub负责marshing and unmarshing the data
19 |
20 | - components放在container中,容器的功能等
21 |
22 | - gateway(flooding) Algorithm最小生成树
23 |
24 |
25 |
26 | - 根节点往其他所有节点发消息
27 |
28 | - 若节点收到消息,且没有成为树中的一个节点(没有parent),则认发消息的节点是parent,并把消息传递给除父节点外的其他节点
29 |
30 | - 若节点收到消息,且已经成为树中的一员,他会扔掉这个消息
31 |
32 | - 若一个节点同时受到两个消息,那么随机取一个消息的发送者为parent,并且扔掉另一个消息(如b和c同时发给e)
33 |
34 | - 特点:树的深度取决于每条信号的传输时间
35 |
36 | - 改进算法:
37 |
38 |
39 |
40 | - 节点在发送信息的时候带上到根节点的distance
41 |
42 | - 根节点的distance为0,没有收到消息的distance为正无穷
43 |
44 | - 收到消息后,认distance最小的一个节点为父节点,并且distance+1之后发给除父节点外的其他节点
45 |
46 | - 如果多个节点同时开始最小生成树算法,给每个节点id,在一个节点收到多个节点的message时,取id最大的节点的消息,并且加入这个节点的生成树算法
47 |
48 | - GHShttps://blog.csdn.net/houwanfeimark/article/details/108568819
--------------------------------------------------------------------------------
/Blog/blogs/2022/TF/Ch03_Learningrate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch03 Learning rate
3 | date: 2022-06-24
4 | tags:
5 | - Tensorflow
6 | categories:
7 | - Tensorflow
8 | ---
9 |
10 | # Ch03 Learning rate
11 |
12 | ```py
13 | import tensorflow as tf
14 |
15 | # where函数(条件语句,真返回a,假)
16 | a = tf.constant([1, 2, 3, 1, 1])
17 | b = tf.constant([0, 1, 3, 4, 5])
18 | c = tf.where(tf.greater(a, b), a, b) # 若a>b,返回a对应位置的元素,否则返回b对应位置的元素
19 | print("c:", c)
20 |
21 |
22 | # 产生随机数
23 | rdm = np.random.RandomState(seed=1)
24 | a = rdm.rand()
25 | b = rdm.rand(2, 3)
26 | print("a:", a)
27 | print("b:", b)
28 |
29 | # 将两个数组按垂直方向叠加,变成一个二维数组
30 | a = np.array([1, 2, 3])
31 | b = np.array([4, 5, 6])
32 | c = np.vstack((a, b))
33 | print("c:\n", c)
34 |
35 | # 生成等间隔数值点(起始值,结束值,步长)几个就生成几维数组
36 | x, y = np.mgrid[1:3:1, 2:4:0.5]
37 | # 将x, y拉直,并合并配对为二维张量,生成二维坐标点
38 | grid = np.c_[x.ravel(), y.ravel()]
39 | print("x:\n", x) # 为了保证两个数组的维度相同,所以都是2行4列
40 | print("y:\n", y)
41 | print("x.ravel():\n", x.ravel())
42 | print("y.ravel():\n", y.ravel())
43 | print('grid:\n', grid)
44 | ```
45 |
46 | 
47 |
48 | 
49 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/Ch02_CRUD.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 CRUD
3 | date: 2022-12-05
4 | tags:
5 | - ElasticSearch
6 | - ES
7 | categories:
8 | - ElasticSearch
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 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch05_ConfigureProperties.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05 ConfigureProperties
3 | date: 2021-08-13
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 |
10 |
11 | ---
12 |
13 | 可以读取properties文件中的配置并进行绑定,**prefix中不能有大写字母!!!**
14 |
15 | 
16 |
17 | 
18 |
19 | 测试:
20 |
21 | 
22 |
23 |
24 |
25 | 如果在使用第三方类的配置绑定功能,类中没有@Component,那么可以用以下方式:
26 |
27 | 
28 |
29 |
30 |
31 | 开启配置绑定功能,并把People注册到容器中
32 |
33 | 
34 |
35 |
36 |
37 | 出现如下错误:
38 |
39 | 
40 |
41 |
42 |
43 | 在pom.xml中增加如下依赖
44 |
45 | ```xml
46 |
47 | org.springframework.boot
48 | spring-boot-configuration-processor
49 | true
50 |
51 | ```
52 |
53 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JavaWeb/Ch06_Servlet.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch06_Filter
3 | date: 2019-05-30
4 | tags:
5 | - Java
6 | categories:
7 | - JavaWeb
8 |
9 |
10 | ---
11 |
12 | # Filter
13 |
14 | 是一个接口,作用是拦截请求,过滤响应
15 |
16 | 过滤器常见的场景有:
17 |
18 | 1.权限检查
19 |
20 | 2.日志操作
21 |
22 | 3.事务管理.....
23 |
24 |
25 |
26 | Example:
27 |
28 | 要求:在web项目下新建一个admin文件夹,使得里面的文件(html文件,jsp文件等等)只有在用户登录之后才能访问。
29 |
30 | 由于用户登录后会把登录信息都保存到session域中,所以要检查用户是否登录,可以判断session中是否包含用户的信息即可。
31 |
32 | 配置web.xml文件
33 |
34 | 
35 |
36 |
37 |
38 |
39 |
40 | ## Filter的生命周期:
41 |
42 | 1. 构造器方法
43 |
44 | 2. init初始化方法
45 |
46 | 第1,2步在web工程被创建的时候就被执行
47 |
48 | 3. doFilter过滤方法
49 |
50 | 第三步每次拦截到请求就会执行
51 |
52 | 4. destory销毁
53 |
54 | 第4步,停止web工程的时候就会销毁
55 |
56 | FilterConfig类:
57 |
58 | tomcat每次创建一个filter时,也会创建一个FilterConfig类,用来存放filter配置信息(在init方法中可以在使用)
59 |
60 | 1. 获取Filter的名称
61 |
62 | 2. 获取Filter的init-para初始化参数(在web.xml中)
63 |
64 | 3. 获取servletContext对象
65 |
66 |
67 |
68 |
69 |
70 | ## FilterChain
71 |
72 | 
73 |
74 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/solr/Ch01_start.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 docker安装(有问题,待解决)
3 | date: 2022-04-19
4 | tags:
5 | - Solr
6 | categories:
7 | - Solr
8 |
9 | ---
10 |
11 | # Ch01 docker安装(有问题,待解决)
12 |
13 | ## install
14 |
15 | 根据docker官网,在服务器的docker中安装solr
16 |
17 | https://hub.docker.com/_/solr
18 |
19 |
20 |
21 | ```sh
22 | docker pull solr
23 | docker volume create solrVolume
24 | docker volume inspect solrVolume
25 | # /var/lib/docker/volumes/solrVolume/_data
26 | # docker run -d --name solr -p 8983:8983 -e SOLR_OPTS="$SOLR_OPTS -Dsolr.allowPaths=*" -v # solrVolume:/opt/solr-8.11.1 solr
27 | docker run -d --name solr -p 8983:8983 -v solrVolume:/opt/solr-8.11.1 solr
28 | ```
29 |
30 |
31 |
32 | 在启动的时候通过命令改配置文件solr.in.sh:
33 |
34 | 
35 |
36 |
37 |
38 |
39 |
40 | 使用服务器ip+端口可以访问solr admin
41 |
42 |
43 |
44 | ## Solr文件结构
45 |
46 | 
47 |
48 |
49 |
50 | ## 新建一个core
51 |
52 | 找到配置文件的位置:
53 |
54 | 物理机:
55 |
56 | /var/lib/docker/volumes/solrVolumn/_data/server/solr/configsets/sample_techproducts_configs
57 |
58 |
59 |
60 | docker容器内:
61 |
62 | /opt/solr-8.11.1/server/solr/configsets/sample_techproducts_configs
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | 使用容器内的位置作为instanceDir:
71 |
72 | > 有问题,待解决
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch14_FaultTorlance.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch14_FaultTorlance
3 | date: 2021-04-08
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 | ---
11 |
12 | # Fault Torlance
13 |
14 | 
15 |
16 | 
17 |
18 | 
19 |
20 | 
21 |
22 | 
23 |
24 | 
25 |
26 | 
27 |
28 | 
29 |
30 | 可以设置检查点,第一个参数为多久保存一次检查点,第二个参数为检查点的模式,一般为exactly-once【状态一致性的级别】
31 |
32 | ```java
33 | env.enableCheckpointing(5000, CheckpointingMode.AT_LEAST_ONCE);//每个5秒执行一次
34 | ```
35 |
36 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Lab_01.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Lab 01
3 | date: 2022-05-28
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 | ---
10 |
11 | # Lab 01
12 |
13 | - unsafe concurrency可以用automic operation来解决,但是代码过长又不能保证,所以用lock
14 |
15 | - 自旋锁可以用在:使用关中断来保证不会发声死锁,因为时间很短
16 |
17 | - 读写自旋锁:分为读锁和写锁
18 |
19 | - 读可以多个一起读,但是只有在没有写的时候
20 |
21 | - 写的时候其他进程都被阻塞
22 |
23 | - 信号量机制:表示一个资源的剩余个数,等待获取信号量的进程会进入等待队列,但是不会像自旋锁一样占用cpu,因为当有信号量的时候,它会被被动唤醒
24 |
25 | - mutex是semaphores=1的情况(互斥)
26 |
27 | - 程序top half:把不耗时部分放到top half,不可中断
28 |
29 | - 程序bottom half:可被中断
30 |
31 | - sequential locks:引入版本号,write的时候会+1,read会一直重试直到开始读的sequential number=结束读的sequential number。适用于有很多reader,没有很多writer的情况
32 |
33 | - Pre-emption Disabling: pre-emptive抢占式的,可以通过设置关键区不可抢占来实现同步
34 |
35 | - read barrier,write barrier,阻止指令重排序的
36 |
37 | - 加之前:
38 |
39 | - 加之后:
40 |
41 | - RCU:读进程不会被阻塞
42 |
43 |
44 |
45 | - 多用于传递的不是值而是指针的情况:Only works on dynamically allocated data that is referenced via pointers
46 |
47 | - summary
--------------------------------------------------------------------------------
/Blog/blogs/2022/React/Ch01_install.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 install react
3 | date: 2022-05-11
4 | tags:
5 | - react
6 | categories:
7 | - React
8 |
9 | ---
10 |
11 | # Install react
12 |
13 | 首先要装有nvm和nodejs
14 |
15 | 先安装nvm,再在nvm安装目录下新建一个nodejs文件夹,再用nvm install安装
16 |
17 | 修改环境变量到新建的nodejs目录下
18 |
19 | 
20 |
21 |
22 |
23 | ```pow
24 | nvm install node版本包
25 | nvm ls 查看安装了哪些node版本包
26 | nvm use node版本包(指定使用哪个版本的node)
27 | 记住一定要先修改环境变量再安装node包
28 | ```
29 |
30 |
31 |
32 |
33 |
34 | 使用脚手架工具安装react
35 |
36 | ```power
37 | npx create-react-app demo
38 | ```
39 |
40 |
41 |
42 | + 查看新项目如何运行,看package.json文件的scripts 部分
43 |
44 | + package-lock.json是索引到本机上的一些包的
45 |
46 | + public放的是静态文件,所有的东西都会被注入到root里面
47 |
48 | + src文件夹下所有的文件都可以删除,新建一个index.js, 按照模板写
49 |
50 | + ```jsx
51 | import ReactDOM from 'react-dom'
52 |
53 | // ReactDOM.render(组件名称,要注入的元素)
54 | ReactDOM.render(
55 | hello
,
56 | document.getElementById("root")
57 | )
58 | ```
59 |
60 | + 在vscode中如果保存文件有问题,会自动格式化和红线
61 |
62 | + **禁用vscode里面的JS-CSS-HTML Formatter的插件, 然后重启vscode就不报错了**
63 |
64 | 
65 |
66 |
67 |
68 | + 使用npm run start来启动项目
69 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JavaWeb/Ch02_Response.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_Response
3 | date: 2019-05-27
4 | tags:
5 | - Java
6 | categories:
7 | - JavaWeb
8 |
9 | ---
10 |
11 | # Response
12 |
13 |
14 |
15 | 
16 |
17 |
18 |
19 | ## MIME
20 |
21 | 
22 |
23 |
24 |
25 | ## HttpServletResponse类
26 |
27 | 每次请求过来,Tomcat都会自动创建一个HttpServletResponse类传递给servlet使用,表示所有响应的信息。
28 |
29 | ---
30 |
31 | 向客户端传送消息的两种输出流:
32 |
33 | 字节流:getOutputStream(); 常用于下载(传递二进制流)
34 |
35 | 字符流:getWriter(); 常用于回传字符串(常用)
36 |
37 | 两种流只能使用一个,否则就会报错
38 |
39 | ---
40 |
41 | 使用字符流传消息:(解决中文乱码的问题)
42 |
43 | ```java
44 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45 | //解决打印中文乱码的问题,设置服务端回传的数据格式
46 | response.setCharacterEncoding("UTF-8");
47 | //通过请求头设置浏览器解析数据的格式
48 | response.setHeader("Content-type","text/html; charset=UTF-8");
49 | //也可以使用这个来设置数据的格式,等同于上面两个方法的合成,但是此方法只有在调用获取流方法之前调用才有效
50 | response.setContentType("text/html; charset=UTF-8");
51 | //往客户端回传字符串
52 | PrintWriter writer = response.getWriter();
53 | writer.write("中文");
54 |
55 | }
56 | ```
57 |
58 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Jenkins/Ch01_Intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_Introduction
3 | date: 2022-09-19
4 | tags:
5 | - Jenkins
6 | categories:
7 | - Jenkins
8 |
9 | ---
10 |
11 | # Introduction
12 |
13 | 
14 |
15 |
16 |
17 | ## k8s install jenkins
18 |
19 | https://blog.csdn.net/qq_34285557/article/details/124763695
20 |
21 | https://www.jenkins.io/doc/book/installing/kubernetes/#install-jenkins-with-yaml-files
22 |
23 | https://www.cnblogs.com/diskld/p/15736588.html
24 |
25 |
26 |
27 | ## deployment
28 |
29 | ```yaml
30 | apiVersion: apps/v1
31 | kind: Deployment
32 | metadata:
33 | name: jenkins
34 | spec:
35 | replicas: 1
36 | selector:
37 | matchLabels:
38 | app: jenkins
39 | template:
40 | metadata:
41 | labels:
42 | app: jenkins
43 | spec:
44 | containers:
45 | - name: jenkins
46 | image: jenkins/jenkins:lts-jdk11
47 | ports:
48 | - containerPort: 8080
49 | volumeMounts:
50 | - name: jenkins-home
51 | mountPath: /var/jenkins_home
52 | volumes:
53 | - name: jenkins-home
54 | emptyDir: { }
55 | ```
56 |
57 |
58 |
59 | ## Service
60 |
61 | ```yaml
62 | apiVersion: v1
63 | kind: Service
64 | metadata:
65 | name: jenkins
66 | spec:
67 | type: NodePort
68 | ports:
69 | - port: 7096
70 | targetPort: 8080
71 | selector:
72 | app: jenkins
73 | ```
74 |
75 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/JavaWeb/Ch07_File.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07_File
3 | date: 2019-06-02
4 | tags:
5 | - Java
6 | categories:
7 | - JavaWeb
8 | ---
9 |
10 | # File
11 |
12 | 文件上传:
13 |
14 | 1. 要有一个form标签,method=post请求
15 |
16 | 2. form标签的encType标签必须为multipart/form-data值
17 |
18 | 3. 在form中使用input type=“file”添加上传的文件
19 |
20 | 4. 编写服务器代码来处理上传的数据
21 |
22 | 
23 |
24 |
25 |
26 | ```html
27 |
32 | ```
33 |
34 |
35 |
36 | 服务端处理:输出传入的文件
37 |
38 | ```java
39 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40 | // System.out.println("12313");
41 | // 获取表单数据的输入流
42 | ServletInputStream inputStream = request.getInputStream();
43 | //新建一个buffer,用来接收从流中读到的数据
44 | byte[] buffer = new byte[1024000];
45 | int len = inputStream.read(buffer);
46 | System.out.println(new String(buffer,0,len));
47 |
48 | }
49 | ```
50 |
51 | https://www.bilibili.com/video/BV1Y7411K7zz?p=216&spm_id_from=pageDriver(P213-221)
52 |
53 |
54 |
55 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch04_Generic.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04_Generic
3 | date: 2019-04-15
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # Generic
12 |
13 | Java中的泛型只会在编译过程中有效,以此来检查代码的正确性,正确检验泛型结果后,会将泛型的信息擦出,并且在对象进入或离开方法边界处,添加类型检查和类型转换的方法。
14 |
15 | 也就是说,泛型信息不会进入到运行时阶段。
16 |
17 | 泛型分为:
18 |
19 | **泛型类,泛型接口,泛型方法**
20 |
21 | **泛型类:1.泛型不同的引用不能互相赋值**
22 |
23 | **2.泛型默认为Object**
24 |
25 | 
26 |
27 | 
28 |
29 |
30 |
31 | **泛型接口:如果一个class实现了泛型接口,并且没有指定数据类型,那么class在声明时也要加泛型,如下:**
32 |
33 | 
34 |
35 |
36 |
37 | **泛型方法:可变参数类型的泛型方法,在声明时必须加上泛型:**
38 |
39 | **在类上定义的泛型,可以在普通方法中使用,但是不能在静态方法中使用。**
40 |
41 | **也就是说普通方法中既可以用类中的泛型也可以用自己定义的泛型。**
42 |
43 | 静态方法中不能使用类定义的泛型只能使用自己定义的泛型。
44 |
45 |
46 |
47 | **泛型通配符:**
48 |
49 | **无限制:>**
50 |
51 | **有限制: extends Person > 只有Person及其子类才可以传入;**
52 |
53 | ** super Person > 只有Person及其父类才可以传入;**
54 |
55 | ** extends Comparable> 只有实现了Comparable接口的类才可以传入;**
56 |
57 |
58 |
59 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Leetcode/Ch10_More.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch10 More
3 | date: 2023-08-22
4 | tags:
5 | - Stack
6 | categories:
7 | - Leetcode
8 |
9 |
10 | ---
11 |
12 | #
13 |
14 | ### [1365. 有多少小于当前数字的数字](https://leetcode.cn/problems/how-many-numbers-are-smaller-than-the-current-number/)
15 |
16 | 
17 |
18 | + 暴力
19 |
20 | ```java
21 | class Solution {
22 | public int[] smallerNumbersThanCurrent(int[] nums) {
23 | int[] result = new int[nums.length];
24 | int tmp = 0;
25 | for(int i = 0; i < nums.length; i++){
26 | for(int j = 0; j < nums.length; j++){
27 | if(nums[j] < nums[i]) tmp ++;
28 | }
29 | result[i] = tmp;
30 | tmp = 0;
31 | }
32 |
33 | return result;
34 |
35 | }
36 | }
37 | ```
38 |
39 | + Hash
40 |
41 | ```java
42 | public int[] smallerNumbersThanCurrent(int[] nums) {
43 | Map map = new HashMap<>(); // 记录数字 nums[i] 有多少个比它小的数字
44 | int[] res = Arrays.copyOf(nums, nums.length);
45 | Arrays.sort(res);
46 | for (int i = 0; i < res.length; i++) {
47 | if (!map.containsKey(res[i])) { // 遇到了相同的数字,那么不需要更新该 number 的情况
48 | map.put(res[i], i);
49 | }
50 | }
51 |
52 | for (int i = 0; i < nums.length; i++) {
53 | res[i] = map.get(nums[i]);
54 | }
55 |
56 | return res;
57 | }
58 | ```
59 |
60 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/OS/Ch11_File.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch11 File
3 | date: 2022-04-26
4 | tags:
5 | - OS
6 | categories:
7 | - OS
8 |
9 |
10 | ---
11 |
12 | # File
13 |
14 | - File attributes
15 |
16 | - File operations
17 |
18 | - LOCK
19 |
20 | - 顺序访问和随机访问
21 |
22 | - index
23 |
24 | - 文件目录结构:
25 |
26 | - single-level
27 |
28 | - two-level
29 |
30 | - Tree-Structured Directories
31 |
32 | - Acyclic-Graph Directories无环图
33 |
34 | - File System Mounting(一个文件系统必须被挂载之后才可以被访问,挂载的目录叫做挂载点)
--------------------------------------------------------------------------------
/Blog/blogs/2022/Notes/Ch00_pressure.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Pressure
3 | date: 2022-04-09
4 | tags:
5 | - Test
6 | - Test
7 | categories:
8 | - Notes
9 |
10 | ---
11 |
12 | #
13 |
14 |
15 |
16 | # ..
17 |
18 | # 压测架构
19 |
20 | 
21 |
22 |
23 |
24 | ## 熔断
25 |
26 | + 调别人的服务,别人的服务RT响应过高,会导致整个链路的雪崩
27 | + 就直接不去调用这个服务了
28 |
29 | ## 限流
30 |
31 | + 队列 + 漏斗:**漏桶算法的实现往往依赖于队列,请求到达如果队列未满则直接放入队列,然后有一个处理器按照固定频率从队列头取出请求进行处理。如果请求量大,则会导致队列满,那么新来的请求就会被抛弃。**
32 |
33 | + 令牌桶:令牌桶算法则是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。桶中存放的令牌数有最大上限,超出之后就被丢弃或者拒绝。当流量或者网络请求到达时,每个请求都要获取一个令牌,如果能够获取到,则直接处理,并且令牌桶删除一个令牌。如果获取不同,该请求就要被限流,要么直接丢弃,要么在缓冲区等待。
34 |
35 | + Guava**https://zhuanlan.zhihu.com/p/60979444**
36 |
37 | + ### 平滑突发限流
38 |
39 | 使用 `RateLimiter`的静态方法创建一个限流器,设置每秒放置的令牌数为5个。返回的RateLimiter对象可以保证1秒内不会给超过5个令牌,并且以固定速率进行放置,达到平滑输出的效果。`RateLimiter`由于会累积令牌,所以可以应对突发流量。
40 |
41 | + ### 平滑预热限流
42 |
43 | `RateLimiter`的 `SmoothWarmingUp`是带有预热期的平滑限流,它启动后会有一段预热期,逐步将分发频率提升到配置的速率。 比如下面代码中的例子,创建一个平均分发令牌速率为2,预热期为3分钟。由于设置了预热时间是3秒,令牌桶一开始并不会0.5秒发一个令牌,而是形成一个平滑线性下降的坡度,频率越来越高,在3秒钟之内达到原本设置的频率,以后就以固定的频率输出。这种功能适合系统刚启动需要一点时间来“热身”的场景。
44 |
45 | + Guava`RateLimiter`只能用于单机的限流,如果想要集群限流,则需要引入 `redis`或者阿里开源的 `sentinel`中间件
46 |
47 | ## 降级
48 |
49 | + 对非核心模块降级,就是在业务的高峰期,把非核心功能隔离开,或者直接下线(比如在大促的时候,商品评价不能改变)
50 |
51 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Algorithm/Ch01_DutchFlag.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Dutch Flag
3 | date: 2019-07-01
4 | tags:
5 | - Algorithm
6 | categories:
7 | - Algorithm
8 | ---
9 |
10 | # Dutch Flag
11 |
12 | 荷兰国旗是由红白蓝3种颜色的条纹拼接而成,如下图所示:
13 |
14 | 
15 |
16 | 我们把荷兰国旗问题用数组的形式表达一下是这样的:
17 |
18 | 给定一个整数数组,给定一个值K,这个值在原数组中一定存在,要求把数组中小于K的元素放到数组的左边,大于K的元素放到数组的右边,等于K的元素放到数组的中间,最终返回一个整数数组,其中只有两个值,分别是等于K的数组部分的左右两个下标值。
19 |
20 | 例如,给定数组:[2, 3, 1, 9, 7, 6, 1, 4, 5],给定一个值4,那么经过处理原数组可能得一种情况是:[2, 3, 1, 1, 4, 9, 7, 6, 5],需要注意的是,小于4的部分不需要有序,大于4的部分也不需要有序,返回等于4部分的左右两个下标,即[4, 4]
21 |
22 | - less 用于记录小于 4 的区域的右下标,初始为-1,代表不存在
23 | - more 用于记录大于 4 区域的左下标,初始为9,代表不存在
24 | - L 用于正在遍历的元素的下标,初始值为0
25 | - 从 arr[L] 即 arr[0] 开始遍历数组
26 |
27 | 如果 arr[L] > 4, 交换 arr[++ less] 和 arr[L++] 的值
28 |
29 | 如果 arr[L] < 4, 交换 arr[--more] 和 arr[L] 的值
30 |
31 | 如果 arr[L] = 4, 不交换,L++,直接遍历下一个值
32 |
33 | - 当 L >= more,退出循环。
34 |
35 | ```java
36 | public static int[] partition(int[] arr, int L, int R, int p) {
37 | int less = L - 1;
38 | int more = R + 1;
39 | while(L < more) {
40 | if(arr[L] < p) {
41 | swap(arr, ++less, L++);
42 | } else if (arr[L] > p) {
43 | swap(arr, --more, L);//注意这边l不需要加,因为是单向扫描
44 | } else {
45 | L++;
46 | }
47 | }
48 | return new int[] { less + 1, more - 1 };
49 | }
50 |
51 | public static void swap(int[] arr, int i, int j) {
52 | int temp = arr[i];
53 | arr[i] = arr[j];
54 | arr[j] = temp;
55 | }
56 | ```
57 |
58 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/XML/Ch02_XPATH.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02_XPATH
3 | date: 2019-11-30
4 | tags:
5 | - xml
6 | - XPATH
7 | categories:
8 | - XML
9 |
10 | ---
11 |
12 | # XPATH
13 |
14 | 
15 |
16 | 
17 |
18 | 
19 |
20 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/MySQL/Ch00_Index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Index
3 | date: 2019-12-07
4 | tags:
5 | - DB
6 | categories:
7 | - DB
8 |
9 | ---
10 |
11 | # Index
12 |
13 | **索引是帮助mysql高效获取数据的排好序的数据结构**
14 |
15 | **所有的数据是存在磁盘上的,当查找到了之后,会加载到内存里**
16 |
17 | - 二叉树
18 | - 红黑树
19 | - hash表:不常用,因为单值查找比较快,而范围查找不能实现
20 | - B-tree
21 |
22 | 联合索引:按照字段逐个比较
23 |
24 | 一般都用b树或b+树
25 |
26 | - 二叉树:不平衡
27 |
28 | - 红黑树(是一种平衡二叉树):由于一个节点只能存一组数据,还是开销太大
29 |
30 | - b树(多叉平衡树):一个节点可以存放多个数据,数据索引从左到右依次递增
31 |
32 | - b+树:key值有冗余(如图,15不止一个),只有在叶子节点才存放value
33 |
34 | 每一个节点大小是固定的,不把数据存在非叶节点的原因是能使其存储更多的key值
35 |
36 | 多了横向指针,目的是在范围查找的时候速度更快,一次定位之后就可以查找
37 |
38 | - mysql存储引擎(表级别,非数据库级别):
39 |
40 | - InnoDB索引实现:表数据文件本身就是按照b+树组织的一个索引文件(ibd)
41 |
42 | + 聚集索引,叶节点本身就包含了完整的数据记录
43 |
44 | + InnoDB一定要有主键,而且推荐整型自增型主键,为什么不使用uuid
45 |
46 | 
47 |
48 | - mylSM索引实现:索引文件(MYI)和数据文件(MYD)是分离的(非聚集)
49 | + 叶节点存放数据所在地址
50 |
51 | 
52 |
53 | 
54 |
55 | 非主键索引存储的是name以及主键的id,主键索引存储的是一行数据
56 |
57 | 先查name索引,后查主键索引
58 |
59 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/ElasticSearch/Ch00_Intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Intro
3 | date: 2022-12-03
4 | tags:
5 | - ElasticSearch
6 | - ES
7 | categories:
8 | - ElasticSearch
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 | ## IK 分词器
36 |
37 | 
38 |
39 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Model_Driven_Software_Development/Ch03_MetaModel.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Meta models
3 | date: 2022-04-21
4 | tags:
5 | - Model
6 | categories:
7 | - MDSD
8 |
9 | ---
10 |
11 | # Meta models
12 |
13 | 
14 |
15 | 
16 |
17 | 
18 |
19 |
20 |
21 | 
22 |
23 | 
24 |
25 | + 一个abstract syntax可以对应多个Concrete Syntax
26 | + 
27 | + 在实际上meta model是有限的,即meta-model可以self describing-->model itself
28 | + 例子:
29 |
30 | 
31 |
32 | 
33 |
34 |
35 |
36 | 
37 |
38 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch09_Sink.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09_Sink
3 | date: 2021-03-30
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 |
11 | ---
12 |
13 | # Sink
14 |
15 | JDBC:
16 |
17 | ```java
18 | twitterSource.addSink(new MysqlSink());
19 | ```
20 |
21 | open和close方法只会执行一次,每次数据来之后都会执行invoke函数,所以一般数据库链接和sql语句框架预编译都在open和close中完成
22 |
23 | ```java
24 | /**
25 | * use the connection pool to get the connection,because several thread will connect to the mysql
26 | */
27 | public static class MysqlSink extends RichSinkFunction {
28 | private static ComboPooledDataSource ds = null;
29 | private static Connection conn = null;
30 | private static PreparedStatement ps = null;
31 |
32 | //get the connection pool
33 | static{
34 | try{
35 | ds = new ComboPooledDataSource("mysql");
36 | }catch (Exception e) {
37 | throw new ExceptionInInitializerError(e);
38 | }
39 |
40 | }
41 |
42 | @Override
43 | public void open(Configuration parameters) throws Exception {
44 | conn = ds.getConnection();
45 | String sql = "Insert INTO test (id,data) values (default,?)";
46 | ps = conn.prepareStatement(sql);
47 | }
48 |
49 | @Override
50 | public void close() throws Exception {
51 | ps.close();
52 | conn.close();
53 | }
54 |
55 | @Override
56 | public void invoke(String value, Context context) throws Exception {
57 | ps.setObject(1, value);
58 | int result = ps.executeUpdate();
59 | if(result == 0){
60 | throw new Exception("update mysql failed");
61 | }
62 |
63 |
64 | }
65 | }
66 | ```
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/RealTimeSE/Ch02_Requirement.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Requirements engineering
3 | date: 2022-12-22
4 | tags:
5 | - RealTimeSE
6 | categories:
7 | - RealTimeSE
8 |
9 |
10 | ---
11 |
12 | # Requirements engineering
13 |
14 |
15 |
16 | - Requirements:分为三个阶段
17 |
18 | - Requirements类型:
19 |
20 | - Characteristic of requirements:
21 |
22 | - Requirements engineering:
23 |
24 | - Stakeholders
25 |
26 | - Three Risks with Requirements:
27 |
28 |
29 |
30 | - Test driven requiements engineering: 每一步都对应一个test
31 |
32 | - Manage the risks:
33 |
34 | - Developing requirements:
35 |
36 | - 1. Understanding the needs
37 |
38 | - 2. Specifying the requirements
39 |
40 | - 3. Analyzing the requirements
41 |
42 | - 4. Analysis and modeling of solution
43 |
44 | - 5. Verify requirements
45 |
46 | - Managing requirements:
47 |
48 | - Requirements Change Management
49 |
50 | - Requirements Traceability
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch12_State.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch12_State
3 | date: 2021-04-03
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 |
11 |
12 | ---
13 |
14 | # State
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 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Service_Computing/Ch12_Axis_ESB.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch12 Axis&ESB
3 | date: 2022-01-21
4 | tags:
5 | - Service
6 | - Service Computing
7 | categories:
8 | - Service Computing
9 | ---
10 |
11 | # Ch12 Axis&ESB
12 |
13 | - Axis2:
14 |
15 | - message处理模型:有点像责任链模式
16 |
17 | - 核心模块
18 |
19 | - 两种思路:
20 |
21 | - 基于message filter和pipe:一个message先经过outcoming再经过incoming
22 |
23 | - incoming pipe:message在输入server之前的处理,比如查看授权等
24 |
25 | - outcoming pipe:message从client输出之后处理,比如写到日志等
26 |
27 | - Module是一组handler,以.mar结尾的文件,model can be engaged to service by deployment descriptor
28 |
29 | - Top-down:
30 |
31 | - webservice development with Axis:通过wsdl生成java类和xml,实现逻辑功能并部署到服务器上
32 |
33 | - Client development
34 |
35 | - summary
--------------------------------------------------------------------------------
/Blog/blogs/2022/TF/Ch10_dataEnhance.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch10 DataEnhancement
3 | date: 2022-06-30
4 | tags:
5 | - Tensorflow
6 | categories:
7 | - Tensorflow
8 |
9 |
10 | ---
11 |
12 | # Ch10 DataEnhancement
13 |
14 | 
15 |
16 | 
17 |
18 | ```py
19 | import tensorflow as tf
20 | from tensorflow.keras.preprocessing.image import ImageDataGenerator
21 |
22 | fashion = tf.keras.datasets.fashion_mnist
23 | (x_train, y_train), (x_test, y_test) = fashion.load_data()
24 | x_train, x_test = x_train / 255.0, x_test / 255.0
25 |
26 | x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) # 给数据增加一个维度,使数据和网络结构匹配
27 |
28 | image_gen_train = ImageDataGenerator(
29 | rescale=1. / 1., # 如为图像,分母为255时,可归至0~1
30 | rotation_range=45, # 随机45度旋转
31 | width_shift_range=.15, # 宽度偏移
32 | height_shift_range=.15, # 高度偏移
33 | horizontal_flip=True, # 水平翻转
34 | zoom_range=0.5 # 将图像随机缩放阈量50%
35 | )
36 | image_gen_train.fit(x_train)
37 |
38 | model = tf.keras.models.Sequential([
39 | tf.keras.layers.Flatten(),
40 | tf.keras.layers.Dense(128, activation='relu'),
41 | tf.keras.layers.Dense(10, activation='softmax')
42 | ])
43 |
44 | model.compile(optimizer='adam',
45 | loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
46 | metrics=['sparse_categorical_accuracy'])
47 |
48 | model.fit(image_gen_train.flow(x_train, y_train, batch_size=32), epochs=5, validation_data=(x_test, y_test),
49 | validation_freq=1)
50 | model.summary()
51 |
52 | ```
53 |
54 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DSD_VHDL/Ch04_Component.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch04 Component
3 | date: 2022-11-04
4 | tags:
5 | - FPGA
6 | - VHDL
7 | categories:
8 | - VHDL
9 |
10 |
11 | ---
12 |
13 | ## Components
14 |
15 | 
16 |
17 | 
18 |
19 | 
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | 
28 |
29 |
30 |
31 | ## FSM
32 |
33 | 
34 |
35 | 
36 |
37 | 
38 |
39 | + state 是用来存储当前state的
40 |
41 |
42 |
43 | ## divider
44 |
45 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Flink/Ch10_Streaming.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09_Streaming
3 | date: 2021-04-01
4 | tags:
5 | - Flink
6 | - Java
7 | - BigData
8 | categories:
9 | - Flink
10 | ---
11 |
12 | # Streaming API(source)
13 |
14 | 1. 从集合中读取数据:
15 |
16 | ```java
17 | StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
18 | //从集合中读取数据,可以把类的对象封装成集合
19 | DataStream collectionSource = env.fromCollection(Arrays.asList("aaa", "bbb", "ccc"));
20 | //直接读取元素
21 | DataStream eleSource = env.fromElements("as", "sss", "sda");
22 | //输出,参数可以区别哪个输出
23 | collectionSource.print("collection");
24 | eleSource.print("element");
25 |
26 | //参数为jobname
27 | env.execute("jobone");
28 | ```
29 |
30 | 要按照顺序输出可以在全局中设置并行度为1.
31 |
32 | 2. 从文件中读取数据:
33 |
34 | ```java
35 | DataStream fileSource = env.readTextFile("path");
36 | ```
37 |
38 | 3. 自定义数据源:
39 |
40 | ```java
41 | DataStream twitterSource = env.addSource(new V2source());
42 | ```
43 |
44 | 通过参数的collect方法来获取数据:
45 |
46 | ```java
47 | public class V2source implements SourceFunction {
48 | private boolean running = true;
49 | @Override
50 | public void run(SourceContext sourceContext) throws Exception {
51 | InputStream stream = FilterTwitterStream.getStream();
52 | BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
53 | String line = reader.readLine();
54 | while(running){
55 | while (line != null) {
56 | sourceContext.collect(line);
57 | line = reader.readLine();
58 | }
59 | }
60 |
61 | }
62 |
63 | @Override
64 | public void cancel() {
65 | running = false;
66 |
67 | }
68 | }
69 | ```
70 |
71 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Kafka/Ch00_intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Intro
3 | date: 2022-11-20
4 | tags:
5 | - Kafka
6 | - MQ
7 | categories:
8 | - Kafka
9 | ---
10 |
11 |
12 |
13 | ## 定义
14 |
15 | 
16 |
17 |
18 |
19 | ## Function
20 |
21 | 传统的消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信。
22 |
23 | 
24 |
25 | 
26 |
27 | 
28 |
29 |
30 |
31 | ## 消息队列的两种模式
32 |
33 | 
34 |
35 | + 一个分区只能由一个消费者消费
36 |
37 |
38 |
39 | ## 基础架构
40 |
41 | 
42 |
43 | + Producer:消息生产者,就是向Kafka broker 发消息的客户端。
44 | + Consumer:消息消费者,向Kafka broker 取消息的客户端。
45 | + Consumer Group(CG):消费者组,由多个consumer 组成。消费者组内每个消
46 | 费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不
47 | 影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
48 | + Broker:一台Kafka 服务器就是一个broker。一个集群由多个broker 组成。一个
49 | broker 可以容纳多个topic。
50 | + Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic。
51 | + Partition:为了实现扩展性,一个非常大的topic 可以分布到多个broker(即服
52 | 务器)上,一个topic 可以分为多个partition,每个partition 是一个有序的队列。
53 | + Replica:副本。一个topic 的每个分区都有若干个副本,一个Leader 和若干个
54 | Follower。
55 | + Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数
56 | 据的对象都是Leader。
57 | + Follower:每个分区多个副本中的“从”,实时从Leader 中同步数据,保持和
58 | Leader 数据的同步。Leader 发生故障时,某个Follower 会成为新的Leader。
59 |
60 |
61 |
62 | 未完待续。。。
--------------------------------------------------------------------------------
/Blog/blogs/2022/DistributedSystem/Ch02_Bully.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Bully Algorithm
3 | date: 2022-05-27
4 | tags:
5 | - Distributed System
6 | categories:
7 | - Distributed System
8 | ---
9 |
10 | # Bully Algorithm
11 |
12 | - Bully算法是一种霸道的集群选主算法,选举原则是“长者”为大,即在所有活着的节点中,选取ID最大的节点为leader。
13 |
14 | - 节点可以挂掉,但是消息传输必须可靠并且同步(所以可以计算出最大消息来回时间,T=T(process) + T(transmit)),集群中的每个节点均知道其他节点的ID(唯一)
15 |
16 | - 有三种类型的消息:
17 |
18 | - election message:to call elections
19 |
20 | - answer message: to vote
21 |
22 | - coordinator message: to announce own as a coordinator
23 |
24 | - 选举条件:
25 |
26 | - 集群初始化
27 |
28 | - 主节点故障或与其他节点失去联系,并且被其他节点发现
29 |
30 | - 任意一个比当前主节点 ID 大的新节点加入集群
31 |
32 | - 某个节点从故障中恢复,但是收到了比他id小的vitory消息
33 |
34 | - 选举基本过程:
35 |
36 | - 初始化时,网络环境正常,节点也无故障的情况下,集群中的每个节点都会判断自己的ID是否是当前活着的所有节点ID的最大的,如果是,则直接向其他节点发送Victory消息,宣誓自己为Leader
37 |
38 | - 当主节点发生故障或其他原因导致重新选主时,如果当前节点发现自己的ID不是当前活着的节点中ID最大的,则向比自己ID大的所有节点发送Election消息,并等待回复Alive消息。
39 |
40 | - 在给定的时间范围内,本节点如果没有收到其他节点回复的Alive消息,则认为自己成为Leader,并且向其他节点发送Victory消息。 如果接受到比自己ID大的节点的Alive消息,则人家比你大,老老实实的等待Victory消息吧,若此时没有收到victory消息,则表示id比自己大的节点挂了,则自己可以成为leader。
41 |
42 | - 选举过程:
43 |
44 | - 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java_basic/Ch10_Reflection.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch10_Reflection
3 | date: 2020-04-21
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # Reflection
12 |
13 | 每个类在JRE中都为其保留一个不变的class对象
14 |
15 | Class本身也是一个类
16 |
17 | Class类只能由系统建立对象
18 |
19 | 一个类在JVM中只会有一个class实例,对应一个class文件
20 |
21 | 每个类都会记得自己由哪个class对象创建而成
22 |
23 | 通过class可以得到一个类的完整结构
24 |
25 | Class类的常用创建方法:
26 |
27 | 
28 |
29 |
30 |
31 | 利用class类来获得类的各种信息:
32 |
33 | 
34 |
35 | 
36 |
37 | 
38 |
39 |
40 |
41 |
42 |
43 | 利用反射机制创建对象
44 |
45 | 使用反射机制获取与调用方法:当一个方法有泛型参数时,编译器会自动上转型
46 |
47 | T的上转型为Object
48 |
49 | 在 Java 反射中,一个 Method 执行时遭遇的异常会被包装在一个特定的异常中,这个异常就是 InvocationTargetException。需要手动获取异常具体信息,如下代码
50 |
51 | ```java
52 | catch (InvocationTargetException e) {
53 | Throwable cause = e.getCause();
54 | System.out.println(cause.toString());
55 |
56 | }
57 | ```
58 |
59 | 
60 |
61 |
62 |
63 | 使用反射机制获以及使用取field(成员变量)
64 |
65 | 
66 |
67 |
68 |
69 | 反射中会出现的异常情况:
70 |
71 | 
72 |
73 |
74 |
75 | 更多详细内容参考https://blog.csdn.net/briblue/article/details/76223206
--------------------------------------------------------------------------------
/Blog/blogs/2022/Model_Driven_Software_Development/Ch01_Introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01_Introduction
3 | date: 2022-04-20
4 | tags:
5 | - Model
6 | categories:
7 | - MDSD
8 |
9 | ---
10 |
11 | # Introduction
12 |
13 | 
14 |
15 | 
16 |
17 | ## 1. Model driven vs model based
18 |
19 | 
20 |
21 |
22 |
23 | ## 2. Goals of MDSD
24 |
25 | 
26 |
27 | 
28 |
29 |
30 |
31 | ## 3. Example:
32 |
33 | 
34 |
35 | + Schematic repetitive code: 比如从class-diagram生成的框架,往里面填充自己的逻辑就可以
36 | + Generic code:比如一些函数库
37 | + 
38 |
39 | ## 4. Transformation:
40 |
41 | 
42 |
43 | 
44 |
45 | + 让一个model自动转换为另一个model
46 |
47 |
48 |
49 | 例子:
50 |
51 |
52 |
53 | ## 5. Meta model
54 |
55 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Data_warehouse/Ch01_Data_warehouse_Architecture.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch01 Data warehouse Architecture
3 | date: 2021-10-26
4 | tags:
5 | - Data
6 | - Data warehouse
7 | categories:
8 | - Data warehouse
9 | ---
10 |
11 | # Data warehouse Architecture
12 |
13 | + 数据仓库架构图:
14 |
15 | + Basic Elements
16 |
17 | + Source Systems
18 | + Classification
19 | + Data quality
20 | + Monitoring
21 | + Data Staging Area
22 | + Extraction
23 | + Transformation
24 | + Load
25 | + Core Data Warehouse
26 | + Data Marts
27 | + 数据集市(Data Marts) 为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subject area)
28 | + Independent data marts
29 | + Dependent data marts
30 | + End user data access
31 | + Data warehouse manager
32 | + Meta data repository
33 | + Operational Data Store
34 |
35 | + Architecture:
36 |
37 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch07_Yaml.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07 Yaml
3 | date: 2021-08-16
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 |
10 | ---
11 |
12 | # YAML
13 |
14 | 基本语法:
15 |
16 | - key: value;kv之间有空格
17 | - 大小写敏感
18 |
19 | - 使用缩进表示层级关系
20 | - 缩进不允许使用tab,只允许空格
21 |
22 | - 缩进的空格数不重要,只要相同层级的元素左对齐即可
23 | - '#'表示注释
24 |
25 | - 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
26 |
27 | 数据类型:
28 |
29 | 示例:
30 |
31 | 注意只有@Component的组件才可以用配置注入
32 |
33 |
34 |
35 | 
36 |
37 | yaml:
38 |
39 | 
40 |
41 |
42 |
43 | 使用controller输出:
44 |
45 | 
46 |
47 |
48 |
49 | 在springboot中,可以使用application.yml或application.yaml来配置属性
50 |
51 | 有多个属性文件时会同时生效,其中优先级properties>yml>yaml
52 |
53 | 开启配置自动提示功能:
54 |
55 | ```xml
56 |
57 | org.springframework.boot
58 | spring-boot-configuration-processor
59 | true
60 |
61 | ```
62 |
63 | 并且在打包的时候不把这个依赖打包进去
64 |
65 | ```xml
66 |
67 |
68 |
69 | org.springframework.boot
70 | spring-boot-configuration-processor
71 |
72 |
73 |
74 | ```
75 |
76 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/mybatis/Ch00_record.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 record
3 | date: 2022-10-10
4 | tags:
5 | - Java
6 | - Mybatis
7 | categories:
8 | - Mybatis
9 | ---
10 |
11 |
12 |
13 | Mybatis 在使用returning(postgresql)返回值时,可以用select
14 |
15 | ```java
16 | @Select("insert into organization(orgid,name,address) values(default,#{metadata.organization.name},#{metadata.organization.address}) returning orgid")
17 | @Options(flushCache = Options.FlushCachePolicy.TRUE)
18 | int createDocToOrganization(@Param("metadata") Metadata metadata, @Param("path") String path, @Param("objectId") String objectId);
19 | ```
20 |
21 |
22 |
23 | # 数据分页
24 |
25 | 1. maven依赖
26 |
27 | ```xml
28 |
29 | com.github.pagehelper
30 | pagehelper
31 | 5.2.1
32 |
33 | ```
34 |
35 | 2. 在mybatis主配置文件中加入plugins,在environments之前
36 |
37 | ```xml
38 |
46 |
47 |
48 |
49 |
50 |
51 | ```
52 |
53 | 
54 |
55 |
56 |
57 | # Cache 缓存
58 |
59 | 
60 |
61 | 
62 |
63 | 
64 |
65 | 
66 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Service_Computing/Ch15_MicroServices.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch15 MicroServices
3 | date: 2022-02-15
4 | tags:
5 | - Service
6 | - Service Computing
7 | categories:
8 | - Service Computing
9 |
10 | ---
11 |
12 | # Ch15 MicroServices
13 |
14 | - 什么是微服务
15 |
16 | - 有哪些特性
17 |
18 | - 所以deployment是非常重要的,会在cloud computing课上讲
19 |
20 | - 在replica的情况下:碰到瓶颈的时候,只要复制对应的component就可以,不用整个应用一起复制
21 |
22 | - Service的粒度很难确定
23 |
24 | - 因为每个服务都要自己routing自己的消息到别的service等,所以会产生强耦合的情况,side car就是用来解决这个问题,把业务代码分割开来,sidecar负责接受请求,调用逻辑,发送请求
25 |
26 | - Benefits of MicroServices:
27 |
28 | 
29 |
30 | - Permissionless Innovation: 如果team间开会数量远大于team内部开会,那么这个要求没达到
31 |
32 | - Enable failure:出错之后很难排错,一个service内部错误是可以容忍的,但是不能有级联错误
33 |
34 | - Disrupt trust:不用相信某个工程师什么什么没问题,直接测试api
35 |
36 | - You build it,you own it: 一个service由一个团队负责,有问题了就要马上修复
37 |
38 | - ...
39 |
40 | - 每个微服务都应该有自己的数据库,不能share
41 |
42 | - 微服务的中心思想是解耦
--------------------------------------------------------------------------------
/Blog/blogs/2022/JS/Ch02_Class.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Class
3 | date: 2019-09-10
4 | tags:
5 | - JS
6 | categories:
7 | - JS
8 |
9 | ---
10 |
11 | # Class
12 |
13 | 注意:函数最好不要随意定义在外部,会污染命名空间
14 |
15 | 
16 |
17 | ```js
18 | var obj = {name : "yhr"};
19 | ```
20 |
21 |
22 |
23 | 1. 可以用构造函数创建对象
24 |
25 | ```js
26 | function Person(name, age) {
27 | this.name = name;
28 | this.age = age;
29 | this.say = function a() {
30 | alert("aaa");
31 | }
32 | }
33 | ```
34 |
35 | 2. 可以用工厂方法创建函数
36 |
37 | ```js
38 | function fac(name, age) {
39 | var obj = new Object();
40 | obj.name = name;
41 | obj.age = age;
42 | return obj;
43 | }
44 | ```
45 |
46 | 3. 原型对象:当创建一个函数,解析器会自动向函数添加一个原型对象,对于普通函数,没用,对于构造函数,任何同一个构造函数new出来的对象所指向的原型对象是同一个,也就是一个公共空间,可以把公共的属性或函数写入原型对象中:
47 |
48 | ```js
49 | function pro(name, age){//构造函数
50 | this.name = name;
51 | this.age = age;
52 | }
53 | pro.prototype.a = 999;//向构造函数的原型对象中写入一个属性a的值为999
54 | pro.prototype.say = function () {//向原型对象中写入一个函数
55 | alert("sayyyy");
56 |
57 | }
58 | var p1 = new pro("aaa", 20);
59 | var p2 = new pro("bbb", 11);
60 | console.log(p1.a);//当访问属性时,如果对象内不存在,就会往原型对象里找
61 | console.log(p2.a);
62 | console.log(pro.prototype == p1.__proto__);//结果为true,注意访问方式不同
63 | p1.say();//调用原型对象中的方法
64 | ```
65 |
66 | 一般修改原型对象的toString方法:
67 |
68 | ```js
69 | pro.prototype.toString = function () {
70 | return "age: " + this.age + " name: " + this.name;
71 | }
72 | ```
73 |
74 | 获取对象属性时可以用两个方法:
75 |
76 | 1.对象名.属性名(固定)
77 |
78 | 2. 对象名[属性名] (常用来传递参数)
79 |
80 | 
81 |
82 | 遍历对象:
83 |
84 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringBoot/Ch06_NewProject.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch06 New project
3 | date: 2021-08-15
4 | tags:
5 | - Java
6 | - Spring
7 | categories:
8 | - Springboot
9 | ---
10 |
11 | # 新建项目
12 |
13 | 步骤:
14 |
15 | - 引入场景依赖
16 |
17 | - - https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
18 |
19 | - 查看自动配置了哪些(选做)
20 |
21 | - - 自己分析,引入场景对应的自动配置一般都生效了
22 | - 配置文件中debug=true开启自动配置报告。Negative(不生效)\Positive(生效)
23 |
24 | - 是否需要修改
25 |
26 | - - 参照文档修改配置项
27 |
28 | - - - https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties
29 | - 自己分析。xxxxProperties绑定了配置文件的哪些。
30 |
31 | - - 自定义加入或者替换组件
32 |
33 | - - - @Bean、@Component。。。
34 |
35 | - - 自定义器 **XXXXXCustomizer**;
36 | - ......
37 |
38 | -
39 |
40 | - **简化开发:**
41 |
42 | - **1. Lombok**
43 |
44 | - 1. 引入依赖:
45 |
46 | ```xml
47 |
48 | org.projectlombok
49 | lombok
50 |
51 | ```
52 |
53 | - 2. idea安装lombok插件
54 |
55 | - 在实体类上不用写getter,setter方法,可以用@Data代替
56 | - 全参构造和无参构造也可以用注解代替
57 | - 还可以重写利用属性重写hashcode和equals方法
58 |
59 |
60 |
61 | 3. 另外,在lombok中还提供日志输出功能:@slf4j,该注解会自动为类注入一个log属性
62 |
63 | - 
64 |
65 | -
66 |
67 | - **2.Jrebel**
68 |
69 | - 可以动态热更新项目,但是需要付费
70 |
71 | -
72 |
73 | - **3.Spring initializr(项目创建向导)**
74 |
75 | - 在创建项目的时候可以自动帮我们引入依赖,搭建好一个springboot的项目框架:
76 |
77 | - 想要哪个勾哪个,如Mybatis,redis,web
78 |
79 | - 
80 |
81 | - 
82 |
83 | -
84 |
85 | -
--------------------------------------------------------------------------------
/Blog/blogs/2022/Spring/Ch02_Annotation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Annotation
3 | date: 2019-07-25
4 | tags:
5 | - Spring
6 | - Java
7 | categories:
8 | - Spring
9 | ---
10 |
11 | # Annotation
12 |
13 | 
14 |
15 | ```java
16 |
17 |
18 |
19 | ```
20 |
21 |
22 |
23 | 
24 |
25 |
26 |
27 | 可以使用value指定bean的名字,否则取第一个字母小写的类名)
28 |
29 | 步骤:
30 |
31 | 1. 先在要创建bean的class里加入注解:括号里为bean的id
32 |
33 | 
34 |
35 | 2. 配置文件:要使用到context命名空间,扫描包内所有的class
36 |
37 | 可以使用属性resource-pattern来指定扫描的资源,如resource-pattern = “repository/*.class”表示只扫描repository下面的包
38 |
39 | 
40 |
41 | 
42 |
43 | 
44 |
45 | 
46 |
47 | 
48 |
49 |
50 |
51 | # 引入外部文件
52 |
53 | 
54 |
55 |
56 |
57 | ## Spel表达式
58 |
59 | 
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/SpringCloud/Ch02_service_split.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch02 Service split
3 | date: 2022-04-10
4 | tags:
5 | - Java
6 | - Spring Cloud
7 | categories:
8 | - Spring Cloud
9 |
10 | ---
11 |
12 | # Ch02 Service split
13 |
14 |
15 |
16 | 服务拆分:
17 |
18 |
19 |
20 | ### 例:
21 |
22 | Order和User两个服务,各自有独立的数据库
23 |
24 | 在Order中要调用user信息,则需要在order服务中对User服务发起http请求:
25 |
26 |
27 |
28 | 在Spring中提供了一个工具:RestTemplate,在order service的配置类中创建这个类,并注入:
29 |
30 | ```java
31 | @MapperScan("cn.itcast.order.mapper")
32 | @SpringBootApplication
33 | public class OrderApplication {
34 |
35 | public static void main(String[] args) {
36 | SpringApplication.run(OrderApplication.class, args);
37 | }
38 | /**
39 | * 创建Rest template并注入容器
40 | * @return
41 | */
42 | @Bean
43 | public RestTemplate restTemplate(){
44 | return new RestTemplate();
45 | }
46 |
47 | }
48 | ```
49 |
50 |
51 |
52 | 使用RestTemplate向其他服务发请求,在service中发http请求:
53 |
54 | ```java
55 | @Service
56 | public class OrderService {
57 |
58 | @Autowired
59 | private OrderMapper orderMapper;
60 | @Autowired
61 | private RestTemplate restTemplate;
62 |
63 | public Order queryOrderById(Long orderId) {
64 | // 1.查询订单
65 | Order order = orderMapper.findById(orderId);
66 | // 2. 利用restTemplate发起http请求,查询用户
67 | // 2.1 获取查询用户的url
68 | String url = "http://localhost:8081/user/" + order.getUserId();
69 | // 2.2 发起http请求,get, 第一个参数是url,第二个参数是返回值类型
70 | User user = restTemplate.getForObject(url, User.class);
71 | // 3. 封装user到order中
72 | order.setUser(user);
73 | // 4.返回
74 | return order;
75 | }
76 | }
77 | ```
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/Service_Computing/Ch07_Dynamic_pages.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch07 Dynamic pages
3 | date: 2022-01-02
4 | tags:
5 | - Service
6 | - Service Computing
7 | categories:
8 | - Service Computing
9 |
10 | ---
11 |
12 | # Ch07 Dynamic pages
13 |
14 | - 一个对servlet的请求映射成一条JVM里面的线程
15 | - Cookie没有安全问题,因为它不会撑爆你的硬盘,也不能执行代码
16 |
17 | - 但是有隐私问题,用户不希望被server记录下来自己干了什么,也不希望其他网站share cookies
18 |
19 | - 用户可以选择禁用cookie,这时候为了追踪session可以在url中附带信息,但是一旦用户离开就没有了
20 |
21 | - 也可以用form中的hidden fields
22 |
23 | - 设置cookie
24 | - JSP:
25 |
26 | - 单行表达式:
27 |
28 | - 多行:
29 |
30 | - 在jsp中,可以直接用out和request变量:
31 |
32 | - 静态包含:不会解析jsp代码
33 |
34 | - 动态包含:会解析jsp代码
35 |
36 | - 可以引入tag library来实现某些功能
37 | - Load balancing
38 |
39 | - Host:IP地址
40 |
41 | - service:IP:port
42 |
43 | - Cluster:Collection of similar services
44 |
45 | - Virtual server: A cluster represented as a single service
46 | - 用一个IP:PORT来代表多个IP:PORT。这个IP:port就是load balancer提供的
47 |
48 | - 例子:
49 |
50 | - 过程:
--------------------------------------------------------------------------------
/Blog/blogs/2022/Go/Ch09_GoLinux.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch09 GoLinux
3 | date: 2023-08-24
4 | tags:
5 | - Go
6 | categories:
7 | - Go
8 |
9 | ---
10 |
11 | Go命令行有常用的这几个命令:
12 |
13 | - go build 编译包和依赖
14 | - go run 编译和运行go程序
15 | - go install 编译并安装包和依赖
16 | - go get 将依赖下载到当前依赖并安装
17 |
18 | 
19 |
20 |
21 |
22 | 运行go build命令时加入标记-x,这样可以看到go build命令具体都执行了哪些操作,查看具体构建过程
23 |
24 | ```go
25 | go build -x hello_main.go
26 | WORK=/var/folders/js/pmxyyt3s2693n8_dk137t8l80000gn/T/go-build580263953
27 | mkdir -p $WORK/b001/
28 | cat >$WORK/b001/importcfg.link << 'EOF' # internal
29 | packagefile command-line-arguments=/Users/XXX/Library/Caches/go-build/66/66f8de4622b8ffa394c623ca185ac616e298e56b0922df729b6a595f48eafac7-d
30 | packagefile fmt=/usr/local/go/pkg/darwin_amd64/fmt.a
31 | ...
32 | packagefile internal/race=/usr/local/go/pkg/darwin_amd64/internal/race.a
33 | EOF
34 | mkdir -p $WORK/b001/exe/
35 | cd .
36 | /usr/local/go/pkg/tool/darwin_amd64/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=dvpJi7I5grdSogBnCMbW/lvYsRrpuUSUL86UZI79H/GF71-1TyEJxjFQJjlqbi/dvpJi7I5grdSogBnCMbW -extld=clang /Users/XXX/Library/Caches/go-build/66/66f8de4622b8ffa394c623ca185ac616e298e56b0922df729b6a595f48eafac7-d
37 | /usr/local/go/pkg/tool/darwin_amd64/buildid -w $WORK/b001/exe/a.out # internal
38 | mv $WORK/b001/exe/a.out hello_main
39 | rm -r $WORK/b001/
40 | ```
41 |
42 |
43 |
44 | ## go build
45 |
46 | `go build`是这几个命令的基础,`go build <命令源码文件/.>`会生成目标系统的可执行文件
47 |
48 |
49 |
50 | ## go run
51 |
52 | `go run`命令编译构建后直接运行,不会在项目目录或GOPATH目录下生成可执行文件。
53 | 传入`-x`参数查看详细执行过程可以看出对比`go build`,`go run`省略了`mv $WORK/b001/exe/a.out hello_main`搬移可执行文件,而是直接执行输出结果。
54 |
55 |
56 |
57 | ## go install
58 |
59 | `go install`大概等于`go build`+安装,所谓安装就是将命令源码生成的可执行文件或者库源码文件生成的归档文件放入GOPATH/bin或GOPATH/pkg中。
60 | go install可执行文件从打印的详细步骤可以看出主要区别就是`mv $WORK/b001/exe/a.out /Users/XXX/go/bin/hello_main`,将可执行文件放入GOPATH/bin而不是当前目录下。
61 |
62 |
63 |
64 | ## go get
65 |
66 | 命令go get会自动从一些主流公用代码仓库(比如 GitHub)下载目标代码包,并把它们安装到环境变量GOPATH相应目录中。
67 |
68 |
69 |
70 | ref: https://www.jianshu.com/p/d6e2184a5a4f
--------------------------------------------------------------------------------
/Blog/blogs/2022/Cloud_Computing/Ch00_intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch00 Intro
3 | date: 2022-11-08
4 | tags:
5 | - Cloud Computing
6 | categories:
7 | - Cloud
8 | - DevOps
9 |
10 | ---
11 |
12 | # 
13 |
14 | 
15 |
16 |
17 |
18 | ## Cloud Architecture style
19 |
20 | 
21 |
22 | 
23 |
24 | 
25 |
26 | 
27 |
28 |
29 |
30 | ### MicroServices
31 |
32 | 
33 |
34 |
35 |
36 | ### CQRS
37 |
38 | 
39 |
40 |
41 |
42 | ### Event Driven
43 |
44 | 
45 |
46 |
47 |
48 | ### BigData
49 |
50 | 
51 |
52 |
53 |
54 | ### BigCompute
55 |
56 | 
57 |
58 | 
59 |
60 | 
--------------------------------------------------------------------------------
/Blog/blogs/2022/Java/Ch05_C3p0.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch05_C3p0
3 | date: 2019-06-02
4 | tags:
5 | - Java
6 | categories:
7 | - Java
8 |
9 | ---
10 |
11 | # C3p0
12 |
13 |
14 |
15 | maven依赖(记得要导2个包!!)
16 |
17 | ```xml
18 |
19 | com.mchange
20 | c3p0
21 | 0.9.5.2
22 |
23 |
24 | com.mchange
25 | mchange-commons-java
26 | 0.2.15
27 |
28 | ```
29 |
30 |
31 |
32 | 在src文件夹下配置文件:(idea要放在src的resource目录下)
33 |
34 | c3p0配置文件名字一定是c3p0-config.xml
35 |
36 | ```xml
37 |
38 |
39 |
40 |
41 |
42 | com.mysql.cj.jdbc.Driver
43 | jdbc:mysql://localhost:3306/flink?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
44 | root
45 | 123456
46 |
47 |
48 | 8
49 |
50 | 3000
51 |
52 | 30
53 |
54 | 100
55 | 5
56 | 200
57 |
58 |
59 |
60 | 5
61 | 8
62 | 5
63 | 30
64 | 0
65 | 5
66 |
67 |
68 |
69 |
70 | ```
71 |
72 |
--------------------------------------------------------------------------------
/Blog/blogs/2022/DataStructure/Ch11_JavaBased.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ch11 Java Based DataStructure
3 | date: 2019-07-08
4 | tags:
5 | - Data structure
6 | - Java
7 | categories:
8 | - Data structure
9 |
10 | ---
11 |
12 | # HashSet
13 |
14 | Hashset:可以存储任何对象的一种数据结构,在java.util包中。
15 |
16 | Set集合存的值是不重复的,并且可以存null。
17 |
18 | 若想让set存储指定的类型,就要使用到泛型:
19 |
20 | HashSet set = new HashSet(); // 只能存String类型的数据
21 |
22 | HashSet