From 9a6d43d0503249dd668b64ecd87ba34b81c8349c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B5=8E=E8=8A=9D?= Date: Fri, 22 Mar 2024 12:14:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(post):=20=E4=BC=98=E5=8C=96=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/404.html | 6 +- docs/en/categories/index.html | 6 +- docs/en/index.html | 6 +- docs/en/tags/index.html | 6 +- docs/index.xml | 202 ++++++++++-------- docs/posts/index.html | 26 ++- docs/posts/index.xml | 200 +++++++++-------- docs/tags/docker/index.xml | 4 +- docs/tags/elasticsearch/index.xml | 4 +- docs/tags/index.xml | 26 +-- docs/tags/java/index.xml | 79 +++---- .../java\345\237\272\347\241\200/index.xml" | 18 +- docs/tags/js/index.xml | 18 +- docs/tags/jvm/index.xml | 28 +-- docs/tags/mq/index.xml | 4 +- docs/tags/mysql/index.xml | 2 +- docs/tags/nacos/index.xml | 2 +- docs/tags/nginx/index.xml | 2 +- docs/tags/redis/index.xml | 4 +- docs/tags/spring/index.xml | 4 +- docs/tags/springboot/index.xml | 12 +- docs/tags/vue/index.xml | 2 +- .../tags/\344\271\246\347\261\215/index.xml" | 6 +- .../tags/\344\272\213\345\212\241/index.xml" | 2 +- .../index.xml" | 6 +- .../tags/\345\205\266\344\273\226/index.xml" | 15 +- .../index.xml" | 4 +- .../index.xml" | 2 +- .../index.xml" | 4 +- .../tags/\345\272\224\347\224\250/index.xml" | 10 +- .../tags/\346\212\200\345\267\247/index.xml" | 6 +- .../tags/\346\261\202\350\201\214/index.xml" | 4 +- .../tags/\347\216\251\345\205\267/index.xml" | 20 +- .../tags/\347\256\200\345\216\206/index.xml" | 29 ++- .../tags/\347\256\227\346\263\225/index.xml" | 2 +- .../tags/\347\272\277\347\250\213/index.xml" | 8 +- .../tags/\347\275\221\347\273\234/index.xml" | 2 +- .../tags/\350\256\276\350\256\241/index.xml" | 18 +- .../tags/\350\275\254\350\275\275/index.xml" | 2 +- .../tags/\351\233\206\345\220\210/index.xml" | 4 +- 40 files changed, 434 insertions(+), 371 deletions(-) diff --git a/docs/en/404.html b/docs/en/404.html index a7d96c68..8c41b172 100644 --- a/docs/en/404.html +++ b/docs/en/404.html @@ -12,12 +12,12 @@ - + - + @@ -136,7 +136,7 @@

Home

diff --git a/docs/en/categories/index.html b/docs/en/categories/index.html index a4169217..0a3301fd 100644 --- a/docs/en/categories/index.html +++ b/docs/en/categories/index.html @@ -12,12 +12,12 @@ - + - + @@ -157,7 +157,7 @@

diff --git a/docs/en/index.html b/docs/en/index.html index c2ba48df..4c0570ab 100644 --- a/docs/en/index.html +++ b/docs/en/index.html @@ -13,12 +13,12 @@ - + - + @@ -157,7 +157,7 @@

diff --git a/docs/en/tags/index.html b/docs/en/tags/index.html index 3dbf258c..ec309800 100644 --- a/docs/en/tags/index.html +++ b/docs/en/tags/index.html @@ -12,12 +12,12 @@ - + - + @@ -157,7 +157,7 @@

