- Effective C++ 条款10:令operator=返回一个reference to *this
君鼎
C++c++
EffectiveC++条款10:令operator=返回一个referenceto*this核心思想:赋值操作符(operator=)应始终返回当前对象的引用(*this),以实现连锁赋值并保持与内置类型一致的语义。⚠️1.问题场景:违反连锁赋值语义classWidget{public:voidoperator=(constWidget&rhs){//错误:返回voidvalue=rhs.val
- 《Effective Python》总结
不学无术の码农
EffectivePython精读笔记python开发语言
引言Python以其简洁的语法、强大的标准库和广泛的应用场景,成为编程领域的支柱语言之一。从Web开发、数据科学到自动化脚本和分布式系统,Python的灵活性使其在各类项目中大放异彩。然而,编写高效、可读性强且易于维护的Python代码并非易事,需要深入理解语言的设计哲学、最佳实践和现代特性。《EffectivePython:125SpecificWaystoWriteBetterPython,3
- iOS不可思议的报错
风雪山神喵
1、removeAllObjects报错[MC]Readingfromprivateeffectiveusersettings.2018-03-2910:11:37.145510+0800ZYB[1306:279131]-[__NSArrayIremoveAllObjects]:unrecognizedselectorsenttoinstance0x7ff96006e8002018-03-2910
- 读书笔记 effective c++ Item 13 用对象来管理资源
yinjing8435
正文回到顶部1.不要手动释放从函数返回的堆资源假设你正在处理一个模拟Investment的程序库,不同的Investmetn类型从Investment基类继承而来,1classInvestment{...};//rootclassofhierarchyof23//investmenttypes进一步假设这个程序库通过一个工厂函数(Item7)来给我们提供特定Investment对象:1Invest
- Effective C++读书笔记之十四:在资源管理类中小心copying行为
Item14:Thinkcarefullyaboutcopyingbehaviorinresource-managingclasses条款13导入这样的观念:“资源取得时机便是初始化时机”,并以此作为“资源管理类”的脊柱。然而当一个RAII对象被复制,会发生什么事?大多数时候你会选择以下四种可能。禁止复制:许多时候允许RAII对象被复制并不合理,因为很少能够合理拥有“同步化基础器物”的复件(副本)
- (Item 13-15): 以对象管理资源
CodingQK
C++c++effective-c++
在以前的C++用法中,new是非常常见的用来动态分配内存的方式,但是有new必须有delete,将内存还给系统,否则就会造成内存泄露,这是很危险的一件事情,而以对象管理资源这一思想就能比较好的解决这一问题通常情况下,对于一个对象,如果是built-in类型,我们就直接new了,如果是自定义类型,一般使用工厂函数返回其指针,生成对象之后肯定需要释放对象吧,对于内置类型,就是成对的使用delete,但
- Item11:在operator=中处理自我赋值
在C++编程中,赋值运算符(operator=)的实现看似简单,实则暗藏玄机。《EffectiveC++》中的Item11“在operator=中处理自我赋值”(Handleassignmenttoselfinoperator=)提醒我们,在实现赋值运算符时,必须考虑自我赋值(self-assignment)的情况,并确保代码在这种情况下依然安全可靠。本文将深入探讨这一条款,分析自我赋值的潜在风险
- Item13:以对象管理资源
双马尾为什么是神
EffectiveC++c++开发语言
在C++编程中,资源管理是一个核心问题。《EffectiveC++》中的Item13“以对象管理资源”(Useobjectstomanageresources)提出了一个重要的设计原则:将资源封装在对象中,利用对象的生命周期自动管理资源的获取和释放。这一原则不仅能避免资源泄露,还能提高代码的健壮性和可维护性。本文将深入探讨这一条款,分析资源管理的挑战、对象管理资源的实现方式以及相关的最佳实践。一、
- Item 5 详解:看透编译器自动生成的那些函数
EffectiveC++Item5详解:看透编译器自动生成的那些函数当你写下一个空类时,C++编译器会悄悄为你做很多事。比如:classEmpty{};你以为这是一个“空”类,但编译器会自动为它生成4个特殊成员函数:默认构造函数、析构函数、拷贝构造函数和拷贝赋值运算符。《EffectiveC++》Item5的核心就是:了解这些编译器自动生成的函数的行为、生成条件及潜在风险。本文将深入解析这4个函数
- Item10:令 operator = 返回一个 reference to *this
双马尾为什么是神
EffectiveC++c++开发语言
《EffectiveC++》中的Item10“令operator=返回一个referenceto*this”(Haveassignmentoperatorsreturnareferenceto*this)为我们提供了关于赋值运算符重载的重要指导。本文将深入探讨这一条款,分析其背后的原因、实际应用以及遵循该准则的好处。一、核心准则Item10的核心准则简洁明了:在重载赋值运算符时,应让其返回一个指向
- Item14:在资源管理类中小心拷贝行为
双马尾为什么是神
EffectiveC++c++开发语言
在C++中,资源管理类(如智能指针、文件句柄类)是实现RAII(资源获取即初始化)的关键工具。然而,当这些类涉及拷贝操作(如拷贝构造、赋值)时,可能会引发资源管理的复杂性。《EffectiveC++》中的Item14“在资源管理类中小心拷贝行为”(Thinkcarefullyaboutcopyingbehaviorinresource-managingclasses)提醒我们,必须根据资源的特性,
- Effective Java - 第5章 泛型
Vivi成长吧
《EffectiveJava(第2版)》第5章泛型思维导图,文字版可见:https://mubu.com/doc/1yAmR2l3BkEJ-第5章泛型.png
- C++中new和delete的多重面孔:operator new、new operator与placement new解析
安意诚Matrix
c++java开发语言
《MoreEffectiveC++:35个改善编程与设计的有效方法》读书笔记:了解各种不同意义的new和delete在C++的内存管理体系中,new和delete看似简单,实则隐藏着多层逻辑。许多开发者对newoperator、operatornew和placementnew的区别感到困惑。本文将逐层拆解这些概念,帮你掌握内存分配与对象构造的底层逻辑。一、newoperator:语言内置的“双任务
- C++中递增/递减操作符的前置与后置:你真的懂吗?
《MoreEffectiveC++:35个改善编程与设计的有效方法》读书笔记:区别increment/decrement操作符的前置(prefix)和后置(postfix)形式在C++的语法体系中,++和--这两个操作符看似简单,却藏着不少设计巧思。尤其是它们的前置(prefix)与后置(postfix)形式,不仅用法有别,底层实现和返回值设计更是大有讲究。今天我们就来深扒这对"双胞胎"的区别,搞
- 利用RAII与析构函数避免C++资源泄漏
安意诚Matrix
C++笔记c++java开发语言
《MoreEffectiveC++:35个改善编程与设计的有效方法》读书笔记:利用destructors避免泄漏资源在C++开发中,资源泄漏是隐蔽却致命的问题——尤其当程序遭遇异常时,手动管理的资源(如堆内存、文件句柄、系统资源等)极易因流程中断而无法释放。本文结合经典实践思路,探讨如何通过析构函数(Destructors)和RAII(ResourceAcquisitionIsInitializa
- [笔记]Effective C++ 条款3:尽可能使用const
weixin_42796916
EffectiveC++c++
T*const表示不可指向不同的东西但指向的东西的值可以改变constT*表示不可改变指向的东西的值但可以指向不同的东西T*constp(const修饰pp为指针被const修饰后不该被改动指针p不能改变但指向的内容*p可被改变)constT*p(const修饰*p*p为不该被改动的对象)STL迭代器:std::vectorvec;conststd::vector::iteratoriter=ve
- Effective C++ 条款4:确定对象被使用前已先被初始化
君鼎
C++c++EffectiveC++
EffectiveC++条款4:确定对象被使用前已先被初始化核心思想:永远在使用对象前将其初始化。未初始化对象是未定义行为的常见来源,尤其对于内置类型。1.内置类型手动初始化intx=0;//手动初始化constchar*text="Hello";//指针初始化doubled;//❌危险!未初始化(值随机)2.类成员使用初始化列表原因:避免先默认构造再赋值的性能开销const成员和引用成员必须用初
- Effective Modern C++ 条款5:优先考虑auto而非显式类型声明
举个栗子2
EffectiveModernC++c++
更多C++学习笔记,关注wx公众号:cpp读书笔记Item5:Preferautotoexplicittypedeclarations哈,开心一下:intx;等等,该死!我忘记了初始化x,所以x的值是不确定的。它可能会被初始化为0,这得取决于工作环境。哎。别介意,让我们转换一个话题,对一个局部变量使用解引用迭代器的方式初始化:template//对从b到e的所有元素使用void
- Day1
JackChen_
Cripple1.情景1:优秀的团队因为无效的领导和错误的扩张被拖垮了。Thestrongteamispoorlyorganizedandcrippledbyineffectiveleadershipandwrongambition.2.情景2我以前公司的最后三年里面,因为一连串错误的的市场定位,CEO已经形同虚设了。Duringthelast3yearsinmyformercompany,the
- [论文阅读] 人工智能 + 软件工程 | LLM当“裁判”靠谱吗?——解析代码生成与总结任务中的LLM评判能力
张较瘦_
前沿技术论文阅读人工智能软件工程
LLM当“裁判”靠谱吗?——解析代码生成与总结任务中的LLM评判能力论文:OntheEffectivenessofLLM-as-a-judgeforCodeGenerationandSummarizationarXiv:2507.16587OntheEffectivenessofLLM-as-a-judgeforCodeGenerationandSummarizationGiuseppeCrupi
- Effective Python(原书第二版) -2023年10月25日
笔记目录前言零、目录1.列表与字典:11-18条2.函数:19-26条3.推导与生成:27-36条4.类与接口:37-43条5.元类与属性:44-51条6.并发与并行:52-64条7.稳定与性能:65-74条8.调试与测试:75-81条9.协作开发:82-90条一、11条.对序列切片1.Somelist[start:end]二、12条.不要在切片里同时指定起止下标与步长1.somelist[sta
- Effective Modern C++ 条款12:把重写函数声明为 `override`
在C++面向对象编程的世界中,类的继承和虚函数重写是核心概念之一。然而,重写虚函数时容易出现细微的错误,这些错误可能不会在编译时被发现,但却会导致程序运行时的行为不符合预期。为了避免这些问题,C++11引入了override关键字,帮助我们在重写函数时明确意图,并让编译器帮我们检查函数签名是否匹配。本文将详细讲解override的作用、使用场景以及如何在代码中正确应用它,同时还会介绍成员函数的引用
- 【读书笔记】《Effective Modern C++》第二章:auto
《EffectiveModernC++》第二章:auto一、为何提倡使用autoC++11引入auto关键字,让编译器根据初始化表达式自动推导变量类型。在以下场景中,auto能简化代码、提升可维护性:减少冗长类型:泛型库、迭代器、函数返回类型经常写出极长的类型声明,使用auto可大幅精简。提高泛型代码可移植性:当底层容器或迭代器类型改变时,不必修改所有变量声明。减少拷贝错误:在使用右值和移动语义时
- 《Effective Python》第十三章 测试与调试——使用 pdb 进行交互式调试
不学无术の码农
EffectivePython精读笔记python开发语言
引言本文基于《EffectivePython:125SpecificWaystoWriteBetterPython,3rdEdition》第十三章:测试与调试中的Item114:ConsiderInteractiveDebuggingwithpdb,旨在系统总结书中关于Python内置调试器pdb的使用方法,结合笔者在实际开发中的调试经验,探讨其应用场景、技巧以及延伸思考。Python开发过程中,
- Effective Modern C++ 条款7:区分使用 `()` 和 `{}` 创建对象
郝学胜-神的一滴
EffectiveModernC++c++开发语言程序人生
在C++11及以后的版本中,初始化对象的方式变得更加灵活,但也带来了选择上的困惑。()和{}是两种常见的初始化语法,它们在语义、行为和适用场景上有显著差异。本文将通过具体示例,深入解析这两种初始化方式的区别,并探讨如何在实际编程中合理选择。一、基本区别:()和{}的语义差异1.1():传统构造函数调用Widgetw1(10);//调用带一个int参数的构造函数Widgetw2(10,true);/
- 一周掌握Flutter开发--10. 结构与设计模式
江上清风山间明月
Flutterflutter设计模式快速
文章目录10.项目结构与设计模式核心原则10.1分层架构10.1.1UI层10.1.2业务逻辑层10.1.3数据层10.2代码规范:遵循EffectiveDart10.2.1命名规范10.2.2代码格式10.2.3注释与文档10.3模块化设计10.3.1按功能拆分模块10.3.2模块化设计的优势10.3.3实现模块化总结10.项目结构与设计模式在Flutter开发中,良好的项目结构和设计模式是确保
- Effective Python 条款4:用支持插值的f-string取代C风格的格式字符串与str.format方法
郝学胜-神的一滴
PythonEffectivePythonpython开发语言程序人生
在Python开发中,字符串格式化是日常操作的核心功能。本文将深入解析三种主流方法,并通过对比表格助你选择最佳方案。三种方法快速概览特性%格式化str.format()f-stringPython版本要求所有版本≥2.6≥3.6可读性低中高执行速度慢中等最快变量复用需重复写入需重复写入单点定义表达式支持不支持有限支持完整支持类型安全低中高字典/对象访问冗余较清晰最简洁%格式化-C语言风格的遗产na
- 2. 当构造方法参数过多时使用 builder 模式
Effectivejava文章目录Effectivejava为什么要使用builder模式?多可选参数的情景使用Builder模式Builder模式类层次结构总结为什么要使用builder模式?静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景。请考虑一个代表包装食品上的营养成分标签的例子。这些标签有几个必需的属性——每次建议的摄入量,每罐的份量和每份卡路里,以及超过20个可选
- C++为什么中不应该返回局部变量的地址
i love 3
C++返回引用c++return
最近在写代码的时候遇到返回局部变量的引用问题,认识不是很清晰,下面是转自http://blog.csdn.net/tujinqiuqq85948239/article/details/27236677博文的详细解释!在EffectiveC++中明确指出:不应该返回局部变量的引用,原因在于:局部变量会在函数返回后被销毁,因此被返回的引用就成为了”无所指”的引用,程序会进入未知状态。如果比较理解函数局
- Effective Go 编程技巧总结
强哥之神
golang人工智能GPU调度linux语言模型云计算
Go是一种新兴的编程语言。尽管它借鉴了其他语言的许多特性,但也具备一些独特的属性,使得用Go编写的高效程序在风格上与其他语言编写的程序有所不同。直接将C++或Java程序翻译成Go代码,通常无法取得令人满意的结果——Java程序的编写方式是Java风格,而非Go风格。另一方面,如果从Go的语言特性出发去思考问题,可能会编写出风格截然不同但更为成功的程序。换句话说,要编写出优秀的Go代码,理解Go语
- java线程Thread和Runnable区别和联系
zx_code
javajvmthread多线程Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
- 【转】JSON与XML的区别比较
丁_新
jsonxml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
- c++ 实现五种基础的排序算法
CrazyMizzz
C++c算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
- 我的软件
麦田的设计者
我的软件音乐类娱乐放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
- linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
- 各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
- oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
- tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
- 遍历的方法
百合不是茶
遍历
遍历
在java的泛
- linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
- java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
- 【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
- 【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
- 通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
- java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
- Netty源码学习-ReplayingDecoder
bylijinnan
javanetty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
- js特殊字符过滤
cngolon
js特殊字符js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
- hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
- linux shell脚本中切换用户执行命令方法
daizj
linuxshell命令切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123" 
- 好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
- Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
- linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总linux管道命令linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
- Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
- asp.net获取站点根目录下子目录的名称
hvt
.netC#asp.nethovertreeWeb Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
- Eclipse程序员要掌握的常用快捷键
justjavac
javaeclipse快捷键ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
- c++编程随记
lx.asymmetric
C++笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
- linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
- 随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
- 我认为POJO是一个错误的概念
windshome
javaPOJO编程J2EE设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&