专注开发,架构知识
暂时未有相关通用技术能力~
阿里云技能认证
详细说明线程是轻量级的进程,进程可以说是线程的容器。线程是程序执行的最小单位。使用多线程而不是使用多进程进行并发程序的设计,因为线程的切换和调度成本远远小于进程。
JMM中主要是围绕并发过程中如何处理原子性,可见性和有序性三个特性来建立的。最终可以保证线程安全性,volatile和synchronized两个关键字又是我们最常碰到与最容易提到的关键字,这次放在一起来讲。
在未正确使用锁的时候,多线程的程序可能变的很容易出错,并且难以排查。而JMM则给我们一种规范,它描述了多线程程序如何与内存交互。 与文无关 JMM大致描述: JMM描述了线程如何与内存进行交互。
最近一直都在写理论方面的东西,这篇也是理论,但这次也当做对ZooKeeper的一个小阶段总结,之前所提到的ZooKeeper都属于基础的部分,高级部分的进阶还需要一起共同探讨。
之前说了那么多配置信息,具体做的怎么样,还需要真正的获取ZooKeeper的运行时信息才行。这里介绍ZooKeeper的监控。 与文无关 有如下方式: 使用内置的四字命令来获取健康状态信息 使用JMX查看运行状态 使用Exhibitor 使用Sass 四字命令 最简单的监控方式就是使用ZooKeeper的四字命令,你可以直接通过telnet或者nc命令查看状态。
前面我们学习了ZooKeeper的理论部分还有编程部分,当然最开始也安装和运行了ZooKeeper的单机和集群模式,然而若想要最大化的利用ZooKeeper,我们需要配置合适的ZooKeeper参数和了解每个参数的作用。
前面说了ZooKeeper一些基础性的东西,包括客户端编程框架。这里我们来探索如何更好的运用ZooKeeper。 开始之前,我想先借用Linus Torvalds(Linux创始人)的一句话。
前面说了一些ZooKeeper理论上的内容,对于实践部分,想必都是跃跃欲试。这里我想主要介绍几个Java的demo来起到抛砖引玉的作用,Zookeeper客户端框架具体的细节部分若深入起来不是三言两语能解释的完的,我适当的说明一些,深入的研究还望一起努力。
前面介绍了ZooKeeper的一些基本特性,ZooKeeper入门,也安装运行了一个简单的ZooKeeper的例子。这此主要介绍ZooKeeper内部的一些工作方式理论部分。
配图 一位学长通过了阿里的面试,交接原工作。打算让我去他公司顶替原本他的工作,给我的薪资在厦门对于同期毕业的同学薪资大约是他们的2倍~3倍。 学长第一遍问我要不要去他公司的时候,我回答不方便过去。
一周的时间觉得很快,翻看自己的记录,这周又学了什么,有什么收获? 上半周主要在学习数据结构相关的知识,缺乏一些练习,理论学的较多,需要找时间实践一下 花了快几天的时间给电脑装各种软件,现在再看有用到的还剩下Zoomy,CmdTap,GridSTURA,PDFGuru,lyn等,有些软件用起来不错,能提升效率。
这个知识点你会弄错。 重写:两个方法有相同的名称和相同的参数,其中一个方法位于子类,另一个方法位于这个子类的父类中。重写让子类可以在父类的基础上实现跟你更多的功能,或者实现自己的功能。
Emum是在Java5中引入的新特性,从那开始,它被广泛的用在不同的Java应用中,相比于C和C++的Enum,Java的Enum功能更加强大。但是很多开发人员暂时还没意识到它的强大之处,在Enum的一些细节问题上把握的还不到位。
List,根据名字我们知道是有序的元素集合。先贴一张集合的关系图。这里我们分析LinkedList与ArrayList。 Collection结构 LinkedList与ArrayList 它们都实现了List接口。
面试高频问题,这里提供下参考。 HashMap结构图 目录 唠叨 解析思路 get方法 put方法 resize方法 唠叨 认真阅读了下HashMap的实现方式,也参考了网上别人的一些解析,个人觉得还是有些东西想说。
简述 StringBuilder 对比 StringBuffer StringBuilder是非线程安全 StringBuffer是线程安全的。 StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别: StringBuilder与StringBuffer的对象存储在堆中,String对象存储在Constant String Pool(字符串常量池) 它们两个是可变对象。
最近在学习数据结构,有几个网站能让我们更直观的理解各种数据结构。 https://www.cs.usfca.edu/~galles/visualization/Algorithms.
不同之处 像add,remove,contains,size等操作,HashSet比TreeSet有更好的性能。HashSet的时间复杂度为O(1),TreeSet的时间复杂度为log(n)。
忙着学习之前先停下来思考上周做了那些,有很多值得回忆与记录的地方,相比之前,一些变化。 上周 学习了《从0到1,设计电商平台-服务端》,《秒杀系统设计》,这两个是付费课程,不过总体来说都有收获。
电脑里存类很多PDF格式的电子书,都挺想看的,有什么好的软件能让自己专心看书呢? 阅读还是要靠自己,但是如果成为了只会收藏各种资料的人不太好。Mac上自带的阅读PDF工具,每打开一本书都要新开一个窗口,切换书籍做对比,标注等都挺不方便的。
一些网友应该有些博客的习惯,更高级写法的就搭建自己的网站,在自己的地盘写文章。由于自己比较懒,没有搭建网站,不过收藏了一些网站生成器,拿出来与大家分享一下。
HashMap与Hashtable的异同点 hashtable是线程安全的,hashmap不是。对线程要求不严格的情况下,hashmap的性能更好。 HashTable不允许null作为key值或value值,Hashmap可以允许一个null作为key值,同时允许多个null作为value值。
概览 这篇文章,我们打算探索一下Java集合(Collections)框架中Map接口中HashMap的实现。Map虽然是Collctions框架的一部分,但是Map并没有实现Collection接口,而Set和List是实现Collection接口的。
在步入社会的过程中,一些事情要仔细思考想清楚,想明白,有自己的原则,才不至于随波逐流,后悔当初。帮助人应该也包含挺多人生智慧的,不过目前我还是先按照自己的原则来处理。
Java IO是面试中常问到的问题. 参考图 输入输出流关系图 什么是IO流? 它是一种数据的流从源头流到目的地。比如文件拷贝,输入流和输出流都包括了。
这个知识点已经是老生常谈,快被写烂了,但是为了自己能理解的更清楚一点,还是选择整理出一篇自己的文章。 DNS( Domain Name System)是“域名系统”的英文缩写,主要作用就是将便于人类记忆的单词组合(如www.taobao.com),解析成不太容易记忆的数字组合(61.154.126.109)。
安全和性能考虑(字符串常量池)是String类不可变的主要原因。 案例 字符串对象被缓存在字符串池中,缓存的字符串被多个客户端共享,这时如果字符串可变。
在江湖中要练就绝世武功必须内外兼备,需要精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。
如何在老板眼皮子底下偷懒,还让老板觉得你在认真工作? Genact是一个很有趣的项目,它是一个无意义的项目活动期,可以在你偷懒的时候假装电脑在拼命工作。以疯狂的多任务处理技能给老板和同事留下深刻印象。
Linux使用某些软件的时候会产生日志文件,而这些软件本身对日志不进行分割或者压缩处理,久而久之会导致日志文件异常巨大,影响机器性能,配置不高的机器上尤为严重。
这个时代,写作能力越来越重要,文章写的好的人升职加薪,圈钱圈粉。虽然有很多工作对写作能力没有太强的要求,但文章写的好的人与写一般的人高下立分,写作也是提高自己竞争力的一种方式。
定义 访问者模式是一种从操作的对象结构中分离算法的方式。 它可以在不改变数据结构的前提下定义作用与这些元素的新操作。它遵循开闭原则。 Represent an operation to be performed on elements of an object structure.
春节玩了半个月,今天坐车回厦门。春运不可避免,有点像动物的大迁移。 车上人挤人,买个小板凳做的也不安生。每10分钟左右,就有人在过道走一趟,而人又这么挤,好像障碍走,步履艰难。
年前从北京回家的时候,第一次感受到春运的人数众多,在火车上人过道基本上处于无法行走的状态。自己在走道上站票7个小时,好在有皮箱还能坐会。 过年了,要买去厦门的火车票,发现想买的那一天都是无票的。
在007社区中,每周一篇1000字以内的文章算是工作量很小的事情,想想都没什么难度,但是实践起来发现由于各种原因,部分战友一周写一篇挺难的,没时间写,要花时间准备,不知道写什么等等。
换公司是说我的一个同事,即将辞职换一家新的公司,做了4年同学,大半年的同事,想提供一些最后的想法与建议。 他也是公司的初创成员之一,暂时离开公司并不代表人的能力有很大的问题,只好说是相互不合适,一些不太适合的点,我再提一次,希望在新的公司不存在这些问题,让自己做的更好。
Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。 Pandoc使用Haskell语言编写,以命令行形式实现与用户的交互,可支持多种操作系统。
当看到new关键字的时候,就会想到具体,而业务代码中充斥着太多的new关键字,一旦有变化或扩展,就必须重对代码进行修改,通常这样修改过的代码更难以维护和更新,而且更容易犯错。
遵循Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现,然后是私有静态变量,以及私有实体变量。很少出现公共变量。 对于函数,我们通过计算代码行数衡量大小。
别给糟糕的代码加注释——重新写吧 若编程语言有足够的表达力,就不那么需要注释——也许根本不需要。 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败,注意,失败。
在编程的早期,系统由程序和子程序组成,后来,在Fortran和PL/1的年代,系统由程序,子程序和函数组成。如今,只有函数存活下来。 函数的规则 短小 函数的第一规则是要短小,第二规则还是要更短小。
JSONP(JSON with Padding)是[JSON]的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的 元素是一个例外。
在开发web应用时,浏览器的安全策略慢慢的变严格,一些跨域的操作都无法在正常操作。而现在这个云时代,我们可能很多服务依赖第三方的服务厂家,这样就导致了应用要不可避免的进行一些跨域操作。
软件中随处可见命名,我们给变量,函数,参数,类,包。给源代码及源代码目录命名,给jar文件,war文件,ear文件命名,我们命名,命名,不断命名。既然有这么多命名,那么我们就有必要做好它。
想要自己的团队是由精英组成,却发现团队中有笨人。有时候希望自己的女朋友是仙女,最后却发现自己的女朋友总是有这样或那样的缺点。一起开做事情希望能相互信任,却发现大家都不再相信自己。
写前端页面的时候,移动端页面开发需要模拟触摸事件,在电脑上操作不太方便,使用物理机可以操作起来会更舒服。 但是在使用物理机触摸屏幕的时候,调试起来有有点不太方便,好在谷歌浏览器给我们提供了真机调试的功能。
上次介绍了Canvas自定义图片大小及蒙版与生成gif图,没有详细的说明如何生成gif图,生成gif图的过程也可以进行一些优化。 我们无需借助第三方库,直接使用canvas原生的api就可以完成很多的功能。
谷歌浏览器插件是一种小型的用于定制浏览器体验的程序。通过插件,可以自定义浏览器的一些行为来适应个人的需要,只要你会HTML,JavaScript,CSS就可以动手开发浏览器插件了。
失误有很多的种类,这次失误也许是着急所犯下的失误,也许是测试时间不够、不充分而留下的问题,多种原因,这次又失误了。/(ㄒoㄒ)/~~ 过程 这周周一~周五在优化App功能,周五晚上测试所有功能是否可用,测试到9点多,还有部分问题需要解决,9点多的时候我女朋友从泉州过来了,一方面要去见我女朋友,一方面有些东西需要把控,这时候心境就有冲突,处理事情不够完善。
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。