内存有什么用内存大小影响什么有什么影响么他有什

现在会J编程的程序员的月薪有多少哦?会不会有地区性的差异呢?JAVA语言会过时吗?会被别的语言取消吗?
在北京一般新手也就月薪3000,毕竟会的人太多了,而且这东西需要时间经验,新手一般不能独立完成哪怕是简单的项目维护工作。若能有5年专业工作经历收入会到程序员月薪7000左右,项目负责人9000左右,项目奖金也很丰厚。和所有的程序语言一样也会过时,而且周期都比较短。另外提醒下,技能都是敲门的砖,进门后还是要在政工(与领导关系)上多放些心思,多方面积攒各类经验,能做到独当一面,完全独立领导一些人完成一个项目。死抱着技术不放难免长江后浪推前浪。
其他答案(共3个回答)
的工资不会太高,要是项目经理会有年薪10W的说法。程序员一般不超过月薪7千。当然如果在公司干得越久,工资拿得越多,当然地域不同也会有些差别。
56千,在公司中技术属中等水平,大城市,100人左右公司,无职务,一般程序员。
如果行业好一点,企业效益好一点,可能能多23千。
能达一万的话,一般...
当然有前途啦
先在招java程序员的公司很多啊
而且java和。net 是方向啊!
以后老了 能作管理 就作管理
不能就自己发展点事业吧
搞it 的就...
你要看java软件开发的就业前景,可以从以下几个方面去了解:
1、JAVA人才社会需求量:去各大招聘网站搜索一下,就会了解Java需求及薪水情况。
其实老板不要年纪大的是因为头脑不灵光了,毕竟想的事多了,这方面必定分心了,不过我很佩服你,就提点建议,程序员要会的东西很多,数据结构,算法基础是必须的,而且要有...
1、自学考试的考试内容可登陆网站查询:
2、专科什么专业都可以报考,本科一般要求有相应专科证书。
3、 高中生可以参加自学考试
4、毕业证有用。
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区程序员应该有哪些良好习惯呢?请看《程序员的自我修养》 - 下载中心专版 - 电子工程世界-论坛
后使用快捷导航没有帐号?
查看: 1483|回复: 5
程序员应该有哪些良好习惯呢?请看《程序员的自我修养》
在线时间2145 小时
威望50436分
芯币38812枚
TA的帖子TA的资源
程序员的自我修养
& && &&&念书的时候,作为标准的爱好技术的宅男,每天扫一遍各大高校BBS的技术版面,基本好比一日三餐一样平常。我对计算机技术方面的口味很杂,从汇编版到C++到Linux内核开发、Linux应用开发、游戏开发、网络、编程语言、体系结构、移动开发、开源闭源我都会参上一脚。
  我始终认为技术优劣取决于需求,与很多持有“编程语言血统论”的程序开发者不同,我不认为C++或Java本身有什么直接可比性,或者OOP与函数式编程谁优谁劣,我始终坚持认为作为开发者,MOP(Market/Money Oriented Programming)才是唯一不变的编程范式。于是我往往不参与那些技术、平台、语言教派之间的宗教战争,这种论战基本上每周都会有,我很佩服论战各方见多识广、旁征博引、高屋建瓴的论断,但我往往只是灌灌水调节一下思绪。相反,我很关注一些与语言、平台等相对独立的基本的系统概念方面的问题,这些问题比较具体,也比较实用,比如:
  为什么程序是从main开始执行?
  “malloc分配的空间是连续的吗?”
  “PE/ELF文件里面存的是什么?”
  “我想写一个不需要操作系统可以直接在硬件上跑的程序该怎么做?”
  “目标文件是什么?链接又是什么?”
  “为什么这段程序链接时报错?”
  “句柄到底是什么东西?”
  这些问题看似很简单但实际上有很多值得深入挖掘的地方,比如第一个问题围绕着main函数执行前后可以延伸出一大堆问题:程序入口、运行库初始化、全局/静态对象构造析构、静态和动态链接时程序的初始化和装载等。我们把这些问题归结起来,发现主要是三个很大的而且连贯的主题,那就是“链接、装载和库”。
