自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (8)
  • 收藏
  • 关注

原创 Web前端入门 - HTML JavaScript Vue

90年代初期,Web1.0,静态页面,不和服务器交互,网页三剑客指Dreamweaver、Fireworks、Flash2000年代中期,Web2.0,动态页面,HTML是网页的结构,CSS是网页的外观,JavaScript是网页的行为。Ajax、jQuery等技术。2010年代,移动互联网,响应式设计、单页面应用、前后端分离、TypeScript 、ECMA标准。React、Angular、Vue等MVVM前端框架。框架(web framework) :提供了整套的开发和部署网站的方式。

2024-01-31 21:54:42 1345 1

原创 《操作系统导论》笔记

线程:进程可以有多个线程,和进程类似,每个线程有自己的程序计数器、寄存器,线程切换会发生上下文切换。一个进程的每个线程有自己的栈空间,共享堆空间。共享数据以下代码,假设两个线程各执行一次mythread(),执行1000万次+1操作,那么预期结果应该是2000万。i < 1e7;i++) {这个例子假定,变量counter位于地址0x8049a1c。在这3条指令中,先用x86的mov指令,从内存地址处取出值,放入eax。然后,给eax寄存器的值加1(0x1)。最后,eax的值被存回内存中相同的地址。

2024-01-04 19:55:38 957

原创 HTML学习笔记

<!--HTML:超文本标记语言后缀为 .html 或 .htm标签推荐使用小写 --><!DOCTYPE html> <!-- 声明为 HTML5,不区分大小写 --><html lang="zh"> <!-- 根元素 --><head> <!-- 头 --> <meta charset="utf-8"> <!-- 元数据,编码格式 --> <title&

2021-05-23 23:31:05 180

原创 PHP 学习笔记

_construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __serialize(), __unserialize(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法。因为CGI效率低,但对配置很敏感,通常被用在开发和调试阶段。

2021-04-20 00:52:50 244

原创 《线性代数》学习笔记 1

1 方程组的几何解释二元一次方程组:{2x−y=0−x+2y=3\begin{cases}2x-y=0 \\-x+2y=3 \\\end{cases}{2x−y=0−x+2y=3​矩阵形式:[2−1−12][xy]=[03]\begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} =\begin{bmatrix} 0 \\ 3 \end{bmatrix}[2−

2021-02-15 23:38:44 275

原创 游戏服务器设计模式及算法

游戏循环游戏循环是一种典型的游戏编程范式,在游戏之外的领域很少用到。客户端游戏循环首先来看客户端的游戏循环,伪代码如下:while (true) { processInput() // 处理(用户、网络)输入 update() // 更新游戏状态 render() // 渲染}有两个相关的术语:游戏速度:游戏状态每秒更新的次数,即每秒调用 update() 的次数。FPS:Frames Per Second,每秒调用 render() 的次数。高性能的硬件支

2020-12-24 20:16:14 1272

原创 linux安装redis6并设为服务详细步骤

升级gccyum install tclgcc -vyum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsscl enable devtoolset-9 bash (临时生效)安装redis 6在官网查看最新版本,目前是6.0.9 (2020-12)wget https://download.redis.io/releases/r

2020-12-23 20:13:00 494

原创 VR产业及产品 2020-12

VR发展史VR(Virtual Reality)经历了三次热潮:第一次源于1960年代,确立了VR技术原理;第二次发生在1990年代,VR试图商业化但未能成功;目前正处于第三次热潮前期,以2014年Facebook 20亿美元收购Oculus为标志,全球范围内掀起了VR商业化普及化的浪潮。VR技术瓶颈硬件瓶颈:无法保证在轻便的硬件上实现足够的计算速度、存储空间、传输速率和续航能力图像技术瓶颈:图像识别技术不成熟,实时三维建模技术缺乏,精确定位技术误差大数据瓶颈:无差别图像视频识别需要极

2020-12-22 16:30:54 295

原创 Spring Cloud学习 01 微服务基础

包含内容Spring Boot 框架Spring Cloud 组件服务治理(Eureka)—— 服务注册与发现客户端负载均衡(Ribbon)微服务容错与降级处理(Hystrix)—— 微服务远程调用失败时的处理微服务API统一网关(Zuul)—— 路由映射和请求过滤功能分布式配置中心(Config)—— 包括配置动态刷新微服务调用链追踪(Sleuth)—— 调用链可视化分析、日志集中管理微服务消息驱动开发(Stream)微服务安全(OAuth及JWT)Docker 容器 —— Dock

2020-11-06 20:20:12 235 1

原创 总结 Java 不支持的语法特性

动态类型Java 是静态类型语言,不支持动态类型。不过 JVM 是支持动态类型的,Java的lambda表达式底层是用动态类型实现。函数柯里化(curry)又叫做部分求值,比如 sum(a, b),可以写作 sum(a)(b), sum(a) 返回一个方法,参数是 b惰性求值指表达式不在它被绑定到变量之后就立即求值,而是在使用该变量时再求值。如Haskell语言。元组比如 Python,可以实现多返回值和交换值。切片可以方便的操作列表,比如Go、Python。指针Java 不能直接操作

2020-10-30 15:45:34 672 1

原创 Java 协程:Loom Project 实战

Loom Project 是 OpenJDK 在2018年创建的协程方案,是在JVM层实现的有栈协程。到2020年9月为止,该项目还没有明确发布日期,目前可以下载 Early-Access 版本进行试用。和传统的Java线程相比,loom协程占用内存、CPU资源更少,支持百万数量级的并发。main.javaimport java.time.Instant;import java.util.List;import java.util.concurrent.*;public class main

2020-09-09 21:22:23 3622

原创 Java虚拟机6 内存模型、线程、锁

一致性问题高速缓存 (Cache)由于计算机的CPU与内存运算速度有几个数量级的差距,所以加入一层或多层高速缓存,作为内存与处理器之间的缓冲:将运算使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中。缓存一致性 (Cache Coherence)每个处理器内核都有自己的高速缓存,而它们又共享同一主内存,如下图:当多个处理器的运算涉及同一块内存时,可能导致各自的缓存数据不一致。为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议。内存模型:在特定的操作协议下,

2020-09-09 14:01:57 167

原创 JVM语言流行趋势

Google Trends(2004 ~ 2020.8)绿 Kotlin :类似Scala,但更简洁,部分特性已在最新的Java14、15中实现黄 Scala :语法较复杂,部分特性已在Java中实现蓝 Clojure :纯函数式语言, 基于Lisp,动态类型红 Groovy:脚本语言,动态类型...

2020-08-20 00:58:56 131

原创 Java虚拟机5 编译与优化

Java编译前端编译器:JDK的Javac,把java文件编译成class文件JIT(Just In Time)编译器:HotSpot的C1、C2、Graal编译器,运行期把字节码转变成本地机器码AOT(Ahead Of Time)编译器:Jaotc、GCJ等,直接把程序编译成目标机器二进制代码,不常用性能优化主要在JIT编译阶段前端编译编译过程:初始化插入式注解处理器。解析与填充符号表,包括:词法、语法分析。将源代码的字符流转变为标记集合,构造出抽象语法树。填充符号表。产生符号地

2020-08-19 18:37:55 226

原创 Java虚拟机4 方法调用原理、动态类型支持

栈帧栈帧是方法执行的基本数据结构栈帧结构包括以下几部分:局部变量表(Local Variables Table)存放方法参数和方法内部定义的局部变量,长度在编译时确定操作栈(Operand Stack)用于算数运算、或调用其它方法时传递参数(下图8-2)和返回值动态连接指向运行时常量池[插图]中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接方法返回地址保存调用者的程序计数器,用于方法正常退出后恢复调用者的状态附加信息如调式、性能收集相关信息

2020-07-27 01:08:02 282

原创 Golang 共享变量实现并发,互斥锁

竞态并发安全如果函数在并发调用时仍能正确工作,那么这个函数是并发安全的如果一个类型所有操作都是并发安全的,则称为并发安全的类型竞态指多个 goroutine 交错执行时有时不能给出正确结果互斥所 sync.Mutex读写互斥锁 sync.RWMutex内存同步延迟舒适化 sync.Once竞态检测器并发非阻塞缓存goroutine 与线程...

2020-07-06 02:21:27 1109

原创 11种服务器编程语言对比(附游戏服务器框架) 2020.06

各语言对比语言版本TIOBE排名垃圾回收类型系统性能Web后端非Web后端特性Java142是中Python3.83是动态中C++174高不适合Node.js147*是动态中PHP7.48是动态低不适合Go1.1412是中Ruby2.713是动态低不适合Rust1.4420高不适合独特的内存安全机制

2020-06-29 10:48:02 14872 1

原创 详解 Spring AOP LoadTimeWeaving (LTW)

LTW 可以解决的问题:对非spring管理的类进行依赖注入调用类内方法切面失效问题LTW 原理:程序启动时,在类加载期通过字节码编辑技术将切面织入目标类,这种方式叫做 LTW(Load Time Weaving)。JDK5.0 新增了 java.lang.instrument 包,它包含能对 JVM 底层组件进行访问的类 。 我们可以在启动时通过 JVM 的 java agent 代理参数获取 JVM 内部组件的引用,以便在后续操作中使用 。 借助 JDK 动态代理,我们可以在 JVM 启动

2020-06-22 21:37:36 2010

原创 Java虚拟机3 Class文件及类加载

文章目录Class 文件Class 文件Class文件是一组以8个字节为单位的二进制流,类似c语言的结构体,如下所示:有两种数据类型:无符号数和表。如u4表示4字节无符号数;表由多个无符号数或其他表组成。...

2020-06-20 15:16:50 224

原创 Golang并发:goroutine和通道

Go的两种并发模式goroutine 和通道(channel)实现的通信顺序进程(CSP)模式共享内存多线程模式goroutine和通道goroutinegoroutine指每一个并发执行的活动。main函数在主goroutine中执行。goroutine通过go关键字创建。go f() // 新建一个goroutine调用f(),go语句本身立即返回main函数返回时,所有goroutine直接终结,程序退出。除此之外,一个goroutine不能直接停止另一个goroutine,但可以

2020-06-07 21:40:50 272

原创 Java虚拟机1 内存管理、GC,包括 Shenandoah ZGC

JavaJVM HotSpot 虚拟机, JRockit,IBM J9, Android Dalvik, ART(Android Runtime)内存JVM数据区:程序计数器: 当前线程执行的字节码指令的地址,执行Native方法时为空虚拟机栈: 局部变量表 方法出口等异常: StackOverflowError OutOfMemoryError-Xss1m本地方法栈: 执行Native方法的栈异常: StackOverflowError OutOfMemoryError-

2020-05-31 06:22:13 498

原创 Java虚拟机2 G1垃圾回收详解, 参数, 日志

垃圾回收(GC)算法哪些对象需要被回收?引用计数可达性分析回收垃圾对象标记清除 Mark-Sweep标记复制 Mark-Copy标记整理 Mark-Compact分代收集新生代、老年代并行与并发其他GC概念根节点安全点记忆集写屏障/读屏障三色标记法分配内存指针碰撞空闲链表G1 垃圾回收(Garbage-First)堆内存G1采用分代回收,将整个堆拆成多个分区(Heap Region),一次只回收部分分区。一个分区既可以充当新生代可也以充当老年代。G1的分

2020-05-27 19:07:37 725

原创 Go语言接口详解、类型断言

Go语言的接口是隐式实现,即:对于一个具体的类型,无需声明它实现了哪些接口,只要提供接口所必须的方法即可。示例:package mainimport ( "reflect")// Mover 接口定义type Mover interface { Move()}// Stopper 接口定义type Stopper interface { Stop()}// 交通工具 接口定义type Vehicle interface { // 组合了 Mover 和 Stoppe

2020-05-18 02:13:37 376

原创 2019.3 编程语言排行榜

编程语言排行数据源于TIOBE , 自己整理的说明

2019-03-18 20:50:49 2721

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除