自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 算法基本概念

算法、算法时间复杂度

2024-04-04 17:50:49 660 1

原创 如何学习与学习的本质

立刻开始做,定时25分钟,排除一切干扰。专注25分钟,不看做了什么,只要保持25分钟集中注意力就行。奖励市整个过程中最重要的部分,当你在期待奖励的时候,你的大脑会帮助你更好地集中注意力。把工作拖到最后一分钟去做,你用于反复练习的时间会变少,用于睡眠并产生新突触的夜晚也变少,所以无法很好低回忆起细节。如果你习惯于拖延,就会使学习变得愈发困难,因为当你真的定下心学习市,你的时间已经变少,你会感到压力。拖延会使你没有时间去好好学习,而且你会消耗精力去担心它,这是一种双输的局面。

2023-04-05 22:09:30 347

原创 Integer的特性

int 类型是java中常见的基本类型。但是最近我发现在int的使用有一些不易掌握的特性,在不深入了解内部原理情况下,容易判断错误。1、Integer 真是引用类型吗众所周知,Integer作为int包装类是引用类型。但是请看下面这段代码,最后输出是true。Integer a=127;Integer b=127;System.out.println(a==b);2、-2147483648在数学意义上,绝对值是非负数。但下面代码取绝对值的输出还是-2147483648 int tm

2021-10-17 17:12:50 412

原创 谈谈对REST的理解

什么是RESTREST是表现层状态迁移(REpresentational State Transfer)的缩写。但它省略了主语资源(Resources),所以全称是资源表现层状态迁移(Resources Representational State Transfer)。资源(Resources)所谓资源指的是网络上的实体,或者说网络上的一个资源,它可以是一段文本,音频,视频,图片,或...

2018-04-20 00:08:17 1769

翻译 redis的基本数据类型详解(一)

Redis 不仅仅是一个简单的键值对存储,它实际上是支持多种数据类型的数据结构的服务器。当其他传统的键值存储还在处理string类型的key和value时,redis 已经不仅仅支持简单的key-value存储, 它可以处理许多复杂的数据类型。二进制安全的stringLists: 有序的string链表Sets: 去重的容器Sorted Sets: 与Sets大致相似,但不同的是, ...

2018-03-30 23:04:37 323

原创 栈的简单应用

