- [转]MFC窗体中打开第三方exe程序到指定区域
XiangDong_
MFC
2018年8月18日转发至:https://blog.csdn.net/tfygg/article/details/51174801流程如下:1、CreateProcess创建外部EXE进程2、获取指定区域的坐标3、查找进程的主窗口4、将外部程序移到指定区域5、调用ShowWindow显示窗口主程序如下:handle=StartProcess(“D:\\programtool\\SecureCRT
- JVM 内存共享区域详解
笑衬人心。
JAVA学习笔记jvmjava笔记
Java虚拟机在执行Java程序时,会将所管理的内存划分为若干个不同的数据区域。其中,堆(Heap)和方法区(MethodArea)是所有线程共享的区域,属于JVM的共享内存区。一、JVM内存结构总览区域名称是否线程共享说明程序计数器(ProgramCounterRegister)否当前线程执行字节码的行号指示器Java虚拟机栈(JVMStack)否每个线程私有,方法调用栈帧本地方法栈(Nativ
- 要成为更优秀的程序员,先在脑中推演小段逻辑
CtrlZ学习录
英文资讯算法网络linux
要成为更优秀的程序员,先在脑中推演小段逻辑本系列是我个人翻译的英文阅读笔记,既为巩固所学,也为分享知识(如有侵权请联系删除)下面是正文原文链接:https://the-nerve-blog.ghost.io/to-be-a-better-programmer-write-little-proofs-in-your-head/这是一篇关于我偶然学到的编程技巧的短文,它能帮助我更快速、更准确地编写代码
- 策略模式(Strategy Pattern)+ 模板方法模式(Template Method Pattern)的组合使用
usingMicrosoft.Extensions.DependencyInjection;namespaceConsoleApp9{internalclassProgram{staticasyncTaskMain(string[]args){Console.WriteLine("Hello,World!");//创建并配置依赖注入容器var_serviceProvider=newServiceC
- c#第10--1次作业
八度_八度
要求:/***作业2:购物金额结算*步骤:1.创建一个长度为5的double类型数组,存储购物金额。2.循环输入五笔购物金额,并累加总金额。3.利用循环输出五笔购物金额,最后输出总金额。**/代码:namespace作业2{classProgram{staticvoidMain(string[]args){/***作业2:购物金额结算*步骤:1.创建一个长度为5的double类型数组,存储购物金额
- 如何解决 undetected_chromedriver 启动慢问题
小马哥编程
chromeseleniumui
要解决undetected_chromedriver启动慢的问题,可以从以下几个方面优化配置和代码:1.指定本地Chrome二进制路径避免自动搜索Chrome路径,直接指定位置:driver=uc.Chrome(browser_executable_path=r'C:\ProgramFiles\Google\Chrome\Application\chrome.exe')2.禁用GPU和沙盒(关键优
- C++编译期优化:性能提升终极指南
止观止
C++c++开发语言编译期运行时
引言在现代C++开发中,性能优化是一个永恒的话题。而将运行时成本转移至编译期(Compile-time)的技术,正成为高性能C++开发者的必备技能。本文将深入探讨如何利用模板元编程(TemplateMetaprogramming)和constexpr特性,将传统运行时计算转移到编译期完成,从而显著提升程序运行效率。通过本文,您将学习到:模板元编程的基本原理与高级技巧constexpr在编译期计算中
- 从配置到演示:使用 WLLVM 将复杂项目编译成一个 bitcode 文件,并使用 SVF 工具进行分析
使用SVF进行代码分析时,需要一个bitcode文件(.bc),但对于复杂的项目,一般只能得到分散的bitcode文件。GitHub上的项目WholeProgramLLVM旨在解决这个问题,使用该工具将整个项目编译成单个bitcode文件。点这里:WLLVM官方教程点这里:SVF官方教程在实际操作时,我没有完全按照官方教程来,因为年代有些久远了。1.安装conda并创建所需的Python环境直接参
- Windows环境变量的配置
Windows环境变量的配置:(右键计算机-属性-高级系统设置-环境变量-系统变量)几个要素1.JAVA_HOME,2.PATH,3.CLASSPATH1.JAVA_HOME(无则新建,有则双击设置)变量名:JAVA_HOME变量值:是你自己安装jdk的路径,如我的jdk安装路径:C:\ProgramFiles\Java\jdk1.7.02.PATH变量名:PATH变量值:jdk的bin路径,如:
- C/C++连接mysql查询数据
C/C++连接mysql查询数据Cmakecmake_minimum_required(VERSION3.13)project(readMySQL)set(CMAKE_CXX_STANDARD14)add_executable(readMySQLmain.cpp)set(MYSQL_HOME"C:\\ProgramFiles\\MySQL\\MySQLServer5.6")include_dire
- 无锁编程:突破性能瓶颈的并发重构
止观止
C++c++并发编程多线程无锁并发
引言在现代高性能计算领域,多线程编程已成为提升系统吞吐量的关键手段。然而,粗粒度锁的使用往往会成为系统性能的瓶颈,导致线程频繁争用资源,反而降低了整体性能。本文将深入探讨如何通过并发重构技术,打破锁争用带来的性能瓶颈。通过本文,读者将学习到:如何识别和检测多线程代码中的锁竞争问题无锁编程(Lock-freeprogramming)的核心原理与实现技巧线程局部存储(ThreadLocalStorag
- 动态规划 (Dynamic Programming) 算法概念-JS示例
香蕉可乐荷包蛋
#动态规划算法动态规划javascript
核心概念解析动态规划是一种用于解决具有重叠子问题和最优子结构特性的复杂问题的算法设计技术。它通过将复杂问题分解为更小的子问题,并存储子问题的解来避免重复计算,从而提高效率。关键特性最优子结构:问题的最优解包含子问题的最优解重叠子问题:在递归求解过程中,相同的子问题被多次计算无后效性:某个阶段的状态一旦确定,就不会受到后续决策的影响动态规划与分治法的区别分治法:子问题不重叠,各自独立求解动态规划:子
- 动态规划 (Dynamic Programming) 算法概念-Python示例
香蕉可乐荷包蛋
#动态规划算法动态规划python
Python实例详解1.斐波那契数列#传统递归方法-效率低下O(2^n)deffibonacci_recursive(n):ifn=weights[i-1]:dp[i][w]=max(dp[i][w],dp[i-1][w-weights[i-1]]+values[i-1])returndp[n][capacity]#空间优化版本defknapsack_optimized(weights,value
- 芯片ad71X linux 驱动程序
/*AD714XCapTouchProgrammableControllerdriversupportingAD7142/3/7/8/7ACopyright2009-2011AnalogDevicesInc.LicensedundertheGPL-2orlater.*/#include#include#include#include#include#include#include“ad714x.h
- C++入门自学Day1-- C++基础
科大饭桶
c++开发语言c系统
一、C++简介C++是在C语言的基础上发展起来的一种支持面向对象编程的语言。面向过程(ProceduralProgramming)1.定义面向过程是一种以过程(Process)或函数(Function)为中心的编程方法。程序被看作是由一系列顺序执行的步骤(命令、语句)构成的,强调从上到下的控制流程。2.特点以函数为单位组织代码,关注的是“做什么、怎么做”;数据和函数是分开的;常见操作:调用函数、传
- spring概述及其中基于xml的ioc配置
书到用时f恨少
1.spring是什么?Spring是分层的JavaSE/EE应用full-stack轻量级开源框架,以IoC(InverseOfControl:反转控制)和AOP(AspectOrientedProgramming:面向切面编程)为内核,提供了展现层SpringMVC和持久层SpringJDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多
- SOLDWORK无效的(不一致的)使用许可号码(-8,544,0)
首先到安装包中找到SOLDWORLSCorp文件夹全选复制然后找到安装到自己选定的盘中的ProgramFiles文件夹去替换SOLDWORLSCorp中的内容,然后关机重启即可。
- 【时序违例阶段原因分析(三)FPGA】——探究FPGA在时序违例中的原因
uote_e
fpga开发matlab
【时序违例阶段原因分析(三)FPGA】——探究FPGA在时序违例中的原因时序违例是电路设计中比较常见的问题,其产生的原因有很多,其中FPGA是一个常见的时序违例源头。本文将重点探究FPGA在时序违例中的具体原因,并对应提供相应的代码实例和分析。FPGA(FieldProgrammableGateArray),中文名为现场可编程逻辑门阵列,是一种可编程逻辑器件。它具有适应性强、设计周期短、成本低等优
- The 2025 Hunan University Programming Contest
love_white
c++算法
The2025HunanUniversityProgrammingContest一、c题二、j题三、F题四、H题五、D题地址:一、c题签到题,思路就是找到两个不递增的位置,交换两个位置的值,然后再遍历一边看看满不满足整体递增。#includeusingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(0);cout.ti
- 极限编程Extreme Programming
ExtremeProgramming(XP)*isoneofthemostwidelyusedagilemethodologies.XPistraditionallytargetedtowardsmallerdevelopmentteamsandrequiresrelativelyfewdetailedartifacts.XPtakesaniterativeapproachtoitsdevelop
- 从零开始,手把手教你配置 Java 开发环境,简单易学,轻松完成!
1、首先安装JDK官网下载后直接安装配置环境变量:添加JAVA_HOME变量名:JAVA_HOME变量值:C:\ProgramFiles(x86)\Java\jdk1.8.0_91//填写实际路径在Path中添加%JAVA_HOME%\bin%JAVA_HOME%\jre\bin添加CLASSPATH(1.5版本以上不用配置这个)变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib
- STM32 IAP升级失败之谜:时钟源配置的陷阱与解决方案
朽木自雕i
《单片机项目实战》系列《STM32》系列stm32嵌入式硬件单片机
问题背景在嵌入式开发中,IAP(In-ApplicationProgramming)技术是实现固件远程升级的关键。最近我在一个STM32项目中遇到了一个令人困惑的问题:相同的芯片、相同的硬件设计、相同的bootloader和应用程序代码,在一块板子上IAP升级正常,但在另一块板子上却完全失败。经过深入排查,最终发现问题根源在于bootloader程序中使用的时钟源配置。问题现象❌大多数板卡不能正常
- 入门网络安全,NISP真的有必要考吗?
一、NISP是什么?国家信息安全水平考试(NationalInformationSecurityTestProgram,简称NISP),是由中国信息安全测评中心实施培养国家网络空间安全人才的项目,由国家网络空间安全人才培养基地运营/管理。说白了就是国家为了发展网络安全而搭建的一个培训、认证考试平台。由国家做背书,属于国家级别的认证考试。NISP认证分为一级、二级、三级,证书由中国信息安全测评中心颁
- 动态规划:从入门到精通
本文全章节一共一万七千多字,详细介绍动态规划基础与进阶技巧,全篇以代码为主,认真读完理解,你对动态规划的理解一定会有一个质的飞跃。一、动态规划简介:动态规划(DynamicProgramming,简称DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。它的核心思想是:将复杂问题分解成子问题,保存子问题的解,避免重复计算。动态规划本质上是一种用空间换时间的算法思想:时间优化:避免
- Python——类与对象
bright_colo
python
面向对象编程(Object-OrientedProgramming,简称OOP)是一种通过组织对象来设计程序的编程方法。Python天生就是面向对象的模块化编程。一、初识类与对象/------->BYDE6(京A.88888)实例,对象车(类)\------->BMWX5(京B.00000)实例(对象)/------->小京巴(户籍号:000001)狗(类)\------->导盲犬(户籍号:000
- Windows下使用UIAutomation技术遍历桌面窗口和指定窗口内容的AutomationWalker.exe的C#源代码
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Automation;//引用"C:\ProgramFiles(x86)\ReferenceAssemb
- C#入门实战:数字计算与条件判断
无规则ai
C#c#visualstudio
1.用c#语言实现简单的俩个数字相加的功能通过convert来实现数据类型的转换usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace_04{internalclassProgram{staticvoidMain(strin
- JavaSE基础--类和对象--“类和对象的初步认识”
拧开瓶盖喝酸奶
java开发语言
1.面向对象的初步认识:1.1什么是面向对象:Javs是一门纯面向对象的语言(ObjectOrientedProgram)简称OOP,在面向对象的世界里,一切事物都是对象,面向对象是一种解决问题的思想,主要通过对象之间的交互来完成对问题的解决,用面向对象的思想来解决问题更符合人们的认知,对于大型程序的设计,扩展以及维护都十分友好。1.2面向过程与面向对象:1:传统洗衣服:好比洗衣服一样,传统洗衣服
- C#注释技巧与基础编程示例
无规则ai
C#c#算法开发语言
以下是一个包含基础注释的C#程序示例,展示了C#中各类注释的使用方法:usingSystem;namespaceBasicCSharpProgram{//////Program类是应用程序的入口点///包含Main方法作为程序执行的起点///publicclassProgram{//程序入口点,程序从这里开始执行//args参数接收命令行传入的参数publicstaticvoidMain(stri
- 机器学习算法解析:XGBoost与LightGBM
AI天才研究院
AI人工智能与大数据AI大模型应用入门实战与进阶AI大模型企业级应用开发实战计算科学神经计算深度学习神经网络大数据人工智能大型语言模型AIAGILLMJavaPython架构设计AgentRPA
机器学习算法解析:XGBoost与LightGBM作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming关键词:XGBoost,LightGBM,高效特征选择,并行化训练,自动调参,弱分类器集成1.背景介绍1.1问题的由来随着数据科学和人工智能技术的发展,越来越多的问题需要利用机器学习算法进行解决。传统的一维决策树虽然直观且易于理解,但在面对高维度数据集时
- 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
作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,