param

How to permit hash with * key => values?

一个人想着一个人 提交于 2020-04-10 06:21:07
问题 I want to create an object with strong params that can accept dynamic hash keys. This is my code, Quiz.create(quiz_params) def quiz_params params.require(:quiz).permit(:user_id, :percent, :grade, questions: {}) end data that gets passed in would look something like this. // the keys that get passed into question is always different quiz: { user_id: 1, percent: 80, grade: "B", questions: { "12": "24", "1": "12", "4": "3", "5": "22" } } Currently however, when I try to create a Quiz, the

java注释详解--javadoc注释

这一生的挚爱 提交于 2020-04-07 13:05:13
一. Java注释分类 // 注释一行 /* ...... */ 注释若干行 /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /** * ......... * ......... */ javadoc -d 文档存放目录 -author -version 源文件名.java 这条命令编译一个名为 “源文件名.java”的 java 源文件,并将生成的文档存放在“文档存放目录”指定的目录下,生成的文档中 index.html 就是文档的首页。-author 和 -version 两个选项可以省略。 二. 文档注释的格式 1. 文档和文档注释的格式化 生成的文档是 HTML 格式,而这些 HTML 格式的标识符并不是 javadoc 加的,而是我们在写注释的时候写上去的。 比如,需要换行时,不是敲入一个回车符,而是写入 <br>,如果要分段,就应该在段前写入 <p>。 文档注释的正文并不是直接复制到输出文件 (文档的 HTML 文件),而是读取每一行后,删掉前导的 * 号及 * 号以前的空格,再输入到文档的。如 /** * This is first line. <br> ***** This is second line. <br> This is third line. */ 2. 文档注释的三部分 先举例如下 /** *

JavaBean在JSP中的应用(3个JSP标签)

六月ゝ 毕业季﹏ 提交于 2020-04-06 20:04:44
一、在JSP中如何使用JavaBean 为了能在JSP页面中集成JavaBean组件和支持JavaBean的功能,JSP规范专门定义了三个JSP标签:<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>,它们分别用于创建和查找JavaBean的实例对象,设置JavaBean对象的属性,读取JavaBean对象的属性。 对于JSP页面来说, 只要一个类具有一个公共的、无参数的构造方法,就可以把这个类当做JavaBean来使用 ,如果类中有不接受任何参数的getter方法或只接受一个参数的setter方法,就可以把前缀get或set后面的部分当着一个属性名来引用。例如,JDK自带的java.util.Date类具有一个公共的、无参数的构造方法,其中还包含一个定义的方法: public void setTime(long time) 因此,在JSP页面可以把该类当做一个JavaBean来看待,且认为该JavaBean包含一个time的属性。 JSP页面按照调用JavaBean的方式对Date类进行调用 <jsp:useBean id="currentDate" class="java.util.Date" /> <jsp:setProperty name="currentDate" property="time" value="1234567

MyBatis Plus自定义SQL使用条件构造器QueryWrapper

淺唱寂寞╮ 提交于 2020-04-05 17:07:21
1.注解的方式: @Select("select * from user_collection uc left join post p on uc.post_id = p.id ${ew.customSqlSegment}") IPage<Post> selectPosts(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper); 使用注解方式只需添加 ${ew.customSqlSegment}和@Param(Constants.WRAPPER)即可! 2.xml方式 IPage<Post> selectPosts(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper); <!--xml--> <select id="selectPosts" resultType="com.example.entity.Post"> select * from user_collection uc left join post p on uc.post_id = p.id ${ew.customSqlSegment} </select> 动态查找: @Select("select ${ew.SqlSelect} from ${tableName} ${ew

OpenGL纹理映射总结

纵然是瞬间 提交于 2020-04-04 19:19:27
1.纹理对象: 使用纹理对象来存储纹理数据的步骤: 1) 生成纹理对象名称 2) 将纹理对象绑定到纹理数据(包括图像数据数组和纹理属性), 即创建纹理对象. 3) 如果OpenGL实现高性能纹理工作集, 应检查是否有足够的空间来存储所有的纹理对象. 如没有足够空间, 应设置每个纹理对象的优先级, 以确保最常用的纹理留在工作集中 4) 绑定和重新绑定纹理对象, 以便可以将其中的纹理映射到物体上. 2.生成纹理对象名称: void glGenTextures(GLsizei n, GLint* textureNames); 功能: 通过数组textureNames返回n个未用的纹理对象名, 返回的名称不必是相邻的整数. GLboolean glIsTexture(GLint textureName); 功能: 如textureName是已被绑定的纹理对象名, 且没有被删除, 则返回GL_TRUE, 如textureName为0, 或非0, 但不是已有纹理对象的名称, 返回GL_FALSE。 注:若glGenTextures()返回, 但未使用glBindTextures()绑定, 仍返回GL_FALSE 3.创建和使用纹理对象: void glBindTexture(GLenum target, GLuint textureName); 功能: 完成下面几项工作. 1)

