自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (2)
  • 收藏
  • 关注

原创 Parquet应用之自定义过滤器-like逻辑

Parquet自定义行过滤,实现like逻辑

2023-03-07 19:50:07 289

原创 Parquet学习与使用之BloomFilter的应用

Parquet列存文件格式的使用经验和示例代码

2023-03-06 20:13:48 931

原创 装饰者模式

定义:动态地将责任附加到对象上,若要扩展功能,装饰着提供了比继承更有弹性的替代方案。实现理解: 装饰者与被装饰者继承共同的超类(可以是接口,可以是抽象类等)装饰者持有一个被装饰者的实例成员装饰者的方法: 增加自己需要的新的方法;对于还是依赖被装饰者的方法,在装饰者内部实现这些方法,但是直接调用被装饰者的实例成员的对应方法即可。类图 其中classB是装饰者,classA是被...

2018-05-13 16:46:17 269

原创 HashMap源码学习小结

HashMap基本知识链表数组,使用散列函数定位位置,链表的元素是Entry 查询性能O(1),增删性能O(1)非线程安全,使用modCount字段实现快速失败的功能在table长度小于阈值(1 定位的算法: 取key.hashCode进行hash函数运算,得出运算结果h将h和table.length进行计算:h & (table.length - 1)取table[inde

2018-01-20 15:04:08 342

原创 mysql数据库的隔离性

代码review的时候看到同事把业务锁(insertDelete实现)和业务操作放在一个事务里。代码结构如下:transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected vo

2018-01-09 19:46:04 882 2

翻译 重构-简化条件语句的使用

‘代码写了几年后,每每遇到看不下的代码,却又苦于找不到好的优化改善的办法,只能用读书少,读码少来挖苦自己了~’当你在代码里看到一堆if-else,并且还嵌套的时候,第一反应一定是我去喝杯水吧,否则要吐了。今天先把Martin Fowler的原文搬上来,自己的例子后补1. Decompose Condition(分解条件表达式)从if,then,else三个段落中分别提炼出独立函数if(date.be

2017-11-18 17:07:56 525

转载 Java异常机制

对于因为编程错误而导致的异常,或者是不能期望程序捕获的异常(解除引用一个空指针,数组越界,除零,等等),为了使开发人员免于处理这些异常,一些异常被命名为非检查型异常(即那些继承自 RuntimeException 的异常)并且不需要进行声明。Checked Exception和Unchecked Exception的几点不同之处方法签名是否需要声明exception调用该方法时是否需要

2015-10-30 15:16:43 653

转载 HTTP Cookie详解

HTTP Cookie详解HTTP cookies,通常称之为“cookie”,已经存在很长时间了,但是仍然没有被充分理解。首要问题是存在许多误解,认为 cookie 是后门程序或病毒,却忽视了其工作原理。第二个问题是,对于 cookie 的操作缺少统一的接口。尽管存在这些问题,cookie 仍旧在 Web 开发中扮演者重要的角色,以至于如果没有出现相应的代替品就消失的话,我们许多喜欢的 Web 应

2015-09-25 17:37:03 770

原创 关于对齐

对齐多用于内存管理中,为了使得CPU的存取速度更快。给定一个对齐因子,所有的地址都以该对齐因子为基准对齐。即:地址为该对齐因子的整数倍。在rtems中,有如下代码:RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment){ uintptr_t remainder

2014-12-15 10:22:53 1034

原创 rtems中对于一些预编译宏的使用:SCORE_EXTERN

/** * The following ensures that all data is declared in the space * of the initialization routine for either the Initialization Manager * or the initialization file for the appropriate API. It

2014-12-09 11:39:07 1072

原创 sublime 2,3+skim as Latex edit for mac

最近准备写论文,所以想弄个专业点的

2014-11-24 16:53:23 2798

转载 深入理解Linux debuginfo

深入理解debuginfoGoogle Drive原文@Chinainvent一、关于debuginfo的疑惑程序员应该都知道,为了能够使用gdb跟踪程序,需要在编译期使用gcc的-g选项。而对于系统库或是Linux内核,使用gdb调试或使用systemtap探测时,还需要安装相应的debuginfo包。例如glibc及它的debuginfo包为:

2014-10-12 19:10:07 2625

原创 二进制文件与纯文本文件

在看 从文件的编码方式来看

2014-05-19 21:14:52 1669

转载 用Java实现一个网络爬虫程序

记得在刚找工作时,隔壁的一位同学在面试时豪言壮语曾实现过网络爬虫,当时的景仰之情犹如滔滔江水连绵不绝。后来,在做图片搜索时,需要大量的测试图片,因此萌生了从Amazon中爬取图书封面图片的想法,从网上也吸取了一些前人的经验,实现了一个简单但足够用的爬虫系统。网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成,其基本架构如下图所示: 

2014-04-22 16:16:35 1548

原创 Java多态性

昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。(一)相关类class A ...{         public String show(D obj)...{                return ("A and D");         }          public Strin

2014-04-12 19:05:11 863

原创 Linux文件系统之hard link&symbol link

引自:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/这个图很清楚的表示出硬链接和软链接的方式。1.硬链接:基本定义:硬链接是有着相同inode号的仅文件名不同的文件(该文件名包含路径信息)。理解:如图,hard link和原始file通过同一个inode实现链接。在使用stat/ls -

2014-02-25 16:57:48 1712

原创 rtems IMFS初始化

rtems初始化FS,调用流程:boot_card(2)bsp_libc_init /*   *  Initialize the C library for those BSPs using the shared   *  framework.   */(3)函数指针(*rtems_libio_init_helper)    /*

2014-02-20 09:12:02 1158

原创 git使用之删除文件

在本地删除文件,开始以为在本地直接rm就可以了。比较低级的想法。所以记下步骤。。git 提供了很多操作。具体见 git --help 其中,git rm删除一个本地文件            git commit -m “description”           git push推送到远程代码库中去

2014-01-16 08:57:44 993

转载 Git使用

Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。 工作步骤我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。创建一个远程的空代码库(在BitBu

2014-01-15 21:27:34 1021

原创 glibc对malloc的实现

glibc对malloc的实现    目前最新版本为2.18,glibc源码目录/glibc-2.18/malloc中可以看到。在glibc的malloc的实现中, 分配虚存有两种系统调用可用: brk()和mmap(), 如果要分配大块内存, glibc会使用mmap()去分配内存,这种内存靠近栈。基于UNIX 的系统有两个可映射到附加内存中的基本系统调用:    brk

2014-01-10 21:57:01 1764

转载 Mutex,spinlock,semaphore,临界区

Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。Bi

2014-01-10 16:54:14 1346

原创 FTL中三种地址映射方式

1.page-level mapping每个逻辑页地址对应一个物理页地址(逻辑页地址来自FS给出的,物理页地址是在Flash上的存储位置) 2.block-level mappingblock是一个擦除块给出逻辑块地址 找到 物理块地址给出的逻辑页地址 =  物理块中的页地址 带来性能损失的原因:只能在块的级别变更映射. 如果在不停的修改同一个逻辑地址的

2013-12-22 11:27:30 5541

转载 多个SSH key的管理和使用

github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至github,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是多用户(first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即f

2013-11-30 16:32:37 1050

转载 移动支付 (1)二维码生成的细节和原理

转载自:http://coolshell.cn/articles/10590.html

2013-11-30 12:23:34 2856

转载 如何让jiffies 占用 jiffies_64 的低32位

转载自:http://www.groad.net/bbs/thread-3352-1-1.html在 Linux 内核中,jiffies 用于记录系统自启动到当前时刻系统时钟所产生的滴答数。 每一秒系统时钟的中断次数等于 HZ 的值,比如一般的 PC 中 PC 的值定义为 1000,也就是说,一秒钟内系统要收到 1000 次的时钟中断;同样,jiffies 的值在一秒钟内增

2013-11-26 22:33:59 1018

转载 关于需求分析中的-假定和约束

转自:http://www.blogjava.net/sinoly/archive/2007/03/12/103189.html     看到“假定和约束”的问题,有些自己的思考,拿来分享一下,同时也让更多牛人来帮我指正一下我自己在概念上的错误。     看了很多需求说明书了,包括自己以前也写了很多,大部分时候我会删除这个章节(呵呵,只是我个人的行为而已)。删除的目的不是为了省事,是很多情

2013-11-26 15:34:41 24143 1

原创 为什么数组从0开始

今天看到一篇文章,《Python语言的创始人解释为什么Python数组的索引从0开始》http://www.aqee.net/why-python-uses-0-based-indexing/.他给的理由是:"使用0-based的索引方式,Python的半开区间切片和缺省匹配区间切片语法变得非常漂亮:a[:n] 和 a[i:i+n],前者的标准写法就是a[0:n]。"a[:n]

2013-11-02 15:02:53 1165

原创 Linux 函数调用栈的使用

结论:1.esp指向栈顶存有数据的那个单元(而不是下一个单元)2.在函数中临时变量是存在栈顶和栈底之间的,包括参数在内。通常我们说通过栈传递参数,参数入栈的操作并不是push,而是movl 参数 0xXX(%esp)。3.call函数时。返回地址保存到栈顶。是使用push指令的,会修改esp的值(-4)4.在被调用函数的开头push ebp。保存原来栈底,也要修改esp

2013-10-18 18:28:25 1014

原创 修复grub

grub-install /dev/所在硬盘

2013-09-28 19:38:12 655

原创 c语言中include "" 与 <>的区别

""首先在当前目录下寻找,如果找不到,再到系统目录中寻找如果是自己定义的头文件,且放在当前目录下,应使用""。

2013-09-26 21:43:34 896

原创 Linux 3.6内核编译vmlinux,bzImage

Tips1:在根目录中的Makfile中include了2次目标体系结构下的Makefile文件第一次:481 include $(srctree)/arch/$(SRCARCH)/Makefile482 export KBUILD_DEFCONFIG KBUILD_KCONFIG由注释可知,此处读取具体体系结构下的Makefile是为了设置KBUILD_DEFCONF

2013-09-24 16:30:36 1967

转载 How to Install NixNote on Ubuntu 13.04, Ubuntu 12.10 and Ubuntu 12.04 via PPA

Nixnote, formerly known as Nevernote is an open source version on Evernote. This program is not distribution dependable, it works on Windows, Mac OS X and Linux systems. It is not connected with Eve

2013-09-20 20:03:39 1992

原创 永久修改grub2启动顺序

grub2是通过/etc/grub.d/目录下的文件顺序来决定启动项顺序的:$cd /etc/grub.d$ls -l-rwxr-xr-x 1 root root 6743 9月 13 2012 00_header-rwxr-xr-x 1 root root 5522 4月 18 2012 05_debian_theme-rw-r--r-- 1 root root 760

2013-09-20 14:05:29 1619

转载 Linux安装时 资源临时不可用 的问题解决方法

无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)问题:运行程序更新时出现报错:无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)解决:其实这是因为有另外一个程序在运行,导致锁不可用。原因可能是上次运行更新或安装没有正常完成。解决办法是杀死此进程sudo rm /var/cache/

2013-09-20 09:07:10 3447

原创 git aborting commit due to empty commit message

这个异常的原因是:在git 提交时没有写注示文字。原因引发条件:$git commit ,解决方法:$git commit -m "hello,i will commit "

2013-09-08 20:43:04 20822

转载 邮件列表的文化与礼节

邮件列表里有量的信息,苦于不知道怎么利用.还有很多专业词汇.每次都理解是什么意思.找到这篇文件介绍了邮件列表的相关信息.先看看...原文:http://zoomq.qiniudn.com/ZQScrapBook/ZqSKM/data/20101015090533/index.html   可能需要翻墙才能访问....计算机技术的革新速度极其惊人,在网络通讯交流技术上 更

2013-08-01 11:09:10 1347

原创 GCC扩展内联汇编关于寄存器的一点问题

源码:#include #include int main(){ int result = 0; int input = 1; __asm__ __volatile__ ("addl %2,%0":"=r"(result): "r"(result),"r"(input)); printf("The result = %d\n",result);

2013-07-31 09:36:06 1799

转载 汇编语言中各寄存器的作用

4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。32位CPU有4个32位的通用寄

2013-07-30 20:22:02 2623

原创 虚拟内存之倒排页表

传统的页表的大小都是和进程的虚拟地址空间成正比的。从而页表非常大。一个解决办法就是使用倒排页表。该方法的各种变种用于PowerPC,UltraSPARC和IA-64体系结构中.RT-PC的MAch操作系统也使用了这种技术.与传统页表的区别:使用页框号而不是虚拟页号来索引页表项.在这种方法中,虚拟地址的页号部分使用一个简单的散列函数映射到散列表中。散列表包含一个指

2013-07-19 15:45:26 13070

转载 ubuntu新建用户后,终端下方向键和tab键不可用的解决方法

问题描述:用adduser命令新增了用户之后,发现在该新建用户下的命令终端,使用方向键无法调出历史命令,同时tab键也无法补全输入命令。问题解决:在/etc/passwd中发现,该新建用户使用的shell为/bin/sh,而能正常使用的用户shell为/bin/bash,通过ls -l /bin/sh查看/bin/sh得知,在ubuntu系统中,/bin/sh默认链接为dash。

2013-07-16 16:16:12 3426

JAVA编写的身份证验证

用java实现的身份证验证。输出省份,生日等信息

2009-12-14

空空如也

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

TA关注的人

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