氷泠

私信 关注
氷泠
码龄6年
  • 84,877
    被访问量
  • 228
    原创文章
  • 30,467
    作者排名
  • 70
    粉丝数量
  • 于 2015-04-19 加入CSDN
获得成就
  • 获得86次点赞
  • 内容获得73次评论
  • 获得360次收藏
荣誉勋章
兴趣领域
  • #运维
    #Linux/CentOS
  • #前端
    #JavaScript#Vue.js
  • #后端
    #Spring#Java
TA的专栏
  • JVM语言
    25篇
  • Spring家族
    35篇
  • 构建工具
    6篇
  • Linux
    31篇
  • 数据库
    14篇
  • Docker
    2篇
  • IDEA
    9篇
  • 前端琐碎
    7篇
  • Python
    13篇
  • VirtualBox
    1篇
  • Android
    8篇
  • Manjaro
    7篇
  • Web服务器
    4篇
  • 版本管理
    1篇
  • Windows
    3篇
  • 工具
    3篇
  • Vue
    9篇
  • 理论合集
    30篇
  • 算法
    13篇
  • 大数据
    6篇
  • 网络
    3篇
  • PHP
    5篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

JVM学习笔记(二):JVM基本结构

1 来源来源:《Java虚拟机 JVM故障诊断与性能优化》——葛一鸣章节:第二章本文是第二章的一些笔记整理。2 JVM基本参数-Xmxjava命令的一般形式如下:java [-options] class [args..]其中-options表示JVM启动参数,class为带有main()的Java类,args表示传递给main()的参数,也就是main(String [] args)中的参数。一般设置参数在-optinos处设置,先看一段简单的代码:public class Mai
原创
9阅读
0评论
0点赞
发布博客于 昨天

SpringBoot+Gradle构建多模块项目

1 概述Gradle由于构建速度比Maven快,且比Maven灵活,因此很多后端的应用都使用了Gradle进行构建,但一个问题是,Gradle的多模块项目比较难构建,再加上Gradle的更新非常快,这就给构建一个多模块Gradle项目造成了不少的困难。基于此出发点,本文提供了两种形式的使用Gradle构建的Spring Boot多模块项目:Java + GradleKotlin + Gradle + Kotlin DSL为了减少出现各种错误的概率,步骤做得非常详细(多图预警),文末也附上了源码
原创
16阅读
0评论
0点赞
发布博客于 2 天前

SHA256sum系列命令检测文件完整性

1 sha256sumsha256sum是一个检测文件完整性的命令,一般下载的文件都会附带一个哈希值,使用sha256sum计算下载文件的哈希值再与目标哈希值比较即可确定文件是否完整,类似的命令还有:md5sumsha1sumsha224sumsha384sumsha512sum2 安装在一个叫coreutils的包内:想使用SHA3的话需要安装:sha3sum3 使用...
原创
8阅读
0评论
0点赞
发布博客于 2 天前

JVM学习笔记(一):JVM初探

1 来源来源:《Java虚拟机 JVM故障诊断与性能优化》——葛一鸣章节:第一章本文是第一章的一些笔记整理。2 Java里程碑2.1 Java起源1990年Sun公司决定开发一门新的程序语言——Oak,已经具备安全性、网络通信、面向对象、垃圾回收、多线程等特性,由于Oak已被注册,于是改名为Java。2.2 JDK 1.01995年Sun发布了Java以及HotJava产品,1996年正式发布JDK 1.0,包括两部分:运行环境:JRE,包括核心API,用户界面API,发布技术、JV
原创
15阅读
0评论
0点赞
发布博客于 2 天前

Spring Boot demo系列(十):Redis缓存

1 概述本文演示了如何在Spring Boot中将Redis作为缓存使用,具体的内容包括:环境搭建项目搭建测试2 环境RedisMySQLMyBatis Plus3 Redis安装Redis安装非常简单,以笔者的Manjaro为例,直接paru安装:paru -S redisUbuntu、CentOS之类的都提供了软件包安装:sudo apt install redissudo yum install redis如果想从源码编译安装:wget http://dow
原创
16阅读
0评论
0点赞
发布博客于 9 天前

解决Docker MySQL无法被宿主机访问的问题

1 问题描述Docker启动MySQL容器后,创建一个localhost访问的用户:create user test@localhost identified by 'test';但是在宿主机中无法通过该用户登录:mycli -u test2 原因在Docker中的MySQL创建localhost的用户只能在Docker内部访问,而不能通过外部访问。至于为什么能在宿主机访问root,是因为默认存在两个root,分别是:root@localhostroot@%而test只有一个
原创
26阅读
0评论
0点赞
发布博客于 9 天前

解决IDEA Gradle构建报错“Cause: zip END header not found“

1 问题描述某天使用Gradle构建项目时,IDEA报错如下:2 原因原因是下载的Gradle,也就是zip压缩包不完整,导致无法使用Gradle构建。3 解决方法3.1 删除本地缓存重新下载首先打开IDEA设置中的Gradle,找到Gradle user home:比如笔者的是~/.gradle,打开其中的wrapper/dists,就可以看到缓存的Gradle:删除对应版本的Gradle即可,IDEA会自动重新下载。3.2 设置特定版本的Gradle如果清除缓存重新下载不行,可
原创
34阅读
0评论
0点赞
发布博客于 14 天前

解决WebStorm无法正确识别Vue3组合式API的问题

1 问题描述Vue3的组合式API无法在WebStorm中正确识别,表现为defineComponent等无法被识别:2 尝试方案猜想这种问题的原因是无法正确识别对应的Vue3库,笔者相信WebStorm是可以做到的,只是某些配置没有正确,笔者尝试过在设置的Libraries中勾选上node_modules,但是没有效果。3 解决办法最终的解决办法参考了此处(图源):选择node_modules文件夹,右键选择Mark Directory as,最后选择Not Excluded即可。之后
原创
32阅读
0评论
0点赞
发布博客于 15 天前

ElementPlusViteStarterPnpm版本

1 起因由于最近Vite升级了2.x版本,项目中需要改动的东西有点多,本来想基于官方给出的starter重做,但是又看到了一个叫pnpm的仓库,构建速度会比原生npm/yarn快两倍以上:因此模仿官方starter做了一个pnpm版本的starter,希望能帮助到需要的同学。2 环境准备Node.jsnpmpnpmNode.js与npm的安装就不说了,本来笔者使用的是cnpm,虽然速度上相比起npm有所改进,而且cnpm的输出也更加友好,但是使用了pnpm,相比起来感觉还是差了那么一点。
原创
108阅读
0评论
0点赞
发布博客于 17 天前

