Java 线程关键字

##java线程相关关键字 ####可见性 可见性是指线程之间的可见性,一个现在的装对另外一个线程是可见的 也就是说一个变量的修改后的对于其他线程而已立刻可以看见,但是不存在原子性,也就存在安全问题 ####原子性 原子是世界上最小的单位具有不可分割性 java 通常通过 synchronized 关键字保证原子性 ####有序性 即程序执行的顺序按照代码的先后顺序执行 Java内存模型中的有序性可以总结为:如果在本线程内观察,所有操作都是有序的;如果在一个线程中观察另一个线程,所有操作都是无序的 前半句是指“线程内表现为串行语义”,后半句是指“指令重排序”现象和“工作内存主主内存同步延迟”现象 ####互斥性 互斥即一次只允许一个线程持有某个特定的锁,一次就只有一个线程能够使用该共享数据 ####volatile 在使用这个关键字时变量不会执行加锁操作,也就不会线程阻塞 volatile关键字是一个sychronized关键字更轻量级的同步机制

linux mysql

安装 Debain 或 Ubuntu 参考地址 https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ 1.使用cd命令跳转到对应的文件夹,用来存储下载的mysql安装包 2.下载deb安装包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-server_8.0.12-1ubuntu18.04_amd64.deb 3.安装 dpkg -i mysql-server_8.0.12-1ubuntu18.04_amd64.deb 4.更新apt apt update 5.安装mysql apt install mysql-server Red Hat 或 Centos 参考地址 https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 1.下载 wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 2.安装rpm rpm -Uvh mysql80-community-release-el7-1.noarch.rpm 3.安装mysql yum install mysql-community-server 4.启动Mysql service mysqld start 5.查看密码 grep 'temporary password' /var/log/mysqld.log 6.登陆 mysql -uroot -p 7.修改密码 密码必须是强密码(大小写字母加数字加特殊符号) ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'; 8.刷新权限 flush privileges; 这样就安装完成了 开启远程连接 设置指定用户的localhost的值为% %代表允许任意地址连接 先登录进入数据库 使用系统数据库 use mysql; 查询用户 select user,host from user; 更新root用户的host update user set host = '%' where user = 'root'; 刷新权限 flush privileges; 修改配置文件 /etc/my.conf 在配置文件中添加以下选项 [mysqld] skip-name-resolve navicat 连接问题 使用navicat连接mysql8.0以上版本实时 会出现密码加密方式不正确的问题 原因是某些navicat 与 mysql连接时 使用的加密方式和解密方式不同而导致的 因为mysql8.0之后的版本默认登陆时的加密方式改变了 解决办法 在配置文件中修改加密方式 并用指定加密方式重新设置该用户密码 [mysqld] default_authentication_plugin=caching_sha2_password 改为 [mysqld] default_authentication_plugin=mysql_native_password 重新设置用户密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; binlog配置 mysql8默认开启binglog 关闭binglog 否则数据库访问过大会导致 硬盘已满的情况 [mysqld] skip-log-bin binlog定期清理 在sql中执行 5天清理一次 set global expire_logs_days = 5; 配置文件中 expire_logs_days = 5 sql_mode设置 不同版本的sql_mode值不同 mysql5.7 版本 [mysqld] sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' mysql8.0 以上版本 [mysqld] sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' 最大连接数 查询最大连接数 show variables like '%max_connections%'; 设置最大连接数 set GLOBAL max_connections = 200; 当前连接状况 show status like 'Threads%'; Threads_cached 0 ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected 152 ##打开的连接数 Threads_created 550 ##表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器 Threads_running 1 ##激活的连接数,这个数值一般远低于connected数值,准确的来说,Threads_running是代表当前并发数 ...

linux nginx

