自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

面目全非,胸有丘壑 | Json Lee

人若无名,便可专心练剑 | https://lijiansong.github.io/

  • 博客(35)
  • 资源 (17)
  • 收藏
  • 关注

原创 共享内存和动态数据交换

仔细研究一下操作系统本身的机制,比如说内存管理、进程间通信等,越发觉得这些机制很精妙,很精深,perfect!为了让具有依赖关系的线程或者进程协调工作,可以使用两种技术,第一种是进程间或者线程间通信(interprocess or interthread communication),在具有通信依赖关系的两个进程间传递信息;第二种技术是同步。进程间通信,一般情况下,单个进程拥有自己的地址空间,

2015-08-31 20:06:57 2980

原创 Windows 多进程通信API总结

在一个大型的应用系统中,往往需要多个进程相互协作,进程间通信(IPC,Inter Process Communication)就显得比较重要了。在Linux系统中,有很多种IPC机制,比如说,信号(signal)、管道(pipe)、消息队列(message queue)、信号量(semaphore)和共享内存(shared memory)、套接字(socket)等,其实Windows操作系统也支持

2015-08-30 20:16:25 28299 7

原创 Windows中的宽字符串处理问题

在用VC做开发的时候,对于一些字符串,会经常调用一般_t、_T、T(),其实这些东西都和Unicode有关系。比如说,AfxMessageBox(_T("Error! Fail to connect the database!"));这里用到了一个_T(),不使用_T()有时候编译会报错。Windows操作系统使用Unicode作为默认的文本编码格式。Unicode定义了对大于8位的字符编码的

2015-08-30 11:52:27 1334

原创 Windows多线程问题

进程和线程是操作系统里面经常遇到的两个概念,还有一个概念,是应用程序。应用程序包括指令和数据,在开始运行之前,只是分布在磁盘上的指令和数据。正在执行的应用程序称为进程,进程不仅仅是指令和数据,它还有状态。状态是保存在处理器寄存器中的一些值,记录一些信息,比如说当前执行指令的地址,保存在内存中的值等。进程是应用程序的基本构件块,同时运行的多个应用程序就是多个进程。每个进程可以运行多个线程。线程也有一

2015-08-30 00:57:04 3606 2

原创 内存映射文件

在做科研,实现一些大数据的算法的时候,经常要调用一些文件的I/O函数,在数据量很大的时候,除了设计的算法和数据结构的耗时以外,其实主要的耗时还是文件的I/O。因为一般常规的方法就是先读出磁盘文件的内容到内存中,然后修改,最后写回到磁盘上。读磁盘文件是要经过一次系统调用,先将文件的内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。写回同样也需要经过两次数据拷

2015-08-28 16:26:19 94527 1

原创 Max Sum

Leetcode上有一个Max Sum问题,题目的描述很简单,即对于一个输入的数组,求其连续子数组的最大和。比如说,A={ 6,-1,5,4,-7},那么其连续子数组的最大和为6 + (-1) +5 + 4 = 14.分析:这是很简单的动态规划题,动态规划做多了,第一个想法就是用一个一维数组记录以每个元素为结尾的子序列的最大和,然后再扫描一遍这个数组,以获取最大值。但是仔细分析一下,其

2015-08-26 21:35:47 1772

原创 排序算法小结

网上关于排序算法的总结太多了,这篇文章就写得不错。http://m.blog.csdn.net/blog/likaiwalkman/23713373经典就是经典,个人觉得这些经典的算法被反复研究几十遍都不为过。同时也参考了很经典的书籍《数据结构与算法分析——C语言描述》,温故而知新,每次回头看这些算法的时候都为其中博大精深的思想所折服,呵呵,不扯了。这里只贴出一份用代码敲出来的各个排序算法

2015-08-24 19:00:53 1026

原创 2016阿里校招算法工程师笔试

刚刚做完阿里16年的算法工程师岗位的笔试题目[忘记了在线的笔试的时间,开始已经半个小时才想起来,坑啊,还好后面加时了,让你在40分钟内完成20到题]。这次的感觉题目不是很难,大部分是基础题。先是40分钟做20个选择题,现在凭记忆回想,好像有排列组合、概率计算、数学期望计算的题目,贝叶斯概率计算,也考了一些编程基础的题目,比如说C++的const共享变量、构造函数,以及java的基础函数问题

