- 博客(15)
- 收藏
- 关注
原创 笔记摘抄-什么是进程?
经典定义:一个执行中程序的实例 系统中的每个程序都运行在某个进程的上下文中。上下文是由程序正确运行所需的状态组成。这个状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开文件描述符的集合。——选自《深入理解计算机系统(第三版)》 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至...
2019-10-27 22:19:11
287
原创 clojure构件-元数据应用
Java类型提示 在Clojure中调用Java方法时,常常遇到Java类型提示这种元数据,保存在元键 :tag中。因使用频繁,所以有自己的读取器宏:^symbol 通过上图可知,定义了方法string-length,方法类其实是调用Java字符串的length方法。定义了两次string-length方法,不同之处在于第二次通过元数据,显式的指明了参数的Java类型。对于Clojure来说,并...
2019-10-27 21:17:15
289
原创 clojure构件-元数据
元数据 元数据是“关于数据的数据”。Clojure支持用其他数据来标记数据(例如映射、列表和向量),而不改变被标记数据的值。这意味着具有不同元数据的相同值在比较时仍是相等的。 元数据总是映射 用法: 使用with-meta绑定 上图定义了变量font-meta,绑定了元数据信息:meta1和:meta2 使用简写方法:**^{}**读取器宏来定义元数据 上述两种定义元数据的方法除了形式...
2019-10-20 22:47:27
261
原创 MySQL-MySQL架构与历史
MySQL逻辑架构 连接管理与安全性 每个客户端连接在服务器都拥有一个线程,这个连接的查询都在这个线程中进行,而服务器会事先缓存这些连接,以便于客户端连接时,不用新建或销毁连接 连接时,会对其进行用户名和密码的验证,通过后,还会验证其基于某个特定查询的权限 优化与执行 MySQL会解析查询,建立自己的数据结构,并对其进行各种优化,包括重写查询、读取表的顺序以及选择合适的索引等,用户可以通过关键字...
2019-10-17 14:33:51
195
原创 clojure-程序流程二
函数式循环 while loop/recur Clojure没有传统的for循环,程序可以通过使用高阶函数实现类似的行为 Clojure版本的循环流程使用loop和recur 上图定义了一个函数fact-loop 传入参数n 然后loop循环 首先通过let形式,将n绑定到current,将1绑定到fact 之后通过if判断current是否等于1 等于1则返回fact 如果不等于1...
2019-10-15 23:30:23
197
原创 clojure-程序流程一
条件 if if形式接受一个测试表达式,对其求值以确定下一步操作 if-not cond when,相当于if和隐含的do when-not 逻辑函数 and 接收0个或多个形式,按顺序求值,如果任何一个返回false或nil,则返回该值,如果所有形式都不返回false或nil,则返回最后一个形式的值 or 接收0个或多个形式,按顺序求值,如果任何一个返...
2019-10-13 21:20:40
176
原创 clojure-程序结构
函数 Clojure是一种函数式语言,则意味着函数: 动态创建 作为参数传递给函数 从其他函数中返回 作为值保存在其他数据结构中 函数定义,使用宏:defn,也可以拆分为def 、fn,fn也用于定义匿名函数 可变参数数量,参数列表中使用**&**符号 let形式,将符号和某个值绑定,从而引入局部变量 do的副作用 对于函数来说,唯一的行为就是计算一个值并返回。调...
2019-10-08 22:52:43
203
原创 "深入拆解java虚拟机"笔记-Java的基本类型
严格来说,Java不算是纯粹的面向对象语言,它引入了八个基本类型,来支持数值计算,因为这能在执行效率以及内存使用上有所提升。 在Java虚拟机中,boolean类型被映射成int类型,false为0,true为1。这是一个正向的映射过程,不能反向认为0为假,1为真,除非你直接修改字节码文件,否则不能逆向推 Java的基本类型都有对应的值域和默认值 在局部变量区中,boolean char byt...
2019-10-08 21:39:54
191
原创 clojure-数据结构
nil、真值和假值 Clojure的nil等价于Java中的null和Ruby中的nil。在nil值上调用一个函数可能导致NullPointerException异常 除了false和nil之外,其他都被视为真值 字符和字符串 Clojure使用读取宏反斜杠来表示字符,如\a或\b 字符串使用双引号表示 数值 大部分时候,在Clojure中使用的数值都是64位整数或64位浮点数。范围较小的...
2019-10-07 17:04:43
419
原创 "深入拆解java虚拟机"笔记-Java代码是怎么运行的
为什么java要在虚拟机里运行? 语法非常复杂,抽象程度很高。直接在硬件运行不现实,因此需要转换 通过编译器将Java程序转换成虚拟机所能识别的指令序列-Java字节码。 虚拟机执行时,转换成机器识别码 虚拟机的好处 在不同系统平台上提供软件形式的虚拟机,一旦程序被编译成字节码,则就能实现“一次编写,到处运行” 带来了一个托管环境,提供了各种处理 自动内存管理和垃圾回收 数组越界、动...
2019-10-03 18:11:52
187
原创 "深入拆解java虚拟机"笔记-为什么要学习java虚拟机
我如何学会停止恐惧,并且爱上java虚拟机 学习java虚拟机的本质,更多是了解java程序是如何被执行且优化的 了解java虚拟机有以下好处: java虚拟机提供了许多配置参数,我们可以最优化匹配运行参数 java虚拟机本身是一种工程产品,会存在一些bug。学习它,可以规避bug,甚至找出问题来源 java虚拟机拥有最前沿、最成熟的垃圾回收算法实现,以及即时编译器实现。学习它,了解背后的设...
2019-10-01 19:44:04
256
原创 clojure-初始介绍
clojure是一门基于jvm平台的函数式编程语言,是lisp方言的一种,继承了lisp的大部分风格,且能够和java进行调用,被称为现代化的lisp语言 交互式命令行REPL R(read)、E(evaluate)、P(print)、L(loop) clojure程序通常不需要一次性全部输入,而是通过REPL能够输入一个表达式代码则可以立刻验证 REPL启动 安装jdk,版本1.7+ ...
2019-09-28 22:21:10
826
原创 近期读书计划
沉淀才是最好的爆发 这是最近突然福至心灵而体会到的一句话,因此给自己定个长期分步骤的读书计划,每次读书以一季度3个月为限,读书量不超过三本(说实话,三本拿不准能不能读完,以第一次读完后的结果衡量) 每3个月做一次读书总结,期间读书笔记若干。 就这样吧,算是立个flag,此篇博客也会一直跟踪记录后续每次的读书书单和调整的计划 2019.03.36书单 Java并发编程实战 鸟哥的Linux私...
2019-03-26 22:20:29
260
原创 docker容器——springboot项目发布成jar包
# springboot项目打jar包 对于打jar包运行,我一开始以为只要使用ide的导出功能,导出为可执行的jar包文件就行了,但是实际上,却出现了似乎解决不了的问题。 使用的ide是spring tool suit,导出的jar在java -jar命令运行时,报错提示:没有主属性清单 对于这个错误,其实网上的解决方法已经很有很多了,我这里只是列举下原因和应该有效的解决方法: 这个问题99%的...
2018-12-22 23:36:14
1049
原创 go语言学习 笔记1
学习一门编程语言,对于我来说,利益一点是为了挣钱,高尚一点是为了体会不同语言之间的设计思想的区别和相同,以此来训练自己的思维。对于已经习惯了java的我来说,思维的训练对我来说,尤其重要。因此开始学习这门语言,希望在这门语言早期发展的时间里,能有一个相对好的学习历程
2018-11-17 00:00:49
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