在线时间14 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 416, 距离下一级还需 84 积分
一粒金砂(高级), 积分 416, 距离下一级还需 84 积分
我想写一个不需要操作系统可以直接在硬件上跑的程序该怎么做?
明摆的事情,用单片机做不就得了&
在线时间9 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 12, 距离下一级还需 188 积分
一粒金砂(中级), 积分 12, 距离下一级还需 188 积分
我想写一个不需要操作系统可以直接在硬件上跑的程序该怎么做?
明摆的事情,用单片机做不就得了
在线时间2145 小时
威望50436分
芯币38812枚
TA的帖子TA的资源
《程序员的自我修养:链接、装载与库》主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C++运行库MiniCRT,综合展示了与运行库相关的各种技术。
  《程序员的自我修养:链接、装载与库》对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。
这是一本深人阐述链接、装载和库等问题的优秀图书,读来让人愉悦,你从巾可以清晰地了解程序的前世今生,彻底理解敲人的代码如何变成程序任系统中运行。通读本书不管对于开发还是trouble shootin9都会很有帮助。建议每一位希望从事系统开发、或希望更实务地理解操作系统和编译器、或不满足于只写代码的优秀程序员都拥有这样一本书。
  ——邹飞,趋势科技(中国)研发中心资深软件要程师  
  本书从大处着眼,小处着手,以通俗易懂的语言,深入浅出地对系统软件的底层形成机制进行条分缕析,正合药山禅师所谓“高高山顶立,深深海底行”。循着作者的思绪一路走来,有如醍醐灌顶。畅快淋漓。非常高兴有预览此书初稿的宝贵机会,我在浏览书稿和查核相关资料的过程中,学到了很多以前未知或知之不深的内容。
  ——冯亮,阿里巴巴(中国)网络技术有限公司运维部系统架构师