获取格式字符串第idx个值及实例

混江龙づ霸主 提交于 2020-04-04 01:49:58
--根据索引idx值获取格式串中第idx个值 如数据'11,12,13,14,15,16' 方法:格式串+分隔符;@str='11,12,13,14,15,16'+',' select dbo.GetStrByindex('11,12,13,14,15,16,', ',', 3); -- 13 create function [dbo].[GetStrByindex](@str varchar(8000),@split varchar(10),@idx int) --@str:待查找字符串 returns varchar(100)   as begin declare @inx int set @inx=0 WHILE(CHARINDEX(@split,@str)<>0) begin   SET @INX=@INX+1   if @inx=@idx   --第一个@split之前的字符串   return SUBSTRING(@str,1,CHARINDEX(@split,@str)-1)   --将第一个@split后面的字符串重新赋给@str   SET @str=STUFF(@str,1,CHARINDEX(@split,@str),'') end return ''; end GO 此过程可能在数据维护时,偶尔会遇到。 /* 参数1:@Type 整型 0:新增1:修改2

python进程——生产者消费者

烂漫一生 提交于 2020-04-03 18:39:12
生产者消费者模型介绍 为什么要使用生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。 同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入了生产者和消费者模式。 什么是生产者和消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列, 消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的 生产者消费者模型实现 from multiprocessing import Process,Queue import time def producer(q,name,food): """ 生产者 :param q: 队列 :param name: :param food: :return: """ for i in range(3): res = '%s,%s' %(food,i) time.sleep(1) # 生产food得有个过程,就先让睡一会 print('生产者[%s]

RedidsTemplate

家住魔仙堡 提交于 2020-04-02 18:34:31
@Component public class RedisService { @Autowired private RedisTemplate<String, String> redisTemplate; /** * 默认过期时长,单位:秒 */ public static final long DEFAULT_EXPIRE = 60 * 60 * 24; /** * 不设置过期时长 */ public static final long NOT_EXPIRE = -1; public boolean existsKey(String key) { return redisTemplate.hasKey(key); } /** * 重名名key,如果newKey已经存在,则newKey的原值被覆盖 * * @param oldKey * @param newKey */ public void renameKey(String oldKey, String newKey) { redisTemplate.rename(oldKey, newKey); } /** * newKey不存在时才重命名 * * @param oldKey * @param newKey * @return 修改成功返回true */ public boolean renameKeyNotExist

php学习第二章:字符串处理函数(二)字符串查找、替换、截取等

两盒软妹~` 提交于 2020-03-31 21:45:04
1、字符串比较   (1)strcmp($str1,$str2) //比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的字符大于前面的字符)     1 /** 2 * strcmp($str1, $str2) 比较两个字符串是否相等 3 * @param string $str1 第一个字符串 4 * @param string $str2 第二个字符串 5 */ 6 $str1 = 'hell'; 7 $str2 = 'ello'; 8 var_dump(strcmp($str1, $str2)); //输出1,因为两个字符串的首字母不同,比较首字母,h的位置在e后面,所以h比e大   (2)strncmp($str1, $str2, $length); //比较两个字符串截取指定长度的子串 1 /** 2 * strncmp($str, $str2, $len) 比较两个字符串从开头到指定长度的子串 3 * @param string $str1 第一个字符串 4 * @param string $str2 第二个字符串 5 * @param int $len 要截取的开头 6 */ 7 $str3 = 'my pleasure!'; 8

c# 海康威视 Winform播放mp4视频

南笙酒味 提交于 2020-03-31 06:30:13
最近有个视频播放系统,需要对海康的mp4格式视频进行播放,由于普通播放器无法对该视频进行播放原因是海康对视频进行了自己的编码,需要相应的解码才可以对视频进行播放。 下面是对海康威视视频播放的c#代码(需要从海康官网下载播放库)。 一,这个是核心库通过c#对海康提供的动态链接库dll方法的封装。 1 public class PlayCtrlSDK 2 { 3 #region 解码库 4 [SecurityCritical] 5 [DllImport("PlayCtrl.dll")] 6 public static extern uint PlayM4_GetLastError(int nPort); 7 /// <summary> 8 /// 获取文件当前播放位置(百分比)。 9 /// </summary> 10 /// <param name="nPort"></param> 11 /// <returns></returns> 12 [SecurityCritical] 13 [DllImport("PlayCtrl.dll")] 14 public static extern float PlayM4_GetPlayPos(int nPort); 15 /// <summary> 16 ///设置文件当前播放位置(百分比)。 17 /// </summary> 18 ///