🧱 后端开发与架构
未读几个并发概念的介绍 同步(synchronous)和异步(asynchronous) 同步调用会等待方法的返回, 异步调用会马上返回, 但是异步调用返回并不代表人任务已经完成, 它会在后台启个线程继续进行任务 并发(Concurrency)和并行(Parallelism) 并发和并行在外在表象来说, 是差不多的. 由图所示, 并行则是两个任务同时进行, 而并发呢, 则是一会做一个任务一会又切换做另一个任务. 所以单个 cpu是不能做并行的, 只能是并发. 临界区 临界区用来表示一种公共资源或者说是共享数据, 可以被多个线程使用, 但是每一次, 只能有一个线程使用它, 一旦临界区资源被占用, 其他线程要想使用这个资源,就必须等待. 阻塞(Blocking)和非阻塞(Non-Blocking) 阻塞和非阻塞通常用来形容多线程间的相互影响. 比如一个线程占用了临界区资源, 那么其它所有需要 这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起. 这种情况就是阻塞. 此时, 如 果占用资源的线程一直不愿意释放资源, 那么其它所有阻塞在这个临界区上的线程都不 ...
🔥 效能提升
未读本文将带你深入了解 tmux 的基本操作和使用技巧,让你能够更高效地使用终端。我们将从安装、配置、常用命令以及插件等方面进行详细介绍。 一、什么是 tmux?tmux 是一个终端复用软件,它可以将多个终端窗口合并到一个窗口中,从而提高工作效率。简单来说,它可以让你在一个终端窗口中同时打开多个会话(session)、窗口(window)和面板(panel),并进行自由切换和管理。 二、安装与配置 安装 123git clone https://github.com/gpakosz/.tmux.git .oh-my-tmuxln -s -f .oh-my-tmux/.tmux.conf ~/.tmux.confcp .oh-my-tmux/.tmux.conf.local ~/.tmux.conf.local 插件安装 1git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm 三、常用命令 会话管理 新建会话:tmux new -s my_session_name 切换会话:tmux at - ...
🔥 效能提升
未读Homebrew 是 macOS 和 Linux 上的包管理器,允许用户通过命令行轻松安装、更新和管理软件包。它极大地简化了软件包的获取和维护过程,尤其适合开发者。本文将深入探讨 Homebrew 的功能、安装方式、核心命令以及一些进阶用法,帮助你快速上手并高效管理开发环境。 什么是 Homebrew?Homebrew 是一个开源项目,由 Max Howell 在 2009 年发布,旨在为 macOS 用户提供类似 Linux 包管理器的体验。Homebrew 的设计哲学是“将复杂的事情简单化”,它能自动解决依赖关系并优化安装过程,为开发者提供了一种轻量级、无 GUI 的方式来安装各种开发工具。现在,Homebrew 也扩展支持了 Linux 系统,使其成为跨平台的工具。 为什么使用 Homebrew?macOS 自带的系统工具和开发环境比较有限,Homebrew 通过一系列命令行工具简化了软件包的安装和管理流程,为 macOS 和 Linux 用户提供了一套完善的包管理方案。相比于手动下载和配置软件,Homebrew 能自动配置依赖项、路径和更新管理等工作,让用户可以专注于开 ...
🧱 后端开发与架构
未读项目搭建采用技术栈为:Spring+Spring MVC+Hibernate+Jsp+Gradle + tomcat+mysql5.6 搭建环境文档目录结构说明: 使用 Intellj Idea 搭建项目过程详解 项目各配置文件讲解及部署 各层包功能讲解 & 项目搭建完毕最终效果演示图 项目中重要代码讲解 配置 tomcat 运行环境 webapp 文件夹下分层详解 1. 使用 Intellj Idea 搭建项目过程详解1.1 打开 Intellj Idea 1.2 操作 Intellj Idea 工具栏 新建项目 需要说明的是,最初创建的项目视图是不完整的,包括 webapp 文件夹下没有 web.xml,以及 src 包下缺少 Java 文件夹 (放置 java 源代码文件),Resources 文件夹(放置项目配置文件)。 我们继续做以下操作,使得项目的结构符合 web 应用项目的层级标准。 出现如下视图: 接下来:单击 main 文件夹按照如下操作: 屏幕快照 2016-11-20 下午 4.44.33.png 点击 ok,再按照上 ...
要想统一处理所有 http 请求和响应,就得用上 axios 的拦截器。通过配置 http response inteceptor,当后端接口返回 401 Unauthorized(未授权),让用户重新登录。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970// http request 拦截器axios.interceptors.request.use( config => { if (store.state.token) { // 判断是否存在token,如果存在的话,则每个http header都加上token config.headers.Authorization = `token ${store.state.token}`; } ...
Sublime Text 是一个强大的文本编辑器,提供了丰富的快捷键来提高编程效率。以下是 Sublime Text 中一些常用的快捷键。 基本操作 打开命令面板:Shift + Cmd + P 控制台:Ctrl + (反引号) 新建标签页:Cmd + N 切换标签页(通过数字):Cmd + 数字 分成两屏显示:Cmd + Option + 2 查找与替换 查找文本:Cmd + F 查找并替换文本:Option + Cmd + F 跳转到函数或方法:Cmd + R 添加/删除选中行的注释:Cmd + / 编辑与格式化 智能缩进(增加或减少缩进):Cmd + [ 或 Cmd + ] 显示/隐藏侧边栏:Cmd + K, B **删除光标前所有字符 (Mac)**:Cmd + Delete JSON 和 HTML 格式化 格式化 JSON 文件:Ctrl + Cmd + J 格式化 HTML 文件:Shift + Cmd + H 具体命令列表以下是一些具体操作对应的快捷键: 文件跳转: Cmd + T 行号跳转 (类似 Vim 的 num + gg): ...
在 macOS 操作系统中,快捷键是提高工作和生活效率的重要工具之一。掌握这些常用快捷键能让你更加得心应手地操作电脑。本文将详细介绍 macOS 系统、应用程序以及开发工具相关的快捷键。 常用 macOS 快捷键系统级快捷键 控制 + shift + 关机键 - 让 Mac 进入休眠模式。 开机时按住 shift+enter - 忽略自启动软件,直接加载系统。 控制 + f2 - 在任务栏(Dock)上移动焦点。 控制 + f3 - 选择 dock 中的应用或图标。 opt + cmd + 右上角 - 锁定屏幕。 option + command + esc - 强制退出未响应的应用程序。 control + 右上角 - 调出关机帮助界面。 Ctrl + 关机键 - 显示关机提示对话框,可以取消关闭操作。 Ctrl + Opt + 关机键 - 安全地关闭 Mac 电脑。 Ctrl + Cmd + 关机键 - 重启 Mac 电脑。 Shift + Ctrl + Opt + 关机键 - 立即断电关闭电脑,不进行任何保存操作,请谨慎使用此快捷键。 opt + \ - 打开 Finde ...
🔥 效能提升
未读在使用终端模拟器和 tmux 时,掌握一些快捷键可以帮助你提高工作效率。以下是 iTerm2 和 tmux 的一些常用快捷键。 iTerm2 快捷键基本操作 打开/关闭 iTerm:F12 快速标记:Cmd+Shift+m 回到标记位置:Cmd+Shift+j 搜索和历史记录 正则表达式搜索:Cmd+f 剪切板历史:Cmd+Shift+h 显示命令历史记录:Cmd+; 切换 Tab 和 Pane 切换 tab: Cmd+←, Cmd+→, Cmd+{, Cmd+} 新建 tab: Cmd+t 顺序切换 pane: Cmd+[, Cmd+] 按方向切换 pane: Cmd+Option+方向键 切分屏幕 水平切分: Cmd+d 垂直切分: Cmd+Shift+d 其他快捷操作 高亮显示鼠标指针:Cmd+/ 快照返回: Cmd+Option+b 文本编辑相关 Ctrl+q: 清空当前行 ⌃ + u: 删除从当前位置到行首的内容 ⌃ + a: 移动到行首 ⌃ + e: 移动到行尾 ⌃ + f: 向前移动一个字符 ⌃ + b: 向后移动一个字符 ...
🛠️ 开发工具与插件
未读IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),它提供了丰富的快捷键来提高编程效率。下面是一些常用的编辑器背景色、行号栏颜色以及控制台背景色的设置方法,同时涵盖了自定义代码折叠和一些 IDEA 常用及自定义快捷键。 设置编辑器颜色 编辑器背景色: 前往 Preference -> Editor -> Color & Fonts -> Editor -> General -> Text -> Default text 行号栏的颜色: 前往 Preference -> Editor -> Color & Fonts -> General -> Editor -> Gutter background 控制台背景色设置: 在 Setting 中找到 Editor,然后选择 color Scheme -> console Colors。右侧的 Console 部分可以调整背景颜色。 其他编辑器颜色设置: 调整光标当前行颜色:前往 Editor -> Col ...
🛠️ 开发工具与插件
未读文件和编辑相关 control+enter - 插入(与 alt+insert 相同) option+enter - 排错(与 alt+enter 相同) shift+enter - 在当前行下面插入新行 command + enter - 在光标前一行插入新行 shift + command - 创建测试用例 shift + control + r - 运行配置的运行/调试任务 option + commmand + (+/-) - 快速折叠代码段或打开折叠的部分 (Ctrl+Shift+/) command + > 或 < - 关闭或展开当前文件夹内的所有折叠部分(仅针对文件夹) command + [ 或 ] - 跳转到上次编辑的位置 shift + command + F - 在项目中查找关键字 option + command + l - 代码格式化 (Ctrl+Alt+L) shift+command+j - 插入代码模板(Live Templates) command + j - Acejump: 快速定位到行首、变量或方 ...
🧱 后端开发与架构
未读字符串常量归常量池管理,那比如 String str = “abc”; “abc” 这个对象是放在内存中的哪个位置,是字符串常量池中还是堆? ”这句代码的 abc 当然在常量池中,只有 new String(“abc”) 这个对象才在堆中创建“,他们大概是这么回答。 “abc”这个东西,是放在常量池中,这个答案是错误的。 字符串“abc” 的本体、实例,应该是存在于 Java 堆中。 可能还真的有部分同学对这个知识点不熟悉,今天和大家聊聊字符串这个问题 ~ 初学 Java 时,学到字符串这一部分,有一段代码 123String str1 = "hello";String str2 = new String("hello");复制代码 书上的解释是:执行第一行的时候,已经把 “hello” 字符串放到了常量池中,执行第二行代码时,会将常量池中已经存在的 “hello” 复制一份到堆内存中,创建一个的新的 String 对象。虽然值一样,但他们是不同的对象。 当时看完这个解释,我产生了很多疑惑。因为在此之前已经知道字符串的底层 ...
🖥️ 基础设施与运维
未读一、升级到最新版1. 检查当前已安装的 docker 相关软件包1rpm -qa | grep docker 2. 卸载旧版本执行以下命令卸载所有列出的相关软件: 12345yum remove docker-<version>yum remove docker-client-<version>yum remove docker-common-<version># 示例:# yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64 3. 升级到最新版使用 curl 命令安装最新的 Docker 版本: 1curl -fsSL https://get.docker.com/ | sh 4. 启动和设置开机自启 Docker 服务 重启 Docker 1systemctl restart docker 设置启动项,确保 Docker 在系统启动时自动运行: 1systemctl enable docker 二、解决升级后容器启动错误若从旧版本(如 1.13.1)直接升级到新版 ...
🖥️ 基础设施与运维
未读Docker 入门指南Docker 是一个开源的应用容器引擎,让开发者能够将软件及其运行时环境封装起来以方便地进行移植和部署。通过使用 Docker,可以快速打包、发布以及运行应用程序在几乎任何地方(包括物理机或虚拟机上)。它利用 Linux 内核的资源隔离特性来实现轻量级的操作系统级虚拟化,使得开发人员能够创建和管理容器化的应用和服务。 安装 Docker在 Ubuntu 上安装 Docker 更新包索引: 1$ sudo apt-get update 安装必要的软件包以允许 apt 使用 HTTPS 来获取安全存储库: 1$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 添加 Docker 的官方 GPG 密钥: 1$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 利用该密钥来验证 Docker 存储库中的所有软件包的完 ...
🛠️ 开发工具与插件
未读JUnit 是一个开放源代码的 Java 测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系 xUnit 的一个实例(用于 java 语言)。 为什么使用 Junit我们以前测试一个类的步骤: 新建一个 test 类 创建 main() 方法 在 main 类 new 一个我们要测试的类的实例 然后调用这个类的方法,输出一个结果 当测试的类有多个方法时,我们必须调用所有的方法,为了不让上一次的方法调用对下一次的调用产生影响,我们会在 new 一个实例出来,或者将上一次的代码注释掉.则将造成整个测试代码的混乱.这个时候我们希望如果可以有多个 mian() 方法,每个 main() 方法内只调用一个需要测试的类的方法,这样显得调理清晰.但是这是不可能的,一个程序只能有一个入口 这个时候,Junit 站了出来,它大声的说它可以做到. 怎么使用 Junit主要步骤: 新建一个 java 项目 在 src 下新建一个 util 包,编写一个普通的类 123456789101112131415161718192021222324252627/** * 对名称,地址等字符 ...















