自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

转载 你应该知道的浮点数基础知识

一个有趣的实验本文从一个有趣而诡异的实验开始。最早这个例子博主是从 Stackoverflow上的一个问题中看到的。为了提高可读性,博主这里做了改写,简化成了以下两段代码:#include #include using namespace std;int main() { const float x=1.1; const float z=1.123; f

2017-06-09 16:04:25 413

原创 Effective Java笔记-序列化

谨慎地实现Serializable接口1.代价一:一旦这个类被发布,就大大降低了"改变这个类的实现"的灵活性:如果一个类实现了Serializable接口,它的字节流编码就变成了它的导出API的一部分,你必须永远支持这种序列化形式.2.默认的序列化形式跟类的内部表示法有关(包括类中私有和包级私有的实例域,这意味着类中私有和包级私有的实例域都将变成导出的API的一部分,这不符合"最低限度地访问域"的

2017-05-18 19:19:53 289

原创 Effective java-并发 笔记

第66条 同步访问共享的可变数据1.同步仅仅意味着互斥访问吗? 不是,同步一方面意味着互斥访问,这保证了同步操作的原子性,可以防止线程访问到对象的不一致状态;另一方面,同步意味着保证可见性,他保证进入同步方法或者同步代码快的每个线程,都看到由同一个锁保护的之前所有的修改效果.2.为了提高性能,在读或者写原子数据的时候,应该避免使用同步,对吗? 不对,虽然原子数据的读或写是原子的..,

2017-05-18 11:06:42 400

原创 内部接口可以被什么修饰符修饰

1.static:内部接口必须static,默认就是static。我觉得可以这样理解static的意义,当它描述外部的“东西”(类,接口)时它表示是否可以被实例化(因为接口不可被实例化,所以外部接口不可被修饰为static);而当他描述内部的东西时(字段,方法,类,接口)他就表示被描述的东西属于外部东西(类或接口)的还是它的实例的,如果内部的东西被修饰为non-static那么逻辑上可以认为是一个

2017-05-08 21:47:10 2854

原创 Effective java笔记-第九章-异常

第57条:只针对异常的情况才使用异常try{ int i = 0; while(true){ range[i++].climb(); }catch(ArrayIndextOutOfBoundsException e){ }}这段代码可以利用catch来终止无限循环,但这段代码有一下几个缺点:1.模糊了代码的意图2.把代码放在try-catch快中

2017-05-02 12:43:55 236

原创 Effective java笔记-通用程序设计

第45条 将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明几乎每个局部变量的声明都应该包含一个初始化表达式第46条 for-each循环优先于传统的for循环不过有三种情况无法使用for-each循环:1.过滤:遍历集合并删除指定元素,需要迭代器以便调用remove 2.转换:遍历列表或数组,并取代它部分或全部的元素值,需要迭代器或数组索引,

2017-04-14 16:33:39 282

原创 高性能MySQL第六章笔记

1.不要查询不需要的列,不要用select *(减少内存占用和网络带宽占用,减少表结构变化带来的影响)2.EXPLAIN语句结果中的rows是预估的要扫描的行数,Extra:Using Where表示MySQL将通过WHERE条件来筛选存储引擎(注意是存储引擎)返回的记录    一般MySQL能够使用如下三种方式应用WHERE条件,从好到坏:    在索引中使用WHERE条件来过滤,在

2017-04-14 15:37:49 376

原创 Effective java笔记-方法

第38条 检查参数的有效性1.这是“应该在发生错误之后尽快检测出错误”这一普遍原则的一个具体情形,这可以使发生错误的时候更容易确定错误的根源2.assert 语句,断言如果失败,将会抛出AssertionError。 在生产环境中,一般是不支持assert的,因此这样可以提高效率,没有成本开销。所以,assert只在私有方法中使用,因为私有方法的调用者开发者,他和被调用者之间是一种弱契约关系,或

2017-04-12 19:58:16 331

原创 深入理解JVM笔记-第13章

一.到底什么叫线程安全:java并发编程实战中对线程安全的定义是:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。这个定义比较严格,一般我们都会将其弱化。按照线程安全的“安全程度”由强至弱来排序,我们可以将Java语言中各种操作共享的数

2017-04-12 18:43:14 237

原创 深入理解JVM笔记-第12章

现代处理器大多具有多核:Java内存模型Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有

2017-04-12 15:05:35 326

原创 数据库设计规范

1.小写字母+下划线2.禁止使用保留关键字3.见名识义4.临时表:tmp_...._date5.备份表:bak_..._date6.所有存储相同数据的列名和列类型必须相同(一般这种列为关联列,若类型不同在查询时会隐式转换,效率差)7.库表字符集统一8.所有表和字段都要注释(在建表时用comment从句)9.尽量控制单表在500万行以内(可用历史数据归档(一般用于日志

2017-04-11 15:09:07 258

原创 高性能MySQL笔记-索引设计规范

1.单张表索引不要太多,建议不超过5个2.独立的列。指的是查询时索引列不能是表达式的一部分也不能是函数的参数3.前缀索引。有时候索引列很长,这回让索引变的大且慢,一种做法是模拟哈希索引(InnoDB用的是B-Tree(技术上说是B+Tree)),一种做法是用前缀索引3.1 模拟哈希索引跟真正的哈希索引是不一样的,前者还是用的B-Tree存,只不过里面存的不再是原来的索引值而是其hash

2017-04-11 14:40:58 1408

原创 高性能MYSQL笔记-mysql字段类型和字段设计规范

1.优先使用符合业务需要的最小的数据类型1.1 将ip用UNSIGNED INT存:内置函数INET_ATON(字符串)和INTE_NTOA(整数)分别是点分十进制字符串和整数的转换函数1.2 非负数用无符号类型(比如前面ip值对应的数字一定为正,所以用的数据类型为无符号整形,ip是8为*4=32位,也就是而int也正好是32位,而ip对应的全是正的,如果是用有符号int存的话那就只能表示

2017-04-10 21:42:06 3617

原创 高性能MySQL笔记-第一章

事务事务的ACID特性1.原子性(atomicity):一个事务被视为最小的工作单位,要么全部提交成功,要们全部失败回滚2.一致性(consistency):数据库总是从一个一致性的状态转换到另外一个一致性的状态。3.隔离性(isolation):通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。为什么这里加了通常来说呢,因为其实隔离性是有强弱之分的(隔离级别),有时为了提高速度

2017-04-08 21:25:08 340

转载 Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量

本文转载自:作者:木木出处:http://haore147.cnblogs.com/1.总结背景  在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。  这涉及到环境变量PATH的设置问题,而PATH的设置也是

2017-04-08 17:11:27 459

原创 Effective java笔记-第六章 枚举和注解

枚举和注解第30条 用enum代替int常量int枚举模式的缺点:1.无命名空间,所以要加前缀防止名称冲突2.int枚举是编译时常量,一旦常量关联的int值变化,就要重新编译3.没有很好的打印字符串的方法(有一种String枚举常量,但是性能不好)Enum优点:1.有命名空间2.toString方法提供良好的打印字符串的功能3.提供**编译时**类型安全另外,还可以添加方法和域到枚举类

2017-04-08 16:22:07 451

原创 Effective java笔记-第四章

类和接口第十三条使类和成员的可访问性最小化应该使用与你正在编写的软件的对应功能相一致的、最小的访问级别对于顶层的类(顶层是指非嵌套的类)和接口只有两种可能的访问级别:包级私有和公有的。如果类或接口可以被做成包级私有的就应该做成包级私有的,这样这个类实际成了这个包的实现的一部分,可以在以后对他修改,替换而不用担心影响到客户端程序,如果做成公有的,你就有责任永远支持它的兼容性。 如果一个包级

2017-04-07 11:55:38 585

原创 java线程

java线程状态: 很好奇等待,阻塞有什么区别,我在Ubnutu 16.04中在创建了几个java线程,来查看java线程的等待,阻塞状态分别对应Ubuntu中线程(轻量级进程)的什么状态 代码:import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.concurrent.locks.Re

2017-04-02 16:41:49 555

转载 父类私有变量是否被子类继承

转载自:父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)因为网上就父类私有属性是否被子类继承一直争论不休,以下为了解释清楚,本人做了大量详细说明,请不要嫌我啰嗦,都是基础的知识,认真看完你会明白的。class Parent{//父类    private int a = 1;//私有权限    public int b = 1; //公有

2017-03-28 16:29:11 922

原创 正斜杠和反斜杠,换行与回车

先看正斜杠和反斜杠:正斜杠是/反斜杠是\在java中\是转义字符就是说java解析字符串时会将\和他后面一个字符一起当作一个字符来解析,如\n解析成回车符(LF,对应ASCII0x0A),\r解析成换行符(CR,对应ASCII0x0D),\t是水平制表符HT (horizontal tab),ASCII0x09),\\就是\这个字符(ASCII0x5C)。换行回车:

2017-03-27 17:33:28 3891

原创 子类通过父类的Method对象的invoke执行的还是自己的方法

这个问题是在看一段cglib demo时发现的:public class Train { public void move(){ System.out.println("火车行驶中..."); }}public class CglibProxy implements MethodInterceptor { private Enhancer enhancer = new En

2017-03-26 21:09:15 1843

原创 并发编程的艺术笔记-(第一章)并发编程的挑战

并发编程的挑战上下文切换多线程不一定比串行快:当累加操作数量较小时,反而并发执行的创建线程和上下文切换的劣势显示出来。减少上下文切换的方法:无锁并发编程(比如讲数据分段如concurrentHashMap),CAS算法(Compare and Swap,如java的Atomic包中的类),使用最少线程和使用协程(在单线程里实现duo任务的调度,并在单线程里维持多个任务间的切换)。死锁避免死锁的几

2017-03-21 17:31:20 261

原创 Effective java笔记-对于所有对象都通用的方法

对于所有对象都通用的方法第8条 覆盖equals时请遵守通用约定满足以下任何一个条件,可以不覆盖equals:类的每个实例本质上都是唯一的。(如Thread)不关心是否提供了“逻辑相等”的测试功能(如Random)超类已经覆盖了equals,从超类继承过来的行为对于子类也是合适的。(如Set)类是私有的或包级私有的,可以确定他的equals方法永远不会被调用当类有自己的逻辑相等的概念且父类

2017-03-11 13:32:48 449

原创 使用库函数API和C代码中嵌入汇编代码两种方式使用系统调用

陈可 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”#include<stdio.h>int main(){ int uid; __asm__ __volatile__( "mov $24,%%eax\n\t" "int $0x80\n

2017-03-08 16:51:36 387

原创 Effective Java笔记-创建和销毁对象

创建和销毁对象第一条 考虑用静态工厂方法代替构造器优势一 它们有名称当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造器,并且慎重的选择名称以便突出他们之间的区别。优势二 不必在每次调用它们的时候都创建一个新对象实例受控的类指的是总能严格控制在哪个时刻哪些实例应该存在。静态工厂方法可以实现实例受控的类。创建实例受控的类的原因: 1.实例受控的类可以确保它是一个Single

2017-03-06 20:51:01 415

原创 Effective java笔记-泛型

泛型第23条 请不要在新代码中使用原生态类型书上示例代码:public class Raw { // Uses raw type (List) - fails at runtime! - Page 112 public static void main(String[] args) { List<String> strings = new ArrayList<Str

2017-03-04 21:35:18 309

原创 Linux init进程产生过程

陈可 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000Linux-2.6.20/init/main.c中的start_kernel(void)函数是Linux内核的入口,其前面的代码都是用汇编编写,Linux的第一个进程也是在这里产生,具体的来说是在start_kernel的最后会调用res

2017-03-03 11:16:03 534

原创 一个简单的时间片轮转多道程序内核代码

陈可 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000嵌入式汇编基本格式:asm(“汇编语句”输出寄存器输入寄存器会被修改的寄存器 ); 其中,“汇编语句”是你写汇编指令的地方;“输出寄存器”表示当这段嵌入汇编执行完之后,哪些寄存器用于存放输出数据。此地,这些寄存器会分别对应一C

2017-02-26 15:15:42 398

原创 汇编并分析一段简单C代码

陈可 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000本文会通过分析一个简单C程序的对应汇编代码来了解C程序是如何被执行的先写一个简单的C程序:main.c:int g(int x){ return x+3;}int f(int x){ return g(x);}in

2017-02-14 15:14:51 592

原创 Gergovia的酒交易(Uva11054,Wine trading in Gergovia)

题目链接等价转换就是第一个house中的酒直接与第二个house交易,第二个与第三个,。。。#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #includ

2016-02-01 13:25:43 555

原创 传说中的车 UVa11134

题目链接横坐标和纵坐标可以分开处理,就是区间上的贪心问题,贪心策略是按右端点从小到大排序,若右端点相同则按左端点从大到小排序,然后在区间上从左向右取点。#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #

2016-01-31 23:18:32 489

原创 和为0的4个值(4 Values Whose sum is Zero UVa 1152)

题目#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std

2016-01-31 19:51:28 420

原创 联合国大楼UVA1605(Building for UN)

题目:你的任务是设计一个包含若干层的联合国大楼,其中每层都是一个等大的网格。有若干个国家需要在联合国大楼里办公,你需要把每个格子分配给国家,使得任意两个不同国家都有一对相邻的格子(要么是同层中有公共边的格子,要么是相邻层的同一个格子)。你设计的大厦最多不能超过1000000个格子。        输入国家的个数n(n分析:其中一种设计方法:一共只有两层,每层都是n*n,第一

2016-01-31 14:16:56 738

原创 煎饼(Stacks of Flapjacks,UVA120)

题目大意:对一个数组排序,但基本操作是翻转(使倒序)前k个元素(k可以是0到n-1(n为数组元素个数))。#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #inc

2016-01-31 13:29:52 540

原创 UVA 埃及分数问题

题目大意:给定一个分数a/b,他可以被表示成多个单位分数(1/a)之和的形式,如2/3=1/2+1/3,而且可能不止一种,如5/12=1/3+1/12=1/4+1/6.要求你写出给定分数a/b的单位分数之和的形式,若不止一种,则选择项数最少的,若项数相等,则选择最小元素最大的,若最小元素相等则选择第二小元素最大的,。。。。#define _CRT_SECURE_NO_WARNI

2016-01-24 23:32:14 842

原创 UVA 编辑书稿

题目大意:给你一个数字串,包含1~n的n个(n#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #incl

2016-01-24 13:52:18 379

转载 typedef和#define的用法与区别

转自:typedef和#define的用法与区别typedef和#define的用法与区别 一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef    int       INT;typedef    int       ARRAY[10];t

2016-01-22 23:15:16 261

原创 天平难题(Mobile ComputingUVa 1354)

题目大意:给定房间宽度,和挂坠数目和各挂坠重量,要求给出天平可以平衡的组合中的最大宽度。枚举二叉树(用二进制枚举)代码来自。。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#inc

2015-12-30 18:41:19 420

原创 UVa 12171 Sculpture

题目大意:有个由n个(n思路:先离散化,之后怎么求表面积呢?若是对长方体做floodfill会把雕塑的内表面积也算进去,可以考虑对空气做floodfill。具体是先扩展区域,用离散化把整个区域分成多个有限区域,每个区域中的状态(是雕塑还是空气)是一致的,且每个区域都是长方体,然后对空气floodfill把他们的体积累加起来,如果碰到雕塑则把他们的接触面积累加起来。最后,累加的接触面就是

2015-12-25 12:33:42 751 1

原创 PAT 甲级 Deepest Root (25)

Deepest Root题目大意:无环连通图可以认为是树(无向),现在给你一个图,有n个结点,n-1条边,让你输出图中结点,输出的结点要满足这种性质:以他为根时树的深度最大,如果这种结点不止一个则按升序依次输出。若这个图不是无环连通图(不能认为是树)时,输出图的连通分量。思路:先判断是否是无环连通图,因为,已经确定了只有n-1条边,所以如果此图连通则必然没有环,所以先判断是

2015-12-23 18:29:54 334

空空如也

空空如也

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

TA关注的人

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