- JS内置构造函数有哪些???
全马必破三
javascript开发语言ecmascript
JavaScript内置构造函数是语言本身提供的一些特殊函数,用于创建特定类型的对象。常见的内置构造函数包括Object、Array、String、Number、Boolean、Date、RegExp等。1、Object构造函数(用于创建一个普通对象)常用方法:Object.keys(obj):返回一个包含对象所有自身可枚举属性的键的数组。Object.values(obj):返回一个包含对象所有
- springboot使用 基于jdk生成https证书
supermiketho
javahttps开发语言
1.创建秘钥文件keytool-genkey-aliasmyhttps-keyalgRSA-keysize2048-keystoreE:\mykey.p12-validity3652.springboot配置使用server:ssl:#证书文件名key-store:E:\mykey.p12#证书密钥别名key-alias:myhttps#密钥口令key-store-password:填写的秘钥
- ClickHouse 通过 *ARRAY JOIN* 结合 Map 类型的内置函数取数值
从未完美过
clickhouse
在ClickHouse中,可以通过ARRAYJOIN结合Map类型的内置函数,将Map字段的键值对展开为多行数据。以下是具体操作方法和示例:一、使用mapKeys和mapValues展开Map1.核心语法SELECTid,key,valueFROMyour_tableARRAYJOINmapKeys(your_map_column)ASkey,mapValues(your_map_column)A
- 【Go沉思录】朝花夕拾:探究 Go 接口型函数
Golinie
#Go沉思录golang接口型函数函数式编程
本文目录序1.接口型函数案例方式1GetterFunc类型的函数作为参数方式2实现了Getter接口的结构体作为参数价值2.net/http包中的使用场景序之前写Geecache的时候,遇到了接口型函数,当时没有搞懂,现在重新回过头研究复习Geecache的时候,发现看得懂一些了,刚好能梳理下。什么是接口型函数?比如下面这个。1.接口型函数typeGetterinterface{Get(keyst
- Selenium的键盘操作,组合键(4)
一直开心
python开发语言
#键盘操作,组合键fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()driver.get('https://www.baidu.com/')
- selenium鼠标操作
不断成长lj
selenium测试工具
fromselenium.webdriver.common.keysimportKeys#导入键盘操 语法:send_keys(Keys.BACK_SPACE)删除键(BackSpace)send_keys(Keys.TAB)制表键(Tab)send_keys(Keys.SPACE)空格键(Space)send_keys(Keys.ESCAPE)回退键(Esc)send_keys(Keys.ENT
- 探索YubiKey的Go语言PIV实现:piv-go
诸盼忱Gazelle
探索YubiKey的Go语言PIV实现:piv-gopiv-goKeysandcertificatesforYubiKeys,writteninGo项目地址:https://gitcode.com/gh_mirrors/pi/piv-go项目介绍piv-go是一个用Go语言实现的YubiKeyPIV(个人身份验证)规范的库。YubiKey是一种智能卡设备,广泛用于安全身份验证和加密操作。PIV规范
- 遇到 “No supported authentication method available” 错误的完整解决方案
四月的我
linux
问题原因此错误表示SSH服务器拒绝了WinSCP的认证方式(如密码或密钥)。常见原因:SSH服务器配置禁用了密码认证(PasswordAuthenticationno且未配置密钥)。用户目录权限错误导致SSH无法读取认证文件。密钥认证配置错误(如authorized_keys权限问题)。解决方案步骤1:确保启用密码认证在WSL中编辑SSH配置文件:bashsudonano/etc/ssh/sshd
- java websocket 认证_配置JAVA SSL/TLS 之websocket wss交互式认证
weixin_39695490
javawebsocket认证
我下面生成的.keystore文件也可以用.jks后缀代替,jks的意思就是javakeystore,另外需要知道.cer文件是二进制的,.pem文件是文本文件,本质都是一样的,他们可以互相转换。java语言操作的是二进制的文件,其他的一些脚本语言,可能操作的是PEM格式的文件。看具体情况吧。创建服务端keystorekeytool-genkey-v-aliasserver_ks-keysize2
- websocket wss_使用wss和HTTPS / TLS保护WebSocket的安全
dnc8371
javapython数据库安全github
websocketwss这个博客的第50条提示,是的!技术提示#49说明了如何使用用户名/密码和Servlet安全机制保护WebSocket的安全。本技术提示将说明如何在WildFly上使用HTTPS/TLS保护WebSockets。让我们开始吧!创建一个新的密钥库:keytool-genkey-aliaswebsocket-keyalgRSA-keystorewebsocket.keystore
- Redis过期机制
2301_76723322
redis数据库缓存golanggo
const(cacheDuration=24*time.Hour)funcSetToCache(rdb*redis.Client,keystring,data[]byte)error{returnrdb.Set(rdb.Context(),key,data,cacheDuration).Err()}以上函数中的rdb.Set(rdb.Context(),key,data,cacheDuration
- 手把手教你将 DeepSeek 集成到 Java 的 Spring Boot 项目中
Java_young
AIjavaspringboot开发语言
前面阳仔给大家介绍了如何将deepseek结合进入办公软件中,今天阳仔将详细介绍如何将DeepSeek集成到Java的SpringBoot项目中,让你的项目具备智能交互能力。一、准备工作1.注册DeepSeek账号并获取APIKey访问DeepSeek官网,点击右上角的“开放平台”,注册或登录账号。在左侧菜单中点击“APIKeys”,点击“创建APIKey”,为APIKey命名(如“test”),
- 【源代码】python爬虫,爬取足球赛制比分
码农之家★资源共享
python爬虫开发语言
完整代码!fromseleniumimportwebdriverfromselenium.common.exceptionsimportNoSuchElementExceptionfromselenium.webdriver.common.keysimportKeysimporttimefrombs4importBeautifulSoupimportselectimportsocketimpor
- FieldFox 手持射频与微波分析仪
XLTYQYB
5G
FieldFox手持射频与微波分析仪简述KeysightFieldFox便携式分析仪可以在非常恶劣的工作环境中,轻松完成从日常维护到深入故障诊断的各项工作。选择最适合您需求且有强大软件支持的KeysightFieldFox配置。主要特性特点:FieldFox分析仪可配置为电缆与天线分析仪(CAT)、手持矢量网络分析仪(VNA)、手持频谱分析仪或一体化综合分析仪。频率范围最高达到54GHz,且准确度
- 0基础学python第四天
RUIOU_
python开发语言
1.for循环:(1)for循环格式:for变量名in可迭代对象:对每个变量做的操作如:可迭代对象为列表,就是对列表中的每个数据操作,字典就是对每个字典中的键或值操作。字典中有几个方法:字典名.keys()——返回所有键;字典名.values()——返回所有值,字典名.items——返回所有键值对。若for后有两个对象且可迭代对象为字典时,第一个对象对应键,第二个对象对应值(2)range:ran
- DeepSeek 接入 Unity
小纯洁w
unity游戏引擎
DeepSeek可以接入Unity并帮助开发。以下是一些关于如何在Unity中集成DeepSeek的详细信息:申请APIKey要在Unity中使用DeepSeek,首先需要申请一个APIKey。申请地址为:https://platform.deepseek.com/api_keys。成功申请Key后,要在本地妥善保存,因为DeepSeek后台只能查看Key的列表和token余额等信息,完整的Key
- 是德科技Keysight N9962A手持式微波频谱分析仪
tan13145876435
科技
是德科技KeysightN9962A手持式微波频谱分析仪N9962A是一款使用电池供电的便携式微波频谱分析仪。其可选配的功能特性包括全频段跟踪发生器和前置放大器、干扰分析仪、时间选通、VSWR、反射、内置功率计和GPS接收机。N9962AFieldFox手持式微波频谱分析仪特性无需预热即可进行准确的频谱分析仪测量(±0.5dB)。10MHz无间隙实时带宽能够捕获间歇性信号。采用便携式解决方案可以表
- Keysight是德科技N9935B FieldFox 手持式微波频谱分析仪9 GHz快速参考指南
tan_13510075188
信息与通信测试工具网络科技
是德科技KeysightN9935B频谱分析仪N9935BFieldFox手持式微波频谱分析仪9GHzN9935B是一款使用电池供电的便携式微波频谱分析仪;配置还包括全频段跟踪发生器和前置放大器、干扰分析仪、时间选通、VSWR和反射测量,以及内置功率计。KeysightFieldFox便携式分析仪可以在非常恶劣的工作环境中,轻松完成从日常维护到深入故障诊断的各项工作。您可以根据需求,选择适合的Ke
- KEYSIGHT N993xA 手持频谱分析仪(SA)
XLTYQYB
5G
N993xA手持频谱分析仪(SA)苏州新利通N993xA手持频谱分析仪(SA)FieldFox手持式射频和微波分析仪KeysightFieldFox便携式分析仪可以在非常恶劣的工作环境中,轻松完成从日常维护到深入故障诊断的各项工作。选择最适合您需求且有强大软件支持的KeysightFieldFox配置。01主要特点随时随地进行精确测量充满信心地在4至50GHz的频率范围内执行测量,获得精度可以与台
- vue控制台报错Duplicate keys detected: ‘xxxx‘. This may cause an update error.解决方案
October_CanYang
日常报错elementuivuejscss
vue控制台报错Duplicatekeysdetected:‘xxxx’.Thismaycauseanupdateerror.解决方案vue项目中在使用el-tree组件时报了一个这样的错:==Duplicatekeysdetected:'106002.Thismaycauseanupdateerror.==不影响使用,但我个人,不太喜欢报红,也是为了避免能够多学习点东西百度之后说是==v-for
- 【VUE 报错】 [Vue warn]: Duplicate keys detected: XXXXXX. This may cause an update error
alreadyRAY
vuevue.js前端javascript
Whathappen:goterrormessage:>[Vuewarn]:Duplicatekeysdetected:XXXXXXXXXXX.ThismaycauseanupdateerrorWhy:是因为同样的key用在了不同的for循环中Howtodo:更改报错处for循环的key值
- 【已解决】报错[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.
烟花节
已解决vue.jsjavascript前端
问题描述在做vue项目的时候出现了这样的错误问题分析我的代码综合报错信息可以推测,问题应该是出在key上解决过程将其中一个index改成别的东西代替这个方法实际上没用,因为实际上两个:key获得都的值是0-imges长度的一组数,重复的是这两组数的并集比如imageList的长度为3上面的key获得的值就是0,1,2imgs的长度为5下面的key获得的值就是0,1,2,3,4那么值为0,1,2的k
- CentOS7 yum安装nginx-1.26.1
koseureka
nginx运维
#创建编辑vi/etc/yum.repos.d/nginx.repo#内容[nginx-stable]name=nginxstablerepobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.key
- SSH免密连接,A电脑免密连接B
demodashi666
ssh服务器运维
SSH免密连接,A电脑免密连接BA电脑的.ssh/id_rsa.pub中的公钥内容,放在B电脑.ssh/authorized_keys中将本机生成的rsa_id.pub公钥上传至服务器【~/.ssh/authorized_keys】处。catid_rsa.pub>>~/.ssh/authorized_keys
- Visual Studio Code打开远程服务器项目,打开服务器Android上百G源码,SSH免密连接方式
demodashi666
vscode服务器android
VisualStudioCode打开远程服务器项目1,VisualStudioCode拓展中,安装远程插件RemoteDevelopment2,SSH免密连接,A电脑免密连接B,配置B电脑.ssh/authorized_keysA电脑的.ssh/id_rsa.pub中的公钥内容,放在B电脑.ssh/authorized_keys中3,VisualStudioCode左上方,远程资源管理器,选择SS
- SpringBoot接入DeepSeek,保姆级教程
xuxinyang100
springboot后端java
1、创建APIkey创建链接:https://platform.deepseek.com/api_keys点击创建APIkey即可免费生成一个key值,别忘记保存。2、java端接入完整目录springboot配置文件application.ymlai: config: deepseek: apiKey:填写官网申请的Key baseUrl:https://api.deepseek.co
- Redis 数据结构与操作详解:从基本命令到高效缓存策略mget-0707
raiseup2
mybatis数据库redis缓存java后端
集群中执行mgetk1k2可能会出现(error)CROSSSLOTKeysinrequestdon'thashtothesameslot因为k1k2不在同一个槽位中只有他们在同一个槽位中,才能mget带标签的mset可以将两个键放到同一个槽位msetk1{tag1}value1k2{tag1}value2tag1是一个标签,保证k1{tag1}和k2{tag1}放到同一个槽位k1{tag1}和k
- python定义字典
Ai...空白
Python
python定义字典定义字典如果字典中同一个键被复制多次,最后一次的赋值被记住。通过字典的键或对应的值len(),获取字典长度(键值对的个数)str(),将字典转换为字符串keys(),获取字典中的所有键,可以结合list()函数,将字典中的键转换为列表将两个列表中值,一个作为键,一个作为值,添加到字典中需要使用zip()函数,和dict()函数实现将list1中的值作为键,list2中的值做值添
- Air101-LCD扩展板按键源码
Denuin多啦咧梦
目录keyscan.lua使用方法本文整理了之前Air101-LCD扩展板按键的测试程序,写成模块方便以后直接拿来使用。Air101-LCD扩展板按键测试程序_Denuin的博客-CSDN博客_air101开发板keyscan.lua---模块功能:Air101-LCD扩展板按键程序--@modulekeyscan--@
[email protected]
- addPointers - overlap with incoming pointers 异常分析
惠(xi)斌
framework稳定性android
一.描述项目做老化测试,遇到systemserver重启,导致执行中间.报错信息:Buildfingerprint:'Dish/Spence/T715DS:15/AP3A.240905.015.A2/1732765343:user/release-keys'Revision:'0'ABI:'arm64'Timestamp:2024-12-0510:45:07.201198654+0800Proce
- 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
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,