Mac
快捷键 描述 命令 一个应用多个窗口 切换 command+` 录屏幕 shift+command+5 截图 shift+command+4 重装系统 先一直按住不要松手:Common+R,再按开机键;非苹果键盘,按住微软键+R 上一级目录 command+↑ 网站链接 一招解决 Chrome / Edge 浏览器卡顿变慢视频掉帧问题 - 让浏览器重回丝般流畅 AltTab iphone强制重启 浏览器返回手势 放歌有噪音通过【活动监视器】程序终止【coreaudiod】进程: 聚焦搜索】中输入【activity monitor】 在窗口右上角的搜索栏里输入【coreaudiod】 选择【coreaudiod】进程后,点击窗口上方工具栏中的【停止按钮】(按钮图标为X) 只有mac不能访问github 打开https://github.com.ipaddress.com/ 打开https://fastly.net.ipaddress.com/github.global.ssl.fastly.net#ipinfo sudo vim /etc/hosts 1234# 这个ip从第一步获取到的140.82.112.4 github.com# 这个ip从第二步获取到的199.232.69.194 github.global.ssl.fastly.net 刷新:sudo killall -HUP mDNSResponder;say DNS cache has been flushed 启动台有问号的图标,点击没反应123# 执行了之后,自己新建的文件夹会重置defaults write com.apple.dock ResetLaunchPad -bool TRUEkillall Dock Mac OS X 访问 Windows共享文件夹 在Mac中,点击 Finder菜单的“前往” > “前往服务器”。在弹出的连接服务器对话框中输入「smb://Windows主机的IP地址」,点击“连接”。 一般需要输入Windows对应用户的名称和密码,然后弹出如下窗口,选择对应的文件夹,点击“好”即可进行远程访问 只使用搜狗输入法系统偏好设置 >> 键盘 >> 快捷键 >> 反选切换输入法的快捷键 网络踪迹1traceroute ap-southeast-1.signin.aws.amazon.com 安装mysql客户端1234567brew install mysql-client# 安装目录在/opt/homebrew/Cellar/mysql-client/8.0.33_1 # mysqldump的目录/opt/homebrew/opt/mysql-client/bin/mysqldump Iterm2Iterm2多窗口同时输入命令只需要输入快捷键 ⌘(command) + ⇧(shift) + i 调出复制过的文本历史快捷键:“shift+cmd+h” 按键回放回放一段时间内的你敲过的所有字符。快捷键:“cmd+alt+b”,如图会弹出一个进度条,按左右键就可以实现按键回放了。 CheatSheet1234brew install cheatsheet# 使用随便在一个软件中 长按`command` Navicat破解gitee脚本 mac安装 protobuf123brew install protobufprotoc --version/opt/homebrew/share/emacs/site-lisp/protobuf 视频格式转换12345brew install ffmpeg# 使用这个命令ffmpeg -i input.mov -c copy output.mp4 # 不要用这个命令,网上说是速度很慢ffmpeg -i input.mov output.mp4 邮件提示禁止直接载入内容Mac自带邮件App里,有时候邮件图片不会直接显示,会提示类似: 1你的网络设置导致禁止以私密方式载入内容 这个一般和邮件隐私保护或者阻止所有远程内容有关. 邮件里的图片很多不是附件,而是远程图片.打开邮件时加载这些远程内容,发件人可能知道邮件是否被打开,打开时间,IP地址等信息.所以Apple默认会用隐私保护机制处理远程内容. 设置位置打开Mac自带邮件App: 1邮件 -> 设置 -> 隐私 可以检查这几个选项: 123保护邮件活动隐藏IP地址阻止所有远程内容 如果想让图片直接显示,可以尝试: 取消勾选阻止所有远程内容 如果仍然不能正常显示,再检查保护邮件活动 注意不建议无脑关闭所有隐私保护. 如果只是偶尔一封邮件图片没显示,可以在邮件顶部点击手动载入远程内容.如果经常需要看邮件图片,再考虑调整隐私设置. 参考: Mac的苹果自带邮件显示禁止直接载入内容 - Apple社区
macOS IDEA部署Docker到本机Docker Desktop
说明在macOS上使用IDEA开发项目时,可以直接通过IDEA的Run配置,把项目打包成Docker镜像,然后部署到本机的Docker Desktop里运行. 这个方式适合本地调试Docker环境,不用每次手动执行docker build和docker run. 前提条件 macOS已经安装并启动Docker Desktop IDEA已经安装Docker插件 项目里有可用的Dockerfile Java项目已经可以正常打包,比如Maven或Gradle打包成功 整体流程IDEA部署服务到本机Docker Desktop,本质上就是把手动命令配置到IDEA的Run里. 手动执行时一般是这样: 123mvn clean package -DskipTestsdocker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 配置到IDEA之后,点击Run就可以自动完成打包,构建镜像,启动容器. 配置Docker连接打开IDEA设置: Settings | Build, Execution, Deployment | Docker 点击+,选择Docker for Mac. 然后点击Test Connection,看到连接成功就说明IDEA已经能连接到本机Docker Desktop. 准备DockerfileSpring Boot项目可以在项目根目录准备一个简单的Dockerfile. 123456789FROM eclipse-temurin:17-jreWORKDIR /appCOPY target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"] 如果项目端口不是8080,这里的EXPOSE和后面的端口映射都要换成实际端口. 配置Run打开: Run | Edit Configurations 点击+,这里常用有两个选择: Docker | Dockerfile适合项目里有Dockerfile,需要IDEA先构建镜像,再运行容器的场景. 它会执行类似下面的流程: 12docker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 也就是说,代码改了以后,可以让IDEA重新build镜像,再启动容器. Spring Boot项目,前端项目,或者自己写了Dockerfile的项目,一般选这个. Docker | Docker Image适合镜像已经存在,只需要运行这个镜像的场景. 它会执行类似下面的流程: 1docker run --name mysql-test -p 3306:3306 mysql:8 比如运行mysql,redis,nginx,nacos这类现成镜像,或者已经手动build好了镜像,只想让IDEA帮忙启动容器,就选这个. 简单记: 12有Dockerfile,需要构建镜像 -> Docker | Dockerfile已有镜像,只想运行容器 -> Docker | Docker Image Dockerfile配置项如果选择Docker | Dockerfile,关键配置如下: 配置项 说明 Server 选择前面配置好的Docker for Mac Dockerfile 选择项目里的Dockerfile Context folder 一般选择项目根目录 Image tag 镜像名称,比如my-app:latest Container name 容器名称,比如my-app Run built image 勾选,表示构建完成后直接运行镜像 Bind ports 端口映射,比如本机8080映射容器8080 Environment variables 按需配置环境变量 常用配置可以这样填: 123456Server: Docker for MacDockerfile: ./DockerfileContext folder: 项目根目录Image tag: my-app:latestContainer name: my-appBind ports: 8080:8080 Before launch如果是Spring Boot项目,建议在Before launch里加打包任务. Maven项目可以配置: 1clean package -DskipTests Gradle项目可以配置: 1bootJar 这样点击Run时,IDEA会先打包项目,再根据Dockerfile构建镜像并启动容器. 启动后验证启动成功后,可以在Docker Desktop里看到容器. 也可以在终端检查: 1docker ps 如果服务端口是8080,可以访问: 1http://localhost:8080 如果需要看日志,可以在IDEA的Run窗口查看,也可以执行: 1docker logs -f my-app 常见问题端口被占用修改Bind ports里的本机端口. 比如容器内部还是8080,本机可以改成18080. 118080 -> 8080 容器需要访问宿主机服务macOS的Docker Desktop里,容器访问宿主机可以使用: 1host.docker.internal 比如容器里的程序要连接本机MySQL,可以把数据库地址配置成: 1host.docker.internal:3306 挂载本机目录失败检查Docker Desktop是否允许访问这个目录. 可以在Docker Desktop里查看: Settings | Resources | File Sharing 总结本地项目通过IDEA部署到macOS的Docker Desktop,核心就是两步: 在IDEA里配置Docker for Mac 在Run配置里选择Docker | Dockerfile 如果只是运行已有镜像,才选择Docker | Docker Image.
IDEA
教程IDEA查看方法被调用 修改光标所在行背景颜色 断点判断条件在断点上点右键,正常的写判断代码就行 插件Rabinbow Brackets作者:Zhihao Zhang 使用方法 Command+右键,高亮选中部分 Alt+右键,高亮选中部分,其余的代码变暗 CommitMessage作者:郭翰林 使用方法,提交的时候,点击✈️的图标 Codeium作者:Codeium 写代码的时候会有自动提示,按tab确定使用AI生成的代码 Key Promoter XTranslation作者:Yii.Guxing 选中要翻译的内容,右键选择翻译 IDEA 2025恢复旧版Commit弹窗从IntelliJ IDEA 2025版本开始,JetBrains默认启用了非模态提交界面(Non-modal Commit),提交操作会显示在Commit工具窗口里,不再是以前独立弹出的Commit窗口. 如果更习惯旧版弹窗式Commit窗口,可以通过官方插件恢复. 安装插件 打开Settings,macOS是Preferences 进入Plugins 搜索Modal Commit 安装JetBrains官方插件Modal Commit Interface 重启IDEA 开启旧版提交窗口 打开Settings 进入Advanced Settings 搜索commit 在Version Control区域勾选Use modal commit interface for Git and Mercurial 点击Apply或者OK保存 配置完成后,Git和Mercurial提交时会恢复成旧版独立弹窗式Commit对话框.
Axure
元件库新建元件库的文件 随便画一个图,并保存,注意这里的1和2的表示 另外个文件引入元件库 引入之后,就可以看到 移除元件库 母版修改了母版,所有使用母版的页面都会修改 母版的占用空间 创建两个母版 一个母版是这样的,坐标位置是0,0 一个母版不是0,0, 创建一个页面,把两个组件都拖过来,能看到这两个母版占用的空间的大小不一样 母版的设置 随意拖放,就是使用母版之后,位置是可以随意拖放的 使用母版的位置,比如母版的位置是0.0, 在页面上拖过去的母版就是0.0 脱离母版:使用母版的内容,可以任意修改内容,跟母版就没有关系了,就相当于复制了母版的内容而已 在页面上使用了母版,点击右键也可以 脱离母版 添加到页面 的功能,相当于批量一键把母版添加到多个页面 交互面板 样式面板降低饱和度不要点击元件,随便点个背景页面,就会有这个显示了 自适应文本宽度高度 说明编辑区 Axure基本元件图片 中间的图是刚从组件库里拖出来的,这是双击画面添加图片, 图片的大小不是组件的大小 要双击边框,就变成右边的的图了(黄色变成了白色),再双击图片,就可以把要添加的图片自动缩小成组件的大小了 交互设计中的样式 鼠标悬停 鼠标按下,同理(鼠标悬停,只是选项不一样) 选中(需要通过别的时间,才能触发,比如这里要触发矩形,用右边的按钮触发) 禁用
Dapp
HelloWorld合约Remix编辑器 12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.13;contract helloworld{ function helloWorld() public pure returns (string memory) { return "Hello, World!"; }} 发行代币在闲鱼,淘宝上买些测试币,也可以通过水龙头获取(只是有点要求和门槛,不如直接买),这里我买了两笔 新建合约文件 1234567891011// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";contract MyError20Token is ERC20{ constructor(string memory _name,string memory _symbol) ERC20(_name,_symbol){ _mint(msg.sender,10000 * 10 ** 18); }}
好用的软件
图片截图软件Snipaste 图片上传到图床PicGo 录屏软件Screenity 文件LocalSend
Vue项目
安装Vue局部安装局部安装并使用vue-cli 4.x版本,和创建项目 12345678910111213141516171819202122# 先创建一个文件夹# 初始化一个node项目npm init -y# 局部安装vuenpm i -D @vue/cli# 查看vue的版本# 局部安装要用npx命令C:\Users\mmzcg\WebstormProjects>npx vue -V@vue/cli 5.0.8# 创建一个项目# 为啥不能用npm运行npx vue create project-one# 进入项目并且运行cd project-onenpm run serve# 也可以用uinpx vue ui 全局安装Vue2Vue312345npm install -g @vue/clivue create my-projectvue uiVue脚手架官网 123456789101112# 安装脚手架# 会有选项pnpm create vue@latest# 进入项目cd vue-project# 安装依赖pnpm install# 运行项目pnpm dev 安装Element-UI全局安装123456# 安装# npmnpm i element-ui -S# pnpmpnpm add element-ui -S 1234// main.js 使用import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI) 按需引入123# 安装npm i element-ui -Snpm install babel-plugin-component -D 123456789101112131415161718192021222324252627// main.js// 全局引入// import ElementUI from 'element-ui'// import 'element-ui/lib/theme-chalk/index.css'// Vue.use(ElementUI)// 按需引入import {Button} from 'element-ui'Vue.use(Button)// babel.config.jsmodule.exports = { // 自动生成的 presets: [ '@vue/cli-plugin-babel/preset' ], // 从官网上复制的 "plugins": [ [ "component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" } ] ]} 如果没有找到.babelirc文件,找找babel.config.js文件 一个一个import 按需引入有点麻烦,在根目录下面创建一个plugins文件夹,在这个文件夹下面创建element.js 123import Vue from 'vue'import {Button} from 'element-ui'Vue.use(Button) 在main.js引入element.js 1import '../element.js' 安装CSS预处理器Sass安装的是sass,使用的时候是scss…. 留意 12npm install --save-dev node-sassnpm install --save-dev sass-loader 12345678# 注意这里是scss<style scoped lang="scss">.hello{ background: yellow; .el-button{ color: red }} Less12npm i less less-loader --save-devnpm i less less-loader --save-dev 1234567<style scoped lang="less">.hello{ background: yellow; .el-button{ color: red }} 重置样式下面的代码可以搜索reset.css在src/assets 下创建css文件夹,在这个文件下创建reset.css文件,粘贴 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain)*/html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed,figure, figcaption, footer, header, hgroup,menu, nav, output, ruby, section, summary,time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline;}/* HTML5 display-role reset for older browsers */article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section { display: block;}body { line-height: 1;}ol, ul { list-style: none;}blockquote, q { quotes: none;}blockquote:before, blockquote:after,q:before, q:after { content: ''; content: none;}table { border-collapse: collapse; border-spacing: 0;} 在App.vue或者其他的组件中使用 1234567891011<style lang="scss">@import url('./assets/css/reset.css');#app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px;}</style> 安装图标库12345678# 安装npm i -D font-awesomemain.jsimport 'font-awesome/css/font-awesome.min.css'# 使用<i class="fa fa-user"></i> 安装axios123456npm i axios -Smain.jsimport axios from "axios";# 挂在之后,就可以全局使用了Vue.prototype.axios = axios 安装vue-router12# vue-router3 和 4 的配置不一样npm install [email protected] 创建文件和文件夹src->router->index.js 1234567891011121314151617181920212223import Vue from 'vue'import Router from 'vue-router'import Home from '../components/Home.vue'Vue.use(Router)export default new Router({ routes:[ { path:'/home', component:Home } ], mode:'history'})main.jsimport router from './router'new Vue({ render: h => h(App), router,}).$mount('#app') 路由懒加载和异步组件123456789101112131415export default new Router({ routes:[ { path:'/home', // 路由懒加载 component:()=>import('@/components/Home.vue') }, { path:'/home2', // 异步组件 component:resolve =>require(['@/components/Home.vue'],resolve) } ], mode:'history'}) setToken封装src→utils→settoken.js 1234567891011export function setToken(key,token){ return localStorage.setItem(key,token)}export function getToken(key){ return localStorage.getItem(key)}export function delToken(key){ return localStorage.removeItem(key)} 使用 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647<script>import {nameRule,passwordRule} from "@/utils/vaildate";import {setToken} from "@/utils/setToken";export default { data() { return { form: { username: "", password: "" }, rules: { username: [{validator: nameRule, trigger: 'blur'}], password: [{validator: passwordRule, trigger: 'blur'}], } } }, methods: { login(form) { this.$refs[form].validate((valid) => { if (valid) { console.log("验证通过") this.axios.post("http://localhost", this.form).then( res => { console.log(res) if (res.data.status === 200) { setToken("username", res.data.username) this.$message({ message: res.data.message, type: 'success' }) this.$router.push('/home') } } ) .catch(err => { console.error(err) }) } else { console.error("验证不通过") } }) } }}</script> 配置代理服务器123456789101112131415161718192021const { defineConfig } = require('@vue/cli-service')module.exports = defineConfig({ transpileDependencies: true, lintOnSave: false, devServer:{ // 运行自动打开浏览器, open:true, // 如果不配置这个,自动打开浏览器,就是0.0.0.0:8080 host:"localhost", proxy:{ '/api':{ target:'http://127.0.0.1', changeOrigin:true, pathRewrite:{ '^/api':'' } } } }}) 40412345{ path:'*', // 路由懒加载 component:()=>import('@/components/404.vue')}
CSS
CSS选择器基础选择器 选择器名字 示例 标签选择器 p{color: green;} 类选择器 .red {color: red;} ID选择器 #red {color: red;} 通配符选择器 * {color: red;} 复合选择器 选择器 作用 描述 后台选择器 a b{color: green;} b是孩子 子代选择器 a> b{color: green;} b是儿子 并集选择器 a , b{color: green;} 一次选中多个元素 伪类选择器 :link 未被访问的连接 :visited 已经访问的连接 :hover 鼠标放在上面的连接 :active 鼠标按下没有谈起的连接 focus伪类选择器获取焦点的表单选择器 字体属性 文本属性 盒子模型边框还有个表格边框合并的属性:border-collapse:两条边合并成一条边 内边距 内边距也会影响盒子的实际大小 padding 值得顺序是 上 右 下 左 没有指定width,加了padding就不会改变盒子宽度 外边距margin的语法跟padding用法一样 外边距应用-盒子居中让盒子居中的前提条件是: 盒子必须指定了宽度 盒子左右的外边距都设置为auto 嵌套外边距塌陷 解决方法1: 给父元素定义上边框,坏处就是撑大了盒子border-top: 1px solid transparent; 解决方法2:指定一个上内边距,坏处就是撑大了盒子padding: 1px; 解决方法三:为父元素添加 overflowoverflow: hidden; 在浮动,固定,绝对定位的盒子就不会有塌陷问题 元素显示模式块元素 div ,h1 p ul ol li 一个占一行 高度,宽度,外边距,内边距都可以控制 宽度默认是容器的100% 是一个容器及盒子,里面可以放行内或者块元素 <p>和<h1> 等用于存放文字的标签里面不能放<div> 行内元素 span a strong b em i 一行可以用多个 宽高,设置无效,背景颜色设置有效 默认宽度就是它本身内容的宽度 行内元素只能放文本或者其他行内元素 特殊情况链接里面不能再放连接,<a>里面可以放块级元素 <input> <img>是行内款,一行可以给多个,也能设置宽高 元素显示模式的转换
Draw.io
连线滚动 Tree Folding折叠
