这段时间总结

找到第一份实习工作,正在努力中。。。 创业公司,做棋牌游戏,应聘前知道要用c++,从图书馆借了两本书。看了一下,基本还是语法和注意问题:书名《你必须知道的222个C++语言问题》《C++应用程序性能优化》。感觉《C++应用程序性能优化》这本书讲的要好很多。面试时,没问技术问题,看我对计算机比较感兴趣,就留下了。 开始主要将官方主页重写了。用的php,框架是别人拼凑的我用他的代码完成工作,有时候放不开手脚,不敢改。一是自己不保证改了这里,对先前写好的代码没有影响。二是嫌太麻烦。我想还不如我重写,或换个框架。 学到的东西还是很多的,以前生活中的小事(比如随手的帮助),脑子中有却不行动。现在受韩哥(在学校时是学生会的)影响这些事也敢做了。只是自己自由学习的时间比较少了,博客更新也出不来,很多事我一放下基本就拿不起来了。 今晚有点累,小小总结一下,顺便想在关于那,写写自己的计算机史。假期里接了一个小活,时间又不多了,虽然其中也有小偷懒。
Read more...

javascript提示是否删除

非常简单实用的方法,收藏了。这几天写的东西没用jquery,但是有些功能还是想从简,比如这个提示是否删除。最简单的方法还是只是弹个提示框,于是找到这个方法。 JavaScript弹出确认消息框判断是否删除,删除前提示用户是否删除,点是删除,点否返回。
删除
用法:onClick="return confirm('是否删除此条记录?')" onClick在点击时(这里是指点击这条超链接)触发,confirm会返回“是”(true)或者“否”(false),返回“否”就不产生跳转。 原来这个js中return可以控制超链接是否跳转啊,神奇,嘿嘿,忒神奇了~
Read more...

golang中strings包学习第二篇

