用Main方法调用freemarker生成文本文件

需求:一些金融机构需要很多报表,比如资产负债表,他们希望按照以往的习惯把报表放在一个文本文件里面,并且用空格和横竖线划成表格的样子,最终可以用于打印或者字符终端显示。报表文本文件样子如下:(html里面对不齐,可以用记事本打开附件)。
xml 代码
  1. +------------------------------------------------------------------------  
  2. |             资产           | 行 |  期初数          |  期末数          |  
  3. |                            | 次 |                  |                  |  
  4. |----------------------------+----+------------------+------------------+  
  5. |流动资产                    |0001|              0.00|              0.00|  
  6. |----------------------------+----+------------------+------------------+  
  7. |  现金及周转金              |0002|     96,482,019.59|     96,482,019.59|  
  8. |----------------------------+----+------------------+------------------+  
  9. |  存放中央银行款项          |0003|              0.00|              0.00|  
  10. |----------------------------+----+------------------+------------------+  
  11. |  专项央行票据              |0004|              0.00|              0.00|  
  12. |----------------------------+----+------------------+------------------+  
  13. |  央行专项扶持资金          |0005|              0.00|              0.00|  
  14. |----------------------------+----+------------------+------------------+  
  15. |  存放同业款项              |0006|              0.00|              0.00|  
  16. |----------------------------+----+------------------+------------------+  
  17. |  存放联行款项              |0007|              0.00|              0.00|  
  18. |----------------------------+----+------------------+------------------+  
  19. |  拆放同业                  |0008|              0.00|              0.00|  
  20. |----------------------------+----+------------------+------------------+  
  21. |  拆放金融性公司            |0009|              0.00|              0.00|  
  22. |----------------------------+----+------------------+------------------+  
  23.                                                                            

实现:报表数据在数据库,可以用jdbc查询出来,最终要生成文件,不由想到使用freemarker,那还需要的就是画一个ftl模版。
针对最终的文件形式,ftl如下:
java 代码
 
  1.  %%${organization.number}  
  2. <#assign prepage=0>  
  3. <#assign pagenumber=30>  
  4. <#assign currentnumber=0>  
  5. <#assign currentpage=1>  
  6. <#list rows as row>  
  7. <#if (prerow?exists && prerow.curr_cd != row.curr_cd)>  
  8. <#assign currentpage = currentpage + 1>  
  9. <#assign currentnumber=0>  
  10.   +-----------------------------------------------------------------------------------------------------------------------------------------------+  
  11.        事后监督                         主管                            复核                         制表                    报表日期   ${date?string("yyyy/MM/dd")}  
  12. if>  
  13. <#if currentnumber % pagenumber == 0>                                                     @@ xx金融机构资产负债表 &&  
  14.    单位名称  ${organization.name}                           报表类型  日报         制表日期  ${date?string("yyyy")}   年  ${date?string("MM")}  月  ${date?string("dd")}  日        币种  ${row.curr_cd}  
  15.                                                                                                        单位: 元                第      ${currentpage}   页  
  16.   +-----------------------------------------------------------------------------------------------------------------------------------------------+  
  17.   |             资产           | 行 |  期初数          |  期末数          |             资产           | 行 |  期初数          |  期末数          |  
  18.   |                            | 次 |                  |                  |                            | 次 |                  |                  |  
  19. if>  
  20.   |----------------------------+----+------------------+------------------+----------------------------+----+------------------+------------------|  
  21.   |${row.item_name}|${row.line_no?string("0000")}|${row.begin_bal?string("#,##0.00")?left_pad(18)}|${row.end_bal?string("#,##0.00")?left_pad(18)}|${row.item_name2}|${row.line_no?string("0000")}|${row.begin_bal2?string("#,##0.00")?left_pad(18)}|${row.end_bal2?string("#,##0.00")?left_pad(18)}|  
  22. <#if (currentnumber % pagenumber == pagenumber - 1) || (row_has_next == false)>  
  23.   +-----------------------------------------------------------------------------------------------------------------------------------------------+  
  24.        事后监督                         主管                            复核                         制表                    报表日期   ${date?string("yyyy/MM/dd")}  
  25. <#assign currentpage = currentpage + 1>if>  
  26. <#assign prerow = row>  
  27. <#assign prepage = currentpage>  
  28. <#assign currentnumber = currentnumber + 1>  
  29.   

