改善java程序的151个建议 读后感四

优化Java程序的151个建议——读后感 在阅读《优化Java程序的151个建议》这本书后,我深受启发。在多线程环境下,使用并发集合类(如ConcurrentHashMap、ConcurrentLinkedQueue)可以提高线程安全性和性能。在处理需要显式关闭的资源(如文件、数据库连接等)时,使用try-with-resources语句可以简化代码,并确保资源被正确关闭。在大量字符串拼接的情况下,使用StringBuilder比直接使用String拼接更高效。当在循环中使用条件表达式时,将其存储在局部变量中可以减少重复计算,提高性能。 阅读详情
改善java程序的151个建议 读后感四


建议19:断言绝对不是鸡肋


java对assert默认是不开启的,使用时,编译时需要用javac -source;执行时需要使用java -ea。




由于带有assert语句的程序运行时,使用了新的ClassLoader和Class类,因此,这种程序必须在JDK1.4(或者更高版本)的JRE下运行,而不能在老版本的JRE下运行。


由于我们可以选择开启assertion功能,或者不开启,另外我们还可以开启一部分类或包的assertion功能,所以运行选项变得有些复杂。通过这些选项,我们可以过滤所有我们不


关心的类,只选择我们关心的类或包来观察。下面介绍两类参数:


参数 -esa 和 -dsa:
它们含义为开启(关闭)系统类的assertion功能。由于新版本的Java的系统类中,也使了assertion语句,因此如果用户需要观察它们的运行情况,就需要打开系统类的assertion功


能 ,我们可使用-esa参数打开,使用 -dsa参数关闭。
-esa和-dsa的全名为-enablesystemassertions和-disenablesystemassertions,全名和缩写名有同样的功能。
 
参数 -ea和-ea:
它们含义为开启(关闭)用户类的assertion功能:通过这个参数,用户可以打开某些类或包的assertion功能,同样用户也可以关闭某些类和包的assertion功能。打开assertion功


能参数为-ea;如果不带任何参数,表示打开所有用户类;如果带有包名称或者类名称,表示打开这些类或包;如果包名称后面跟有三个点,代表这个包及其子包;如果只有三个点


,代表无名包。关闭assertion功能参数为-da,使用方法与-ea类似。
-ea和-da的全名为-enableassertions和-disenableassertions,全名和缩写名有同样的功能。
下面表格表示了参数及其含义,并有例子说明如何使用。
 
参数 例子 说明
-ea java -ea 打开所有用户类的assertion
-da java -da 关闭所有用户类的assertion
-ea:<classname> java -ea:MyClass1打开MyClass1的assertion
-da:<classname> java -da: MyClass1关闭MyClass1的assertion
-ea:<packagename> java -ea:pkg1打开pkg1包的assertion
-da:<packagename> java -da:pkg1关闭pkg1包的assertion
-ea:... java -ea:...打开缺省包(无名包)的assertion
-da:... java -da:...关闭缺省包(无名包)的assertion
-ea:<packagename>... java -ea:pkg1...打开pkg1包和其子包的assertion
-da:<packagename>... java -da:pkg1...关闭pkg1包和其子包的assertion
-esa java -esa打开系统类的assertion
-dsa java -dsa关闭系统类的assertion
综合使用 java -dsa:MyClass1:pkg1关闭MyClass1和pkg1包的assertion




java编程语言中断言的关键字 assert,其基本的使用方法


assert expression1
或者
assert expression1 : expression2


assert两个特性,1:assert默认是不启用的,2:assert抛出的异常AssertError是继承自Error
assert不要使用的情况,1:在对外公开的方法中,不要使用 2:在使用assert功能时不要惨呀业务逻辑,因为java对assert的支持是可选的。


assert可以使用的情况,1:在私有方法中放置assert作为输入参数的校验,2:流程控制中不可能到达的区域,因为当程序执行到这里的时候就是错误的。
3:建立程序探针
例如,在一个财会系统中,公司的支出和收入必须保持一定的平衡关系,因此我们可以编写一个表达式检查这种平衡关系,如下表示。
 
          private boolean isBalance() {
    ……
    }
    
在这个系统中,在一些可能影响这种平衡关系的方法的前后,我们都可以加上assert验证:assert isBalance():"balance is destoried";

挂在一个连接, 一个写的关于java assert不错的文章 


建议20:不要只替换一个类


final 修饰的基本类型和String类型,编译器会认为他是稳定态,所以在编译时就直接把值编译到字节码中了,避免了在运行期引用,以提高代码的执行效率。


final 修饰的类(即非基本类型),编译器认为它是不稳定态,在编译时建立的则是引用关系。


建议21:用偶判断,不用奇判断


