- 博客(74)
- 资源 (7)
- 收藏
- 关注
原创 Haskell编程思想之五:世界的本质可能是函数
有个人为了维护Haskell,说宇宙何来状态?像C语言等过程式编程才是错的!没有状态,也没有所谓的“过程”,奇点爆炸之后,然后最后归于奇点,整个过程就是一个函数。以通常的过程来讲,那就是说,以时间为基准的“过程”本身是不存在的。那时间也就只是这个函数的一维输入,g = f(t)。也就是相对论说的四维。然后我想了想,其实也是,人类对世界的认识,其实是一个从“过程”到“函数”的提升过程,人的直觉以...
2019-06-07 22:39:58
857
原创 状态机(FSM)和语言解释器(DSL)
一、状态机实现下载了几个状态机的实现的代码,基本分下面几个逻辑:直接逻辑判断,使用IF ELSE,或者 SWITCH。 使用查表法,写上状态机的各状态,对应条件下,ACTION,同时转移的下一个状态,而查表法,也可以分两种:一是一个完整表,每次都遍历,直到找到对应的条项,然后进行切换。二是使用二维数组,把上面的一维表转换一下,table[当前状态][能够接收的条件],这样查表会...
2019-03-13 20:19:56
1012
原创 千万不要学设计模式
一、设计模式有用吗?我觉得除了方便与他人交流,包括写的代码别人方便阅读或者阅读别人的代码外,其它基本没什么特别用处了。因为如果你比较菜,而且理解能力一般,经验也浅,你强制学习和使用设计模式,容易误入歧途,生搬硬套,只适合研究和学习一下,能够明白最好,不明白就算了,还不如老实从面向对象分析设计以及UML等基础的东西学起。但如果你从面向对象以及UML研究起,能够老实研究完一本这样的书,最好...
2019-02-13 22:36:24
3774
1
原创 INI文件读写的支持的C++封装
之前工作中遇到需要用到配置文件,所以想到使用简单的INI,但网上只能找到读INI配置的代码,基本没有找到写操作的,就自己写了一个C++封装,由于写入是每次同步写入,所以不适合较大配置文件,但对于不大的配置文件还是较有用的。同时大家可以考虑写入优化,比如写入操作由使用者决定等。PS:转载或者使用请保留声明,谢谢!#ifndef INI_FILE_H_#define INI_FILE_...
2018-12-28 00:49:43
556
原创 Epoll的C++封装
之前因工作需要,封装的一个,贴出来供参考和使用。使用上,主要也是wait它,再利用重载的[]操作符进行操作,让人感觉更清晰明了一点。#ifndef EPOLL_H#define EPOLL_H#include <sys/epoll.h>#include <unistd.h>/** * @brief The Epoll class 对epoll的封...
2018-12-28 00:38:30
1854
原创 C++11之一 语法特性的改变
本文章以<深入理解C++11>书为目录和例子,进行简要的测试如说明或者总结,后续再对特殊的,信息含量较大的特性进入深入研究。#include <iostream>#include <memory>#include "tesh.h"using namespace std;//__func__宏,可以用在类中struct TestStruct{ ...
2018-12-20 20:03:28
175
原创 随机产生N个不重复数
一、完美想法b = f(a);a是线性的,而b是唯一,而且看起来是伪随机的。其中函数f,有个是RSA算法的函数。二、排除重复 先生成随机数,并用个数组等进行置位或者用HashSet判断为重复与非重复。 if(Arr[rand] == 1) 说明已经生产了这个数,然后继续生产下个随机数。用部分空间保存之前状态,判断次数减少为一次。 但这个...
2018-11-28 16:03:04
1159
原创 Haskell函数式编程思想之四 函数式思想
网上有本书,好像是日本人写的,《函数在你身边:直觉探索函数世界》,本书最后一章节,基本解答了函数式思维来看待世界的思维方式,描述的比较通俗。然后联想到《范畴论》这一纯数学的研究方法,表达的思路和思维基本是一致的,所以本书最后一节可以作为函数式思维的一个科普读物。具体内容可以网上查找阅读,里面也确认了我之前关于类型与函数之间关系的思考与猜测。类型和函数是相互依存的,函数是作为在类型之上的函数,类...
2018-09-23 00:54:22
176
原创 Haskell编程思想之三 函数的基本语法
Haskell函数基本语法逻辑分为以下三类:一、模式匹配模式匹配主要依赖数据的定义结构,属于一个解结构的过程,一般来看,跟随数据定义格式进行,也就是data的值构造子。二、函数的组合函数的组合,也就是分解为其它基本的小函数进行拼接,还有各个小函数之间高阶性,F1.F2.F3 x,类似数学F1(F2(F3(x))). 或者拼接 F1(x) + F2(F3(x)),反正就是函...
2018-09-18 23:02:25
293
原创 Haskell编程思想之二 函数式编程
haskell作为纯函数式编程语言,那什么是函数式编程?函数式编程后面的理论基础是什么图灵完备的lamada演算,我的理解就是,能够以这样方式描述世界,不管是动的还是静的。普通的程序语言大部分是过程式,也就是一些状态和过程,跟计算机结构吻合,也就是图灵机。那函数式编程呢?我的理解是描述事物和事物之间的关系为主,而此关系就是函数f,然后再大再复杂的事物,都是可以由小的关系组合出来。如果一...
2018-09-17 17:50:23
359
原创 Haskell编程思想之一 初识类型系统
函数classType 函数 和普通函数有区别吗?变量---一个代表 固定基本类型复合类型?类型变量:----------如果函数的类型签名里包含类型变量,那么就表示这个函数的某些参数可以是任意类型,我们称这些函数是多态的。对于函数这样的参数来说,叫parameterized type,参数化类型。-----------------data Abc = Aaa xx xx x...
2018-09-13 16:56:04
665
原创 Python核心编程-读书笔记-函数装饰器
python函数装饰器,只是高阶函数的一个语法包装而已,它的作用是可以不改变函数本身,但能够有机会改变函数的行为,给函数f(args)前后添加行为,或者改变它的参数传递等,而使用此函数的对象,依然是正常的调用,不同的装饰器,此函数调用的过程可能会有所变化。@f2@f1def f(args)两个装饰函数,f2和f1,那样等价于: f2(f1(f(args))),从f2->f1-&...
2018-08-29 15:17:37
151
原创 Python语言特性
基本语法python基本语法主要来自C、JAVA、HASKELL等其它语言,但只取最简单有用的部分,基本保持够用就好, 舍弃对性能和语言特性的追求。面向对象和C语言扩展接口等,能够让它保持简单好用的基础上,又不失扩展和灵活性。变量和表达式 python逻辑块不像c等语言这样使用一对花括号来区分,而是采用缩进方式来区分,凡是对齐的语句都是平行的逻辑块,这是最大的区别之一。...
2018-08-27 08:10:09
241
转载 UML序列图与协作图关系
1、序列图 序列图和协作图都是交互图,彼此等价,可以相互转化。序列图是对对象之间传送消息的时间顺序的可视化表示。序列图用于表现交互,侧重于强调时间顺序。 序列图将交互关系表示为一个二维图,如下图: 注:虚线表示,此时对象不处于激活状态,双道线,表示对象处于激活状态;消息使用从一个对象的生命线到
2016-09-04 23:15:50
3549
转载 UML活动图与流程图对比
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。活动图与流程图的区别(1)、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。(2)、活动图能
2016-09-04 16:44:49
1950
原创 repo服务器搭建
repo是一个python脚本集合,通过python脚本来管理git项目。一、安装git服务器,git协议支持等,最终git服务配置项如下:sudo chpst -ugit /usr/lib/git-core/git-daemon --verbose --reuseaddr --base-path=/home/git --export-all --enable=receive-pack
2016-08-11 14:05:12
212
原创 为什么是红黑树
红黑树设计的背景和灵感是什么?搜索了半天没有找到答案,但找到一些策略性的思考。AVL,平衡二叉树,是需要完全平衡的,对于查找操作来说每一步查找都是左右两边平衡的二分了,最坏的情况,lgN次比较,效率最高,但如果是插入或者删除当中一个元素,平衡打破后,需要采取所谓的“旋转”局部操作,进行再平衡,但要再建立完全的平衡,需要“旋转”的次数可能会较多,效率差。基于上面AVL的考虑,
2016-07-31 23:31:15
163
转载 关于二叉树本质的回答
转自知乎里面一个人的回答:作者:匿名用户链接:http://www.zhihu.com/question/37381035/answer/84584381来源:知乎著作权归作者所有,转载请联系作者获得授权。很明显,题主没有学的比较好。或者没参加过acm的相关训练。只是一个平时跟着学做些课后题然后混毕业的。二叉树,本质上,是对链表和数组的一个折中。。
2016-07-31 18:37:26
793
原创 排序算法笔记
注:部分代码来自网上冒泡排序:相临数据不停交换,这样每一趟后,后面一个数据就是最大或者最小的了。可以采取保存最后一次交换的位置来减少交换次数,因为这代表此位置后面数据没有发生交换,已经有序列了。此算法缺点是交换的次数过多//冒泡排序3void BubbleSort3(int a[], int n){ int j, k; int flag;
2016-06-19 13:14:32
174
转载 android升级脚本Edify语法简介(Updater-Script) 翻译:Kawvin
这是Android系统来运行updater-scripts的Edify语言的基本介绍。大部分的Edify命名都是函数,当调用这些函数结束的时候,会返回数据给脚本。当然,你也可以使用这些函数的返回值来确认成功与否,例如:ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Successfully
2012-08-28 22:03:14
468
转载 ext4磁盘镜像结构分布(转)
大体上看,ext4文件系统的磁盘布局与前面介绍的xfs有些类似,它同样是先把磁盘分成一个个相同大小的block块(每个block块的大小默认是4K),然后把这些block块逻辑上合成多个group组,每个group组内的布局基本一致,除了第一个group组(即group 0)前面有1024字节的保留空间外。功用占用块数Group 0
2012-08-13 18:40:00
363
原创 git常用操作命令记录
#git 配置 用来配置个人相关信息 设置,有全局配置与局部配置之分git config --global user.name "John Doe"git config --global user.email johndoe@example.comgit config --global core.editor emacsgit config --global merge.tool
2011-12-01 15:27:49
1018
原创 android 汇编指令错误
android默认arm指令集是thumb,如果使用32位arm指令时,需要加LOCAL_ARM_MODE := arm.
2011-11-28 19:54:37
232
原创 java local ref
FindClass /NewString/ NewStringUTF/NewObject/ GetObjectField等产生的都是LocalRef.
2011-10-31 12:54:02
116
原创 sshfs用expect自动挂载失败记录
记录一下,用sshfs自动挂载服务目录一直失败,最后谷歌了下,找了个方法,记录如下 :#!/usr/bin/expectset timeout 30spawn -ignore HUP sshfs -o transform_symlinks -o fol
2011-09-23 18:32:44
295
原创 C++ 错误: undefined reference to VTT vtable
今天很郁闷,因为这个错误折腾了半天,原来也经历过,没记下来,结果又浪费这么多时间。如果提示有这样的错误,而你又确定你已经完整的实现了构造 析构函数,又找不出其它原因,那就找找类里面有没有定义但又没有实现的virtual函数,相当郁闷啊,一遇到这样的情况,报的错误就莫名其妙!
2011-07-18 17:22:30
505
原创 repo
#!/bin/sh## repo default configuration##REPO_URL='git://android.git.kernel.org/tools/repo.git'REPO_REV='stable'# Copyright (C) 2008 Google I
2011-07-15 17:22:52
655
转载 Android 的属性系统
<br />每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。 <br />在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属性服务。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。属性服务将
2011-04-12 16:40:00
151
原创 早期磁盘挂载日志
<br /><br />一、tegra2 SD卡挂载为只读解决<br /> 可能是由于底层或者硬件方面的原因使SD卡的是否为只读判断结果一直为只读,这样上层进行读写打开或者读写挂载时始终为只读。临时解决办法是把判断函数返回值改为始终可读写的。具体修改如下:<br /> 把文件/kernel/drivers/mmc/host/sdhci-tegra.c里面函数tegra_sdhci_get_ro改成直接返回0<br /> static int tegra_sdhci_get_ro(struct sd
2011-04-12 14:13:00
1366
1
转载 cpio命令周详用法
<br />示例:<br /> <br /><br />cpio -i -t -F ./ramdisk.img > list<br />cpio -o -H newc -O myramdisk.img < list<br />cpio - 存取归档包中的文件 <br /><br />语法 Syntax <br /><br />cpio -o [ -aBLuvV ] [ -C bufsize ] [ -c | -H format ][ -K volumesize ] [ [ -O file [, file .
2011-04-12 09:27:00
271
转载 块设备读写流程
<br /><br />在学习块设备原理的时候,我最关系块设备的数据流程,从应用程序调用Read或者Write开始,数据在内核中到底是如何流通、处理的呢?然后又如何抵达具体的物理设备的呢?下面对一个带Cache功能的块设备数据流程进行分析。<br /> <br />1、 用户态程序通过open()打开指定的块设备,通过systemcall机制陷入内核,执行blkdev_open()函数,该函数注册到文件系统方法(file_operations)中的open上。在blkdev_open函数中调用bd_acqu
2011-04-05 16:02:00
159
转载 Linux驱动中,probe函数何时被调用
<br />声明:以下主要内容参考自:关于struct device_driver结构中的probe探测函数的调用<br />http://blog.chinaunix.net/u2/71164/showart.php?id=1361188<br /><br />用SourceInsight跟踪:<br />从driver_register看起,此处我的这里是:<br />int driver_register(struct device_driver * drv)<br />{<br />if ((d
2011-03-28 11:26:00
302
转载 android任务.进程.组件管理
<br /><br />任务、进程和线程<br /> <br />关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。<br /> <br />Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家更好的进行开发和配置。<
2011-01-17 16:59:00
395
转载 PackageManagerService(PackageParser)解析apk的过程
<br />1.apk的资源文件有AssetManager来管理的<br />2.解析AndroidManifest的service的代码流程<br />PackageManagerService.java->installPackage()->handleMessage(INIT_COPY)->handleMessage(MCS_BOUND)-><br />HandlerParams.java->startCopy()->handleReturnCode()<br />PackageManagerServ
2011-01-11 15:19:00
2759
2
原创 ubuntu SVN命令大全
<br />1、将文件checkout到本地目录svn checkout path(path 是服务器上的目录)<br />例如:svn checkout svn://192.168.1.1/pro/domain<br />简写:svn co<br />2、往版本库中添加新的文件svn add file<br />例如:svn add test.php(添加test.php)<br />svn add *.php(添加当前目录下所有的php文件)<br />3、将改动的文件提交到版本库<br />svn
2011-01-10 09:10:00
176
原创 Android程序完全退出的三种方法
<br /><br />Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。<br /> 首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧.<br /> 1. Dalvik VM的本地方法<br /> android.os.Process.killProcess(android.os.Process.myPid
2011-01-05 19:04:00
144
转载 Android系统定义Intent列表
<br />所有的INTENT列表 <br />android.intent.action.ALL_APPS <br />android.intent.action.ANSWER <br />android.intent.action.ATTACH_DATA <br />android.intent.action.BUG_REPORT <br />android.intent.action.CALL <br />android.intent.action.CALL_BUTTON <br />android.
2011-01-05 18:58:00
402
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人