生成文件的Main方法代码如下:
java 代码
 
  1. import java.io.BufferedWriter;  
  2. import java.io.File;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5. import java.sql.Connection;  
  6. import java.sql.Date;  
  7. import java.sql.DriverManager;  
  8. import java.sql.PreparedStatement;  
  9. import java.sql.ResultSet;  
  10. import java.text.SimpleDateFormat;  
  11. import java.util.ArrayList;  
  12. import java.util.HashMap;  
  13. import java.util.List;  
  14. import java.util.Map;  
  15.   
  16. import freemarker.template.Configuration;  
  17. import freemarker.template.DefaultObjectWrapper;  
  18. import freemarker.template.Template;  
  19.   
  20. /** 
  21.  * @author arthur 
  22.  * @version $Revision: 1.1 $ 
  23.  */  
  24.   
  25. public class Test {  
  26.   
  27.     public static void main(String[] args) throws Exception {  
  28.         Class.forName("com.ibm.db2.jcc.DB2Driver");  
  29.   
  30.         Connection conn = DriverManager.getConnection("jdbc:db2://ip:port/dbname", "username", "pwd");  
  31.   
  32.         StringBuffer sb = new StringBuffer(  
  33.                 "select record_date,cycle_no,bank_no,curr_cd,line_no,item_name,item_no,begin_bal,end_bal,item_name2,item_no2,begin_bal2,end_bal2 from FIN_BALANCE_REPORT ");  
  34.         sb.append("where RECORD_DATE = ?");  
  35.         sb.append("order by cycle_no,BANK_NO,CURR_CD,line_no");  
  36.         PreparedStatement pstmt = conn.prepareStatement(sb.toString());  
  37.         Date date = Date.valueOf("2006-6-30");  
  38.         pstmt.setDate(1, date);  
  39.         ResultSet rs = pstmt.executeQuery();  
  40.         Map root = new HashMap();  
  41.         List rows = new ArrayList();  
  42.         Map org = new HashMap();  
  43.         int pre_cycle_no = -1;  
  44.         String pre_bank_no = "";  
  45.         while (rs.next()) {  
  46.             Map row = new HashMap();  
  47.             int cycle_no = rs.getInt("cycle_no");  
  48.             String bank_no = rs.getString("bank_no");  
  49.             if (pre_cycle_no != -1 && pre_cycle_no != cycle_no  
  50.                     || (pre_bank_no.length() > 0 && !pre_bank_no.equals(bank_no))) {// 另外一个cycle_no和bank_no  
  51.                 org.put("number", pre_bank_no);  
  52.                 org.put("name", pre_bank_no);  
  53.                 root.put("organization", org);  
  54.                 root.put("date", date);  
  55.                 root.put("rows", rows);  
  56.   
  57.                 Configuration cfg = new Configuration();  
  58.                 cfg.setDirectoryForTemplateLoading(new File("D:/work/template/"));  
  59.                 cfg.setObjectWrapper(new DefaultObjectWrapper());  
  60.                 Template temp = cfg.getTemplate("资产负债表.ftl");  
  61.                 String dateString = new SimpleDateFormat("yyyyMMdd").format(date);  
  62.                 String fileName = "T" + pre_bank_no + "_" + dateString + "_" + pre_cycle_no + pre_bank_no;  
  63.                 File file = new File("D:/work/dest/" + fileName);  
  64.                 FileWriter fw = new FileWriter(file);  
  65.                 try {  
  66.                     BufferedWriter bw = new BufferedWriter(fw);  
  67.                     temp.process(root, bw);  
  68.                     bw.flush();  
  69.                 } catch (IOException e) {  
  70.                     e.printStackTrace();  
  71.                 } finally {  
  72.                     fw.close();  
  73.                 }  
  74.                 rows = new ArrayList();  
  75.             }  
  76.             int line_no = rs.getInt("line_no");  
  77.             row.put("line_no", new Integer(line_no));  
  78.             row.put("item_name", rightPad(rs.getString("item_name"), 28));  
  79.             row.put("begin_bal", rs.getBigDecimal("begin_bal"));  
  80.             row.put("end_bal", rs.getBigDecimal("end_bal"));  
  81.             row.put("item_name2", rightPad(rs.getString("item_name2"), 28));  
  82.             row.put("begin_bal2", rs.getBigDecimal("begin_bal2"));  
  83.             row.put("end_bal2", rs.getBigDecimal("end_bal2"));  
  84.             row.put("curr_cd", rs.getString("curr_cd"));  
  85.   
  86.             rows.add(row);  
  87.   
  88.             root = new HashMap();  
  89.             pre_cycle_no = cycle_no;  
  90.             pre_bank_no = bank_no;  
  91.         }  
  92.   
  93.         rs.close();  
  94.         pstmt.close();  
  95.         conn.close();  
  96.   
  97.     }  
  98.   
  99.     /** 
  100.      * 汉字算2位的右边补齐空格方法 
  101.      */  
  102.     public static String rightPad(String s, int minLength) {  
  103.         int ln = length(s);  
  104.         if (minLength <= ln) {  
  105.             return s;  
  106.         }  
  107.   
  108.         StringBuffer res = new StringBuffer(minLength);  
  109.   
  110.         res.append(s);  
  111.   
  112.         int dif = minLength - ln;  
  113.         for (int i = 0; i < dif; i++) {  
  114.             res.append(' ');  
  115.         }  
  116.   
  117.         return res.toString();  
  118.     }  
  119.   
  120.     /** 
  121.      * 汉字算2位的左边补齐空格方法 
  122.      */  
  123.     public static String leftPad(String s, int minLength) {  
  124.         int ln = length(s);  
  125.         if (minLength <= ln) {  
  126.             return s;  
  127.         }  
  128.   
  129.         StringBuffer res = new StringBuffer(minLength);  
  130.   
  131.         int dif = minLength - ln;  
  132.         for (int i = 0; i < dif; i++) {  
  133.             res.append(' ');  
  134.         }  
  135.   
  136.         res.append(s);  
  137.   
  138.         return res.toString();  
  139.     }  
  140.   
  141.     /** 
  142.      * 汉字算2位的String length计算方法 
  143.      */  
  144.     public static int length(String s) {  
  145.         int counter = 0;  
  146.         for (int i = 0; i < s.length(); i++) {  
  147.             char c = s.charAt(i);  
  148.             if (c < 255) {  
  149.                 counter++;  
  150.             } else {  
  151.                 counter = counter + 2;  
  152.             }  
  153.         }  
  154.         return counter;  
  155.     }  
  156. }  