安装nginx ** yum系列** yum install nginx apt系列 apt install nginx 配置 nginx配置文件位置 /etc/nginx/ 通常配置文件都为 /etc/nginx/nginx.conf 有些默认的配置文件是无法启动nginx的 具体如下 server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; ........ } 这里的 是ipv6的 但是这行会导致nginx 无法启动 nginx状态查询命令 service redis status listen [::]:80 default_server; 解决办法 直接注释即可 以下为示例 server { listen 80 default_server; # listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; ........ } 添加映射 需要添加以下代码 如有多个请添加多个server 节点 具体server节点的添加位置请根据具体情况而定 不一定是添加在/etc/nginx/nginx.conf 这个文件中 也可能在/etc/nginx/ 中的其他文件中 具体请看/etc/nginx/nginx.conf 中引用其他文件的情况 ...

linux redis

安装 yum系列 yum install redis apt系列 apt-get install redis 源码安装 1.下载 wget http://download.redis.io/releases/redis-4.0.11.tar.gz 2.解压 tar zxvf redis-4.0.11.tar.gz 3.安装库 yum install gcc gcc-c++ 4.安装到指定目录 make PREFIX=/var/lib/redis install 5.安装成服务 修改解压文件中utils文件夹中的redis_init_script 文件 修改为 EXEC=/var/lib/redis/bin/redis-server CLIEXEC=/var/lib/redis/bin/redis-cli 将文件复制到 /etc/init.d cp redis_init_script /etc/init.d/redis 6.拷贝配置文件 cd /etc mkdir redis cp redis.conf /etc/redis/6379.conf 这样就安装完成了 配置 配置后台启动(apt 或 yum安装的请跳过) 将 /etc/redis/redis.conf文件中的 daemonize 修改为yes 开启远程连接 更改前 bind 127.0.0.1 更改后 #bind 127.0.0.1 设置连接密码 ...

linux tomcat

安装 tomcat 官网 https://tomcat.apache.org/ 1.下载Tomcat wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.zip 2.解压 unzip apache-tomcat-8.5.34.zip 3.拷贝文件到安装目录 cp -r apache-tomcat-8.5.34 /var/lib/ 4.重命名文件夹 mv apache-tomcat-8.5.34 tomcat8_5 进入到tomcat文件夹下 赋予执行权限 cd /var/lib/tomcat8_5/bin chmod +x catalina.sh 修改catalina.sh文件 在文件中添加这个 指定tomcat目录 CATALINA_HOME=/var/lib/tomcat8_5 CATALINA_BASE=/var/lib/tomcat8_5 复制文件到/etc/init.d 文件夹下 cp catalina.sh /etc/init.d/tomcat 启动tomcat service tomcat start 关闭防火墙 systemctl stop firewalld.service 内存调优 修改 tomcat8/bin/catalina.sh 文件 cygwin=false 的上方添加 JAVA_OPTS="-Xms128m -Xmx512m -Xss1024K -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m" Xss:每个线程的stack大小(栈) Xmx:JAVA HEAP的最大值、默认为物理内存的1/4 Xms:JAVA HEAP的初始值,server端最好 Xms与Xmx一样 Xmn:JAVA HEAP young区的大小 XX:PermSize:设定内存的永久保存区域 XX:MaxPermSize:设定最大内存的永久保存区域 ...

linux 常用命令

用户相关 添加用户 adduser 用户名 修改用户密码 passwd 用户名 进程相关 查看后台进程 ps -ef 杀死后台进程 kill 想对应的pid 服务相关 启动服务 service 服务名 start 停止服务 service 服务名 stop 重启服务 service 服务名 restart 查看服务状态 service 服务名 status 软件的安装与卸载 yum系列 搜索安装包 yum search java|grep jdk apt系列 搜索安装包 sudo apt-cache search 彻底卸载 包括删除配置文件 apt-get --purge remove 软件名称 文件操作相关 重命名 将文件夹a重命名为b mv a b 复制文件夹 将a文件夹复制包b目录下 cp -r a b 系统命令 重启服务器 reboot 查看文件夹使用情况 du -sh 文件夹名称 查看硬盘使用情况 df -h 关机 1、halt 立刻关机 2、poweroff 立刻关机 3、shutdown -h now 立刻关机(root用户使用) 4、shutdown -h 10 10分钟后自动关机 防火墙操作 开启防火墙的命令 systemctl start firewalld.service 关闭防火墙的命令 systemctl stop firewalld.service 开机自动启动命令 systemctl enable firewalld.service 关闭开机自动启动 systemctl disable firewalld.service 查看防火墙状态 systemctl status firewalld

linux 开启远程登陆

ubuntu开启root远程登陆 sudo vi /etc/ssh/sshd_config Ubuntu 将 #PermitRootLogin prohibit-password 修改为 PermitRootLogin yes Centos 将 #PermitRootLogin yes 修改为 PermitRootLogin yes 修改之后要重启服务器 重启命令 reboot

linux 压缩 解压

解压 zip unzip 文件名 解压 tar.gz tar zxvf 文件名

makdown 语法

一、标题 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 二、字体 **这是加粗的文字** *这是倾斜的文字*` ***这是斜体加粗的文字*** ~~这是加删除线的文字~~ 这是加粗的文字 这是倾斜的文字` 这是斜体加粗的文字 这是加删除线的文字 三、分割线 --- ---- *** *****

maven springboot

打war配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.***</groupId> <artifactId>common</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>common</name> <description>Common project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <shiro.version>1.4.0</shiro.version> <shiro.redis.version>2.4.2-RELEASE</shiro.redis.version> <mybatis.spring.version>1.3.2</mybatis.spring.version> <jsoup.version>1.11.3</jsoup.version> <fastjson.version>1.2.47</fastjson.version> <httpclient.version>4.5.5</httpclient.version> <lombok.version>1.18.0</lombok.version> <pagehelper.version>1.2.5</pagehelper.version> <aliyun.oss.version>3.1.0</aliyun.oss.version> <druid.version>1.1.10</druid.version> <commons.io.version>2.5</commons.io.version> <commons.fileupload.version>1.3.3</commons.fileupload.version> <bitwalker.version>1.19</bitwalker.version> <kaptcha.version>2.3.2</kaptcha.version> <thymeleaf.shiro.version>2.0.0</thymeleaf.shiro.version> </properties> <dependencies> <!-- SpringBoot 核心包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- SpringBoot 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- SpringBoot 拦截器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- SpringBoot Web容器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- SpringBoot集成thymeleaf模板 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- thymeleaf网页解析 --> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> </dependency> <!-- Mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- SpringBoot集成mybatis框架 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- pagehelper 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper.version}</version> </dependency> <!--阿里数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <!--常用工具类 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <!--io常用工具类 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons.io.version}</version> </dependency> <!--文件上传工具类 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons.fileupload.version}</version> </dependency> <!--Shiro核心框架 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</version> </dependency> <!-- Shiro使用Srping框架 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.crazycake</groupId> <artifactId>shiro-redis</artifactId> <version>2.4.2-RELEASE</version> </dependency> <!-- thymeleaf 与 shiro 整合--> <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId> <version>${thymeleaf.shiro.version}</version> </dependency> <!-- 阿里JSON解析器 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <!-- 解析客户端操作系统、浏览器等 --> <dependency> <groupId>eu.bitwalker</groupId> <artifactId>UserAgentUtils</artifactId> <version>${bitwalker.version}</version> </dependency> <!--Spring框架基本的核心工具--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <!--验证码 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>${kaptcha.version}</version> <exclusions> <exclusion> <artifactId>javax.servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> </exclusions> </dependency> <!-- HTML解析器 --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>${jsoup.version}</version> </dependency> <!-- 内置Tomcat --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!--<scope>provided</scope>--> </dependency> <!-- 邮件发送工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <!-- 参数验证框架 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- redis内存数据库框架 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 缓存依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- session 使用 redis缓存 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <!-- 日志框架 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <!-- http网络请求框架 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${httpclient.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <!--阿里云短信OSS--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>${aliyun.oss.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>