程序开发 Java 中 volatile 关键字 并发编程中,有三个非常重要的概念: 原子性:提供了一种互斥访问,同一时刻只能有一个线程对它进行操作 可见性:一个线程对主内存对修改可以及时的被其他线程观察到 有序性:一个线程观察其他线程的指令行执行顺序,由于指令重新排序的存在,该观察结果一般杂乱无序 而 volatile 关键字能够保证以下两点: 可见性(Visibility): 当一个线程修改了一个volatile变量的值时,这个新值会立即被写…
程序开发 Java 值传递与引用传递 Java 中方法调用参数传递类型无非两种,一种是基本数据类型、另一种是引用数据类型。受到这两种数据类型的影响,让人误以为,参数传递方式是和数据类型有关的,其实不然。无论是基本数据类型还是引用数据类型。下面我将分类阐述基本类型变量,与引用类型变量传递过程。 基本数据类型传递 public class Test1 { public static void main(String[] args) { T…
程序开发 Axios 基本使用教程 1. 简介 Axios 是一个基于 promise 的网络请求库,作用于 node.js 和浏览器中。它提供了许多强大的特性,比如拦截器、请求和响应转换、取消请求等。 具有如下特性: 从浏览器发出 XMLHttpRequests 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 JSON 数据的自动转换 自动将数据对象序列化为正文…
程序开发 Promise 简介以及使用教程 1. 回调地狱 要了解 Promise 是什么,首先要知道什么是异步编程,常见的异步编程有以下几种: nodejs 中 fs 模块操作磁盘文件 数据库操作 ajax 请求 定时器 要知道,js 设计之初就是单线程模式,那么遇到异步函数不能等它执行完再执行,所以通常传递一个回调函数。例如: setTimeout(() => { console.log('3 秒后打印'); …
程序开发 Vuex 使用教程 1. 简介 Vuex 是一个 Vue 的状态管理工具,状态就是数据。它的使用场景是多个组件共同维护一份数据(如购物车),或者多个组件使用同一个状态(个人信息)。 其实就是集中式的管理数据,如下图所示: 官方文档:https://vuex.vuejs.org/zh/ 2. 基本使用 vue2 中使用 vuex 分为以下几个步骤: 安装 vuex 引入 vuex 注册 vuex 插件 创建 Vuex …
程序开发 Vue-router 使用教程 1. 简介 vue-router 是官方提供的路由插件。Vue 中的路由其实就是路径和组件之间的对应关系,因为 vue 是单页应用类网站,所以创建的网站都在一个页面中。当需要展示不同的内容时,就需要通过修改浏览器的访问路径,来达到根据路径展示不同组件的目的。 官方文档:https://router.vuejs.org/zh/ 可以使用 <router-link> 组件进行导航,使用 &…
经验教程 Docker 本地 latest 镜像如何找到 dockerhub 对应版本 使用 docker 有时候为了方便拉下来的镜像是 latest 版本,但是迁移的时候,可能镜像更新了。这样的话,拉下来的镜像就和原来的不一致,如果启动报错了,就非常的麻烦。所以为了避免这种情况发生,最好使用指定版本。 万一真的出现了版本不一致不能启动的情况,首先就需要找到之前 latest 所对应的版本。这里以我这里的 linuxserver/freshrss 镜像为例: docker inspe…
运维开发 Ubuntu 优化 dns 解析 使用的 Ubuntu 系统之前尝试过修改 /etc/resolv.conf,发现修改会被重置,只知道本机启动了一个 dns 的解析服务 systemd-resolved。(今天才知道原来是因为这个文件是一个软连接) ls -alh /etc | grep resolv.conf lrwxrwxrwx 1 root root 39 2月 27 14:19 resolv.conf -> ../r…
程序开发 Vue2 基础详解 一、项目结构和入口 1. 创建vue项目 # 1. 安装vue-cli npm install -g vue-cli # 2. 创建vue项目 vue init webpack demo_vue2 # 接下来会提示输入项目名称、描述等等 (node:12404) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. P…
文章转载 ES6 语法详解 ES6(ECMAScript 2015)是 JavaScript 的一个版本,它于 2015 年发布。ES6 引入了很多新的语法和功能,使得 JavaScript 更加强大、灵活和易于使用。 一、块级作用域: ES6 引入了let 和 const 关键字,可以在块级作用域中声明变量,解决了以前使用 var 声明变量可能导致的问题。在 ES6 之前,JavaScript 中的变量声明使用var关键字…
经验教程 Orcale 引导盘扩容 Orcale 安装机器时设置了 100G 的引导盘,但是实际上只使用了 50G 的硬盘,所以需要扩容。(只给了 100G,不知道为什么显示 107G) 首先安装软件: apt install -y cloud-guest-utils gdisk # yum install -y cloud-guest-utils gdisk 然后调整分区表: growpart /dev/sda 3 最后调整分区:…
文章转载 Python 公历转换农历及简易万年历 一般使用的 万年历,只提供距今前后百年的日历。这是因为其所用的计算方法是一种简便的近似计算,适用范围较小。其次,天文学方法计算量大,不适合日常软件使用。但如果要进行历史研究,范围就超出常用日历,本文即实现计算任意日期的农历。 由于天文星历数据太大,本文的代码是直接利用 python 的 PyEphem 库。该库只提供了二分二至时间,没有 24 节气。但是也提供了任意时间的太阳黄经,可以利用此项计算…
运维开发 Linux 自己常用脚本(持续更新) 有些常用的东西还是写成脚本好了,有些好用的脚本也该收藏一下,本文持续更新。 常用 1. 安装 docker 安装 docker 24.0.0 版本 sudo bash -c "$(curl -fsSL https://file.amjun.com/public/shell/docker.sh)" 2. 安装 docker-compose 安装 compose v2.23.3 版…