- 前端react框架实现打包时间动态加入配置展示在指定页面
注意:当前方法特定为create-react-app构建框架,其他的构建流程不同,不能直接照搬react-scripts的方式。✅目标:在React打包(build)时,自动将当前时间写入代码中某个变量或console.log中,例如:console.log('BuildTime:2025-06-2415:09');✅实现思路:React默认使用create-react-app(CRA),它基于W
- Python爬虫短视频平台数据抓取:抓取视频和评论技术方案
数据狐(DataFox)
2025年爬虫实战项目python爬虫开发语言
一、摘要本方案提供完整的Python爬虫实现流程,涵盖短视频平台(以抖音为例)的视频与评论数据采集技术,包含环境配置、核心代码实现及反爬优化策略。通过模拟浏览器操作、API接口分析及数据持久化处理,实现高效合规的数据采集。二、引言短视频平台数据具有巨大商业价值,但直接爬取面临动态渲染、加密参数等反爬机制挑战。本方案采用混合技术路线,结合网页解析与移动端API分析,平衡效率与成功率。三、环境配置基础
- 力扣 Hot 100 刷题记录 - LRU 缓存
a李兆洋
leetcode缓存算法
力扣Hot100刷题记录-LRU缓存题目描述LRU缓存是力扣Hot100中的一道经典题目,题目要求如下:请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity):以正整数作为容量capacity初始化LRU缓存。intget(intkey):如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(int
- Ubuntu 主机通过 `enp4s0` 向开发板共享网络的完整步骤
is0815
网络ubuntu
✅步骤总览:Ubuntu主机通过enp4s0向开发板共享wlp5s0网络1️⃣为enp4s0设置静态IPsudoipaddrflushdevenp4s0#清除旧配置(可选)sudoipaddradd192.168.100.1/24devenp4s0sudoiplinksetenp4s0up2️⃣安装并配置dnsmasq(提供DHCP给开发板)sudoaptinstalldnsmasq编辑配置文件:
- 嵌入式环境下的C++最佳实践
is0815
c++开发语言
目标:学习嵌入式环境下的C++最佳实践内存管理优化:避免动态分配为什么避免动态分配?堆内存分配(如malloc,new)开销大,速度慢。堆内存容易导致碎片化,增加内存压力。动态分配增加内存泄漏、使用后未释放等风险。实时、高性能系统(嵌入式、游戏引擎)尤其需要优化内存管理。栈vs堆的性能对比特性栈(stack)堆(heap)分配/释放速度极快(O(1))较慢(需管理分配表,O(logn)或更慢)生命
- DeepSeek R1 Android本地化部署
Dawson_Jiang
大模型deepseekollamaAI大模型手机部署deepseek
1.概述android手机端部署deepseek一般需要安装termux,ollama,deepseek三个大的步骤原因分析:deepseek等大模型需要类似ollama的工具去运行。ollama有macwindow和linux版本,无Android版本;termux是一个模拟linux环境的Androidapp,在此环境中即可安装运行ollamalinux版本,然后再ollama上面部署运行de
- 记一次坑自己的经历
Dawson_Jiang
androidstudioandroid
一、问题现象:一个简单的APP项目,只有一个MainActivity,启动就报错,(上个月还是正常的):FATALEXCEPTION:mainProcess:com.just.test,PID:6115java.lang.RuntimeException:UnabletoinstantiateactivityComponentInfo{com.just.test/com.just.test.Mai
- 美团门票 陕西博物馆协议
DS网络
美团景区pythonc++c语言java前端
.下载地址:美团门票官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘版本2.子程序GET_时间段,文本型,,本命令由【精易网页调试助手】生成,请配合精易模块使用。.参数prodId,文本型.参数recordId,文本型.局部变量局_网址,文本型.局部变量局_方式,整数型.局部变量局_提交数据,文本型.局部变量ADD_协议头,类_POST数据类.局部变量局_提交协议头,文本型.局部变量局_
- Netty堆内存字节缓冲区深度解析
lifallen
Nettyjava后端nio开发语言算法
UnpooledHeapByteBufUnpooledHeapByteBuf是Netty中基于堆内存(JVM堆)的非池化字节缓冲区实现。它直接使用Java的byte[]数组作为底层存储,适用于常规的JVM堆内存分配场景。核心特点如下:非池化设计:每次分配都会创建新的字节数组,不涉及对象复用。堆内存存储:数据存储在JVM堆上,受GC管理。引用计数:继承AbstractReferenceCounted
- Python HTTP日志分析:Nginx/Apache日志的Python解析
华科℡云
网络协议负载均衡运维
Web服务器日志是监控流量模式、性能瓶颈及安全威胁的关键数据源。Python凭借其丰富的库生态,可高效解析Nginx与Apache的日志格式,实现结构化数据提取与分析。日志格式解析基础Nginx默认采用combined格式,字段包括:$remote_addr(客户端IP)、$time_local(时间戳)、$request(请求方法+URL+协议)、$status(HTTP状态码)、$body_b
- Lagent:从零搭建你的 Multi-Agent
Oculus Reparo!
人工智能
https://github.com/InternLM/Tutorial/blob/camp4/docs/L2/Agent/task.md一、Lagent框架中Agent的使用目标通过Lagent框架,基于InternLM2.5,搭建一个WebDemo,体验其智能体功能与工具集成能力。步骤与实现环境准备激活环境:condaactivatelagent确保已获取API授权令牌,并写入环境变量。代码实
- SpringBoot-SpringBoot整合Swagger使用教程(详细图文介绍,一篇就够了)
只吹45°风
Springspringbootswagger整合
前言日常开发中,接口都是和开发文档相结合的。不论是和前端对接还是三方对接亦或者是接口留档,当我们开发完接口后,都需要去创建对应的接口文档。而修改接口后也要修改相对应的接口文档,但是这个真的很容易疏漏。而且相对于繁重的开发任务而言,维护文档又是一个同样让人心累的事情。那么有没有能针对我们的接口自动生成接口说明的工具呢,这样我们就不需要特意去生成和实时的去维护api文档?答案当然是-有,这就是今天要介
- MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口
zhangfeng1133
github信号处理
以下是MocapApi技术文档githubhttps://github.com/pnmocap/MocapApi?tab=readme-ov-file国内可以查找getcode英文文档https://mocap-api.noitom.com/mocap_api_en.html概述MocapApi是NeuronDataReader(以下简称NDR)的下一代编程接口,设计目标为:跨平台兼容(Win/M
- 通过Stream将List<Long> 转List<String>
不开心找医生ly
java
ListstringList=longList.stream().map(long->long+"").collect(Collectors.toList()));
- websocket多客户端接收消息_WebSocket之消息接收发送
weixin_39940344
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。http协议是单向通信,一般由客户端发起请求,然后接收服务端响应。如果要实现客户端实时消息跟新功能如:更新聊天消息,更新邮件信息,更
- Java List<Long>转List<String>
剩下的远方
开发java
直接上示例:有时候需要将Long集合转为String类型的集合。finalStringcontractLineNumList=shareContractListEntities.stream().map(ShareContractListEntity::getContractLineNum).map(x->x+“”).collect(Collectors.joining(","));分析:shar
- java 学习 底层代码 算法
好学且牛逼的马
java
#33写算法题黑马的视频争取简单的过一遍要考试啦密码的写底层代码秘密的底层代码有点长啊看不懂难找了几个视频课看看吧想看中文版jdkapi吧算了慢慢看先把几个顶级父类给看会了objectsystemstringstringbuilder算法单路递归packagecom.itheima.Recursion;publicclasssingleRecursion{ publicstaticvoidma
- redis-cli 命令详解
戴国进
redisLuaredis-cli
命令使用:redis-cli[OPTIONS][cmd[arg[arg...]]]选项说明:-hServerhostname(default:127.0.0.1).ip地址-pServerport(default:6379).服务器端口号-sServersocket(overrideshostnameandport).-aPasswordtousewhenconnectingtotheserver
- JAVA List<String> 用 stream转为 List<Long>
墨着染霜华
javalist
可以使用JavaStream将List转换为List,前提是这些字符串可以被正确解析为数字。ListlongList=strList.stream().flatMap(s->{try{returnStream.of(Long.parseLong(s));}catch(NumberFormatExceptione){returnStream.empty();}}).collect(Collector
- 稳定币技术全解:从货币锚定机制到区块链金融基础设施
Ashlee_guweng22346
游戏区块链金融架构人工智能自动化java
引言:稳定币的技术定位根据国际清算银行(BIS)2025年定义:稳定币是以法定资产或算法机制维持价值稳定的区块链代币,其本质是传统金融与加密技术的接口层。核心价值:解决加密货币波动性问题→成为DeFi生态的计价基准与结算工具第一章技术原理:稳定币如何实现“稳定”?1.1锚定机制的三类技术路径graphTBA[稳定币类型]-->B[法币储备型]A-->C[加密资产抵押型]A-->D[算法调控型]B-
- Java 集合list 手搓底层源码
好学且牛逼的马
算法
#32Java八股集合基础用法掌握速通小林不是很全老韩详细底层byd课程质量一般八股文听书算法题不会写byd密码的还没开始看双指针技巧秒杀七道链表题目|labuladong的算法笔记等等熬夜看笔记实现底层代码后面非常长但是也只写到了list完map和set明天写collection这段代码展示了Java集合框架的核心接口层次结构。`Collection`是整个集合框架的根接口,定义了集合操作的基本
- antv点击节点设置选中状态不生效、选中某节点时取消选中其他节点
今天不要写bug
antvjsjavascript
正常触发选中节点来说是://节点点击this.graph.on('node:click',e=>{const{item}=ethis.graph.setItemState(item,'click',true)//设置选中状态})有些时候会不生效,或者想在点击某节点的时候,其他节点取消选中,遍历取消可能会有问题先遍历并取消所有节点的选择状态,然后再设置当前项为选中状态,但由于graph.setIte
- DTO、VO、POJO转换性能测试
ZuuuuYao
Java开发语言java
PO、DTO、VO、BO对象转换性能测试一、Java对象转换性能测试(一)测试对象mapstruct(二)测试对象modelmapper二测试代码(1)准备UserEntity(2)准备UserVO(3)编写mapstruct的映射器UserStructMapper(4)准备测试类(5)输出结果三、测试报告四、结论一、Java对象转换性能测试(一)测试对象mapstructMapstruct是一个
- POJO/DTO/DO/EO/VO/BO/PO/AO的含义和使用
石头wang
Java基础/JUC/JVMpojodto
关于POJO/DTO/DO/EO/VO/BO/PO/AO本文讨论POJO/DTO/DO/EO/VO/BO/PO/AO的定义,另外讨论了这些xO在controller、service、dao/mapper层里的使用规范。另外还稍微讨论了controller中是否要“轻逻辑”,mapper接口的规范等等问题。前言在我们的java项目中存在各种xO的概念,如POJO/DTO/DO/EO/VO,还有些后端
- MyBatis逆向工程生成 (生成pojo、mapper.xml、mapper.java)
weixin_30701521
java数据库
MyBatis逆向工程生成mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),可以让程序员将更多的精力放在繁杂的业务逻辑上。企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。之所以强调单表两个字,是因为Mybatis逆向工程生成的Mapper所进行
- Xcode安装及卸载
rs勿忘初心
xcodemacosXcode安装Xcode卸载
MacOS下卸载和安装Xcode卸载Xcode:MacOS下卸载Xcode,重新安装Xcode安装Xcode:https://developer.apple.com/download/more/
- Xcode安装方式
纵使风吹
Mac实用工具xcodeiosmacos
Xcode安装方式1.什么是XcodeXcode是运行在操作系统MacOSX上的集成开发工具(IDE),由AppleInc开发。Xcode是开发macOS和iOS应用程序的最快捷的方式。Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。在实际应用方面,Xcode常常被用作iOS手机模拟器。2.Xcode安装方式方式一:在Mac电脑中自带的商店里搜索Xcode软件进行安装。
- Django ORM 1. 创建模型(Model)
博观而约取
Pythondjango数据库python
1.ORM介绍什么是ORM?ORM,全称Object-RelationalMapping(对象关系映射),一种通过对象操作数据库的技术。它的核心思想是:我们不直接写SQL,而是用Python对象(类/实例)来操作数据库表和记录。ORM就像一个“翻译官”,帮我们把Python代码翻译成数据库能听懂的SQL命令。为什么使用ORM?Django中的ORM提供了一个高层次、抽象化的接口来操作数据库,它的优
- 关于Xcode安装不上/安装慢
行云流水zzz
xcodexcodemacos
我之前在appstore下载的Xcode,一直卡上安装上,到最后还是没有安装成功,最后在官网下载Xcode,xcode下载,点击其他下载,然后选择在web页面下,成功。(看清楚你的mac版本,最新版Xcode只兼容mac最新系统,不兼容旧系统
- Vscode Settings 文件
linshengxuan
vscodeide编辑器
{//todoBetterComments注释高亮//*全局配置"workbench.settings.applyToAllProfiles":["editor.acceptSuggestionOnCommitCharacter"],//设置项用于指定某些设置应应用到所有用户配置文件//*编辑器配置"editor.rulers":[],"editor.formatOnType":true,//在输
- 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
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,