- 博客(17)
- 收藏
- 关注
转载 组合数学——不相邻的组合数
一、从n个球中选出r个球,要求这r个球互不相邻,有多少种取法?分析:①当n<2r-1时,取法为0种例如4个球里取3个互不相邻的球,找不到这样的组合②n≥2r-1时,取法为C(n-r+1,r)种这里考虑逆向思维。假设我们先从n-r+1个球中任意取r个球,组合数为C(n-r+1,r),然后再另外拿r-1个球插到那r个球的r-1个空位中,这样使得我们原本取出的r个球都互不相邻,并且最后总球数为n个。不难验证逆向思维得出的情况与正常考虑的情况是一一对应的,故我们可以得到上面的结论。(临界情况:n=
2021-10-07 21:19:34
1655
1
原创 原型模式.
原型模式的原理与应用如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。原型模式的实现方式:深拷贝和浅拷贝浅拷贝和深拷贝的区别在于:浅拷贝只会复制图中的索引(散列表),不会复制数据(SearchWord 对象)本身。相反,深拷贝不仅仅会复制索引,还会复
2021-09-15 23:52:12
187
原创 建造者模式
为什么需要建造者模式?如果存在下面情况中的任意一种,我们就要考虑使用建造者模式了。我们把类的必填属性放到构造函数中,强制创建对象的时候就设置。如果必填的属性有很多,把这些必填属性都放到构造函数中设置,那构造函数就又会出现参数列表很长的问题。如果我们把必填属性通过set() 方法设置,那校验这些必填属性是否已经填写的逻辑就无处安放了。如果类的属性之间有一定的依赖关系或者约束条件,我们继续使用构造函数配合 set()方法的设计思路,那这些依赖关系或约束条件的校验逻辑就无处安放了。如果我们希望创建不可
2021-09-15 23:38:22
185
原创 工厂模式(下)
工厂模式和 DI 容器有何区别?1.DI 容器底层最基本的设计思路就是基于工厂模式的。DI 容器相当于一个大的工厂类,负责在程序启动的时候,根据配置(要创建哪些类对象,每个类对象的创建需要依赖哪 些其他类对象)事先创建好对象。当应用程序需要使用某个类对象的时候,直接从容器中获取即可。2.工厂模式中,一个工厂类只负责某个类对象或者某一组相关类对象(继承自同一抽 象类或者接口的子类)的创建,而 DI 容器负责的是整个应用中所有类对象的创建。3.DI 容器负责的事情要比单纯的工厂模式要多。DI 容器的核心
2021-09-07 23:44:45
217
原创 工厂模式(上)
简单工厂(Simple Factory)public class RuleConfigSource { public RuleConfig load( String ruleConfigFilePath) { String ruleConfigFileExtension =getFileExtension(ruleConfigFilePath); IRuleConfigParser parser = null; if ("json".equalsIgnoreCase(ruleC
2021-09-07 23:29:46
134
原创 单例模式(下)
如何理解单例模式中的唯一性?单例模式创建的对象是进程唯一的。单例类在老进程中存在且只能存在一个对象,在新进程中也会存在且只能存在一个对 象。而且,这两个对象并不是同一个对象,这也就说,单例类中对象的唯一性的作用范围是 进程内的,在进程间是不唯一的。如何实现一个线 程唯一的单例呢?“进程唯一”指的是进程内唯一,进程间不唯一。“线程唯一”指的是线程内唯 一,线程间可以不唯一。我 们通过一个 HashMap 来存储对象,其中 key 是线程 ID,value 是对象。这样我们就可以做到,不同的线程对应
2021-09-07 23:10:18
200
原创 单例模式(中):单例模式的弊端
单例对 OOP 特性的支持不友好public class Order { public void create(...) { //... long id = IdGenerator.getInstance().getId(); //... } } public class User { public void create(...) { // ... long id = IdGenerator.getInstance().getId(); //....
2021-09-07 23:00:40
634
原创 单例模式(上)
为什么要使用单例?一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例 模式。能解决两种问题:实战案例一:处理资源访问冲突public class Logger { private FileWriter writer; public Logger() { File file = new File("/Users/wangzheng/log.txt"); writer = new FileWriter(file, true); //tr
2021-09-07 22:52:06
124
原创 SQL函数(一)
Having与Where的区别where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚合函数,使用where条件过滤出特定的行。having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having条件过滤出特定的组,也可以使用多个分组标准进行分组。count()函数count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL。count(1)包括了忽略所有列,用1
2021-07-18 22:02:34
226
原创 JavaWeb ----- CSS
css:页面美化和布局控制概念:层叠样式表层叠:多个样式可以作用在同一个html的元素上。同时生效好处: 1.功能强大 2.将内容展示和样式控制分离 降低耦合度,解耦 让分工写作更容易 提高工作效率css的使用:css与html结合方式1.内联样式在标签内使用style属性指定css代码如:<div style="color:red;">hello css</div>2
2021-07-18 20:20:13
222
原创 第一次测试错题总结
COUNT() :对一列中的非空值计算个数NOW():返回当前的日期和时间SQL的嵌套子查询,可以嵌套n层方法体内的变量只能在方法中被改变java语言的特点:简单面向对象分布式多线程高性能跨平台可移植安全健壮动态集合中关于线程安全的问题:Vector,HashTable是线程安全的。ArrayList,LinkedList,HashMap,TreeMap,HashSet,TreeSet都不是线程安全的。抽象类:含有abstract修饰符的cla.
2021-07-12 11:21:32
129
原创 JavaWeb ------ HTML
概念:是最基础的网页开发语言hyper text markup language 超文本标记语言超文本: 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本标记语言 由标签构成的语言,<标签名称>如html,xml 标记语言不是编程语言快速入门:语法:html文档后缀名.html或者.htm标签分为:> 围堵标签:有开始标签喝结束标签。如<html></html> > 自闭和标签:开始标签和结束标签在一起。如&l
2021-07-11 17:06:33
177
原创 Java基础 多态+抽象类
多态概述同一个对象,在不同时刻表现出来的不同形态举例:猫我们可以说猫是猫:猫cat=new 猫();我们也可以说猫是动物: 动物animal=new 猫();这里猫在不同的时刻表现出来了不同的形态,这就是多态多态的前提和体现有继承/实现关系有方法重写有父类引用指向子类对象多态中成员访问特点(左右指的是Animal dog=new dog() )成员变量:编译看左边,执行看右边成员方法:编译看左边,执行看右边为什么成员变量和成员方法的访问不一样呢?因为成员方法有重写,而成
2021-06-20 11:21:13
150
原创 JAVA基础 线程池
线程池基础线程池概念:线程池其实就是一种多线程处理形式。线程和任务分里,提升线程重用性控制线程并发数量核心线程池:ThreadPoolExecutor参数int corePoolSize 核心线程数int maximumPoolSize 最大线程数long keepAliveTime 保存存活的时间TimeUnit UNIT 时间单位BlockingQueue 任务队列RejectedExecutionHandler handler 饱和策略核心线程池的工作原理1.判断当前线程池
2021-06-20 09:22:58
169
原创 Java基础——多线程
实现多线程1.进程:是正在运行的程序是系统进行资源分配和调用的独立单位每一个进程都有它自己的内存控件和系统资源2.线程线程:是进程中的单个顺序控制流,是一条执行路径单线程:一个进程只有一条执行路径,则称为单线程进程多线程:一个进程如果有多条执行路径,则称为多线程程序多线程的实现方式Thread允许应用程序同时执行多个执行进程方式1:继承Thread类定一个类在类中重写run方法创建一个类启动线程start方法,可以让线程开始执行,java虚拟机调用此线程的run方法run方法
2021-06-13 15:07:55
1210
1
原创 Java基础——SQL语句
SQL语句SQL语句不区分大小写,关键字建议使用大写,必须再后面加分号单行注释-- ,或#(mysql特有)多行注释:/* */数据库创建出来的默认字符集是utf8sql分类分类:DDL(操作数据库、表)DML(增删改表中的数据)DQL(查询表中的数据)DCL(权限和访问)操作数据库:CRUDcreate创建 : create1.创建数据库:create database 数据库名称;2.创建数据库,判断不存在,再创建:create database if not ex
2021-06-13 14:19:43
3636
2
原创 .cpp|46|error: expected primary-expression before ‘int‘|
.cpp|46|error: expected primary-expression before ‘int’|函数调用时添加了函数类型比如在主函数写了max(int a,int b)
2021-02-02 17:22:18
1089
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人