package GeneIterAdaptReflect.com;
import java.util.Random;
/*
* 了解 Generator 及其应有方式;
* 生成器是专门负责创建对象的类,实际上,这是工厂方法设计模式的一种应用;不过当使用生成器创建新对象时,它不需要任何参数;
* 一般而言:一个生成器只定义一个方法,该方法用于产生新的对象,通常定义为next()方法;
* interface Generator<T>{
T next();
* }
*
*/
interface Generator<T>{
T next();
}
class Fibonacci implements Generator<Integer>{
/*
* 产生数学上常用的斐波那契数列
* 序列:1 2 3 4 5 6 7 8 9……
* 数据:1 1 2 3 5 8 13 24
* */
private static int count=0;
public int fibo(int x){
if(x<2)
return 1;
return fibo(x-2)+fibo(x-1);
}
public Integer next(){
return fibo(count++);
}
}
/*java t4上一个咖啡例子
*
*
* */
class Coffee{
private static int count=1;
private final int id = count++;
public String toString(){
return id+" "+ this.getClass().getSimpleName();
}
}
class Latter extends Coffee{}
class Mocha extends Coffee{}
class Cappuccino extends Coffee{}
class Breve extends Coffee{}
class CoffeeGenerator implements Generator<Coffee>{
private Class[] types = new Class[]{Latter.class,Mocha.class,Cappuccino.class,Breve.class};
private Random rand = new Random();
public Coffee next(){
try {
return (Coffee) types[rand.nextInt(types.length)].newInstance();
} catch (InstantiationException e) {
System.out.println("new Instance() fail");
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
//随机数生产器
class RandomGenerator{
private static Random r = new Random();
public static class Boolean implements Generator<java.lang.Boolean>{
public java.lang.Boolean next(){
return r.nextBoolean();
}
}
public static class Character implements Generator<java.lang.Character>{
private char[] chars =("abcdefghijklmnopqrstuvwsyz"+"ABCDEFGHIJKLMNOPQRSTUVWSYZ").toCharArray();
public java.lang.Character next(){
return chars[r.nextInt(chars.length)];
}
}
public static class Integer implements Generator<java.lang.Integer>{
public java.lang.Integer next(){
return r.nextInt(1000);
}
}
}
public class GeneratorTest {
public static void test(Class<?> sc){
for(Class<?> c:sc.getClasses()){
try {
Generator<?> ge = (Generator<?>)c.newInstance();
for(int i=0;i<10;i++)
System.out.print(ge.next()+" ");
System.out.println();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Fibonacci fibo = new Fibonacci();
for(int i=0;i<20;i++)
System.out.print(fibo.next()+" ");
System.out.println();
System.out.println("------------------------------");
CoffeeGenerator cg = new CoffeeGenerator();
for(int i=0;i<4;i++)
System.out.println(cg.next().toString());
System.out.println("------------------------------");
test(RandomGenerator.class);
}
}
/*输出结果:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
------------------------------
1 Mocha
2 Cappuccino
3 Breve
4 Latter
------------------------------
true true true true false true false true true false
B m V k q C W J O z
442 626 975 3 375 377 179 513 110 106
* */
相关推荐
构建面向嵌入式Linux的ARM64交叉编译工具链:从sysroot配置到CMake实战
本文详细介绍了如何构建面向嵌入式Linux的ARM64交叉编译工具链,从sysroot配置到CMake实战。通过分步指导,帮助开发者解决架构不一致问题,提升编译效率,特别适用于树莓派等ARM64设备开发。文章涵盖sysroot机制、环境搭建、CMake配置及常见问题解决方案,是嵌入式开发的实用指南。
java: 四器 之 适配器初学
package GeneIterAdaptReflect.com;/* * 举例: * 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只 * 有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器 * (适配器)就能解决此问题,而这正像是本模式所做的事情。 * 适配器: *
FPGA AXI DDR3读写时序调试与FIFO缓存实战解析
本文深入解析FPGA中AXI协议与DDR3的读写时序调试,重点探讨FIFO缓存在数据流控制中的关键作用。通过实战案例详细讲解突发传输中的地址对齐、数据分片等常见问题,并提供状态机设计、仿真波形分析和性能优化技巧,帮助开发者高效解决高速数据存储场景下的时序同步与数据一致性问题。
一个java代码生成器的简单实现
最近,一直跟着公司技术牛人在搞大数据相关的东西,主要涉及的是环境搭建,同时也了解下整个hadoop生态系统相关的东西,真是让我大开眼界,这个在之后的博文中再来与大家分享。 今天,笔者给大家介绍一个代码生成器,这个是笔者的主管写的,写的确实不错,主要是基于公司的jquery easyUI + springMVC + myBatis这套框架写的,可以根据一个数据库表生成model、mapper.xml
Kalibr标定避坑指南:如何用AprilGrid板快速完成双目IMU标定
本文详细介绍了使用AprilGrid板进行Kalibr双目IMU联合标定的实战技巧,包括标定工具选型、数据采集优化、标定流程及结果验证。通过AprilGrid板的唯一标识性和抗遮挡优势,结合IMU静止标定和运动激励设计,显著提升标定精度。文章还提供了常见报错处理和高级优化技巧,帮助开发者高效完成传感器标定。
MATPOWER的安装详细教程
MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。
Java编写简易的代码生成器
本代码生成器只生成了实体类和一些service文件。这个代码生成器其实就是使用Java读取txt文件,然后根据txt文件里面的字段生成想要的Java文件。直接创建相应的txt文件,运行Java文件,就可以生成要想的实体类和service文件。代码生成器代码:package com.mfc.read; import java.io.BufferedReader; import java.io.Fi...
ROS 2 Slam Toolbox实战:从零跑通2D激光建图
SLAM(同步定位与地图构建)是移动机器人实现自主导航的基础技术,其核心在于通过传感器数据实时估计位姿并构建环境栅格地图。slam_toolbox作为ROS 2 Humble及后续LTS版本官方主推的2D SLAM后端,采用图优化+闭环检测架构,兼顾实时性、鲁棒性与工程可维护性。相比cartographer和hector_slam,它原生支持ROS 2、参数精简、诊断友好,特别适合硬件资源有限、缺乏IMU或深度相机的差速机器人平台。本文聚焦真实部署场景,覆盖RPLIDAR等常见2D激光雷达与TurtleBo
java: 四器 之 比较器初学
package GeneIterAdaptReflect.com;import java.util.Arrays; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; import java.io.*;/* * 第一个:java.lang.Comparable * 功能介绍: *
【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程
在当代软件开发领域,CPU(Central Processing Unit,中央处理器)的性能优化一直是一个核心议题。尤其是对于C++开发者而言,无论是在Linux平台还是其他操作系统中,都需要深刻理解CPU的工作原理以及如何充分利用CPU资源,以确保软件运行的高效性和稳定性。正如计算机科学家Donald Knuth在《计算机程序设计的艺术》中所说:“过早的优化是万恶之源”,然而,这并不意味着我们应该忽视性能优化——相反,我们需要在正确的时间以正确的方式进行优化。
31、自然语言生成中的流畅度评估
本博客探讨了自然语言生成(NLG)中流畅度评估的重要性和方法。文章详细介绍了流畅度的定义及其影响因素,包括句法结构、词汇选择、语义一致性和段落组织。同时,讨论了自动评估和人工评估两种主要方法,并以机器翻译、自动摘要和对话系统为例分析了流畅度评估的应用场景。最后,文章提出了提升流畅度的技术策略以及未来研究方向,为相关领域的研究者和开发者提供了有价值的参考。
Java 初学者的第一个 SpringBoot 登录系统
本代码生成器最新版是Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版九。界面美化,完善了数据库自动反射功能,完善了前端代码生成,完善了枚举和哑数据模式。更多缺陷修复,更多测试。已接近Beta质量。Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版八。完善支持数据库自动反射功能和多对多候选功能。完善了元数据和数据编辑器。在尝鲜版七基础上有多处缺陷修正和功能增强。补充了一些缺失的功能。Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版七。
第67步 时间序列建模实战:ARIMA建模(Stata)
第67步 时间序列建模实战:ARIMA建模(Stata)
一种新的流:为 Java 加入生成器(Generator)特性
本文主题思想,是介绍一种全新的设计模式。它既拥有抽象的数学美感,仅仅从一个简单接口出发,就能推演出庞大的特性集合,引出许多全新概念。同时也有扎实的工程实用价值,由其实现的工具,性能均可显著超过同类的头部开源产品。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
用Java设计实现Python中的生成器
引言 相信无论是谁,第一次接触Python,肯定会为她的优雅简洁感到震撼(她的性能咱先抛一边去),然而本人主要使用C和Java开发,Python虽然感觉很好,但是碍于一些环境因素,没机会去使用,况且语言只是一种工具,现在像Python这种高级动态语言又确实不少,掌握其本质思想才是关键,所以本文通过分析Java和Python的一些语法特性,用Java语言设计实现了Python语言中的强大而实用...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
Java 初学者的第一个 SpringBoot 系统
本代码生成器最新版是Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版九。界面美化,完善了数据库自动反射功能,完善了前端代码生成,完善了枚举和哑数据模式。更多缺陷修复,更多测试。已接近Beta质量。Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版八。完善支持数据库自动反射功能和多对多候选功能。完善了元数据和数据编辑器。在尝鲜版七基础上有多处缺陷修正和功能增强。补充了一些缺失的功能。Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版七。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
同人文生成器狗屁不通文章生成器各种生成器 简易写法
同人文生成器/狗屁不通文章生成器/各种生成器 简易写法 网上有很多这种生成器,准备自己用java来写写。作为一个java菜鸡,用到的方法很简单。 主要逻辑就是用ArrayList把句子都添加进去,然后重组。 用同人文生成器举例,首先用Scanner得到主角1和主角2的名字: System.out.print("主角1的名字"); Scanner in = new Scanner...
Java 初学者的第一个 SpringBoot3.4.0 登录系统
本代码生成器最新版是Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版十。支持新的技术栈boot3,此技术栈支持springboot3.4.0,POI 5.3.0,Shiro 1.13.0, Mybatis 3.0.3等一系列新版本,同时仍然兼容原先的sbmeu,smeu,msmeu三个技术栈。更多缺陷修复,更多测试。已接近Beta质量。Java通用代码生成器光2.4.0电音之王TechnoKing版本尝鲜版九。
Java 初学者的第一个 SpringBoot3.4.0 登录系统二
本代码生成器最新版是 Java 通用代码生成器光 2.4.0 电音之王 TechnoKing 版本尝鲜版十。支持新的技术栈 boot3,此技术栈支持 springboot3.4.0,POI 5.3.0,Shiro 1.13.0, Mybatis 3.0.3 等一系列新版本,同时仍然兼容原先的 sbmeu,smeu,msmeu 三个技术栈。更多缺陷修复,更多测试。已接近 Beta 质量。Java 通用代码生成器光 2.4.0 电音之王 TechnoKing 版本尝鲜版九。
Rust 通用代码生成器莲花发布红莲尝鲜版十八介绍视频,初学者指南
Rust 通用代码生成器莲花发布红莲尝鲜版十八介绍视频,初学者指南
一种新的流:为Java加入生成器(Generator)特性
这篇文章不是工具推荐,也不是应用案例分享。其主题思想,是介绍一种全新的设计模式。它既拥有抽象的数学美感,仅仅从一个简单接口出发,就能推演出庞大的特性集合,引出许多全新概念。同时也有扎实的工程实用价值,由其实现的工具,性能均可显著超过同类的头部开源产品。这一设计模式并非因Java而生,而是诞生于一个十分简陋的脚本语言。它对语言特性的要求非常之低,因而其价值对众多现代编程语言都是普适的。首先给出Seq的接口定义它本质上就是一个consumer of consumer,其真实含义我后边会讲。
198



被折叠的 条评论
为什么被折叠?



