自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 资源 (12)
  • 收藏
  • 关注

原创 收藏的技术书单列表

大部分都可以在资源下载中找到:   1) 应用层 Advanced.Programming.in.the.UNIX.Environment.pdf Android.Cookbook.2nd.Edition.2017.5.pdf expert shell scripting.pdf The Linux Programmer's Toolbox.pdf The Linux Programm...

2018-07-25 20:13:48 182

原创 linux 内核调试

1. 背景 linux 内核是介于应用和驱动之间的抽象层;系统调用api是kernel与app间的接口,kernel与driver之间也有一层low-level-api(如注册驱动模块,注册中断ISR等),driver与设备间的接口即为I/O寄存器(寄存器地址与硬件配置有关)。内核的主要任务是满足多个应用对设备资源(CPU、RAM、DISK、NET)的请求,而实际的硬件资源是有限的,不同需求的应

2017-07-24 21:27:24 242

原创 linux 应用调试

1. 背景:         linux系统广泛应用于服务器端和客户端(如android), 因而大部分程序都是linux应用程序; 应用程序的生命周期包括: 需求分析, 概要设计, 编码实现, 调试维护. 其中第四阶段的耗时最 长, 因而熟悉linux的调试至关重要. 2. 为何调试和维护?程序运行行为不符合预期, 完善过程中引入新需求产生意想不到的问题;意料之外的行为 按

2017-07-22 19:32:24 336

原创 如何用电脑?

面对电脑时,大脑一片空白,不知从何下笔? 那电脑到底是什么? 这要从电脑能干什么开始: 1)电脑有海量存储:四大名著(每本约100万字,每字4字节,每本约4MB),若每年读30本这样的书,512GB磁盘可存够4000+年的书; 2)电脑可快速查找:SSD读取速度可达100MB/s, 内存读取速度可达1GB/s, CPU频率可达2GHz,判断一个字节是否相等约要1ns,100MB的文件查找时

2017-07-02 22:36:24 273

原创 裤子的启示

我的两条裤子后面同一个地方,都破, 尽管用的时间不长,但也不能穿了。其间,我想过是我的椅子上的钉子划的,但没管,悲剧就发生了。 今天在这里mark一下,告诫自己,问题出现的时候,就要及时处理,不要回避,否则,麻烦不断。有时,过了很久,才发现哪个地方有问题,但觉得,已经很久了,不想再碰,实际上,这违背了上面的启示。推而广之,意识到问题的存在,就要立即处理。

2011-03-28 08:40:00 366 1

Competitive Programmer’s Handbook

The purpose of this book is to give you a thorough introduction to competitive programming. It is assumed that you already know the basics of programming, but no previous background in competitive programming is needed. The book is especially intended for students who want to learn algorithms and possibly participate in the International Olympiad in Informatics (IOI) or in the International Collegiate Programming Contest (ICPC). Of course, the book is also suitable for anybody else interested in competitive programming. It takes a long time to become a good competitive programmer, but it is also an opportunity to learn a lot. You can be sure that you will get a good general understanding of algorithms if you spend time reading the book, solving problems and taking part in contests. The book is under continuous development. You can always send feedback on the book to [email protected].

2018-07-25

Introduction to Algorithms

Before there were computers, there were algorithms. But now that there are com- puters, there are even more algorithms, and algorithms lie at the heart of computing. This book provides a comprehensive introduction to the modern study of com- puter algorithms. It presents many algorithms and covers them in considerable depth, yet makes their design and analysis accessible to all levels of readers. We have tried to keep explanations elementary without sacrificing depth of coverage or mathematical rigor. Each chapter presents an algorithm, a design technique, an application area, or a related topic. Algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The book contains 244 figures—many with multiple parts—illustrating how the algorithms work. Since we emphasize efficiency as a design criterion, we include careful analyses of the running times of all our algorithms. The text is intended primarily for use in undergraduate or graduate courses in algorithms or data structures. Because it discusses engineering issues in algorithm design, as well as mathematical aspects, it is equally well suited for self-study by technical professionals. In this, the third edition, we have once again updated the entire book. The changes cover a broad spectrum, including new chapters, revised pseudocode, and a more active writing style.

2015-01-04

Thinking in C++

