有关数据源的问题,搞掂你,shit!!!

在Spring中配置JNDI数据源 通过以上步骤,我们完成了在Spring中配置JNDI数据源的过程。首先,我们在服务器端配置了JNDI数据源,然后在Spring配置文件中引用了该数据源,并将其绑定到一个Spring bean。最后,我们在应用程序中使用注入的数据源进行数据库操作。通过这种方式,我们可以更方便地管理和使用数据库资源,提高应用程序的灵活性和可维护性。JNDI是Java中用于访问命名和目录服务的API,它可以用于在应用程序中获取数据源并进行数据库操作。本文将详细介绍如何在Spring中配置JNDI数据源,并提供相应的源代码示例。 阅读详情

来源:http://topic.youkuaiyun.com/u/20090510/14/5c119994-b911-4419-aea4-accf1d316eec.html      

    数据源在JDBC中的应用简介众所周知,JDBC(Java数据库连接)是Java 2企业版的重要组成部分。
它是基于SQL层的API。通过把SQL语句嵌入JDBC接口的方法中,用户可以通过Java程序执行几乎所有的数据库操作。
JDBC只提供了接口,具体的类的实现要求数据库的设计者完成。
通过生成这些接口的实例,即使对于不同的数据库,Java程序也可以正确地执行SQL调用。

所以对于程序员来说,不必把注意力放在如何向数据库发送SQL指令,因为程序员需要了解和用到的只是JDBC的接口,只有在极少数情况下会用到面向特定数据库的类,例如程序员希望使用ORACLE的扩展API。
在JDBC程序中,首先需要做的是实现与数据库的连接。
在示例程序中,我们使用的是ORACLE8i的JDBC包。连接数据库通常需要实现以下几个步骤:
1. 注册数据库驱动程序(driver)。可以通过调用java.sql.DriverManager类的registerDriver方法显式注册驱动程序,也可以通过加载数据库驱动程序类隐式注册驱动程序。
2. 建立连接。调用java.sql.DriverManager类的getConnection()方法可以建立与数据库的连接。

从实际应用的角度出发,我们可以看出采取这种方式连接到数据库存在几个问题。
第一是安全性问题,由于程序代码中包含用户名和密码,其他人如果能得到bytecode,可以通过反编译工具获得用户名和密码。第二是代码的可移植性问题。如果希望连接的数据库名称或用户名有所更改,程序员需要修改源程序,然后把修改过的程序发送给用户。也就是说,软件无法脱离数据库独立存在。这样不仅会大大提高软件的成本,也不利于软件本身的发展。还可能出现这样的情况:在某些情况下,提供数据的机构不希望数据库的用户名和密码让编写程序的程序员知道知道。
这样就提出了一个问题,如何使Java和数据库之间建立连接时隐藏一些敏感的信息。

数据源(Data Source)及JNDI数据源是在JDBC 2.0中引入的一个概念。
在JDBC 2.0扩展包中定义了javax.sql.DataSource接口来描述这个概念。
如果用户希望建立一个数据库连接,通过查询在JNDI服务中的数据源,可以从数据源中获取相应的数据库连接。
这样用户就只需要提供一个逻辑名称(Logic Name),而不是数据库登录的具体细节。
在这里有必要简单介绍一下JNDI。JNDI的全称是Java Naming and Directory Interface, 可以理解为Java名称和目录服务接口。JNDI向应用程序提供了一个查询和使用远程服务的机制。这些服务可以是任何企业服务。对于JDBC应用程序来说,JNDI提供的是数据库连接服务。当然JNDI也可以向数据库提供其他服务,但是这超出了本文范围,在此不做论述。其实JNDI并不难理解。简单来说,名称服务提供了一个把文件,打印机,服务器等实体映射到一个逻辑名称的机制。例如在操作系统中的名称服务就把打印机映射到一个I/O端口。而目录服务可以理解为名称服务的一个扩展,它允许在服务中的各项拥有自己的属性。又以打印机为例,打印机可以是彩色打印机,支持双面打印,支持网络打印,支持高速打印等。所有这些打印机的属性都可以储存在目录服务中,和相应的打印机联系起来。一些常见的目录服务有NIS,NIS+,LDAP和Novell的NDS等。JNDI使应用程序通过使用逻辑名称获取对象和对象提供的服务,从而使程序员可以避免使用与提供对象的机构有关联的代码。例如在下面的例子中使用了在JNDI中的数据源,程序员就不需要提供Oracle8i驱动程序的名称,这样代码的移植能力就更强。
下面详细介绍一下数据源和javax.sql.DataSource接口。
在数据源中存储了所有建立数据库连接的信息。就象通过指定文件名你可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。javax.sql.DataSource接口定义了如何实现数据源。
在该接口中定义了九个属性。
dataSourceName String 数据源接口实现类的名称。
description String 对数据源的描述。
networkProtocol String 和服务器通讯使用的网络协议名。
password String 用户登录密码。
portNumber Int 数据库服务器使用的端口,缺省值为1521。
serverName String 数据库服务器名称。
user String 用户登录名。