func Join(a []string, sep string) string
,连接字符串,以sep作为分隔符 例子:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
输出:
foo, bar, baz
,源代码分析 1.判断a的长度,0时,返回空字符串,长度为1时,返回a[0]. 2.否则,在变量n中保存将要生产字符串的长度。计算方法len(a)-1个sep的长度 + 数组a中字符串长度和。 3.创建一个长度为n的byte数组。将数据复制到数组中,copy()将返回复制元素的个数,用bp来记录复制的位置。最后转成string返回。  
func Split(s, sep string) []string
,分割字符串,sep为空字串时,与上一篇讲到的一样,相当于每个字符之间的间隔。s中没有sep,返回值里只有一个元素s。 例子:
fmt.Printf("%q\n", strings.Split("a,b,c", ","))
fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
fmt.Printf("%q\n", strings.Split(" xyz ", ""))
fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
输出:
["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""]
,源代码return genSplit(s, sep, 0, -1) 看看func genSplit(s, sep string, sepSave, n int) []string。
func genSplit(s, sep string, sepSave, n int) []string
,有几个函数都用到这个函数,通用分割字符串的函数。 n 是返回分割的个数,-1时,返回所有。
sepSave是被分割的位置在sep所在位置的偏移,被用于SplitAfter和SplitAfterN这些函数,使用len(sep)作为sepsave可以返回sep最后一个字符前面的字串作为一个分割。
1.n为0时,返回nil。 2.sep为空字串,return explode(s, n), 3.当n<0时,应该返回所有,n为Count(s, sep) + 1,表示长度。 4.定义几个变量,c是用于比较是否和sep相等,都是先比较第一个字符。相等再看字符串长度为一,则找到;不为一,比较整个sep。a是被返回的数组,na是在数组中存储的位置。 东西零碎 utf8包的内容,写下来的目的是使自己是真正的明白,而不是一看知道是这么回事,但是不想为什么要这样写。现在感觉自己用来学习的时间很少,珍惜一下。
Read more...

golang中strings包学习

打算把golang的常用包都看一遍,分析一下包的代码,觉得从中会学到golang的编程方法^_^。
func Index(s, sep string) int
返回s中第一次出现sep的位置,如果没有返回-1. 例子: 代码:
fmt.Println(strings.Index("chicken", "ken"))
fmt.Println(strings.Index("chicken", "dmr"))
输出:
4
-1
看源码中index的实现方法, 1.取得sep的长度。如果长度为零,返回0。否则取sep第一个字符。 2.如果长度为1,for循环比较s[i]和sep[0],相等,返回i。都不相等,返回-1。 3.如果长度大于1,for循环比较(先比较s[i]和sep[0],不相等就i++,再比较s[i:i+n] == sep。)成立返回i,否则返回-1。比较的上限是i+n。 相关函数:  
func Contains(s, substr string) bool
如果substr在s中,返回true。 代码:
fmt.Println(strings.Contains("seafood", "foo"))
fmt.Println(strings.Contains("seafood", "bar"))
fmt.Println(strings.Contains("seafood", ""))
fmt.Println(strings.Contains("", ""))
输出:
true
false
true
true
源代码中用index函数实现,return Index(s, substr) >= 0。  
func LastIndex(s, sep string) int
,返回在s中最后一次出现sep的位置,不存在返回-1。 例子就过了,源代码分析,与index()相似,但是判断的时候是从s的后边向前判断。  
func Count(s, sep string) int
,统计sep在s中出现的次数,非重叠的,比如s=“eeee”,sep="ee",结果返回2. 例子:
fmt.Println(strings.Count("cheese", "e"))
fmt.Println(strings.Count("five", "")) // before & after each rune
结果:
3
5
,我对第二个例子不理解,在群里问了一番,开始回答的我没明白。后来第二个给我回答我才明白:这里“”字符串指的就是字符串中每个字符之间的空字符串T_T,函数返回了s中有几个这样的空字符串。后面的英文注释直接看不懂T_T,悲催。现在看应该是每个字符的前面加后面。。。 源代码中“”时,返回utf8.RuneCountInString(s) + 1,这里不用len,我测试了一下对于一个中文len返回的长度是3,这里不符,所以用utf8.RuneCountInString。utf8.RuneCountInString是使用range来遍历的字符串,与len计数不同,一个中文长度为1。 但是在接下来遍历s和sep都是用的len(),也就是说比如 fmt.Println(strings.Count("我的我的", "\x88"))你会得到结果2,这是因为 ”我的“会被\xe6\x88\x91\xe7\x9a\x84遍历,你将从中找到\x88。 fmt.Println(strings.Count("five", "")) 然后还是分两种情况,len(sep)=1和大于1两种情况。  
Read more...

bootstrap和1kbgrid结合使用

真心不懂css,以前写点小东西,不是扒就是用的bootstrap。现在要我自己写一个支持ie6的界面,有点慌。 bootstrap是只支持ie7+,虽然有写ie6的hack,可能是我用的不好,效果不喜欢。 自己大体测试了一下,ie6不支持bootstrap中的布局方面和组件那些导航什么的。 http://twitter.github.com/bootstrap 现在bootstrap网站提供自己制定功能,可以选择自己使用的css功能,我只用了Base CSS和Alerts,再有需要就重新添加导出一份。网站布局的设定我就找了一个1kbgrid,http://www.1kbgrid.com/。很方便,很小。配合使用写了三个页面感觉很不错。 css设计也是一门艺术,但是第一次学时可能教材不好,安不下心来感觉很乱。以后就不再想学了。
Read more...

golang的Panic和Recover

在看《build web application with golang》地址:https://github.com/astaxie/build-web-application-with-golang 看到Panic和Recover这一节,对Panic和Recover有了了解。 Go没有例如像Java那样的异常机制:不能抛出一个异常。作为代替,它使用了panic和recover机制。一定要记得,这应当作为最后的手段被使用,你的代码中应当没有,或者很少的令人恐慌的东西。这是个强大的工具,明智的使用它。那么,应该如何使用它。 Panic
是一个内建函数,可以中断原有的控制流程,进入一个令人恐慌的流程中。当函数F调用panic,函数F的执行被中断,但是F中的延迟函数会正常执 行,然后F返回到调用它的地方。在调用的地方,F的行为就像调用了panic。这一过程继续向上,直到发生panic的goroutine中所有调用的函 数返回,此时程序退出。恐慌可以直接调用panic产生。也可以由运行时错误产生,例如访问越界的数组。
Recover
是一个内建的函数,可以让进入令人恐慌的流程中的goroutine恢复过来。Recover仅在延迟函数中有效。在正常的执行过程中,调用 recover会返回nil,并且没有其他任何效果。如果当前的goroutine 陷入恐慌,调用recover可以捕获到panic的输入值,并且恢复正常的执行。
最容易理解就是给个例子,文章里有例子:
package main

import(
    "fmt"
    //"os"
)

var user = ""
func inita() {
    defer func(){
        fmt.Print("defer##\n")
    }()
    if user == "" {
        fmt.Print("@@@before panic\n")
        panic("no value for user\n")
        fmt.Print("!!after panic\n")
    }
}

func throwsPanic (f func()) (b bool){
    defer func(){
        if x:= recover(); x != nil{
            fmt.Print(x)
            b = true
        }
    }()
    f()
    fmt.Print("after the func run")
    return
}

func main(){
    throwsPanic(inita)
}
执行结果: D:\go>go run b.go @@@before panic defer## no value for user 如上面所说的: panic在user=""时,打断了函数的执行,fmt.Print("!!after panic\n")没有执行。 但函数中的延迟函数会正常执行,打印了 ”defer##“。然后返回到调用该函数的地方,继续上面的过程。 直到执行完所有函数的defer,退出程序。 Recover可以捕获到panic的值,上面的打印“no value for user”。并且恢复正常的执行。
Read more...

wamp搭建环境不能ip访问的解决办法

apache在本机上访问正常,但是用ip访问为403禁止访问! apache配置文件修改: # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride all # # Controls who can get stuff from this server. # # onlineoffline tag - don't remove Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from 127.0.0.1修改为Allow from all,没有查文档,搜索解决。
Read more...

PHP5 PDO使用

在wamp下的开发环境,查找资料有两种方法。使用query,使用prepare。看的代码是第二种,网上说第二种效率高,并且安全。 总结使用方法:  
$sth = $dbh->prepare('update db set zh_CN= :str where SN=:SN');
$sth->bindParam(':str',$str,PDO::PARAM_STR,12);
$sth->bindParam(':SN',$SN);
$sth->execute();
$sth->lastInsertId();
$sth->closeCursor();
源代码使用bindValue(),lastInsertId()返回id。
Read more...

centos安装初体验,搭建apache-php-mysql

安装时没有安装桌面环境。 1.查看centos系统版本:命令lbs_release -a 2.mysql配置。 mysql从安装光盘中选择安装的。版本是5.0.77 修改/etc/my.cnf文件 default-character-set=utf8 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set=utf8 增加 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] 增加 default-character-set=utf8 增加 没有密码登录时使用命令:mysql -u root 启动mysql服务:/etc/rc.d/init.d/mysqld start 设置密码 /usr/bin/mysqladmin -u root password '123456'   3.安装Apahce # yum -y install httpd php php-mysql 安装php的扩展 #yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc 安装apache扩展 #yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql chkconfig httpd on [设置apache为自启动] service httpd start [启动 httpd 服务] apache配置出来的默认站点目录为/var/www/html/   4.测试 # vi /var/www/html/info.php <?php phpinfo(); ?> 命令行下输入:firefox,打开浏览器。输入http://127.0.0.1,可以显示欢迎界面,加上info.php,可以显示php的环境信息。    
Read more...