栈的特点是后进先出。栈的应用场景与这个特点息息相关。 1. 数制转换 N=(N div d) x d+N mod d 其中, div 相除取整, mod 相除取余public class NumerationSystemConversion { private final static NumerationSystemConversion conveter = ne

2017-10-29 16:06:21 394

原创

通常,栈是限定插入和删除,只能在表的“端点”进行线性表栈是限定仅在表尾进行插入或删除的线性表,通常称其表尾为栈顶,表头为栈底。栈为后进先出(Last In First Out)的线性表 LIFO表。栈的应用数制转换括号匹配的校验行编辑程序问题

2017-10-24 22:40:07 359

原创 线性表

线性表示一种最简单的线性结构。 简而言之,一个线性表示n个数据元素(a1,a2,… ,ai,… ,an)的有限序列。称i为ai在线性表中的位序。线性表的顺序标识指的是用一组地址连续的存储单元依次存放线性表的数据元素。插入元素的平均情况 假设在第i个元素之前插入的概率为Pi,则在长度为n的线性表中插入一个元素所需移动元素次数的期望值。 假设在每个位置的插入概率相同, 则E=n/2。线性链表

2017-10-17 23:21:48 305

原创 数据结构与算法的基础概念

数据结构数据结构的形式定义Data_Structure =(D,S) 其中:D是数据元素的有限集 S是D上关系的有限集数据逻辑机构的分类线性结构树形机构图结构和网状结构集合结构数据的存储结构顺序存储结构 整个存储结构中只含有数据元素本身的信息链式存储结构 用附加信息(指针)表示后继关系算法算法的定义算法是对特定问题求解步骤的描述算法=控制结构+原操作一般

2017-10-15 21:16:59 583

原创 Simple Thoughts

天道酬勤,思者常新;博观约取,厚积薄发;心如止水,气贯长虹。做事心静很影响效率,若能心无旁骛的专注,那真是做事的最好的心态。但现实往往太多琐杂之事, 往往容易分散注意力。所以,做事的时候,能调节下心态,还是很有必要的。抱怨是毫无意义的,无论于事于己,影响做事的心态,极易化解自己的动力。 抬脚向目标走,才是达成目标的唯一途径,舍此之外,别无他法。觉得难么,难,所以放弃吧,又不死心。那硬着头皮走吧,沉

2016-10-15 10:16:31 451

原创 JDK自带的小工具

Summary 名称 主要功能 jps JVM Process Status Tool 显示指定系统内所有的HotSpot 虚拟机进程 jstat JVM Statistics Monitoring Tool, 用于收集HotSpot虚拟机各方面的运行数据 jinfo Configuration Info for Java, 显示虚拟机配置信息 jmap Mem

2016-10-09 15:49:16 601

原创 理解JIT 编译器

前言本文尝试用浅显的语言, 解释JIT的概念和基本原理,让读者明白JIT的运行方式和作用。最后,附上关于JIT的代码样例,帮助大家更好理解JIT。本文使用JVM虚拟机为Hotspot ,一切分析都在Hotpot上。如有不对的地方,欢迎指正。JIT简介JIT 是just in time 的缩写,即时编译编译器。当JIT编译启用时, JVM读入字节码文件解释后,将其发给JIT编译器。JIT编译器将字节码

2016-09-24 16:24:02 763

翻译 ElasticSearch:官方入门教程之前言

前言原文链接回顾整个历程,有许多激动人心的时刻,如发布的开源项目的第一个版本,如IRC群聊的初次创建。在这些这重要的时刻, 你总是一个人期待着第一个用户的到来。至今那些日子我仍历历在目。

2016-09-23 00:10:37 304

原创 垃圾收集器(整理版)

垃圾收集器是内存回收的HotPot具体实现。垃圾回收方法见GC收集算法 GC收集器 Serial ParNew Parallel Scavenge Serial Old Parallel Old CMS 应用内存区域 新生代 新生代 新生代 永久代 永久代 永久代 是否是多线程 否 是 是 否 是 是 诞生JDK

2016-09-18 16:30:05 402

原创 Java锁机制 悲观锁和乐观锁

锁的存在,是为了解决在并发环境下,数据的一致性问题。锁机制保证了程序不会出现,脏读,冲突等情况。先介绍下,悲观锁和乐观锁的基本描述。悲观锁正如其名,当出现在多用户的并发环境中时, 它对数据出现并发冲突,持保守态度(悲观)。它假定一定出现冲突,所以在数据处理过程中,将数据锁定,使是数据处于独占状态。乐观锁乐观锁的理念与悲观锁相反, 在多用户的并发环境中,它对数据出现并发冲突,吃积极态度(乐观)。在数据

2016-09-18 14:35:24 1063

原创 谈谈计划

大家都知道做事要有条理,有计划,但往往事不遂人意。计划制定后,有时候赶不上变化,有时候脱离实际导致无法执行,不管什么原因, 最终的结果都是计划没能执行。而这样的情况,对我来说是往往是一种常态。一次又一次没能按计划做事后,我都有点怀疑是否有必要制定计划或者说制定计划只是一厢情愿。 但最近我对计划的执行和安排又有新的理解。计划赶不上变化事物环境都在时刻发生变化,没什么是一成不变的,导致预期往往与实际脱

2016-09-18 13:49:54 486

转载 有效的沟通

经常会进行跨团队和跨公司间的沟通,甚至还有异地沟通,工作的大部分时间都会花在沟通上,所以有效沟通非常关键。什么是沟通百度百科上说,沟通是人与人之间、人与群体之间思想与感情的传递和反馈的过程,以求思想达成一致和感情的通畅。 卡内基说,所谓沟通就是同步。中国古代对沟通的解释是挖沟使两水相通。所以我也认为沟通就是信息的双向同步。何为有效沟通百度是这么解释的,所谓有效的沟通,是通过听、说、读、写等载体,通过

2016-09-15 10:16:00 402

原创 Java锁机制 自旋锁(spinlock)剖析

Spinlock 介绍线程通过 busy-wait-loop 方式来获取锁, 任何时刻只有一个线程能够获得锁, 其它线程忙等待知道获得锁。应用场景spinlock 不会有线程状态切换,所以响应更快。使用spinlock时, 临界区要尽量短,不要有显示或隐式的系统调用。如读写文件等操作。 临界区:指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,当有线程进入临界区段时,其他线程或是进

2016-09-13 22:16:37 5458

原创 Java AtomicInteger

在java中,对基本数据类型的变量的读取和复制操作是原子性操作。 但是像x++,y=x , 诸如此类的操作却不是原子性的需要考虑并发问题(原因见多线程环境中的原子操作)。对此类操作同步问题,可以采用synchronization,lock 等方法解决,但是这边介绍concurrency package 下的AtomicInteger。Java AtomicInteger Examplepackag

2016-09-11 11:20:45 374

原创 多线程环境中的原子操作

什么原子操作Atomic operations are performed in a single unit of task without interference from other operation。原子操作就是不可再分的操作。换句话说,一个操作或者多个操作要么全部执行并且执行的过程中不会被任何因素打断,要么就都不执行。怎么理解不可再分,在CPU层面, 它是原子性的我们从一道试题说起以下多

2016-09-11 10:28:31 489

原创 Java多线程基础

线程的基本概念通过与进程的比较,来理解线程的概念。 一个进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享线程中的资源。Java线程的创建Java提供了两种方式创建Thread。 - 实现 java.lang.Runnable

2016-09-11 09:52:27 271

原创 Git与SVN的比较

Git目前流行的版本管理软件,许多开发者都用过SVN,在他们转向git时都会有疑问, 为什么要用git, 和SVN有什么区别呢?Git和SVN核心区别Git是分布式的,每个Git都是一个版本库,在无网络的情况下, 你也拥有所有功能, commit, merge等。 SVN是集中式的, 每个开发者其实就像个客户端, 必须在网络环境中使用, 本质上,所有人都使用的是一个版本库。 这就引申出,如果

2016-08-24 22:53:26 537

原创 Eclipse中使用GIT(二):My First Commit

在之前,我们已经搭好git环境。 那么现在我们尝试,向github提交项目。First, we create a new java project and add to local git repository by share project aciton. [Team -> Share Project ] If you don’t have local repository, you ne

2016-08-21 10:20:39 452

原创 Eclipse中使用GIT(一):配置和安装GIT

在Eclipse中集成Git首先,安装在Eclipse中安装EGit插件 EGit插件地址:http://download.eclipse.org/egit/updates 或者选择下载最新版本的eclipseNEO, 已经集成了Git。现在你已经有了Git, 下图是配置界面,你可以做一些自己的配置。 连接 Github你需要有github账号生成SSH密钥, 用于安全认证第一点

2016-08-17 22:56:28 842

原创 垃圾(GC)收集算法

GC的三种主要算法标记-清除复制标记-整理1.标记-清除 基本思路:算法分为标记和清除两个阶段, 首先标记所有要回收的对象,然后在清除阶段统一回收。 优缺点: 1. 效率问题,标记清除阶段效率都不高。 2. 空间问题,清除后产生大量不连续的内存碎片,不利于大对象内存的分配2.复制 基本思路:将内存分为大小相等的两块,只使用其中

2016-08-11 00:16:06 324

原创 [LeetCode] largest Rectangle In Histogram

Largest Rectangle in HistogramGiven n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

2016-08-04 11:34:39 252

原创 GC在堆和方法区的内存回收

对象的存活判断对象是否存活,主流实现是可达性分析。 可达性算法的基本思路,通过一系列为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain), 当一个对象到GC Roots 没有任何引用链相连时,相当于图论的从GC Roots不可达,则这个对象不可用。引用类型 -* 强引用* 只要强引用还存在,垃圾收集器永远不会收掉被引用的

