- 浏览: 209049 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhuchao_ko:
有用的废话。。。
架构与产品 -
450029462:
java学好了 c++其实也不难,就是 宏多点 内存控制多点 ...
从java转向C\c++开发要学会些什么 -
ldlzagg:
...
启示2013 -
raojl:
书是买了, 一直没时间捣鼓!
我发现开始喜欢Python了 -
raojl:
回过头看了看也不全然对啊,呵呵!
IT行业发展‘VIA’模式探讨
1、版本编译控制(比如多项目)
2、编译校验
3、static_cast
----------------------------------------------------------
// static_check.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string> using namespace std; namespace Loki { //////////////////////////////////////////////////////////////////////////////// // Helper structure for the STATIC_CHECK macro //////////////////////////////////////////////////////////////////////////////// template<int> struct CompileTimeError; template<> struct CompileTimeError<true> {}; } //////////////////////////////////////////////////////////////////////////////// // macro STATIC_CHECK // Invocation: STATIC_CHECK(expr, id) // where: // expr is a compile-time integral or pointer expression // id is a C++ identifier that does not need to be defined // If expr is zero, id will appear in a compile-time error message. //////////////////////////////////////////////////////////////////////////////// #define STATIC_CHECK(expr, msg) \ { Loki::CompileTimeError<((expr) != 0)> ERROR_##msg; (void)ERROR_##msg; } int _tmain(int argc, _TCHAR* argv[]) { STATIC_CHECK((sizeof(int) == 4 && sizeof(long) == 4), 32bit); STATIC_CHECK((sizeof(int) != sizeof(long)), 64bit); return 0; }
////////////////////////////////////////////////////////////////////////////////
// The Loki Library // Copyright (c) 2001 by Andrei Alexandrescu // This code accompanies the book: // Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design // Patterns Applied". Copyright (c) 2001. Addison-Wesley. // Permission to use, copy, modify, distribute and sell this software for any // purpose is hereby granted without fee, provided that the above copyright // notice appear in all copies and that both that copyright notice and this // permission notice appear in supporting documentation. // The author or Addison-Welsey Longman make no representations about the // suitability of this software for any purpose. It is provided "as is" // without express or implied warranty. //////////////////////////////////////////////////////////////////////////////// // Last update: November 22, 2001 #ifndef TYPEMANIP_INC_ #define TYPEMANIP_INC_ namespace Loki { //////////////////////////////////////////////////////////////////////////////// // class template Int2Type // Converts each integral constant into a unique type // Invocation: Int2Type<v> where v is a compile-time constant integral // Defines 'value', an enum that evaluates to v //////////////////////////////////////////////////////////////////////////////// template <int v> struct Int2Type { enum { value = v }; }; //////////////////////////////////////////////////////////////////////////////// // class template Type2Type // Converts each type into a unique, insipid type // Invocation Type2Type<T> where T is a type // Defines the type OriginalType which maps back to T //////////////////////////////////////////////////////////////////////////////// template <typename T> struct Type2Type { typedef T OriginalType; }; //////////////////////////////////////////////////////////////////////////////// // class template Select // Selects one of two types based upon a boolean constant // Invocation: Select<flag, T, U>::Result // where: // flag is a compile-time boolean constant // T and U are types // Result evaluates to T if flag is true, and to U otherwise. //////////////////////////////////////////////////////////////////////////////// template <bool flag, typename T, typename U> struct Select { typedef T Result; }; template <typename T, typename U> struct Select<false, T, U> { typedef U Result; }; //////////////////////////////////////////////////////////////////////////////// // class template IsSameType // Return true iff two given types are the same // Invocation: SameType<T, U>::value // where: // T and U are types // Result evaluates to true iff U == T (types equal) //////////////////////////////////////////////////////////////////////////////// template <typename T, typename U> struct IsSameType { enum { value = false }; }; template <typename T> struct IsSameType<T,T> { enum { value = true }; }; //////////////////////////////////////////////////////////////////////////////// // Helper types Small and Big - guarantee that sizeof(Small) < sizeof(Big) //////////////////////////////////////////////////////////////////////////////// namespace Private { template <class T, class U> struct ConversionHelper { typedef char Small; struct Big { char dummy[2]; }; static Big Test(...); static Small Test(U); static T MakeT(); }; } //////////////////////////////////////////////////////////////////////////////// // class template Conversion // Figures out the conversion relationships between two types // Invocations (T and U are types): // a) Conversion<T, U>::exists // returns (at compile time) true if there is an implicit conversion from T // to U (example: Derived to Base) // b) Conversion<T, U>::exists2Way // returns (at compile time) true if there are both conversions from T // to U and from U to T (example: int to char and back) // c) Conversion<T, U>::sameType // returns (at compile time) true if T and U represent the same type // // Caveat: might not work if T and U are in a private inheritance hierarchy. //////////////////////////////////////////////////////////////////////////////// template <class T, class U> struct Conversion { typedef Private::ConversionHelper<T, U> H; #ifndef __MWERKS__ enum { exists = sizeof(typename H::Small) == sizeof((H::Test(H::MakeT()))) }; #else enum { exists = false }; #endif enum { exists2Way = exists && Conversion<U, T>::exists }; enum { sameType = false }; }; template <class T> struct Conversion<T, T> { enum { exists = 1, exists2Way = 1, sameType = 1 }; }; template <class T> struct Conversion<void, T> { enum { exists = 0, exists2Way = 0, sameType = 0 }; }; template <class T> struct Conversion<T, void> { enum { exists = 0, exists2Way = 0, sameType = 0 }; }; template <> struct Conversion<void, void> { public: enum { exists = 1, exists2Way = 1, sameType = 1 }; }; //////////////////////////////////////////////////////////////////////////////// // class template SuperSubclass // Invocation: SuperSubclass<B, D>::value where B and D are types. // Returns true if B is a public base of D, or if B and D are aliases of the // same type. // // Caveat: might not work if T and U are in a private inheritance hierarchy. //////////////////////////////////////////////////////////////////////////////// template <class T, class U> struct SuperSubclass { enum { value = (::Loki::Conversion<const volatile U*, const volatile T*>::exists && !::Loki::Conversion<const volatile T*, const volatile void*>::sameType) }; }; //////////////////////////////////////////////////////////////////////////////// // class template SuperSubclassStrict // Invocation: SuperSubclassStrict<B, D>::value where B and D are types. // Returns true if B is a public base of D. // // Caveat: might not work if T and U are in a private inheritance hierarchy. //////////////////////////////////////////////////////////////////////////////// template<class T,class U> struct SuperSubclassStrict { enum { value = (::Loki::Conversion<const volatile U*, const volatile T*>::exists && !::Loki::Conversion<const volatile T*, const volatile void*>::sameType && !::Loki::Conversion<const volatile T*, const volatile U*>::sameType) }; }; } // namespace Loki //////////////////////////////////////////////////////////////////////////////// // macro SUPERSUBCLASS // Invocation: SUPERSUBCLASS(B, D) where B and D are types. // Returns true if B is a public base of D, or if B and D are aliases of the // same type. // // Caveat: might not work if T and U are in a private inheritance hierarchy. // Deprecated: Use SuperSubclass class template instead. //////////////////////////////////////////////////////////////////////////////// #define SUPERSUBCLASS(T, U) \ ::Loki::SuperSubclass<T,U>::value //////////////////////////////////////////////////////////////////////////////// // macro SUPERSUBCLASS_STRICT // Invocation: SUPERSUBCLASS(B, D) where B and D are types. // Returns true if B is a public base of D. // // Caveat: might not work if T and U are in a private inheritance hierarchy. // Deprecated: Use SuperSubclassStrict class template instead. //////////////////////////////////////////////////////////////////////////////// #define SUPERSUBCLASS_STRICT(T, U) \ ::Loki::SuperSubclassStrict<T,U>::value //////////////////////////////////////////////////////////////////////////////// // Change log: // June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!! // November 22, 2001: minor change to support porting to boost // November 22, 2001: fixed bug in Conversion<void, T> // (credit due to Brad Town) // November 23, 2001: (well it's 12:01 am) fixed bug in SUPERSUBCLASS - added // the volatile qualifier to be 100% politically correct // September 16, 2002: Changed "const volatile" to "const volatile *", to enable // conversion to succeed. Done earlier by MKH. // Added SuperSubclass and SuperSubclassStrict templates. The corresponding // macros are deprecated. // Added extra parenthesis in sizeof in Conversion, to disambiguate function // call from function declaration. T.S. //////////////////////////////////////////////////////////////////////////////// #endif // TYPEMANIP_INC_
发表评论
-
服务端口快扫shell
2014-08-25 11:50 691#set -x var_start=8000 arra ... -
远程批量部署
2014-07-29 11:50 596#!/usr/bin/expect -- if ... -
linux 下建立异步链接
2014-05-07 11:59 543int32_t SockEndPoint::connect_ ... -
atomic笔记
2013-12-11 11:43 364inline void ice_atomic_set(ic ... -
求最大公共子串
2013-07-15 11:21 697#include <stdio.h> #inc ... -
日志记录
2013-01-14 09:25 714[root@localhost Capserver]# ... -
c开发笔记
2012-02-03 09:36 6741、就是有大量的输入参数或输出参数需要一次性交换时,可以考虑定 ... -
GCC注意笔记
2011-02-22 18:38 702大多数程序和库在编译 ... -
邻接表实现状态图【大家帮忙看看问题】
2010-06-26 18:15 884StatusGrap.cpp // StatusGraph ... -
gsoap编写webservice应用
2010-06-01 15:02 2124The gSOAP tools minimize applic ... -
setsockopt 笔记
2010-04-22 15:12 7831、TCP_NODELAY是唯一使用IPPROTO_TCP层的 ... -
随录-增量记录
2010-02-25 10:41 647程序开发,对于日志的记录需要主要以下几个问题。 1、多线程或 ... -
快速入门sqlite内存数据库,用sqlite构建一日志工具
2009-12-25 11:28 3694今天上午无意在搜索的时候发现很多应用程序用了sqllite,o ... -
dos脚本+ftp实现快速升级
2009-12-25 09:52 1457cd \ ;写ftpget.src文件,存储ftp命令。该文件 ... -
花三分钟看看这个文档
2009-11-30 19:14 768linux 命令精简 Unix/Linux Command ... -
推荐一款xml分析微型库tinyxml
2009-08-22 08:16 1274tinyxml,至所以叫tin,就是短小精悍。搭配前面讲的gs ... -
用gsoap编写webservice客户端接口dll的方法案例
2009-08-22 07:55 28901)使用手册:见http://gsoap2.source ... -
命令随写
2009-08-13 16:22 711ocrale启动监听:lsnrctl start 启动服务:o ... -
LUA 分析文件
2009-06-02 14:07 1104BUFSIZE = 2^13 -- 8K ... -
避免对指针和数字类型重载
2009-05-22 14:17 772条款25: 避免对指针和数字类型重载 快速抢答: ...
相关推荐
6. **字节码优化**:现代JVM如HotSpot,会在运行时通过即时编译(JIT)对字节码进行优化,但优化前也会进行栈校验,以确保优化后的代码依然类型安全。 理解JVM的栈校验机制对于Java开发者来说非常有益,它可以帮助...
《C Primer Plus学习笔记》是一份为初学者准备的学习资源,旨在帮助读者理解和掌握C语言的基础知识。笔记可能包含作者在学习过程中的一些个人理解...同时,读者应积极参与校验和补充笔记内容,以提升其准确性和完整性。
通常,PPT会详细讲解各个主题,如词法分析、语法分析、语义分析、错误处理、中间代码生成以及代码优化等。通过这些PPT,你可以系统地了解编译器的构造过程,包括LL解析、LR解析、上下文无关文法、正则表达式、巴科斯...
3. **运行时校验**:JSR 303/JSR 349的Bean Validation使用注解进行数据校验。 4. **资源管理**:比如`@WebServlet`用于标注Servlet,`@EJB`用于注入Enterprise JavaBeans。 总结来说,Java注解是现代Java开发中一...
c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...
- 代码校验:由Bytecode Verifier完成。 - 执行代码:由Runtime Interpreter完成。 3. **Java运行环境**: - **JRE(Java Runtime Environment)**:包含了运行Java程序所需的Java虚拟机、核心类库和支持文件。 ...
笔记还涵盖了程序语言基础知识、操作系统知识、网络基础知识、多媒体基础知识、数据库技术基础、数据结构、算法设计与分析、面向对象技术、标准化和软件知识产权基础、编译过程以及各类题型的解题技巧,如选择题、...
尽管现代JVM通过即时编译(JIT)技术提高了性能,但在解释执行阶段的严格类型检查仍然保留,以保持代码的健壮性。 总之,Java的JVM通过访问控制器的栈校验机制确保了代码的类型安全和访问控制,这是Java平台可靠性...
其次字节码校验器检查该类文件的代码中是否存在着某些非法操作,例如 applet 程序中写本机文件系统的操作;如果字节码校验器检验通过,由 Java 解释器负责把该类文件解释成为机器码进行执行。 Java 语言的特点 ...
* 编译过程:源程序---词法分析---语法分析---语义分析---中间代码生成---代码优化---目标代码生成---目标代码 * 解释程序:分析部分---词法分析、语法分析、语义分析---中间代码;解释部分---解释执行中间代码 九...
- **权限校验**:在方法调用前进行权限验证,避免在每个业务方法中重复代码。 **6. Struts与Hibernate的整合** Struts作为MVC框架负责处理用户请求,Hibernate则用于持久化数据。SSH整合中,通常通过Struts的...
在安全性方面,Java代码需要通过编译、类装载检查和字节码校验,如果在网络上运行,还有沙箱保护,确保代码的安全执行。 构建Java企业版(JEE)开发环境时,需要安装JDK,并设置相应的环境变量,如Path、JAVA_HOME...
- **编译与解释**:Java源代码编译成字节码,由JVM解释执行。 - **运行过程**:加载、校验、解释执行三个步骤。 3. **Java运行环境**: - **JRE**:Java运行环境,包括JVM、库函数等,用于运行Java应用程序和...
* JVM(Java 虚拟机)的功能是:校验代码 - 编译代码 —> 运行代码 * 字符输入流直接父类是 Reader,字符输出流直接父类是 Writer ;字节输入流直接父类是 InputStream,字节输出流的直接父类是 OutputStream
2. 打开串口:选择合适的串口号,设置波特率、数据位、停止位和校验位,然后打开串口。 3. 发送数据:通过串口对象提供的write()方法,将数据写入串口,发送到对方设备。 4. 接收数据:注册监听器,当有数据到来时,...
11、**自定义注解+AOP**:通过自定义注解和AOP切面编程,可以实现更灵活的功能扩展,比如行为审计或权限校验。 12、**权限概念梳理**:深入理解角色、资源、权限等概念,构建清晰的权限模型。 13、**登录授权流程...
JVM是Java程序运行的基础,它负责将编译后的字节码转化为机器语言,实现了“一次编写,到处运行”的理念。了解JVM的工作原理,包括类加载机制、内存模型(堆、栈、方法区等)、垃圾收集机制等,能帮助开发者优化...
- **编译器**:将源代码编译成字节码,文件扩展名为`.class`。 - **Java虚拟机(JVM)**:解释执行字节码。 #### 3. Java运行时环境JRE与JDK - **JRE**:包括Java虚拟机、库函数以及其他必需的文件。 - **JDK**:除了...
软考中级软件设计师学习笔记 World版本 下载后可直接打印作为2020年上半年考试的复习资料用 1.CPU 的功能的功能:程序控制、操作控制、时间控制、数据处理。 2.计算机系统组成示意图计算机系统组成示意图: 3....
### Java SE - 马士兵笔记精要 #### 第1章 Java概述 - **Java语言的特点**: - **面向对象**:Java是一种完全支持面向对象编程的语言。 - **平台无关性**:通过Java虚拟机(JVM),Java可以在任何安装了JVM的...