新时代码农
未读几个多线程概念的介绍 线程状态转换 新建 (new): 新创建一个线程对象 可运行 (runnable):线程对象创建后,其他线程(比如 main 线程)调用了该对象的 start() 方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 运行 (running):可运行状态(runnable) 的线程获得了 cpu 时间片(timeslice) ,执行程序代码。 阻塞 (block):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice,暂时停止运行。直到线程进入可运行(runnable) 状态,才有机会再次获得cpu timeslice 转到运行 (running) 状态。阻塞的情况分三种: 等待阻塞:运行 (running) 的线程执行 o.wait()方法,JVM 会把该线程放入等待队列 (waitting queue) 中。 同步阻塞:运行 (running) 的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则 JVM 会把该线程放入锁池 (lock pool) 中。 其他阻塞:运行 (ru ...
新时代码农
未读总结方法区和运行时常量池 相关特征方法区特征 同 Java 堆一样, 方法区也是全局共享的一块内存区域 方法区的作用是存储 Java 类的结构信息, 当我们创建对象实例后, 对象的类型信息存储在方法堆之中, 实例数据存放在堆中;实例数据指的是在 Java中创建的各种实例对象以及它们的值, 类型信息指的是定义在 Java代码中的常量、静态变量、以及在类中声明的各种方法、方法字段等等;同事可能包括即时编译器编译后产生的代码数据. JVMS 不要求该区域实现自动的内存管理, 但是商用 JVM 一般都已实现该区域的自动内存管理. 方法区分配内存可以不连续, 可以动态扩展. 该区域并非像 JMM 规范描述的那样数据一旦放进去就属于 “永久代”; 在该区域进行内存回收的主要目的是对常量池的回收和对内存数据的卸载;一般来说这个区域的内存回收效率比起Java 堆要低得多. 当方法区无法满足内存需求时, 将抛出 OutOfMemoryError 异常. 运行时常量池的特征 运行时常量池是方法区的一部分, 所以也是全局共享的. 其作用是存储 Java 类文件常量池中的符号信息. cl ...
几个并发概念的介绍 同步(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 ...
字符串常量归常量池管理,那比如 String str = “abc”; “abc” 这个对象是放在内存中的哪个位置,是字符串常量池中还是堆? ”这句代码的 abc 当然在常量池中,只有 new String(“abc”) 这个对象才在堆中创建“,他们大概是这么回答。 “abc”这个东西,是放在常量池中,这个答案是错误的。 字符串“abc” 的本体、实例,应该是存在于 Java 堆中。 可能还真的有部分同学对这个知识点不熟悉,今天和大家聊聊字符串这个问题 ~ 初学 Java 时,学到字符串这一部分,有一段代码 123String str1 = "hello";String str2 = new String("hello");复制代码 书上的解释是:执行第一行的时候,已经把 “hello” 字符串放到了常量池中,执行第二行代码时,会将常量池中已经存在的 “hello” 复制一份到堆内存中,创建一个的新的 String 对象。虽然值一样,但他们是不同的对象。 当时看完这个解释,我产生了很多疑惑。因为在此之前已经知道字符串的底层 ...
文件和编辑相关 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: 快速定位到行首、变量或方 ...
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 存储库中的所有软件包的完 ...