KINT是一个免费开源,不用安装的PHP调试工具,用来替代系统内置的比如var_dump(),print_r(),debug_backtrace()等相关函数安装(获得KINT)通过phar点击下载
二十四天
夏a天
水和纸这是一种和谐,但!同时也是一种冲撞!水会灭了纸,而纸又太过饥渴!化了在巧克力的浓情下,你只需要一些白水,就能淡去那甜腻!极浓和极淡得已平衡!其实,我今天想表达的是一种矛盾!怎样来调试!本想假期报个夏令营就搞定了孩子!可偏偏又生了意外!只能我带孩子来成都!既然是这样,那就什么也别想,把这次成都之行完美收官便是!看了大型的水上乐园——天堂岛海鲜乐园。方所是必到之地!由了我相怀之苦——杜甫草堂。看
如何解决AttributeError: ‘NoneType‘ object has no attribute问题
如何解决AttributeError:‘NoneType’objecthasnoattribute问题问题背景与概述在Python项目开发和调试过程中,经常会碰到这样一个异常信息:AttributeError:'NoneType'objecthasnoattribute'foo'这意味着你尝试访问或调用某个对象的属性/方法foo,但此时对象本身是None,从而触发了AttributeError。本
Flutter低代码开发:使用工具加速应用构建
移动开发前沿
flutter低代码rxjavaai
Flutter低代码开发:使用工具加速应用构建关键词:Flutter、低代码开发、应用构建、开发工具、加速开发摘要:本文深入探讨了Flutter低代码开发的相关内容。首先介绍了低代码开发的背景和在Flutter中的应用目的,接着详细解释了Flutter、低代码开发等核心概念及其相互关系。通过具体的算法原理、数学模型和项目实战案例,展示了如何利用低代码工具加速Flutter应用的构建。还探讨了其实际
pycharm回车、删除、方向键和快捷键等不能使用原因
解决方法:菜单栏中的Tools取消勾选VimEmulator原因:新版的pycharm安装中,默认安装了vim扩展,一旦安装了pycharm在编写代码时会默认使用Vim编辑器
UE5 官方案例Lyra 全特性详解 14.背包系统Inventory System3
CloudHu1989
ue5游戏程序c++
目录0.前言1.合成物品1.1物品数据1.2绘制装备合成1.3蓝图配置2.商店生成位置3.提示信息4.拖拽的图标0.前言接上一篇没有讲完的部分,首先把源码cloudhu/Lyra_Inventory公开给大家去克隆,源码中有很多不完善的地方大家可以放手去修改,后续讲的内容也会往这个仓库去推送.把这个仓库克隆到本地,然后生成VS代码,打开VS,然后编译代码,编译通过后,打开编辑器,如果地图不是Wor
PyCharm高效入门指南:快速提升Python开发效率
famenzhiling
pythonpycharmide
1.引言PyCharm简介:JetBrains开发的Python集成开发环境(IDE),适用于专业开发者和初学者。为什么选择PyCharm:高效代码编辑、智能工具集成和强大的调试功能。目标读者:Python新手或有其他IDE经验但想快速上手PyCharm的用户。2.安装与初始配置下载与安装:访问JetBrains官网下载PyCharmCommunity(免费版)或Professional(付费版)
五大编程竞赛平台终极对比
2401_86601498
c++
LeetCodeLeetCode是一个流行的在线编程平台,提供大量算法和数据结构题目。题目分为简单、中等和困难三个难度级别。LeetCode的题目涵盖各种主题,包括数组、字符串、树、动态规划等。LeetCode支持多种编程语言,包括C++,并提供在线代码编辑器和即时反馈。LeetCode还提供竞赛和面试模拟功能,适合准备技术面试的用户。CodeforcesCodeforces是一个以竞赛为主的在线
Linux+Python实战课堂:笔记、练习与应用
本文还有配套的精品资源,点击获取简介:本压缩包提供全面的Linux学习资源和Python编程练习,旨在帮助初学者和IT从业者深入理解Linux系统及其技能,并通过Python编程练习巩固相关技能。涵盖Linux基础概念、文件系统、命令行操作、文本编辑器使用、用户和组管理、软件管理、进程监控、网络配置以及系统性能监控等多个方面。同时,包含Python基础语法、函数与模块、面向对象编程、文件操作、异常
【立创泰山派】Linux驱动之UART驱动程序
Monisa_sama
linux单片机运维
Linux串口驱动前言1.串口通信2.调试和测试3.性能分析4.扩展串口功能一、基础知识1.什么是串口1.1波特率2.通信协议2.1UART帧结构2.2校验方式二、硬件接口1.基于TTL的UART通讯2.基于RS232的UART通讯3.基于RS485的UART通讯三、软件框架1.驱动子系统框架1.1串口驱动程序位置1.2使用8250驱动的方式1.3串口设备的调试方法2.注册流程分析3.设备树配置3
Logger日志记录
Kiri霧
开发语言androidjavakotlin
Java日志记录简介日志是软件应用程序中的记录信息,我们可以选择将其保存到文件中,或显示在控制台上。这些记录可以描述任何内容:程序中的一个事件、变量的值、错误或异常等。日志主要用于调试目的。今天,我们将学习Java标准SDK中用于日志记录的java.util.logging包。要使用Java的日志功能,你需要了解以下几个组件:LoggerFileHandlerConsoleHandlerSimpl
程序员最喜爱的5款开发工具,每一款都爱不释手!
小宇java
如果说编程是吃饭,那么开发工具就是程序员手中的筷子,每个人拿筷子的手法都不一样,拿的筷子品种也不一样,而一旦熟悉了一种拿捏方式和筷子样式,就很难去接受其他人使用筷子的品种和方法,这也算是程序员的一种特性吧!选择什么样的编辑器还和所从事的行业息息相关,那小编现在就程序员最喜欢的5中编辑器做个介绍。0.AtomAtom是github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,
Python之print打印
追捕的风
Python之数据处理python开发语言爬虫
python是一门脚本语言,少不了使用各种print打印调试,本文总结一下pythonprint打印的几种方法。1单独打印变量1.1只打印变量:方法:print(variable)示例:name="Mike"age=21print(name)print(age)输出:Mike211.2带其他信息:示例:name="Mike"age=21print('mynameis',name)print('my
C对接验证码短信接口DEMO示例
短信接口开发
//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。//账户注册:请通过该地址开通账户http://user.ihuyi.com/?DKimmu//注意事项://(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。//(2)请使用APIID及APIKEY来调用接口,可在会员中心获取;//(3)该代码仅供接入互亿无线短信接口参考使用,客
报错解决:/usr/bin/python^M: bad interpreter: No such file or directory
KimmyDs
linux运维服务器
报错问题分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh.py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。一般是因为windows行结尾和linux行结尾标识不同造成的。问题解决:1)在windows下转换:利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->
【VSCode】Carbon入门
大雨淅淅
开发工具carbon
目录一、代码也能“颜值爆表”?Carbon来啦!二、Carbon是什么?三、为什么要用Carbon(一)高度定制,彰显个性(二)分享便捷,无缝社交(三)功能多样,适配广泛四、如何使用Carbon(一)访问官网,开启之旅(二)导入代码,初露端倪(三)个性定制,雕琢细节(四)生成分享,收获赞赏五、拓展使用:编辑器插件(一)IntelliJIDEA插件使用(二)VSCode插件使用(三)Atom插件使用
Java Future注意事项
泓礼
1.Future是否可以执行完确保对结果的处理,如果漏掉了一种情况,比如返回值为空时的处理,会导致程序阻塞,这样的bug还是很难调试的本质上是对全集的处理不好导致的问题,这种问题夹杂在future场景下,更难处理
Foundry智能合约测试设计流程
Foundry智能合约测试设计流程通用测试流程测试环境搭建:创建测试合约类,继承自Test在setUp函数中初始化被测合约和测试账户准备必要的模拟数据和环境测试用例编写:每个测试函数测试一个具体场景测试函数名应清晰表达测试目的遵循AAA模式:Arrange(准备)、Act(执行)、Assert(断言)测试执行与调试:使用forgetest运行测试针对失败的测试进行调试和修复四种测试维度详解1.单元
机器视觉基础(直播回放)
机器视觉基础总结:本次讲解主要围绕工业相机的基础配置、图像处理及与机器人联动通信的应用展开,重点在于相机网络设置、软件操作流程、模板匹配方法以及标定调试等内容。**相机基础配置**-需确保相机与电脑连接正常,并正确设置IP地址以避免冲突。-使用官方软件检测相机状态,若出现黄色叹号提示,则需手动修改IP地址。-网络配置完成后可在软件中看到设备并进行后续操作。**相机参数设置**-曝光时间用于调节图像
usb调试与adb调试
星空梦想plus
android系统定制方案
之前没有太注意二者的区别,这里简单记录一下。usb调试,android应用开发或许经常会用到,之前我也是用这个方式来调试程序的,android设备如果是手机的话就很方便,设备打开usb调试,并用数据线连接电脑与android手机,你的androidstudio就能看到控制台有手机的日志输出了。如果android设备不是手机的话,就像android手表的话,或许就不支持usb这种方式了,这就需要下面
【Jmeter】报错:An error occured:Unknown arg
卡西里弗斯奥
Jmeter
问题调试Jmeter时,报错:‘Anerroroccurred:Unknownarg:l’,脚本如下:$JMETER_PATH-n-t"$target_jmx"-l"$SCENARIO_REPORT_DIR/result_${threads}.jtl"-e-o"$SCENARIO_REPORT_DIR/html_${threads}"问题原因脚本没有问题,脚本后面带有空格,执行不过去。解决办法去除
RK356x-10:串口(uart)配置与调试
初心_2024
Rk356xlinux运维服务器
本文记录RK3566/RK3568通用异步串口(uart)的配置与调试过程1.配置uart节点1.1在rk3568.dtsi中已经定义了uart0,uart1...,根据电路图,确定需要使用的是哪个串口,比如我使用的是uart0,在另外一个与我们自己主板相关的dtsi文件(一般不在rk3568.dtsi中直接改,这个文件不要改动,我的是自己创建的,名为rk3566_test_base.dtsi,就
C/C++---文件读取
MzKyle
C/C++c语言c++java
在C++中,文件读取操作主要是通过fstream类来完成的。fstream类提供了多种功能,用于从文件读取数据、写入数据以及对文件进行其他处理。文件读取操作可以通过两种主要方式实现:文本文件读取和二进制文件读取。文件读取在传参工作中,扮演十分重要的角色,方便客户端不接触代码的情况下对系统进行调试。1.文件输入流(ifstream)C++提供了ifstream(InputFileStream)类用于
本地安装部署Unstructured-api
菜Queen
AIGCpythonunstructuredAPI
本地安装Unstructured-api1.源码部署创建环境并激活安装依赖启动项目调试项目2.Docker部署1.下载镜像2.启动容器3.结束4.遇到问题(在更新......)1.源码部署需要提前安装->uv前往[Github地址](GitHub-Unstructured-IO/unstructured-api)下载源码或者直接执行gitclone命令$gitclonehttps://github
NOIP2013提高组复赛数据详细分析与应用指南
欧学东
本文还有配套的精品资源,点击获取简介:2013年的NOIP提高组复赛数据,涉及C++编程、算法设计、数据结构、问题分析、时间空间复杂度优化、调试测试、比赛策略、历年试题分析等多个知识点。这些数据对于参赛者、教练和信息技术教育研究者具有重要参考价值,有助于提升信息技术能力和竞赛准备的有效性。1.NOIP竞赛概览全国青少年信息学奥林匹克竞赛(NationalOlympiadinInformaticsi
全面解析ARMv8架构手册:2020年版要点总结
车英赫
本文还有配套的精品资源,点击获取简介:ARMv8架构作为64位指令集的重要里程碑,提供了详尽的参考指南,包含处理器状态、内存模型、指令集、安全性与虚拟化、多核与并发、浮点与SIMD运算、调试与性能监控、中断与异常处理以及系统级设计等要点。本手册旨在帮助集成电路设计者、软件开发者以及系统架构师深入理解ARMv8架构,促进他们在相关领域的专业技能提升。1.ARMv8架构概述ARMv8架构,作为ARM技
查看.bin二进制文件的方式(HxD十六进制编辑器的安装)
Ac157ol
编辑器
文章目录Windows系统上安装HxD十六进制编辑器的步骤。**HxD是一款免费、轻量级的工具,适合查看和编辑.bin等二进制文件。****PS:实际安装过程中会发现找不到Windows11的版本,安装windows10的即可,并且没有区别setup版和portable版**安装HxD的步骤1.访问官方网站2.**下载安装程序**3.运行安装程序4.验证安装5.注意事项6.后续使用Windows系
Day17: Spring响应变形记:透视返回值处理的魔法工厂 —— 从POJO到JSON响应的高阶转换术
zhysunny
Springjavaspring
目录一、核心变形车间:HandlerMethodReturnValueHandler生态1.1变形车间流水线架构二、@ResponseBody的魔法解析流水线2.1JSON变形主设备解剖2.2实战调试技巧三、异步处理时空门:DeferredResult与CompletableFuture3.1DeferredResult时间魔法3.2CompletableFuture平行宇宙四、自定义变形设备:打
Django母婴商城项目实践(二)- 商城项目环境配置
ITB业生
Djangodjango数据库python
2、母婴商城项目环境配置环境配置:Python3.12解释器PycharmProfessional2025.1编辑器Django4.2(或Django5.x)MySQL8.0.28数据库1、Django框架介绍Django是一个高级的PythonWeb应用框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。
JVM StackMapTable 属性的作用及理解
lijingyao8206
jvm字节码Class文件StackMapTable
在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版
回调函数调用方法
百合不是茶
java
最近在看大神写的代码时,.发现其中使用了很多的回调 ,以前只是在学习的时候经常用到 ,现在写个笔记 记录一下
代码很简单:
MainDemo :调用方法 得到方法的返回结果
[时间机器]制造时间机器需要一些材料
comsci
制造
根据我的计算和推测,要完全实现制造一台时间机器,需要某些我们这个世界不存在的物质
和材料...
甚至可以这样说,这种材料和物质,我们在反应堆中也无法获得......
 
开口埋怨不如闭口做事
邓集海
邓集海 做人 做事 工作
“开口埋怨,不如闭口做事。”不是名人名言,而是一个普通父亲对儿子的训导。但是,因为这句训导,这位普通父亲却造就了一个名人儿子。这位普通父亲造就的名人儿子,叫张明正。 张明正出身贫寒,读书时成绩差,常挨老师批评。高中毕业,张明正连普通大学的分数线都没上。高考成绩出来后,平时开口怨这怨那的张明正,不从自身找原因,而是不停地埋怨自己家庭条件不好、埋怨父母没有给他创造良好的学习环境。
jQuery插件开发全解析,类级别与对象级别开发
IT独行者
jquery开发插件 函数
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给
jQuery添加新的全局函数,相当于给
jQuery类本身添加方法。
jQuery的全局函数就是属于
jQuery命名空间的函数,另一种是对象级别的插件开发,即给
jQuery对象添加方法。下面就两种函数的开发做详细的说明。
1
、类级别的插件开发 类级别的插件开发最直接的理解就是给jQuer
Rome解析Rss
413277409
Rome解析Rss
import java.net.URL;
import java.util.List;
import org.junit.Test;
import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.S
RSA加密解密
无量
加密解密rsa
RSA加密解密代码
代码有待整理
package com.tongbanjie.commons.util;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerat
linux 软件安装遇到的问题
aichenglong
linux遇到的问题ftp
1 ftp配置中遇到的问题
500 OOPS: cannot change directory
出现该问题的原因:是SELinux安装机制的问题.只要disable SELinux就可以了
修改方法:1 修改/etc/selinux/config 中SELINUX=disabled
2 source /etc
面试心得
alafqq
面试
最近面试了好几家公司。记录下;
支付宝,面试我的人胖胖的,看着人挺好的;博彦外包的职位,面试失败;
阿里金融,面试官人也挺和善,只不过我让他吐血了。。。
由于印象比较深,记录下;
1,自我介绍
2,说下八种基本类型;(算上string。楼主才答了3种,哈哈,string其实不是基本类型,是引用类型)
3,什么是包装类,包装类的优点;
4,平时看过什么书?NND,什么书都没看过。。照样
java的多态性探讨
百合不是茶
java
java的多态性是指main方法在调用属性的时候类可以对这一属性做出反应的情况
//package 1;
class A{
public void test(){
System.out.println("A");
}
}
class D extends A{
public void test(){
S
网络编程基础篇之JavaScript-学习笔记
bijian1013
JavaScript
1.documentWrite
<html>
<head>
<script language="JavaScript">
document.write("这是电脑网络学校");
document.close();
</script>
</h
探索JUnit4扩展:深入Rule
bijian1013
JUnitRule单元测试
本文将进一步探究Rule的应用,展示如何使用Rule来替代@BeforeClass,@AfterClass,@Before和@After的功能。
在上一篇中提到,可以使用Rule替代现有的大部分Runner扩展,而且也不提倡对Runner中的withBefores(),withAfte
[CSS]CSS浮动十五条规则
bit1129
css
这些浮动规则,主要是参考CSS权威指南关于浮动规则的总结,然后添加一些简单的例子以验证和理解这些规则。
1. 所有的页面元素都可以浮动 2. 一个元素浮动后,会成为块级元素,比如<span>,a, strong等都会变成块级元素 3.一个元素左浮动,会向最近的块级父元素的左上角移动,直到浮动元素的左外边界碰到块级父元素的左内边界;如果这个块级父元素已经有浮动元素停靠了
【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景
bit1129
partition
0.Kafka服务器配置
3个broker
1个topic,6个partition,副本因子是2
2个consumer,每个consumer三个线程并发读取
1. Producer
package kafka.examples.multibrokers.producers;
import java.util.Properties;
import java.util.
zabbix_agentd.conf配置文件详解
ronin47
zabbix 配置文件
Aliaskey的别名,例如 Alias=ttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1], 或者ttlsa的用户ID。你可以使用key:vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],也可以使用ttlsa.userid。备注: 别名不能重复,但是可以有多个
java--19.用矩阵求Fibonacci数列的第N项
bylijinnan
fibonacci
参考了网上的思路,写了个Java版的:
public class Fibonacci {
final static int[] A={1,1,1,0};
public static void main(String[] args) {
int n=7;
for(int i=0;i<=n;i++){
int f=fibonac
Netty源码学习-LengthFieldBasedFrameDecoder
bylijinnan
javanetty
先看看LengthFieldBasedFrameDecoder的官方API
http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/codec/frame/LengthFieldBasedFrameDecoder.html
API举例说明了LengthFieldBasedFrameDecoder的解析机制,如下:
实
AES加密解密
chicony
加密解密
AES加解密算法,使用Base64做转码以及辅助加密:
package com.wintv.common;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decod
文件编码格式转换
ctrain
编码格式
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
mysql 在linux客户端插入数据中文乱码
daizj
mysql中文乱码
1、查看系统客户端,数据库,连接层的编码
查看方法: http://daizj.iteye.com/blog/2174993
进入mysql,通过如下命令查看数据库编码方式: mysql> show variables like 'character_set_%'; +--------------------------+------
好代码是廉价的代码
dcj3sjt126com
程序员读书
长久以来我一直主张:好代码是廉价的代码。
当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。 当他们走近看我的表情、知道我是认真的时,才收敛一点。
当最初的惊愕消退后,他们会用一些这样的话来反驳: “好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。”
我只
Android网络请求库——android-async-http
dcj3sjt126com
android
在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通
ORACLE 复习笔记之SQL语句的优化
eksliang
SQL优化Oracle sql语句优化SQL语句的优化
转载请出自出处:http://eksliang.iteye.com/blog/2097999
SQL语句的优化总结如下
sql语句的优化可以按照如下六个步骤进行:
合理使用索引
避免或者简化排序
消除对大表的扫描
避免复杂的通配符匹配
调整子查询的性能
EXISTS和IN运算符
下面我就按照上面这六个步骤分别进行总结:
浅析:Android 嵌套滑动机制(NestedScrolling)
gg163
android移动开发滑动机制嵌套
谷歌在发布安卓 Lollipop版本之后,为了更好的用户体验,Google为Android的滑动机制提供了NestedScrolling特性
NestedScrolling的特性可以体现在哪里呢?<!--[if !supportLineBreakNewLine]--><!--[endif]-->
比如你使用了Toolbar,下面一个ScrollView,向上滚
使用hovertree菜单作为后台导航
hvt
JavaScriptjquery.nethovertreeasp.net
hovertree是一个jquery菜单插件,官方网址:http://keleyi.com/jq/hovertree/ ,可以登录该网址体验效果。
0.1.3版本:http://keleyi.com/jq/hovertree/demo/demo.0.1.3.htm
hovertree插件包含文件:
http://keleyi.com/jq/hovertree/css
SVG 教程 (二)矩形
天梯梦
svg
SVG <rect> SVG Shapes
SVG有一些预定义的形状元素,可被开发者使用和操作:
矩形 <rect>
圆形 <circle>
椭圆 <ellipse>
线 <line>
折线 <polyline>
多边形 <polygon>
路径 <path>
一个简单的队列
luyulong
java数据结构队列
public class MyQueue {
private long[] arr;
private int front;
private int end;
// 有效数据的大小
private int elements;
public MyQueue() {
arr = new long[10];
elements = 0;
front
基础数据结构和算法九:Binary Search Tree
sunwinner
Algorithm
A binary search tree (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction that the key in any node is larger than the keys in all
项目出现的一些问题和体会
Steven-Walker
DAOWebservlet
第一篇博客不知道要写点什么,就先来点近阶段的感悟吧。
这几天学了servlet和数据库等知识,就参照老方的视频写了一个简单的增删改查的,完成了最简单的一些功能,使用了三层架构。
dao层完成的是对数据库具体的功能实现,service层调用了dao层的实现方法,具体对servlet提供支持。
&
高手问答:Java老A带你全面提升Java单兵作战能力!
ITeye管理员
java
本期特邀《Java特种兵》作者:谢宇,CSDN论坛ID: xieyuooo 针对JAVA问题给予大家解答,欢迎网友积极提问,与专家一起讨论!
作者简介:
淘宝网资深Java工程师,CSDN超人气博主,人称“胖哥”。
CSDN博客地址:
http://blog.csdn.net/xieyuooo
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,