这个代码很不完善,比如没有异常捕获、Log机制、目标目录和用到的模版文件都是写死,仅仅作为测试使用。
iText通过FreeMarker模板生成PDF解决方案 阅读详情

相关推荐

freemarker如何解析文本内容

纯java的文本解析模板,如可解析SQL语句,解析Excel中动态内容

生成Main下的txt文件方法

要在VOC2007文件夹下新建.py文件,输入以下代码。 -- coding:utf-8 -- -*- author:zzZ_CMing 优快云 address:https://blog.youkuaiyun.com/zzZ_CMing -*- 2018/07/18; 15:19 -*- python3.5 import os import random trainval_percent = 0.7 train_percent = 0.8 xmlfilepath = ‘Annotations/’ txtsavep.

weixin_38341410的博客 444

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1836

使用FreeMarker生成Word文档

java 生成work文档方式

weixin_52437323的博客 792

大模型时代必备技能:3种向量量化技术对比(PQ/AQ/RVQ)与选型指南

本文深入解析了大模型时代处理海量向量数据的关键技术——向量量化。通过对比Product Quantization (PQ)、Additive Quantization (AQ)和Residual Vector Quantization (RVQ)三种主流技术的核心原理、性能表现与适用场景,为工程师提供了从理论到实践的选型指南,旨在解决向量存储与检索的效率瓶颈,助力RAG等大模型应用高效落地。