在javax.sql.DataSource接口中定义了很多方法通过这些方法,程序员可以获得建立连接需要的所有信息。
需要注意的是,程序员不可以获取登陆密码,这就在一定程度上保证了安全性。需要注意的另一点是所有的方法都是synchronized方法,这是为了保证应用程序的线程安全(Thread-safe)。
如果在调用该方法时,即使数据源实例发生变化不会影响程序的正确运行。
然后通过该数据源对象进行数据库操作。在这个例子中,程序和名称服务环境都是在同一台计算机上运行。
在实际的应用中,程序可以通过RMI或CORBA向名称服务环境注册或查询对象。例如在一个服务器-客户机结构中,客户机上的应用程序只需要知道数据源对象在服务器名称服务环境中的逻辑名称,就可以通过RMI向服务器查询数据源,然后通过建立与数据库的连接.这样就可以解决本文最开始提出的问题。

*******************************************************************

******************************************************************

以下是两一个论坛的解答:http://topic.youkuaiyun.com/u/20080713/00/c2a3e36d-d692-4343-9428-8b8f25d3ebe7.html

     主要是方便管理
1 你肯定要链接数据库
2 那么你肯定要用户名和密码
3 正式的数据库和应用服务器应该是单独的人员管理,而不是开发人员
4 密码会定期修改
5 如果链接数据库是各自书写代码和配置,则运行环境的密码修改将会是一个噩梦,一不小心就忘记一个
6 所以,大家全部到一个数据源那里获取连接。管理员只需要修改数据源的配置,而无需修改应用的配置
7 如果数据库的地址变更,则同样不会影响到应用,也只是修改数据源
8 开发人员无需知道正式数据库的密码

 

 

1 在java程序中必须要配置下数据源 因为你的web容器里必须加载你的数据源。(可以是全局的,也可以是单独的数据源)
2 数据源创建成功侯其实也就成为了一个连接池,他可以很方便的关类web用户访问数据库的连接问题。不过也有他自己的缺点。
3 比如还有的报表工具的时候,他也需要配置数据源,来获得数据库的连接。

 

 

在控制面板那里配置数据源是采用 ODBC 的方式,这种是 JDBC 驱动程序的第一种类型。
这种驱动的方式是通过 ODBC 驱动程序与数据库打交道,而我们在 Java 程序中再使用
JDBC/ODBC 桥是将 JDBC 程序翻译成 ODBC 认识的东西。

ODBC 数据源的方式是一种很古老的方式,速度不用去说了(因为通过桥的转换),现在
一般很少使用了。当然了,如果某个数据库没有提供 JDBC 驱动程序,而只提供了 ODBC
驱动的话,那还是可以使用这种方式的,比如 Access。

而后面说到的在 web.xml 中配置的数据源与之前的 ODBC 数据源不是同一个概念,前者
是 JDBC 规范中的接口,全称为 javax.sql.DataSource,而后者可以称之为一种 ODBC 驱
动程序
。

