- lanqiaoOJ:19871 单调栈
张辰宇-
算法数据结构
【题目描述】给定一个长度为N的序列a。第一行输出每个数字其左边第一个比其大的数字,不存在则输出-1。第二行输出每个数字其右边第一个比其大的数字,不存在则输出-1。第三行输出每个数字其左边第一个比其小的数字,不存在则输出-1。第四行输出每个数字其右边第一个比其小的数字,不存在则输出-1。update:本题数据于2025-01-13加强至2×10^5,以杜绝暴力通过。【输入格式】第一行输入一个正整数N
- 机器人运动学仿真软件:RobWork_(10).C++编程基础
kkchenjj
机器人仿真机器人c++java机器人仿真开发语言模拟仿真
C++编程基础1.C++语言简介C++是一种静态类型的、编译式的通用编程语言,它支持过程化、面向对象和泛型编程。C++由丹麦计算机科学家BjarneStroustrup在1980年代初期在贝尔实验室开发,是C语言的扩展。C++具有高效性、灵活性和广泛的适用性,特别是在系统软件、应用软件、高性能服务器和客户端应用程序的开发中。
- Supervisor 入门指南一篇就够 —— 安装、项目配置与常见报错速查
逻极
python开发工具笔记python运维工具开发supervisor
Supervisor入门指南一篇就够——安装、项目配置与常见报错速查一、Supervisor是什么在服务器进程管理中,Supervisor是一款用Python编写的进程守护与管理工具。它的核心功能是将普通的命令行进程转变为后台daemon进程,并且在进程因意外情况退出时,能够自动将其重启,保证进程的持续运行。在实际应用中,它常出现在多层架构里。比如在Nginx→Gunicorn/Django→Su
- 磁盘性能测试参数
平凡之路001
LINUX性能测试参数:•测试随机写IOPS:fio-direct=1-iodepth=128-rw=randwrite-ioengine=libaio-bs=4k-size=1G-numjobs=1-runtime=1000-group_reporting-filename=iotest-name=Rand_Write_Testing•测试随机读IOPS:fio-direct=1-iodepth
- Python学习笔记
cherishSpring
pythonpython学习笔记
目录一、名词解释二、数据类型(变量名无类型,变量值有类型)三、数据类型转换(万物皆可转字符串)四、标识符五、运算符六、字符串扩展七、数据输入八、if语句九、while语句十、for循环语句十一、函数十二、数据容器1、List列表2、tuple元组3、字符串4、序列的常用操作-切片5、set集合6、dict字典7、数据容器相互转换8、通用操作十三、文件编码一、名词解释1、字面量被写在代码中的固定的值
- nginx+nacos集群配置模版
cherishSpring
SpringCloudnginxnginx运维
worker_processes1;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;upstreamnacoscluster{server127.0.0.1:10003;server127.0.0.1:1
- 华为路由器PPP MP与CHAP验证实验详解
神秘人X707
网络服务器
实验拓扑图实验目的R1和R2使用PPP链路直连,R2和R3把2条PPP链路捆绑为PPPMP直连按照图示配置IP地址R2对R1的PPP进行单向chap验证R2和R3的PPP进行双向chap验证实验步骤1.R1和R2使用PPP链路直连,R2和R3把2条PPP链路捆绑为PPPMP直连步骤一在R2上创建MP-GROUP口[R2]intMP-group1步骤二把S1/0和S2/0加入到上一步创建的MP-GR
- 数字图像处理(三:图像如果当作矩阵,那加减乘除处理了矩阵,那图像咋变):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
数字图像处理(三)一、(准备工作:咋玩,用什么玩具)图像以矩阵形式存储,那矩阵一变、图像立刻跟着变?1.Python+JupyterNotebook/Lab+库(NumPy,OpenCV,Matplotlib,scikit-image)2.MATLAB+ImageProcessingToolbox3.JavaScript+HTML5Canvas+浏览器4.专业的图像处理软件(带脚本/插件功能)二、
- Windows批量修改文件属性方法
lkm0522
windows
标题使用icacls命令(推荐批量操作)打开管理员权限的命令提示符(CMD)执行以下命令:cmdicacls"文件夹路径"/grant用户名:(OI)(CI)F/T/C参数说明:(OI):对象继承-适用于文件夹(CI):容器继承-适用于子文件夹F:完全控制权限/T:递归处理所有子文件夹和文件/C:即使遇到错误也继续执行示例icacls"D:\EFI\Microsoft\Boot"/grantAdm
- Docker 部署的 GitLab备份和恢复
码上有约
经验分享dockergitlabeureka
Docker部署的GitLab备份和恢复数据使用Docker部署的GitLab可以通过Docker命令来进行备份和恢复。以下是具体步骤:1.停止GitLab容器在进行备份之前,最好先停止GitLab容器以确保数据一致性:dockerstop2.创建备份启动GitLab容器并执行备份命令:dockerexec-tgitlab-backupcreate备份文件将存储在GitLab容器内的/var/op
- 简单英语语法2 - 可数与不可数名词
louyang
1可数名词这些名词代表的东西,可以被一个个数出来。pen,computer,bottle,spoon,desk,cup,television,chair,shoe,finger,flower,camera,stick,balloon,book,table,comb,etc.大多数名词的复数是-直接+spens,computers,bottles,spoons,desks,cups,televisi
- Ubuntu 安装 Gitlab
Kesling
服务部署ubuntugitlablinux
Ubuntu安装Gitlab安装依赖打开终端,运行如下命令:sudoaptupdatesudoaptupgradesudoaptinstallcurlopenssh-serverca-certificatespostfix安装GitLab前往GitLab官网,需要根据服务器系统,搜索需要安装的版本号。根据官网提示下载源文件,执行如命令curl-shttps://packages.gitlab.co
- ubuntu部署gitlab-ce及数据迁移
SilentCodeY
java开发语言gitlabubuntu
ubuntu部署gitlab-ce及数据迁移进行前梳理:在esxi7.0Update3基础上使用ubuntu22.04.5-server系统对gitlab-ce16.10进行部署,以及将gitlab-ee16.9数据进行迁移到gitlab-ce16.10进行后总结:起初安装了极狐17.8.3-jh版本(不支持全局中文,就没用了)又安装了gitlab-ce16.10.10,(和旧服务器版本不一致,备
- 使用Python Scrapy打造个性化爬虫
使用PythonScrapy打造个性化爬虫——知识金字塔构建1.引入与连接:从“手动复制”到“自动化采集”的跨越你是否遇到过这样的场景?想整理1000条知乎优质回答做数据分析,却要逐条复制;想追踪某电商平台的商品价格波动,却要每天手动刷新页面……这些重复劳动,正是“个性化爬虫”的用武之地!与已有知识的连接:你可能用过requests+BeautifulSoup写过简单爬虫,但面对大规模数据、复杂反
- github 个人主页配置
Guthub个人主页(官方称呼是profile)可以展示很多有用的信息,例如添加一个首页被访问次数的计数器,一个被Star与Commit的概览信息,以及各种技能标签,设备标签等,还可以利用wakatime显示你最近编码各类语言的使用时长。默认的主页会显示其仓库信息、提交信息,例如Linux之父Linus的GitHub主页长这样:Github关于主页定制的说明文档:Settingupandmanag
- NetBackup7.6客户端安装及配置
Sp0n
1.从官网选择对应版本进行下载2.解压并进入目录执行安装命令./install3.正确填写服务端名称、客户端名称可以看到NBU客户端已经安装好并在后台运行了4.可以在/user/openv/netbackup/bp.conf文件中修改服务端名和客户端名5.打开防火墙1556端口(让服务端和客户端可以正常互连)
- Vue.config全局配置
辉夜真是太可爱啦
1.取消Vue所有的日志与警告。Vue.config.silent=true;2.Vue自定义键名Vue.config.keyCodes={v:86,f1:112,//camelCase不可用mediaPlayPause:179,//取而代之的是kebab-case且用双引号括起来"media-play-pause":179,up:[38,87]}3.设置为false以阻止vue在启动时生成生产提
- 操作系统互斥全攻略:从屏蔽中断到TSL指令
ruan114514
操作系统嵌入式硬件单片机
屏蔽中断(DisablingInterrupts)核心概念:一种低级同步原语,主要用于单处理器(Uniprocessor/Single-CPU)系统。通过在执行临界区代码前暂时禁止CPU响应外部硬件中断,保证一小段代码(通常是操作关键内核数据结构)的原子性执行。工作原理:进入临界区前:执行特殊CPU指令(如CLI-ClearInterruptFlagonx86)关闭中断响应。执行临界区代码:CPU
- 阿里云RDS MySQL物理备份文件恢复到自建数据库
官方文档RDSMySQL物理备份用XtraBackup恢复到自建数据库_云数据库RDS(RDS)-阿里云帮助中心通过Percona官方仓库来安装最新版本的xtrabackup:(如果没安装)#添加Percona仓库sudoyuminstallhttps://repo.percona.com/yum/percona-release-latest.noarch.rpmsudopercona-relea
- PowerPCB(PADS)常见问题全集
weixin_33774308
数据库
来自:http://hi.baidu.com/huxianfangyuan/blog/item/01bdff730259c5168701b08d.html1、走线很细,不是设定值`有时将预拉线布好线后,所布的线变成了一根很细的线而不是我们所设定的线宽,但是查看它的属性也还是一样的最小线宽显示值的设定大于route线宽。setup--preferences--global--minimumdispl
- MongoDB创建集合命令db.createCollection详解
ywb201314
Mongodb
完整的命令如下:db.createCollection(name,{capped:,autoIndexId:,size:,max})name:集合的名字capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义size:限制集合使用空间的大小,默认为没有限制max:集合中最大条数限制,默认为没有限制autoIndexId:是否使用_id作为索引,默认为使用(t
- 二、ubuntu+django+nginx+uwsgi+vue:部署django+vue前后端分离项目
一、创建用户和文件夹#创建www文件夹,所有网站项目都放到这里$sudomkdir/www#创建用户组sudogroupaddwww-g666#创建用户$sudouseraddwww-u666-g666-M-s/sbin/nologin#查看$idwwwid#设置www文件夹的所属组和所属用户$sudochown-Rwww.www/www/#$sudochmod-R666某一目录,所有用户对一个目
- 【思维导图实战派T5】17/21 《未来简史》第三部分(第8-11章)
思维导图实战派_沈怡芳
今天换了种方式画线条,先画出一个分支所有线条再写字(当然是在有草图的情形下),这个好处是线条出手时画的流畅些,但由于画时紧张,反而不舒展,有时还是喜欢回头描,这个习惯挺顽固,只有多多练习。今天完成了全部章节的阅读,明天整合。图片发自App图片发自App
- VSCode使用Jupyter完整指南配置机器学习环境
z日火
校招学习日记vscodejupyter机器学习
接下来开始机器学习部分第一步配置环境:VSCode使用Jupyter完整指南1.安装必要的扩展打开VSCode,按Ctrl+Shift+X打开扩展市场,搜索并安装以下扩展:必装扩展:Python(Microsoft官方)-Python语言支持Jupyter(Microsoft官方)-Jupyternotebook支持Pylance(Microsoft官方)-Python智能提示和语法检查推荐扩展:
- md5 collision(NUPT_CTF)
胖佳儿Clara
md5collision(NUPT_CTF)100http://120.24.86.145:9009/md5.php访问题目链接,得到提示inputa,而题目是md5collision,md5碰撞。根据==用法,0==字符串是成立的,从而可以绕过MD5检查。所以找一个md5是oe开头的值,get方式传参过去,PAYLOAD:120.24.86.145:9009/md5.php?a=s8789261
- 2018.09.22
Mr_Oldman
It'sSaturday.SixSaiFongMariotooktheIRTlocalsubwaydowntown.Heheldthematchboxupatthelevelofhischestsohecricketcouldseeout.ThiswasthefirsttimeChesterhadbeenabletowatchwherehewasgoingonthesubway.Thelastti
- 笑看人间沉浮事,闲坐摇扇一壶茶。
初斋
Laughattheupsanddownsoftheworld,sitaroundandshakeapotoftea.我想做到这点很难很难,你以为终究是你以为,你不明白也就只有你不明白,这是真的很残酷,你不是活在教科书里的那样,这个世界温柔又善良,当然也没有大家所说那样邪恶。Thecolorofsnowandjadeintheroyalguardsmakesyousmile.笑看人间沉浮事,闲坐摇
- MybatisPlus-13.扩展功能-DB静态工具
天上掉下来个程小白
微服务数据库mybatisplus微服务springbootjava
一.DB静态工具我们来看mp提供的第二个扩展功能——DB静态工具。首先我们来看Db类中都提供了哪些静态方法。其中save方法用来新增,update方法用来更新,remove用来删除,list用来查询(批量),count用来计数,get用来查询(ById:根据id查询,One:查一个),page分页查询,lambdaQuery查询,lambdaUpdate更新。由于这些都是静态方法,这就导致在方法的
- 基于Docker构建Python后端项目落地总结
Docker使用总结基于Dockerfile的镜像构建示例dockerfile解析#加载centos7的最小镜像源FROMcentos:7RUNyumcleanallRUNyum-yupdate#修改时区RUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime&&echo"Asia/Shanghai">/etc/timezone#安装中文支持R
- 【STM32单片机】STM32单片机按键实现长按、短按处理
森冰
单片机stm32嵌入式硬件
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、为什么要实现一个按键多个功能?二、使用步骤1.开启EXTI中断及NVIC配置2.外部中断处理3.定时器中断处理4.按键处理5.长按处理6.短按处理总结前言如何使用按键完成长按、短按,在本文中使用单片机stm32f103c8t6完成。提示:以下是本篇文章正文内容,下面案例可供参考一、为什么要实现一个按键多个功能?在设计过
- 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
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,