人生第一个扩展——Github1s

1 灵感某天看到了一个叫github1s的仓库:基于Node.JS、Yarn、Python等技术栈,在github.com上面加上“一秒”,也就是github1s.com,就能在VSCode中打开该仓库,非常好用。同时笔者安装有一个叫Sourcegraph的扩展,就是下面这个:用过的同学都知道这个扩展是干嘛的,于是笔者就想类似的在这个扩展旁边加一个超链接的扩展直接打开github1s.com,效果图已经在上面了,点击那个VSCode的图标就可以直接打开。2 动手由于笔者并没有扩展开发的经验,
原创
166阅读
0评论
3点赞
发布博客于 19 天前

Chrome扩展开发基础教程(附HelloWorld)

1 概述Chrome扩展开发的基础教程,代码基于原生JS+H5+CSS,教程内容基于谷歌扩展开发官方文档。2 环境Chrome 88.0.4324.96Chromium 87.0.4280.141Brave 1.19.84FireFox 85.0WebStorm 2020.3.23 开发环境准备开发扩展建议使用WebStorm,推荐WebStorm的原因是能够补全,在设置中的Libraries中可以下载chrome的库,这样就能够补全了:另一个建议使用的是VSCode,但是笔者目
原创
75阅读
1评论
0点赞
发布博客于 20 天前

Python多环境管理——pyenv

1 背景&概述因某些需求,需要安装TensorFlow,很自然地在终端敲下了以下命令:pip install tensorflow然后。。。好家伙???居然没有??因为是Python 3.9,去pypi搜索了,居然还真没有支持的,最高只有Python 3.8:于是便考虑一个多版本的Python环境,碰巧就在Github上看到了一个22.3k的东西:这就是pyenv,一个简单的Python版本管理器,可以轻松地在各个Python版本之间进行切换。好了废话不说,进入正题。2
原创
24阅读
1评论
0点赞
发布博客于 28 天前

VirtualBox虚拟机读取U盘

1 概述使用VirtualBox虚拟机(系统Win10)读取宿主机(系统Manjaro)中的U盘。2 安装扩展戳这里下载对应版本的一个叫Oracle_VM_VirtualBox_Extension_Pack的扩展,笔者的为:下载后可以双击安装,这时候如果是Linux系统的话会提示输入密码:可以尝试用户名密码以及root用户密码,笔者尝试过了都失败,另一种方法是使用命令行方式安装:sudo VBoxManage extpack install Oracle_VM_VirtualBox_Exte
原创
32阅读
0评论
0点赞
发布博客于 29 天前

Android+Java Web+MySQL实现登录注册

2021.1.24 更新1 概述这是一个前端Android+后端Java/Kotlin通过Servelt进行后台数据库(MySQL)交互的详细步骤以及源码实现,技术栈:Android基础原生JDBC+原生ServletTomcat+MySQL(Docker)当然现在的很多Java后端开发都使用了Spring Boot而不是原生的Servlet,所以使用Spring Boot实现的可以笔者的另一篇文章。尽管基于Spring Boot实现非常的简便,但是使用原生的Servlet更能理解底层的原
原创
219阅读
1评论
4点赞
发布博客于 2 月前

后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)

1 前言&概述这篇文章是基于这篇文章的更新,主要是更新了一些技术栈以及开发工具的版本,还有修复了一些Bug。本文是SpringBoot+Android+MySQL的增删查改的简单实现,用到的技术包括Jackson、OkHttp、bouncycastle、Spring Data JPA。2 环境Android 4.1.2IDEA 2020.3.1Spring Boot 2.4.2MySQL 8.0.23OpenJDK 11环境准备就略过了,需要的可以参考这里。3 后端3.1
原创
193阅读
1评论
4点赞
发布博客于 2 月前

Java后端部署以及与Android通信注意事项

1 概述本文列举了一些Android+后端Java通信时的部署以及注意事项,覆盖的问题包括但不限于安全组、数据库、路径等,如果各位读者的Android端不能正常访问Java后端,希望这里的解决方案能帮助到您。2 问题分类主要可以分为三类:数据库安全组端口+路径权限3 数据库问题3.1 用户名以及密码首先需要确保后端配置文件中的访问数据库的用户名以及密码要正确,不然的话可能会出现:3.2 Spring Boot中的用户名以及密码一般在application.yaml/applica
原创
92阅读
3评论
1点赞
发布博客于 2 月前

Debian10 安装MyCLI

1 概述Debain10安装MyCLI。环境:Debain10Python3.72 准备环境2.1 Python首先确保安装了Python:apt install python3若是没有换源建议先换源,这里列出了阿里的源:deb http://mirrors.aliyun.com/debian/ buster main non-free contribdeb-src http://mirrors.aliyun.com/debian/ buster main non-free co
原创
28阅读
0评论
0点赞
发布博客于 2 月前

Vue3.0中引入地图(谷歌+高德+腾讯+百度)

1 概述对于目前最新的Vue3.0,无论是百度地图还是高德地图到目前还没有适配,只有Vue 2.x版本的:具体就不说了,需要的自行看文档,这里说一下Vue3的地图包,目前只有谷歌地图的Vue3.0适配:因此本文重点说一下如何在Vue3.0中引入谷歌地图。2 步骤这里说一下大概步骤:获取API Key安装地图包配置引入使用3 获取API Key戳这里按提示进行:创建项目:...
原创
93阅读
0评论
0点赞
发布博客于 2 月前

解决Echarts+<el-tab-pane>的警告:Can‘t get DOM width or height

1 问题描述环境:Chrome 87Element-PlusVue3.0.5<el-tab>+<el-tab-pane>中使用Echarts警告如下:2 代码<el-tabs type="border-card"> <el-tab-pane label="xxx"> <div id="main" style="width: 500px;height: 500px;"> </div> </el-ta
原创
35阅读
0评论
0点赞
发布博客于 2 月前

Vue3+Vite引入Echarts5.0图表库

1 概述环境Vue3+Vite,需要引入ECharts库。2 尝试目前ECharts已更新到5.0版本,在Vue中引入并不难,npm/cnpm安装后在需要的组件中引入:import echarts from 'echarts'即可。但,问题是这是以前的版本可行的,更新到5.0版本后需要使用其他方法。另一方面官方文档是使用require引入:但是,这是在Webpack的情况下,在Vite中并不能直接使用require,官方issue有讨论,明说了require不支持,这是一个Node的特
原创
101阅读
1评论
0点赞
发布博客于 2 月前