public void test() {
int i = -1;
System.out.println(i % 2 == 1 ? "奇数" : "偶数");
}


打印结果是,偶数。我们先来了解一下java中的取余算法,模拟代码如下:
被除数        除数
public static int remainder(int dividend, int divisor) {
return dividend - dividend / divisor * divisor;
}


这回大家明白了吧,


修改为 System.out.println(i % 2 == 0 ? "偶数" : "奇数");  就好了。


建议22:使用整数类型处理货币


执行代码
System.out.println(10 - 9.4); 运行结果是 0.5999999999999996,至于为什么给我就不说了,大家可以上网查阅一下相关资料(嘻嘻,其实我也不是很明白)。
这个时候,可以把参与运算的值扩大到整数,计算后的结果在相应的再缩小倍数。如果有更好的办法,欢迎大家评论。


建议23:不要让类型默默的转换


int i = 30 * 10000 * 1000;
System.out.println(i);
long L = i * 60 * 8;
System.out.println(L);


执行的结果是:
300000000
-2028888064


为什么第二个数是负数呢,那是因为java是先运算然后再进行类型转换的,具体的说就是因为 L 的三个运算参数都是int类型的,三者相乘的结果虽然也是int类型的,
但是已经超过了int的最大值(基本类型:int 二进制位数:32(即占用四个字节)包装类:java.lang.Integer 最小值:-2147483648最大值:2147483647),所以
其值就是负值了(为什么是负值?应为过界了就会从头开始,意思是 2147483647 加上 1 结果是 2147483648,以此类推),在转换成long型,结果还是负值。
将代码修改为 long L = i * 60L * 8; 60L是一个长整形,乘出来的结果也是一个长整形(此乃java的基本转换规则,向数据范围大的方向转换,也就是加宽类型)。
在实际开发中,更通用的做法是主动的声明式类型转化(注意不是强制的类型转换),代码如下:long L = 1L * i * 60 * 8;(注意,基本类型转换时,使用主动声明式
减少不必要的bug)。


建议25:不要让四舍五入亏了一方


具体的内容就不说了,下面就列举一下java支持的一下七种舍入方式(想采用什么舍入模式使用RoundingMode设置即可):
ROUND_UP:远离零方向舍入
ROUND_DOWN:趋向零方向舍入
ROUND_CEILING:向正无穷方向舍入
ROUND_FLOOR:向负无穷方向舍入
HALF_UP:最近数字舍入(5进),这就是我们最最经典的四舍五入模式
HALF_DOWN:最近数字舍入(5舍),在四舍五入中,5是进位的,而在HALF_DOWN中却是舍弃不进位的。
HALF_EVEN:银行家算法。
关于以上具体的舍入计算方法就不说了,请大家查看java的JDK文档


在普通的项目中舍入模式不会有太多影响,可以直接使用Math.round()方法,但在大量与货币数字交互的项目中,一定要选择好近似的计算模式,尽量减少因算法
不同而造成的损失。


建议26:提防包装类型的null


执行以下方法
public static void main(String[] args) {
List<Integer> l = new ArrayList<Integer>();
l.add(1);
l.add(2);
l.add(null);

int count = 0;
for(int i : l) {
count += i;
}
System.out.println(count);

}
代码的运行结果是,报错 Exception in thread "main" java.lang.NullPointerException,报错的原因是在程序的for循环中,隐含了一个拆箱过程,
在此过程中包装类型转换为了基本类型。拆箱的过程调用的是对象的 intValue() 方法来实现的,由于包装类型是 null 值,访问intValue() 方法报空
指针异常也就在所难免了。


将count ++ i 修改为 count += (i != null) ? i : 0 就ok了


对于此类问题,我们要谨记一点:包装类型参与运算时,要做null值校验。


国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性?.docx 国央企创新负责人如何通过平台提升技术需求挖掘与资源配置的精准性? 立即下载

相关推荐

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

使用java位运算实现int数据的加减乘除

/** * 使用位运算实现int数据的加法 * (a & b) << 1 => 相加 进位结果 * a ^ b => 相加 不进位结果 * 将上述两个结果相加直到无进位 * @param a * @param b * @return */ public static...

qq_28061037的博客 3660

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现)

内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。

关于BigDecimal.ROUND_HALF_EVEN银行家算法

我们知道四舍五入是有误差的:其误差值是舍入位的一半。我们以舍入运用最频繁的银行利息计算为例来阐述该问题。 我们知道银行的盈利渠道主要是利息差,从储户手里收拢资金,然后放贷出去,其间的利息差额便是所获得的利润。对一个银行来说,对付给储户的利息的计算非常频繁,人民银行规定每个季度末月的20日为银行结息日,一年有4次的结息日。而使用四舍五入的方法该银行就会大大亏本。 最近看书知道了这个算法银行家算法,...

