并发编程三大特性
可见性
MESI 多线程的底层并不是通过mesi
多线程提高效率,本地缓存数据,造成数据修改不可见,
要想保证可见,要么触发同步指令,要么加上volatile,被修饰的内存,只要有修改,马上同步涉及到的每个线程。
==volatile==
==介绍一下volatile的功能?==
volatile关键字保证了可见性和禁止指令重排
提供了happen-before的保证,确保一个线程的修改可以对其他线程是可见的。当一个共享变量被修饰的时候,就会保证修改的值立即被更新到内存,当其他线程需要读取的时候,就会去内存中读取新值。从实际角度来说,其中的一个重要作用就是与CAS结合,保证了原子性。volatile经常用在多线程环境下的单次操作。
通俗来讲就是 ab线程要用一个变量,然后java默认是a线程中保留一份copy,这样如果b线程来修改,则a线程未必知道,如果使用这个关键字,线程之间数据修改都能可见。
==volatile的可见性和禁止指令重排序怎么实现的?==
volatile本质上是通过内存屏障来实现可见性的,被修饰的变量在被修改之后可以立即同步到主内存,该变量每次使 ...
m1 2020配置java后端环境
1 安装JDK
OracleJDK暂时并不支持arm架构的芯片,我们需要使用openjdk:zulu版本 地址
安装完成 终端输入java --version
配置问题!!!
😭m1 默认是zsh 不是bash 一开始不知道的我 把所有配置全部输入到 bash_profile 然后看maven版本却显示
想要更换bash 和 zsh模式可以参考这个: mac中bash和zsh终端切换方法和zsh配置
./zshrc ```添加配置(可以**修改版本**)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
## 2 安装homebrew
homebrew 是macos的包管理工具
在终端输入 ```/bin/zsh -c "$(c ...
概念
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。
版本控制:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 。
代码托管中心
我们已经有了本地库,本地库可以帮我们进行版本控制,为什么还需要代码托管中心呢?
它的任务是帮我们维护远程库,下面说一下本地库和远程库的交互方式,也分为两种:
团队内部协作
跨团队协作
https://github.com/SoniaChan33/SoniaChan33.github.io
初始化本地仓库
创建一个文件夹
打开Git终端:Git Bash Here
查看Git安装版本
git --version
清屏
clear
设置签名
git config --global user.name "TeaSea33"
git config --global user.email "[email protected]"
本地仓库的初始化操作(目录在本地仓库里)
git init
查看.git下的内容
注意事项: .git目录下的本地库相关 ...
引入
Tomcat
HTTP协议
协议:Protocol
定义
HTTP协议是**Hyper Text Transfer Protocol(超文本传输协议)**的缩写, HTTP是万维网(WWW:World Wide Web)的数据通信的基础。
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
特点
1支持客户/服务器模式
HTTP协议支持客户端服务端模式,需要使用浏览器作为客户端来访问服务端。
2简单快速
客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3灵活
HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
4无连接
每次请求一次,释放一次连接。所以无 ...
引入
为什么使用jQuery?
使用原生JavaScript编码存在问题
1选择器功能弱
2 DOM操作繁琐之极
3浏览器兼容性不好
4动画功能弱
优点
1强大的选择器
2出色的DOM封装
3出色的浏览器兼容性
4强大的动画功能
5体积小,压缩后只有100KB左右
6可靠的事件处理机制
7使用隐式迭代简化编程
8丰富的插件支持
定义
目前最流行的JavaScript函数库之一,对JavaScript进行了封装。并不是一门新语言。将常用的、复杂的操作进行函数化封装,直接调用,大大降低了使用JavaScript的难度,改变了使用JavaScript的习惯。jQuery能做的JavaScript也能做,但使用jQuery能大幅提高开发效率,由美国人John Resig在2006年推出,目前最新版本是v3.5.1。宗旨:Write less,do more(写更少代码,做更多事情)。官方网址http://jquery.com/
==$()==
作用一:页面加载函数
/*jQuery(document).ready(function (){
...
概念
JS是运行在浏览器上的一种脚本语言
特点
1.脚本语言
脚本语言是一种简单的程序,规模小,不需要编译,运行快,是由一些ASCII字符构成,可以使用任何一种文本编辑器编写。脚本语言是指在web浏览器内有解释器解释执行的编程语言,每次运行程序的时候,解释器会把程序代码翻译成可执行的格式。一些程序语言(如C、C++、Java等)都必须经过编译,将源代码编译成二进制的可执行文件之后才能运行,而脚本语言不需要事先编译,只要有一个与其相适应的解释器就可以执行。
2.基于对象的语言
面向对象有三大特点(封装,继承,多态)缺一不可。通常"基于对象"是使用对象,但是无法利用现有的对象模板产生新的对象类型,也就是说"基于对象"没有继承的特点。没有了继承的概念也就无从谈论"多态"
3.事件驱动
在网页中执行了某种操作的动作,被称为"事件"(Event),比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。
4.简单性
变量类型是采用弱类型,并未使用严格的数据类型。var a,b,c; ...
cascading style sheets
样式
行内样式(优先级最高)、内部样式、外部样式(最常用的)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--
【书写方式2:内部样式】
-->
<style type="text/css">
h1{
color: pink;
font-family: "宋体";
}
</style>
<!--
【书写方式3:外部样式】
-->
<link rel="stylesheet" type="text/css" href="css/样式.css" />
</h ...
超文本标记语言
head 标签
head标签用于定义文档的头部,它是所有头部元素的容器。 中的元素可以引用脚本、指示浏览器在哪里找到样式表。文档的头部描述了文档的各种属性和信息,包括文档的标题、在 Web 中的位置以及和其他文档的关系等。绝大多数文档头部包含的数据都不会真正作为内容显示给读者。
下面这些标签可用在 head 部分:
<title>、<meta>、<link>、<style>、 <script>、 <base>。
<html>
<head>
<!--
页面注释
可以放入<title>、<meta>、<style>、<script>、<base>
-->
<!--页面标题-->
<title>百度一下,你就知道</title>
<!--设置页面的编码,防止乱码现象
利用meta标签
charset="UTF-8"
-->
<meta charset="utf-8">
<!--页面刷新效果--> ...
引入
1. 概念
JDBC(Java DataBase Connectivity, Java数据库连接) ,是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
2. 依赖
导入依赖
src下创建一个文件夹命名lib,然后把依赖包复制到里面,右键create library
移除依赖
setting ——>project structure
3. 实例
1:加载一个Driver驱动
//1.加载驱动 Driver
Driver driver = new com.mysql.cj.jdbc.Driver();
2:创建数据库连接(Connection)
url
格式——协议**://ip:端口/资源路径?参数名=参数值&参数名=参数值&…**
协议 jdbc:mysql
IP 127.0.0.1/localhost
端口号 3306
数据库名字 mydb
参数 useSSL(是否使用SSL)、useUnicode(是否使用unicod)、 ...