- 博客(63)
- 收藏
- 关注
原创 ArrayList 源码分析 (顺便复习序列化,单例)
一、Something about ArrayList- 每次添加超过限制,列表就会增加50%容量- 采用System.arrayCopy()复制到新数组- 列表可以按数组下标访问元素-get(i)/set(i)- remove时,需要复制移动元素,性能很差- 线程不安全,在多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一
2016-10-15 19:05:25
1066
原创 并发编程基础 Lecture Notes(四)
Monitor是另一种处理临界资源的机制。信号量的缺点:- 共享的变量对于所有进程来说是全局的,所有没有合理的保护机制,很容易误操作- 并发代码散乱分布在整个程序中- 一遇到mutual exclusion就要进行编码管道的优点:- 固定的共享变量对进程隐藏- 通过管道procedure来访问管道- 一次只允许一个进程在管道内进行操作,因为自动形成了mutual e
2016-09-25 19:36:49
460
原创 并发编程基础 Lecture Notes(三)
The flaws of busy waiting:- waste time reading locks- can't guarantee fairnessSemaphore: a special kind of shared variable that is manipulated only by two atomic operations P and V, the value of
2016-09-23 16:52:52
419
原创 并发编程基础 Lecture Notes(二)
Process && Thread && Program1. http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html2. process is the execution of a sequential program3. 进程独立享有内存地址空间,是资源分配的基础单位,而线程是CPU分配的基本单位。多
2016-09-19 15:23:41
504
原创 并发编程基础 Lecture Notes(一)
多个单核CPU VS 单个多核CPU每个单核CPU都有独立的电路和cache支持。而多核CPU共享一套芯片组,一套存储,因此,多核之间的通信看起来就变得比多个单核CPU开销要小。但是,数据的共享性又给多核CPU带来了分时的开销。Concurrency:a collection of programs is said to be concurrent if at a given point
2016-09-03 19:34:26
384
原创 JAVA8新特性 函数式编程Lambda
函数式编程:以处理数据的方式处理代码,这意味着函数可以被赋值给变量,传递给函数等,函数应该是第一等级的值。纯函数:对于给定的输入总会返回相同的输出,并且不会产生影响或者改变任何的程序状态http://www.ibm.com/developerworks/cn/java/j-jn10/lambda表达式,又被称为闭包或者匿名方法http://www.cnblogs.com/f
2016-08-30 13:17:37
5966
原创 JAVA基础 补充 内部类
内部类:可以将一个类定义在另一个类内部,允许你把一些逻辑相关的类组织起来,像是一种代码隐藏机制,内部类了解外部类并能与之通信。为什么需要内部类:package InnerClass;//普通内部类interface Printer { void PrintVal();} public class Test1 { private String outVal
2016-08-21 22:55:24
532
原创 10 JAVA 正则表达式
- 字符串匹配 match- 字符串查找 find- 字符串替换 replace相关类:java.lang.String- matches() 匹配整个字符串,而不是字符串的子串- find() 查找符合模式的子串,下次匹配是从不匹配的字符那个位置开始匹配- lookingAt() 每次匹配都是从字符串起始位置开始,与matches不同的是,它可以只匹配子串
2016-07-22 17:17:51
585
原创 Networking Programming (11) Stream
写blog前唱首歌,圈地自疯: 窗外的麻雀,在电线杆上多嘴 你说这一句,很有欠揍的感觉 java.io.* 包字节流 VS 字符流JAVA采用UTF-16,字符可以由多个代码单元组成构造字符流的时候,可以指定编码集合读取图片(字节) VS 读取汉字(字符)节点流 VS 嵌套流节点流对应数据源,例: File/Memory Array(byte、char)/Memory String
2016-07-14 19:41:13
591
原创 ThreadLocal & Reference
敌不动,我不动;敌若动,我就专门去公司上班,唱一整天歌和我同桌听,我很任性的~ThreadLocal介绍"This class provides thread-local variables. These variables differ fromtheir normal counterparts in that each thread that accesses on
2016-06-22 19:33:07
499
原创 09 JAVA 网络编程
一、概念1. 计算机网络:计算机+外围设备+链路-》分享资源和信息处理等2. 网络通信协议:不同的计算机不同的底层结构,网络通信协议相当于一系列标准,就像来自不同官方语言国家的两个人可以采用同一种语言进行沟通3. 网络通信接口:- 硬件装置,实现节点之间的信息传递,如网卡- 软件装置,规定双方进行通信的约定协议4. 分层:互不影响,灵活,利于拓展和实现5. OSI参考模
2016-06-19 18:51:18
365
原创 Networking Programming (1) 网络基础 上
故事的小黄花, 从我进化成智障那年就飘着~ 笔记还没写完 Additional: 有些IDE可以直接与代码存储库如Git,sourceForge等直接进行通信 TCP/IP存在的意义不同的操作系统,不同的底层物理结构,计算机通过使用共同的一组协议来实现通信(协议:一组明确的规则,比如数据的格式,数据怎么分包等) 分层 网络中的每台机器都称为node,拥有全部功能的计算机称为host。每个网络节
2016-06-08 09:04:14
1406
原创 00 Linux 基础预习(上)
一、系统分区1. 主分区,最多只能有4个2. 扩展分区,不能格式化和写入数据,数量只能有1个主分区 + 逻辑分区 = 43. 逻辑分区二、格式化硬盘分区后需要格式化才能写入数据(高级格式化,逻辑格式化):根据用户选定的文件系统,如FAT32,NTFS,EXT2,EXT4等,在磁盘的特定区域写入特定数据(在分区中划分出一片用于存放文件分配表,目录表等用于文件管理的磁盘空间,文
2015-09-07 02:16:43
2338
原创 08 JAVA 线程 内存模型(二)
一、volatile相当于对某个变量读写的原子操作,写就是修改数据后刷入主内存,而读就是把线程对应的本地内存置为无效,然后从主内存中读取共享变量~Assuming there are two threads A and B:- 当线程A写一个volatile变量,实质上是线程A向接下来将要读这个volatile变量的某个线程发出了消息- 线程B读一个volatile变量,实质上是线
2015-08-12 01:40:35
497
原创 08 JAVA 线程 内存模型(一)
一、介绍- 线程通信1. 共享内存2. 消息传递- 线程同步- 内存模型的抽象实例域,静态域和数据元素存储在内存中,堆内存在线程之间共享,但是局部变量,方法定义参数和异常处理参数不会在线程之间共享。JAVA线程之间的通信由JAVA内存模型(JMM)控制,它可以决定一个线程对共享变量的写入何时对另一个线程可见,即JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在
2015-08-11 21:03:22
446
原创 08 JAVA 线程
中国游泳队棒棒哒~一、介绍进程是a set of instructions which would be executed in sequence线程是一个进程内部的顺序控制流(程序的不同执行路径)进程 VS 线程- 每个进程都有独立的代码和数据空间(进程上下文),是资源分配单位,线程共享进程的资源,进程间的切换会有很大的开销- 线程可以看成是轻量级的进程,同一类线程共享代
2015-08-03 23:55:21
807
原创 07 JAVA IO流 练习
1. OutputStreamimport java.io.*;public class TestOutputStream { public static void main(String[] args) { OutputStreamWriter osw; try { osw = new OutputStreamWriter(new FileOutputStream("/U
2015-08-01 16:24:05
496
原创 07 JAVA IO流
还是我大中国的民谣好听~啦啦啦~ 10.......各种各样的流类用来获取不同种类的数据。文件,网络等《-------------》程序(自我提醒:文章中的缓存就是缓冲区,*_* ,懒得改了,我的blog我做主)java.io包里定义了多种流类型:- 输入流,输出流(站在程序的角度)- 字节流(一个字节),字符流(两个字节,JAVA采用UTF-16)- 节点流(数据源《
2015-08-01 16:06:15
556
原创 06 JAVA 容器
什么破天气啊,又想睡觉啦~容器Container:数组长度确定了之后,不能再增长,只能创建一个新的数组,避免空间不足或者浪费,我们引入容器Collection接口定义了存取一组对象(这组对象可是同时是不同的类型,只要是Object或Object的子类都可以~)的方法,子接口Set和List分别定义了不同的存储方式:- Set集合,没有顺序+无重复元素(两个元
2015-07-29 17:04:04
502
原创 05 JAVA 异常
Something to be noticed:int a = null; //错误非final的类都可以被继承在Eclipse环境下,我们可以使用command+鼠标组合来进入某个类的源代码。对了,outline是个好工具。JAVA 5.0之后加入的新特性:Integer a = 1000 //编译器会自动判断并执行"Integer a = new Integer(1000)
2015-07-28 00:21:11
421
原创 04 JAVA 常用类补充 Scanner和日历
哎哎哎,我好懒啊,整天watch variety shows and stay up all night for nothing meaningful,虽然可以到处旅游“坑”朋友,但是没自己的钱付车费,机票~(天气好热,科科~贱人就是矫情,还不想去找工作,自己这么说自己也是够了,双重人格~)—— bulltrue少年一、ScannerScanner可以从特定文件(我们需要提供文件或
2015-07-27 20:46:15
606
原创 04 JAVA 常用类
一、字符串相关类String, StringBufferString1. 养成好习惯,看API先java.lang.String代表不可变的字符串序列,实现了Serializable,Comparable,charSequence接口String =""; 与 String = new String()创建出来的字符串存放位置并不相同,前者存放在数据区,而后者存放在堆里
2015-07-26 00:58:49
473
原创 03 JAVA 数组补充 拷贝、序列化
previous: 也是狗(本来我想要一个表情来表示这个字,没错,提交之后整篇文章都不见了,坑爹的,我又写了一遍,这件事告诉不要乱用表情)了,拷贝还要分多么多类型,其实之前也是学过的,不过身为自豪的学渣,不负己望,我已经忘啦~1. 概念浅拷贝会创建一个新对象,但是对象的引用类型成员还是会指向被复制对象的引用类型成员,与浅拷贝不同,深拷贝会为拷贝引用类型成员动态到动态分配的内存中。而
2015-07-23 21:11:57
534
原创 03 JAVA 数组
一、数组定义数组是多个相同类型数据集合(Python的列表支持不同类型的元素),我们可以对这些数据统一管理- type varName[]声明数组时不能指定其长度(就是先不指定数组中元素的个数,因为起先我们只是在栈中创建了varName的引用变量,而还未分配空间并给他赋值)varName是一个引用类型,指向数据元素,数据元素可以被看成对象,数组中的每个元素相当于该对象的成员变量,数组元
2015-07-23 13:38:58
475
原创 02 JAVA 对象补充 抽象VS接口
接口和抽象怎么听起来那么像呢?都是只定义方法而不实现,而且抽象可以继承抽象,接口可以继承接口,并且这些抽象子类或者接口子类也不能实现父类,但可以添加新属性和新方法,到底哪里不同啦?其实我也不知道,我就随便乱写写~ - 动态继承,abstract- 抽象类中可以没有抽象方法,当然除了抽象方法,抽象类还可以和其他普通类一样,拥有普通变量和方法
2015-07-22 01:32:54
379
原创 02 JAVA 对象
一天可以new无数个对象,可是老妈还在让我找对象。。。一、面向过程 VS 面向对象(就喜欢紫色)例子1:启动车- 过程,解决问题的步骤打开车门(拉车门,车门打开),进入车内,关闭车门(拉车门,车门关闭),系安全带,开车(启动车和车启动),用函数将这些一个一个定义出来,然后依次调用- 对象Person对象Car对象Person拉开门,Car打开门,Pers
2015-07-20 13:44:45
601
原创 18 4Sum
class Solution: # @param {integer[]} nums # @param {integer} target # @return {integer[][]} def fourSum(self, nums, target): "if we adopt left-><-right method, the time complex
2015-07-20 12:39:43
332
原创 01 JAVA 基础补充 浮点数的比较
这篇文章主要记录一些关于精度问题的小知识,当然也不知道对不对,先记录一下~啦啦啦~我是勤劳的屌丝程序猿 少年。。顺便复习:原码,反码,补码对于正数来说,都是一样的,对于负数,反码除符号位之外都取反,补码是在反码的基础上最低位+1,移码就是补码,但是符号位取反我们不能用“==”来判断浮点数是否相同,WHY??1. 浮点数的存储格式对于float: 符号位S(1)阶
2015-07-19 20:29:35
543
原创 01 JAVA 基础
学渣好久以前学的JAVA,后来去国外玩物丧志了几年,没出息的忘了怎么编程了。。现在复习一下。。。一、标识符(基佬蓝~)1. 只能有数字,字符和下划线组成2. 数字不能作为开头3. 不能是关键字(JAVA里面的关键字一般是小写的)二、关键字**1三、变量变量是程序中最基本的存储单元,使用前必须声明,我们可以通过变量访问内存的某一个区域。- 变量类型,表
2015-07-19 15:37:40
647
原创 Linux 安装(笔记)
第四章Considering one situation: 旧主板+大容量硬盘,这种搭配可能会造成不能开机,因为主板上的BIOS可能会误判硬盘的容量(但是整个磁盘前面的扇区他还是读的到的,一般在1024磁柱以内,大约8G),此时我们使用光盘加载Linux的核心文件后,他会重新再去侦测一次整个硬件,并安装,但是使用硬盘开机还是会出现问题(因为BIOS检测到错误的硬盘容量),此时我们可以在硬盘
2015-07-01 21:22:14
655
原创 HTML 窗口分帧技术
HTML 窗口分帧技术是将浏览器窗口分隔成多个独立的窗口,每一个窗口都可以显示一个独立的网页文件,这些窗口称为帧,每个帧拥有自己的URL。Generally, 分帧操作比较适用于后台,用于前台的话(除iframe)不利于搜索引擎的搜索。... .........1. frameset不可以放在body体中,因为分帧与网页主体内容不能混合,它的主要属性
2015-07-01 10:57:18
637
原创 PAT Maximum subsequence sum (Python)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1 Maximum Subsequence is the continuous subsequence which has the largest su
2015-06-29 01:08:12
528
原创 PAT Shuffling machine (Python)
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "inside jobs" where employees collaborate with gambler
2015-06-29 01:05:35
425
原创 PAT Have fun with numbers (Python)
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number con
2015-06-29 00:57:25
561
原创 PAT 数组元素循环右移问题 (Python)
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N ( 1=0);第2行输入N个整数
2015-06-29 00:47:02
2859
原创 PAT 素数对猜想 (Python)
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N (5),请计算不超过N的满足猜想的素数对的个数。输入格式:每个测试输入包含1个测试用例,给出正整数N。输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
2015-06-29 00:32:17
1236
1
原创 PAT 打印沙漏 (Python)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入
2015-06-29 00:30:57
1112
原创 PAT 最大子列和问题 (Python)
给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 输入格式:输入第1行给出正整数 K (输出格式:在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。输入样例:6-2 11 -4 13 -5 -2输出样例:20Solution:ht
2015-06-28 23:52:08
1278
原创 数据结构与算法 介绍(笔记)
数据结构是组织存储数据的方式,通常情况下精心选择的数据结构会带来最优效率的算法例子:如何在书架子存储图书(给你书和图书,如何摆放)- 存1. 单单按拼音存放,二分法查找,找到相关的位置插入,但是后面的数据要向后移2. 先分类,二分法查找,插入时只要在自己的分类的数据上向后移,但是如果一个架子不能装下,则需要加一个架子- 取1. 单单按拼音存放,二分法查找2. 查
2015-06-28 22:33:03
581
原创 磁盘分区(笔记)
第三章购买电脑时,要从以下几点出发:1. 所需服务2. 效能和性价比3. 硬件的支持度不同Linux distribution有稍微不同的硬件支持:每一个组件在Linux系统中都被看成一个文档:当前硬盘接口主要有两种:IDE和SATA(SATA逐渐取代IDE,因为IDE的排线既宽又不长,
2015-06-28 22:11:14
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