Linux下禁用笔记本触摸板

1 概述在Linux下禁用触摸板的方法有很多,这里列举三种:图形界面配置关闭modprobe关闭xinput关闭2 图形界面配置关闭笔者的环境为Manjaro+Xfce,其他的桌面也应该类似,开始菜单搜索touchpad即可出现相应选项:关闭即可:3 modprobe关闭:sudo modprobe -r psmouse开启:sudo modprobe -a psmous这种方式在笔者测试的时候失败了,提示说该模块是内置模块无法关闭:该关闭方法仅供参考,不行的话建议
原创
44阅读
0评论
0点赞
发布博客于 2 月前

ECDSA密钥对生成以及在Token中的应用

1 概述本文主要讲述了如何利用Openssl生成ECDSA密钥对,并利用Auth0库进行Token生成及验证的过程。2 ECDSA2.1 简介ECC(Elliptic Curve Cryptography,椭圆曲线加密)是一种基于椭圆曲线数学的公钥加密算法,而ECDSA是使用ECC对数字签名算法(DSA)的模拟,总的来说ECC相比起常见的RSA更加安全并且生成密钥对的过程会更快。本文不会涉及过多原理性的东西,只是作简单的介绍,想要详情了解这些算法的可以戳这里。2.2 密钥对生成在Openssl中
原创
77阅读
0评论
0点赞
发布博客于 2 月前

Node.js/Vue.js使用jsSHA库进行SHA1/2/3加密

1 概述jsSHA是一个用纯JS/TS实现完整SHA系列加密算法的加密库,包括:SHA1SHA-224/256/384/512SHA3-224/256/384/512SHAKE128/256cSHAKE128/256KMAC128/256这里是一些使用加密算法的例子。2 安装并引入安装使用npm或cnpm:npm install --save jssha# 或cnpm install --save jssha引入时,根据package.json中的type进行相应引入:c
原创
57阅读
0评论
0点赞
发布博客于 2 月前

Github仓库master分支到main分支迁移指南

1 概述2020年10月1日后,Github会将所有新建的仓库的默认分支从master修改为main,这就导致了一些旧仓库主分支是master,新仓库主分支是main的问题,这在有时候会带来一些麻烦,因此这里提供一种方案将旧仓库的master分支迁移到main分支。2 具体步骤四步:克隆原仓库创建并推送main分支修改默认分支删除master分支2.1 克隆首先克隆一份原仓库到本地进行操作:git clone xxxxxxx.git2.2 创建并推送main创建并切换到main
原创
523阅读
1评论
0点赞
发布博客于 2 月前

Java实现简单计算器

1 概述Java AWT+Swing实现的简单计算器,功能如下:支持加减乘除支持小数运算键盘监听鼠标监听2 效果演示3 一些细节3.1 运算运算用到了一个ExpressionHandle的静态类,用来计算字符串表达式的值。其实运算不难,就是基本的运算符以及操作数的入栈出栈操作,就不细说了。3.2 Base64图标是使用Base64处理的,因为是只有一个图片资源,而且使用图片的话比较容易出现路径问题,就使用了Java自带的Base64.Decoder进行处理,decode后生成
原创
202阅读
0评论
0点赞
发布博客于 2 月前

解决Spring中使用Example无法查询到Mongodb中的数据问题

1 问题描述在Spring Boot中使用Mongodb中的Example查询数据时查询不到,示例代码如下:ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("username", ExampleMatcher.GenericPropertyMatchers.exact()).withIgnorePaths("id","password");2 问题分析在Spring Data中使用Mongodb时,插入数据会添加一个
原创
48阅读
0评论
0点赞
发布博客于 2 月前

解决CentOS虚拟机无法显示本地IP问题

1 问题描述CentOS虚拟机无法显示本地ip,如图:2 尝试过的方法参考过此处的解决方法,把网卡配置中的ONBOOT修改为YES:但是原来的网卡配置也是YES,所以修改的方法没有用,尝试了一下重启网卡服务:systemctl restart networkip还是无法正常显示。3 原因查了一下资料,常用的Linux的网络管理服务有两个:network服务NetworkManager服务前者是基础服务,通常在服务器中使用,当然在图形界面也有,通常使用命令行配置,而Networ
原创
60阅读
0评论
0点赞
发布博客于 2 月前

Windows Terminal 安装与配置

1 概述2 安装安装可以从应用商店安装(直接搜索即可)或者Github安装(可以戳这里):下载msixbundle格式的文件即可直接打开安装。3 配置前准备3.1 下载字体推荐使用FiraCode,下载链接戳这里。解压后选择其中一个ttf安装即可:3.2 安装PowerShell Core这里的PowerShell Core与自带的PowerShell不是同一个东西,前者是能跨平台的,下载链接戳这里。Windows下可以直接选择msi格式下载:4 配置4.1 插件# PSRe
原创
178阅读
0评论
0点赞
发布博客于 3 月前

Window下Python+CUDA+PyTorch安装

1 概述2 PythonPython的安装还是比较简单的,从官网下载exe安装包即可:下载中间的那个executable installer并安装。安装完后可以从命令行查看是否安装成功(一般默认会把路径添加到环境变量中):python --version由于该安装包会自动把pip也一起安装,因此在使用时会提示pip需要升级,请使用如下命令升级pip:python -m pip install --upgrade pip3 CUDA(A卡的就不要看了。。。)CUDA的安装也不难,一般
原创
232阅读
0评论
0点赞
发布博客于 3 月前

Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF

1 概述本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是:BFNFWFFF分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解。2 四种分配方式2.1 概念操作系统中有一个动态分区分配的概念,内存在初始化的时候不会划分区域,而是在进程装入的时候,根据所要装入的进程动态地对内存空间进行划分,以提高内存空间的利用率,降低碎片的大小,主要的方法有一下四种:首次适应算法(First Fit):从空闲分区链首开始查找,直到找到一个满足其大小要求的空闲
原创
274阅读
0评论
0点赞
发布博客于 3 月前

解决Linux无法读写U盘中的NTFS问题