Like any human language, C++ provides a way to express concepts. If successful, this medium of expression will be significantly easier and more flexible than the alternatives as problems grow larger and more complex.

2011-06-25

Thinking in Java Fourth Edition

Programming is about managing complexity: the complexity of the problem you want to solve, laid upon the complexity of the machine in which it is solved. Because of this complexity, most of our programming projects fail. And yet, of all the programming languages of which I am aware, almost none have gone all out and decided that their main design goal would be to conquer the complexity of developing and maintaining programs.1 Of course, many language design decisions were made with complexity in mind, but at some point there were always other issues that were considered essential to be added into the mix. Inevitably, those other issues are what cause programmers to eventually “hit the wall” with that language. For example, C++ had to be backwards-compatible with C (to allow easy migration for C programmers), as well as efficient. Those are both very useful goals and account for much of the success of C++, but they also expose extra complexity that prevents some projects from being finished (certainly, you can blame programmers and management, but if a language can help by catching your mistakes, why shouldn’t it?). As another example, Visual BASIC (VB) was tied to BASIC, which wasn’t really designed to be an extensible language, so all the extensions piled upon VB have produced some truly unmaintainable syntax. Perl is backwards-compatible with awk, sed, grep, and other Unix tools it was meant to replace, and as a result it is often accused of producing “write-only code” (that is, after a while you can’t read it). On the other hand, C++, VB, Perl, and other languages like Smalltalk had some of their design efforts focused on the issue of complexity and as a result are remarkably successful in solving certain types of problems.

2011-06-25

The C programming Language

The computing world has undergone a revolution since the publication of The C Programming Language in 1978. Big computers are much bigger, and personal computers have capabilities that rival mainframes of a decade ago. During this time, C has changed too, although only modestly, and it has spread far beyond its origins as the language of the UNIX operating system.

2011-06-01

Algorithms in Java

The objective of this book is to study a broad variety of important and useful algorithms—methods for solving problems that are suited for computer implementation. We shall deal with many different areas of application, always concentrating on fundamental algorithms that are important to know and in

2011-05-03

Advanced Programming in the UNIX Environment

All operating systems provide services for programs they run. Typical services include executing a new program, opening a file, reading a file, allocating a region of memory, getting the current time of day, and so on. The focus of this text is to describe the services provided by various versions of the UNIX operating system. Describing the UNIX System in a strictly linear fashion, without any forward references to terms that haven't been described yet, is nearly impossible (and would probably be boring). This chapter provides a whirlwind tour of the UNIX System from a programmer's perspective. We'll give some brief descriptions and examples of terms and concepts that appear throughout the text. We describe these features in much more detail in later chapters. This chapter also provides an introduction and overview of the services provided by the UNIX System, for programmers new to this environment.

2011-05-03

Linux Programming Bible

The secret is out—there’s something special about Linux. The operating system that began life as a way for then-student Linus Torvalds to do his homework has evolved into a powerful force in the marketplace, literally earning money overnight. What is so special about Linux? And why should you, a programmer, care? You’ll find the answers in the pages of this book. Linux is more than just a new operating system. It represents the very best of what developers all over the world over like to see. Its rich multitasking capabilities and powerful communication features enable you to write powerful and fast applications quickly. Linux supports literally dozens of languages, including C, C++, Perl, Java, LISP, Prolog, Scheme, Pascal, BASIC, two shell flavors, assembler, Ada, Smalltalk, and FORTRAN. The program-ming environment in Linux is first-rate; many tools have had a chance to be refined since before Linux even existed, thanks to its UNIX heritage. As Linux is a fairly new system, I discovered that there is a lack of information for the Linux programmer. That is where this book comes in. By reading this book, you not only get to learn what Linux is doing under the hood, but also how to take advantage of that knowledge in your own applications. Most of the extensive code examples in this book are complete programs, ready to run, and some of which are also available online.

2011-05-03

Foundations of statistical natural language processing

THE NEED for a thorough textbook for Statistical Natural Language Processing hardly needs to be argued for in the age of on-line information, electronic communication and the World Wide Web. Increasingly, businesses, government agencies and individuals are confronted with large amounts of text that are critical for working and living, but not well enough understood to get the enormous value out of them that they potentially hide.

2011-05-01

空空如也

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

TA关注的人

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