在线时间2145 小时
威望50436分
芯币38812枚
TA的帖子TA的资源
第1部分 简介
第1章 温故而知新
1.1 从HELLO WORLD 说起
1.2 万变不离其宗
1.3 站得高,望得远
1.4 操作系统做什么
1.5 内存不够怎么办
1.6 众人拾柴火焰高
1.7 本章小结
第2部分 静态链接
第2章 编译和链接
2.1 被隐藏了的过程
2.2 编译器做了什么
2.3 链接器年龄比编译器长
2.4 模块拼装——静态链接
2.5 本章小结
第3章 目标文件里有什么
3.1 目标文件的格式
3.2 目标文件是什么样的
3.3 挖掘SIMPLESECTION.O
3.4 ELF 文件结构描述
3.5 链接的接口——符号
3.6 调试信息
3.7 本章小结
第4章 静态链接
4.1 空间与地址分配
4.2 符号解析与重定位
4.3 COMMON 块
4.4 C++相关问题
4.5 静态库链接
4.6 链接过程控制
4.7 BFD 库
4.8 本章小结
第5章 WINDOWS PE/COFF
5.1 WINDOWS 的二进制文件格式PE/COFF 134
5.2 PE 的前身——COFF
5.3 链接指示信息
5.4 调试信息
5.5 大家都有符号表
5.6 WINDOWS 下的ELF——PE
5.7 本章小结
第3部分 装载与动态链接
第6章 可执行文件的装载与进程
6.1 进程虚拟地址空间
6.2 装载的方式
6.3 从操作系统角度看可执行文件的装载
6.4 进程虚存空间分布
6.5 LINUX 内核装载ELF 过程简介
6.6 WINDOWS PE 的装载
6.7 本章小结
第7章 动态链接
7.1 为什么要动态链接
7.2 简单的动态链接例子
7.3 地址无关代码
7.4 延迟绑定(PLT)
7.5 动态链接相关结构
7.6 动态链接的步骤和实现
7.7 显式运行时链接
7.8 本章小结
第8章 LINUX 共享库的组织
8.1 共享库版本
8.2 符号版本
8.3 共享库系统路径
8.4 共享库查找过程
8.5 环境变量
8.6 共享库的创建和安装
8.7 本章小结
第9章 WINDOWS 下的动态链接
9.1 DLL 简介
9.2 符号导出导入表
9.3 DLL 优化
9.4 C++与动态链接
9.5 DLL HELL
9.6 本章小结
第4部分 库与运行库
第10章 内存
10.1 程序的内存布局
10.2 栈与调用惯例
10.3 堆与内存管理
10.4 本章小结
第11章 运行库
11.1 入口函数和程序初始化
11.2 C/C++运行库
11.3 运行库与多线程
11.4 C++全局构造与析构
11.5 FREAD 实现
11.6 本章小结
第12章 系统调用与API
12.1 系统调用介绍
12.2 系统调用原理
12.3 WINDOWS API
12.4 本章小结
第13章 运行库实现
13.1 C 语言运行库
13.2 如何使用MINI CRT
13.3 C++运行库实现
13.4 如何使用MINI CRT++
13.5 本章小结
A.1 字节序(BYTE ORDER)
A.2 ELF 常见段
A.3 常用开发工具命令行参考
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
这个可以有
资源大师勋章
在下载中心贡献超过4000份资料
EEWORLD 官方微信
EE福利 唾手可得
Powered by
逛了这许久,何不进去瞧瞧?java 良好的编程习惯
一:良好的习惯
1.避免在循环结构中使用复制表达式
int count = list.size();
for(int i=0;i<i&#43;&#43;)
2.在finally块中关闭stream
程序中使用到的资源,应当被释放,以免资源泄露,这最好在finally 中操作。不管程序执行结果如何,确保资源正确关闭。
3.使用System.arraycopy() 代替循环复制数组。
public class irb
void method () {
int[] array1 = new int [100];
for (int i = 0; i < array1. i++) {
array1 [i] =
int[] array2 = new int [100];
for (int i = 0; i < array2. i++) {
array2 [i] = array1 [i];
// violation
public class irb
void method () {
int[] array1 = new int [100];
for (int i = 0; i < array1. i++) {
array1 [i] =
int[] array2 = new int [100];
system.arraycopy(array1, 0, array2, 0, 100);
4.让访问实例内变量的getter/setter 方法变成final 简单的gettter/setter 方法应该被设置成final ,这会告诉编译器,这个方法不会被重载。所以可以变成final
class maf {
public void setsize (int size) {
private int _
class daf_fixed {
final public void setsize (int size) {
private int _
5.避免不必要的instanceof 操作如果左边的对象的静态类型等译右边的,instanceof表达式永远都会放回true
public class uiso {
public uiso () {}
class dog extends uiso {
void method (dog dog, uiso u) {
if (d instanceof uiso) // always true.
system.out.println("dog is a uiso");
uiso uiso =
if (uiso instanceof object) // always true.
system.out.println("uiso is an object");
删掉不需要的instanceof操作。
class dog extends uiso {
void method () {
system.out.println ("dog is an uiso");
system.out.println ("uiso is an uiso");
6.避免不必要的造型操作
所有的类都是直接或间接的继承自Object ,同样所有的子类都隐含的等于其父类。那么子类造型至父类的操作就是不必要的了。
八、如果只是查找单个字符的话,用charat()代替startswith()
用一个字符作为参数调用startswith()也会工作的很好,但从性能角度上来看,调用用string api无疑是错误的!
public class pcts {
private void method(string s) {
if (s.startswith("a")) { // violation
将'startswith()' 替换成'charat()'.
public class pcts {
private void method(string s) {
if ('a' == s.charat(0)) {
参考资料:
dov bulka, "java performance and scalability volume 1: server-side programming
techniques"
addison wesley, isbn: 0-201-70429-3
九、使用移位操作来代替'a / b'操作
"/"是一个很“昂贵”的操作,使用移位操作将会更快更有效。
public class sdiv {
public static final int num = 16;
public void calculate(int a) {
int div = a / 4;
// should be replaced with "a >> 2".
int div2 = a / 8;
// should be replaced with "a >> 3".
int temp = a / 3;
public class sdiv {
public static final int num = 16;
public void calculate(int a) {
int div = a >> 2;
int div2 = a >> 3;
int temp = a / 3;
// 不能转换成位移操作
十、使用移位操作代替'a * b'
[i]但我个人认为,除非是在一个非常大的循环内,性能非常重要,而且你很清楚你自己在做什么,方可使用这种方法。否则提高性能所带来的程序晚读性的降低将是不合算的。
public class smul {
public void calculate(int a) {
int mul = a * 4;
// should be replaced with "a << 2".
int mul2 = 8 *
// should be replaced with "a << 3".
int temp = a * 3;
public class smul {
public void calculate(int a) {
int mul = a << 2;
int mul2 = a << 3;
int temp = a * 3;
// 不能转换
十一、在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话
public class str {
public void method(string s) {
string string = s + "d"
// violation.
string = "abc" + "d"
// violation.
将一个字符的字符串替换成' '
public class str {
public void method(string s) {
string string = s + 'd'
string = "abc" + 'd'
十二、不要在循环中调用synchronized(同步)方法
方法的同步需要消耗相当大的资料,在一个循环中调用它绝对不是一个好主意。
import java.util.
public class syn {
public synchronized void method (object o) {
private void test () {
for (int i = 0; i < vector.size(); i++) {
method (vector.elementat(i));
// violation
private vector vector = new vector (5, 5);
不要在循环体中调用同步方法,如果必须同步的话,推荐以下方式:
import java.util.
public class syn {
public void method (object o) {
private void test () {
synchronized{//在一个同步块中执行非同步方法
for (int i = 0; i < vector.size(); i++) {
method (vector.elementat(i));
private vector vector = new vector (5, 5);
十三、将try/catch块移出循环
把try/catch块放入循环体内,会极大的影响性能,如果编译jit被关闭或者你所使用的是一个不带jit的jvm,性能会将下降21%之多!
import java.io.
public class try {
void method (fileinputstream fis) {
for (int i = 0; i < i++) {
// violation
_sum += fis.read();
} catch (exception e) {}
private int _
将try/catch块移出循环
void method (fileinputstream fis) {
for (int i = 0; i < i++) {
_sum += fis.read();
} catch (exception e) {}
参考资料:
peter haggar: "practical java - programming language guide".
addison wesley, 2000, pp.81 – 83
十四、对于boolean&#20540;,避免不必要的等式判断
将一个boolean&#20540;与一个true比较是一个恒等操作(直接返回该boolean变量的&#20540;). 移走对于boolean的不必要操作至少会带来2个好处:
1)代码执行的更快 (生成的字节码少了5个字节);
2)代码也会更加干净 。
public class ueq
boolean method (string string) {
return string.endswith ("a") ==
// violation
class ueq_fixed
boolean method (string string) {
return string.endswith ("a");
十五、对于常量字符串,用'string' 代替 'stringbuffer'
常量字符串并不需要动态改变长度。
public class usc {
string method () {
stringbuffer s = new stringbuffer ("hello");
string t = s + "world!";
把stringbuffer换成string,如果确定这个string不会再变的话,这将会减少运行开销提高性能。
十六、用'stringtokenizer' 代替 'indexof()' 和'substring()'
字符串的分析在很多应用中都是常见的。使用indexof()和substring()来分析字符串容易导致 stringindexoutofboundsexception。而使用stringtokenizer类来分析字符串则会容易一些,效率也会高一些。
public class ust {
void parsestring(string string) {
int index = 0;
while ((index = string.indexof(".", index)) != -1) {
system.out.println (string.substring(index, string.length()));
参考资料:
graig larman, rhett guthrie: "java 2 performance and idiom guide"
prentice hall ptr, isbn: 0-13- pp. 282 – 283
十七、使用条件操作符替代"if (cond)" 结构
条件操作符更加的简捷
public class if {
public int method(boolean isdone) {
if (isdone) {
return 10;
public class if {
public int method(boolean isdone) {
return (isdone ? 0 : 10);
十八、使用条件操作符代替"if (cond) a = else a =" 结构
public class ifas {
void method(boolean istrue) {
if (istrue) {
_value = 0;
_value = 1;
private int _value = 0;
public class ifas {
void method(boolean istrue) {
_value = (istrue ? 0 : 1);
// compact expression.
private int _value = 0;
十九、不要在循环体中实例化变量
在循环体中实例化临时变量将会增加内存消耗
import java.util.
public class loop {
void method (vector v) {
for (int i=0;i < v.size();i++) {
object o = new object();
o = v.elementat(i);
在循环体外定义变量,并反复使用
import java.util.
public class loop {
void method (vector v) {
for (int i=0;i<v.size();i++) {
o = v.elementat(i);
二十、确定 stringbuffer的容量
stringbuffer的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再丢弃旧的数组。在大多数情况下,你可以在创建stringbuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。
public class rsbc {
void method () {
stringbuffer buffer = new stringbuffer(); // violation
buffer.append ("hello");
为stringbuffer提供寝大小。
public class rsbc {
void method () {
stringbuffer buffer = new stringbuffer(max);
buffer.append ("hello");
private final int max = 100;
参考资料:
dov bulka, "java performance and scalability volume 1: server-side programming
techniques" addison wesley, isbn: 0-201-70429-3 p.30 – 31
二十一、尽可能的使用栈变量
如果一个变量需要经常访问,那么你就需要考虑这个变量的作用域了。static? local?还是实例变量?访问静态变量和实例变量将会比访问局部变量多耗费2-3个时钟周期。
public class usv {
void getsum (int[] values) {
for (int i=0; i < value. i++) {
_sum += value[i];
// violation.
void getsum2 (int[] values) {
for (int i=0; i < value. i++) {
_staticsum += value[i];
private int _
private static int _
如果可能,请使用局部变量作为你经常访问的变量。
你可以按下面的方法来修改getsum()方法:
void getsum (int[] values) {
int sum = _
// temporary local variable.
for (int i=0; i < value. i++) {
sum += value[i];
参考资料:
peter haggar: "practical java - programming language guide".
addison wesley, 2000, pp.122 – 125
二十二、不要总是使用取反操作符(!)
取反操作符(!)降低程序的可读性,所以不要总是使用。
public class dun {
boolean method (boolean a, boolean b) {
return !a;
return !b;
如果可能不要使用取反操作符(!)
二十三、与一个接口 进行instanceof操作
基于接口的设计通常是件好事,因为它允许有不同的实现,而又保持灵活。只要可能,对一个对象进行instanceof操作,以判断它是否某一接口要比是否某一个类要快。
public class insof {
private void method (object o) {
if (o instanceof interfacebase) { }
if (o instanceof classbase) { }
class classbase {}
interface interfacebase {}
批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。
从它的机制上讲,
它是先把符合条件的数据查出来,放到内存当中,
然后再进行操作。实际使用下来性能非常不理想。解决方案可分为以下四种:
Hibernate API
,直接通过
来做,这个方法性能上是比
较好的。也是最快的
:运用存储过程。代价是移植性降低
:缓存。对于构建的业务,如果有些数据要经常要从数据库中读取,
同时,这些数据又不经常变化,这些数据就可以在系统中缓存起来,使
用时直接读取缓存,而不用频繁的访问数据库读取数据。缓存工作可以
在系统初始化时一次性读取数据,特别是一些只读的数据,当数据更新
时更新数据库内容,同时更新缓存的数据&#20540;。
:增加数据库连接池的大小。
堆和垃圾回收设置
应用的性能调整基础都涉及到堆的大小和垃圾回收设置。
二.数据库优化
批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。
从它的机制上讲,
它是先把符合条件的数据查出来,放到内存当中,
然后再进行操作。实际使用下来性能非常不理想。解决方案可分为以下四种:
Hibernate API
,直接通过
来做,这个方法性能上是比
较好的。也是最快的
:运用存储过程。代价是移植性降低
:缓存。对于构建的业务系统,如果有些数据要经常要从数据库中读取,
同时,这些数据又不经常变化,这些数据就可以在系统中缓存起来,使
用时直接读取缓存,而不用频繁的访问数据库读取数据。缓存工作可以
在系统初始化时一次性读取数据,特别是一些只读的数据,当数据更新
时更新数据库内容,同时更新缓存的数据&#20540;。
:增加数据库连接池的大小。
虚拟机堆和垃圾回收设置
应用的性能调整基础都涉及到堆的大小和垃圾回收设置。本帖子已过去太久远了,不再提供回复功能。您目前的活力值不够下载该资源哦~~
怎么样快速获得活力值?
下载此资源将扣除活力值-20
(只在首次下载扣除活力值,之后可以免费下载)
DevStore用户登录
还没有DevStore帐号?
快捷登录:
满足所有需求,助您轻松工作
一个伟大的程序员的6个好习惯~你晓得不~
DevStore编辑 夏萌
一个伟大的程序员需要具备哪些特质呢?也许大部分人回答的是逻辑、机智、耐心和勤奋(小编偷笑中~我们戴维都有哟~)当然,其实这个问题并没有标准的答案,但是除了这些特质,习惯也是非常重要的,而这个特质可能在已经进入正轨的团队组织中才得以窥见。
除了必须的技术和逻辑思维,下面跟随小编看一下在团队中应该具备怎样的好习惯吧~
好的时间管理
亲有木有经常遇到迟到的问题,对于任何一家公司迟到都是很让人头疼的。作为一名程序员,有时候不得不熬夜加班,从而导致第二天上班迟到啦~(这点小编要投诉一下我们戴维,总是踩着点打卡,哪怕你来早那么一点点,都不会有那么多妹子向你投去无数“羡慕”的目光)但是,我们忽略了一点,程序员的工作至关重要,因为在这段时间里我们要和客户同步,也要和团队的其他成员一齐协作。
深入理解客户的需求
你晓得不~仅仅了解单一用户的表面意思是远远不够的,一个伟大的程序员要具备把繁琐的要求理解并分解成项目的技术任务的能力,并且最后拿到的成果应精确的满足客户的需求。
编程之前准备好全套算法
亲~还记得我们老师逼我们画的流程图吗?还记得一个个案例和伪代码吗?他们都是灰常重要的软件开发手段。一个伟大的程序员如果木有事先准备好算法,那他会不会像个傻小子似的只顾写代码呢?所以,在开工之前,做好全套的算法是必须的。
理解and帮助定义验收标准
是否需要高成次测试脚本是产品所有者决定的,但是,作为一个伟大的程序员必须能够编写技术测试脚本,并且也要认识到如果跳过了这一步骤可能会带来的后果。
头发都快抓完了,依然拒绝说“NO”
假如你都快把头发抓完了,依然找不到解决方案,你会选择放弃吗?一个伟大的程序员应该是能灵活地面对这种困境,比如可以问问同事(我们戴维就常常拉着同事问长问短,不了解他的还以为。。。。)或者问问团队领导,上网搜索,耐下性子,相信~山穷水尽疑无路,总会柳暗花明的~
主动一点点
一个优秀的程序员不需要别人告诉他该做什么,他的主动性要比别人强一些,他可以自觉的关注流程,提高应用程序的灵活性以及快速的解决开发过程中出现的Bug。
戴维最后想说,作为一个伟大的,应该时刻的明白每一个任务的价值,并且尊重他人的成果,性格内向可能是大多数程序员的软技能问题,但是我们应该明白一旦知道了自己不足之处时,要学会立刻改正,并且积极地执行“客户第一”的服务理念哟~
已收藏 取消
夏萌 DevStore编辑
简介:姑娘有春天,也有夏天
可能喜欢的文章
开发者交流群:
DevStore技术交流群2:
运营交流群:
产品交流群:
深圳尺子科技有限公司
深圳市南山区蛇口网谷万海大厦C栋504
Copyright (C) 2015 DevStore. All Rights Reserved

我要回帖

更多关于 ibm服务器内存 的文章

 

随机推荐