安卓SD卡输入输出
1、首先AndroidManifest.xml里面要写权限,如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses -permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses>
<!-- 往SDCard写入数据权限 -->
<uses -permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses>
或
<uses -sdk android:minSdkVersion="3"></uses>
// 写文件
try {
File myFile = new File("/sdcard/mysdfile.txt");
myFile.createNewFile(); // 创建文件
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(i); // 填内容
myOutWriter.close();
fOut.close();
Toast.makeText(SongsActivity.this, "写入文件成功", Toast.LENGTH_LONG)
.show();
} catch (Exception e) {
Toast.makeText(SongsActivity.this, "写入文件失败" + e, Toast.LENGTH_SHORT)
.show();
}
// 读文件
File file = new File("/sdcard/mysdfile.txt");
try {
FileInputStream inputStream = new FileInputStream(file);
byte[] b = new byte[inputStream.available()];
inputStream.read(b);
String cc = new String(b);
Toast.makeText(SongsActivity.this, "读取文件成功", Toast.LENGTH_LONG)
.show();
getListView().setDividerHeight(Integer.parseInt(cc));
} catch (Exception e) {
Toast.makeText(SongsActivity.this, "读取失败" + e, Toast.LENGTH_SHORT)
.show();
}
JAVA
java Commander | java Burner | java Formatter
第一次知道JAVA可以这么写,其实应该还有很多有趣的写法
计算机图形之全息投影
室友做的(伪)全息投影原理很简单,效果很棒!
结论:简单的东西也是可以有很棒的演示!
全息投影制作教程:
百度贴吧:
Python 用字典写 NFA to DFA
NFA to DFA python
比如说这个字典:
这是我的输入,输入一个NFA
dictNFA = { 'q1': { 'e': ['q2', 'q11'], '0': [''], '1': [''], 'acep': False, 'start': True }, 'q2': { 'e': ['q3', 'q5'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q3': { 'e': [''], '0': [''], '1': ['q4'], 'acep': False, 'start': False }, 'q4': { 'e': ['q5', 'q3'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q5': { 'e': [''], '0': ['q6'], '1': [''], 'acep': False, 'start': False }, 'q6': { 'e': ['q7', 'q9'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q7': { 'e': [''], '0': [''], '1': ['q8'], 'acep': False, 'start': False }, 'q8': { 'e': ['q9', 'q7'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q9': { 'e': [''], '0': ['q10'], '1': [''], 'acep': False, 'start': False }, 'q10': { 'e': ['q11', 'q2'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q11': { 'e': ['q12', 'q14'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q12': { 'e': [''], '0': [''], '1': ['q13'], 'acep': False, 'start': False }, 'q13': { 'e': ['q14', 'q12'], '0': [''], '1': [''], 'acep': False, 'start': False }, 'q14': { 'e': [''], '0': [''], '1': [''], 'acep': True, 'start': False }, }
dictDFA.keys()输出的是列表:
['q14', 'q11', 'q10', 'q13', 'q12', 'q1', 'q3', 'q2', 'q5', 'q4', 'q7', 'q6', 'q9', 'q8']
顺序是固定的这个形式
def loopB(xNFA, xe, tmpInI):
当xe=ε时这个是用循环将q1->q2(消耗ε:the empty string)q1->q11
然后q2->q3...
当xe=0时这个循环q5->q6(消耗0)
当xe=1时这个循环q7->q8(消耗1)
如果要找q1, 不能用dictDFA.keys()[0]
从这个列表得知dictDFA.keys()[0]变成了'q14'
q1的关键是它的'start'是true
那么只能用循环一个一个找
def seachStartOrAccept(startOrAccept): #这个是用来查账它开始start或者结束accept(accept就是两个圈)
for x in xrange(0, len(dictNFA.keys())):
if dictNFA.values()[x][startOrAccept]:
return dictNFA.keys()[x]
dictNFA.values()[x][startOrAccept]其实是dictNFA.values()[x]['start']
tmpII = list(set(tmpII))用这个函数是为了除掉列表里面的重复项,列表重复是允许的,字典里面重复是不允许的。
dictDFA.update({ str(tmpIII): { '0': tmpIIIa, '1': tmpIIIb, 'start': False, 'acep': False } })
字典用update()添加新项目,如果重复,那么新添加的项会替换旧的项
程序开始:
先得出第一个项tmp0
然后tmp0消耗0得到tmp1
tmp0消耗1得到tmp2
tmp1消耗0得到tmp3
tmp1消耗1得到tmp4
。。。以此类推。。。
可以得到形如:
0 1 2
1 3 4
2 5 6
3 7 8
...
树状图如下:
用一个循环让它循环下去,什么时候停止呢?
就是当我被选出来的数,比如说4和之前的1相同,那么4就停止了
if str(tmpIIIa) not in dictDFA.keys():
loopNFAtoDFA(tmpIIIa)
最后得到这个结构的字典:
dictDFAend = {
str(qA): { '0': 0, '1': 1, 'start': False, 'acep': False },
str(qB): { '0': 0, '1': 1, 'start': False, 'acep': False },
str(qC): { '0': 0, '1': 1, 'start': False, 'acep': False },
str(qD): { '0': 0, '1': 1, 'start': False, 'acep': False },
str(qE): { '0': 0, '1': 1, 'start': False, 'acep': False },
}
NFA to DFA 原理如此图
接下来最小化这个DFA:
首先将non-accept组成一组,accept组成一组
non-accept消耗0归不同类的各自分开,若为同一类,则在一起。
non-accept一类的消耗1归不同类的各自分开,若为同一类,则在一起。
最后连接每一个类。
NFA转化为DFA,并且Minimum DFA过程如下:
Python raw_input input
程序如下:
# -*- coding: cp936 -*-
#简单输入
name = raw_input("你猜:")
print "hello. " + name + "!"
name2 = input("你再猜(请输入数字,或者带有引号的字符串):")
print name2
Result:
>>> name = raw_input("你猜:")
你猜:d
>>> print "hello. " + name + "!"
hello. d!
>>> name2 = input("你再猜(请输入数字,或者带有引号的字符串):")
你再猜(请输入数字,或者带有引号的字符串):d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'd' is not defined
>>> name2 = input("你再猜(请输入数字,或者带有引号的字符串):")
你再猜(请输入数字,或者带有引号的字符串):3
>>> print name2
3
说明:
# -*- coding: cp936 -*- 指定代码保存时候使用的字符集,建议使用UTF-8,cp936 是 Windows 系统使用的字符集。
excel作为数据库!
C++操作excel:使用C++读写Excel
C#操作excel:URL
Android
安卓itro
http://android.yaohuiji.com/about
Android layout
fill_parent
布局指将视图(在Windows中称为控件)扩展以填充所在容器的全部空间。
wrap_content
布局指根据视图内部内容自动扩展以适应其大小
界面的设计和CSS设计方式很像
Android imageView
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
ImageView.ScaleType
八种类型即
CENTER,CENTER_CROP,CENTER_INSIDE,FIT_CENTER,FIT_START,FIT_END,FIT_XY,MATRIX
References:
- Android. API之ImageView.ScaleType代码演示
- Android. ImageView.ScaleType设置图解
Web 开发前端要求
要求
- 高超的原生JavaScript开发水平和丰富经验。最好参与过框架研发或深入研读开源js框架代码。
- 精通HTML5、CSS,AJAX及前端性能优化,能高效开发兼容各种现代浏览器的前端代码。
- 熟练使用jQuery,了解其它几种js框架的设计与使用。研读过jQuery等框架代码最佳。
- 苛求代码质量和产品品质,乐于不断改进并抽象完善代码结构。
- 突出的快速理解能力与高效表达能力,优秀的团队协作及沟通能力。
- 极强的好奇心和优异的习能力。积极分享知识技能与工作成果。
- 理解基本的用户体验原则,崇尚简约优雅的设计。
若符合以下条件将令我们非常高兴:
- 具备PHP/Python/Ruby/Java等任意一门后端语言经验,有前后端协同开发经验。
- 有jQuery插件开发经验,对移动平台js开发有研究。
- 熟悉iOS、Andriod等移动设备的特性,了解各种浏览器特性。
- 深度使用Google、Stack Overflow等技术工具。
- 优秀的英语阅读与书写能力。
- 熟练使用Mac OS X系统、*nix命令行环境。
请提供以下服务的个人页面或独立blog:GitHub、Stack Overflow、Quora、Twitter、V2EX
软文一则
摘自《互联网——降级论》片段 from http://news.cnblogs.com/n/148842/
除此以外,我还发现一个现象,中国消费者在与奸商们的长期斗争中,已经培养出了一种非常苦B的品质:只要不被坑,他就谢天谢地。如果商家严格做到了承诺的每一件事情,客户就会感动的泪如泉涌。如果商家不仅做到了所有承诺的事情,还很贴心的提供了一些额外的服务(比如我们给每位客户赠送非常好吃的樱桃和进口巧克力作为甜点),那么客户就会激动的哭天喊地、奔走相告,推荐给他认识的每一个人。
其实这片肮脏的国土,就是上天赐予 IT 青年们的最好机会。
BASIC 语言与机器人
实验一:I/O控制
' {$STAMP BS2}
' {$PBASIC 2.5}
DO
LOW 0 :I/O口输出低电平
LOW 1 :I/O口输出低电平
PAUSE 1000 :延时1000ms
HIGH 0 :I/O口输出高电平
HIGH 1 :I/O口输出高电平
LOOP
END
实验二:电机控制
' {$STAMP BS2}
' {$PBASIC 2.5}
DO :无条件无限循环
PULSOUT 12,650 :表示在12I/O口输出650*2us的脉冲
PULSOUT 13,850 :表示在12I/O口输出850*2us的脉冲
PAUSE 20 :表示延时20ms
LOOP
注意:PULSOUT 12,650改为750则电机停转,电机转速控制应在650到850之间越靠近750,转速越低。
' {$STAMP BS2}
' {$PBASIC 2.5}
count1 VAR word :count1为16位变量0-65535
count2 VAR byte :count2为8位变量0-255
count3 VAR nib :count3为4位变量0-15
count4 VAR bit :count4为1位变量0-1
FOR count1 =1 TO 100
PULSOUT 12,735
PULSOUT 13,755
PAUSE 20
Next
' {$STAMP BS2}
' {$PBASIC 2.5}
count1 VAR Word
count2 VAR Byte
count3 VAR Nib
count4 VAR Bit
DO
GOSUB Backward :调用子程序Backward
GOSUB liftward :调用子程序liftward
GOSUB Forward :调用子程序Forward
LOOP
Rightward: :通过标号定义子程序
FOR count1 =1 TO 100
PULSOUT 12,850
PULSOUT 13,750
PAUSE 20
NEXT
RETURN :子程序返回
Liftward:
FOR count1 =1 TO 100
PULSOUT 12,750
PULSOUT 13,850
PAUSE 20
NEXT
RETURN
Backward:
FOR count1 =1 TO 100
PULSOUT 12,850
PULSOUT 13,650
PAUSE 20
NEXT
RETURN
Forward:
FOR count1 =1 TO 100
PULSOUT 12,650
PULSOUT 13,850
PAUSE 20
NEXT
RETURN
实验三:触须机器人
' {$STAMP BS2}
' {$PBASIC 2.5}
count1 VAR Byte
count2 VAR Word
main:
FOR count2=0 TO 100
FREQOUT 0,2,800 :I/O口0输出800Hz方波信号
NEXT
DO
IF(IN8=0 OR IN9=0)THEN :I/O口8/9输入检测
FOR count2=0 TO 100
FREQOUT 0,2,800
NEXT
GOSUB Backward
GOSUB Liftward
ELSE
GOSUB Forward
ENDIF
LOOP
Backward:
FOR count1 =1 TO 100
PULSOUT 12,850
PULSOUT 13,650
PAUSE 20
NEXT
RETURN
Liftward:
FOR count1 =1 TO 100
PULSOUT 12,750
PULSOUT 13,850
PAUSE 20
NEXT
RETURN
Forward:
FOR count1 =1 TO 10
PULSOUT 12,650
PULSOUT 13,850
PAUSE 20
NEXT
RETURN