diff --git a/docs/index.xml b/docs/index.xml index 0eb53b34..38ad5994 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -6,630 +6,644 @@ Recent content on 唯手熟尔 Hugo -- gohugo.io zh - Thu, 21 Mar 2024 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 - Java20240321简历 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - Thu, 21 Mar 2024 00:00:00 +0000 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向对象的编程思想,熟练掌握并应用核心集合框架; 深入运用SpringBoot、Spr + 学习Java参考资料 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + 大厂技术博客 美团技术团队: https://tech.meituan.com 阿里技术团队: https://102.alibaba.com 小米技术团队: https://xiaomi-info.github.io 360技术团队: https://blogs.360.net 有道技术博客: http://techblog.youdao.com 字节跳动博客: https://opensource.bytedance.com/blog 淘宝前端团队: https://fed.taobao.org/blogs Oracle博客: https://blogs.oracle.com/poonam 常用资源网站 J + + + 做好人生防坑防诈骗 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + 为什么要做好人生的防坑防诈骗,可以这么说有些时候做好防坑防诈骗的意义大于你花十几年如一日的学习,花几十年去赚钱。选择大于努力,是很重要的。 观察普通人,他们到了3 培养逆向思维 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ Thu, 21 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ - 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感觉去做事情,大部分人都是凭感觉去做事情,而大部分人都没有高效率做事情的方法,都是 + 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感 如何快速写一份简历 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ Wed, 20 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ - 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答,我们这个行业其他人写简历几乎没有这个习惯,都是自己写,没有借助网络这个意识,我 + 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答 前端20240319简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ Tue, 19 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ - 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复杂业务组件,写出易维护,善于利用新技术解决业务快速发展遇到的问题。 求职意向 期望城 + 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复 Java20240315简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ Fri, 15 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 如何强制复制网站文字 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ Thu, 14 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ - 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情况,可以利用一些小技巧进行复制。 拖拽复制 一种简单直接的方法,不用进行任何其他操作 + 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情 前端知识点 https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ Thu, 29 Feb 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ - 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 ESLint Prettier 调试工具 Chrome IETest Postman 版本管理工具 Git GitLab GitHub 部署发布工具 Jenkins CICD 主流技术 TypeScript Vue React Angular 综合应用 静态 + 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 + + + Java20240228简历 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + Wed, 28 Feb 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向 2023工作总结 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ Fri, 01 Dec 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ - 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识,增强了自己的专业能力。我始终认为团队合作是成功的关键。在工作中,我积极与同事沟 + 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识 Java20230915简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ Fri, 15 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 定时任务可视化管理 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ Sat, 09 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ - 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment '任务名称', job_group varchar(64) default 'DEFAULT' comment '任务组名', invoke_target varchar(500) not null comment + 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment SpringBoot整合nacos https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ Mon, 04 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ - nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml server: port: 3333 config: info: "config info for test from nacos config center" user.yaml user: name: zs1112222 age: 10 address: 测试地址 代码 整合nacos配置中心,注册 + nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml 整合文件上传功能 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ Fri, 11 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ - 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies> application.yml server: port: 80 公共部分 FileManagement public interface FileManagement { /** * 设置下一个bean的对象 * * @param nextFileManagement 下一个 + 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> 整合支付功能 https://whiteppure.github.io/iblog/posts/essays/pay-code/ Thu, 10 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pay-code/ - 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: "" #服务商模式下的子商户公众账号ID subAppId: #服务商模式下的子商户号 subMchId: # p12证书的位 + 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: Validator参数校验 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ Sat, 01 Jul 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ - 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂,判断参数代码语句显得尤为冗长. 或者有些程序会将if封装起来,例如spring中 + 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂 管道流设计模式结合业务 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ Thu, 15 Jun 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ - 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类型码值 */ Integer getCode(); /** * 业务类型名称 * */ String getName(); } AbstractEventContext public abstract class AbstractEventContext implements EventContext{ private final BizType businessType; private final FilterSelector filterSelector; protected AbstractEventContext(BizType businessType, FilterSelector filterSelector) { + 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类 重构一个程序 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ Thu, 20 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ - 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构(动词形式): 使用一些列重构手法,在不改变软件可观察行为的前提下,调整其结构。 重 + 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构 SpringMVC与SpringWebFlux https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ Fri, 14 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ - Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring-webmvc),但它更常被称为 “Spring MVC”。 SpringMVC是基于S + Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring- MySQL详解 https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ Mon, 13 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ - 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcplip的通信。主要完成一些类似于连接处理、 + 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基 如何减少及解决bug https://whiteppure.github.io/iblog/posts/essays/java-bugs/ Fri, 10 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-bugs/ - bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的 + bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今 Elasticsearch详解 https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ Tue, 14 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ - 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。 Elastic Stack, 包括 Elasticsearch、 Ki + 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可 编程常用词汇汇总 https://whiteppure.github.io/iblog/posts/essays/java-dict/ Mon, 13 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-dict/ - QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务 + QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Sec 接口优化 https://whiteppure.github.io/iblog/posts/essays/java-improve/ Tue, 20 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-improve/ - 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体分析,讨论不同解决方案. 定位问题 要快速定位接口哪一个环节比较慢,性能瓶颈在哪里, + 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体 孙子兵法 https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ Mon, 19 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ - 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者, + 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与 IDEA常用配置及使用技巧 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ Fri, 16 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ - 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888 + 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baid 整洁的代码 https://whiteppure.github.io/iblog/posts/essays/clean-code/ Thu, 01 Sep 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/clean-code/ - 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时间不够;假使花时间清理代码,老板就会大发雷霆.或许你只是不耐烦再搞这套程序,期望 + 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时 Java电子书 https://whiteppure.github.io/iblog/posts/books/java-books/ Mon, 08 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/java-books/ - HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内幕 疯狂Java讲义 重构:改善既有代码的设计 领域驱动设计 深入理解计算机系统 Java + HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内 如何做好程序设计功能 https://whiteppure.github.io/iblog/posts/essays/java-design/ Tue, 02 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-design/ - 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 从DDD角度界限上下文、ER图、评审表结构设计是否合理,表的关联关系是否合理、是 + 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 Java20220422简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ Fri, 22 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对SQL + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编 Java小程序集合 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ Sat, 09 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ - 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用java -jar命令启动 某些程序功能并不是很完善,但是也可以凑合着用,写这些程序的主 + 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用ja 数据结构与算法 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ Fri, 10 Dec 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ - 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数据结构学到位。 数据结构包括:线性结构、非线性结构。 线性结构作为最常用的数据结构, + 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数 规范编写Java代码总结 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ Thu, 25 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ - 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维护时间比较长,那么保证代码可读性就显得很重要。作为一个程序员,咱们得有点追求和信 + 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维 网络编程 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ Fri, 19 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ - 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/item/网络七层协议/6056879 网络协议指的是计算机网络中互相通信的对等实体 + 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/i MQ详解 https://whiteppure.github.io/iblog/posts/essays/java-mq/ Tue, 19 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-mq/ - 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:activeMQ,rabbitMQ,kafka,metaMQ。 MQ优点 异步消息处理:可以 + 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:acti Java集合 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ Mon, 04 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ - 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道ArrayList底层是通过数组来存储元素的,所以如果严格来说,数组也算集合的一种 + 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道A Java反射 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ Sat, 02 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ - 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 反射是Java语言的一个特性,它允许程序 + 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对 常见故障排查及程序配置 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ Wed, 08 Sep 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ - 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h +10 预定时间关机(10 + 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作 分布式事务详解 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ Mon, 02 Aug 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ - 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其中有一个环节失败,事务将会撤销所有已成功的活动。 所以事务可以看作是一次重大的活动 + 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其 Object类方法 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ Sat, 10 Jul 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ - 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示继承,也可以隐式继承,效果都是一样的。 class A extends Object{ // to do } class A { // to do } Java Objec + 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示 微服务治理 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ Mon, 21 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ - 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable by fully automated deployment machinery。 There is a bare minimum of centralized management of these services, which may be written in different programming + 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable Redis详解 https://whiteppure.github.io/iblog/posts/essays/java-redis/ Thu, 17 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-redis/ - Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 简而言之,Redis是一个可基于内存亦可持久 + Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库, Spring详解 https://whiteppure.github.io/iblog/posts/spring/java-spring/ Thu, 13 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring/ - 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Spring是一个分层的JavaSE/EE 一站式轻量级开源框架。在每一层都提供支持。 + 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Sp 面试Java可能会被问到的问题 https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ Tue, 11 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ - 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说一下UDP、TCP及http与https 如何保证线程安全 线程池工作原理 如何避免死 + 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说 JVM-垃圾回收器 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ Thu, 06 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ - 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 Java不同版本新特性学习思路: 语法层面:Lambda表达式、s + 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了 Java多线程 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ Wed, 05 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ - 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一 + 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最 HashMap详解 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ Mon, 03 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ - 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中元素个数达到了容量的3/4的时候就会进行自动扩容; threshold: 阈值;阈值 + 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中 JVM-相关概念 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ Tue, 27 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ - 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档中对内存溢出的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 由于GC一 + 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档 面试中常见的问题 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ Fri, 23 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ - 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职之后可能会被分配到该项目上; 在介绍的时候要说明你对面试的公司有什么用,根据不同类 + 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职 JVM-垃圾回收 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ Wed, 21 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ - 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。 如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展 + 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大 JVM-执行引擎 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ Thu, 15 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ - 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统 + 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有 JVM-直接内存 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ Wed, 14 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ - 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码: public class MainTest { public static void main(String[] args) { ByteBuffer allocate = ByteBuffer.allocate(1024 * 1024 * 1024); System.out.println(&# + 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码 JVM-Java对象 https://whiteppure.github.io/iblog/posts/jvm/java-object/ Mon, 12 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-object/ - 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使用Class的newInstance方法:在JDK9里面被标记为过时的方法,因为 + 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使 Java语法糖 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ Sat, 10 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ - 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法, 这种语法对语言的功能并没有 + 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机 JavaIO https://whiteppure.github.io/iblog/posts/java/rookie-io/ Fri, 09 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-io/ - 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 传统的 IO 是通过流技术来处理的。 流(Stream),是一个抽象的概念, + 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道 JVM-方法区 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ Thu, 08 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-堆 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ Sat, 03 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-本地方法接口 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ - 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 这个特征并非Java所特有,很多其它的编程语言都有这一机制,比 + 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java JVM-本地方法栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-虚拟机栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ Sun, 28 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-程序计数寄存器 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ Sat, 27 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-JVM介绍 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ Fri, 05 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ - 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要, + 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经 Nginx介绍 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ Thu, 04 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ - Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好. Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率, + Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表 道德经 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ Wed, 03 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ - 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 天下皆知美之为美,斯恶已。 皆知善之为善,斯不善已。 有无相生,难易相成,长短相形, + 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 关于 https://whiteppure.github.io/iblog/about/ Sat, 20 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/about/ - 搭建博客 本博客使用 hugo + GitHubPage 进行搭建,使用的主题为 zozo Designed by VarKai。 如果你想要使用 hugo 搭建博客,可以参考以下相关资料: hugo中文帮助文档: https://hugo.aiaide.com hugo中文文档: https://www.gohugo.org hugo给文章添加目录: https://www.ariesme.com/posts/2019/add_toc_for_hugo 使用hugo搭建个人博客站点: https://blog.coderzh.com/2015/08/29/hugo 不蒜子计数统计: https://busuanzi.ibruce.info 暗黑主 + 最开始搭建博客时,希望能将自己学习的知识记录下来,发布过一些其他博客网站,但是都用着不太舒服,最后选择了自己搭建,开始是自己买服务器,用halo搭建,随着时间的 面向对象 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ Mon, 15 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ - 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和 + 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒 JVM-Java类加载机制 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ Fri, 05 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ - 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。 类加载器只负责class文 + 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的 Java运算 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ Sat, 30 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ - 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。 种类 运算符按其功能来分:有算术运算符、赋 + 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符 Java数据类型 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ Wed, 20 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ - 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类java.lang.Void + 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA Java异常 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ Wed, 13 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ - 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无法捕获和处理。是不可控制的。 Exception 分为两种 + 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程 Java20201124简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ Tue, 24 Nov 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对接第三方系统,调用外系统相关经验; 熟悉 MySQL,ORACLE.基本操作,熟练使 + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对 SpringBoot整合docker https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ Sun, 30 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ - MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以配置一下国内的镜像加速器 中科大镜像: https://docker.mirrors.ustc.edu.cn 网易: https://hub-mirror.c.163.com 阿里云: https://<你 + MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以 SpringBoot整合kafka https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ Thu, 20 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ - kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常 + kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久 线程状态及创建方式 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ Mon, 20 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ - 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等待 CPU 时间片。包含了运行中(Running)和 就绪(Ready)状态; 就绪(Rea + 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等 Docker介绍 https://whiteppure.github.io/iblog/posts/essays/docker-start/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/docker-start/ - docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 + docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件 Java中常用到的锁 https://whiteppure.github.io/iblog/posts/essays/java-lock/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-lock/ - 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁 指在多线程获取锁的顺序并 + 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他 Java中集合的线程不安全问题 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ Sun, 05 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ - ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 add()方法时,被某个线程打断,添加到一半被打断,没有被添加完 解决方案: 使用Vec + ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 ad CAS原理 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ Sat, 04 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ - CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是基于 CAS 来实现的。 以 AtomicInteger 原子整型类为例。 public class MainTest { public static void main(String[] args) { new AtomicInteger().compareAndSet(1,2); } } 以上面的代码为例 + CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是 SpringBoot整合redis https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ Sun, 01 Mar 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ - Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave模式的数据备份 Redis 可以存储键与5种不同 + Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redi SpringBoot整合elasticsearch https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ Sun, 09 Feb 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ - 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearch-6.5.3和springboot-2.1.0.RELEASE版本 下载镜像: docker + 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearc 2019工作总结 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ Sun, 01 Dec 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ - 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这一个月发现了自身还有很多的不足,所以抱着虚心学习的态度,学习公司的开发流程,了解 + 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这 Vue2.0基础 https://whiteppure.github.io/iblog/posts/essays/vue2-note/ Thu, 23 May 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/vue2-note/ - 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实例的代码量,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功 + 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实 Js雪花飘落 https://whiteppure.github.io/iblog/posts/toy/js-snow/ Tue, 25 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-snow/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto { from { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 0; } to { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 1000px; } } tree, snow { position: absolute; } tree { width: 112px; height: 137px; background: url("images/tree.png"); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto Js下雨特效 https://whiteppure.github.io/iblog/posts/toy/js-rain/ Mon, 10 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-rain/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反使用hidden="false"表示开启音乐播放按钮。 3、使用a + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反 Js换肤特效 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ Wed, 14 Nov 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: flex; justify-content: space-around; align-items: center; } .tab-btn { background-image: url("images/upseek.png"); height: 50px; width: 50px; position: fixed; top: 0; right: 0; } .tab-btn:hover { background-position-y: -63.6px; } </style> </head> <body> <div class="bg-list"> <ul class="img-wrap"> <li class="img-item" data-src="images/1.jpg"> <img src="images/1-1.jpg" width="160px"/> </li> + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: Js折纸导航栏 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ Thu, 25 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼睛距离元素的位置距离*/ } .content .open{ transform: rotateX(0); animation: open 1s linear; } @keyframes open { 0%{ transform: rotateX(-90deg); } 20%{ transform:rotateX(30deg); } 40%{ transform:rotateX(-60deg); } 60%{ transform:rotateX(60deg); } 80%{ transform:rotateX(-30deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼 Js表白神器 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ Sun, 14 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: shadow 1s infinite alternate; } @keyframes shadow { 100%{ box-shadow: 0 0 100px #FF0000; } } .right{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 5px 0; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: Js懒加载 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ Fri, 21 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ - index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title> <style> *{ margin: 0; padding:0; } body{ background: rgb(0,0,0); } .box{ overflow: hidden; width: 948px; background-color: #7c7c7c; margin: 50px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } .box img{ float: left; display: block; width: 300px; height: 150px; margin: + index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title&g Js五子棋 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ Mon, 10 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ - index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = function(){ var oC = document.getElementById('c1'); var oGc = oC.getContext('2d'); var over = false; oGc.strokeStyle = "#bfbfbf"; //绘制棋盘 for(var i=0;i<15;i++){ oGc.moveTo(15+i*30,15); oGc.lineTo(15+i*30,435); oGc.stroke(); oGc.moveTo(15,15+i*30); oGc.lineTo(435,15+i*30); oGc.stroke(); } /* AI难点解析 赢法 + index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = Js滑块拖拽 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ Sat, 08 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { position: absolute; left: 0; top: 0; z-index: 1; width: 0; height: 100%; background: rgba(122,194,60,.4); } .rect .move { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 45px; height: 40px; position: absolute; top: 0; left: 0; background-color: #fff; border: 1px solid #cccccc; + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { Js生日礼物 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ Fri, 24 Aug 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 1000px;/*景深:眼到屏幕的距离*/ } body,h1,p{ margin: 0; } .card{ width: 520px; height: 350px; border-radius: 15px; background: linear-gradient(#020333 70%,#fff 75%);/* + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 100 diff --git a/docs/posts/index.html b/docs/posts/index.html index 6ec89628..8ae2eb94 100644 --- a/docs/posts/index.html +++ b/docs/posts/index.html @@ -12,12 +12,12 @@ - + - + @@ -130,14 +130,21 @@

+ + @@ -177,6 +184,13 @@

+
+
+ Java20240228简历 +
02-28
+
+
+
2023
@@ -805,7 +819,7 @@