silver的专栏 800

【SystemVerilog笔记(一)】数据类型

(一)内建数据类型 1.按照四值逻辑和二值逻辑分类 四值逻辑类型:integer、logic、reg、wire等线网类型 二值逻辑类型:byte、shortint、int、longint、bit 2.按照有符号和无符号分类 有符号类型:byte、shortint、int、longint、integer 无符号类型:bit、logic、reg、wire等线网类型 ※记忆:按位定义的变量是无符号的。 (二)软件常用类型 1.定宽数组 在这里插入代码片 ...

cc__cc__的博客 1万+

FreeMarker入门

Freemarker的介绍     Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用 工具,它是为Java程序员提供的一个开发包,或者说是一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序。     Freemarker 是使用纯java编写的,为了提高页面的访问速度,需要把页面静态化, 那么Freemarker就是被用来生成html页面...

wangsaisoon的博客 409

ComfyUI新手必看:JoyCaption 2插件安装全流程(附百度网盘资源)

本文为ComfyUI新手提供了JoyCaption 2插件的完整安装与部署指南。详细介绍了从环境准备、插件获取、模型文件配置到核心节点使用的全流程,并重点解析了其集成的LLM反推模式,帮助用户高效实现从图片到精准提示词的转换。

mango的博客 303

FreeMarker的简单使用

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。 FreeMarker的原理其实就是字符串的替换,可以动态的生成不同的页面代码只需要写一份就可以了,这样可以使访问页面更加迅捷,它跟servle...

kxj19980524的博客 556

R语言:基于Spatstat包的单变量和双变量平面Ripley‘s K函数分析

因为网上查找得到的R语言K函数分析的资料很少,Spatstat包的介绍也很少,所以抛砖引玉。本文简单介绍了使用R语言spatstat包的Kest,Kcross(Lcross)和Kinhom方法进行了单变量和双变量平面Ripley's K函数分析的方法及代码,希望有所帮助。

hsdcmax的博客 1万+

LAMMPS实例教程—In文件详解

本博文主要介绍专栏 《LAMMPS实例教程—In文件详解》, 针对于 Lammps 可分析的物理过程进行讲解,提供 In 文件以及后处理方法,持续更新。 目前分为8个专题: 1)力学专题、2)传热专题、3)相变专题、4)界面专题、5)吸附专题、6)流动专题、7)物性专题以及8)基础理论专题。

Rockyoung 3万+

FreeMarker框架的用法指南

FreeMarker是一个功能强大且灵活的模板引擎,适用于各种Java项目。通过将数据模型与模板文件分离,FreeMarker不仅提高了代码的可维护性,还促进了前后端的分离。无论是在Web开发、邮件生成还是报告生成中,FreeMarker都能提供高效的解决方案。希望本文的介绍能帮助你快速掌握FreeMarker的使用方法,并将其应用到实际项目中。

m0_56896669的博客 1364

影楼精修-AI追色算法解析

本文解析了像素蛋糕软件中AI追色功能的技术原理与实现方案,为理解AI追色技术提供了实用参考。

Trent1985的专栏 2万+

用Main方法调用freemarker生成文件

MyGenerator.java package com.comp.common; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.HashMap; import java.ut...

weixin_34153893的博客 137