1 问题描述由于笔者因为某些需要把Windows装在了U盘上面(在这里建议一下如果有需要请使用固态U盘),在Linux下挂载时,能读取但并不能写。2 尝试的解决方案2.1 remount一开始是因为没有读写权限,所以就重新挂载,命令如下:mount -o rw,remount /dev/sda2(/dev/sda2是因为笔者的U盘大小64G,把Windows直接装在了里面,默认分了两个分区,一个是启动分区/dev/sda1,一个是系统分区/dev/sda2)但是还是不能写入。2.2 ntf
原创
194阅读
0评论
0点赞
发布博客于 3 月前

Vue+Spring Boot简单用户登录Demo

1 概述前后端分离的一个简单用户登录Demo。2 技术栈VueBootstrapVueKotlinSpring BootMyBatis Plus3 前端3.1 创建工程使用vue-cli创建,没安装的可以先安装:sudo cnpm install -g vue @vue/cli查看版本:vue -V出现版本就安装成功了。创建初始工程:vue create bvdemo由于目前Vue3还没有发布正式版本,推荐使用Vue2:等待一段时间构建好了之后会提示进行文件夹并直接
原创
146阅读
0评论
0点赞
发布博客于 3 月前

【长文】Spring学习笔记(七):Mybatis映射器+动态SQL

1 概述本文主要讲述了如何使用MyBatis中的映射器以及动态SQL的配置。2 MyBatis配置文件概览MyBatis配置文件主要属性如下:<settings>:相关设置,键值对形式<typeAliases>:类型别名<typeHandlers>:类型处理器<objectFactory>:对象工厂<plugins>:插件,包含若干个<plugin><environments>:环境配置,包含若干个<
原创
85阅读
0评论
0点赞
发布博客于 4 月前

Linux下屏幕亮度的调节

1 概述2 手动调节3 自动调节
原创
328阅读
0评论
0点赞
发布博客于 4 月前

Manjaro 安装教程

1 概述本文讲述了如何在单硬盘下对Manjaro进行安装。2 写U盘首先第一步是下载镜像,官网下载地址戳这里,如果下载速度慢可以选择国内镜像,比如戳这里。笔者选择的是XFCE桌面:下载好后将镜像写入U盘(8G就够了),使用的工具有很多,Linux/Win/Mac都有,这里笔者用的是Win下的Rufus。3 正式安装重启电脑通过F2/F12等按键进入BIOS,选择U盘启动就可以看到安装界面了,进入后选择桌面上的Install Manjaro:这一步是选择语言,按个人需要选择即可,下一步是选
原创
623阅读
0评论
1点赞
发布博客于 4 月前

真 ● 禁秘技 ● 奥义 ● 终端美化

文章目录1 概述2 环境3 准备工作3.1 `zsh`3.2 `zinit`/`oh-my-zsh`3.2.1 `zinit`3.2.2 `OMZ`3.3 字体4 `p10k`基本配置5 `p10k`自定义配置5.1 如何修改配置文件?5.2 提示段5.2.1 开启/关闭整个提示段5.2.2 系统相关5.2.3 语言相关5.2.4 云相关5.2.5 其他5 p9k配置5.1 开启/关闭提示段5.1.1 如何使用5.2 位置5.3 颜色5.4 图标5.5 其他5.5.1 粘合5.5.2 添加新行5.5.3 更
原创
250阅读
0评论
0点赞
发布博客于 4 月前

Docker下MySQL的安装

1 概述本文讲述了如何利用Docker去安装MySQL。2 安装Docker首先安装Docker并开启服务:systemctl start docker如果没有添加了国内源的话建议添加一下,新增/修改/etc/docker/daemon.json,添加如下内容:{ "registry-mirrors": ["http://hub-mirror.c.163.com"]}这里用的是网易的源,其他源如下:Docker中国区官方镜像:https://registry.docker-c
原创
119阅读
0评论
0点赞
发布博客于 4 月前

Linux Nvidia显卡驱动安装

1 概述因为某些需要需要在Linux上安装显卡驱动,这里记录一下安装过程。2 环境ManjaroRTX 20603 下载驱动安装包到官网上搜索下载即可,可以戳这里:选择自己的显卡型号即可,笔者选择参考如下:搜索下载即可,下载之后是一个.run文件,加上执行权限:sudo chmod u+x NVIDIA-Linux-x86_64-455.28.run4 准备工作4.1 安装linux-header安装之前先安装linux-header,首先获取内核版本号:uname -a
原创
725阅读
3评论
0点赞
发布博客于 4 月前

Linux下Matlab的安装

1 概述笔者环境Manjaro,本来想直接通过yay安装的,但无奈失败了,于是直接从官网下载进行安装。2 下载安装包Matlab官网可以戳这里,点击右上角的Get MATLAB就可以下载了:没有注册账号的可以先去注册一个,推荐使用教育邮箱,这样会有一个免费的凭证,完成注册并填写相关信息激活后选择Linux下载即可:3 解压安装下载的是一个zip压缩包,使用unzip解压后,会有一堆文件:运行其中的install安装即可:sudo ./install另外还可以看到提供了安装文档,非常
原创
143阅读
0评论
0点赞
发布博客于 4 月前

解决SQLPLUS无法使用上下箭头