diff --git a/docs/posts/index.xml b/docs/posts/index.xml index 58fb5e02..355d7e79 100644 --- a/docs/posts/index.xml +++ b/docs/posts/index.xml @@ -6,623 +6,637 @@ Recent content in Posts on 唯手熟尔 Hugo -- gohugo.io zh - Thu, 21 Mar 2024 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 - Java20240321简历 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - Thu, 21 Mar 2024 00:00:00 +0000 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向对象的编程思想,熟练掌握并应用核心集合框架; 深入运用SpringBoot、Spr + 学习Java参考资料 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + 大厂技术博客 美团技术团队: https://tech.meituan.com 阿里技术团队: https://102.alibaba.com 小米技术团队: https://xiaomi-info.github.io 360技术团队: https://blogs.360.net 有道技术博客: http://techblog.youdao.com 字节跳动博客: https://opensource.bytedance.com/blog 淘宝前端团队: https://fed.taobao.org/blogs Oracle博客: https://blogs.oracle.com/poonam 常用资源网站 J + + + 做好人生防坑防诈骗 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + 为什么要做好人生的防坑防诈骗,可以这么说有些时候做好防坑防诈骗的意义大于你花十几年如一日的学习,花几十年去赚钱。选择大于努力,是很重要的。 观察普通人,他们到了3 培养逆向思维 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ Thu, 21 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ - 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感觉去做事情,大部分人都是凭感觉去做事情,而大部分人都没有高效率做事情的方法,都是 + 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感 如何快速写一份简历 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ Wed, 20 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ - 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答,我们这个行业其他人写简历几乎没有这个习惯,都是自己写,没有借助网络这个意识,我 + 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答 前端20240319简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ Tue, 19 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ - 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复杂业务组件,写出易维护,善于利用新技术解决业务快速发展遇到的问题。 求职意向 期望城 + 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复 Java20240315简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ Fri, 15 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 如何强制复制网站文字 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ Thu, 14 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ - 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情况,可以利用一些小技巧进行复制。 拖拽复制 一种简单直接的方法,不用进行任何其他操作 + 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情 前端知识点 https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ Thu, 29 Feb 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ - 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 ESLint Prettier 调试工具 Chrome IETest Postman 版本管理工具 Git GitLab GitHub 部署发布工具 Jenkins CICD 主流技术 TypeScript Vue React Angular 综合应用 静态 + 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 + + + Java20240228简历 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + Wed, 28 Feb 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向 2023工作总结 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ Fri, 01 Dec 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ - 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识,增强了自己的专业能力。我始终认为团队合作是成功的关键。在工作中,我积极与同事沟 + 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识 Java20230915简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ Fri, 15 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 定时任务可视化管理 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ Sat, 09 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ - 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment '任务名称', job_group varchar(64) default 'DEFAULT' comment '任务组名', invoke_target varchar(500) not null comment + 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment SpringBoot整合nacos https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ Mon, 04 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ - nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml server: port: 3333 config: info: "config info for test from nacos config center" user.yaml user: name: zs1112222 age: 10 address: 测试地址 代码 整合nacos配置中心,注册 + nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml 整合文件上传功能 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ Fri, 11 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ - 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies> application.yml server: port: 80 公共部分 FileManagement public interface FileManagement { /** * 设置下一个bean的对象 * * @param nextFileManagement 下一个 + 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> 整合支付功能 https://whiteppure.github.io/iblog/posts/essays/pay-code/ Thu, 10 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pay-code/ - 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: "" #服务商模式下的子商户公众账号ID subAppId: #服务商模式下的子商户号 subMchId: # p12证书的位 + 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: Validator参数校验 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ Sat, 01 Jul 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ - 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂,判断参数代码语句显得尤为冗长. 或者有些程序会将if封装起来,例如spring中 + 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂 管道流设计模式结合业务 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ Thu, 15 Jun 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ - 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类型码值 */ Integer getCode(); /** * 业务类型名称 * */ String getName(); } AbstractEventContext public abstract class AbstractEventContext implements EventContext{ private final BizType businessType; private final FilterSelector filterSelector; protected AbstractEventContext(BizType businessType, FilterSelector filterSelector) { + 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类 重构一个程序 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ Thu, 20 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ - 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构(动词形式): 使用一些列重构手法,在不改变软件可观察行为的前提下,调整其结构。 重 + 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构 SpringMVC与SpringWebFlux https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ Fri, 14 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ - Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring-webmvc),但它更常被称为 “Spring MVC”。 SpringMVC是基于S + Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring- MySQL详解 https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ Mon, 13 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ - 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcplip的通信。主要完成一些类似于连接处理、 + 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基 如何减少及解决bug https://whiteppure.github.io/iblog/posts/essays/java-bugs/ Fri, 10 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-bugs/ - bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的 + bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今 Elasticsearch详解 https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ Tue, 14 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ - 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。 Elastic Stack, 包括 Elasticsearch、 Ki + 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可 编程常用词汇汇总 https://whiteppure.github.io/iblog/posts/essays/java-dict/ Mon, 13 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-dict/ - QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务 + QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Sec 接口优化 https://whiteppure.github.io/iblog/posts/essays/java-improve/ Tue, 20 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-improve/ - 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体分析,讨论不同解决方案. 定位问题 要快速定位接口哪一个环节比较慢,性能瓶颈在哪里, + 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体 孙子兵法 https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ Mon, 19 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ - 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者, + 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与 IDEA常用配置及使用技巧 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ Fri, 16 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ - 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888 + 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baid 整洁的代码 https://whiteppure.github.io/iblog/posts/essays/clean-code/ Thu, 01 Sep 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/clean-code/ - 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时间不够;假使花时间清理代码,老板就会大发雷霆.或许你只是不耐烦再搞这套程序,期望 + 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时 Java电子书 https://whiteppure.github.io/iblog/posts/books/java-books/ Mon, 08 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/java-books/ - HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内幕 疯狂Java讲义 重构:改善既有代码的设计 领域驱动设计 深入理解计算机系统 Java + HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内 如何做好程序设计功能 https://whiteppure.github.io/iblog/posts/essays/java-design/ Tue, 02 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-design/ - 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 从DDD角度界限上下文、ER图、评审表结构设计是否合理,表的关联关系是否合理、是 + 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 Java20220422简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ Fri, 22 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对SQL + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编 Java小程序集合 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ Sat, 09 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ - 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用java -jar命令启动 某些程序功能并不是很完善,但是也可以凑合着用,写这些程序的主 + 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用ja 数据结构与算法 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ Fri, 10 Dec 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ - 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数据结构学到位。 数据结构包括:线性结构、非线性结构。 线性结构作为最常用的数据结构, + 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数 规范编写Java代码总结 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ Thu, 25 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ - 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维护时间比较长,那么保证代码可读性就显得很重要。作为一个程序员,咱们得有点追求和信 + 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维 网络编程 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ Fri, 19 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ - 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/item/网络七层协议/6056879 网络协议指的是计算机网络中互相通信的对等实体 + 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/i MQ详解 https://whiteppure.github.io/iblog/posts/essays/java-mq/ Tue, 19 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-mq/ - 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:activeMQ,rabbitMQ,kafka,metaMQ。 MQ优点 异步消息处理:可以 + 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:acti Java集合 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ Mon, 04 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ - 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道ArrayList底层是通过数组来存储元素的,所以如果严格来说,数组也算集合的一种 + 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道A Java反射 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ Sat, 02 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ - 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 反射是Java语言的一个特性,它允许程序 + 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对 常见故障排查及程序配置 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ Wed, 08 Sep 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ - 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h +10 预定时间关机(10 + 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作 分布式事务详解 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ Mon, 02 Aug 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ - 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其中有一个环节失败,事务将会撤销所有已成功的活动。 所以事务可以看作是一次重大的活动 + 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其 Object类方法 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ Sat, 10 Jul 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ - 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示继承,也可以隐式继承,效果都是一样的。 class A extends Object{ // to do } class A { // to do } Java Objec + 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示 微服务治理 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ Mon, 21 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ - 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable by fully automated deployment machinery。 There is a bare minimum of centralized management of these services, which may be written in different programming + 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable Redis详解 https://whiteppure.github.io/iblog/posts/essays/java-redis/ Thu, 17 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-redis/ - Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 简而言之,Redis是一个可基于内存亦可持久 + Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库, Spring详解 https://whiteppure.github.io/iblog/posts/spring/java-spring/ Thu, 13 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring/ - 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Spring是一个分层的JavaSE/EE 一站式轻量级开源框架。在每一层都提供支持。 + 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Sp 面试Java可能会被问到的问题 https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ Tue, 11 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ - 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说一下UDP、TCP及http与https 如何保证线程安全 线程池工作原理 如何避免死 + 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说 JVM-垃圾回收器 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ Thu, 06 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ - 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 Java不同版本新特性学习思路: 语法层面:Lambda表达式、s + 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了 Java多线程 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ Wed, 05 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ - 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一 + 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最 HashMap详解 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ Mon, 03 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ - 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中元素个数达到了容量的3/4的时候就会进行自动扩容; threshold: 阈值;阈值 + 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中 JVM-相关概念 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ Tue, 27 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ - 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档中对内存溢出的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 由于GC一 + 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档 面试中常见的问题 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ Fri, 23 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ - 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职之后可能会被分配到该项目上; 在介绍的时候要说明你对面试的公司有什么用,根据不同类 + 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职 JVM-垃圾回收 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ Wed, 21 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ - 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。 如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展 + 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大 JVM-执行引擎 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ Thu, 15 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ - 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统 + 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有 JVM-直接内存 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ Wed, 14 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ - 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码: public class MainTest { public static void main(String[] args) { ByteBuffer allocate = ByteBuffer.allocate(1024 * 1024 * 1024); System.out.println(&# + 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码 JVM-Java对象 https://whiteppure.github.io/iblog/posts/jvm/java-object/ Mon, 12 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-object/ - 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使用Class的newInstance方法:在JDK9里面被标记为过时的方法,因为 + 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使 Java语法糖 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ Sat, 10 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ - 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法, 这种语法对语言的功能并没有 + 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机 JavaIO https://whiteppure.github.io/iblog/posts/java/rookie-io/ Fri, 09 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-io/ - 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 传统的 IO 是通过流技术来处理的。 流(Stream),是一个抽象的概念, + 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道 JVM-方法区 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ Thu, 08 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-堆 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ Sat, 03 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-本地方法接口 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ - 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 这个特征并非Java所特有,很多其它的编程语言都有这一机制,比 + 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java JVM-本地方法栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-虚拟机栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ Sun, 28 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-程序计数寄存器 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ Sat, 27 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-JVM介绍 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ Fri, 05 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ - 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要, + 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经 Nginx介绍 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ Thu, 04 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ - Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好. Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率, + Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表 道德经 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ Wed, 03 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ - 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 天下皆知美之为美,斯恶已。 皆知善之为善,斯不善已。 有无相生,难易相成,长短相形, + 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 面向对象 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ Mon, 15 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ - 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和 + 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒 JVM-Java类加载机制 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ Fri, 05 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ - 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。 类加载器只负责class文 + 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的 Java运算 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ Sat, 30 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ - 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。 种类 运算符按其功能来分:有算术运算符、赋 + 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符 Java数据类型 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ Wed, 20 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ - 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类java.lang.Void + 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA Java异常 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ Wed, 13 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ - 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无法捕获和处理。是不可控制的。 Exception 分为两种 + 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程 Java20201124简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ Tue, 24 Nov 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对接第三方系统,调用外系统相关经验; 熟悉 MySQL,ORACLE.基本操作,熟练使 + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对 SpringBoot整合docker https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ Sun, 30 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ - MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以配置一下国内的镜像加速器 中科大镜像: https://docker.mirrors.ustc.edu.cn 网易: https://hub-mirror.c.163.com 阿里云: https://<你 + MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以 SpringBoot整合kafka https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ Thu, 20 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ - kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常 + kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久 线程状态及创建方式 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ Mon, 20 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ - 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等待 CPU 时间片。包含了运行中(Running)和 就绪(Ready)状态; 就绪(Rea + 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等 Docker介绍 https://whiteppure.github.io/iblog/posts/essays/docker-start/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/docker-start/ - docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 + docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件 Java中常用到的锁 https://whiteppure.github.io/iblog/posts/essays/java-lock/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-lock/ - 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁 指在多线程获取锁的顺序并 + 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他 Java中集合的线程不安全问题 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ Sun, 05 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ - ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 add()方法时,被某个线程打断,添加到一半被打断,没有被添加完 解决方案: 使用Vec + ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 ad CAS原理 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ Sat, 04 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ - CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是基于 CAS 来实现的。 以 AtomicInteger 原子整型类为例。 public class MainTest { public static void main(String[] args) { new AtomicInteger().compareAndSet(1,2); } } 以上面的代码为例 + CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是 SpringBoot整合redis https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ Sun, 01 Mar 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ - Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave模式的数据备份 Redis 可以存储键与5种不同 + Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redi SpringBoot整合elasticsearch https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ Sun, 09 Feb 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ - 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearch-6.5.3和springboot-2.1.0.RELEASE版本 下载镜像: docker + 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearc 2019工作总结 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ Sun, 01 Dec 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ - 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这一个月发现了自身还有很多的不足,所以抱着虚心学习的态度,学习公司的开发流程,了解 + 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这 Vue2.0基础 https://whiteppure.github.io/iblog/posts/essays/vue2-note/ Thu, 23 May 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/vue2-note/ - 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实例的代码量,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功 + 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实 Js雪花飘落 https://whiteppure.github.io/iblog/posts/toy/js-snow/ Tue, 25 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-snow/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto { from { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 0; } to { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 1000px; } } tree, snow { position: absolute; } tree { width: 112px; height: 137px; background: url("images/tree.png"); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto Js下雨特效 https://whiteppure.github.io/iblog/posts/toy/js-rain/ Mon, 10 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-rain/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反使用hidden="false"表示开启音乐播放按钮。 3、使用a + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反 Js换肤特效 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ Wed, 14 Nov 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: flex; justify-content: space-around; align-items: center; } .tab-btn { background-image: url("images/upseek.png"); height: 50px; width: 50px; position: fixed; top: 0; right: 0; } .tab-btn:hover { background-position-y: -63.6px; } </style> </head> <body> <div class="bg-list"> <ul class="img-wrap"> <li class="img-item" data-src="images/1.jpg"> <img src="images/1-1.jpg" width="160px"/> </li> + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: Js折纸导航栏 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ Thu, 25 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼睛距离元素的位置距离*/ } .content .open{ transform: rotateX(0); animation: open 1s linear; } @keyframes open { 0%{ transform: rotateX(-90deg); } 20%{ transform:rotateX(30deg); } 40%{ transform:rotateX(-60deg); } 60%{ transform:rotateX(60deg); } 80%{ transform:rotateX(-30deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼 Js表白神器 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ Sun, 14 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: shadow 1s infinite alternate; } @keyframes shadow { 100%{ box-shadow: 0 0 100px #FF0000; } } .right{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 5px 0; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: Js懒加载 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ Fri, 21 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ - index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title> <style> *{ margin: 0; padding:0; } body{ background: rgb(0,0,0); } .box{ overflow: hidden; width: 948px; background-color: #7c7c7c; margin: 50px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } .box img{ float: left; display: block; width: 300px; height: 150px; margin: + index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title&g Js五子棋 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ Mon, 10 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ - index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = function(){ var oC = document.getElementById('c1'); var oGc = oC.getContext('2d'); var over = false; oGc.strokeStyle = "#bfbfbf"; //绘制棋盘 for(var i=0;i<15;i++){ oGc.moveTo(15+i*30,15); oGc.lineTo(15+i*30,435); oGc.stroke(); oGc.moveTo(15,15+i*30); oGc.lineTo(435,15+i*30); oGc.stroke(); } /* AI难点解析 赢法 + index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = Js滑块拖拽 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ Sat, 08 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { position: absolute; left: 0; top: 0; z-index: 1; width: 0; height: 100%; background: rgba(122,194,60,.4); } .rect .move { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 45px; height: 40px; position: absolute; top: 0; left: 0; background-color: #fff; border: 1px solid #cccccc; + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { Js生日礼物 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ Fri, 24 Aug 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 1000px;/*景深:眼到屏幕的距离*/ } body,h1,p{ margin: 0; } .card{ width: 520px; height: 350px; border-radius: 15px; background: linear-gradient(#020333 70%,#fff 75%);/* + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 100 diff --git a/docs/tags/docker/index.xml b/docs/tags/docker/index.xml index 38d61c56..6fca6c37 100644 --- a/docs/tags/docker/index.xml +++ b/docs/tags/docker/index.xml @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ Sun, 30 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ - MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以配置一下国内的镜像加速器 中科大镜像: https://docker.mirrors.ustc.edu.cn 网易: https://hub-mirror.c.163.com 阿里云: https://<你 + MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以 Docker介绍 https://whiteppure.github.io/iblog/posts/essays/docker-start/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/docker-start/ - docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 + docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件 diff --git a/docs/tags/elasticsearch/index.xml b/docs/tags/elasticsearch/index.xml index a62d963c..986d90c9 100644 --- a/docs/tags/elasticsearch/index.xml +++ b/docs/tags/elasticsearch/index.xml @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ Tue, 14 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/elasticsearch/ - 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。 Elastic Stack, 包括 Elasticsearch、 Ki + 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可 SpringBoot整合elasticsearch https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ Sun, 09 Feb 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ - 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearch-6.5.3和springboot-2.1.0.RELEASE版本 下载镜像: docker + 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearc diff --git a/docs/tags/index.xml b/docs/tags/index.xml index a1be089f..b7987693 100644 --- a/docs/tags/index.xml +++ b/docs/tags/index.xml @@ -6,22 +6,29 @@ Recent content in Tags on 唯手熟尔 Hugo -- gohugo.io zh - Thu, 21 Mar 2024 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 - 简历 - https://whiteppure.github.io/iblog/tags/%E7%AE%80%E5%8E%86/ - Thu, 21 Mar 2024 00:00:00 +0000 - https://whiteppure.github.io/iblog/tags/%E7%AE%80%E5%8E%86/ + Java + https://whiteppure.github.io/iblog/tags/java/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/tags/java/ 其他 https://whiteppure.github.io/iblog/tags/%E5%85%B6%E4%BB%96/ - Thu, 21 Mar 2024 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/tags/%E5%85%B6%E4%BB%96/ + + 简历 + https://whiteppure.github.io/iblog/tags/%E7%AE%80%E5%8E%86/ + Wed, 20 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/tags/%E7%AE%80%E5%8E%86/ + + 学习路线 https://whiteppure.github.io/iblog/tags/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/ @@ -64,13 +71,6 @@ https://whiteppure.github.io/iblog/tags/springboot/ - - Java - https://whiteppure.github.io/iblog/tags/java/ - Fri, 14 Apr 2023 00:00:00 +0000 - https://whiteppure.github.io/iblog/tags/java/ - - Spring https://whiteppure.github.io/iblog/tags/spring/ diff --git a/docs/tags/java/index.xml b/docs/tags/java/index.xml index 142f4c18..9daa5a9b 100644 --- a/docs/tags/java/index.xml +++ b/docs/tags/java/index.xml @@ -6,252 +6,259 @@ Recent content in Java on 唯手熟尔 Hugo -- gohugo.io zh - Fri, 14 Apr 2023 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 + + 学习Java参考资料 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/essays/java-resource/ + 大厂技术博客 美团技术团队: https://tech.meituan.com 阿里技术团队: https://102.alibaba.com 小米技术团队: https://xiaomi-info.github.io 360技术团队: https://blogs.360.net 有道技术博客: http://techblog.youdao.com 字节跳动博客: https://opensource.bytedance.com/blog 淘宝前端团队: https://fed.taobao.org/blogs Oracle博客: https://blogs.oracle.com/poonam 常用资源网站 J + SpringMVC与SpringWebFlux https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ Fri, 14 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ - Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring-webmvc),但它更常被称为 “Spring MVC”。 SpringMVC是基于S + Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring- 编程常用词汇汇总 https://whiteppure.github.io/iblog/posts/essays/java-dict/ Mon, 13 Feb 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-dict/ - QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务 + QPS 即 Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS 即 Transactions Per Sec 如何做好程序设计功能 https://whiteppure.github.io/iblog/posts/essays/java-design/ Tue, 02 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-design/ - 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 从DDD角度界限上下文、ER图、评审表结构设计是否合理,表的关联关系是否合理、是 + 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 Java小程序集合 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ Sat, 09 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ - 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用java -jar命令启动 某些程序功能并不是很完善,但是也可以凑合着用,写这些程序的主 + 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用ja 数据结构与算法 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ Fri, 10 Dec 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ - 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数据结构学到位。 数据结构包括:线性结构、非线性结构。 线性结构作为最常用的数据结构, + 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数 网络编程 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ Fri, 19 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ - 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/item/网络七层协议/6056879 网络协议指的是计算机网络中互相通信的对等实体 + 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/i Java集合 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ Mon, 04 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ - 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道ArrayList底层是通过数组来存储元素的,所以如果严格来说,数组也算集合的一种 + 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道A Java反射 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ Sat, 02 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ - 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 反射是Java语言的一个特性,它允许程序 + 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对 Object类方法 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ Sat, 10 Jul 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ - 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示继承,也可以隐式继承,效果都是一样的。 class A extends Object{ // to do } class A { // to do } Java Objec + 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示 Spring详解 https://whiteppure.github.io/iblog/posts/spring/java-spring/ Thu, 13 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring/ - 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Spring是一个分层的JavaSE/EE 一站式轻量级开源框架。在每一层都提供支持。 + 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Sp JVM-垃圾回收器 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ Thu, 06 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ - 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 Java不同版本新特性学习思路: 语法层面:Lambda表达式、s + 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了 Java多线程 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ Wed, 05 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ - 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一 + 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最 HashMap详解 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ Mon, 03 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ - 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中元素个数达到了容量的3/4的时候就会进行自动扩容; threshold: 阈值;阈值 + 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中 JVM-相关概念 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ Tue, 27 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ - 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档中对内存溢出的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 由于GC一 + 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档 JVM-垃圾回收 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ Wed, 21 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ - 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。 如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展 + 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大 JVM-执行引擎 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ Thu, 15 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ - 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统 + 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有 JVM-直接内存 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ Wed, 14 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ - 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码: public class MainTest { public static void main(String[] args) { ByteBuffer allocate = ByteBuffer.allocate(1024 * 1024 * 1024); System.out.println(&# + 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码 JVM-Java对象 https://whiteppure.github.io/iblog/posts/jvm/java-object/ Mon, 12 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-object/ - 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使用Class的newInstance方法:在JDK9里面被标记为过时的方法,因为 + 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使 Java语法糖 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ Sat, 10 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ - 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法, 这种语法对语言的功能并没有 + 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机 JavaIO https://whiteppure.github.io/iblog/posts/java/rookie-io/ Fri, 09 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-io/ - 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 传统的 IO 是通过流技术来处理的。 流(Stream),是一个抽象的概念, + 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道 JVM-方法区 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ Thu, 08 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-堆 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ Sat, 03 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-本地方法接口 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ - 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 这个特征并非Java所特有,很多其它的编程语言都有这一机制,比 + 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java JVM-本地方法栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-虚拟机栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ Sun, 28 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-程序计数寄存器 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ Sat, 27 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-JVM介绍 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ Fri, 05 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ - 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要, + 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经 面向对象 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ Mon, 15 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ - 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和 + 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒 JVM-Java类加载机制 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ Fri, 05 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ - 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。 类加载器只负责class文 + 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的 Java运算 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ Sat, 30 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ - 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。 种类 运算符按其功能来分:有算术运算符、赋 + 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符 Java数据类型 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ Wed, 20 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ - 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类java.lang.Void + 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA Java异常 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ Wed, 13 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ - 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无法捕获和处理。是不可控制的。 Exception 分为两种 + 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程 线程状态及创建方式 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ Mon, 20 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ - 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等待 CPU 时间片。包含了运行中(Running)和 就绪(Ready)状态; 就绪(Rea + 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等 Java中常用到的锁 https://whiteppure.github.io/iblog/posts/essays/java-lock/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-lock/ - 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁 指在多线程获取锁的顺序并 + 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他 Java中集合的线程不安全问题 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ Sun, 05 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ - ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 add()方法时,被某个线程打断,添加到一半被打断,没有被添加完 解决方案: 使用Vec + ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 ad diff --git "a/docs/tags/java\345\237\272\347\241\200/index.xml" "b/docs/tags/java\345\237\272\347\241\200/index.xml" index da7be4bd..777a38d8 100644 --- "a/docs/tags/java\345\237\272\347\241\200/index.xml" +++ "b/docs/tags/java\345\237\272\347\241\200/index.xml" @@ -13,63 +13,63 @@ https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ Mon, 04 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-java-container/ - 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道ArrayList底层是通过数组来存储元素的,所以如果严格来说,数组也算集合的一种 + 概述 Java中的集合主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如果你看过ArrayList类源码,就知道A Java反射 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ Sat, 02 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-reflect/ - 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 反射是Java语言的一个特性,它允许程序 + 概述 什么是反射 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对 Object类方法 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ Sat, 10 Jul 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-objectclass-methods/ - 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示继承,也可以隐式继承,效果都是一样的。 class A extends Object{ // to do } class A { // to do } Java Objec + 概览 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。 Object类可以显示 Java多线程 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ Wed, 05 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-multi-thread/ - 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一 + 相关概念 线程与进程 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。例如,一个正在运行的程序的实例就是一个进程。 线程是操作系统能够进行运算调度的最 JavaIO https://whiteppure.github.io/iblog/posts/java/rookie-io/ Fri, 09 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-io/ - 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 传统的 IO 是通过流技术来处理的。 流(Stream),是一个抽象的概念, + 概念 Java IO通过数据流、序列化和文件系统提供系统输入和输出。 IO,即 in 和 out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道 面向对象 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ Mon, 15 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-object-oriented/ - 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒置原则以及接口隔离原则,其中,单一职责原则是指一个类应该是一组相关性很高的函数和 + 面向对象是一种编程思想,包括三大特性和六大原则,其中,三大特性指的是封装、继承和多态;六大原则指的是单一职责原则、开放封闭原则、迪米特原则、里氏替换原则、依赖倒 Java运算 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ Sat, 30 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-operation/ - 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。 种类 运算符按其功能来分:有算术运算符、赋 + 运算符与表达式 运算符 运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符 Java数据类型 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ Wed, 20 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-datatype/ - 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类java.lang.Void + 基本类型 Java语言提供了八种基本类型。六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 俗称4类8种 这里只介绍称4类8种.实际上,JAVA Java异常 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ Wed, 13 Jan 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/java/rookie-exception/ - 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无法捕获和处理。是不可控制的。 Exception 分为两种 + 异常类型 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种:Error 和 Exception。 其中 Error 用来表示Java程序无法处理的错误;这类错误一般与硬件有关,与程 diff --git a/docs/tags/js/index.xml b/docs/tags/js/index.xml index d8420e0b..d3f063b8 100644 --- a/docs/tags/js/index.xml +++ b/docs/tags/js/index.xml @@ -13,63 +13,63 @@ https://whiteppure.github.io/iblog/posts/toy/js-snow/ Tue, 25 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-snow/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto { from { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 0; } to { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 1000px; } } tree, snow { position: absolute; } tree { width: 112px; height: 137px; background: url("images/tree.png"); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto Js下雨特效 https://whiteppure.github.io/iblog/posts/toy/js-rain/ Mon, 10 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-rain/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反使用hidden="false"表示开启音乐播放按钮。 3、使用a + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反 Js换肤特效 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ Wed, 14 Nov 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: flex; justify-content: space-around; align-items: center; } .tab-btn { background-image: url("images/upseek.png"); height: 50px; width: 50px; position: fixed; top: 0; right: 0; } .tab-btn:hover { background-position-y: -63.6px; } </style> </head> <body> <div class="bg-list"> <ul class="img-wrap"> <li class="img-item" data-src="images/1.jpg"> <img src="images/1-1.jpg" width="160px"/> </li> + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: Js折纸导航栏 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ Thu, 25 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼睛距离元素的位置距离*/ } .content .open{ transform: rotateX(0); animation: open 1s linear; } @keyframes open { 0%{ transform: rotateX(-90deg); } 20%{ transform:rotateX(30deg); } 40%{ transform:rotateX(-60deg); } 60%{ transform:rotateX(60deg); } 80%{ transform:rotateX(-30deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼 Js表白神器 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ Sun, 14 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: shadow 1s infinite alternate; } @keyframes shadow { 100%{ box-shadow: 0 0 100px #FF0000; } } .right{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 5px 0; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: Js懒加载 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ Fri, 21 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ - index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title> <style> *{ margin: 0; padding:0; } body{ background: rgb(0,0,0); } .box{ overflow: hidden; width: 948px; background-color: #7c7c7c; margin: 50px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } .box img{ float: left; display: block; width: 300px; height: 150px; margin: + index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title&g Js五子棋 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ Mon, 10 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ - index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = function(){ var oC = document.getElementById('c1'); var oGc = oC.getContext('2d'); var over = false; oGc.strokeStyle = "#bfbfbf"; //绘制棋盘 for(var i=0;i<15;i++){ oGc.moveTo(15+i*30,15); oGc.lineTo(15+i*30,435); oGc.stroke(); oGc.moveTo(15,15+i*30); oGc.lineTo(435,15+i*30); oGc.stroke(); } /* AI难点解析 赢法 + index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = Js滑块拖拽 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ Sat, 08 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { position: absolute; left: 0; top: 0; z-index: 1; width: 0; height: 100%; background: rgba(122,194,60,.4); } .rect .move { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 45px; height: 40px; position: absolute; top: 0; left: 0; background-color: #fff; border: 1px solid #cccccc; + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { Js生日礼物 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ Fri, 24 Aug 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 1000px;/*景深:眼到屏幕的距离*/ } body,h1,p{ margin: 0; } .card{ width: 520px; height: 350px; border-radius: 15px; background: linear-gradient(#020333 70%,#fff 75%);/* + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 100 diff --git a/docs/tags/jvm/index.xml b/docs/tags/jvm/index.xml index 3ef24a05..18178f1f 100644 --- a/docs/tags/jvm/index.xml +++ b/docs/tags/jvm/index.xml @@ -13,98 +13,98 @@ https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ Thu, 06 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collector/ - 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 Java不同版本新特性学习思路: 语法层面:Lambda表达式、s + 垃圾回收器分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了 JVM-相关概念 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ Tue, 27 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-about/ - 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档中对内存溢出的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 由于GC一 + 内存溢出 内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。 官方文档 JVM-垃圾回收 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ Wed, 21 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-garbage-collection/ - 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。 如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展 + 垃圾回收 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 垃圾收集机制是Java的招牌能力,极大 JVM-执行引擎 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ Thu, 15 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-execute-engine/ - 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统 + 概述 执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有 JVM-直接内存 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ Wed, 14 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-direct-memory/ - 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码: public class MainTest { public static void main(String[] args) { ByteBuffer allocate = ByteBuffer.allocate(1024 * 1024 * 1024); System.out.println(&# + 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 操作直接内存演示代码 JVM-Java对象 https://whiteppure.github.io/iblog/posts/jvm/java-object/ Mon, 12 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/java-object/ - 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使用Class的newInstance方法:在JDK9里面被标记为过时的方法,因为 + 对象实例化 对象的创建方式 使用new关键字创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法; 使用反射方式创建: 使 JVM-方法区 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ Thu, 08 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-method-area/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-堆 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ Sat, 03 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-heap/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-本地方法接口 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-interface/ - 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 这个特征并非Java所特有,很多其它的编程语言都有这一机制,比 + 概念 简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。 一个Native Method是这样一个Java方法:该方法的实现由非Java JVM-本地方法栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ Fri, 02 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-native-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-虚拟机栈 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ Sun, 28 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-stack/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-程序计数寄存器 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ Sat, 27 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-pc-register/ - Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 运行时数据区域包括 程序计数寄存器 虚 + Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。 另外一些则是与线程一一对应的,这些与线程对 JVM-JVM介绍 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ Fri, 05 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ - 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要, + 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经 JVM-Java类加载机制 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ Fri, 05 Feb 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-classloader/ - 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。 类加载器只负责class文 + 类加载过程 在Java中,类加载器把一个类装入JVM中,要经过以下步骤: 加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。 这5个阶段一般是顺序发生的 diff --git a/docs/tags/mq/index.xml b/docs/tags/mq/index.xml index 5e16bd61..db1c5096 100644 --- a/docs/tags/mq/index.xml +++ b/docs/tags/mq/index.xml @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/essays/java-mq/ Tue, 19 Oct 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-mq/ - 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:activeMQ,rabbitMQ,kafka,metaMQ。 MQ优点 异步消息处理:可以 + 概念 MQ 即 messagequeue 消息队列,是分布式系统的重要组件,主要解决异步消息,应用解耦,消峰等问题。从而实现高可用,高性能,可伸缩和最终一致性的架构。使用较多的MQ有:acti SpringBoot整合kafka https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ Thu, 20 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ - kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常 + kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久 diff --git a/docs/tags/mysql/index.xml b/docs/tags/mysql/index.xml index 936fc0dd..171cb3d3 100644 --- a/docs/tags/mysql/index.xml +++ b/docs/tags/mysql/index.xml @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ Mon, 13 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/sql-select-fast/ - 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcplip的通信。主要完成一些类似于连接处理、 + 逻辑架构 主要分为:连接层,服务层,引擎层,存储层。 客户端执行一条select命令的流程如下: 连接层:最上层是一些客户端和连接服务,包含本地sock通信和大多数基 diff --git a/docs/tags/nacos/index.xml b/docs/tags/nacos/index.xml index 95d2bf3c..01718441 100644 --- a/docs/tags/nacos/index.xml +++ b/docs/tags/nacos/index.xml @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ Mon, 04 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ - nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml server: port: 3333 config: info: "config info for test from nacos config center" user.yaml user: name: zs1112222 age: 10 address: 测试地址 代码 整合nacos配置中心,注册 + nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml diff --git a/docs/tags/nginx/index.xml b/docs/tags/nginx/index.xml index 5f35b13f..379d367d 100644 --- a/docs/tags/nginx/index.xml +++ b/docs/tags/nginx/index.xml @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/nginx-start/ Thu, 04 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ - Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好. Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率, + Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表 diff --git a/docs/tags/redis/index.xml b/docs/tags/redis/index.xml index bcada2fb..dcfa83a6 100644 --- a/docs/tags/redis/index.xml +++ b/docs/tags/redis/index.xml @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/essays/java-redis/ Thu, 17 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-redis/ - Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 简而言之,Redis是一个可基于内存亦可持久 + Redis概述 参考文章: https://www.runoob.com/redis/redis-intro.html https://www.redis.com.cn/redis-interview-questions.html 什么是Redis Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库, SpringBoot整合redis https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ Sun, 01 Mar 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ - Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave模式的数据备份 Redis 可以存储键与5种不同 + Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redi diff --git a/docs/tags/spring/index.xml b/docs/tags/spring/index.xml index 95ae6398..95b54eee 100644 --- a/docs/tags/spring/index.xml +++ b/docs/tags/spring/index.xml @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ Fri, 14 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring-mvc-webflux/ - Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring-webmvc),但它更常被称为 “Spring MVC”。 SpringMVC是基于S + Spring MVC Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框架中。正式名称 “Spring Web MVC “来自其源模块的名称(spring- Spring详解 https://whiteppure.github.io/iblog/posts/spring/java-spring/ Thu, 13 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/java-spring/ - 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Spring是一个分层的JavaSE/EE 一站式轻量级开源框架。在每一层都提供支持。 + 概览 Spring是一个轻量级的Java开源框架,为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面(AOP)。 简单来说,Sp diff --git a/docs/tags/springboot/index.xml b/docs/tags/springboot/index.xml index b6524d16..3638386a 100644 --- a/docs/tags/springboot/index.xml +++ b/docs/tags/springboot/index.xml @@ -13,42 +13,42 @@ https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ Mon, 04 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-nacos/ - nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml server: port: 3333 config: info: "config info for test from nacos config center" user.yaml user: name: zs1112222 age: 10 address: 测试地址 代码 整合nacos配置中心,注册 + nacos nacos下载 下载地址 一键傻瓜试安装即可,官网写的很清楚这里不在赘述 http://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html nacos启动 将模式改为单机模式 启动成功 nacos相关配置 demo-dev.yaml server: port: 8001 config: info: "config info for dev from nacos config center" demo-test.yaml Validator参数校验 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ Sat, 01 Jul 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ - 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂,判断参数代码语句显得尤为冗长. 或者有些程序会将if封装起来,例如spring中 + 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂 SpringBoot整合docker https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ Sun, 30 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-docker/ - MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以配置一下国内的镜像加速器 中科大镜像: https://docker.mirrors.ustc.edu.cn 网易: https://hub-mirror.c.163.com 阿里云: https://<你 + MacOS上安装docker 下载 国内下载网站: http://get.daocloud.io 不推荐下载docker版本太旧了 官网下载: https://docs.docker.com/get-started/#download-and-install-docker 或用homebrew进行下载安装 brew install --cask --appdir=/Applications docker 配置镜像 由于网速原因,可以 SpringBoot整合kafka https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ Thu, 20 Aug 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-kafka/ - kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常 + kafka介绍 kafka官网: http://kafka.apache.org kafka中文官网: https://kafka.apachecn.org Kafka是一种分布式的,基于发布/订阅的消息系统。主要特点如下: 以时间复杂度为O(1)的方式提供消息持久 SpringBoot整合redis https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ Sun, 01 Mar 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-redis/ - Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave模式的数据备份 Redis 可以存储键与5种不同 + Redis介绍 redis是开源的一个高性能的 key-value 数据库。 主要特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redi SpringBoot整合elasticsearch https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ Sun, 09 Feb 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/spring/springboot-elasticsearch/ - 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearch-6.5.3和springboot-2.1.0.RELEASE版本 下载镜像: docker + 安装elasticsearch 要注意导入依赖的版本和安装elasticsearch的版本与springboot的兼容问题 用 docker 安装 elasticsearch 本例用elasticsearc diff --git a/docs/tags/vue/index.xml b/docs/tags/vue/index.xml index 84e72f37..992ce8fb 100644 --- a/docs/tags/vue/index.xml +++ b/docs/tags/vue/index.xml @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/vue2-note/ Thu, 23 May 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/vue2-note/ - 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实例的代码量,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功 + 参考资料 vue官方文档: https://cn.vuejs.org/v2/guide vue参考视频资料: https://www.bilibili.com/video/av50680998 vue菜鸟教程文档: https://www.runoob.com/vue2/vue-tutorial.html vue-组件 参考资料: https://cn.vuejs.org/v2/guide/components.html#ad 组件是可复用的 Vue 实例,且带有一个名字. 组件的出现是为了拆分vue实 diff --git "a/docs/tags/\344\271\246\347\261\215/index.xml" "b/docs/tags/\344\271\246\347\261\215/index.xml" index 90c8c073..6e5a09b5 100644 --- "a/docs/tags/\344\271\246\347\261\215/index.xml" +++ "b/docs/tags/\344\271\246\347\261\215/index.xml" @@ -13,21 +13,21 @@ https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ Mon, 19 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-sunzibingfa/ - 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者, + 始计 兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与 Java电子书 https://whiteppure.github.io/iblog/posts/books/java-books/ Mon, 08 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/java-books/ - HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内幕 疯狂Java讲义 重构:改善既有代码的设计 领域驱动设计 深入理解计算机系统 Java + HeadFirst设计模式 Java数据结构和算法 Java核心技术卷I基础知识 Java编程思想 代码整洁之道 大型网站技术架构 大话数据结构 深入分析JavaWeb技术内 道德经 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ Wed, 03 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/books/books-daodejing/ - 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 天下皆知美之为美,斯恶已。 皆知善之为善,斯不善已。 有无相生,难易相成,长短相形, + 第一章 道可道,非常道。名可名,非常名。 无名天地之始﹔有名万物之母。 故常无,欲以观其妙﹔常有,欲以观其徼。 此两者,同出而异名,同谓之玄。 玄之又玄,众妙之门。 第二章 diff --git "a/docs/tags/\344\272\213\345\212\241/index.xml" "b/docs/tags/\344\272\213\345\212\241/index.xml" index 1d71b6c7..796e68a1 100644 --- "a/docs/tags/\344\272\213\345\212\241/index.xml" +++ "b/docs/tags/\344\272\213\345\212\241/index.xml" @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/java-transaction/ Mon, 02 Aug 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ - 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其中有一个环节失败,事务将会撤销所有已成功的活动。 所以事务可以看作是一次重大的活动 + 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其 diff --git "a/docs/tags/\344\275\277\347\224\250\344\273\213\347\273\215/index.xml" "b/docs/tags/\344\275\277\347\224\250\344\273\213\347\273\215/index.xml" index 7fc64ad3..4036de96 100644 --- "a/docs/tags/\344\275\277\347\224\250\344\273\213\347\273\215/index.xml" +++ "b/docs/tags/\344\275\277\347\224\250\344\273\213\347\273\215/index.xml" @@ -13,21 +13,21 @@ https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ Fri, 05 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/jvm/jvm-start/ - 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要, + 为什么要学习JVM 大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。 一些有一定工作经 Nginx介绍 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ Thu, 04 Mar 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/nginx-start/ - Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好. Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率, + Nginx介绍 Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表 Docker介绍 https://whiteppure.github.io/iblog/posts/essays/docker-start/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/docker-start/ - docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 + docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件 diff --git "a/docs/tags/\345\205\266\344\273\226/index.xml" "b/docs/tags/\345\205\266\344\273\226/index.xml" index 1d771f91..bdcfceb2 100644 --- "a/docs/tags/\345\205\266\344\273\226/index.xml" +++ "b/docs/tags/\345\205\266\344\273\226/index.xml" @@ -6,28 +6,35 @@ Recent content in 其他 on 唯手熟尔 Hugo -- gohugo.io zh - Thu, 21 Mar 2024 00:00:00 +0000 + Fri, 22 Mar 2024 00:00:00 +0000 + + 做好人生防坑防诈骗 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + Fri, 22 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/ideology/ideology-002/ + 为什么要做好人生的防坑防诈骗,可以这么说有些时候做好防坑防诈骗的意义大于你花十几年如一日的学习,花几十年去赚钱。选择大于努力,是很重要的。 观察普通人,他们到了3 + 培养逆向思维 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ Thu, 21 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/ideology/ideology-001/ - 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感觉去做事情,大部分人都是凭感觉去做事情,而大部分人都没有高效率做事情的方法,都是 + 假设你现在做的一切都是错的,这里的错并不是真正意义上的错,而指的是现在做事情的方法是低效率的。 我们大部分人做事情都容易陷入到细节里面去,凭感觉去做事情,你是凭感 如何快速写一份简历 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ Wed, 20 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ - 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答,我们这个行业其他人写简历几乎没有这个习惯,都是自己写,没有借助网络这个意识,我 + 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答 如何强制复制网站文字 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ Thu, 14 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/force-copy-website-text/ - 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情况,可以利用一些小技巧进行复制。 拖拽复制 一种简单直接的方法,不用进行任何其他操作 + 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的,但是偶尔会遇到一些网站会禁止复制文字,一般都是让你开会员或者注册登录。 针这种情 diff --git "a/docs/tags/\345\210\206\345\270\203\345\274\217/index.xml" "b/docs/tags/\345\210\206\345\270\203\345\274\217/index.xml" index 1ee256b1..f8f7ba3a 100644 --- "a/docs/tags/\345\210\206\345\270\203\345\274\217/index.xml" +++ "b/docs/tags/\345\210\206\345\270\203\345\274\217/index.xml" @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/essays/java-transaction/ Mon, 02 Aug 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-transaction/ - 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其中有一个环节失败,事务将会撤销所有已成功的活动。 所以事务可以看作是一次重大的活动 + 基础概念 什么是事务 什么是事务?举个例子:你去超市买东西,“一手交钱,一手交货"就是一个事务的例子,交钱和交货必须同时成功,事务才算成功,其 微服务治理 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ Mon, 21 Jun 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-small-service/ - 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable by fully automated deployment machinery。 There is a bare minimum of centralized management of these services, which may be written in different programming + 什么是微服务架构 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API。 These services are built around business capabilities and independently deployable diff --git "a/docs/tags/\345\255\246\344\271\240\350\267\257\347\272\277/index.xml" "b/docs/tags/\345\255\246\344\271\240\350\267\257\347\272\277/index.xml" index 431f63ec..be1a88d3 100644 --- "a/docs/tags/\345\255\246\344\271\240\350\267\257\347\272\277/index.xml" +++ "b/docs/tags/\345\255\246\344\271\240\350\267\257\347\272\277/index.xml" @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ Thu, 29 Feb 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/front-learning-route/ - 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 ESLint Prettier 调试工具 Chrome IETest Postman 版本管理工具 Git GitLab GitHub 部署发布工具 Jenkins CICD 主流技术 TypeScript Vue React Angular 综合应用 静态 + 基础知识 网络知识 HTTP DNS 域名 云服务 网络安全 HTTPS CORS 网络渗透 OWASP HTML CSS JavaScript JQuery Ajax ES6-ES11 综合应用 工程化体系 代码规范 CSS预处理器 Less Sass PostCSS Node Promise Axios 工具 包管理工具 Yarn Npm 打包工具 Webpack Parcel 代码格式化工具 diff --git "a/docs/tags/\345\267\245\344\275\234\346\200\273\347\273\223/index.xml" "b/docs/tags/\345\267\245\344\275\234\346\200\273\347\273\223/index.xml" index 35ad9f42..ade1733f 100644 --- "a/docs/tags/\345\267\245\344\275\234\346\200\273\347\273\223/index.xml" +++ "b/docs/tags/\345\267\245\344\275\234\346\200\273\347\273\223/index.xml" @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ Fri, 01 Dec 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2023/ - 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识,增强了自己的专业能力。我始终认为团队合作是成功的关键。在工作中,我积极与同事沟 + 在职期间,我主要负责耐材项目的开发与维护,共迭代171个版本。通过与团队成员的紧密合作,我们按时完成了项目中的需求。在这段时间里,我不断提升自己的专业技能和知识 2019工作总结 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ Sun, 01 Dec 2019 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/worksummary/work-summary-2019/ - 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这一个月发现了自身还有很多的不足,所以抱着虚心学习的态度,学习公司的开发流程,了解 + 本人在进入公司起,期间一直对自己要求严谨,遵守公司的相应制度. 在过去的一个月时间里,我参与了贵州银行的电子验印系统的开发,一直努力完成和完善分配给我的任务,在这 diff --git "a/docs/tags/\345\272\224\347\224\250/index.xml" "b/docs/tags/\345\272\224\347\224\250/index.xml" index 47fc5bac..2250818e 100644 --- "a/docs/tags/\345\272\224\347\224\250/index.xml" +++ "b/docs/tags/\345\272\224\347\224\250/index.xml" @@ -13,35 +13,35 @@ https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ Sat, 09 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ - 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment '任务名称', job_group varchar(64) default 'DEFAULT' comment '任务组名', invoke_target varchar(500) not null comment + 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment 整合文件上传功能 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ Fri, 11 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ - 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies> application.yml server: port: 80 公共部分 FileManagement public interface FileManagement { /** * 设置下一个bean的对象 * * @param nextFileManagement 下一个 + 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> 整合支付功能 https://whiteppure.github.io/iblog/posts/essays/pay-code/ Thu, 10 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pay-code/ - 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: "" #服务商模式下的子商户公众账号ID subAppId: #服务商模式下的子商户号 subMchId: # p12证书的位 + 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: Validator参数校验 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ Sat, 01 Jul 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/springboot-validator/ - 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂,判断参数代码语句显得尤为冗长. 或者有些程序会将if封装起来,例如spring中 + 常见参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,最简单就是用if条件语句来判断,但是随着参数越来越多,业务越来越复杂 管道流设计模式结合业务 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ Thu, 15 Jun 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ - 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类型码值 */ Integer getCode(); /** * 业务类型名称 * */ String getName(); } AbstractEventContext public abstract class AbstractEventContext implements EventContext{ private final BizType businessType; private final FilterSelector filterSelector; protected AbstractEventContext(BizType businessType, FilterSelector filterSelector) { + 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类 diff --git "a/docs/tags/\346\212\200\345\267\247/index.xml" "b/docs/tags/\346\212\200\345\267\247/index.xml" index 3b51f7eb..7f854001 100644 --- "a/docs/tags/\346\212\200\345\267\247/index.xml" +++ "b/docs/tags/\346\212\200\345\267\247/index.xml" @@ -13,21 +13,21 @@ https://whiteppure.github.io/iblog/posts/essays/java-bugs/ Fri, 10 Mar 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-bugs/ - bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的 + bug的起源: 1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今 IDEA常用配置及使用技巧 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ Fri, 16 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/dev-idea/ - 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888 + 下载 工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 激活工具 百度云下载. 链接:https://pan.baid 常见故障排查及程序配置 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ Wed, 08 Sep 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/eye-beam/ - 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作用 shutdown -h now 即刻关机 shutdown -h 10 10分钟后关机 shutdown -h 11:00 11:00关机 shutdown -h +10 预定时间关机(10 + 故障排查基础 收录Linux常用命令,以下命令来自https://www.bilibili.com/video/BV14A411378a 关机/重启/注销 常用命令 作 diff --git "a/docs/tags/\346\261\202\350\201\214/index.xml" "b/docs/tags/\346\261\202\350\201\214/index.xml" index 009eb999..f7975b10 100644 --- "a/docs/tags/\346\261\202\350\201\214/index.xml" +++ "b/docs/tags/\346\261\202\350\201\214/index.xml" @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ Tue, 11 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-junior-javaer/ - 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说一下UDP、TCP及http与https 如何保证线程安全 线程池工作原理 如何避免死 + 面试必问 自我介绍一下 你有什么职业规划 你为什么要离职 说一下你的优缺点 你的期望薪资是多少 你为什么要选择我们公司 你能否接受加班 你有对象了吗 你还有什么问题要问的吗 基础 说 面试中常见的问题 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ Fri, 23 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-questions-and-answers/ - 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职之后可能会被分配到该项目上; 在介绍的时候要说明你对面试的公司有什么用,根据不同类 + 面试常见问题 自我介绍 个人经历可以进行适当包装,但是不能造假,一方面如果一旦被人拆穿,后果就不用我说了吧,另一方面如果你说谎,说了一些你自己不感兴趣的项目,在入职 diff --git "a/docs/tags/\347\216\251\345\205\267/index.xml" "b/docs/tags/\347\216\251\345\205\267/index.xml" index d8bda937..d8fd1fd7 100644 --- "a/docs/tags/\347\216\251\345\205\267/index.xml" +++ "b/docs/tags/\347\216\251\345\205\267/index.xml" @@ -13,70 +13,70 @@ https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ Sat, 09 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/java-multi-gadget/ - 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用java -jar命令启动 某些程序功能并不是很完善,但是也可以凑合着用,写这些程序的主 + 写在前面 本文中所涉及的程序均为Java开发,如果您想要直接使用这些工具需要提前配置Java环境。所涉及到的程序均提供完整代码,如果您有兴趣可以尝试运行。 使用ja Js雪花飘落 https://whiteppure.github.io/iblog/posts/toy/js-snow/ Tue, 25 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-snow/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto { from { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 0; } to { background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") repeat 0 1000px; } } tree, snow { position: absolute; } tree { width: 112px; height: 137px; background: url("images/tree.png"); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>snow</title> </head> <style> html { width: 100%; } body { margin: 0; padding: 0; overflow-y: hidden; width: 100%; } .header { width: 100%; height: 315px; background: url("images/header-bg.png") repeat; } .snow { position: relative; height: inherit; width: 960px; background: url("images/con-bg.png") no-repeat 0 204px, url("images/snow-bg.png") no-repeat 0 0;; margin: 0 auto; animation: auto 10s linear infinite; } /* 下雪动画 插入两个背景图片*/ @keyframes auto Js下雨特效 https://whiteppure.github.io/iblog/posts/toy/js-rain/ Mon, 10 Dec 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-rain/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反使用hidden="false"表示开启音乐播放按钮。 3、使用a + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> rain </title> <style> html { width: 100%; } body { width: 100%; margin: 0; padding: 0; background-color: #000; } .rain { display: block; } embed { display: block; } </style> </head> <body> <!-- 2、使用hidden="true"表示隐藏音乐播放按钮,相反 Js换肤特效 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ Wed, 14 Nov 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-trans-skin/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: flex; justify-content: space-around; align-items: center; } .tab-btn { background-image: url("images/upseek.png"); height: 50px; width: 50px; position: fixed; top: 0; right: 0; } .tab-btn:hover { background-position-y: -63.6px; } </style> </head> <body> <div class="bg-list"> <ul class="img-wrap"> <li class="img-item" data-src="images/1.jpg"> <img src="images/1-1.jpg" width="160px"/> </li> + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>换肤特效</title> <style type="text/css"> body { margin: 0; background-image: url("images/1.jpg"); background-size: cover; } ul { margin: 0; padding: 0; list-style-type: none; } .bg-list { display: none; margin: 0; width: 100%; height: 200px; background: rgba(0, 0, 0, 0.5); } .img-wrap { height: 200px; display: Js折纸导航栏 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ Thu, 25 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-paper-folding/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼睛距离元素的位置距离*/ } .content .open{ transform: rotateX(0); animation: open 1s linear; } @keyframes open { 0%{ transform: rotateX(-90deg); } 20%{ transform:rotateX(30deg); } 40%{ transform:rotateX(-60deg); } 60%{ transform:rotateX(60deg); } 80%{ transform:rotateX(-30deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>折纸导航栏</title> </head> <style> *{ margin: 0; padding: 0; } .content{ position: relative; width: 400px; height: 30px; margin: 50px auto; /*-webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px;*/ perspective: 1000px;/*景深相当于眼 Js表白神器 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ Sun, 14 Oct 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-love-heart/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: shadow 1s infinite alternate; } @keyframes shadow { 100%{ box-shadow: 0 0 100px #FF0000; } } .right{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 5px 0; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>love</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; background-size: cover; overflow-y: hidden; } .love{ width: 400px; height: 400px; /*background-color: #7c7c7c;*/ margin: 130px auto; animation: move 1s infinite alternate; } @keyframes move { 100%{ transform: scale(1.5); } } .left{ float: left; width: 150px; height: 250px; background-color: #FF0000; border-radius: 75px 75px 0 5px; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: 85px; box-shadow: 0 0 20px #FF0000; animation: Js懒加载 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ Fri, 21 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-loadding-lazy/ - index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title> <style> *{ margin: 0; padding:0; } body{ background: rgb(0,0,0); } .box{ overflow: hidden; width: 948px; background-color: #7c7c7c; margin: 50px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; } .box img{ float: left; display: block; width: 300px; height: 150px; margin: + index.html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>懒加载技术</title&g Js五子棋 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ Mon, 10 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-gomoku/ - index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = function(){ var oC = document.getElementById('c1'); var oGc = oC.getContext('2d'); var over = false; oGc.strokeStyle = "#bfbfbf"; //绘制棋盘 for(var i=0;i<15;i++){ oGc.moveTo(15+i*30,15); oGc.lineTo(15+i*30,435); oGc.stroke(); oGc.moveTo(15,15+i*30); oGc.lineTo(435,15+i*30); oGc.stroke(); } /* AI难点解析 赢法 + index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>五子棋</title> <meta name="viewport" content="device-width; initial-scale=1.0;" /> <style> #c1 { display: block; margin: 60px auto; box-shadow: 1px 1px 5px #000000; } </style> <script src="js/index.js"></script> </head> <body> <canvas id="c1" width="450px" height="450px"></canvas> </body> </html> index.js window.onload = Js滑块拖拽 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ Sat, 08 Sep 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-box-drag/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { position: absolute; left: 0; top: 0; z-index: 1; width: 0; height: 100%; background: rgba(122,194,60,.4); } .rect .move { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; width: 45px; height: 40px; position: absolute; top: 0; left: 0; background-color: #fff; border: 1px solid #cccccc; + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>滑块拖拽</title> </head> <style> body { margin: 0; padding: 0; user-select: none; } .content { position: relative; width: 300px; height: 40px; margin: 50px auto; background-color: #E8E8EB; text-align: center; line-height: 40px; } .rect { position: absolute; width: 100%; height: 100%; } .rect .bg { Js生日礼物 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ Fri, 24 Aug 2018 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/toy/js-birthday-gift/ - index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 1000px;/*景深:眼到屏幕的距离*/ } body,h1,p{ margin: 0; } .card{ width: 520px; height: 350px; border-radius: 15px; background: linear-gradient(#020333 70%,#fff 75%);/* + index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>card</title> <style> body,html{ width: 100%; height: 100%; } body{ display: flex;/*弹性盒模型*/ justify-content: center;/*水平对齐 盒子位于中心*/ align-items: center;/*竖直对齐 居中对齐*/ background-color: yellow; perspective: 100 diff --git "a/docs/tags/\347\256\200\345\216\206/index.xml" "b/docs/tags/\347\256\200\345\216\206/index.xml" index fc5e241f..5f916397 100644 --- "a/docs/tags/\347\256\200\345\216\206/index.xml" +++ "b/docs/tags/\347\256\200\345\216\206/index.xml" @@ -6,49 +6,56 @@ Recent content in 简历 on 唯手熟尔 Hugo -- gohugo.io zh - Thu, 21 Mar 2024 00:00:00 +0000 + Wed, 20 Mar 2024 00:00:00 +0000 - Java20240321简历 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - Thu, 21 Mar 2024 00:00:00 +0000 - https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240321/ - 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向对象的编程思想,熟练掌握并应用核心集合框架; 深入运用SpringBoot、Spr + 如何快速写一份简历 + https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ + Wed, 20 Mar 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/resume/quick-write-resume/ + 最近一段时间一直在忙简历相关的事情,起初是有一个其他行业的朋友问我,说这些简历我写了好久真难写,我说你可以借助AI,现在这种工具多了去了,为什么不借助呢? 他回答 前端20240319简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ Tue, 19 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240319/ - 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复杂业务组件,写出易维护,善于利用新技术解决业务快速发展遇到的问题。 求职意向 期望城 + 自我介绍 199* · *** 河北·** 152****6158  152****6158@163.com 有5年前端开发经验,擅长封装复杂业务组件,熟练使用Vue2、Vue3框架进行开发,有微信小程序和App开发丰富实战经验;能独立封装复 Java20240315简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ Fri, 15 Mar 2024 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240315/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 + + + Java20240228简历 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + Wed, 28 Feb 2024 00:00:00 +0000 + https://whiteppure.github.io/iblog/posts/resume/interview-resume-20240228/ + 自我介绍 19** · *** 河北·** 182****7274  160****714@qq.com 求职意向 期望城市:唐山 工作薪资:面议 工作性质:全职 目标职能:中级/高级JAVA工程师 专业技能 熟练掌握Java相关知识,具备良好的面向 Java20230915简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ Fri, 15 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20230915/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Jav + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编 Java20220422简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ Fri, 22 Apr 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20220422/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对SQL + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和三年开发经验,有良好的编 Java20201124简历 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ Tue, 24 Nov 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/resume/interview-resume-20201124/ - 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对接第三方系统,调用外系统相关经验; 熟悉 MySQL,ORACLE.基本操作,熟练使 + 自我介绍 1998 · 李济芝 河北唐山 15176733539  m15176733539@163.com 专业技能 熟练使用 SSM,SpringBoot等框架技术; 熟练使用HTML,CSS等相关技术; 有Redis,Vue相关使用经验; 有对 diff --git "a/docs/tags/\347\256\227\346\263\225/index.xml" "b/docs/tags/\347\256\227\346\263\225/index.xml" index 51f65294..238fc749 100644 --- "a/docs/tags/\347\256\227\346\263\225/index.xml" +++ "b/docs/tags/\347\256\227\346\263\225/index.xml" @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ Fri, 10 Dec 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/data-structures-algorithms/ - 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数据结构学到位。 数据结构包括:线性结构、非线性结构。 线性结构作为最常用的数据结构, + 数据结构 数据结构是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,学好数据结构可以编写出更有效率的代码。数据结构是算法的基础,想要学好算法,就必须把数 diff --git "a/docs/tags/\347\272\277\347\250\213/index.xml" "b/docs/tags/\347\272\277\347\250\213/index.xml" index 60ebfa46..21285a82 100644 --- "a/docs/tags/\347\272\277\347\250\213/index.xml" +++ "b/docs/tags/\347\272\277\347\250\213/index.xml" @@ -13,28 +13,28 @@ https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ Mon, 20 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/thread-state-and-created/ - 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等待 CPU 时间片。包含了运行中(Running)和 就绪(Ready)状态; 就绪(Rea + 线程状态及转换 线程状态共包含6种,6中状态又可以互相的转换。 新建状态(New): 创建了线程后尚未启动; 可运行状态(Runnable): 可能正在运行,也可能正在等 Java中常用到的锁 https://whiteppure.github.io/iblog/posts/essays/java-lock/ Tue, 07 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-lock/ - 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁 指在多线程获取锁的顺序并 + 公平锁 指多个线程按照申请锁的顺序来获取锁类似排队打饭 先来后到 优点: 所有的线程都能得到资源,不会饿死在队列中。 缺点: 吞吐量会下降很多,队列里面除了第一个线程,其他 Java中集合的线程不安全问题 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ Sun, 05 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ - ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 add()方法时,被某个线程打断,添加到一半被打断,没有被添加完 解决方案: 使用Vec + ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 ad CAS原理 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ Sat, 04 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/cas-principle/ - CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是基于 CAS 来实现的。 以 AtomicInteger 原子整型类为例。 public class MainTest { public static void main(String[] args) { new AtomicInteger().compareAndSet(1,2); } } 以上面的代码为例 + CAS CAS全称为Compare and Swap被译为比较并交换。是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。 java.util.concurrent.atomic 并发包下的所有原子类都是 diff --git "a/docs/tags/\347\275\221\347\273\234/index.xml" "b/docs/tags/\347\275\221\347\273\234/index.xml" index f4d38542..1fa8b7ca 100644 --- "a/docs/tags/\347\275\221\347\273\234/index.xml" +++ "b/docs/tags/\347\275\221\347\273\234/index.xml" @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/net-program-java/ Fri, 19 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/net-program-java/ - 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/item/网络七层协议/6056879 网络协议指的是计算机网络中互相通信的对等实体 + 网络协议 以下内容摘自百度百科: https://baike.baidu.com/item/网络协议/328636 https://baike.baidu.com/i diff --git "a/docs/tags/\350\256\276\350\256\241/index.xml" "b/docs/tags/\350\256\276\350\256\241/index.xml" index 95984608..5a7428a6 100644 --- "a/docs/tags/\350\256\276\350\256\241/index.xml" +++ "b/docs/tags/\350\256\276\350\256\241/index.xml" @@ -13,63 +13,63 @@ https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ Sat, 09 Sep 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/scheduled-job/ - 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment '任务名称', job_group varchar(64) default 'DEFAULT' comment '任务组名', invoke_target varchar(500) not null comment + 代码实现 代码结构 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 库表结构 -- ---------------------------- -- 定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( job_id bigint(20) not null auto_increment comment '任务ID', job_name varchar(64) default '' comment 整合文件上传功能 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ Fri, 11 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/uploadfile-code/ - 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies> application.yml server: port: 80 公共部分 FileManagement public interface FileManagement { /** * 设置下一个bean的对象 * * @param nextFileManagement 下一个 + 结构 pom.xml fastdfs-client-java-1.27.jar:点击下载 <dependencies> <!-- fastdfs --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27</version> <systemPath>${project.basedir}/lib/fastdfs-client-java-1.27.jar</systemPath> <scope>system</scope> </dependency> <!--aliyun oss 依赖--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> 整合支付功能 https://whiteppure.github.io/iblog/posts/essays/pay-code/ Thu, 10 Aug 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pay-code/ - 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: "" #服务商模式下的子商户公众账号ID subAppId: #服务商模式下的子商户号 subMchId: # p12证书的位 + 结构 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.9</version> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> </dependencies> application.yml server: port: 8080 pay: wechat: #微信公众号或者小程序等的appid appId: "" #微信支付商户号 mchId: "" #微信支付商户密钥 mchKey: 管道流设计模式结合业务 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ Thu, 15 Jun 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/pipeline-business/ - 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类型码值 */ Integer getCode(); /** * 业务类型名称 * */ String getName(); } AbstractEventContext public abstract class AbstractEventContext implements EventContext{ private final BizType businessType; private final FilterSelector filterSelector; protected AbstractEventContext(BizType businessType, FilterSelector filterSelector) { + 流程图 代码实现 pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${spring.plugin.core.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> context EventContext public interface EventContext { /** * 是否继续调用链 */ boolean continueChain(); /** * 获取当前过滤器选择器 */ FilterSelector getFilterSelector(); } BizType public interface BizType { /** * 获取业务类 重构一个程序 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ Thu, 20 Apr 2023 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-project-reconstitution/ - 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构(动词形式): 使用一些列重构手法,在不改变软件可观察行为的前提下,调整其结构。 重 + 什么是重构 摘自《重构:改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 重构 接口优化 https://whiteppure.github.io/iblog/posts/essays/java-improve/ Tue, 20 Dec 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-improve/ - 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体分析,讨论不同解决方案. 定位问题 要快速定位接口哪一个环节比较慢,性能瓶颈在哪里, + 接口优化 线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体 整洁的代码 https://whiteppure.github.io/iblog/posts/essays/clean-code/ Thu, 01 Sep 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/clean-code/ - 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时间不够;假使花时间清理代码,老板就会大发雷霆.或许你只是不耐烦再搞这套程序,期望 + 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得自己要干好所需要的时 如何做好程序设计功能 https://whiteppure.github.io/iblog/posts/essays/java-design/ Tue, 02 Aug 2022 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-design/ - 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 从DDD角度界限上下文、ER图、评审表结构设计是否合理,表的关联关系是否合理、是 + 产品需求澄清、PN排期及任务分解 开发设计评审 功能设计流程图 与外部系统交互、本系统模块之间流程,比较好用的画圈软件draw .io或在线的process on 数据库设计 规范编写Java代码总结 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ Thu, 25 Nov 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-code-rule/ - 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维护时间比较长,那么保证代码可读性就显得很重要。作为一个程序员,咱们得有点追求和信 + 编码规范 我们为什么要遵守规范来编码? 是因为通常在编码过程中我们不只自己进行开发,通常需要一个团队来进行,开发好之后还需要维护,所以编码规范就显的尤为重要。 代码维 diff --git "a/docs/tags/\350\275\254\350\275\275/index.xml" "b/docs/tags/\350\275\254\350\275\275/index.xml" index 87e74c22..0bdf6804 100644 --- "a/docs/tags/\350\275\254\350\275\275/index.xml" +++ "b/docs/tags/\350\275\254\350\275\275/index.xml" @@ -13,7 +13,7 @@ https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ Sat, 10 Apr 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-syntax-sugar/ - 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法, 这种语法对语言的功能并没有 + 原文地址:https://www.jianshu.com/p/0f967298a5d7 语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机 diff --git "a/docs/tags/\351\233\206\345\220\210/index.xml" "b/docs/tags/\351\233\206\345\220\210/index.xml" index 0f84f0c5..5da2212c 100644 --- "a/docs/tags/\351\233\206\345\220\210/index.xml" +++ "b/docs/tags/\351\233\206\345\220\210/index.xml" @@ -13,14 +13,14 @@ https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ Mon, 03 May 2021 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-hashmap/ - 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中元素个数达到了容量的3/4的时候就会进行自动扩容; threshold: 阈值;阈值 + 相关概念 capacity: 容量,默认16; loadFactor: 负载因子,表示HashMap满的程度,默认值为0.75f,也就是说默认情况下,当HashMap中 Java中集合的线程不安全问题 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ Sun, 05 Apr 2020 00:00:00 +0000 https://whiteppure.github.io/iblog/posts/essays/java-thread-collection/ - ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 add()方法时,被某个线程打断,添加到一半被打断,没有被添加完 解决方案: 使用Vec + ArrayList ArrayList线程不安全示例: public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); for(int i=0; i< 3; i++) { new Thread(() -> { arrayList.add(UUID.randomUUID().toString()); System.out.println(arrayList); },String.valueOf(i)).start(); } } // ConcurrentModificationException 同步修改异常 Exception in thread "8" java.util.ConcurrentModificationException [null, 2041b613-8068-4ddd-9d01-305f5680d377] [null, 2041b613-8068-4ddd-9d01-305f5680d377, b3e0296d-e263-4632-a023-4267cdec5e25] [null, 2041b613-8068-4ddd-9d01-305f5680d377] 原因分析: 当某个线程正在执行 ad