- 博客(58)
- 收藏
- 关注
原创 Java 垃圾回收
近期,我学习了Java语言提供的垃圾回收机制,并在实验中针对自己的程序考虑自定义的高效的垃圾回收机制。现对Java GC(尤其是回收算法)进行简单总结。Java内存回收由Java虚拟机完成。1. 垃圾回收的对象Java垃圾回收的对象很明确:没有引用指向的对象。对于这样的对象,JVM的一个系统级线程会自动删除它并释放该内存块,以便程序能够再次使用这块内存。2. 垃圾回收的算法垃圾回收算法的基础是必须...
2018-06-17 16:49:13 474
原创 深入理解计算机系统(CSAPP)第三版--系列导航篇
CSAPP作为计算机领域的好书,已经推出第三版了。书中不仅有精彩纷呈的内容,还有着高质量的homework和富有挑战性的lab。用书中的原话“If you study and learn the concepts in this book, you will be on your way to becoming the rare "power programmer” who knows how t
2018-01-22 12:16:03 8739
转载 虚拟机安装ubuntu(win10)
这段时间在看《深入理解计算机系统》,需要安装Linxu系统进行实践。在网上找到了这篇文章,通过其傻瓜式的教程,成功安装ubuntu16.04.3(原文以ubuntu 14.04.3为例)。转载链接可见原文 下面是正文部分。有不少大公司都要求熟悉在linux上开发,因此从个人职业发展有必要去多了解一下linux。于是今天博主就在虚拟机上安装了Ubuntu,并分享整个安装过程给大家。之所以没有安装双系统,是考虑多很多不方便的地方,比如,你在linux上开发了一个实例,你想写博客,写博客肯定是在win
2017-09-16 17:45:11 5544
原创 C语言signed和unsigned之间的编程陷阱
C语言中的整数可分为有符号整数(signed)和无符号整数(unsigned)。在有符号数和无符号数混合时,如果不注意整数在机器中的表示问题,往往会使程序出现的trick很难找到问题所在。signed类的整数和unsigned类的整数之间可以进行转换,包括显式转换和隐式转换。C语言对隐式转换的规定是什么呢?当带符号数和无符号数之间进行操作的时候,要将带符号数字转换成无符号数字,再进行比较大小等各种操作。下面举一个非常易错的例程。
2017-08-08 21:39:00 961
原创 基于VC6.0的项目实践——mfc计算器项目综述
学了MFC的入门知识后,我迫切地想做一个小的实践项目,于是就有了第一个自己写的计算器。虽然是一个非常简单的入门项目程序,但对于刚刚接触MFC开发窗口程序的新手来说很有意义。下面是该项目任务清单:项目名称:数字键盘式计算器的设计设计内容与要求:设计一个数字键盘式计算器,利用Visual C++进行应用程序设计,程序应具有如下功能:(1)通过按钮实现数据的输入;(2)实现加、减、乘、除、乘方、开方等一般运算;(3)实现日期计算和常用的单位换算功能;(4)实现二进制,八进制,十进制,十六进制之间的转
2017-07-20 21:57:24 3139
原创 功能强大的C语言memset()函数用法
功能强大的C语言memset()函数用法这篇文章是对memcpy()函数的简要介绍,并对这个函数做出几点重要的说明。复制字符串的操作非常常见,为此C库为我们实现了这一操作并封装成函数,我们经常使用的就是strcpy()函数。但strcpy()函数功能在有的时候捉襟见肘,因此这里介绍功能强大很多的memcpy()函数用法。首先当然是函数原型,void *memcpy(void*dest, const void *src, size_t n);
2017-05-23 20:01:08 1002
原创 经典dijkstra算法题目及代码
经典dijkstra算法题目及代码Dijkstra算法是解决单源最短路的经典算法,现对这样一道简单的题目给出完整代码(有注释)。输入n和m,代表n个节点,m条边,然后是m行输入,每行有x,y,z,代表x到y的路距离为z。问题:从1出发到各点的最短路径。直接给出AC代码。
2017-05-22 17:10:33 6205 1
原创 17年黑龙江ACM省赛总结
第一次参加ACM正式的比赛,这次省赛就算是试水了吧。 先闲扯几句,这次比赛,哈师大做的准备就总体来说还是不错的,给配的电脑用着还行,没出什么幺蛾子,志愿者们也都很好,耐心组织引导队伍进场,发的饭卡每个120元。就是在热身赛的时候发现问题:比赛系统的pc2太慢了,还有正式赛刚开赛时登陆不上去。就比赛成绩没什么说的,rank17(还是18来着),虽然与一等奖只差两个队有点儿可惜,但队伍实力如此
2017-05-12 21:35:39 1180
原创 11-20
11. Container With Most Water思路:暴力穷举每两对形成的area即可,将其与maxArea进行比较并更新。初始化的maxArea设置为0合理,并且写好代码后可发现不必对特殊情况再做进一步处理。class Solution {public: int maxArea(vector<int>& height) { i...
2019-04-13 23:01:21 275
原创 1-10
2. Add Two Numbers思路:结合示例可以看到其实就是完成链表对应位置相加来模拟加法运算。首先想到要返回头结点,则头结点的创建过程单独拿出来(两个都非空,则头结点一定存在)。并设置好pre=head。在后续中模式pre->next=node,pre=node。在都不为空的情况下,每次都要检查上一次计算设置的carryFlag,以及重新设置carryFlag。当有一...
2019-04-09 10:09:34 259
原创 Java日志小结
在本学期做软件构造的实验过程中,我深入学习了Java的日志功能,在这篇文章中对其进行简单的总结。在编程过程中,我们常常需要观察程序的运行过程或者记录程序的运行信息,可能我们最熟悉的是使用System.out.println语句将信息打印到控制台上。这个方法很常用但缺点也很明显:这些语句需要频繁地进行插入和删除操作。比如发现程序有问题了,插入一些System.out.println语句进行观察;解决...
2018-06-17 15:45:23 254
原创 Study of Java-Object类
在Java中,只有基本数据类型不是对象,而所有对象归属的类型都扩展自Object类。因此,对Object类的学习就显得非常重要。本篇文章主要介绍Object类的几个重要方法:equals方法,hashcode方法,以及toString方法。1. Object类的equals方法equals方法的功能是检测两个对象是否相等。需要特别注意的是,Object类对这个方法默认的操作是判断两个对象的引用是否...
2018-06-17 14:55:34 225
原创 CSAPP第九章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门9.12 对于下面的地址,重复习题9.11:虚拟地址: 0x03a9 A. 虚拟地址格式B. 地址翻译参数值VPN0xETLB索引0x2TLB标记0x3TLB命中?(是/否)
2018-01-22 15:48:08 7988 1
原创 CSAPP第八章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门8.12 这个程序会输出多少个“hello”输出行?分析该程序doit()函数的行为,4个进程都会再返回到主程序,所以程序会输出8个“hello”输出行。8.16 下面这个程序的输出是什么?分析该程序,子进程将count减一,父进程将其加一后输出,所以输出是: counter = 1。 8.20使用execve编写一个
2018-01-22 15:37:13 6638 3
原创 CSAPP第七章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门7.6这道题是关于图7-5的m.o模块和swap.c函数版本的。符号swap.o.symtab条目符号类型定义符号的模块节buf是外部m.o.databufp0是全
2018-01-22 15:25:18 7121
原创 CSAPP第六章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门6.24这个文件由4000个逻辑块组成,并且对于磁盘,Tavg seek = 4ms, Tmax rotation = 4ms, 而Tavgrotatioin = 2ms。A. 最好情况是块被映射到连续的扇区,在同一柱面上这样就可以不移动读写头来一块接一块地读。一旦读写头定位到了第一个扇区,需要磁盘转4整圈(平均每个磁道上1000扇区)
2018-01-22 15:07:59 6280
原创 CSAPP第五章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门5.14编写5.13的6*1循环展开版本代码如下:/* Inner product. Accumulate in temporary */void inner4(vec_ptr u,vec_ptr v,data_t *dest){ long i; long length = vec_length(u); l
2018-01-22 14:56:51 4003
原创 CSAPP第四章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门4.46A. 这段代码序列没有正确描述指令popq %rsp的行为。该段代码序列使%rsp的值为(%rsp)+8,而指令popq%rsp执行后,%rsp的值应为(%rsp)。B. 改写代码序列:addq $8 , %rspmovq-8(%rsp) , REG4.48冒泡排序函数的测试和交换(6-11行)
2018-01-22 14:41:37 3777
原创 CSAPP第三章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门3.58写出等价的decode2的C代码。/*rdi,rsi,rdx*/long decode2(long x,long y,long z){ y = y - z; x = x * y; y = (y > 63; return x ^ y;}3.60 A. x:%rdi n:
2018-01-22 14:07:54 5349 1
原创 CSAPP第二章家庭作业参考答案
(CSAPP第三版系列)导航篇传送门2.56 用不同的示例值运行show_bytes的代码。#include typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start, size_t len){ size_t i; for(i = 0;i < len;i++)
2018-01-22 12:01:34 8349 2
转载 【必看】Vim Tutor
如果你需要在Linux下编辑文档或者编程的话,那么一定离不开上古神器-Vim。下面是官方文档vimtutor的每一讲的小结部分,将其转载,供大家学习交流。Vim 是一个具有很多命令的功能非常强大的编辑器。本教程的设计目标是讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。
2017-10-20 20:05:35 370
原创 gcc编译32位(64位)程序
gcc编译32位(64位)程序1.gcc编译32位程序命令gcc -m32 test.cpp -o test.out 如果命令出错,可能是没有安装必要的软件包,加上下面两行命令即可(需要管理员权限)
2017-10-15 12:07:02 21332 2
原创 linux下图形界面与终端的快捷切换
在Linux下,我们要实现图形界面与控制台模式的切换其实非常简单,对于ubuntu系统来说:首先要知道tty1-6是控制台终端,tty7是图形界面。则:由控制台终端 --> 图形界面:1.alt + f7(可能需要+fn) 2.ctrl + alt + t 由图形界面 --> 控制台终端:c
2017-10-10 22:26:09 4180
转载 Python中的Numpy入门教程
NumPy函数库的入门文章,结合了实际代码和详细解释,简单易懂。适合有用NumPy函数库做数据分析,深度学习需求的新手学习。
2017-10-03 21:57:18 255
原创 NumPy函数库基础
NumPy函数库作为python第三方库中非常强大的开源库,是对数值计算的扩展,主要用来存储和处理大型矩阵。有人甚至说,NumPy库使得python可作为一个免费且更加强大的Matlab系统。本文是NumPy函数库的一些基础知识,分为Numpy函数库的安装及其简单使用两部分,其中第二部分有对使用NumPy函数库的代码的详尽解释。
2017-10-03 18:38:33 587
原创 python几个语言特性
Python作为数据科学中最重要的语言,有着不少语言特性,值得初学者注意。下面是其中的几点。1.Python中很重要的一种数据类型就是字典,其声明方式如下: d = {'foo':1, 'bar':2.3, 's':'my first dictionary'} 索引时的使用格式为 print d['foo'],将会输出 1 。
2017-09-21 20:16:27 1558
原创 查看网页编码方式的通用方法
在python爬虫等各种情景模式下,往往需要查看网页的编码方式。下面是通用,简单的方法。在各种浏览器打开的任意页面上使用F12功能键,即可使用开发者工具,在窗口console标签下,键入如下几个字符即可查看网页的编码方式。
2017-09-19 22:04:37 34278
原创 我们的拖延症
今天看了一期TED演讲,题为《你有拖延症吗》,演讲者名为Tim Urban。该演讲深入浅出,耐人寻味。几乎所有人都是拖延症患者,只是程度不同而已。Tim Urban的观点是,人的行为受大脑中三种动物的支配:理智掌舵者,及时享乐的猴子和发疯的怪兽。在平时的工作中,猴子经常取代掌舵者,使我们深陷于当下的享乐之中。发疯的怪兽起到什么作用呢?每当deadline临近时,发疯的怪兽就会吓跑猴子,人的行为受掌舵者支配,从而完成任务。于是,几乎每个人都会有这样的经历,制定一个计划以完成某项任务,但中途甚至一开始就..
2017-08-03 11:25:58 781
原创 MFC计算器项目——单位换算模块
计算器单位换算模块(运行效果图参见计算器项目综述)对于单位换算这一模块,仅实现了两个部分,一个是摄氏度与华氏度之间的转换,另外一个是焦耳与热卡路里之间的进制转换。下面是该模块开发文档截图:下面是核心代码:
2017-07-20 21:46:07 858
原创 MFC计算器项目——进制转换模块
计算器进制转换模块(运行效果图参见计算器项目综述)开发文档截图该模块实现了2进制到36进制之间的任意转换,可能有人会问为什么是2到32进制之间呢?这个36是怎么来的呢?这个是因为超出36后字母表示就不那么方便了,0-9加上a-z就是36个啦微笑 当然要表示办法总是有的,比如用大写的英文字母A-Z,但是常用的进制转换(2,8,10,16)也都没有超出36不是?核心代码如下:
2017-07-20 21:37:12 2822
原创 MFC计算器项目——日期计算模块
计算器日期计算模块(运行效果图参见计算器项目综述)主要实现两个功能(与windows计算器中的日期计算功能一致)1.给定两个时间,计算日期差2.给出基础时间和时间差,计算目标时间该模块开发文档截图核心代码如下:
2017-07-20 21:30:34 1110
原创 MFC计算器项目——普通计算模块
计算器普通计算模块:(运行效果图参见计算器项目综述)该模块开发文档截图这一模块是该项目的核心。考虑核心代码的实现:由于运算符只有这六种(+、-、*、/、平方、开方)所以就可以将表达式中的运算符存在一个char数组中,然后先对该数组中平方和开方这两个一元运算符进行处理,这样表达式中就只剩下另外四种运算符了。而这四种运算符只有两个优先级,利用堆栈很容易实现。遇到+、-就将数字(或其相反数)push(),遇到*、/就进行pop(),这样最后将栈中的数字加和即可。该模块完整代码如下:
2017-07-20 21:26:42 1317
原创 六月随想
今天是6月3号了,昨天刚刚完成了C语言的期末考试,这会儿没什么特别的事情。所以在这个不错的天气里(我几乎喜欢哈尔滨每一天的天气,不论是冰天雪地还是夏日明媚),写下一些自己的思考。主要有以下几部分:关于与班主任的谈话,一些琐碎但重要的总结,又是一年高考的感慨,下一步的安排。
2017-06-03 12:31:34 414
原创 背包问题模板(01背包,完全背包,多重背包)
背包问题模板(01背包,完全背包,多重背包)背包问题作为一类非常常见的问题,这里给出背包问题(01背包,完全背包,多重背包)的模板,以后自己做题就很方便啦。这里以多重背包为例一并给出main()函数代码。
2017-05-28 20:46:26 833
原创 动态规划经典入门题目
动态规划经典入门题目嗯,这道题的思路就非常简单了,给出关键的递推公式吧:getmax[i][j]=max(getmax[i+1][j],getmax[i+1][j+1])+graph[i][j]。(从数字金字塔的底部向上递推)下面是AC代码
2017-05-28 20:36:21 330
原创 HDU 2203 亲和串 小白题解(字符串查找)
HDU 2203 亲和串 小白题解(字符串查找)题目分析:这道题目首先要理解字符串的循环移位是什么意思,我们假定s1为abcdefg,那么这个字符串循环左移1位的结果就是bcdefga(将每个字母左移1位,a这个字母到最后的位置),右移3位的结果就是defgabc,以此类推。下一步,题目要求用循环移位的方式变换s1,我们仍然假设s1为abcdefg,那么循环移位的结果是bcdefga,cdefgab,defgabc,efgabcd,fgabcde,gabcdef,abcdefg。我们将s1重复连接,得到s
2017-05-26 22:01:10 371
原创 判断完全平方数的正确方法
判断完全平方数的正确姿势我们经常碰到判读一个数是不是完全平方数的问题,这个问题看似非常简单,但写的代码往往是有bug的,容易误导初学者。下面对这个问题给出三种思路,并就其中一种最常用且最容易出问题的思路做深入分析。要判断一个数是不是完全平方数,至少应该有两种思路,一种是看它开平方以后是不是一个整数;另一种是在一定区间内枚举x,看是否有一个x的平方是n(我们姑且不论具体实现,这应该是两种最开始的想法)。对于第二种思路,更常见于求一定区间内的数字有哪些是完全平方数,枚举的这种做法本身没什么问题。
2017-05-23 20:25:14 21136 6
原创 经典Prim算法题目及代码
经典Prim算法题目及代码Prim算法是解决最小生成树的经典算法(尤以稠密图效率很高),现对这样一道简单最小生成 题目给出完整代码(有注释)。输入n和m,代表n个节点,m条边,然后是m行输入,每行有x,y,z,代表x到y的路距离为z。问题:能使各点联通的最短路径是多少。测试样例:
2017-05-22 17:23:17 1527
原创 深入理解Floyd算法思路
你真的理解Floyd算法吗Floyd算法经典代码只有5行(或者也可以写成4行),思路听起来也那么“显然”。但大部分人对Floyd算法的理解仅仅限于它的实现是三层循环,k在最外层,i和j在内层不分顺序,用路径松弛来更新最短路径。但其实大多数人都没有弄清楚一个问题,为什么外层循环是遍历k,而不是把k放到最内层呢,只是知道放在里边就不对了。当然,也有不少博客解释这个问题,但写的大多有些复杂,下面是我个人的理解。
2017-05-17 22:30:32 2625 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人