- Linux网络服务配置:从基础到高级
M78NB666
linux运维服务器
一、网络服务配置基础1.网络接口配置Linux系统中,网络接口的配置通常通过/etc/network/interfaces文件(Debian/Ubuntu)或/etc/sysconfig/network-scripts/ifcfg-文件(RedHat/CentOS)来完成。配置内容包括IP地址、子网掩码、网关等。2.DNS配置DNS配置通常在/etc/resolv.conf文件中设置,包括指定DN
- 【问题解决】记一次 ubuntu 报错 version `GLIBC_2.28‘ not found (required by node) 解决过程
瘦子由
ubuntulinuxnode.js
在ubuntu安装node.js20.x版本的时候报标题中错误现象解决方案1.更新系统软件包2.查看系统的GLIBC版本3.添加debian软件源4.添加软件源key5.更新软件源6.安装libc67.验证系统中的GLIBC版本8.验证node可用现象解决方案1.更新系统软件包sudoaptupdatesudoaptupgrade2.查看系统的GLIBC版本strings/lib/x86_64-l
- Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法(亲测有效)
Yimning
UbuntuLinuxubuntulinuxdebian
关于/lib/x86_64-linux-gnu/libc.so.6:versionGLIBC_2.28’notfound`出现报错,建议不要使用源码包去编译并升级。在下文有分享一个使用官方的Debian软件包去升级使用的方法。仅供参考!环境#uname-aLinuxUbuntu5.4.0-144-generic#161~18.04.1-UbuntuSMPFriFeb1015:55:22UTC202
- zybo上运行linux,Zybo开发板linux作业系统移植
周行文
zybo上运行linux
文章主要介紹zyboboard上linux作业系统移植过程。分别介绍了开发环境搭建、U-boot编译、linux内核编译、busybox制作等流程及注意事项。文章使用的开发板是zynq7000系列的zyboboard。Vivado版本是2015.1.主机系统是Debian9.1.开发环境搭建工欲善其事必先利其器,做开发前搭建好编译环境是重要的一步,这些步骤大体上都相同,然而对于不同的系统平台、硬件
- 6.S081的Lab学习——Lab10: mmap
努力找工作的小菜鸡
6.S081的Lab学习学习linux
文章目录前言mmap(hard)提示:解析总结前言一个本硕双非的小菜鸡,备战24年秋招。打算尝试6.S081,将它的Lab逐一实现,并记录期间心酸历程。代码下载官方网站:6.S081官方网站安装方式:通过APT安装(Debian/Ubuntu)确保你的debian版本运行的是“bullseye”或“sid”(在ubuntu上,这可以通过运行cat/etc/debian_version来检查),然后
- debian内核小版本升级(9.0->9.9)
Minority
执行lsb_release-a查看内核版本root@xxxxxxx#lsb_release-aNoLSBmodulesareavailable.DistributorID:DebianDescription:DebianGNU/Linux9.0(stretch)Release:9.0Codename:stretch查看/etc/apt/sources.list,将其更新为想要版本的snapshot
- Docker进阶-构建镜像最佳实践
「已注销」
Dockerdockerlinux运维
在真正实践之前,我们需要先搞明白几个问题:Docker镜像是什么Docker镜像的作用容器和镜像的区别及联系Docker镜像是什么这里,我们以一个Debian系统的镜像为例。通过dockerrun--itdebian可以启动一个debian的容器,终端会有如下输出:/#dockerrun-itdebianUnabletofindimage'debian:latest'locallylatest:P
- debian10安装配置_如何在Debian 10上设置和配置证书颁发机构(CA)
cukw6666
linuxjavapythonubuntu大数据
debian10安装配置介绍(Introduction)ACertificateAuthority(CA)isanentityresponsibleforissuingdigitalcertificatestoverifyidentitiesontheinternet.AlthoughpublicCAsareapopularchoiceforverifyingtheidentityofwebsit
- Ubuntu镜像源配置
lldhsds
ubuntulinux
Ubuntu配置镜像源1.简介Ubuntu,是一款基于DebianLinux的以桌面应用为主的操作系统,内容涵盖文字处理、电子邮件、软件开发工具和Web服务等,可供用户免费下载、使用和分享。下载地址:https://mirrors.aliyun.com/ubuntu/2.相关仓库Ubuntu安装源(ubuntu-releases):https://developer.aliyun.com/mirr
- RK3588 Debian11进行源码编译安装Pyqt5
不做签到员
debianrknnrk3588编译安装pyqt5sip
RK3588Debian11进行源码编译安装Pyqt5参考链接https://blog.csdn.net/qq_38184409/article/details/137047584?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171808774816800222841743%2522%252C%2522scm%2522%253A%
- Linux中区域设置
Java小白笔记
Linux相关linux运维服务器
Linux中区域设置sudolocale-genen_US.UTF-8sudoupdate-localeLANG=en_US.UTF-8如果您的系统提示locale-gen命令未找到,这可能是因为某些发行版的Linux系统默认没有安装这个工具确认Linux发行版本->找到对应的系统安装对应的插件->重新执行命令1.对于Debian/Ubuntu系统如果您使用的是Debian或Ubuntu系统,可以
- VirtualBox Debian 自动安装脚本
入秋的大橘
开发问题解决Linux开发环境debianchrome运维
概览相较于原脚本(安装目录/UnattendedTemplates/debian_pressed.cfg)更新如下内容:配置清华镜像源配置仅主机网卡(后续只需添加仅主机网卡即可)配置Root用户远程登录配置用户sudo组脚本debian_pressed.cfg###Partitioningd-ipartman-auto/diskstring/dev/sdad-ipartman-auto/metho
- ubuntu/debian/kali一键更新所有软件
L0kLOkpu55Y
简单linuxdebianubuntulinux
ubuntu/debian/kali一键更新所有软件更新软件源:sudoaptupdate一键更新所有软件:sudoaptdist-upgrade更新软件源并且更新所有软件:sudoaptupdate&&sudoaptdist-upgrade
- 在Ubuntu/Debian Linux系统上检查已经安装软件包的版本
welson_ll
linux
如果要在Ubuntu/DebianLinux操作系统上检查已经安装软件包的版本(知道Ubuntu/Debian系统上可用的软件包版本),可使用apt、apt-cache、aptitude和apt-show-versions命令。前言在Linux中,所有应用程序均以程序包的形式分发,无非就是与程序包管理系统关联的文件。本文将向您展示一些命令,这些命令可用于检查Ubuntu/DebianLinux机器
- ubuntu / debian 根文件系统制作
mooncity0
Linuxlinux服务器debianubuntu
一、前情提要在工作中,不可避免的需要制作各种客户需要的文件系统,常用的ubuntu、debian等主要需求有:带图形化界面不带图形化界面需提前打包一些应用依赖包进去需要提前内置一些文件或开机自启执行脚本等环境:ubuntu20.04服务器版本一、操作流程1.1构建工具下载#切换更新源sudovim/etc/apt/sources.list:%s/archive.ubuntu.com/mirrors
- Linux配置NTP时间同步
思静语
Linux&运维安装linux运维服务器
在Linux系统中,配置NTP服务器(服务端)和NTP客户端(客户端)以确保系统时间的准确性涉及不同的步骤。下面是如何配置NTP服务端和客户端的详细说明。NTP服务端配置安装NTP服务在NTP服务器上安装NTP服务包。Debian/Ubuntu系列:sudoaptupdatesudoaptinstallntpRHEL/CentOS系列:sudoyuminstallntpFedora:sudodnf
- elasticsearch安装在服务器并进行向量检索
小李飞刀李寻欢
OpenSourceelasticsearch服务器大数据
服务器安装elasticsearch安装Elasticsearch的步骤通常包括以下几个阶段:导入Elasticsearch公钥。创建Elasticsearch仓库。安装Elasticsearch。启动Elasticsearch服务。配置Elasticsearch开机自启。以下是针对基于Debian/Ubuntu系统的安装示例:#1.导入Elasticsearch公钥wget-qO-https:/
- RabbitMQ 入门教程
寂然如故
rabbitmq分布式
介绍RabbitMQ是一个开源的消息代理和队列服务器,实现了AMQP0-9-1标准。它支持多种消息协议,并且可以在各种环境中运行。安装与配置1.安装RabbitMQLinux(Ubuntu/Debian)```bashsudoaptupdatesudoaptinstallrabbitmq-server```Windows-下载并安装[RabbitMQServer](https://www.rabb
- 3.1.2 linux用户管理 : 常用查询 (debian和RedHat通用) : 用户组查询
阳光的王小潮
3.1.2linux用户管理:常用查询(debian和RedHat通用):用户组查询1.常用命令$groups##查看当前用户所属用户组$cat/etc/group##查看所有的用户组$cat/etc/group|grepsgx##查看指定用户组2.查看当前用户所属用户组$groupssgxadmcdromsudodipplugdevlpadminsambashare3.查看用户组(所有)$cat
- Linux并行gzip压缩工具pigz
冰封飞飞
由于项目原因,经常需要压缩和解压缩大量的数据。10G规模以上,而默认tar打包和系统默认的压缩工具是单线程的。服务器多核CPU完全利用不起来,瓶颈在CPU的处理上面。于是使用了pigz这个可以利用多核的并行压缩工具。效果显著,如果你也需要频繁压缩大量的数据,可以尝试一下这个软件。1.安装centos&redhat系yuminstallpigzdebian&ubuntu系apt-getinstall
- CPU/内存/综合性能评估工具汇总-1:lmbench
So_shine
linux调试工具和性能量化性能优化
目录一、概括二、lmbench一、概括嵌入式开发中对要设计的产品、立项的项目进行设计时,往往需要对关键芯片进行性能评估,本文主要总结基于linux系统的产品在性能评估时的工具使用总结,在aarch64(arm64平台下测试),板卡根文件系统为debian系统。工具列表如下:名称作用git源码链接lmbench带宽测评,反应时间测评https://github.com/redrose2100/lmb
- 【运维之服务器】如何查看Ubuntu版本及常见版本介绍
程序者王大川
运维运维服务器ubuntu
一、引言Ubuntu是一个基于Debian构建的免费、开源的操作系统,广泛应用于个人电脑、服务器以及云平台。了解Ubuntu版本对于系统维护、软件安装和更新都具有重要意义。本文将带你了解Ubuntu版本的概念,教你如何查看Ubuntu版本,并介绍一些常见的Ubuntu版本。二、什么是Ubuntu版本Ubuntu版本指的是Ubuntu操作系统的不同发行版。每个版本都有其独特的特点、更新周期和官方支持
- Debian常用包管理命令用法详解
码农飞飞
脚本语言工具使用debianlinux服务器包管理debuildaptdpkg
文章目录apt-get/apt-cacheaptdpkgdpkg-sourcedebuilddpkg和apt是两个不同的工具用于管理Debian系列Linux发行版上的软件包。dpkg是底层工具,负责直接安装、删除和管理软件包文件(.deb)。它不会自动处理软件包的依赖关系,需要用户手动处理。apt是一个高级工具,自动处理软件包依赖,能够从软件仓库中下载和安装软件包,进行更新和升级。apt依赖dp
- 编译安装FFmpeg
Solomon_Xie
参考官方:CompileFFmpegforUbuntu,Debian,orMint编译安装FFmpeg不光是需要编译它本身,还需要编译安装一系列的视频处理器。基本安装步骤:安装后面编译所需的依赖:autoconfautomakebuild-essentialcmakegit-corelibass-devlibfreetype6-devlibsdl2-devlibtoollibva-devlibvd
- 【详细】linux 打包QT程序
王尼莫啊
linuxQTqtlinux
【详细】linux打包QT程序一.安装linuxdeployqt1.1下载linuxdeployqt源码并修改如下二.安装patchelf三.打包appimage四.打包成Debian包4.1control文件内容4.2postinst文件内容4.3postrm文件内容4.4打包命令4.4安装命令4.5卸载命令一.安装linuxdeployqt下载地址:https://github.com/pro
- Debian安装无线网卡
一代魔笛
1.配置源sudovim/etc/apt/sources.list加入:debhttp://httpredir.debian.org/debian/jessiemaincontribnon-free保存2.安装驱动sudoapt-getinstallfirmware-*3.重启sudoreboot
- docker镜像 Alpine、Debian、Ubuntu、Centos 最佳选择
ejinxian
dockerdebianubuntu
dockerfile参考:https://gitee.com/ft/hello-py.git1.AlpineAlpine是一个轻量级的Linux发行版,非常适合在容器中使用。它的镜像非常小巧,通常只有几MB大小。由于其小巧和安全性,Alpine是构建微服务和容器化应用的常见选择。Alpine使用apk作为其包管理工具。包管理器:apk是AlpineLinux的包管理器,用于安装、升级、卸载软件包。
- debian/ubuntu 通过串口连接WiFi
书里啥都有
debianubuntulinux
修改/etc/wpa_supplicant.conf,如果没有这个文件就创建文件vi/etc/wpa_supplicant.conf设置wifi信息network={ssid="这里是你的wifi账号"psk="这里是你的wifi密码"}连接wifikillallwpa_supplicantwpa_supplicant-iwlan0-c/etc/wpa_supplicant.conf-B&dhcl
- 导出文件系统(Centos/Ubuntu/Debian)
书里啥都有
centosubuntudebian
创建用于存放文件系统的文件夹sudomkdirwenjianjia其中192.168.*.*是需要被保存的设备ip,这个命令执行后你会在文件夹中看到一个完整的文件系统
[email protected].*.*:/wenjianjia其中bs是内存块的大小,count是内存块的个数,那么这个系统就要小于我们申请的空间大小(bs*count约为8G)sudoddif=/dev/zero
- Debian下使用OpenCV库保存摄相头数据为图片(arm)
stxinu
嵌入式LinuxDebianOpenCVubuntuopencvarm开发Debian
在《移植OpenCV3.1到BBB-Debian》一文件中配置好的环境为前提(后期不特别说明,ARM版的例子均以该环境为基础),编写使用OpenCV库保存WEBCAM的数据为图片的代码,下面是相应的源码和编译配置文件(都保存在SaveCamPic目录下):1.源码scp.cpp#include#include#include#include#include#include#include#incl
- 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
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,