据 JDBC 规范所称,DataSource 是获得数据库连接对象 Connection 的首选方法,因为
DataSource 一般都绑定在 JNDI 上,在代码中只通过 JNDI 的名称就可以获得该对这个对
象,并且通过这个对象可以直接获得数据库连接。而这个名字就是在 web.xml 中配置的
<res-ref-name> 中的名字,web.xml 中只是引用一下资源,在服务器上还得配置具体的参
数,如 Tomcat 中是在 server.xml 中配置一下。这个 DataSource 是由 JDBC 驱动实现
者实现的,在 Tomcat 中是使用 JNDI 来进行管理的,可以对其进行具体的配置,比如:
连接池的最大、最小数量、超时时间等参数,这些是由 Tomcat 来管理的。

DataSource 可以绑定在 JNDI 中只是一种方式,它还可以用于连接池的实现,比如:在
C3P0 中也实现并扩展了 DataSource,用于管理数据库的连接对象。实际上 Tomcat JNDI
上的数据源在内部也是采用 DBCP 的 DataSource 实现的。

DataSource 在 JDBC 2.0 规范中作为可选的,在 3.0 中正式地纳入到 JDBC 规范中,下面
这个是 JDBC 4.0 规范的下载地址,里面对 DataSource 有详细的描述,有兴趣的话可以去
看看:

http://jcp.org/aboutJava/communityprocess/final/jsr221/index.html

 

 

 

 

【入门AUTOSAR网络管理测试】CANoe测试T_WakeUp时间 随着智能电动汽车行业的快速发展,目前AUTOSAR网络管理也得到了广泛应用,AUTOSAR网络管理测试也是汽车网络测试中非常重要的环节,NM问题导致的汽车ECU不能唤醒、电瓶亏电等问题,对于新入门AUTOSAR网络管理测试的同学不清楚如何开展测试,那么本章节就主要给大家介绍网络管理中T_WakeUp时间如何测试。【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读。 阅读详情

相关推荐

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

JAVA_使用JNDI获取数据源的连接配置步骤:

使用JNDI获取数据源的连接配置步骤: Tomcat中配置数据源的步骤: (1) 在Tomcat中加入数据库的驱动文件 讲数据库驱动包ojdbc14.jar拷贝到Tomcat的lib目录中 F:\tomcat\common\lib (2) 配置Tomcat的conf/context.xml 添加节点 auth="Cont

java_zhong1990的专栏 3006

【Matlab 六自由度机器人】基于改进型D-H参数的运动学建模与蒙特卡洛工作空间分析

本文详细介绍了如何使用改进型D-H参数法为六自由度机器人建立运动学模型,并利用Matlab Robotics Toolbox实现正运动学计算与可视化。通过蒙特卡洛法对机器人工作空间进行分析,生成三维点云图以直观展示其可达范围,为机器人选型与任务规划提供关键依据。

weixin_29040367的博客 438

数据源的作用

数据源是一种用来提高数据库连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据源实例时,系统会一次性地创建多个数据库连接,并把这些数据库连接保存在连接池中。当程序需要进行数据库访问时,无须重新获得数据库连接,而是从连接池中取出一个空闲的数据库连接,当程序使用数据库连接访问结束后,无须关闭数据库连接,而是将数据库连接归还给连接池即可。通过这种方式,就可比避免频繁地获取数据库连接,关闭数据库连接所导致的性能下降 ...

m0_70627393的博客 1402

银河麒麟(桌面版/服务器版)远程桌面配置全攻略:XRDP与VNC实战指南

本文提供了银河麒麟操作系统(桌面版与服务器版)配置远程桌面的完整实战指南。详细对比并演示了XRDP与VNC两种主流方案的安装、配置与连接步骤,涵盖从环境准备、软件安装、服务启动到客户端连接的全过程,并针对常见的黑屏、连接失败等问题给出了有效的排坑解决方案,帮助用户实现跨平台的便捷图形化远程管理。

b0c1d2的博客 810

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 496

JNDI学习总结(一)——JNDI数据源的配置

