param

为云·寻找黑马程序员#【代码重构之路】如何“消除”if/else【华为云技术分享】

感情迁移 提交于 2019-12-10 15:31:39
1. 背景 if/else是高级编程语言中最基础的功能,虽然 if/else 是必须的,但滥用 if/else,特别是各种大量的if/else嵌套,会对代码的可读性、可维护性造成很大伤害,对于阅读代码的人来说就是一场灾难。 本系列博客的目的不是消除if/else,而是如何“写好”if/else 2. 方法 根据if/else的使用方式和场景,大概有如下解决方法 多态 表驱动 职责链模式 卫语句 Optional 调整判断逻辑,抽取方法,逻辑优化 本篇博客我介绍的是表驱动,后续博客会介绍其他案例 首先来看下最简单的if…else if…场景,也是经常可以在代码中看到的案例 3. 案例 有如下业务代码demo,根据type值,判断然后返回设备的名称 1 //逻辑表达模式固定的 if…else 2 public String getDeviceName(int type){ 3 if (type == 1) { 4 return "ONT"; 5 } else if (type == 2) { 6 return "OLT"; 7 } else if (type == 3) { 8 return "ONU"; 9 } else if (type == 4) { 10 return "MXU"; 11 } 12 return null; 13 } 随着时间的积累和项目的迭代

Java实现图片缩放(等比例)

