公告:欢迎来到我的轻博客

ThinkPHP Call to undefined function Think\imagecreate解决

发布于:2018-09-03 23:50

现象:验证码刷不出来。 原因:没装gd库: GD库的配置 1、windows下 修改php.ini文件,去掉extension=php_gd2.dll 前面的分号。 修改extension_dir = “c:/kaosco/php2/extensions” 为动态库所在目录 2、Linux、unix下 需要 重新编译php。

鹊桥仙-秦观

发布于:2018-08-30 17:42

纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却人间无数。 柔情似水,佳期如梦,忍顾鹊桥归路。两情若是久长时,又岂在朝朝暮暮。

程序猿-励志文章(收藏自网络)

发布于:2018-08-30 17:42

前言: 很多很有道理,只不过我一直认为经历可以改变命运,书籍只能改变想法或是看世界的角度而已…… 正文: 1、一个人,如果你不逼自己一把,你根本不知道自己有多优秀。 2、赚钱是一种能力,花钱是一种水平,能力可以练,水平是轻易练不出来的。 3、年轻人不可以太狂。 4、一个人的知识,通过学习可以得到;一个人的成长,必须通过磨练。 5、这个世界上好书很多,可以改变命运的书很少。 6、这个世界上朋友很多,可以用一生托付的朋友很少。 7、如果发现一个人,一个地方,一件事,一本书,可以改变你的命运。一定要想办法跟他发生关系,否则,他就跟你没关系。 8、当一个人没有成功的时候,装也装出成功的样子。(因为装的时候,他已经成为你性格的一部分) 9、我们学习的目的,是为了使用,不是知识没有用,而是你没有使用,说明你没有用。 10、别人对你的态度,决定了你的命运。 11、笑由心生。 12、一个人出门的时候,口袋里都装的钱,装钱的目的,就是为了花出去,那里舒服就往那里花。一个人让别人舒服,他就是一个经营者;别人让你舒服,他就是一个消费者。 13、一个人,敢听真话,需要勇气;一个人敢说真话,需要魄力。 14、因为你的存在,让别人快乐起来,你叫朋友;因为你的存在,让别人卓越起来,你是教练;因为你的存在,让别人强大起来,你是领导。 15、一件事情,对你伤害的程度与事情本身没有任何关系,取决于你对这件事的态度。 16 、你,简单了,你的世界就简单了;你,简单了,事情就简单了。 17、一件事,会干了,好好干;不会干了,乱干。干的次数多了,自然会干。但是,首先,你要干。 18、一个人,想要优秀,你必须要接受挑战;一个人,你想要尽快优秀,就要去寻找挑战。 19、一个人想要创业,先要学会打工。 20、世界上,成功的有两种人,一种人是傻子,一种人是疯子。傻子是会吃亏的人,疯子是会行动的人。

C# 对文件与文件夹的操作包括删除、移动与复制

