一般所有的项目都需要数据库设计文档,对于表不多的可以编辑word文档,自己写,但对于表很多,字段很多的数据库,这时候写设计文档就很麻烦,楼主就是遇到这个问题,项目70张表,一个个写到文档里是在麻烦,所以就像有没有可以通过程序生成。
具体思路
通过jdbc获取所有的表名
然后获取所有表的字段描述
通过FreeMarker模版文件来生成word
注:首先通过jdbc连接你要生成word文档的数据库,怎么连接网上都有,这个不在这里多介绍。
通过jdbc获取所有的表名
show tables
这个方法获取到库下所有的表,但是有时候可能需要表的注释,那就用另外一条语句
select table_name,table_comment from information_schema.tables where table_schema = 'TABLE_ACHEMA'
这里就直接使用executeQuery()方法就行:
result = stmt.executeQuery ("select table_name,table_comment from information_schema.tables where table_schema = 'pension_service'" )
while (result.next ()){
String name = result.getString (1 )
String comment = result.getString (2 )
Table table=new Table()
table.setName (name)
table.setComment (comment)
tables.add (table)
}
获取到后可以放到自己写的一个实体类,作为FreeMarker模版文件的数据源
通过jdbc获取所有的表的字段
方法和上面一样 SQL:
select ORDINAL_POSITION,COLUMN_NAME,COLUMN_TYPE,EXTRA,COLUMN_COMMENT from information_schema.columns where table_schema ='TABLE_ACHEMA' and table_name = 'TABLE_NAME'
information_schema.columns 里存放了所有的字段的信息,这边可以自己自定义取哪些信息.
通过FreeMarker模版文件来生成word
首先要有自己的模版
Word 文档模板:普通的doc、docx都是二进制文件,操作起来比较麻烦,那么我们可以采用变通的方式,用word 的xml格式。
可以自己先在文档里做一个自己想要的表样式 例如: 然后另存为,选择xml格式 然后打开之后看一下,
不要被这么多代码恐吓到,仔细观察就可以找到word里的表格在xml怎么表示了,找到之后就可以生成我们所需要的模版文件,加上
<
...
<
...
..
在这边上传一个我这边用的模版供大家参考: link
有了模版就可以直接生成文档了:代码:
public class WordHandler {
private Configuration configuration = null ;
public WordHandler () {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8" );
}
public void data2word ( Map data) {
configuration.setClassForTemplateLoading(this .getClass(),
"/" );
Template t = null ;
try {
t = configuration.getTemplate("table.ftl" );
} catch (IOException e) {
e.printStackTrace();
}
File outFile = new File("/Users/gengqiang/Desktop/table.doc" );
Writer out = null ;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
t.process(data, out );
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void test () throws Exception {
WordHandler wh = new WordHandler();
List tables=TableHandler.getTables();
Map data=new HashMap();
data.put("tables" ,tables);
wh.data2word(data);
}
}
2个实体类:
package com.coderqiang.tabledoc.entity;
/**
* Created by gengqiang on 2017/6/27.
*/
public class Column {
private Integer index;
private String name;
private String dataType;
private String constraint;
private String comment;
public Integer getIndex () {
return index;
}
public void setIndex (Integer index) {
this .index = index;
}
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public String getDataType () {
return dataType;
}
public void setDataType (String dataType) {
this .dataType = dataType;
}
public String getConstraint () {
return constraint;
}
public void setConstraint (String constraint) {
this .constraint = constraint;
}
public String getComment () {
return comment;
}
public void setComment (String comment) {
this .comment = comment;
}
@Override
public String toString () {
return "Column{" +
"index=" + index +
", name='" + name + '\'' +
", dataType='" + dataType + '\'' +
", constraint='" + constraint + '\'' +
", comment='" + comment + '\'' +
'}' ;
}
}
package com.coderqiang.tabledoc.entity;
import java.util.List;
/**
* Created by gengqiang on 2017/6/27.
*/
public class Table {
private String name;
private String comment;
private List columns;
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public String getComment () {
return comment;
}
public void setComment (String comment) {
this .comment = comment;
}
public List getColumns () {
return columns;
}
public void setColumns (List columns) {
this .columns = columns;
}
@Override
public String toString () {
return "Table{" +
"name='" + name + '\'' +
", comment='" + comment + '\'' +
", columns=" + columns +
'}' ;
}
}
获取表结构数据:
package com.coderqiang.tabledoc.service;
import com.coderqiang.tabledoc.entity.Column;
import com.coderqiang.tabledoc.entity.Table;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* Created by gengqiang on 2017/6/27.
*/
public class TableHandler {
/**
* @param args
*/
public static final String DBDRIVER = "com.mysql.jdbc.Driver" ;
public static final String DBURL = "jdbc:mysql://localhost:3306/pension_service" ;
public static final String DBUSER = "****" ;
public static final String DBPASS = "****" ;
public static List getTableNames () throws Exception
{
List tableNames=new ArrayList();
Connection con = null ;
Statement stmt = null ;
ResultSet result = null ;
Class.forName(DBDRIVER);
con = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
stmt = con.createStatement();
result = stmt.executeQuery("show tables" );
while (result.next()){
String name = result.getString(1 );
tableNames.add(name);
}
result.close();
con.close();
return tableNames;
}
public static List getTables () throws Exception
{
List tables=new ArrayList();
Connection con = null ;
Statement stmt = null ;
ResultSet result = null ;
Class.forName(DBDRIVER);
con = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
stmt = con.createStatement();
result = stmt.executeQuery("select table_name,table_comment from information_schema.tables where table_schema = 'pension_service' \n" );
while (result.next()){
String name = result.getString(1 );
String comment = result.getString(2 );
Table table=new Table();
table.setName(name);
table.setComment(comment);
tables.add(table);
}
for (Table table:tables)
{
Listcolumns=new ArrayList();
result = stmt.executeQuery("select ORDINAL_POSITION,COLUMN_NAME,COLUMN_TYPE,EXTRA,COLUMN_COMMENT from information_schema.columns where table_schema ='pension_service' and table_name = '" +table.getName()+"' " );
while (result.next()){
int index = result.getInt(1 );
String name = result.getString(2 );
String type = result.getString(3 );
String constraint = result.getString(4 );
String comment = result.getString(5 );
Column column=new Column();
column.setIndex(index);
column.setName(name);
column.setDataType(type);
column.setConstraint(constraint);
column.setComment(comment);
columns.add(column);
}
table.setColumns(columns);
}
result.close();
con.close();
return tables;
}
@Test
public void test ()
{
try {
TableHandler.getTables();
} catch (Exception e) {
e.printStackTrace();
}
}
}
你可能感兴趣的:(java,java,freemarker,word,数据库)
主流编程语言的优劣分析及学习建议
我的青春不太冷
学习 java 开发语言 android 经验分享 笔记
不同语言的特性主流编程语言的优劣分析及学习建议1.Python优点缺点学习建议适用于哪些人?2.JavaScript优点缺点学习建议适用于哪些人?3.Java优点缺点学习建议适用于哪些人?4.C++优点缺点学习建议适用于哪些人?5.Swift优点缺点学习建议适用于哪些人?结论主流编程语言的优劣分析及学习建议对于年轻人或者即将开始编程学习的人来说,选择一门合适的编程语言至关重要。不同的编程语言有各自
Debezium系列之:基于Debezium JDBC connector消费Topic数据到Mysql数据库
快乐骑行^_^
debezium Debezium系列 JDBC connector 消费Topic数据 Mysql数据库
Debezium系列之:基于DebeziumJDBCconnector消费Topic数据到Mysql数据库一、需求背景二、相关技术博客三、创建表四、使用Debezium2.Xmysqlconnector采集数据五、数据库插入数据和查看Topic数据六、DebeziumJDBCconnector完整配置七、DebeziumJDBCconnector参数详解八、源库插入数据,查看debeziumjdb
Debezium系列之:debezium把sqlserver数据库多张表的数据发送到一个kafka topic
快乐骑行^_^
debezium Debezium sqlserver数据库 kafka topic
Debezium系列之:debezium把sqlserver数据库多张表的数据发送到一个kafkatopic一、需求二、debezium实现sqlservercdc三、相关参数详解四、完整参数一、需求把一个sqlserver数据库多张表的数据全部发送到kafka集群的一个topic二、debezium实现sqlservercdc相关技术实现参考博主以下几篇博客:Debezium系列之:安装部署de
MySQL 常用命令
云水一方
数据库 mysql 大数据
MySQL是一种流行的关系型数据库管理系统,其高效的性能和丰富的功能使其成为众多开发者的首选。在日常操作中,掌握MySQL的常用命令至关重要。以下是一些MySQL常用命令及其解释。️数据库操作命令1.登录数据库mysql-u[username]-p-u指定用户名。-p提示输入密码。2.显示所有数据库SHOWDATABASES;查看当前MySQL实例中的所有数据库。3.✨创建数据库CREATEDAT
Linux 上 MySQL 8.0 的备份与恢复实战指南
云水一方
mysql linux 大数据 数据仓库 运维 数据库
在数据库运维过程中,备份与恢复是保障数据安全的重要手段。MySQL8.0在Linux环境中提供了多种备份和恢复方案,包括逻辑备份和物理备份。本文将介绍这些备份方式的操作步骤与逻辑实现,帮助您高效管理数据库。一、备份与恢复的作用和意义数据安全:防止因误操作、硬件故障或恶意攻击导致的数据丢失。容灾恢复:在灾难发生后快速恢复业务功能,减少停机时间。数据迁移:支持数据库迁移至新环境或硬件。二、备份方式概览
java excel 转 图片_Java 将Excel转为图片、html、XPS、XML、CSV
甜甜呀嘿
java excel 转 图片
通过文档格式转换,可满足不同办公场合对文档操作的需求。本文将介绍转换Excel文档为其他常见文档格式的方法。通过文中的方法,可支持将Excel转换为包括PDF、图片、html、XPS、XML、CSV、PCL、ODS、PostScript、以及OfficeExcel不同版本,如,version97-2003,version2007,version2010,version2013,version201
java 字节文件类型_Java根据字节数据判断文件类型
weixin_39795284
java 字节文件类型
通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法:1.通过后缀名,如exe,jpg,bmp,rar,zip等等。2.通过读取文件,获取文件的Content-type来判断。3.通过读取文件流,根据文件流中特定的一些字节标识来区分不同类型的文件。4.若是图片,则通过缩放来判断,可以缩放的为图片,不可以的则不是。然而,在安全性较高的业务场景中,1,2两种方法的校验会被轻易绕过
Java 代码实现pdf转word文件 | 无损转换完整代码教程
泰山AI
Java高级技术 java 开发语言 poi pdf
前言最近有个需求,我自己有个pdf想转word去修改,百度很多工具都是注册账号前一两次免费,后面就要收费,由于,本人之前的也转换过好几次,免费额度都用完了。百度了半天也没找到一个免费,于是决定自己用代码实现转换,觉得应该不难,后来,调试1-2个小时的代码终于实现了!pdf转word实现思路代码实现主要依赖两个第三方jar包,一个是apache-poi,一个是aspose-pdf。apache-po
10.1、LNMT架构
weixin_30832405
java 数据库 运维
Java环境安装包下载路径:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlTomcat安装包下载路径:https://tomcat.apache.org/download-90.cgijpress软件下载:http://jpress.io/downloadJava环境安装上传j
大数据组件ClickHouse介绍(场景、优劣势、性能)
坚持是一种态度
大数据开发 ClickHouse 大数据 clickhouse 数据库 列式数据库
大数据组件ClickHouse介绍简介使用场景优势与劣势优势劣势性能单个查询吞吐量处理短查询的延时时间处理大量短查询数据写入性能查询性能简介clickhouse是一个高性能的列式存储分析数据库管理系统,由俄罗斯搜索引擎公司yandex开发。clickhouse具有以下特点高性能:clickhouse优化了查询和数据压缩算法,支持多维度数据分析和快速聚合查询。分布式:clickhouse采用共享无状
MySql-MySqlConnector
DataLu
MySql-debezium mysql 数据库 数据库开发 大数据 开源 java
提示:MySqlConnector类的主要职责是从MySQL数据库中捕获数据变更,并将这些变更以事件的形式发布到Kafka中。这使得下游的应用程序可以通过订阅Kafka主题来实时获取MySQL数据库中的变更信息。文章目录前言一、核心功能二、代码分析总结前言提示:MySqlConnector类是一个关键组件,它负责设置和管理整个数据捕获流程,从配置到数据库连接,再到数据变更事件的捕获和发送。这对于实
DB2-Db2StreamingChangeEventSource
DataLu
DB2-debezium 数据库 数据库开发 大数据 开源
提示:Db2StreamingChangeEventSource类主要用于从IBMDb2数据库中读取变更数据捕获(CDC,ChangeDataCapture)信息。CDC是一种技术,允许系统跟踪数据库表中数据的更改,这些更改可以是插入、更新或删除操作。在大数据和实时数据处理场景中,CDC可以用来同步数据到其他系统,比如数据仓库、数据湖或者流处理平台如ApacheKafka。文章目录前言一、核心功能
DB2-Db2Connection
DataLu
DB2-debezium 数据库 大数据 数据库开发 开源
提示:Db2Connection主要负责与DB2数据库的交互,特别针对CDC功能,提供了获取和处理数据库更改日志的能力,同时包含数据库连接管理、查询执行和结果处理的通用功能文章目录前言一、核心功能二、代码分析总结前言提示:Db2Connection类旨在简化与Db2数据库的交互,提供了一套全面的数据库操作接口,特别是针对需要利用Db2的变更数据捕获能力的场景。通过这个类,开发者可以更方便地执行数据
深入探索数据库世界:SQLite、Redis、MySQL 与数据库设计范式
巴依老爷coder
数据库 数据库 sqlite redis 网络安全 mysql sql database
数据库深入探索数据库世界:SQLite、Redis、MySQL与数据库设计范式一、SQLite数据库全方位解析(一)创建与基本操作(二)数据存储与表结构设计(三)数据操作:增删改查(四)与C语言联合使用(五)防止SQL注入二、Redis数据库深度剖析(一)数据存储类型与独特结构(二)数据持久化策略(三)卓越性能表现与应用场景三、MySQL数据库概览(一)创建数据库与表(二)数据操作与C语言交互四、
MySQL系列之(一)---MySQL使用方法总结(不断更新)
Frodo先生
MySQL 不断更新系列
MySQL的使用方法总结在这里先标注上个人认为其他朋友总结的最好的MySQL的学习笔记:这个网站是一大佬博客,名字叫格物,特别值得学习,还有资料可以学习一千行MySQL学习笔记MySQL复习笔记(实例全)1.数据库的介绍数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除、查询等操作。2.数据库的分类关系型数据库非关系型数据库关系型数据库:是指采
Word/excel/df文档转图片返回前端
p393975269
图片转换工具aspose 文档转图片出现空心方格乱码 文档转图片自定义字体
导入jarcom.asposeaspose-words13.9.0.0com.asposeaspose-cells8.5.2commons-iocommons-io2.6org.apache.pdfboxpdfbox2.0.8org.apache.pdfboxfontbox2.0.8controller层从本地读取文件信息publicclassWordToPngController{publics
我的开发技术栈
pigdreams
软件设计师 android java
前言软件开发需要涉及的知识点非常多,要完成一个项目更是需要各方面的知识配合,从事Android开发这些年,从Java知识到Android知识,接触到的技术点很多,但是缺少一个对于自身的全方面总结,现在终于把自己所有掌握到的技术点进行一次梳理。目的在于知晓自己的不足,从而针对性地弥补不足。Java技术栈Android技术栈需要成长的知识点序号知识点1LSP-里氏替换原则2桥接模式(BridgePat
【redis】redis 查看连接数
九师兄
缓存-redis redis 数据库 java
1.概述redis-cli连接服务器#无密码./redis-cli#有密码登录./redis-cli-a${pas}#切换数据库默认是0,不用切换select$database查看连接数允许最大连接数具体客户端连接最后的cmd是执行的命令类型
Redis 与 SQLite 的完美结合:深入探究 Redka 项目
youyouiknow
tech-review redis sqlite 后端 架构 数据库 缓存
随着数据存储和访问需求的不断增长,不同类型的数据库在各自的领域中发挥着重要的作用。Redis以其高性能的内存数据库特性,广泛应用于需要快速响应的场景;SQLite则以其轻量级的嵌入式关系数据库,被广泛应用于移动设备和小型应用中。那么,如果将两者的优点结合起来,会产生怎样的火花呢?Redka就是这样一个旨在利用SQLite重新实现Redis优秀部分的项目,同时保持与RedisAPI的兼容性。一、Re
使用aspose.words将Word转为PDF
平平无奇路人甲
java工具类 java
使用aspose.words将Word转换为PDF最近整理的代码,所以记录一下,也是参考了CSDN其他大佬的,但是太久忘了是谁了。话不多说上代码maven引用com.asposeaspose-words15.8.0jdk16不过阿里云maven库里好像没有,我是官网上下载了个jar包,放入本地库中。aspose官网下载地址CSDN下载地址
从 UUID 到 UUIDv7:唯一标识符的演进
俞凡 DeepNoMind
后端
本文主要介绍UUID从v1到v8的演进历程,特别详细解读了最新的UUIDv7和UUIDv8,介绍了UUID在分布式系统和数据库索引中的应用和优势。原文:FromUUIDtoUUIDv7andBeyond:TheEvolutionofUniqueIdentifiers0190dffef1ad726bd83fab761dd389c6你在数据库或系统中见过这样一串数字吗?它很可能就是UUID。这并不是一
分支限界法 01背包 java_分支限界法解决01背包问题
weixin_39530509
分支限界法 01背包 java
分支限界法和之前讲的回溯法有一点相似,两者都是在问题的解的空间上搜索问题的解。但是两者还是有一些区别的,回溯法是求解在解的空间中的满足的所有解,分支限界法则是求解一个最大解或最小解。这样,两者在解这一方面还是有一些不同的。之前回溯法讲了N后问题,这个问题也是对于这有多个解,但是今天讲的01背包问题是只有一个解的。下面就讲讲分支限界法的基本思想。分支限界法常以广度优先或以最小消耗(最大效益)优先的方
mysql脏读解决方案_MySQL数据库的核心知识点
杜绍斐 DUSHAOFEI
mysql脏读解决方案
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。数据库的使用,是
类加载的过程
码农小旋风
后端
类加载的过程类加载过程包括5个阶段:加载、验证、准备、解析和初始化。加载加载的过程“加载”是“类加载”过程的一个阶段,不能混淆这两个名词。在加载阶段,虚拟机需要完成3件事:通过类的全限定名获取该类的二进制字节流。将二进制字节流所代表的静态结构转化为方法区的运行时数据结构。在内存中创建一个代表该类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。获取二进制字节流对于Clas
JVM 性能调优
码农小旋风
后端
JVM性能调优在高性能硬件上部署程序,目前主要有两种方式:通过64位JDK来使用大内存;使用若干个32位虚拟机建立逻辑集群来利用硬件资源。使用64位JDK管理大内存堆内存变大后,虽然垃圾收集的频率减少了,但每次垃圾回收的时间变长。如果堆内存为14G,那么每次FullGC将长达数十秒。如果FullGC频繁发生,那么对于一个网站来说是无法忍受的。对于用户交互性强、对停顿时间敏感的系统,可以给Java虚
java development kit - 11 - jdk下载安装、环境变量设置
「已注销」
java
目录JavaSE(StandardEdition,标准版)-11jdk下载jdk-11.0.6_windows安装设置环境变量JavaSE(StandardEdition,标准版)-11jdk下载如果懒得去官网下载可以直接在下面这个下载,然后跳过这一步,这个链接提供的是jdk11.0.6的Windows版本。官网其实也很坑,下载页面有时显示不出来,然后下载可能要注册登录。百度云--jdk-11.0
JAVA菜鸟从零开始----基本概念篇
助助助助助手
学习总结 java 学习 spring boot
JAVA菜鸟从零开始----基本概念篇trycatch快捷键ctrl+alt+t0.基本注解@Target({ElementType.FIELD,ElementType.ANNOTATION_TYPE}):设置注解的作用范围@RequestParam注解:进行请求参数的映射配置@ResponseBody注解:用来表示将控制器方法的返回值直接作为响应的响应体的内容发送给客户端@RequestMapp
全面掌握React:2025年学习路径指南
chenNorth。
前端 react react.js 学习 前端
文章目录第一步:Web开发的基石——JavaScript与TypeScript第二步:Web设计的核心——HTML与CSS第三步:进入React的世界第四步:用TailwindCSS进行样式设计第五步:用Shadcn/UI增强你的UI第六步:用ReactHookForm处理表单第七步:用Next.js提升你的技能第八步:用Remix掌握全栈开发第九步:ReactNative+Expo:轻松开发移动
Win10 Java SE Development Kit (JDK) 17.0.1 安装指南:开启您的Java开发之旅
徐尚翔
Win10JavaSEDevelopmentKit(JDK)17.0.1安装指南:开启您的Java开发之旅Win10JavaSEDevelopmentKitJDK17.0.1安装项目地址:https://gitcode.com/Resource-Bundle-Collection/98c12项目介绍在当今的软件开发领域,Java作为一门广泛应用的编程语言,其开发工具包(JDK)的重要性不言而喻。本
探索Java新境界:JDK 15.0.1 Windows 64位安装与环境配置指南
房莺耘
探索Java新境界:JDK15.0.1Windows64位安装与环境配置指南【下载地址】JDK15.0.1Windows64位安装与环境配置指南分享JDK15.0.1Windows64位安装与环境配置指南欢迎使用JDK15.0.1,这是Oracle在2020年发布的Java开发套件的一个更新版本项目地址:https://gitcode.com/Resource-Bundle-Collection/
java封装继承多态等
麦田的设计者
java eclipse jvm c encapsulatopn
最近一段时间看了很多的视频却忘记总结了,现在只能想到什么写什么了,希望能起到一个回忆巩固的作用。
1、final关键字
译为:最终的
&
F5与集群的区别
bijian1013
weblogic 集群 F5
http请求配置不是通过集群,而是F5;集群是weblogic容器的,如果是ejb接口是通过集群。
F5同集群的差别,主要还是会话复制的问题,F5一把是分发http请求用的,因为http都是无状态的服务,无需关注会话问题,类似
LeetCode[Math] - #7 Reverse Integer
Cwind
java 题解 Math LeetCode Algorithm
原题链接:#7 Reverse Integer
要求:
按位反转输入的数字
例1: 输入 x = 123, 返回 321
例2: 输入 x = -123, 返回 -321
难度:简单
分析:
对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但
BufferedOutputStream
周凡杨
首先说一下这个大批量,是指有上千万的数据量。
例子:
有一张短信历史表,其数据有上千万条数据,要进行数据备份到文本文件,就是执行如下SQL然后将结果集写入到文件中!
select t.msisd
linux下模拟按键输入和鼠标
被触发
linux
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices
设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键 模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。
linux/in
ContentProvider初体验
肆无忌惮_
ContentProvider
ContentProvider在安卓开发中非常重要。与Activity,Service,BroadcastReceiver并称安卓组件四大天王。
在android中的作用是用来对外共享数据。因为安卓程序的数据库文件存放在data/data/packagename里面,这里面的文件默认都是私有的,别的程序无法访问。
如果QQ游戏想访问手机QQ的帐号信息一键登录,那么就需要使用内容提供者COnte
关于Spring MVC项目(maven)中通过fileupload上传文件
843977358
mybatis spring mvc 修改头像 上传文件 upload
Spring MVC 中通过fileupload上传文件,其中项目使用maven管理。
1.上传文件首先需要的是导入相关支持jar包:commons-fileupload.jar,commons-io.jar
因为我是用的maven管理项目,所以要在pom文件中配置(每个人的jar包位置根据实际情况定)
<!-- 文件上传 start by zhangyd-c --&g
使用svnkit api,纯java操作svn,实现svn提交,更新等操作
aigo
svnkit
原文:http://blog.csdn.net/hardwin/article/details/7963318
import java.io.File;
import org.apache.log4j.Logger;
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmateso
对比浏览器,casperjs,httpclient的Header信息
alleni123
爬虫 crawler header
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
String type=req.getParameter("type");
Enumeration es=re
java.io操作 DataInputStream和DataOutputStream基本数据流
百合不是茶
java 流
1,java中如果不保存整个对象,只保存类中的属性,那么我们可以使用本篇文章中的方法,如果要保存整个对象 先将类实例化 后面的文章将详细写到
2,DataInputStream 是java.io包中一个数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
车辆保险理赔案例
bijian1013
车险
理赔案例:
一货运车,运输公司为车辆购买了机动车商业险和交强险,也买了安全生产责任险,运输一车烟花爆竹,在行驶途中发生爆炸,出现车毁、货损、司机亡、炸死一路人、炸毁一间民宅等惨剧,针对这几种情况,该如何赔付。
赔付建议和方案:
客户所买交强险在这里不起作用,因为交强险的赔付前提是:“机动车发生道路交通意外事故”;
如果是交通意外事故引发的爆炸,则优先适用交强险条款进行赔付,不足的部分由商业
学习Spring必学的Java基础知识(5)—注解
bijian1013
java spring
文章来源:http://www.iteye.com/topic/1123823,整理在我的博客有两个目的:一个是原文确实很不错,通俗易懂,督促自已将博主的这一系列关于Spring文章都学完;另一个原因是为免原文被博主删除,在此记录,方便以后查找阅读。
有必要对
【Struts2一】Struts2 Hello World
bit1129
Hello world
Struts2 Hello World应用的基本步骤
创建Struts2的Hello World应用,包括如下几步:
1.配置web.xml
2.创建Action
3.创建struts.xml,配置Action
4.启动web server,通过浏览器访问
配置web.xml
<?xml version="1.0" encoding="
【Avro二】Avro RPC框架
bit1129
rpc
1. Avro RPC简介 1.1. RPC
RPC逻辑上分为二层,一是传输层,负责网络通信;二是协议层,将数据按照一定协议格式打包和解包
从序列化方式来看,Apache Thrift 和Google的Protocol Buffers和Avro应该是属于同一个级别的框架,都能跨语言,性能优秀,数据精简,但是Avro的动态模式(不用生成代码,而且性能很好)这个特点让人非常喜欢,比较适合R
lua set get cookie
ronin47
lua cookie
lua:
local access_token = ngx.var.cookie_SGAccessToken
if access_token then
ngx.header["Set-Cookie"] = "SGAccessToken="..access_token.."; path=/;Max-Age=3000"
end
java-打印不大于N的质数
bylijinnan
java
public class PrimeNumber {
/**
* 寻找不大于N的质数
*/
public static void main(String[] args) {
int n=100;
PrimeNumber pn=new PrimeNumber();
pn.printPrimeNumber(n);
System.out.print
Spring源码学习-PropertyPlaceholderHelper
bylijinnan
java spring
今天在看Spring 3.0.0.RELEASE的源码,发现PropertyPlaceholderHelper的一个bug
当时觉得奇怪,上网一搜,果然是个bug,不过早就有人发现了,且已经修复:
详见:
http://forum.spring.io/forum/spring-projects/container/88107-propertyplaceholderhelper-bug
[逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?
comsci
拓扑
如果我们已经在一个工作流的节点中嵌入了可以进行逻辑推理的代码,那么成百上千个这样的节点如果组成一个拓扑网络,而这个网络是可以自动遍历的,非线性的拓扑计算模型和节点内部的布尔逻辑处理的结合,会产生什么样的结果呢?
是否可以形成一种新的模糊语言识别和处理模型呢? 大家有兴趣可以试试,用软件搞这些有个好处,就是花钱比较少,就算不成
ITEYE 都换百度推广了
cuisuqiang
Google AdSense 百度推广 广告 外快
以前ITEYE的广告都是谷歌的Google AdSense,现在都换成百度推广了。
为什么个人博客设置里面还是Google AdSense呢?
都知道Google AdSense不好申请,这在ITEYE上也不是讨论了一两天了,强烈建议ITEYE换掉Google AdSense。至少,用一个好申请的吧。
什么时候能从ITEYE上来点外快,哪怕少点
新浪微博技术架构分析
dalan_123
新浪微博 架构
新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。第一版就是是非常快的,我们可以非常快的实现我们的模块。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。第
玩转ARP攻击
dcj3sjt126com
r
我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。 网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。 ARP也是如此。 以下讨论的机子有 一个要攻击的机子:10.5.4.178 硬件地址:52:54:4C:98
PHP编码规范
dcj3sjt126com
编码规范
一、文件格式
1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。例如:<?php$foo = 'foo';2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。例
linux 脱机管理(nohup)
eksliang
linux nohup nohup
脱机管理 nohup
转载请出自出处:http://eksliang.iteye.com/blog/2166699
nohup可以让你在脱机或者注销系统后,还能够让工作继续进行。他的语法如下
nohup [命令与参数] --在终端机前台工作
nohup [命令与参数] & --在终端机后台工作
但是这个命令需要注意的是,nohup并不支持bash的内置命令,所
BusinessObjects Enterprise Java SDK
greemranqq
java BO SAP Crystal Reports
最近项目用到oracle_ADF 从SAP/BO 上调用 水晶报表,资料比较少,我做一个简单的分享,给和我一样的新手 提供更多的便利。
首先,我是尝试用JAVA JSP 去访问的。
官方API:http://devlibrary.businessobjects.com/BusinessObjectsxi/en/en/BOE_SDK/boesdk_ja
系统负载剧变下的管控策略
iamzhongyong
高并发
假如目前的系统有100台机器,能够支撑每天1亿的点击量(这个就简单比喻一下),然后系统流量剧变了要,我如何应对,系统有那些策略可以处理,这里总结了一下之前的一些做法。
1、水平扩展
这个最容易理解,加机器,这样的话对于系统刚刚开始的伸缩性设计要求比较高,能够非常灵活的添加机器,来应对流量的变化。
2、系统分组
假如系统服务的业务不同,有优先级高的,有优先级低的,那就让不同的业务调用提前分组
BitTorrent DHT 协议中文翻译
justjavac
bit
前言
做了一个磁力链接和BT种子的搜索引擎 {Magnet & Torrent},因此把 DHT 协议重新看了一遍。
BEP: 5Title: DHT ProtocolVersion: 3dec52cb3ae103ce22358e3894b31cad47a6f22bLast-Modified: Tue Apr 2 16:51:45 2013 -070
Ubuntu下Java环境的搭建
macroli
java 工作 ubuntu
配置命令:
$sudo apt-get install ubuntu-restricted-extras
再运行如下命令:
$sudo apt-get install sun-java6-jdk
待安装完毕后选择默认Java.
$sudo update- alternatives --config java
安装过程提示选择,输入“2”即可,然后按回车键确定。
js字符串转日期(兼容IE所有版本)
qiaolevip
TO Date String IE
/**
* 字符串转时间(yyyy-MM-dd HH:mm:ss)
* result (分钟)
*/
stringToDate : function(fDate){
var fullDate = fDate.split(" ")[0].split("-");
var fullTime = fDate.split("
【数据挖掘学习】关联规则算法Apriori的学习与SQL简单实现购物篮分析
superlxw1234
sql 数据挖掘 关联规则
关联规则挖掘用于寻找给定数据集中项之间的有趣的关联或相关关系。
关联规则揭示了数据项间的未知的依赖关系,根据所挖掘的关联关系,可以从一个数据对象的信息来推断另一个数据对象的信息。
例如购物篮分析。牛奶 ⇒ 面包 [支持度:3%,置信度:40%] 支持度3%:意味3%顾客同时购买牛奶和面包。 置信度40%:意味购买牛奶的顾客40%也购买面包。 规则的支持度和置信度是两个规则兴
Spring 5.0 的系统需求,期待你的反馈
wiselyman
spring
Spring 5.0将在2016年发布。Spring5.0将支持JDK 9。
Spring 5.0的特性计划还在工作中,请保持关注,所以作者希望从使用者得到关于Spring 5.0系统需求方面的反馈。