jk's Blog

No Start No End


  • 首页

  • 归档

  • 分类

  • 标签

  • 搜索

【Java】 JVM 如何保存 Java 对象

发表于 2019-09-08 | 分类于 Java | | 2,056 | 8

前言

本文主要讲解一下在 JVM 中如何保存 Java 对象以及 Java 对象指针压缩相关的东西。

JVM 体系结构

图片摘自 https://www.artima.com/insidejvm/ed2/jvm2.html

阅读全文 »

【Java 8】Lambda 表达式

发表于 2017-12-08 | 分类于 Java 8 | | 4,936 | 24

定义

Lambda(λ) 表达式是一种在 被调用的位置 或者 作为参数传递给函数的位置 定义匿名函数对象 的简便方法。下面是关于 Lambda 表达式的几个点:

  • 匿名(Anonymous) - 不像其他普通方法那样具有名字
  • 函数(Function) - Lambda 表达式不像普通方法那样属于某个特定的类,它是独立于类存在的。但是和方法一样,Lambda 表达式有参数列表、函数主体和返回值,还可能有可以抛出的异常列表。
  • 传递(Passed around)- Lambda 表达式可以作为参数传递给方法或者存储在变量中。
  • 简洁(Concise)- 无需像匿名类那样写很多的模板代码。
阅读全文 »

【Django】Django ORM 学习笔记

发表于 2017-06-24 | 分类于 Python | | 4,643 | 21

前言

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。下面是一个示例。通过使用 ORM,我们只需要操作 Author 和 Blog 对象,而不用操作相关的数据库表。这里主要介绍一下 Django ORM 的相关使用。

阅读全文 »

【Vue】使用 Vue2 开发一个项目列表展示应用

发表于 2017-04-27 | 分类于 Vue | | 4,732 | 20

前言

一直没有找到一个合适的展示个人项目的模板,所以自己动手使用 Vue 写了一个。该模板基于 Markdown 文件进行配置,只需要按一定规则编写 Markdown 文件,然后使用一个 在线工具 转为 JSON 文件即可。下面是该项目的在线地址和源码。本文主要记录一下项目中用到的相关知识。

在线演示    源码

阅读全文 »

【Java 并发】详解 ThreadPoolExecutor

发表于 2017-04-22 | 分类于 Java 并发 | | 8,126 | 33

前言

线程池是并发中一项常用的优化方法,通过对线程复用,减少线程的创建,降低资源消耗,提高程序响应速度。在 Java 中我们一般通过 Exectuors 提供的工厂方法来创建线程池,但是线程池的最终实现类是 ThreadPoolExecutor,下面我们详细分析一下 ThreadPoolExecutor 的实现。

阅读全文 »

【Java并发】详解 AbstractQueuedSynchronizer

发表于 2017-04-15 | 分类于 Java 并发 | | 10,582 | 46

前言

队列同步器 AbstractQueuedSynchronizer(以下简称 AQS),是用来构建锁或者其他同步组件的基础框架。它使用一个 int 成员变量来表示同步状态,通过 CAS 操作对同步状态进行修改,确保状态的改变是安全的。通过内置的 FIFO (First In First Out)队列来完成资源获取线程的排队工作。更多关于 Java 多线程的文章可以转到 这里

阅读全文 »

【Java 并发】详解 ThreadLocal

发表于 2017-03-29 | 分类于 Java 并发 | | 4,803 | 22

前言

ThreadLocal 主要用来提供线程局部变量,也就是变量只对当前线程可见,本文主要记录一下对于 ThreadLocal 的理解。更多关于 Java 多线程的文章可以转到 这里。

线程局部变量

在多线程环境下,之所以会有并发问题,就是因为不同的线程会同时访问同一个共享变量,例如下面的形式

阅读全文 »

【应用】Markdown 在线阅读器

发表于 2017-01-09 | 分类于 应用 | | 4,470 | 21

前言

一款在线的 Markdown 阅读器,主要用来展示 Markdown 内容。支持 HTML 导出,同时可以方便的添加扩展功能。在这个阅读器的基础又做了一款在线 Github Pages 页面生成器,可以方便的生成不同主题风格的 GitHub Page 页面。

阅读全文 »

【HTML5】Canvas 内部元素添加事件处理

发表于 2016-12-06 | 分类于 HTML5 | | 1,973 | 9

前言

canvas 没有提供为其内部元素添加事件监听的方法,因此如果要使 canvas 内的元素能够响应事件,需要自己动手实现。实现方法也很简单,首先获得鼠标在 canvas 上的坐标,计算当前坐标在哪些元素内部,然后对元素进行相应的操作。配合自定义事件,我们就可以实现为 canvas 内的元素添加事件监听的效果。

源码    演示

阅读全文 »

【CSS 学习笔记】CSS元素和布局

发表于 2016-11-29 | 分类于 CSS | | 3,447 | 13

前言

本文绝大部分摘自 CSS 权威指南 第三版

基本概念

  • 正常流 (Normal Flow): 有时会被翻译为 文档流 或者 普通流,指文档从左至右、从上至下的显示内容,是传统的 HTML 文档布局。如果使元素不在正常流中,可以使用浮动(float)或者定位(absolute, fixed)。
  • 块级元素 (Block-level): 块级元素在普通流中会独占一行,即在其框之前和之后生成“换行”,因此处于普通流中的块级元素会按照从上到下的顺序垂直(vertically)排列。常见的 block 元素有 div, p, h1-h6, ul, li, canvas, table 等。完整的元素可以参考这里。通过使用 display:block,可以将元素生成块级框。
  • 内联元素 (Inline): 或者称为 行内元素。在普通流中的内联元素之间不会生成“行分割符”,因此处于普通流中的内联元素会首先按照从左至右的顺序水平(horizontally)排列,当父容器水平方向上的剩余宽度不足以放下新的内联元素时,会往下换行,在新行的中继续按照水平顺序排列元素。常见的 inline 元素有:a, img, button, br, input, label, select, textarea。完整的可以参考这里通过使用 display:inline 可以让元素变成内联元素。
  • 非替换元素 (non-replaced): 如果元素的内容包含在文档中,就成为非替换元素。 例如段落 <p>。
  • 替换元素 (replaced): 可以理解为嵌入元素,相当于一个占位符,解析时会被其他内容替换。例如 <img> 和大部分表单元素 <input type="radio">。
  • em: 1em等于 font-size 的设置值
阅读全文 »
12…4
Zhang Jikai

Zhang Jikai

No Start No End

36 日志
13 分类
18 标签
RSS
GitHub
Links
  • Shuai's Blog
  • Xukai
  • Leiquan
© 2015 - 2019 Zhang Jikai
由 Hexo 强力驱动
主题 - NexT.Mist