2015-08-23 12:13:31 6791 1

原创 HDOJ1087 Super Jumping! Jumping! Jumping!

Super Jumping! Jumping! Jumping!http://acm.hdu.edu.cn/showproblem.php?pid=1087分析:简单的动态规划题。题目的意思很直白,其实就是寻找最长递增子序列。假设dp[i]表示的是从start到达第i个点时可获得的最大分数,data[i]表示的是第i个点的分数值,那么可以得到,dp[i]= max{dp[i

2015-08-22 14:23:13 1118

原创 STL 堆排序

C++ STL中提供了不少和排序相关的算法,包括堆排序(heap_sort)、排序(sort)、稳定排序(stable_sort)、局部排序(partial_sort),时间复杂度均为O(nlogn)。其中,对于堆排序,也提供了不少函数,像入堆push_heap、创建堆make_heap、出堆pop_heap,是否为堆is_heap等。首先要明确数据结构上堆的概念。对于一个迭代器区间上的元素,不管

2015-08-22 00:57:43 6974 4

原创 STL Mutating Algorithms小结

与Non-mutating Algorithms相比,变易算法能修改容器元素数据,可进行序列数据的复制、交换、替换、填充、移除、旋转、随机抖动、分割。还是参考叶至军的那本书以及网站Cplusplus.comcopy 元素复制。该函数用于容器间元素拷贝,将迭代器区间[first, last)的元素复制到由复制目标迭代器result给定的区间[result, result +

2015-08-21 17:56:54 1023

原创 STL Non-mutating Algorithms小结

C++ STL中有许多非变易算法,这些算法不破坏操作数据,用来对序列数据进行逐个处理(for_each)、元素查找(find)、子序列搜索(find_first_of)、统计和匹配(count和mismatch)等。非变易算法在实现各种大型复杂一点的算法的时候比较方便,而且比较稳定,这也是STL本身固有的特点。主要列出以下几种,参考了叶志军的那本《C++ STL开发技术导引》,同时也结合网站C

2015-08-21 11:29:15 1138

原创 priority_queue优先队列容器

优先队列也是队列的一种,与一般队列的不同在于,队列中最大的元素总是位于队首的位置,每次元素的出队都是当前队列中最大的元素,底层的具体实现细节用到了堆(heap)。C++ STL中优先队列的泛化,底层默认采用vector向量容器,大概是考虑到队列容器的元素可以用做数组操作,就可以应用堆算法找出当前队列的最大元素,并将其调整到队首位置,确保最大元素优先出队。提供了获取队首的top函数,不提供获取队

2015-08-19 21:25:41 1330

原创 queue队列容器

queue队列也是一种线性存储表,元素的插入在表的一端进行,在表的另一端删除,具有先进先出的特点,插入的一端称为队尾,删除的一端称为队首。C++ STL的队列泛化,默认使用双端队列容器deque作为底层架构。元素的出队不返回队首元素,需要调用取队首函数来获取队首元素。队列是一种常用的数据结构,通常以消息队列的形式应用于进程间通信。创建queue对象有以下两种方式。(1)    qu

2015-08-19 19:54:59 1078

原创 stack堆栈容器

堆栈是一种线性表,插入和删除操作只在表的一端进行,该端成为栈顶,另一端则称为栈底。元素的入栈和出栈都是在栈顶进行的,因此堆栈是一种先进先出表。C++ STL的堆栈泛化是通过现有的序列容器来实现的,默认使用的是双端队列deque的数据结构。在STL中,stack的元素出栈操作是不返回栈顶元素的,获得栈顶元素需要调用相应的取栈顶函数才能获得,这种分离的实现,是考虑到出栈函数若是直接返回栈顶元素,将会导

2015-08-19 19:20:03 1325

原创 推荐系统小结

推荐系统(RecSys)作为电子商务中一个很火的应用,主要是为了帮助用户发现可能感兴趣的东西,这种就叫做个性化推荐系统;而广告商还可以利用结果将内容投放给可能会对它们感兴趣的用户,这就成了个性化广告。比较著名的推荐系统有亚马逊,被RWW(读写网)称为“推荐系统之王”,你从亚马逊买了一本书以后,会发现它会经常向你的邮箱发一些相关的书籍,这个有时比较恼人,呵呵;此外还要电影和视频网站,像YouTube

2015-08-19 15:23:59 1810

原创 string基本字符序列容器

C语言每天提供专门的字符串类型,需要通过字符数组才能对字符串进行存储和处理。在标准C++中,字符串类由C++ STL实现。string是一个基于字符的序列容器,具有vector向量一样的内部线性结构,字符逐一写入容器,最后以null字符结尾。跟传统的char*字符数组相比,string提供了丰富的函数用于字符的添加、删除、替换、查找和比较等。 创建string对象主要有以下几种方式。

2015-08-19 12:12:09 944

原创 hash_set和hash_map

1.hash_set集合容器hash_set利用链式哈希表,进行数据的插入、删除和搜索。与set容器相同,不允许插入重复键值的元素。SGIC++哈希表是一个链式的结构,由表头和一系列单链组成。表头是一个数组式的线性表,用vector向量泛化出来。每个表头节点,称为桶(bucket),是一个指针域,指向链入的元素数据。表头的长度为向量容器的元素个数。哈希表中数据的遍历,迭代器从0号桶、1号桶

2015-08-19 10:36:21 2271 1

原创 map和multimap映射容器

map容器map所处理的数据与数据库表具有键值的记录很相似,在键值与映射数据之间,建立一个数学上的映射关系。map容器的数据结构仍然采用红黑树进行管理,插入的元素键值不允许重复,所使用的结点元素的比较函数只对元素的键值进行比较,元素的各项数据可以通过键值检索出来。对于键值和映射数据,可以通过pair封装成一个结构对象,map要做的就是将这个pair对象插入到红黑树中,同时也需要提供一个仅使用键

2015-08-18 14:23:15 5597 4

原创 multiset多重集合容器

跟set集合容器相比,multiset多重集合容器也使用红黑树组织元素,只是multiset多重集合容器允许将重复的元素键值插入。元素的搜索依然具有对数级的算法时间复杂度,find和equal_range函数可以搜索出某一键值下的所有元素位置。创建multiset对象有以下几种方式。(1)    multiset()multiset ms;(2)    multiset(c

2015-08-14 14:16:18 1127

原创 set集合容器

set集合容器是使用红黑树[一种二叉检索树的数据结构]来组织泛化的元素数据。元素数据的检索使用的是二叉检索树的中序遍历算法,检索的效率高于vector、deque、和list等容器,由于采用中序遍历算法可以将二叉检索树中的键值由小到大遍历出来,所以set集合容器蕴含了元素间的有序性。红黑树的每个节点包含一个取值为红色或者黑色的颜色域,节点键值的插入必须确保树根节点的键值大于左子树所有节点的键值,而小

2015-08-14 12:55:13 957

原创 list双向链表容器

ist是双向链表的泛化容器,提供了splice和merge归并函数,sort函数利用list的数据结构特点对元素进行了归并排序。创建list对象创建list对象的方式主要有以下几种。 (1) list()list<int> l;(2) list(size_type n)list<int> l(10);(3) list(size_type n,const T&value)list<int> l(10

2015-08-13 16:56:15 764

原创 deque双端队列容器

C++中的STL还是比较有用的,尤其是在做科研实现算法的时候,之前也有用过,但是没怎么系统地学过,因此最近找了本书,大致浏览了一下,叶志军的那本《C++ STL开发技术导引》,科普、入门性质的一本书,写得比较浅[呵呵,勿喷]。下面的内容大部分是摘自该书。 deque双端队列容器(double-ended queue),可以在尾部、头部插入、删除元素,采用分块的线性结构来存储数据,两个迭代器分别指向

2015-08-13 13:54:50 1158

原创 HDOJ1160 Fat Mouse's Speed

FatMouse's Speedhttp://acm.hdu.edu.cn/showproblem.php?pid=1160 最长递增子序列问题的一个变体,实际上跟最长递增子序列问题没有任何本质的区别。定义一个结构体mice,设mice[i].w表示第i只老鼠的重量,mice[i].s表示第i只老鼠的速度。对mice结构体进行排序,以w为第一关键字,递增,s为第二关键字,递减。设d

2015-08-12 20:04:54 856

原创 vector向量容器

vector容器是数组的一个泛化推广,不仅可以像数组那样进行元素的随机访问,还可以在容器的尾端插入新元素,实现了Random Access Container和Back Insertion Sequence概念。vector具有自动的内存管理功能,对于元素的插入和删除,能够动态调整占用的内存空间。创建vector对象有多种方式 (1) vector(constA&a=A()) 创建一个空的vec

2015-08-12 10:38:24 746

原创 leetcode最长递增子序列问题

题目描述:给定一个数组,删除最少的元素,保证剩下的元素是递增有序的。分析:题目的意思是删除最少的元素,保证剩下的元素是递增有序的,其实换一种方式想,就是寻找最长的递增有序序列。解法有很多种,这里考虑用动态规划实现。开辟一个额外的一维数组dp[]用来记录以每个元素为结尾的最长子序列的长度,当然,还需要一个哈希表,用来保存最长子序列的元素。dp[i]表示以数组A[i]为结尾的最长子序列的长

2015-08-11 14:03:08 2938

原创 HDOJ2084数塔问题

数塔问题题目要求从顶层走到底层,若每一步只能走到相邻的结点,求经过的结点的数字之和最大值。很经典的DP,可以这样考虑,要求从塔顶到塔底最大路径之和,计算时可以考虑自底向上,走最后一步所选的数一定是塔底的某个值,向上退一层,对于倒数第二步,所走的是塔底往上一层较大的那个数,此时可以将倒数第二步所走的数与塔底较大的值加起来,记忆存储,依次往上推,一直推到塔顶,此时所计算出的结果一定是最大的。

2015-08-11 12:00:10 1007

原创 HDOJ1466

计算直线的交点数题目不是很难,根据点的产生过程,很容易知道,对于n条直线,其产生的交点数在[0,(n-1)n/2]中。其中,当所有的直线都平行时,交点为0;当所有的直线两两相交时,产生的交点数是(n-1)n/2,很容易证明,假设n条直线的两两相交时产生的交点数为s(n),容易得到递推关系式,s(n)=s(n-1)+n-1,即已知n-1条直线两两相交产生的交点数时,第n条直线会与剩下的n-1条直

2015-08-10 18:20:26 945

原创 动态规划小结

动态规划[dp]是解决问题很经典的算法。基本的思想,就是将一个问题转化为若干个子问题,当某个子问题的解已经算出来的时候,就将其记忆存储起来,以便于下次解决同一个子问题时就可以直接给出答案,这样的一个好处就是可以避免重复计算。动态规划适用于有重叠子问题和最优子结构性质的问题,通常能够达到把指数级的时间复杂度下降为多项式时间复杂度的效果。      需要注意的几个点:需要一个辅助空间,

2015-08-10 14:23:09 727

原创 HDOJ1071

The area 拿到题的第一想法,又是一道水题,知道P1、P2、P3三点的坐标,就可以确定抛物线的公式,确定抛物线的公式就可以进行积分,然后就没有然后了。纯粹的数学题。#includeusing namespace std;int main(){ double x1,y1,x2,y2,x3,y3,a,b,c,s; int n; while(cin>>n&&n)

2015-08-09 21:47:14 826

原创 HDOJ1005

Number Sequence 这一题拿到手,第一感觉是不会太难,毕竟算是比较靠前的题目,呵呵。随手写了一个,也知道应该会挂掉,因为1 <= n <= 100,000,000,#include <iostream>using namespace std;int main(){ int a,b,n; while(cin>>a>>b>>n && n) {

2015-08-09 21:03:00 1652

原创 HDOJ1021

Fibonacci Again当看到题目给出的输入数据n < 1,000,000的时候,就知道肯定不能按照题目的意思直接算出来F(n)。 仔细地看一下给出的F(n),F(0)=7,F(1)=11, F(n)= F(n-1)+ F(n-2),继续写几个F(2)=18, F(3)=29,F(4)=47,F(5)=76,F(6)=123,F(7)=199,F(8)=322,…,其实把F(n)算出来的意义

2015-08-09 16:59:41 784

原创 HDOJ1009

1009,又是一道水题,属于那一类看到题就能想到解决方案。思路很清晰,就是输入(M,N)和N个(J,F),对输入的(J,F)按照比值[可以理解为效益]降序排序,按照效益高低进行有序交易。 关键是如何对结构体进行排序,这里可以考虑用STL。#include<iostream>#include<stdlib.h>#include<stdio.h>#include<algorithm>using

2015-08-09 15:57:30 1000

原创 HDOJ1004

最近才有意识地开始刷HDOJ上的题目,先从水题开始练手,比如说1004。 该题目的意思很简单,第一行输入气球的个数n,以下n行输入n个气球的颜色,n为0时输入结束,要求输出哪种颜色的气球颜色最多。 这题是很简单,也用不到什么算法的东西,就是对输入的字符串进行比较和统计。 看到题的第一想法很简单,先抛开问题,先对输入的格式做一个尝试,就是对输入的结果进行遍历输出,呵呵,最初的尝试就折腾了很久,也

2015-08-08 10:41:54 2419

原创 组合数学之母函数问题

母函数问题是组合数学中非常经典的问题,大概是本科二年级的课程,很有意思的一门课,当然也是很精深的一门课。定义对于序列a0,a1,a2,…构造函数G(x): 则称函数G(x)是序列a0,a1,a2,…的母函数。 很明显,根据二项展开式,很容易知道(1+x)^n是序列C(n,0),C(n,1),…,C(n,n)的母函数。如果已知序列a0,a1,a2,…则对应的母函数G(x)便可根据定义给出。反之

2015-08-06 19:18:24 3104

xposed框架拦截微信客户端的当前位置

用开源框架xposed拦截腾讯微信客户端的当前位置,修改当前位置为北京,详细的原理说明见博客 http://blog.csdn.net/u011000290/article/details/46925713

2015-08-30

基于VC的Web服务器Demo

基于VC的Web服务器,在本地建立一个文件夹作为服务器的根目录,服务开启后,可以用浏览器访问本地文件,同时主界面返回详细的状态信息以便于管理员管理

2015-07-10

基于MFC的FTP客户端

基于MFC的FTP客户端,具有上传、下载、删除、匿名登录等功能

2015-06-17

基于遗传算法的矩形排样

利用遗传算法解决矩形排样问题,具有可视化的界面,输入数据为含有矩形的长和宽的文本文件,输出的结果以可视化的形式显示出来

2015-06-14

基于MFC的电梯调度仿真程序

仿真电梯的运行过程,具有可视化的界面,实现是基于VC的MFC

2015-06-14

基于xposed框架的发送时client端短信拦截

通过拦截WorkingMessage类的send方法,获取到mText属性变量的内容,通过对该内容进行加密处理实现对敏感短信信息的保护。其中,对于mText属性变量的获取,调用了XposedHelpers的findField方法,获取后将获取的内容整合成字节流的形式,通过对字节流的每一位的加密来实现对拦截短信内容的加密

2015-06-14

基于MFC的个人版浏览器DEMO

利用MFC封装好的类开发的个人浏览器,仅仅是Http编程的一个demo,除了输入地址栏访问该地址外,还可以刷新,前进,后退,查看源文件等

2015-06-13

基于遗传算法的MFC矩形排样UI

最近参见华中赛,选了A题,钢构件的排料问题,问题解决期间用到了遗传算法,自己用VC写了一个,这个是界面部分

2015-05-04

基于OpenGL的Demoscene

用OpenGL结合计算机图形学做一个三维动画演示,内含有详细的说明文档和源程序,采用Windows API,用C/C++实现,全屏模式和窗口模式,按ESC结束放映。程序由三大部分组成,Demo引擎、场景和公共工具包,为例采用RGB格式的纹理,粒子系统定义在结构体Particle中,过程纹理的算法采用Perlin Noise算法

2015-04-02

java模仿XP系统的计算器部分功能

用java编写的计算器,模仿的XP系统,不算是科学型的,仅仅模仿一下,练练手,希望对java的初学者有用

2014-07-05

blender源码

此压缩文件为blender源代码,对初学者可能有点困难,想学的话百度一下

2013-12-01

图表MFC模型

MFC图表开发模型。很实用,C++语言写的,运行无错误,根据源代码可以插入到自己的程序里

2013-09-26

动态模型数学建模

燃煤电厂特征动态模拟数学模型。跟数学建模有一拼。很实用

2013-09-26

MFC气泡例子

MFC自动弹出气泡,效果很美观.而且很实用,适合软件开发

2013-09-26

聊天系统c语言代码

很适合初学者的综合设计,用dev C就可以运行,不过里面有些debug,需要动脑筋修改,记住

2013-06-08

p2p聊天系统

c语言写的聊天软件,可以实现聊天功能,QQ二代

2013-06-08

空空如也

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

TA关注的人

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