qq_43690617的博客 8799

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)

内容概要:本文提供了“虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型”的Simulink仿真实现方法,系统阐述了如何通过仿真手段研究VSG在电力系统中的动态响应特性,重点聚焦于其惯量与阻尼的自适应控制策略。文中详细说明了模型构建流程,涵盖控制算法设计、参数调节、根轨迹分析等内容,并通过对比不同调节系数下的系统响应,深入探讨了控制参数对系统稳定性与动态性能的影响。该仿真模型有效复现了VSG模拟传统同步发电机惯性与阻尼特性的能力,对于提升新能源并网系统的频率稳定性和抗扰动能力具有重要研究价值。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事新能源并网、微电网控制、电力电子与电力系统仿真研究的研究生、科研人员及工程师。; 使用场景及目标:①用于教学与科研中深入理解虚拟同步发电机的工作原理及其在现代电力系统中的应用;②为新能源发电系统接入电网时的稳定性分析与控制策略设计提供仿真验证平台;③支持对VSG控制参数进行优化,提升系统应对负荷波动和扰动的能力。; 阅读建议:建议读者结合Matlab/Simulink软件动手实践,按照文档结构逐步搭建仿真模型,重点关注控制环路设计与参数整定部分,同时参考提供的代码与仿真结果进行对比分析,以加深对VSG自适应控制机制的理解。

摘抄笔记--《编写高质量代码:改善Java程序的151个建议》

        记得3年前刚到公司,同桌同事见我无事可做就借我看《编写高质量代码:改善Java程序的151个建议》这本书,当时看了几页没上心就没研究了。到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀。           看完整本书,也记了不少笔记,我就分享一部分个人觉得有意义的内容,也为了方便以后自己温习。   --警惕自增陷阱...

上善若水任方圆 383

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文介绍了“两相交错并联Boost电路仿真模型(Simulink仿真实现)”的技术资源,属于电力电子变换器领域的仿真研究内容。该模型基于Simulink平台构建,旨在深入分析两相交错并联Boost电路的工作原理、动态响应特性及控制策略。交错并联结构通过错开各相开关管的导通时刻,有效降低输入电流纹波、提升系统效率与功率密度,适用于中高功率DC-DC变换应用场景。资源包含完整的主电路建模、PWM驱动信号生成、闭环控制器设计(如电压/电流双闭环控制)等关键模块,并可能涵盖软启动、均流控制等关键技术问题。整个仿真模型强调理论分析与工程实践的紧密结合,不仅有助于理解电路基本行为,也为优化控制算法提供验证平台,服务于科研与教学需求。; 适合人群:电气工程、自动化、电力电子及相关专业的高校本科生、研究生,以及从事电源系统研发的工程技术人员,具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:① 学习和掌握两相交错并联Boost电路的拓扑结构、工作机理及性能优势;② 利用Simulink进行电力电子电路的建模与仿真,深入理解PWM控制、闭环调节、均流控制等核心技术的应用;③ 为科研项目、课程设计或毕业设计提供可复用的仿真案例和技术支持,辅助开展中高功率电源系统的创新设计与优化研究。; 阅读建议:建议结合Simulink软件动手搭建并调试模型,通过调整占空比、开关频率、电感参数等变量,观察其对输入电流纹波、输出电压稳定性及动态响应的影响,以深化对电路特性的理解;同时可参考文中列出的其他相关资源(如LLC、PFC等仿真模型)进行横向对比学习,拓宽电力电子系统设计视野。

四舍六入 银行家算法