一、数据源的由来   在Java开发中,使用JDBC操作数据库的四个步骤如下:     ①加载数据库驱动程序(Class.forName("数据库驱动类");)     ②连接数据库(Connection con = DriverManager.getConnection();)     ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)     ④关闭数据库,释放连接(con....

xiaokanfuchen86的博客 1836

CocosCreator 面试题(十七)Cocos creator 固定宽度与固定高度的底层原理是什么?Cocos creator是如何做适配的?

通过固定宽度或固定高度的适配方式,可以使游戏在不同屏幕尺寸上保持一定的一致性,确保游戏中的元素的大小和位置相对稳定。具体选择哪种适配方式取决于你的游戏需求和设计考虑。在 Cocos Creator 中,你可以通过设置「设计分辨率」和使用相对坐标和布局方式来实现固定宽度或固定高度的适配。总之,Cocos Creator 提供了多种适配方式和工具,帮助你在不同屏幕尺寸上保持游戏画面的一致性。在 Cocos Creator 中,固定宽度和固定高度是两种常见的适配方式,用于在不同屏幕尺寸上保持游戏画面的一致性。

w风雨无阻w的专栏 1688

JNDI和数据源

什么是JNDI JNDI:Java name directory interface,Java命名和目录接口。具体是什么,因为自己还不是特别熟悉,就不强行解释了,引用以下一段话解释: JDBC和JNDI都是一种规范,是一组统一的API,里面包含了一组接口规范要求服务提供商来实现,包含了一组应用规范供编程人员使用,这样的好处是有利于编程人员可以用同一种方式来访问不同的数据库,使用同一种方式...

哈哈哈哈哈哈哈 5051

从Axure转Figma?这篇编组、缩放、圆角、评论的对比指南帮你无缝切换

本文为资深Axure设计师提供了向Figma无缝迁移的实战指南。文章深度对比了编组、缩放、圆角、评论等核心操作,重点解析了Figma独特的自动布局、组件系统和实时协作功能,旨在帮助用户快速适应新工具,实现设计思维与工作效率的跃迁。

tomato的博客 850

innovus:Clock Gating Check设置与报告

看图后发现,在设置clock gating check之前报告也会有clock gating check的值,这个就是因为timing library中会像reg一样定 library setup time值,如下图。我们常用set_clock_gating_check -setup去过约束Place阶段reg2cgate的时序,以防CTS后由于tree不平导致的时序违例。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1011

什么是JNDI,Spring如何使用JNDI配置多个数据源?

在使用JNDI前需要了解,什么是JNDI?JNDI(Java Naming and Directory Interface ),即Java命名和目录接口。是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用...

开发者导航 2989

3 ATK2(AUTOSAR OS)代码移植-目标硬件及编译环境简介

该部分介绍ATK2代码移植的目标硬件以及编译环境

xiaoduanduansad的博客 718

springboot内置tomcat集成jndi多数据源

我们看下百度百科的描述JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。看完了之后,是不是感觉很抽象?这里我们需要理解这么几点(1)JNDI是J2EE的规范之一。

刻苦的樊同学 907

深度学习工具包 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")

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

聊一聊什么是JNDI数据源

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是Java平台上的一种标准服务,它允许Java应用程序通过名称查找资源。这块是不是有点耳熟?我们的微服务里面的注册中心,调用方通过服务名从注册中心寻址服务方的地址)。它基本上是一个获取对象实例的接口,如数据源(如javax.sql.DataSource)、JMS资源(如javax.jms.ConnectionFactory)或任何类型的Java对象。

G探险者的博客 713

IEM模型,地表粗糙度模拟

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

SpringBoot内置Tomcat实现JNDI多数据源配置

文章目录一、数据源连接池介绍二、SpringBoot内置Tomcat实现JNDI多数据源配置1、添加依赖2、启动类注解3、配置dataSource数据源信息4、配置yml文件5、测试三、其他 一、数据源连接池介绍 在Java开发中,使用JDBC操作数据库包括以下四个步骤:    ① 加载数据库驱动程序:Class.forName(“数据库驱动类”);    ② 连接数据库:Connection con = DriverManager.getConnection();    ③ 操作数据库:Prep

qq_45397526的博客 2412

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JNDI(Java Naming and Directory Interface)资源是Java平台的一种标准服务,用于在分布式系统中查找、共享和管理资源