偶尔善良 提交于 2019-12-10 13:51:44
直接上代码: package com.yx.test.image; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; /** * ImageUtil * * @author yx * @date 2019/12/10 9:22 */ public class ImageUtil { public static void main(String[] args) { reSize(new File("F:\\temp\\1\\qrcode_258_258.jpg"), new File("F:\\temp\\2\\320_320

Change a Value of the columnModel JQgrid after draw

好久不见. 提交于 2019-12-10 11:54:00
问题 when i draw the grid i have some column like this.. name: 'codigo', index: 'codigo', width: 50, align: 'center', editable: true } But after i want to do a query and then set the editable option, for example to false, is this possible? Thanks. 回答1: You can get reference to internal colModel using getGridParam : var colModel = $("#grid").jqGrid("getGridParam", "colModel"); Now you can enumerate elements in colModel array and find the element which has property name with the value "codigo" .

Facelets 标签参考 2

社会主义新天地 提交于 2019-12-10 05:49:34
Facelets 标签参考 2 lxm翻译自《Facelets Essentials: Guide to JavaServer™ Faces View Definition Framework 》 不当之处欢迎指正。 <ui:debug/> 这标签是开发程序时很有用的工具。在 launched 的时候通过按组合健 Ctrl + Shift + < 热键 > ( 默认是 D) ,将显示一个弹出窗口,在里面显示组件树和局部变量,表格 1-6 列出它的属性。 表格 1-6: <ui:component> 标签属性 属性名称 必需 描述 hotkey 否 热键, 默认是 D 。 rendered 否 boolean 值,指定是否显示 . 通常,可以在页面的末尾找到 debug 标签 , 但它可以定义在任何位置,可以定义 如下 : <ui:debug hotkey="g" rendered="#{initParam[‘apress.DEBUG_MODE’]}"/> 这样 , 按 Ctrl + Shift + G 就可以弹出调试窗口,在 initParam[‘apress.DEBUG_MODE’] 中指定是否显示。 <ui:param/> <ui:param/> 用来在 Facelets 之间用名字变量传递对象。 下列表格列出它的属性。 表格 : <ui:param> 标签属性 属性名称 必需

pytest--fixture参数化的实现方式和执行顺序

喜你入骨 提交于 2019-12-10 04:02:28
之前看到fixture函数可以通过添加,params参数来实现参数化,后续看到了 悠悠 的博客 ,可以通过 @pytest.mark.parametrize 来实现,现在做一个总结 实现方式一 通过params函数实现fixture的参数化 import pytest @pytest.fixture(params=[1,2,3]) def fixture_param(request): request.param print("\033[31;1m我是fixture_param,这是第%s次打印\033[0m"%request.param) return request.param def test_fixture_param(fixture_param): print("我是test_fixture_param函数") # print("我fixture_param现在是:%s"%fixture_param) if __name__ == '__main__': pytest.main(["-s",'test_fixture_params.py']) 结果 输出的结果是这样的 大家都知道,使用fixture函数有两种方法 第一种是:直接将fixture函数的名字当做参数传入 另一种是:使用装饰器@pytest.mark.usefixtures("fixture函数名")

ES6 判断json对象中所有key、value是否全非空

本秂侑毒 提交于 2019-12-10 01:26:33
/** * 判断param是否为空或空字符串 * @param {} param */ const isNullOrEmpty = param => { if ( param == null || param === undefined || param === '' ) { return true } return false } /** * 遍历param,判断是否为空。若全非空返回true * @param {*} param json对象 * @param {*} except 数组:不判断此数组中的元素是否为空 */ const traversalEmptyValidate = ( param , except ) => { if ( ! isNullOrEmpty ( param ) ) { // 获取键名数组 let keys = Object . keys ( param ) // 是否非空的标识 let flag = true if ( ! isNullOrEmpty ( except ) && except . length > 0 ) { // except非空时执行 keys . forEach ( el => { if ( isNullOrEmpty ( param [ el ] ) && ! except . find ( ( value , index

C#开发中常用的加密解密方法

假如想象 提交于 2019-12-09 22:56:37
转载自: https://www.cnblogs.com/bj981/p/11203711.html C#开发中常用的加密解密方法 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法: 常见的加密方式分为可逆和不可逆两种方式 可逆:RSA,AES,DES等 不可逆:常见的MD5,SHAD等 一、MD5消息摘要算法 我想这是大家都常听过的算法,可能也用的比较多。那么什么是MD5算法呢?MD5全称是message-digest algorithm 5,简单的说就是 单向的加密, 也就是说 无法根据密文推导出明文。 MD5主要用途: 1、对一段信息生成信息摘要,该摘要对该信息具有唯一性,可以作为数字签名 2、用于验证文件的有效性(是否有丢失或损坏的数据) 3、对用户密码的加密 4、在哈希函数中计算散列值 从上边的主要用途中我们看到,由于算法的某些不可逆特征,在加密应用上有较好的安全性。通过使用MD5加密算法,我们输入一个任意长度的字节串,都会生成一个128位的整数。所以根据这一点MD5被广泛的用作密码加密。下面我就像大家演示一下怎样进行密码加密。 首先需要引入命名空间,先看一个比较简单的MD5加密的例子: using System.Security; using System.Security.Cryptography; public

nested exception is org.apache.ibatis.binding.BindingException

穿精又带淫゛_ 提交于 2019-12-09 22:21:43
mybatis出错 xml文件: <update id="decreaseStock"> update item_stock set stock = stock - #{amount,jdbcType=INTEGER} where item_id = #{itemId,jdbcType=INTEGER} and stock >= #{amount,jdbcType=INTEGER} </update> DAO接口: int decreaseStock(@Param("itemId")Integer itemId, @Param("amont")Integer amount); 问题出现在没见标红的注解。 思考:为什么有的有的方法不用加 @Param 注解?举例:int updateByPrimaryKeySelective(ItemStockDO record); 1、不使用@Param注解时,参数只能有一个,当参数超过两个时,要用@Param 转: 实例一 @Param注解单一属性 dao层示例 Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password); xml映射对应示例 <select id=" selectUser" resultMap=

微信小程序调用微信支付接口

空扰寡人 提交于 2019-12-09 18:59:43
本文链接:https://blog.csdn.net/u012667477/article/details/80940578 前言:应项目要求,需要使用微信小程序做支付,写完后告知手续费太高方案不予通过(宝宝心里苦,但宝宝不说)。此次开发在因站在巨人的肩膀上顺利完成。 微信支付文档传送门:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3 1.开发工具: Eclipse+Tomcat+微信web开发工具 2.开发环境: java+maven 3.开发前准备: 3.1 所需材料 小程序的appid,APPsecret,支付商户号(mch_id),商户密钥(key),付款用户的openid。 申请接入微信商户地址:https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_miniapp.shtml 3.2 开发模式 本次开发采用的开发模式是:普通模式,适用于有自己开发团队或外包开发商的直连商户收款。开发者申请自己的appid和mch_id,两者需具备绑定关系,以此来使用微信支付提供的开放接口,对用户提供服务。 4 开发 4.1 小程序端 wx.request({ url: address + 'wxPay', data: {

布隆过滤器

三世轮回 提交于 2019-12-09 18:35:03
from .defaults import BLOOMFILTER_BIT, BLOOMFILTER_HASH_NUMBERclass HashMap(object): def __init__(self, m, seed): self.m = m self.seed = seed def hash(self, value): """ Hash Algorithm :param value: Value :return: Hash Value """ ret = 0 for i in range(len(value)): ret += self.seed * ret + ord(value[i]) return (self.m - 1) & retclass BloomFilter(object): def __init__(self, server, key, bit=BLOOMFILTER_BIT, hash_number=BLOOMFILTER_HASH_NUMBER): """ Initialize BloomFilter :param server: Redis Server :param key: BloomFilter Key :param bit: m = 2 ^ bit :param hash_number: the number of hash function