使用 MATLAB/Simulink 搭建一个 无人机群间数据交换与协同控制仿真系统

本文提供了一份详细的Simulink无人机群协同控制仿真教程。主要内容包括:无人机群系统架构设计(去中心化网络、通信分层)、三维运动建模、空-空通信链路实现(距离判断、无线信道)、分布式Consensus控制算法开发,以及性能评估指标设定。教程采用模块化设计思路,通过ModelReference构建多无人机并行模型,并给出了MATLAB函数实现关键算法。最后展示了预期仿真结果(收敛时间<15s、位置偏差<2m)和进阶应用方向(编队飞行、AI协同等),帮助读者掌握群体智能系统的建模与仿真方法。

amy_mhd的博客 159

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用freemarker生成文件到本地(main方法)

public static void main(String[] args) { // Create your Configuration instance, and specify if up to what FreeMarker //// version (here 2.3.22) do you want to apply the fixes that...

For_That的博客 1523

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用freemarker模板 生成 word文档

使用freemarker模板 生成 word文档

LZHH_2008的博客 613

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

main程序的freemarker

package main; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.ut

程门立雪的博客 1160

freemarker模板引擎+springboot实现vue前端页面的生成

燃!最简单的java实现vue页面生成器

2085

Exception in thread “main” java.lang.NoClassDefFoundError: freemarker/template/Configuration 代码生成报错

mybatis-plus 代码生成机制很好用但是刚入门的新手总会遇到这个错误,原因是因为 mybatis-plus 项目 pom 虽然依赖了 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <versio..

sinat_37792529的博客 5903

基于Java与FreeMarker的Oracle存储过程自动化生成器设计与实现

在数据库开发领域,存储过程是封装复杂业务逻辑、提升数据处理性能的关键技术。其核心原理是将预编译的SQL语句集存储在数据库中,通过减少网络传输和重复编译来优化执行效率。这项技术的价值在于保障数据操作的一致性、安全性与高性能,广泛应用于金融对账、报表生成、数据清洗等企业级场景。随着项目规模扩大,手动编写存储过程易导致代码风格不一、维护困难,因此引入自动化生成工具成为必然。本文聚焦于利用Java结合FreeMarker模板引擎,通过定义YAML配置与SQL逻辑片段分离的约定格式,实现存储过程的标准化、自动化生成,

weixin_34055787的博客 536

FreeMarker

FreeMarker简介 FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本 (HTML 网页、电子邮件、配置文件、源代码等)的通用工具。FreeMarker 是免费的,基于 Apache 许可证 2.0 版本发布。其模板编写为 FreeMarker Template Language(FTL),属于简单、 专用的语言。  FreeMarker原理图 ...

qq_42603153的博客 329

springboot+freemarker 生成动态邮件模版

1、导入freemarker的依赖 //导入freemarker的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> 2、创.

展望未来 926

freemarker调用后台方法_Go面试常遇到的坑和解决方法

本文介绍在阅读Go语言高级编程一书,看到书中总结Go语言常遇到的问题和解决方法与大家分享一下。可变参数是空接口类型数组是值传递map遍历时顺序不固定返回值被屏蔽recover必须在defer函数中运行main()函数提前退出通过Sleep()来回避并发中的问题独占CPU导致其他Goroutine饿死不同Goroutine之间不满足顺序一致性内存模型闭包错误引用同一个变量在循环内部执行defer语句...

weixin_33404102的博客 472

Exception in thread “main“ java.lang.NoClassDefFoundError: freemarker/template/Configuration

使用自制mybatis-plus生成代码时报错。缺少freemarker依赖。

杨大仙 962

freemarker的简单测试

导入依赖 <dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version&g...

weixin_45059068的博客 255
上一篇: 把书读薄:《上帝掷骰子吗-量子物理史话》
下一篇: 《上帝掷骰子吗》人物八卦之费因曼
eyejavaeye
博客等级 码龄20年 74粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值