1 问题描述SQLPLUS中使用上下箭头无法获取历史命令,如下图所示:按上下箭头会显示^[[A/^[[B。2 解决方案需要安装rlwrap,可以的话可以用包管理器安装,笔者环境CentOS,这里从源码编译安装。2.1 下载源码官方Github可以戳这里,目前最新的版本为0.43:2.2 安装上传到服务器后,解压编译安装:tar -zxvf rlwrap-0.43.tar.gzcd rlwrap-0.43./configuremake make install笔者在./con
原创
112阅读
0评论
0点赞
发布博客于 4 月前

@Transactional+@Autowired出现的lateinit property xx has not been initialized错误

1 问题描述用Kotlin编写Spring Boot,在业务层中使用@Transactional+@Autowired时出现如下错误:lateinit property dao has not been initialized出错代码如下:2 解决办法因为Kotlin类默认是final的,加上@Transactional后编译器提示需要open:但是加上open后没用,因此把@Transactional去掉后发现不会报错:因此怀疑是@Transactional的问题,因为需要在类上加
原创
334阅读
0评论
0点赞
发布博客于 5 月前

Spring学习笔记(六):MyBatis集成

1 概述2 MyBatis简介MyBatis本来是Apache的一个开源项目——iBatis,2010年由Apaceh Software Foundation迁移到了Google Code,并改名为MyBatis。MyBatis是一个基于Java的持久层框架,提供的持久层框架包括SQL Maps和Data Access Objects,使用简单的XML或者注解用于配置映射,将接口和POJO映射成数据库中的记录,是一个小巧、方便、高效、简单、直接、半自动化的持久层框架。3 工作原理上图:读取配置
原创
90阅读
0评论
0点赞
发布博客于 5 月前

Spring学习笔记(五):JDBCTemplate+事务管理

1 概述2 Spring JDBC TemplateSpring提供了JDBC模板模式,即JDBC Template,首先介绍JDBC的配置以及使用方法。2.1 配置主要配置一下
原创
94阅读
0评论
0点赞
发布博客于 5 月前

为Github的README.md生成目录的小工具

1 概述因为Github的README.md文件[TOC]不生效,因此封装了一个别人已封装好的JAR包供大家使用。2 使用方法用Java做的,只需要JDK11以上的环境:java -jar toc.jar 1.md # 为1.md文件生成目录java -jar toc.jar 1 # 为文件夹1内的.md生成目录理论上JDK8也能跑,因为笔者用的是JDK3 JAR包下载Github码云CODE.CHINA4 其他其实生成的方法不只一种,下面提供几个供参考:Go生成
原创
118阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(九):Jasypt

1 概述Jasypt是一个加密库,Github上有一个集成了Jasypt的Spring Boot库,叫jasypt-spring-boot,本文演示了如何使用该库对配置文件进行加密。2 依赖首先添加依赖:<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId>
原创
128阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(八):Swagger

1 概述Swagger主要用于生成API文档,本文演示了如何使用目前最新的OpenAPI3以及Swagger来进行接口文档的生成。2 依赖<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.4.7</version></dependen
原创
99阅读
0评论
0点赞
发布博客于 5 月前

解决JDK9以上的非法反射访问警告

1 问题描述JDK9以上很多库都有这种非法反射访问的警告,比如protostuff:解决方法两个:JDK降级添加JVM参数2 原因降到JDK8能解决以上问题。但是这不是本文的重点。先说一下出现该警告的原因,笔者使用的JDK为OpenJDK 11,JDK9以上模块不能使用反射去访问非公有的成员/成员方法以及构造方法,除非模块标识为opens去允许反射访问。旧JDK制作的库(JDK8及以下)运行在JDK9上会自动被标识为未命名模块,为了处理该警告,JDK9以上提出了一个新的JVM参数:--
原创
643阅读
0评论
1点赞
发布博客于 5 月前

Spring Boot demo系列(七):邮件服务

1 概述Spring Boot整合邮件服务,包括发送普通的文本邮件以及带附件的邮件。2 邮箱选择这里选择的是QQ邮箱作为发送的邮箱,当然也可以选择其他的邮箱,只是具体的配置不一样。使用QQ邮箱的话,需要在个人设置中开启SMTP服务:发送短信后完成验证:3 具体实现3.1 依赖提供了starter:<dependency> <groupId>org.springframework.boot</groupId> <artifactI
原创
54阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(六):HTTPS

1 概述2 证书2.1 自签名证书2.2 购买证书3 配置文件新建一个默认的Spring Boot工程,在配置文件添加如下参数:4 HTTP与HTTPS5 本地测试6 Docker部署7 部署测试8 关于域名9 源码Java版:Github码云CODE.CHINAKotlin版:Github码云CODE.CHINA...
原创
70阅读
0评论
0点赞
发布博客于 5 月前

Spring 学习笔记(四):Spring AOP

1 概述2 AOP3 AOP实现方式4 动态代理实现4.1 JDK实现4.2 CGLIB实现5 Spring AOP实现5.1 代理类实现5.2 XML配置的AspectJ实现5.3 注解配置的AspectJ实现6 源码Java版:Github码云CODE.CHINAKotlin版:Github码云CODE.CHINA...
原创
39阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(五):Docker部署

1 概述本文讲述了如何使用Docker部署Spring Boot应用,环境如下:服务器:aarch64 CentOS8JDK:OpenJDK 11Docker Server:18.09.1TODO2 Docker安装由于大部分的教程都是针对x86架构的服务器的,这里笔者的服务器为aarch64架构,因此在处理JDK等的软件时需要注意使用aarch64。Docker安装方法主要有两种,一种是通过官网的脚本自动安装,一种是通过yum手动安装。2.1 自动安装curl -fsSL http
原创
46阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(四):Spring Web+Validation

文章目录1 概述2 校验3 `Hibernate Validator`4 基本使用5 异常处理6 快速失败模式7 `@Valid`与`@Validated`7.1 分组7.2 组序列8 自定义注解9 来点`AOP`9.1 依赖9.2 验证注解9.3 字段验证9.4 定义验证器10 参考源码1 概述本文主要讲述了如何使用Hibernate Validator以及@Valid/@Validate注解。2 校验对于一个普通的Spring Boot应用,经常可以在业务层看到以下类似的操作:if(id ==
原创
77阅读
0评论
0点赞
发布博客于 5 月前

Spring 学习笔记(三):Spring Bean

1 Bean配置Spring可以看做是一个管理Bean的工厂,开发者需要将Bean配置在XML或者Properties配置文件中。实际开发中常使用XML的格式,其中<bean>中的属性或子元素如下:id:Bean在BeanFactory中的唯一标识,在代码中通过BeanFactory获取Bean的实例时候需要以此作为索引class:Bean的具体实体类,使用包名+类名的形式指定scope:指定Bean实例的作用域<constructor-arg>:使用构造方法注入,指定构
原创
37阅读
0评论
0点赞
发布博客于 5 月前

Spring 学习笔记(二):SpringIoC

文章目录1 `IoC`与`DI`2 `Spring IoC`容器2.1 `BeanFactory`2.2 `ApplicationContext`2.2.1 `ClassPathXmlApplicationContext`2.2.2 `FileSystemXmlApplicationContext`2.2.3 `Web`服务器实例化3 `DI`的两种方法3.1 构造方法注入3.2 通过`setter`注入1 IoC与DIIoC是Inversion of Control的简称,也就是控制反转。通常来说,创
原创
55阅读
0评论
0点赞
发布博客于 5 月前

Spring 学习笔记(一):Spring 入门

文章目录1 `Spring`简介2 `Spring`体系结构2.1 核心容器2.2 `AOP`和`Instrumentation`2.3 消息2.4 数据访问/集成2.5 `Web`2.6 测试3 环境4 入门`Demo`(`Java`版)4.1 新建`Maven`工程4.2 引入依赖4.3 新建文件4.4 `applicationContext.xml`4.5 `TestInterface`4.6 `TestImpl`4.7 `Main`4.8 `Tests`4.9 运行4.9.1 测试4.9.2 `Ma
原创
39阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(三):Spring Web+MyBatis Plus

文章目录1 概述2 `dao`层2.1 `BaseMapper`2.2 `IService`3 `Controller`层4 其他4.1 实体类4.2 配置类4.3 配置文件4.4 数据库5 测试6 源码1 概述Spring Web+MyBatis Plus的一个Demo,内容和上一篇类似,因此重点放在MyBatis Plus这里。2 dao层MyBatis Plus相比起MyBaits可以简化不少配置,能够使用代码生成器快速生成Entity、Mapper等各个模块的代码。另外,对于普通的CRUD提
原创
76阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(二):简单三层架构Web应用

1 概述这是Spring Boot的第二个Demo,一个只有三层架构的极简Web应用,持久层使用的是MyBatis。2 架构一个最简单的Spring Boot Web应用分为三层:Controller层:负责具体业务流程的控制,调用Service层来控制业务逻辑Service层:业务逻辑层,真正执行业务的操作,比如获取用户信息等Dao层:负责数据持久化,在这一层中与各种数据库,比如MySQL、Oracle等打交道先来简单说一下三层所使用到的注解。2.1 Controller层Contr
原创
145阅读
0评论
0点赞
发布博客于 5 月前

Spring Boot demo系列(一):Hello World

文章目录1 新建工程2 Hello World3 源码1 新建工程打开IDEA选择新建工程并选择Spring Initializer:可以在Project JDK处选择JDK版本,下一步是选择包名,语言,构建工具以及打包工具等,这里选择的是Java+Maven+Jar:再下一步是选择依赖,一般来说Spring Boot应用都需要以下四个基础依赖:最后一步是填上工程名以及路径:这样一个Demo就完成了,项目结构如下:2 Hello World在启动类输入即可:然后在可以点上面的绿
原创
70阅读
0评论
0点赞
发布博客于 6 月前

解决Deepin-wine-wechat-arch 文件不能正常发送

1 问题描述系统Manjaro,使用Deepin-wine微信,目前最新的版本为2.9.5.56-1,发送图片时,会发送不成功,经常在转圈,对于发送其他文件会出现红色感叹号发送失败。2 解决方法如果已经安装了Deepin-wine微信,安装deepin-wine5即可:yay -S deepin-win5接着修改/opt/deepinwine/apps/Deepin-WeChat/run.sh,修改以下三处的WINE_CMD:接着关闭微信,杀掉所有的wineserver:pkill w
原创
459阅读
0评论
0点赞
发布博客于 6 月前

JetBrains IDE初始化配置

1 初衷这是给新下载的JetBrains IDE的一些好用的建议,包括插件,快捷键以及常用的设置,以IDEA为例。只是建议,根据自己的需要选择修改即可。2 常用设置外观字体调节:Use custom font设置背景:Background Image代理:HTTP Proxy关闭共享数据:Data sharing关闭自动更新:Updates修改Tab位置:Tab placement编辑器字体:Font主题:Color Scheme编码:File Encodings修改VM Opt
原创
125阅读
0评论
0点赞
发布博客于 6 月前

本地+分布式Hadoop完整搭建过程

1 概述Hadoop在大数据技术体系中极为重要,甚至被誉为是改变世界的7个Java项目之一(剩下6个是Junit、Eclipse、Spring、Solr、HudsonAndJenkins、Android),本篇文章首先会介绍Hadoop相关术语,包括HIVE,MapReduce等,接着会完整描述Hadoop的搭建过程,包括本地以及简易分布式的搭建。2 术语介绍HadoopHIVEHbaseHDFSZoomKeeper``3 环境本地操作环境:Manjaro 20.0.3本地虚拟机
原创
97阅读
0评论
0点赞
发布博客于 6 月前

Hadoop完整搭建过程(四):完全分布模式(服务器)

1 概述参考
原创
101阅读
0评论
0点赞
发布博客于 6 月前

Hadoop完整搭建过程(三):完全分布模式(虚拟机)

文章目录1 完全分布模式2 虚拟机配置6.1 配置虚拟机环境6.1.1 虚拟机安装6.1.1.1 镜像下载6.1.1.2 安装6.1.2 启动6.1.3 (可选)关于`Virtual Box`的分辨率6.1.4 `JDK`6.2参考1 完全分布模式完全分布模式是比本地模式与伪分布模式更加复杂的模式,主要从两个方面去配置:三台虚拟机三台真实服务器其中通用步骤为:配置ip配置ssh安装OpenJDK+Hadoop创建用户修改Hadoop配置文件测试2 虚拟机配置需要使用到三台虚
原创
215阅读
0评论
0点赞
发布博客于 6 月前

Hadoop完整搭建过程(二):伪分布模式

文章目录1 伪分布模式6.1 配置虚拟机环境6.1.1 虚拟机安装6.1.1.1 镜像下载6.1.1.2 安装6.1.2 启动6.1.3 (可选)关于`Virtual Box`的分辨率6.1.4 `JDK`6.21 伪分布模式伪分布模式是比本地模式复杂的模式,需要使用到三台虚拟机,其中一台为Master节点,两台Slave节点,首先安装虚拟机并配置环境,最后进行测试。6.1 配置虚拟机环境6.1.1 虚拟机安装6.1.1.1 镜像下载使用VirtualBox进行虚拟机的安装,先去CentOS官网
原创
44阅读
0评论
0点赞
发布博客于 6 月前

Hadoop完整搭建过程(一):本地模式

1 本地模式本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用的本地文件系统而不是HDFS,本地模式主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式。2 环境变量运行前请确保设置了JAVA_HOME环境变量,在~/.bashrc中设置即可,如果终端使用了zsh可以在~/.zshrc中设置:echo JAVA_HOME=/xxx/xxxx/xxx3 测试首先解压:tar -zxvf hadoop-3.3.0.tar.gzcd hadoop-3.
原创
84阅读
0评论
0点赞
发布博客于 6 月前

如何建立一个足够安全的SSH连接?

1 概述使用SSH连接服务器是一件很平常的事,但是,连接是否足够安全是一个令人担忧的问题。本文从如下几个方面介绍了如何建立一个足够安全的SSH连接:端口协议用户密码密钥对ssh-agent2 端口第一步就是修改默认端口22,修改/etc/ssh/sshd_config中的Port即可,比如这里修改为1234端口:Port 1234注意这里需要配合SELinu添加端口,否则不能启动sshd服务,在CentOS8中可以通过semanage添加端口,首先查看是否安装policycore
原创
78阅读
0评论
1点赞
发布博客于 6 月前

VirtualBox CentOS8 调整分辨率

1 概述VirtualBox安装完CentOS8后无法调节分辨率,需要安装额外的工具。2 安装依赖包首先确保虚拟机能正常连接网络,然后安装:kernel、kernel-core、kernel-modules、kernel-devel、gcc、make、perl、elfutils-libelf-devel:sudo yum install kernel kernel-core kernel-modules kernel-devel \gcc make perl elfutils-libelf-dev
原创
217阅读
0评论
0点赞
发布博客于 6 月前

Linux终端更改字体

1 概述这里的终端是指通过F1-F6/F2-F7进入的纯命令终端。修改字体可以通过setfonts命令。2 查看字体可以通过查找目录consolefonts来确定本地机器上的字体位于哪里:find / -name consolefontslocate consolefonts...
原创
501阅读
1评论
0点赞
发布博客于 6 月前

SpringBoot-如何设计优秀的后端接口?

1 概述2 新建工程打开熟悉的IDEA,选择依赖如下:首先创建如下文件:TestController.java:@RestController@RequestMapping("/")@CrossOrigin(value = "http://localhost:3000")@RequiredArgsConstructor(onConstructor = @__(@Autowired))public class TestController { private final Test
原创
331阅读
0评论
0点赞
发布博客于 6 月前

配置Jupyter环境:安装+补全+美化+常用库

1 Jupyter简介Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言,本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和Markdown。2 安装使用pip或pip3安装:# sudo pip install jupytersudo pip3 install jupyter3 简单自定义设置首先生成默认配置:jupyter notebook --generate-config接着会提示默认配置的位置,打开,找到c.No
原创
247阅读
0评论
0点赞
发布博客于 6 月前

GoF设计模式合集

文章目录1 概述2 基础2.1 设计模式2.2 UML与面向对象设计原则3 创建型模式3.1 单例模式3.2 简单工厂模式3.3 工厂方法模式3.4 抽象工厂模式3.5 原型模式3.6 建造者模式4 结构型模式4.1 适配器模式4.2 桥接模式4.3 组合模式4.4 装饰模式4.5 外观模式4.6 享元模式4.7 代理模式5 行为型模式5.1 职责链模式5.2 命令模式5.3 解释器模式5.4 迭代器模式5.5 中介者模式5.6 备忘录模式5.7 观察者模式5.8 状态模式5.9 策略模式5.10 模板方法
原创
45阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十六):访问者模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象访问者2.3 具体访问者2.4 抽象元素2.5 具体元素2.6 对象结构3 实例4 主要优点5 主要缺点6 适用场景7 总结
原创
49阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十五):模板方法模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色1.5 模板方法与基本方法1.5.1 模板方法1.5.2 基本方法2 典型实现2.1 步骤2.2 抽象类2.3 具体子类3 实例4 使用钩子方法5 主要优点6 主要缺点7 适用场景8 总结...
原创
52阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十四):策略模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 环境类2.3 抽象策略类2.4 具体策略类3 实例4 JDK中的策略模式5 主要优点6 主要缺点7 适用场景8 总结
原创
59阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十三):状态模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 环境类2.3 抽象状态类2.4 具体状态类3 实例4 共享状态5 使用环境类实现状态切换6 主要优点7 主要缺点8 适用场景9 总结
原创
63阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十二):观察者模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 目标2.3 具体目标2.4 观察者2.5 具体观察者3 实例4 Java中的观察者4.1 Observer与Observable4.2 事件处理5 有关MVC6 主要优点7 主要缺点8 适用场景9 总结...
原创
219阅读
0评论
6点赞
发布博客于 7 月前

设计模式学习笔记(二十一):备忘录模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 原发器2.3 备忘录2.4 负责人3 实例4 多次撤销5 有关封装6 主要优点7 主要缺点8 适用场景9 总结
原创
44阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(二十):中介者模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象中介者2.3 具体中介者2.4 抽象同事类2.5 具体同事类3 实例4 扩展中介者与同事类5 主要优点6 主要缺点7 适用场景8 总结
原创
32阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十九):迭代器模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象迭代器2.3 具体迭代器2.4 抽象聚合类2.5 具体聚合类3 实例4 内部类实现5 JDK迭代器6 主要优点7 主要缺点8 适用场景9 总结...
原创
55阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十八):解释器模式

1 概述1.1 引言1.2 相关术语1.2.1 文法规则1.2.2 抽象语法树1.3 定义1.4 结构图1.5 角色2 典型实现2.1 步骤2.2 抽象表达式2.3 终结符表达式2.4 非终结符表达式2.5 环境类3 实例4 环境类5 主要优点6 主要缺点7 适用场景8 总结...
原创
64阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十七):命令模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象命令类2.3 具体命令类2.4 调用者2.5 接收者3 实例4 命令队列5 撤销操作6 请求日志7 宏命令8 主要优点9 主要缺点10 适用场景11 总结...
原创
45阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十六):职责链模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象处理者2.3 具体处理者3 实例4 分类4.1 纯的职责链模式4.2 不纯的职责链模式5 主要优点6 主要缺点7 适用场景8 总结
原创
42阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十五):代理模式

1 概述1.1 引言1.2 定义1.3 结构图1.4 角色1.5 分类2 典型实现2.1 步骤2.2 抽象主题角色2.3 代理主题角色2.4 真实主题角色3 实例4 远程代理5 虚拟代理6 Java动态代理6.1 Proxy6.2 InvocationHandler7 主要优点8 主要缺点9 适用场景10 总结...
原创
128阅读
0评论
1点赞
发布博客于 7 月前

设计模式学习笔记(十四):享元模式

1 概述1.1 概述1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象享元类2.3 具体享元类2.4 非共享具体享元类2.5 享元工厂类3 实例4 加入外部状态5 单纯享元模式与复合享元模式5.1 单纯享元模式5.2 复合享元模式6 补充说明7 主要优点8 主要缺点9 适用场景10 总结...
原创
56阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十三):外观模式

1 概述1.1 概述1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 外观角色3 实例4 引入抽象外观类4.1 为什么需要引入抽象外观类?4.2 如何引入?5 补充说明6 主要优点7 主要缺点8 适用场景9 总结...
原创
42阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十二):装饰模式

1 概述1.1 概述1.2 定义1.3 结构图1.4 角色2 典型实现2.1 步骤2.2 抽象装饰类2.3 具体装饰类3 实例4 透明装饰与半透明装饰4.1 装饰模式的问题4.2 透明装饰模式4.3 半透明装饰模式5 注意事项6 主要优点7 主要缺点8 适用场景9 总结...
原创
46阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十一):组合模式

1 概述1.1 概述对于树形结构,比如文件目录,一个文件夹中可以包含多个文件夹和文件,而一个文件中不能在包含子文件或者子文件夹,在这里可以称文件夹为容器,称文件为叶子。在树形结构中,当容器对象(比如文件夹)的某个方法被调用时,将遍历整个文件夹,寻找也包含这个方法的成员对象(容器对象或叶子对象)并调用执行。由于容器对象以及叶子对象在功能上的区别,使用这些对象的代码中必须有区别对待容器对象以及叶子对象,但大多数情况下需要一致性处理它们。组合模式为解决此类问题而生,它可以让叶子对象以及容器对象的使用具有一
原创
36阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(十):桥接模式

文章目录1 定义2 概述3 角色4 步骤5 实例6 主要优点7 主要缺点8 适用场景9 总结1 定义桥接模式:将抽象部分与其实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或者接口模式。2 概述桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统变得更加符合SRP。比如,设计一个跨平台的图像浏览系统,支持的图片格式包括:PNGBMPJPGGIF等等,而支持的系统包
原创
45阅读
0评论
0点赞
发布博客于 7 月前

Vue学习笔记(四)

1 表单绑定可以利用v-model在表单控件元素上创建双向的数据绑定,v-model会根据控件类型自动选取正确的方法来更新元素。2 文本框文本框的绑定例子如下:<div id="app"> <p>input</p> <input v-model="message"> <p>{{message}}</p> <p>textarea</p> <textarea v-model="messag
原创
37阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(九):适配器模式

1 适配器模式1.1 定义1.2 结构图1.3 角色2 实例3 类适配器4 双向适配器5 缺省适配器6 主要优点7 主要缺点8 适用场景9 总结
原创
36阅读
0评论
0点赞
发布博客于 7 月前

JetBrains系列IDE无法输入中文

1 问题描述环境Linux+fcitx,JetBrains的IDE无法输入中文,包括IDEA,PyCharm,WebStorm,CLion等等。2 解决方案Linux下一般使用fcitx进入中文输入,安装的时候教程一般都会提到以下三个环境变量:export XMODIFIERS="@im=fcitx"export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitx安装的时候一般在~/.bashrc或~/.bash_profile或~/.xprofile中
原创
199阅读
0评论
0点赞
发布博客于 7 月前

Vue学习笔记(三)

1 监听在Vue.js中可以通过watch来监听数据的变化,比如通过watch实现的简单计数器:<div id="app"> <p>计数器:{{count}}</p> <button @click="count++">点我增加</button> <p id="info"></p></div>var vm = new Vue({ el: '#app', data: {
原创
27阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(八):建造者模式

1 建造者模式1.1 定义建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可。建造者模式关注一步一步地创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。1.2 复杂
原创
51阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(七):原型模式

1 定义原型模式:使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式的工作原理很简单,将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象克隆自己来实现创建过程。原型模式是一种另类的创建型模式,创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法实现。通过克隆方法创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆多产生的对象进行的修改不会对原型对象造成任何的影响,每一个克隆的对象都是相互独立的,通过不同的方式对克
原创
73阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(六):抽象工厂模式

1 相关术语在了解抽象工厂模式之前,首先来了解一下两个术语:产品等级结构产品族1.1 产品等级结构产品等级结构也就是产品的继承结构,例如一个抽象类是电视机,子类有不同品牌的电视机,比如海尔电视机,海信电视机,TCL电视机,而抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是子类。1.2 产品族产品族是指由一个同一个工厂产生的位于不同产品等级结构中的一组产品,例如海尔电器工厂生产的海尔电视机,海尔电冰箱。海尔电视机位于电视机产品等级结构中,海尔电冰
原创
61阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(五):工厂方法模式

1 前言尽管简单工厂模式实现了对象的创建和使用分离,但是仍然存在以下两个问题:工厂类过于庞大,包含了大量的判断代码,导致维护和测试难度增大系统扩展不灵活,如果增加了新的产品类型,必须修改静态工厂方法的业务逻辑,违反了开闭原则具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性一个更好的办法是使用工厂方法模式。2 工厂方法模式工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法让一个类的实例化延迟到其子类。工厂方法模式又简称工厂模式或虚拟构造器模式或多态
原创
59阅读
0评论
0点赞
发布博客于 7 月前

Spring Boot 2.x 快速集成Kafka

1 KafkaKafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。Kafka由Scala和Java编写,2012年成为Apache基金会下顶级项目。2 Kafka优点3 环境Spring Boot 2.3.1IDEA 2020.1.1OpenJDK 11.0.7Maven4 动手干活4.1 新建工程考虑到Spring Boot在2.3.0M1中(截至本文写作日期2020.07.13Spring Boot已更新到2.4.0M1)首次采用Gradl
原创
188阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(四):简单工厂模式

1 定义简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式用于创建实例的方法是静态的方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。尽管简单工厂模式不属于GoF23种设计模式之一,但是实际中用途广泛,并且可以作为学习“工厂方法模式”以及“抽象工厂模式”的基础。2 结构由图可知包含以下三个角色:Factory(工厂角色):即工厂类,负责实现创建所有产品实例的
原创
65阅读
0评论
0点赞
发布博客于 7 月前

Vue学习笔记(二)

文章目录1 条件判断1.1 普通if1.2 if-else1.3 v-show2 循环3 计算属性3.1 computed3.2 computed与methods3.3 setter1 条件判断1.1 普通if条件判断使用v-if指令:<div id="app"> <p v-if="seen">看到了</p>;</div><script>new Vue({ el:'#app', data:{ seen:true }})
原创
42阅读
0评论
0点赞
发布博客于 7 月前

设计模式学习笔记(三):单例模式

1 定义有时候为了节约系统资源,需要确保系统中某个类只有唯一一个实例,当这个实例创建成功之后,无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一的实例,这是单例模式的动机所在。单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。2 要点某个类只能有一个实例它必须自行创建这个实例它必须自行向整个系统提供这个实例3 通用步骤一般来说把一个普通类重构为一
原创
67阅读
0评论
0点赞
发布博客于 7 月前