JNDI(Java Naming and Directory Interface)是Java平台提供的一个标准API,用于统一访问各种命名和目录服务(如LDAP、DNS、RMI注册表、CORBA COS命名服务等)。它不直接提供命名/目录服务,而是作为抽象层,通过可插拔的服务提供者接口(SPI)与底层具体实现(如`com.sun.jndi.ldap.LdapCtxFactory`)解耦。

[Blog][Domain] programb.blog.youkuaiyun.com 772

JNDI数据源管理

在这个Servlet中,我们首先通过InitialContext获取初始上下文,然后使用lookup方法通过JNDI名称"java:/comp/env/jdbc/myDataSource"查找数据源。在这个配置中,name属性指定了数据源的JNDI名称,username和password属性指定了数据库的用户名和密码,driverClassName属性指定了数据库驱动类,url属性指定了数据库的连接URL。在编写Servlet时,请确保JNDI名称与Tomcat配置中的数据源名称一致。

猿脑2.0的博客 566

数据源的配置及使用

JDBC操作的步骤:  1、 加载驱动程序  2、 连接数据库  3、 操作数据库  4、 关闭数据库,释放连接 也就是说,所有的用户都需要经过此四步进行操作,但是这四步之中有三步对所有人都是一样的,而所有人只有在操作上是不一样,那么这就造成了性能的损耗。 那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从...

systemxgl的专栏 473

JNDI数据源案例分析

文章中讨论了使用JNDI数据源获取数据库连接对象并进行数据查询和输出的案例。

qrhua939的专栏 1152

什么是JNDI?

JNDI(Java Naming and Directory Interface):Java 命名与目录接口 JNDI作用: 1)JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。 2)所有与系统外部的资源的引用,都可以通过JNDI定义和引用。 没有JNDI的做法: public class JdbcTemplateDemo1 { public static void main(String[] args) { //准备数据源:Spring的内置数据源

devilzcl的博客 1382

JNDI配置数据源

7. JNDI JNDI是 Java 命名与目录接口(Java Naming and Directory Interface) 典型的使用例子就是数据库连接配置: 如果不使用jndi的话,我们java连接mysql就需要 自己配置url账号密码等,如果后期修改mysql会很麻烦 Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader()); conn=DriverManager.

本作者:想花 2695

Spring Boot中最佳实践:数据源配置详解

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Spring Boot中如何进行最佳实践的数据源配置。

聚娃科技开发者博客 2369

学习SSM的第二天

文章目录@[TOC](文章目录)前言一、Spring配置数据源1.数据源的作用2.数据源的开发步骤1.数据源的手动创建2.Spring配置数据源二、Spring注解开发1.Spring原始注解2.Spring新注解三、Spring整合Junit1.原始Junit测试Spring的问题2.Spring集成Junit步骤 前言 一、Spring配置数据源 1.数据源的作用 1.数据源是为了提高程序性能而出现的 2.事先实例化数据源,初始化部分连接资源 3.使用连接资源时从数据源中获取 4.使用完毕后将连接资源归

WM_1997的博客 1928

对JNDI数据源的理解

一:JNDI数据源的作用 1:在没有使用JNDI数据源时,程序员开发访问MySQL数据库的应用,需要将一个对 MySQL JDBC 驱动程序类的引用进行硬编码,并通过使用适当的 JDBC URL 连接到数据库;这样一来会出现以下问题: (1)数据库服务器名称、用户名和口令都可能需要改变,由此引发JDBC URL需要修改; (2)数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC...

ITWANGBOIT的博客 889

JNDI数据源配置(eclipse)

​ JNDI数据源配置(Eclipse)本地tomcat的conf文件夹下有一个context.xml,把下面代码复制上去。context.xml位置:第二种方法:如果没有效果的话,可以把修改好的context.xml复制到META-INF里面,就可以解决了。

NoKris的博客 1257
上一篇: 浅谈final,finalized,finally ,static 用法
下一篇: 多线程和多进程的区别(小结 转载)
Java_Cowboy
博客等级 码龄19年 59粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值