Java5以上使用银行家的舍入法则很简单。直接使用RoundingMode类提供的Round模式即可 public class Client { public static void main(String[] args) { //存款 BigDecimal d = new BigDecimal(99999); /...

weixin_30262255的博客 584

DevExpress学习之GridControl导入导出至EXCEL

导出: private void EXCELout_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "导出Excel"; saveFileDialog.Filter = "Excel文件(*.xls)|*.xls";

I Can -Jiang 2755

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 473

善Java程序的151个建议_改善Java程序的151个建议 读后感

《编写高质量代码 改善Java程序的151个建议》是一本关于Java最佳实践的集大成之作,它从Java语言本身、Java程序的架构设计和思想、Java程序的编码规范和习惯等方面对151个经典的问题给出了解决方案,为Java开发者提高开发效率和编写高质量的Java代码提供了宝贵的建议。下面是本人的读后感:建议1:不要在常量和变量中出现易混淆的字母包名全小写,类名首字母全大写,常量全部大写并用下划线分...

weixin_29497751的博客 141

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 784

《改善Java程序的151个建议》读后感

(a):排序中不是英文的,中文排序可以用: Comparator<Object> col = Collator.getInstance(); Arrays.sort(arr, col); (b):ArrayList是个可变成的数组。默认长度为10,每当长度超过,则调用Array.cofyOf(),一次扩容1.5倍 (c):Set集合,元素不重复,且子类TreeSet自动排序,他下面的lower(xxx)方法,是:给出小于xxx的最大元素,用于求出第二大值 (d):Arrays的asList()方法,可以将数

bug的abc 451

Ubuntu开发环境配置——持续更新

本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。

m0_53365889的博客 2225

3GPP LTE/NR信道模型

CDL(Clustered Delay Line):簇延迟线模型,包括CDL-A、CDL-B、CDL-C三个用于NLOS的信道模型,以及CDL-D、CDL-E两个用于LOS的信道模型。

LinkEverything的博客 1万+

《编写高质量代码:改善Java程序的151条建议》读书笔记

这本书可以作为平时写代码的一个参考书,这本书以我个人读的经验看来,最好是通过平时代码驱动的方式来读,这样吸收的快,也读的快。 这本书主要讲什么,我自己用了个思维导图概述: 根据这种导图可知,主要讲的就是Java语法、JDK API、程序性能、开源工具和框架、编程风格和编程思想等五个点。 我这次主要读的是关于开源世界和思想开源这两章,这两章相当于导图中提到的开源工具和框架、编程风格和编程思...

liinux-Talk is cheap,show me the code. 260

为R720安装iDRAC Service Module

这玩意找了好久资料, 教程都不咋靠谱, 要不就是有不理解的地方 所以直接一路莽着过河: 去官网找到设备对应的驱动程序: 几个查找筛选项看图 官网链接: https://www.dell.com/support/home/zh-cn/product-support/product/poweredge-r720/drivers 在下方的列表中找到对应系统版本的驱动并下载: 由于安装的系统为ESXi 6.5 U2 Dell定制版, 这里没有刚好的驱动, 所以下了个兼容的: 下载好后是一个压缩包:

Janus 6363

改善java程序的151个建议 读后感一

改善java程序的151个建议 读后感一 建议1:不要在常量和变量中出现易混淆的字母 包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法命名。 当数字与字母 l 或者 o 一起使用时,字母 l 一定要大写, 字母 o 一定要加注释。 请大家猜一下输出结果 public class SuggestOneChapter { public static vo

三易专栏 649

docker安装fastdfs+nginx配置

docker安装fastdfs+nginx,实现图片或文件的上传与下载

weixin_47325126的博客 2193

外骨骼机器人(五):步态分析之正常步态

研究病理步态之前,需要了解正常步态,作为判断标准。但是需要记住两个问题:1.“正常”因人而异,性别、年龄、身体情况都需要考虑在内,因此,需要对不同的个体选择合适的正常标准;2.即使病人的步态与正常步态有某种不同,这也不能说明这是不可取的,也不能说明应该把它变成“正常”步态。许多步态异常是对病人的一些问题的一种补偿,尽管异常,但它们仍然是有用的。步态周期的定义是连续为两次发生重复行走事件之间的时间间隔。尽管可以选择任何事件来定义步态周期,但通常使用一只脚接触地面的瞬间(“初始接触”)是方便的。

行者无疆的博客 1999

改善java程序的151个建议 读后感二

改善java程序的151个建议 对后感二 建议9:少用静态导入 使用静态导入给程序带来的坏味道。静态导入后,代码中就不用再写类名,但是我们知道类是“一类事物的描述”,缺少了类名的修饰,静态属性和静态方法的 表象意义可以被无线放大,这会让阅读者很难弄清楚其属性或者方法代表何意。特别是在一个类中有多个静态导入语句时,若还使用了*(星号)通配符, 把一个类的所有静态属性都导入进来,那简直

三易专栏 687

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

改善java程序的151个建议 读后感三

改善java程序的151个建议 读后感三 建议12:避免用序列化类在构造函数中为不变量(final关键字修饰的变量)赋值 代码1: public class Persion implements Serializable{ private static final long serialVersionUID = 1L; public final Strin

三易专栏 576

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

改善java程序的151个建议 读后感五

改善java程序的151个建议 读后感五 建议31: 在接口中不要存在实现代码, 建议32:静态变量一定要先声明 对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后, 再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造

三易专栏 644

工作书籍读书清单

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34209851的博客 251

学习书籍

96   改善JAVA程序的151个建议             Head First 设计模式       Java设计模式       Puthon 技术手册  Python技术参考大全       Python高级编程       软件调试       XML数据库技术       HTML5开发手册  HTML5程序设计       HTML5游戏开发       J

glen1943的专栏 636
上一篇: 改善java程序的151个建议 读后感三
下一篇: 改善java程序的151个建议 读后感五
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值