发布于:2018-08-30 17:42

  在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类。文件夹(Folder)是只在Windows操作系统中使用的名词。在操作系统的理论中,人们更习惯于使用目录(Directory)这个名词。或许微软为了有朝一日将.Net移植到其他的操作系统中(实际上也有很多人也在做着这个项目),所以还是以Directory来命名操作文件夹的类。 File类和Directory类都是静态类。使用它们的好处是不需要初始化对象。如果你对某一个文件或文件夹只进行一次操作,那你最好使用该静态类的静态方法,比如File.Move,File.Delete等等。如果你需要对一个文件或文件夹进行多次操作,那最好还是使用FileInfo和DirectoryInfo类。因为File类和Directory是静态类,所以你每次对一个文件或文件夹进行操作之前,它们都需要对该文件或文件夹进行一些检查,比如authentication。如果使用FileInfo类和DirectoryInfo类,只在初始化类的对象时进行相关的检查工作,也就是说只需要做一次,所以如果你需要对某个文件或文件夹进行多次操作,那最好使用FileInfo类和DirectoryInfo类。 下面的这段代码演示了如何获得文件夹的信息,包括获得文件夹下的子文件夹,以及文件夹下的文件。这里使用了DirectoryInfo 类来完成,当然你也可以使用Directory静态类。 代码如下: void DisplayFolder() { string folderFullName = @"c:\temp"; DirectoryInfo theFolder = new DirectoryInfo(folderFullName); if (!theFolder.Exists) throw new DirectoryNotFoundException("Folder not found: " + folderFullName); // list all subfolders in folder Console.WriteLine("Subfolders:"); foreach (DirectoryInfo subFolder in theFolder.GetDirectories()) { Console.WriteLine(subFolder.Name); } // list all files in folder Console.WriteLine(); Console.WriteLine("Files:"); foreach (FileInfo file in theFolder.GetFiles()) { Console.WriteLine(file.Name); } } 下面演示了如何使用FileInfo类来获得文件的相关信息,包括文件的创建日期,文件的大小等等。当然你同样也可以使用File静态类来完成。 代码如下: void DisplayFileInfo() { string folderFullName = @"c:\temp"; string fileName = "New Text Document.txt"; string fileFullName = Path.Combine(folderFullName, fileName); FileInfo theFile = new FileInfo(fileFullName); if (!theFile.Exists) throw new FileNotFoundException("File not found: " + fileFullName); Console.WriteLine(string.Format("Creation time: {0}", theFile.CreationTime.ToString())); Console.WriteLine(string.Format("Size: {0} bytes", theFile.Length.ToString())); } 下面的代码分别使用了File类和FileInfo类来演示如何删除文件 代码如下: void DeleteFile1() { string fileToBeDeleted = @"c:\temp\New Text~ Document (3).txt"; if (File.Exists(fileToBeDeleted)) { File.Delete(fileToBeDeleted); } } void DeleteFile2() { string fileToBeDeleted = @"c:\temp\New Text~ Document (3).txt"; FileInfo file = new FileInfo(fileToBeDeleted); if (file.Exists) { file.Delete(); } } 下面的代码分别使用了Directory类和DirectoryInfo类来演示如何删除文件夹 代码如下: void DeleteFolder1() { string folderToBeDeleted = @"c:\temp\test"; if (Directory.Exists(folderToBeDeleted)) { // true is recursive delete: Directory.Delete(folderToBeDeleted, true); } } void DeleteFolder2() { string folderToBeDeleted = @"c:\temp\test"; DirectoryInfo folder = new DirectoryInfo(folderToBeDeleted); if (folder.Exists) { folder.Delete(true); } } 下面的代码分别使用了File类和FileInfo类来演示如何移动文件 代码如下: void MoveFile1() { string fileToMove = @"c:\temp\New Text Document.txt"; string fileNewDestination = @"c:\temp\test.txt"; if (File.Exists(fileToMove) && !File.Exists(fileNewDestination)) { File.Move(fileToMove, fileNewDestination); } } void MoveFile2() { string fileToMove = @"c:\temp\New Text Document.txt"; string fileNewDestination = @"c:\temp\test.txt"; FileInfo file = new FileInfo(fileToMove); if (file.Exists) { file.MoveTo(fileNewDestination); } } 下面的代码分别使用了Directory类和DirectoryInfo类来演示如何移动文件夹 代码如下: void MoveFolder1() { string folderToMove = @"c:\temp\test"; string folderNewDestination = @"c:\temp\test2"; if (Directory.Exists(folderToMove)) { Directory.Move(folderToMove, folderNewDestination); } } void MoveFolder2() { string folderToMove = @"c:\temp\test"; string folderNewDestination = @"c:\temp\test2"; DirectoryInfo folder = new DirectoryInfo(folderToMove); if (folder.Exists) { folder.MoveTo(folderNewDestination); } } 下面的代码分别使用了File类和FileInfo类来演示如何复制文件

为什么计算机时间和众多编程语言要从1970年1月1日开始算起

发布于:2018-08-30 17:42

                                                               今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是 1970年1月1号呢?我想大家应该都知道,但是我估计大家几乎大部分都没有想过这个问题。我们就一起来聊聊,这是为什么? 1、最懒的解释 很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。 说了这个懒人的解释,估计大家还没有懂得真正的意思。所以我们接下来深入的了解一下。 2、深入的了解 最初计算机操作系统是32位,而时间也是用32位表示。 System.out.println(Integer.MAX_VALUE); 2147483647 Integer 在JAVA内用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总秒数是 31536000,2147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,从1970年开始的话,加上68.1,实际最终到2038年01月19日03时14分07秒,便会到 达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,算下来也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。 到 这里,我想问题的答案已经显现出来了,那就是:因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的 时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到 292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后 了

sublime 2 and sublime 3 package control 安装代码

发布于:2018-08-30 17:42

一、简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read()) 如果顺利的话,此时就可以在Preferences菜单下看到Package Settings和Package Control两个菜单了。 顺便贴下Sublime Text2 的代码: import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation') 二、手动安装 可能由于各种原因,无法使用代码安装,那可以通过以下步骤手动安装Package Control: 1.点击Preferences > Browse Packages菜单 2.进入打开的目录的上层目录,然后再进入Installed Packages/目录 3.下载Package Control.sublime-package并复制到Installed Packages/目录 4.重启Sublime Text。

Geek--极客

发布于:2018-08-30 17:42

geek

漫威电影观影顺序

发布于:2018-08-30 17:42

flash 听课笔记第一波

发布于:2018-08-30 17:42

* ActionScript2.0 语法遵守骆驼命名发 写在元件上语法格式为 on(press){} 写在主时间轴上语法格式为 _root.aa.onPress=function(){} nextFrame(); 转到下一帧,并停止播放 preFrame(); 转到上一帧并停止播放,如果写在第一帧,则无效果 stopAllSounds(); 停止所有音频 startDrag(target,[1ock,left,top,right,bottom]); target:要拖动的影片剪辑路径 lock:true、false left,top,right,bottom:相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。这些参数是可选的。 说明 函数;使 target 影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行了 startDrag() 操作后,影片剪辑将保持可拖动状态,直到用 stopDrag() 明确停止拖动为止,或直到对其它影片剪辑调用了 startDrag() 动作为止。 示例 若要创建用户可以放在任何位置的影片剪辑,可将 startDrag() 和 stopDrag() 动作附加到该影片剪辑内的某个按钮上。 on (press) {  startDrag(this,true);}on (release) {  stopDrag();} setProperty(target,property,value/expression){} target要设置其属性的影片剪辑实例名称的路径(实例名)。 property要设置的属性。 value属性的新文本值。 expression计算结果为属性新值的公式。