- 博客(106)
- 收藏
- 关注
原创 解决emacs不能输入中文的问题
1. locale -a | grep zh_CN看是否由zh_CN.utf82. 如果有zh_CN.utf8,可以在console里运行export LC_CTYPE="zh_CN.utf8"在同一console中运行emacs,看是否可以输入中文了3. 如果可以输入中文,可以把上面的命令写入.bashrc...
2022-05-26 14:19:07
731
原创 emacs使用reveal.js备忘
1. init-local.el(require 'ox-reveal)(setq org-reveal-root "file:///path/to/reveal.js");;;(setq org-reveal-title-slide nil)必须安装ox-reveal包,并正确设置reveal.js根目录2. 发布头#+title:#+author:#+email:#+REVEAL_INIT_OPTIONS: width:1600, height:900, margin:.
2021-04-25 18:08:46
270
原创 使用deepin-emacs
1.从deepin应用商店下载deepin-emacs2.安装文泉驿微米黑字体,否则启动出错不能进入配置文件sudo aptitude install ttf-wqy-microhei3.从命令行启动会看到(deepin-emacs:17751): GLib-GObject-CRITICAL **: 16:34:35.317: g_value_set_boxed: assertio...
2020-05-06 17:29:48
4880
原创 deepin20安装使用坚果云
1.坚果云从deepin的应用商店消失了,所以要从官网下载坚果云,我下的ubuntu的64位debhttps://www.jianguoyun.com/static/exe/installer/ubuntu/nautilus_nutstore_amd64.deb2.使用sudo dkpg -i安装上面的deb包3.安装失败没关系,用sudo apt install -f安装,或者用应用...
2020-05-06 14:12:46
3935
6
原创 研发领域visio外的选择——ditaa,plantuml,graphviz
1. ditaa,plantuml,都需要java支持,纯文本。画个架构图,uml够用了2.draw.io,在线的绘图软件,chrome有插件版,wyswyg3.dot+graphviz,贝尔实验室,wyswyg,dsl,有一定门槛,画架构、流程图很好,uml的话想虐自己(锻炼coding能力)也行...
2019-09-02 11:23:52
521
原创 Linux设备驱动模型框架分析(六)——LDDM的设备管理:uevent,mdev
ueventuevent是kobject的一部分,用于在kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。该机制通常是用来支持热拔插设备的,例如U盘插入后,USB相关的驱动软件会动态创建用于表示该U盘的device结构(相应的也包括其中的kobject),并告知用户空间程序,为该U盘动态的创建/dev/目录下的设备节点,更进一步
2017-09-01 16:04:51
1396
1
原创 Linux设备驱动模型框架分析(五)——LDDM的展现:sysfs
sysfs是一个基于RAM的文件系统,它和kobject一起,可以将Kernel的数据结构导出到用户空间,以文件目录结构的形式,提供对这些数据结构(以及数据结构的属性)的访问支持。 sysfs目录所包含内容/sys/devices这是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构
2017-09-01 15:45:17
1772
原创 Linux设备驱动模型框架分析(四)——LDDM的高层视图class
类是一个设备的高层视图,抽象出了底层的实现细节。类允许用户空间使用设备所提供的功能,而不关心设备是如何连接的,和它们是如何工作的。类子系统是向用户空间导出信息的最好方法。类的核心数据结构是class,在分析device中介绍过,这个class不如bus,device,driver好理解,我理解它的主要功能是一是设备管理,二是抽象出一类设备的公共属性。前面分析subsys_private时说
2017-08-10 09:51:22
1093
原创 Linux设备驱动模型框架分析(三)——LDDM的实体bus_type、device和device_driver
在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其它设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者Platform Bus。device和device driver是Linux驱动开发的基本概念。Linux kernel的思路很简单:驱动开发,就是要开发指
2017-08-05 08:33:47
2979
原创 linux设备驱动模型架构分析(二)——LDDM的底层实现kobject
Linux设备驱动模型体系十分庞大,在不涉及细节的情况下建立顶层图景比较困难,我们采用自底向上的分析方法,首先分析关键的数据结构,然后再建立关键数据结构的关系。在阅读Linux内核源代码时(不仅仅对linux源码适用),通过核心数据结构,即可理解某个模块大部分逻辑,使用面向对象思想的设备模型部分尤为明显。这种思维方法值得刻意地锻炼。(以下内容参考http://www.wowotech.NET/
2017-07-28 08:12:24
1609
原创 linux设备驱动模型架构分析(一)——概述
概述LDD3中说:“Linux内核需要一个对系统结构的一般性描述。”这个描述就是linux设备驱动模型(下面简称为LDDM)。LDDM不是独立存在,其体系如下图所示:LDDM体系结构对架构的每一部分本文都会开辟独立的章节进行描述。暂且抛开这个架构,首先从总体上了解一下LDDM。LDDM与驱动程序密切相关,而驱动程序处于linux系统中的什么位置呢?我们自顶向
2017-07-27 18:21:49
3310
2
原创 我的软件开发团队的核心价值观
CTRLS := C opyrightNo ParicySE HonorOpen SourceT extEditorSCMLiteral ProgrammingUTF-8KeyBoardR efactroyPDCARepeatClean CodeL inuxerDistibutionTerminalNot Only Compiler
2017-07-14 08:36:35
4003
原创 搭建windows git服务器
1.在服务器端安装Copssh,目前已经收费,可以找到以前的免费版本(这样不知道有没有版权问题,如果有请告知)2.在服务器端和用户端都安装windows版git,选择只在git bash下使用,建议修改一下安装路径,避免program files这样的空格问题3.在服务器端修改/copssh_install_path/ICW/etc/profile,在PATH环境变量中加入git的bin和
2017-07-11 09:18:18
1541
原创 Doxygen极简使用说明
DoxygenTable of Contents1. Introduction2. Syntax2.1. 简要描述2.2. 函数描述2.3. 行尾注释2.4. 对于生成格式的说明3. Application1 IntroductionDoxygen是一种开源的,跨平台的,以类似Javadoc风格描述的文档系统。简单的说就是,按照一定的格式写注
2017-07-07 08:18:32
800
原创 利用CGI环境变量和符号链接减小CGI程序体积
1. 起因有个应用的CGI程序很大,每个程序strip后都还有将近1MB的大小,flash空间有限,考虑减小程序部署空间又不改变外部接口程序的方法。2.分析1.cgi主程序代码都及其相似,不同的就是xml的类型。这里的类型是硬编码的,如果可以在cgi程序中动态获取http的请求类型,从而确定xml类型就可以把这些程序合一。2.原设计是不同类型的xml对应不同的url,合一后url就
2017-07-01 10:44:14
461
转载 篆刻学简体——第一章
来自https://tieba.baidu.com/p/3946406730第一章 述篆第一节 印章文字,尚未成为完全之文字。结绳有文字之性质,而未有文字之形体,八卦具文字之形体,而未有文字之应用,其去书契盖尚差一间也。迨黄帝史臣仓颉沮诵变八卦而为书契,著[1]于竹帛,是为吾国文字之初祖。许慎曰:“仓颉之初作书,盖依类象形,故谓之文,其后形声相益,即谓之字。文者,物象之本也,字
2017-06-26 08:36:33
3270
原创 linux服务器免密登陆(极短)
1. linux服务器支持ssh协议,并启动sshd2. 使用工具生成自己的公私钥对(例如sshgen(安完git自带),putty的puttygen),一般基于rsa1协议,rsa2可能需要转一下,这一步会生成两个文件公钥文件和私钥文件,私钥文件保存好,公钥文件下面会用3. 在~/.ssh目录下有一个authorized_keys文件,没有就建一个。~是你的用户名的默认目录4. 将2
2017-06-23 17:22:20
379
原创 [笔记]WBS方法论
WBS方法论Table of Contents1. 建立WBS步骤2. WBS的重要准则3. WBS逻辑基础3.1. 百分百原则3.2. WBS结构模式3.3. 产品分解元素3.4. 服务分解元素3.5. 结果分解元素3.6. 横向关联元素3.7. 项目管理元素1 建立WBS步骤确定项目目标。着重于项目产生的 产品 , 服务 , 结果 ;
2017-06-23 17:05:01
2400
转载 Org Mode - Organize Your Life In Plain Text!
原文链接Table of Contents1. How To Use This Document2. License3. Change History - What's new4. Getting Started4.1. Getting org-mode with Git4.2. Org-Mode Setup4.3. Organizing Your Life Into
2017-05-22 10:37:13
7770
转载 A protocol for Dying
这篇文章是Pieter Hintjens——zeromq的创造者写的,他于2016年10月选择安乐死。他在生命的最后阶段写下了这篇文章,以他一直从事的工作——协议开发的方式向世界宣布他的决定。从文章中可以看到一个人格健全的人对于生命,工作和尊严的思考,看得我热泪盈眶。没有比亲临死亡的人更有权利谈论如何面对死亡。在此发布这篇文章,希望给生的人以启示。死亡的协议原文地址是 A
2017-05-08 09:08:56
601
原创 如何成为技术“高手”
1. 对技术如何看待?你热爱技术吗?有前辈说:使用c语言的人的技能在第三年就比较停止。所以,C语言不是一门业务带动技术的语言。C语言后续需要自己学习。计算机基础很重要。嵌入式领域,公司技术线精细分工模式可能影响深度发展,需要自我学习。不能把linux当做编译器用,需要磨练自己的技术。作为软件工程师,尽量做到能用纯文本的地方就用纯文本。要注意深挖细节。版本管理用在平常开发工作中,作为管理工具
2017-05-06 14:37:47
786
转载 Yocto介绍
1.经查Yocto也切换到了glibcYocto Project™ 是一个开源项目,设立该项目是为了使嵌入式Linux® 开发更简单,更易于在不同架构间进行移植。本文将介绍该项目并提供如何开始使用该项目的分步指导。概述[size=1.166em]Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬
2017-05-06 14:14:39
1296
转载 How to send pull request on Git
原文链接Both Git (the software) and GitHub (the web service) have a concept called "pull request", and unfortunately they are not exactly the same thing.Native GitThe native Git request-pull c
2017-04-25 08:32:33
470
转载 [翻译] Emacs改变了我的人生 (发生在Emacs和Ruby之间的故事)
转自:http://ruby-china.org/topics/2262得益于 @fly2never的分享, 我看到一个有关松本行宏先生当年如何使用Emacs, 以及如何使用Emacs实现Ruby的PPT演示稿, 其中讲了许多我原先不知道的, 发生在Emacs和Ruby之间的故事.原文链接:http://www.slideshare.net/yukihiro_matz/ho
2017-03-25 11:23:36
912
原创 [记录]Ubuntu 16.04安装软件遇到“kde-config-telepathy-accounts > 15.04”问题
使用apt-get -o Dpkg::Option::="--force-overwrite" -f install强制安装解决。-o选项:Set a congiure option, this will set an arbitary option.
2017-03-21 09:07:15
859
1
原创 算法导论 5.4-1
1 问题一个房间里必须要有多少人,才能让某人和你生日相同的概率至少为1/2?必须要有多少人,才能让至少两个人为7月4日的概率大于1/2?2 分析与解答P{n个人中有人与你生日相同} = 1-P{n个人中没有人与你生日相同} = 1-(364/365)n >=1/2所以(364/365)n n >= -1/log2 (364/365)n >= -lg2/l
2014-01-29 10:48:50
1714
1
原创 算法导论 5.3-6
1 问题解释如何实现算法PERMUTE-BY-SORTING,来处理两个或多个优先级相同的情况。亦即,即使有两个或多个的优先级相同,你的算法也必须产生一个均匀随机排列。2 分析与解答感觉就是遇到重复的就反复执行,但是不会证明它能产生均匀随机排列PERMUTE-BY-SORTING(A) n <- length[a] P[1] <- RANDOEM
2014-01-29 08:47:20
1630
原创 算法导论 5.3-5
1 问题证明程序PERMUTE-BY-SORTING的数组P中,所有元素都唯一的概率至少为1-1/n。2 分析与解答证明:P{所有元素都唯一} = n3(n3 -1)(n3 -2)…(n3 - n+1) / (n3)n= 1 * (n3 -1)/n3 * (n3 -2)/n3 …(n3 -n+1)/n3= 1*(1- 1/n3 )(1- 2/n3 )
2014-01-29 08:40:30
2039
原创 算法导论 5.3-4
5-3-4Table of Contents1 问题2 分析与解答1 问题Armstrong教授建议使用下列过程来产生均匀随机排列:PERMUTE-BY-CYCLIC(A)1 n n6 then dest 2 分析与解答这段代码得到的数组B实际是将A随机循环右移n位,显然是不能得到A的所有排列的,所以不是均匀随机排列。由于P
2014-01-22 14:08:08
1847
原创 算法导论 5.3-3
1 问题假设不是将元素A[i]与子数组A[i…n]中的随机一个元素相交换,而是将它与数组任何位置上的随机元素相交换:PERMUTE-WITH-ALL(A)1 n <- length[A]2 for i <- 1 to n3 do swap A[i] A[RANDOM(1, n)]这段代码会产生均匀随机排列吗?为什么会?或为什么不会?
2013-11-19 16:50:56
2332
原创 算法导论 5.3-2
1 题目Kelp教授决定写一个过程来随机产生一个非同一排列的任意排列。他提出了如下的过程:PERMUTE-WITHOUT-IDENTITY(A)1 n <- length[A]2 for i <- 1 to n-13 do swap A[i] A[RANDOM(i+1, n)]这段代码实现了Kelp教授的意图了吗?2 分析与解答
2013-11-19 12:21:06
1893
1
原创 算法导论 5.3-1
1 问题Marceau教授对引理5.5证明过程中使用的循环不变式表示异议。他对在第一次迭代之前循环不变式是否为真提出质疑。他的理由是人们可以容易地宣称空数组不包含0排列。因此空数组包含0排列的概率应该是0。所以第一次迭代之前循环不变式无效。请改写过程RANDOMIZE-IN-PLACE,使其相关的循环不变式在第一次迭代之前对非空数组仍使用,并为你的过程修改引理5.5的证明。
2013-11-19 10:59:39
1562
1
原创 算法导论 5.2-5
1 题目假设A[1..n]是有n个不同的数构成的的数组。假设A的元素选自上的一个均匀随机排列。利用指示器随机变量来计算A中逆序对的期望数目。2 分析与解答设X为A中逆序对的数目的随机变量,指示器随机变量Xij = I{(i,j)是A的逆序对}。那么X=∑i=1n ∑jXij,所以E(X)=∑i=1n ∑jE(Xij)=∑i=1n ∑jPr{(i,j)是A
2013-11-18 11:44:17
1514
原创 算法导论 5.2-4
1 题目利用指示器随机变量来解决帽子保管问题(hat-check problem):有n为顾客,他们每个人给餐厅负责保管帽子的服务生一顶帽子。服务生以随机的顺序将帽子归还给顾客。请问拿到自己帽子的客户的期望数目是多少?2 分析与解答设X是拿到自己帽子的客户的数目的随机变量。Xij 是第i位客人拿到第j位客人帽子这个事件的指示器随机变量,即Xij = I{第i位客人拿
2013-11-18 11:17:09
1889
原创 算法导论 5.2-3
1 题目利用指示器随机变量来计算掷n次骰子总和的期望值。2 分析与解决令X为一个随机变量,其值等于掷n次骰子点数的综合。令X_ ij 对应于第i次掷骰子得到的点数是j这个时间的指示器随机变量。所以Xij = I{第i次掷骰子得到的点数是j},并且X=∑i=1n ∑j=16 jXij 。E(X)=E(∑i=1n ∑j=16 jXij )= E(∑j=16 jX
2013-11-11 18:04:21
1773
原创 算法导论 5.2-1 5.2-2
1 题目在HIRE-ASSISTANT中,假设应聘者以随机顺序出现,正好雇用一次的概率是多少?正好雇用n次的概率是多少?正好雇用两次的概率是多少?2 分析与解答正好雇用一次只有最有资格的面试者第一个出现的情况下成立,所以概率为(n-1)!/n!=1/n。正好雇用n次的情况是面试人的资格正好从低到高排列,所以概率为1/n!。正好雇用两次的情况是第二有资格的面试
2013-11-11 17:35:04
1849
3
原创 人人校园招聘笔试题 vs 算法导论练习题
偶然在网上看到了人人校园招聘的两道笔试题:1、给定一个有序数组a,长度为len,和一个数X,判断A数组里面是否存在两个数,他们的和为X,bool judge(int *a, int len, int x),存在返回true,不存在返回false2、给定有n个数的数组a,其中超过一半的数为一个定值,在不进行排序、不开设额外数组的情况下,以最高效的算法找到这个数:int find(in
2013-10-18 15:45:24
1199
原创 算法导论 5.1-3
1 题目假设你希望以各1/2的概率输出0和1。你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1-p输出0,其中02 分析与解答画出BIASED-RANDOM真值表输出值01概率1-pp基于BIASE-RANDOM真值表,画出独立的两次BIASED-RAND
2013-10-14 12:01:22
1963
原创 算法导论 5.1-2
1 题目描述RANDOM(a,b)过程的一种实现,它只调用RANDOM(0,1)。作为a和b的函数,你的程序的期望运行时间是多少?2 分析与解答RANDOM(0,1)以等概率生成0或1,将区间[a,b]中的整数以2进制表示就可以只用0和1来表示区间中的任意数,再设[a,b]中的整数有n位,那么使用RANDOM(0,1)就可以生成n位二进制整数的全集,而区间[a,b]
2013-10-14 10:32:55
1644
原创 算法导论 5.1-1
1 题目证明:假设在程序HIRE-ASSISTANT的第4行中,我们总是能够决定哪一个应聘者最佳,这就蕴含着我们知道应聘者排名的总次序。2 分析与解答证明:由于应聘者出现的顺序是随机的,所以所有应聘者的全序序列的任意一个都有可能出现。如果程序HIRE-ASSISTANT总是能决定哪一个应聘者最佳,就意味着无论应聘者全序序列中的那个序列出现,程序都可以比较出两个应聘者
2013-10-14 08:31:07
2149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人