最新文章MySQL笔记
DQL
DDL(Data Definition Language):CREATE、DROP、ALTER
DML(Data Manipulation Language):INSERT、DELETE、UPDATE
DQL(Data Query Language):SELECT
DCL(Data Control Language):GRANT、REVOKE
DQL 语句执行顺序:
1FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT -> SELECT
DCL用户管理1)查询用户
1SELECT * FROM mysql.user;
2)创建用户
Host 默认值为 “%”,通过用户名@主机名来唯一标识用户
1CREATE USER "用户名"@"主机名" IDENTIFIED BY "密码"
3)修改密码
1ALTER USER "用户名"@"主机名" IDENTIFIED WITH ...
Java 相关知识
Java 基础Java和C++主要区别有哪些?各有哪些优缺点?Java 和 C++都是面向对象的语言,他们一个是编译型语言,一个是解释型语言。
C++是编译型语言(首先将源代码编译生成机器码,再由机器运行机器码),执行速度快、效率高;依赖编译器、跨平台性差些。
Java是解释型语言(源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。),执行速度慢、效率低;依赖解释器、跨平台性好。PS:也有人说Java是半编译、半解释型语言。Java 编译器(javac)先将java源程序编译成Java字节码(.class),JVM负责解释执行字节码文件。
二者更多的主要区别如下:
Java
C++
跨平台
平台无关
平台有关
内存管理
自动
手动
参数传递方式
值传递
引用、指针、值传递
多重继承
不支持
支持
系统资源的控制能力
弱
强
适合领域
企业级Web应用开发
系统编程、游戏开发等
C++是平台相关的,Java是平台无关的。
Java是自动内存管理和垃圾回收的,C++需要手动内存管理,支持析构函数,Java没有析构函 ...
保存知乎答案制作电子书
184d5613b7d1f40c9857b7bf904a8fe3987e3512d3b471937a527ff920c57d6a07391d869fe6d05c2b4de5bde25bd5ed6b434a1cf941b7ece664725f8778ddef9dac4ce3b4e7c208d7f1c855ef69d6853803742646cf2c91fe9abb35fe0e59c1f54c77424bc947ff42e4142b18e6c9830f17ec675835b4a9aa6c220bf28f625005649646f549b4215b279ee409e0a31ff600fe67c3e28f60bf6a7be259ab8bf6e3a2fe9163eb6390f91c8135e0521ad5cdd3aad4713a128b2f6c7699f1c7ed4c9d07433551f0c16cd9fec59ce04641469dcd9f984bd0e65407f63ace473718e8d384f73f65579a5adffafeeab78a9b80a96e15e8e95b36805 ...
JVM 性能监控与调优
相关概念性能监控一种以非强行或者入侵方式收集或查看应用运营性能数据的活动。
监控通常是指一种在生产、质量评估或者开发环境下实施的带有预防或主动性的活动。
当应用相关干系人提出性能问题却没有提供足够多的线索时,首先我们需要进行性能监控,随后是性能分析。
GC 频繁
CPU load 过高
OOM
内存泄漏
死锁
程序响应时间较长
性能分析一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性。
性能分析是针对性能问题的答复结果,关注的范围通常比性能监控更加集中。
性能分析很少在生产环境下进行,通常是在质量评估、系统测试或者开发环境下进行,是性能监控之后的步骤。
打印 GC 日志,通过 GCview 或者 GCEasy 来分析日志信息
灵活运用,命令行工具,jstack、jmap、jinfo等
dump 出堆文件,使用内存分析工具分析文件
使用阿里 Arthas,或 jconsole、JVisualVM 来实时查看 JVM 状态
jstack 查看堆栈信息
性能调优一种为改善应用响应性或吞吐量而更改参数、源代码、属性配置的活动,性能调优是在性能监控、性能分析之后的活动。 ...
JVM 字节码与类的加载
案例分析非静态成员变量赋值顺序:默认初始化 -> 父类 -> 显式初始化 -> 构造器初始化
1234567891011121314151617181920212223242526272829303132333435363738public class Demo16 { public static void main(String[] args) { FatherClass f = new SonClass(); // 属性无多态性,当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性 System.out.println(f.x); }}class Father { int x = 10; public Father() { this.print(); x = 20; } public void print() { System.out.print ...
高性能MySQL
并发控制处理并发读/写访问的系统通常实现一个由两种锁类型组成的锁系统。这两种锁通常被称为共享锁(shared lock)和排他锁(exclusive lock),也叫读锁(read lock)和写锁(write lock)。
锁定策略是锁开销和数据安全性之间的平衡。
表锁(table lock)
行级锁(row lock)
开销小
开销大
并发度低
并发度高
只有没有人执行写操作时,其他读取的客户端才能获得读锁,读锁之间不会相互阻塞
允许多人同时编辑不同的行,而不会阻塞彼此
事务特性ACID
原子性(atomicity):一个事务必须被视为一个不可分割的工作单元
一致性(consistency):事务不能破坏关系数据的完整性以及业务逻辑上的一致性
隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。较低的隔离级别通常允许更高的并发性,并且开销也更低
隔离级别
脏读
不可重复读
幻读
加锁读
READ UNCOMMITTED
是
是
是
否
READ COMMITTED
否
是
是
否
REPEATABL ...
论文记录2
10d79030e8222445804370796b90fca1b3149e2c2a0f36d6b4ea04e548758c2165ac99ae7bcbd97baaa5179904f2c9a3a74dff03769714d35260357a14012221452f7213e86a3a02c92b95d096e0b22b73ad7894363035b7abfa8546c0259103d549071d77a6d6db11ebe3db1f3fa48d30c68dd9919bfec4b01b7feeb7c42d2ed67ee831776a5186f9fef9ee36292fa2517fd074be5d7c3b659b25acc436453b136770d7d022f74ed70def6696b55764de9f1a4fb270a226c9dc716996d3d4e98464344715621ea7df30aa826a5a2f324178a3b9e8aa514ed0357cbddcf0f0ff5d6c6c85ec0dafe21f8d588a7c8adc16d16bdc075af9ab304 ...
JVM 内存结构与垃圾回收
架构模型指令集架构包括:基于寄存器的指令集架构、基于栈的指令集架构(JVM 所采用)
基于寄存器架构
传统的 PC 所用
指令集架构完全依赖硬件,可移植性差
性能优秀,执行高效
花费更少指令完成一项操作
一地址指令、二地址指令为主
基于栈架构
设计实现简单,适用于资源受限的系统
使用零地址指令
执行过程依赖于操作栈,不依赖硬件,可移植性好
指令集小,编译器易实现
实现同样的功能需要更多的指令,性能下降
加载与运行概览
class 文件的加载
此部分与JVM 类的加载配合学习
Loading在这个阶段,JVM 会查找并加载类的二进制数据。类的二进制数据可以来自于本地文件系统、网络、或者其他的来源。在加载阶段,JVM 将会执行以下操作:
通过类的全限定名来定位和打开类文件
读取类文件的字节流数据,并将其转换成 JVM 内部的数据结构
为该类创建一个 java.lang.Class 对象,该对象包含了类的静态数据、方法以及其他的相关信息
将加载的类信息存放在方法区
Linking链接阶段将已加载的类与其他类和资源关联起来,并进行一些校验和准备工作。包含以下三个步骤:
验证(V ...
论文八股黑话
10d79030e8222445804370796b90fca13e477bb55bd8c706f4e41a72ef10559d12cfd932ef6e9832057816558081ec76e252e660ca2b07546c08f126269743282f69f157cc6b1c3abea2ffe06517611daf624889b41fc1e660f4da61c345b88920c41bb74f2c272350f7f6b4674917c671ddca4ec808594644b02d76d675d7d26fc7e1437330c944509dcabe9ec5d47255c3fb75b5924bde1844e663757c1705510ad14ed2c117aa390732c3c4d961d2541cbc5328ec3d91e56fb458d6c0d6c1aa9bdcfec3d6654aa1798df9a0095b16a5d13bdb4a02ce030d8be0ccdc779826bf04117ea766961de8e9780a212e18fa66fa13e864a1be8aa ...
利用JSDelivr和Github Action白嫖CDN
[toc]
在这篇文章中提到了免费图床 sm.ms 的不稳定性,虽然可用动态生成的方式画简单的图表,但对于复杂的图片,图床是必要的,由于对国内图床的不信任以及国外图床的不稳定性,选择用发布 NPM 包的方式白嫖 CDN 加速。
jsDelivr 与 NPM
jsDelivr由ProspectOne维护的公共库,使用的融合 CDN 技术,由 Cloudflare、Fastly、StackPath、QUANTIL 等 CDN 供应商提供了全球超过 750 个 CDN 节点。jsDelivr 在中国大陆也拥有超过数百个节点,因为 jsDelivr 拥有正规的ICP 备案,解决了中国大陆的访问速度优化,实现真正的全球极速低延迟体验。jsDelivr 是免费的、不限制带宽的,可以加速 NPM、Github 内的文件。
同时也可利用国内外各大厂商提供的镜像 CDN,如知乎、饿了么、Unpkg等
eg:
https://npm.elemecdn.com/gdpooo@0.0.1/rawimg/0008.webp
https://gcore.jsdelivr.net/npm/gdpooo@0. ...