2016-07-31 20:47:35 5826

原创 JVM常见内存溢出问题归纳

OutOfMemoryError发生有三种比较常见的情况:堆溢出,简单说就是创建了太多的实例对象,导致内存溢出 OutOfMemoryError栈溢出, 栈的深度不够或者多线程导致栈内存不足,导致内存溢出 StackOverFlowErrorOutOFMemoryError 方法区溢出, 方法区用于存放Class的相关信息,可能出现情况,java 反射创建了太多的类,导致内存溢出

2016-07-25 22:27:02 664

原创 JVM对象的内存布局和访问

对象在内存中的布局可以分为3块区域:对象头(Header)、实例数据(Instance data)和对齐填充(Padding)。对象头对象运行时数据 HashCodeGC分代年龄锁状态标志线程持有的锁偏向线程ID偏向时间类型指针(虚拟机通过这个指针来确定这个对象是哪个类的实例)HotSpot VM 的自动管理系统要求对象起始地址必须是8字节的整数倍,in other word, 对

2016-07-21 22:38:02 357

原创 JVM运行时数据区

JVM运行时数据区方法区和堆是所有线程共享的,而其他区域则是线程私有的。虚拟机栈区和本地方法栈虚拟机栈描述了java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧(Stack Frame)用于 存储局部变量表、操作数栈、动态链接、方法出口等信息。本地方法区也是类似。 此区域内有两种异常,1.如果线程请求的栈的深度大于虚拟机所允许的深度,throw StackOverFlowError Ex

2016-07-20 22:39:19 316

原创 kettle学习笔记(一)

kettle的基本概念 (1)转换,主要用来处理抽取、转换、加载各个阶段对 数据行的操作。(2)步骤,如读取文件、过滤输出行,数据清洗或者将数据加载到数据库。(3)跳,定义了一个单向通道,允许从一个步骤到另一个步骤流动。注意点 (1)当创建新跳的时候,需要记住跳在转换里不能循环。因为在转换的每个步骤都依赖前一个步骤获取字段值。(2)每个步骤都是一个独立的线程运行,所有步

2015-06-20 12:54:14 685

angular JS 类库

angular JS 类库,最新版,引入使用

2016-01-07

空空如也

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

TA关注的人

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