Neo4j 与 Cypher 基础
简介 Neo4j 是用 Java 实现的开源 NoSQL 图数据库。从2003年开始开发,2007年正式发布第一版,其源码托管于 GitHub。 与常见的关系型数据库不同,Neo4j 基于图图结构来表示和存储数据,并提供了申明式的查询语言 Cypher 来处理图数据。Neo4j 实现了专业数据库级别…
创建线程的方式打开记事本
创建线程的方式打开记事本 今天操作系统课老师讲到进程,提出了一个有趣的小实验:能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣,姑且写一个玩玩( 头文件 <windows.h>:包含了 Windows API 的核心功能。 <…
深入理解 JVM 之——字节码指令与执行引擎
类文件结构 Write Once,Run Anywhere 对于 C 语言从程序到运行需要经过编译的过程,只有经历了编译后,我们所编写的代码才能够翻译为机器可以直接运行的二进制代码,并且在不同的操作系统下,我们的代码都需要进行一次编译之后才能运行。 而 Java 不同于 C,由于 JVM 内置了解释…
深入理解 JVM 之——垃圾回收与内存分配策略
垃圾回收策略 说起垃圾收集(Garbage Collection,下文简称GC),有不少人把这项技术当作Java语言的伴生产物。事实上,垃圾收集的历史远远比Java久远,在1960年诞生于麻省理工学院的Lisp是第一门开始使用内存动态分配和垃圾收集技术的语言。 回收三问 哪些区域的内存需要回收? J…
深入理解 JVM 之——Java 内存区域与溢出异常
本篇为深入理解 Java 虚拟机第二章内容,推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C++ 功底。 该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm 运行时数据区域 Java 虚拟机在执行…
深入理解 JVM 之——动手编译 JDK
本篇为深入理解 Java 虚拟机第一章的实战内容,推荐在学习前先掌握基础的 Linux 操作、编译原理基础以及扎实的 C/C++ 功底。 该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm 构建编译环境 系统准备 在官方文档上要求编译 OpenJ…
浅谈 Java 中的 Lambda 表达式
Lambda 表达式是一种匿名函数,它可以作为参数传递给方法或存储在变量中。在 Java8 中,它和函数式接口一起,共同构建了函数式编程的框架。 什么是函数式编程 函数式编程是一种编程范式,也是一种思想。 它将计算视为函数求值的过程,并强调函数的纯粹性和不可变性。在函数式编程中,函数被视为一等公民,…
自动拉取 GitHub 仓库更新的脚本
自动拉取 GitHub 仓库更新的脚本 由于将 HAUE-CS-WIKI 部署到了我自己的服务器上作为国内镜像站,每次在源站更新后都需要手动拉取镜像站的更新实在是太麻烦了,因此产生了编写该脚本的需求( 读者可根据该脚本思路编写属于你自己的定时任务脚本。 脚本思路 编写脚本文件,能够执行 git pu…