精华内容
下载资源
问答
  • 方法名称:一个单词,全小写;多个单词时,第一个单词小写,从第二个开始首字母大写,最后加上( )。3 . 变量: 一个单词时,全小写。4 . 常量 :大写,多个单词之间以一下划线分割。5 . 包名 : 到域名, 全部小写...

    1. 类名:一个单词时,手字母大写。多个单词时,首字母大写。

    2 . 方法名称:一个单词,全小写;

    多个单词时,第一个单词小写,

    从第二个开始首字母大写,最后加上( )。

    3 . 变量: 一个单词时,全小写。

    4 . 常量 :大写,多个单词之间以一下划线分割。

    5 . 包名 : 到域名, 全部小写。

    声明变量 : 数据类型 变量名;

    定义是初始化变量     数据类型       变量名   =   值;

    定义后初始化变量  数据类型  变量名;

    变量名    =   值;

    eg: int  scoureTote;      //   变量

    scorceTotle  =  590;  //   第二次赋值    初始化

    注意:

    变量名注意不要重复

    一条语句可以多个类型相同的变量

    常见错误和书写方式

    1.  未声明 、未初始化的变量和未使用个的变量

    2.  赋值时数值溢出

    3.  取整数的输入对象(冗余:重复)

    4.   冗余的输入对象

    变量的命名

    变量名 ; 字母、下划线 和 首字母

    其他字母 : 字母,下划线 美元符号 和数字

    数据类型    类型 说明符        位数

    整型            int            32

    短整型      short      16

    长整型       long            64

    字符型       byte         8

    单精度浮点型    float      32

    双精度浮点型    double     64

    布尔类型     boolean    8

    字符串类型     char     16

    变量的类型决定了它分配多少个字符空间

    \0    空字符 ;   \n  换行

    \r    回车 ;   \t  制表符

    \"    双引号    ; \' 单引号

    \\    反斜杠

    展开全文
  • Java编码规范

    2020-10-16 18:34:07
    测试类命名以它要测试的类的名称开始,以Test结尾 中括号是数组类型的一部分,数组定义如下:string[] args; POJO类中,布尔类型的变量都不要加is,否则部分框架解析会引起序列化错误 接口类中的方法和属性不要加...

    1. 命名规约

    • 抽象类命名使用Abstract或Base开头
    • 异常类命名使用Exception结尾
    • 测试类命名以它要测试的类的名称开始,以Test结尾
    • 中括号是数组类型的一部分,数组定义如下:string[] args;
    • POJO类中,布尔类型的变量都不要加is,否则部分框架解析会引起序列化错误
    • 接口类中的方法和属性不要加任何修饰符号(public也不要加),保持代码的简洁性,并加上有效的Javadoc注释
    • 对于Service和DAO层,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别
    • Service/DAO层命名规约
      • 获取单个对象的方法用get做前缀
      • 获取多个对象的方法用list做前缀
      • 获取统计值的方法用count做前缀
      • 插入方法用save(推荐)或insert做前缀
      • 删除方法用remove(推荐)或delete做前缀
      • 修改的方法用update做前缀
    • 领域模型命名规范
      • 数据模型:xxxDO,xxx表示数据表名
      • 数据传输对象:xxxDTO,xxx为业务领域相关的名称
      • 展示对象:xxxVO,xxx一般为网页名称
      • POJO是DO/DTO/BO/VO的统称,禁止命名为xxxPOJO

    用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。

    展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。

    服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务。

    服务层把DO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作。

    对于一个逆向操作,如读取数据,也是用类似的方式转换和传递,略。

    2.OOP规约

    • 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名访问即可
    • 所有的覆写方法,必须加@Override注解
    • 尽量不用可变参数编程。如果使用,相同参数类型,相同业务含义,才可以使用可变参数,避免使用Object
    • 不能使用过时的类或方法
    • 所有相同类型的包装类对象之间值比较,全部使用equals方法比较。对于-128~127之间的Integer值,可以使用==进行值比较(这个区间Integer对象是在IntegerCache.cache产生,会复用已有对象。但是这个区间外的所有数据都会在堆上产生,并不会复用已有对象)
    • 定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
    • 序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改seriaVersionUID
    • 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中
    • POJO类必须写toString方法
    • 类成员与方法访问控制从严
      • 如果不允许外部直接通过new来创建对象,那么构造方法必须是private
      • 工具类不允许有publicdefault构造方法
      • 类非static成员变量并且与子类共享,必须是protected
      • 类非static成员变量并且仅在本类使用,必须是private
      • static成员变量如果仅在本类使用,必须是private
      • 若是static成员变量,必须考虑是否为final
      • 类成员方法只供类内部调用,必须是private
      • 类成员方法只对继承公开,那么限制为protected

    3.集合处理

    • 关于hashCodeequals
      • 只要重写equals,就必须重写hashCode
      • 因为Set存储的是不重复的对象,依据hashCodeequals判断,所以Set存储的对象必须重写这两个方法
      • 如果自定义对象作为Map键,那么必须重写hashCodeequals
      • String重写了hashCodeequals方法,所以我们可以愉快地使用String对象作为key来使用
    • 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁
    • 使用entrySet遍历Map集合KV,而不是keySet方式进行遍历

    4.注释规约

    • 类、类属性、类方法的注释必须使用Javadoc规范,不得使用//XXXX方式
    • 所有的抽象方法(包括接口中的方法)必须要用Javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能
    • 所有的类必须添加创建者信息
    • 所有的枚举类型字段必须要有注释,说明每个数据项的用途

    5.异常处理

    • 不要捕获Java类库中定义的继承自RuntimeException的运行时异常类,如:IndexOutOfBoundsException/NullPointerException,这类异常由程序员预检查来规避,保证程序健壮性
    • 异常不要用来做流程控制、条件控制,因为异常的处理效率比条件分支低
    • 对大段代码进行try-catch,这是不负责任的表现,对于非稳定代码的catch尽可能进行区分异常类型,再做对应的异常处理
    • finally块必须对资源对象、流对象进行关闭,有异常也要做try-catch
    • 不能在finally块中使用return。finally块中的return返回后方法结束执行,不会再执行try块中的return语句
    • 防止NPE
      • 返回类型为包装数据类型,有可能是null
      • 数据库的查询结果有可能为null
      • 集合里的元素即使isNotEmpty,取出的数据元素也可能为null
      • 远程调用返回对象,一律要求进行NPE判断
      • 对于Session中获取的数据,建议NPE检查,避免空指针
      • 级联调用容易产生NPE。如obj.getA().getB().getC()

    6.MySQL规约

    6.1 建表规约
    • 表达概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint(1表示是,0表示否)
    • 表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。
    • 表名不使用复数名词
    • 唯一索引为uk_字段名;普通索引则为inx_字段名
    • 小数类型为decimal,禁止使用doublefloat
    • 表必备三字段:id、create_at、update_at
    • 表的命名最好是加上业务名称_表的作用
    • 库名与应用名称尽量一致
    • 字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。同时冗余字段应
      • 不是频繁修改的字段
      • 不是varchar超长字段,更不能是text字段
    6.2 索引规约
    • 业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引
    • 超过三个表禁止join。需要join的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引
    • varchar字段上建立索引时,必须制定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度
    • 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决
    • 如果有order by的场景,请注意利用索引的有序性。order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file _ sort的情况,影响查询性能
    • 利用覆盖索引来进行查询操作,来避免回表操作
    • 利用延迟关联或者子查询优化超多分页场景
    • 建组合索引的时候,区分度最高的在最左边
    • 创建索引时避免有如下极端误解
      • 误认为一个查询就需要建一个索引
      • 误认为索引会消耗空间、严重拖慢更新和新增速度
      • 误认为唯一索引一律需要在应用层通过“先查后插”方式解决
    6.3 SQL
    • 不要使用count(列名)count(常量)来替代count(*)count(*)就是 SQL 92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关
      • count(*)会统计值为 NULL 的行,而count(列名)不会统计此列为 NULL 值的行
    • count(distinct col)计算该列除 NULL 之外的不重复数量。注意count(distinctcol 1, col 2) 如果其中一列全为 NULL ,那么即使另一列有不同的值,也返回为 0
    • 不得使用外键与级联,一切外键概念必须在应用层解决
    • 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性
    • 数据订正时,删除和修改记录时,要先select,避免出现误删除,确认无误才能执行更新语句
    • in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在1000个之内
    • TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE无事务且不触发 trigger ,有可能造成事故,故不建议在开发代码中使用此语句
    6.4 ORM规约
    • 在表查询中,一律不要使用*作为查询的字段列表,需要哪些字段必须明确写明
    • POJO 类的boolean属性不能加is,而数据库字段必须加is _,要求在resultMap中进行字段与属性之间的映射
    • 不要用 resultClass 当返回参数,即使所有类属性名与数据库字段一一对应,也需要定义 ; 反过来,每一个表也必然有一个与之对应
    • xml 配置中参数注意使用:#{},# param # 不要使用${} 此种方式容易出现 SQL 注入
    • 不允许直接拿HashMapHashtable作为查询结果集的输出
    • 更新数据表记录时,必须同时更新记录对应的gmt _ modified(update_at)字段值为当前时间
    • 不要写一个大而全的数据更新接口,传入为 POJO 类,不管是不是自己的目标更新字段,都进行 update table set c1=value1,c2=value2,c3=value3; 这是不对的。执行 SQL时,尽量不要更新无改动的字段,一是易出错 ; 二是效率低 ; 三是 binlog 增加存储
    • @ Transactional 事务不要滥用。事务会影响数据库的 QPS ,另外使用事务的地方需要考虑各方面的回滚方案,包括缓存回滚、搜索引擎回滚、消息补偿、统计修正等
    展开全文
  • Header里面的Content-Disposition只支持ASCII,所以我们传输的文件名必须是...根据你提供的代码,你服务端返回的数据实际是GBK编码,可参考以下代码是可以获取到正确名称:String url = "http://hk.azero-ng.cn/in...

    Header里面的Content-Disposition只支持ASCII,所以我们传输的文件名必须是ASCII,当文件名为中文时,必须要将该中文转换成ASCII。

    如果服务端能处理,最好直接将filename通过URLEncode编码。

    根据你提供的代码,你服务端返回的数据实际是GBK编码,可参考以下代码是可以获取到正确名称:

    String url = "http://hk.azero-ng.cn/index2.php";

    URL obj = new URL(url);

    URLConnection conn = obj.openConnection();

    Map> map = conn.getHeaderFields();

    String[] cells = map.get("Content-Disposition").get(0).split(";");

    String filename = cells[1].replace(" filename=", "");

    System.out.println(filename);

    String Wrong_utf8 = new String(filename.getBytes("ISO-8859-1"),"GBK");

    System.out.println(Wrong_utf8);

    建议服务端直接名称URLEncode编码即可,

    展开全文
  • java编码小知识点

    2019-07-01 14:18:09
    @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以...

    一、@Resource与@autowired的区别:

    @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: 

    Java代码 

    1。@Autowired() @Qualifier("baseDao")     

    2.private BaseDao baseDao;    

     3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

    1. @Resource(name="baseDao")     
    2. private BaseDao baseDao;    

     

    二、@value 属于SpringFarmwork中的,可以用来读取配置文件的值

    三、

    @Transactional(readOnly = true)

    readOnly为true 时读取的数据如果缓存中存在就从缓存中读取 这是没有问题的
    readOnly为false 时读取的数据就不能从缓存中读取了 万一你第一个操作是修改这个数据,第二个操作是读取这个数据而这个数据从缓存中拿的 那不就gg了,防止脏读

    四、@Cacheable

    @Cacheable(value = {"redis"}, key = "'pcc:allList'", unless = "#result == null")

    该注解打在方法上,表示为默认将查询到的数据存入到redis中,除非结果为null,注意:使用@Cacheable生成的缓存是不会清除的,同时当redis中已经存在相同的key时,@Cacheable默认不生成缓存,即

    @CachePut  Spring在每次执行前都会检查Cache中是否存在相同key的缓存元素,如果存在就不再执行该方法,而是直接从缓存中获取结果进行返回,否则才会执行并将返回结果存入指定的缓存中

    五、mybatis动态参数 ,例子:动态参数可以是表,也可以是字段

    <select id="getMaxNo" parameterType="string" resultType="string">
        select MAX(substr(${colName},15,4)) from ${tableName}
        WHERE SUBSTR(${colName},1,LENGTH(#{moduleName})) = #{moduleName}
        AND   SUBSTR(${colName},LENGTH(#{moduleName}) + 1,8) = #{currentDate}
        AND   SUBSTR(${colName},LENGTH(#{moduleName}) + 9,4)= #{subMobile}
    </select>
    String getMaxNo(@Param("tableName") String tableName, @Param("colName") String colName, @Param("moduleName") String moduleName, @Param("currentDate") String currentDate, @Param("subMobile") String subMobile);

    六、

    boolean flag = redisTemplate.opsForHash().hasKey("redisKey","Info"+guid);
    if(flag){
        Object redisKey = redisTemplate.opsForHash().get("redisKey", "Info" + guid);
    redisTemplate.opsForHash().put("redisKey","Info"+guid,helpBaseInfoList);

    七、@Transactional(rollbackFor=Exception.class)

    在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。

    在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚

    参考: https://www.cnblogs.com/clwydjgs/p/9317849.html

    八、stringbuild > stringBuffer >string  字符串操作效率比较

    九、mybatisxml文件如果遇到有实体类中包含实体类的写法

    <resultMap id="BaseResultMap" type="cn.com.oceansoft.osc.ms.domain.SystemHelpBaseInfo" >
        <id column="GUID" property="guid" jdbcType="VARCHAR" />
    <collection property="titleList" ofType="cn.com.oceansoft.osc.ms.domain.SystemHelpBaseInfo">
        <id property="guid" column="sub_guid"/>
    <collection property="helpAtt" ofType="cn.com.oceansoft.osc.ms.domain.SystemHelpAtt">
        <id property="guid" column="ts_guid"/>
    
    </collection>
    </collection>
    <collection property="helpAtt" ofType="cn.com.oceansoft.osc.ms.domain.SystemHelpAtt">
        <id property="guid" column="t_guid"/>
    </collection>
    </resultMap>

    十、方法传递参数的时候,如果多个方法类似,参数确不一致,可以用hashMap传递参数,这样可以让代码更优雅

     

     

    时间格式化
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    展开全文
  • java数据类型

    2019-10-02 01:20:46
    # Java基础语法 ...需要知道变量的名称、要为该变量保留多少计算机内存、变量中的数据项如何编码为一串的0和1。 变量声明告诉计算机保存什么类型的数据。由于不同类型的数据以不同的方式保存在计算机中,...
  • 判断一个文件的文件类型,这里总结一把,一般判断文件类型的原理有2种方式:根据文件扩展名判断优点:速度快,代码简单缺点:无法判断出真实的文件类型,例如一些伪造的文件或者没有后缀名称的文件根据文件流中前几...
  • java的数据类型

    2021-03-10 21:04:33
    java的数据类型 基本数据类型:四类八中 1.1、整数类型(所占字节):byte(1)、int(4)、short(2)、long(8)、 1.2、小数类型(所占字节):float(4)、double(8)、 1.3、单字符:char (占内存大小与编码...
  • Java基本数据类型

    2020-07-23 22:02:53
    JAVA基本数据类型 八大数据类型 名称 字节 范围 byte 1字节 -128 ~ 127 short 2字节 -32768 ~ 32767 char 2字节 存储Unicode编码,用单引号赋值 int 4字节 负2的32次方 ~ 正2的32次方-1 long 8字节 ...
  • 一、编程规约 (一) 命名规约 6.【强制】抽象类命名使用 Abstract 或 ... 测试类命名以它要测试的类的名称开始,以 Test 结尾。 7.【强制】中括号是数组类型的一部分,数组定义如下: String[] args;  反例:使用 ...
  • 标识符 java中对类,变量,方法命名时使用的字符序列(程序中可以自己命名的字符序列) 1.强制规则 26个英文字母(大小写);...Java中的名称命名规范: 包名:多单词组成时所有字母都小写:xxxyyyzzz 类名、接
  • 记得刚入手在写跨平台代码的时候,有一些操作是与平台有关的,这个时候...常见操作系统系列:1、windows 家族3、Uinx 系列4、Mac (类Uinx)怎样使用java编码来获取操作系统名称呢?直接上代码吧,下面的GetOsName类可...
  • 大家可能会注意到,网页中类似:那么这是什么呢?这是Data URI scheme。Data URI scheme是在RFC2397中定义的,目的是将一些小的...在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,bas...
  • 它向 Java 中加入了连接点(Join Point)这个新概念,其实它也只是现存的一个 Java概念的名称而已。它向 Java 语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-type declaration)和方面(Aspect...
  • 测试类命名以它要测试的类的名称开始,以Test结尾。 2、中括号是数组类型的一部分,数组定义如下:String[] args; 3、POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。 4、包名统一...
  • 数据名称  数据所占字节大小  取值范围   常用情况 基本数据类型 byte 8bits -128~127 数据传输,IO流,编码转换 short 16bits -32768~32767   int 32bits ...
  • 6JAVA的数据类型转换

    2013-11-18 21:37:56
    自动类型转换 不需要程序员编码处理,直接用就能够自动转换。 取值范围小的变量或值,可以自动转换为取值范围大的变量。...即低位可以自动向高位转换。...强制类型转换 ...类型 名称 = (类型)值;
  • 3. Java 语法基础 类型 条件语句 数组 ...•任何变量名称都是以任意长度的Unicode编码的字符组成的,首字符必须是字母、美元符或者是下划线,后面跟字母、数字、美元符或下划线  –通常来说,我们建议类的名
  • //设置响应的内容类型 response.setContentType("application/octet-stream"); //设置文件的名称和格式 response.addHeader("Content-Disposition","attachment;filename=" + genAttachmentFileName( "资产盘点数据...
  • -变量包含三个部分:数据类型名称、字面值(数据)。-变量是内存中存储数据的最基本的单元。*数据类型的作用?-不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。-数据类型是指导程序在运行阶段...
  • 参考:《Java核心技术 卷II:高级特性》第12章 本地...为了访问实例域和调用Java编程语言中定义的方法,必须学习“编入”数据类型名称和方法签名的规则(方法签名描述了参数和该方法返回值的类型)。 编码方案如下:
  • 目录 编译运行基础 注释 关键字 标识符 ...// public class后面代表定义一个类的名称,类是Java当中所有源代码的基本组织单位。 public class HelloWorld { // 第二行的内容是万年不变的固定写...
  • 常用的编码方式有Unicode、ASCII、UTF-8、GB2312、ISO-8899-1等。采用不同的编码方式,同样的n位二进制“数字”组合代表的“字符”也会不一样。具体采用什么样的编码方式,对“字符”怎样... 名称 长度 备注 byte 字
  • JAVA_API1.6文档(中文)

    万次下载 热门讨论 2010-04-12 13:31:34
    java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象...
  • JAVA理论

    2018-06-09 22:55:00
    Java程序设计理论提纲 技能名称 1.​ 简述JDK是什么?Java源代码的文件扩展名是什么?编译后,文件扩展名是什么?...3.​ 简要回答Java编码规范? 4.​ Java常用的数据类型有哪些?举例说明。...
  • Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。 标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 ...
  • 在项目中使用需需要从sfs文件服务器上... // 设置字符编码 response.setCharacterEncoding(result.getData().getFileCharset()); // 设置文件类型 response.setContentType("multipart/form-data"); ...
  • 标题什么是Java编程的关键字关键字和保留字的区别JAVA语法——标识符什么是变量?什么是类?Abstract 抽象的 理解Java中的...Java编码规范 什么是Java编程的关键字 关键字是电脑语言里事先定义的,有特别意义的标识
  • 4.数据表的相关操作 ... 字段名称 字段类型 [完整性约束条件], 字段名称 字段类型 [完整性约束条件], ... )ENGINE=存储引擎 CHARSET=编码方式; UNSIGNED 无符号,没有负数,从0开始 ZEROFI...
  •  计算机高级语言类型主要有编译器和解释型两种,JAVA是两种类型的集合,在JAVA中处理代码的过程如下:  Hello.java——编译——Hello.class——解释——以二进制形式输入计算机,在以相应的编码方式显示在屏幕上。...
  • //\src\main\java\.../*** 类型 bean*@authorliuxl* 2017年8月26日 上午10:24:36*/public classType {/**类型名称*/privateString name;/**编码名称*/privateString encoding;/**需合并文件的源路劲*/p...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 427
精华内容 170
关键字:

java编码类型名称

java 订阅