首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序猿的大杂烩

    表格设计2

    使用自表一对多设计这个表格,因为如果使用多个表格的话,需要增删的情况下就需要改动表格的结构了。所以使用自表一对多的方式,自己这张表的主键对应着自己这张表的外建。 代码示例: ? 例题2: ? 表格设计: 在sqlyog里我们可以通过此工具设计表格时建立表格之间的映射关系: ? 点击进入此界面后右键选择Add Tables...或者Create Table可以添加表格和创建表格: ? 一对一: 表格一对一设计方式有两种,一种是主键对应着关系表的主键,另一种方式是主键对应着关系表设置了唯一索引的外建。 一对多: 一对多关系的表格设计也有两种方式,一种是自表的一对多,第二种是主键对应关系表的外键。 自表一对多: ? 主键对应关系表的外键一对多: ? 多对多: 多对多的表格设计方式是使用一张关系维护表来维护其他表之间的映射关系。 ?

    73520发布于 2020-09-23
  • 来自专栏huofo's blog

    设计模式(07)——设计原则(2

    该原则是作为一个指导思想来做的,其作用就是防止过度设计,但需要注意的是其是让你不做,但需要有可能要做的意识,提前留好拓展点,这样如果要做的时候,也可以快速跟上。 ** 后续会有一篇文章,来专门讲解如何在软件设计中,防止过度设计,但对对应该优化,该留好优化点如何实现。 这样的设计可能会导致以下问题, 当一个不知情的人看到这两段代码完成的任务是一样的,但采用的解决方式却是不一样的,则会想其的设计深意,以及不知道该用哪一个? true; } return validContainsA(temp); } 上述代码因为举的例子比较简单,应该能很简单的看出有一段代码被执行了两次,那么这样的设计违反了 迪米特原则 定义 迪米特原则是用来指导设计高内聚、低耦合代码的原则,因此我们先看一下什么是高内聚、低耦合。

    41620编辑于 2022-03-17
  • 来自专栏雪胖纸的玩蛇日常

    2.Model设计

    Model设计 1.在settings.py中配置: AUTH_USER_MODEL='users.UserProfile' 2.在apps/users/models.py中: from django.db '女'), (3, '不详')), default=3, verbose_name='性别', help_text='1:男,2:女,3:不详 '非农业户口')), verbose_name='户籍性质', default=2, help_text='1:农业户口,2:非农业户口 初中,3:高中,4:中专,5:大专,6:本科,7:硕士,8:博士') hunyin=models.IntegerField(choices=((1, '未婚'), (2, '已婚'), (3, '离异'),(4,'丧偶')), default=2, verbose_name='婚姻状况', help_text='1:未婚,2:已婚,3

    49420发布于 2020-06-10
  • 来自专栏∑小熊猫的博客

    JAVA 设计模式系列(2) —— 设计原则

    Java 设计模式的相关原则 一、单一职责原则 单一职责原则: 应该有且仅有一个原则引起类的变更 单一职责可以简答的理解为,一个类或者对象,承担的只能应该尽可能单一。 单一职责用“职责”和“变化原因”来衡量接口或类设计得是否优良。但是“职责”的确定往往是无法度量的。 PS: 子类出现的地方,父类未必可以出现 在类中调用其他类时,务必使用父类或接口,如果不能使用,则说明类的设计已经违背了里氏替换原则(Liskov Substitution Principle,LSP 接口隔离原则需要保证的几个特性: 接口尽量要小: (在保证单一职责的情况小,尽量保证接口不过于臃肿) 接口要高内聚:(尽量减少与外界的交互,少公有,多私有) 定制服务: (为特定的服务对象提供其所需的方法) 接口设计是有限度的

    42610发布于 2020-12-31
  • 来自专栏一Li小麦

    组件设计基础(2

    组件生命周期 早期的react设计了许多的生命周期钩子。 shouldComponentUpdate(根据true or false决定是否更新)->componentWillUpdate(即将feiqis)->render->componentDidUpdate 2. 中间那一层父组件根本用不上这个prop,但是依然需要支持这个prop,扮演好搬运工的角色,只因为子组件用得上,这明显违反了低耦合的设计要求。在flux和redux中我们会探讨如何解决这样的困局。 组件设计方法论 一些指导性原则: •组件尽可能通过props通信。不用context •组件属性需要有默认值,做好类型检查 •组件属性尽可能使用简单值。避免使用对象。

    80250发布于 2019-12-04
  • 来自专栏雪胖纸的玩蛇日常

    2.Models设计

    1.Models设计: 1.重构用户表: 1.在users/models.py中: from django.db import models from django.contrib.auth.models 用户' verbose_name_plural = verbose_name def __str__(self): return self.username 2. django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applie  2. 1.将DjangoUeditor包放到extra_apps目录下 2.在settings.py中注册DjangoUeditor ?    /', include('good.urls',namespace='goods')), path('ueditor/',include('DjangoUeditor.urls' )) ] 2.

    57320发布于 2020-05-18
  • 来自专栏X#(XSharp)

    设计模式:建造者设计模式(Builder)(2)

    关于该设计模式在 VFP 中的应用示例,我考虑了很久。最终决定以主程序的伪代码来做。它至少有两个作用: 1. 通过“主程序”这个过程化代码的重灾区的改造,体会 OOP 的设计思想; 2. *** 启动主UI *** Procedure StartUI() With _Screen .Visible = .T. .WindowState = 2 “它也许是创建型设计模式中最灵活最复杂的设计模式”

    21210编辑于 2025-04-19
  • 来自专栏爱敲代码的猫

    java设计模式(2)-单例设计模式

    上一篇推文写了工厂方法模式,包括简单工厂模式、多工厂模式、静态工厂模式、抽象工厂模式,这篇推文记录一下单例设计模式 单例设计模式 在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。 static void main (String[] args){ SingleTon s1 = SingleTon.getInstance(); SingleTon s2 = SingleTon.getInstance(); System.out.println(s1 == s2); //true } } 在静态方法创建实例并直接调用如果不是线程同步 static void main (String[] args){ SingleTon s1 = SingleTon.getInstance(); SingleTon s2 = SingleTon.getInstance(); System.out.println(s1 == s2); //true } } 懒汉式(线程安全) 优点:在多线程情形下,

    54240发布于 2019-10-17
  • 来自专栏太阳影的学习记录

    LeetCode——142 设计链表2

    思路 简单说下思路,现在已经知道的条件: 快指针移动速度为慢指针两倍; 快指针要比慢指针多移动一圈; 可得: 假设 L 为链表入口到环入口的距离, x 为环入口到相遇点的距离, C 为环的周长,可得: 2

    28710发布于 2021-10-15
  • 来自专栏Vincent-yuan

    RocketMQ学习2-设计

    四.设计(design) 1 消息存储 消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从下面三方面来分别展开叙述。 {fileName},文件名fileName是以创建时的时间戳命名的,固定的单个IndexFile文件大小约为400M, 一个IndexFile可以保存 2000W个索引,IndexFile的底层存储设计为在文件系统中实现 2.1 Remoting通信类结构 2.2 协议设计与编解码 在Client和Server之间完成一次消息发送时,需要对发送的消息进行一个协议约定,因此就有必要自定义RocketMQ的消息协议。 2.4 Reactor多线程设计 RocketMQ的RPC通信采用Netty组件作为底层通信库,同样也遵循了Reactor多线程模型,同时又在这之上做了一些扩展和优化。 消息消费队列在同一消费组不同消费者之间的负载均衡,其核心设计理念是在一个消息消费队列在同一时间只允许被同一消费组内的一个消费者消费,一个消息消费者能同时消费多个消息队列。

    1.1K20发布于 2021-11-08
  • 来自专栏用户5744311的专栏

    2、leveldb设计原理--LSM

    概念 LSM(Log-Structured Merge Tree) 原理 特点 把随机写转化成顺序写,写入速度快; 读数据可能需多次磁盘IO; 数据操作流程 写数据 追加写WAL日志; 更新内存中的MemTable结构; 读数据 尝试从MemTable中查询数据,如找到即返回;未找到则到下一层中去查找; 尝试从InmemTable中查找数据; 尝试从level0层的SSTable文件中查找数据; 使用二分法从levelN层的SSTable文件中查询数据; 如都未查找到数据,则返回数据不存在; 数据合并(c

    60920发布于 2021-03-21
  • 来自专栏yuyy.info技术专栏

    20180507设计性实验2

    // 20180507设计性实验2.cpp : 定义控制台应用程序的入口点。 s = 0; printf("请输入n\n"); //scanf("%lf", &n); cin >> n; for (int i = n; i > 0; i--) { if (i % 2

    22100编辑于 2022-06-28
  • 来自专栏Material Design组件

    页面信息设计思考2

    本来没有想到会有2的,结果最近的活动让我有了一些新的思考,就赶快梳理一下~ 页面思考信息1主要梳理的是面对一堆信息时如何通过不断的划分后优雅地展示,然而如果信息量本来就超出了用户能够理解的范围该怎么办? 在这个活动中奖励有三种 1、瓜分大额奖金 瓜分条件: ·步数达到500步 ·全市/全区步数达到5000000步 影响因素: ·步数越多瓜分金额越高 2、政府背书的证书(类似于蚂蚁森林种树) 获得条件: 2、是否能进行删减 因为瓜分奖金是活动主体,但是如果仅有奖金瓜分就显得有些功利,无法突出“绿色出行”概念,所以看看能不能删掉证书/公益。 4、制作原型 总结 作为交互设计师,接到需求时其实是可以有所控制的,包括信息量、信息之间的关联程度、用户的理解成本等。

    82720发布于 2019-03-06
  • 来自专栏乐享123

    Javascript设计模式 - 笔记2

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var Book = function(isbn, title, author) { if (isbn === 语法修饰增强型 用setattr,getattr等赋值取值方法及命名规范区别私有成员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 闭包实现私有成员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 实现静态方法和属性 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

    49350发布于 2018-06-04
  • 来自专栏技术客栈

    Java设计模式(2)工厂模式

    前言 在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。 本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(1)单例模式》文章中,我们介绍了单例模式。 工厂模式 工厂模式是一种创建型设计模式,其主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦。 这样的设计更符合面向对象的原则,使得系统更易于扩展和维护。 manufactureCarFactory.createLincolnCar().manufacture(); manufactureCarFactory.createBenzCar().manufacture(); 输出: 结尾 选择使用哪种工厂模式取决于具体的需求和设计情况

    27310编辑于 2024-04-18
  • 来自专栏瓜大三哥

    VS2详细设计(二)

    紧接上次的VS2设计(一),今天学习模块设计和结果分析 3. 模块设计 3.1 模块检测 3.1.1 模块功能 对输入的视频源进行帧频检测(包括小数帧频),分辨率检测。 由于DDR的一页为2KB,而1080P的视频一行最少也需要7.5KB,也就是说至少需要4页来保存。 wr_addr的最低位10bits为0,表示一页的存储容量,每存储一行,将wr_addrcnt加一,然后左移2位就可以实现递增为4页地址的目的,计算公式为wr_addr={(wr_addrcnt<<2) 2)app_cmd:操作命令, 3'b000表示写入,3'b001表示读出(注意:要和操作地址同时出现才有效)。 图4-1 检测模块 不同分辨率不同帧频的视频源输出结果如图4-2(a)(b)(c)所示 图4-2 (a)800x600@75Hz (b)1280x720@60Hz (c)1920x1080

    85830发布于 2018-07-30
  • 来自专栏小白晋级大师

    设计模式2:单例模式

    用new创建对象时,其实是三步操作,不是原子操作:1.在堆内存申请空间2.调用构造方法,初始化对象3.将引用变量指向堆内存空间 为提高性能,处理器可能对代码执行顺序重新排序,如果运行顺序为1 3 2, static EagerSingleton getInstance() { return instance; }}线程安全,没加锁,效率高缺点是类加载就初始化,浪费内存空间有关创建型设计模式的内容就更新到这了 ,下一篇更新结构型设计模式的内容

    16700编辑于 2025-02-17
  • 来自专栏漫漫架构路

    MyBatis设计思想(2)——日志模块

    MyBatis设计思想(2)——日志模块 一. 痛点分析 作为一个成熟的中间件,日志功能是必不可少的。那么,MyBatis是要自己实现日志功能,还是集成第三方的日志呢? () { setImplementation(org.apache.ibatis.logging.log4j2.Log4j2Impl.class); } public static synchronized + 2]; Arrays.fill(buffer, '='); buffer[queryStack * 2 + 1] = ' '; if (isInput) { buffer 打印PreparedStatement中的动态参数信息 * 2. 拦截setXXX()方法,记录封装的参数 * 3. 通过事务获取JDBC Connection Connection connection = transaction.getConnection(); //2.

    65630发布于 2020-09-03
  • 来自专栏瓜大三哥

    VS2详细设计(一)

    VS2涉及四个方面的内容,今天只看前两个方面,即:原理内容和系统结构 原理内容 1.1 硬件环境 lVS2/VS3多画面拼接器 l核心板的FPGA芯片为xc7k160tffg676-2 l底板为 VPR400D 1.2 软件环境 Xilinx: Vivado 2016.3 1.3 项目内容 输入端接入计算机的DVI数据源,输出端可以根据用户设定的不同分辨率和帧频输出相应的视频(本设计可以对

    65750发布于 2018-07-30
  • 来自专栏yl 成长笔记

    设计模式(2):观察者模式-2 (委托、事件)

    举个例子: 1 // 声明委托 2 public delegate double MyDelegate(string s); 3 // 创建方法 4 public double GetStart(string testString); 5 // 实例化委托, 调用的方法需与委托有相同的参数、返回值 6 MyDelegate delegate = new MyDelegate(GetStart); 2、事件( 事件声明: 1 // 先声明事件的委托类型, 事件在生成时会调用委托 2 public delegate void MyDelegateEventHandler(object sender, EventArgs e); 3 public event MyDelegateEventHandler MyEvent; 二、事件在观察者模式中的应用 举一个《Head First 设计模式》 上的经典应用,附件上有完整的代码 1、创建发布者类 1 // 发布者类 2 public class WeatherData 3 { 4 // 声明事件 5 public

    66940发布于 2018-09-12
领券