pdb调试python程序

以前在windows下一直用的idel带的功能调试python程序,在linux下没调试过。(很多时候只是print)就从网上查找一下~ 方法:python -m pdb a.py a.py是python文件。 (Pdb)模式下的常用命令: q 退出debug h 即help,打印所有可以命令 h w 打印命令 w 的含意 n 执行当前行直到到达下一行或直到它返回 s 执行当前行,一有可能就停止(比如当前行有一个函数调用)。它和n(next)的区别是当前行中有函数调用时s(step)会停止当前行的执行而去调用那个函数,而n不会停止,直到计算完成这一行(到达下一行)。 b(reak) [[filename:]lineno | function[, condition]] 设置断点,可以是行号或函数。如 b 10, b foo, b foo,n == 5,最后在函数foo()入口处设置一个断点,但仅当n的值是5时才有效。当b命令无参数时,打印所有断点。 tb(reak) [[filename:]lineno | function[, condition]] 临时断点,只hit一次。 disable [bpnumber [bpnumber ...]] 使指点行的断点(们)失效 enable [bpnumber [bpnumber ...]] 使指定行上的断点(们)有效 c 继续执行程序,直到遇到下一个断点 w 即where,打印当前执行点的位置 l [first, [,last]] 输出当前行附近的源码 p expression 执行一个表达式当打印其值。 a(rgs) 打印当前函数的参数及其值 <直接回车> 重复执行上次的命令 并遇到pdb不认识的命令时,会将它当成python表达式执行。如果你想执行的表达时,最前面加上 ! 字符,比如 !n == 5 多个debug命令可以写在一行上,中间用两个分号分隔,如 s;;s。
Read more...

Previous Page 1 2 3 4 5 6 7 8 9 10 Next Page 最后一页