将下载好的文件夹解压到home下面,类中有变量

2019-10-06 作者:编程   |   浏览(144)

本文是抄的.文章出处:

每次一打开Windows都卡的要死,所以决定在Linux下配置JavaEE环境,网上搜了很多教程文档,但总是有各种问题,最后想起实验室有人配置过就找到了小美以前写的文档,在配置中出现问题也可以及时请教小美,最后终于成功完成了配置。<h2>安装JDK</h2><h4>更新软件包:</h4>

volatile关键字修饰的变量可以在多个线程之间保持“可见性”。这样的解释有些抽象,我们来看一个例子。假设下面这种场景:我们来模拟一个网站访问计数器。定义一个NetAccessor类,类中有变量counter用来记录网站访问总数,默认counter等于0。

一.什么是DbUtils组件

小鱼儿玄机30码,Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。

下载组件,引入jar文件:commons-dbutils-1.6.jar 密码:tyghmaven环境配置:

 <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency>

需要用到线程池的不同场景.

sudo apt-get update
public class NetAccessor { public static int counter = 0; public static void access(){ counter = counter  1 ; }}

二.核心类QueryRunner

带有Connection的

Int update(Connection conn, String sql, Object param);执行更新带一个占位符的sqlInt update(Connection conn, String sql, Object… param);执行更新带多个占位符的sqlInt[] batch(Connection conn, String sql, Object[][] params) 批处理T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params) 查询方法

不带有Connection的

Int update( String sql, Object param); 执行更新带一个占位符的sqlInt update( String sql, Object… param);执行更新带多个占位符的sqlInt[] batch( String sql, Object[][] params); 批处理

利用Executors类提供了4种不同的线程池:newCachedThreadPool, newFixedThreadPool, newScheduledThreadPool, newSingleThreadExecutor

小鱼儿玄机30码 11.jpg

假设有两个客户访问了这个网站,即有两个线程A和B,A会调用access方法给counter加1,然后B也会调用access给counter加1,此时按我们的设想,网站的总访问量应该为2。代码如下所示,运行一下看看结果是多少。

注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(DataSource ds);

创建一个可缓存的无界线程池,该方法无参数。当线程池中的线程空闲时间超过60s则会自动回收该线程,当任务超过线程池的线程数则创建新线程。线程池的大小上限为Integer.MAX_VALUE,可看做是无限大。

<h4>安装openjdk-8-jdk:</h4>

public class NetAccessor { public static int counter = 0; public static void access(){ counter = counter   1; } public static void main(String[] args) { Thread A = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub access; Thread B = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub access; A.start(); B.start(); System.out.println("Now the total access count is : " counter); }}

1.更新操作(包括delete 、insert、 update)

public void cachedThreadPoolDemo(){ ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i  ) { final int index = i; cachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() ", index=" index); } }); try { Thread.sleep; } catch (InterruptedException e) { e.printStackTrace(); } }}
sudo apt-get install openjdk-8-jdk

多次运行代码,有时我们会看到正确的结果

例1:
 @Test public void delete() throws Exception { String sql = " delete from car where id =? "; conn = ConnUtil.getConnextion(); // 创建DbUtils核心工具类对象 QueryRunner qr = new QueryRunner(); qr.update(conn, sql, 3); DbUtils.close; }

结果测试

小鱼儿玄机30码 2小鱼儿玄机30码 3小鱼儿玄机30码 4

结果

<h4>检查是否安装成功,输入命令:</h4>

Now the total access count is : 2
例2:
 public void save(CarBean carBean)throws Exception { String sql = "INSERT INTO car (carname,carEntity) VALUES; " ; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); // 批量插入 qr.batch(conn, sql, new Object[][]{ {"宝马","2017"},{"奔驰","2017"} }); // 关闭 conn.close(); }

小鱼儿玄机30码 5image.png小鱼儿玄机30码 6小鱼儿玄机30码 7

pool-1-thread-1, index=0pool-1-thread-1, index=1pool-1-thread-1, index=2pool-1-thread-1, index=3pool-1-thread-1, index=4
java -version

有时,我们会看到下面这种结果

2.查询操作

DbUtils提供的封装结果的一些对象:

1)BeanHandler: 查询返回单个对象2) BeanListHandler: 查询返回list集合,集合元素是指定的对象

  1. ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
    1. ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
    2. ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
    3. MapHandler 查询返回结果的第一条记录封装为map
  2. MapListHandler 查询返回结果封装为List<map>
@Test public void carFind() throws Exception { String sql = " select * from car where id = ? "; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); //查询 CarBean carBean= qr.query(conn, sql, new ResultSetHandler<CarBean>() { //自定义 如何封装一个CarBean对象 public CarBean handle(ResultSet resultSet) throws SQLException { if(resultSet.next { CarBean carBean = new CarBean(); carBean.setId(resultSet.getInt; carBean.setCarname(resultSet.getString("carname")); carBean.setCarname(resultSet.getString("carEntity")); return carBean; } return null; } },1); System.out.println(carBean.getId() "" carBean.getCarname() "" carBean.getCarEntity; }

小鱼儿玄机30码 8

@Test public void carFind() throws Exception { String sql = " select * from car where id = ? "; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); //查询 CarBean carBean = qr.query(conn,sql,new BeanHandler<CarBean>(CarBean.class),2); System.out.println(carBean.getId() " " carBean.getCarname() " " carBean.getCarEntity; conn.close(); }

小鱼儿玄机30码 9

@Test public void carFind() throws Exception { String sql = " select * from car where id = ? "; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); //查询 List <CarBean> carBean = qr.query(conn,sql,new BeanListHandler<CarBean>(CarBean.class),4); System.out.println(carBean.get.getId() " " carBean.get.getCarname() " " carBean.get.getCarEntity; conn.close(); }

小鱼儿玄机30码 10

@Test public void carFind() throws Exception { String sql = " select * from car"; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); //查询 Map<String,Object> carBean = qr.query(conn,sql,new MapHandler; System.out.println; conn.close(); }

小鱼儿玄机30码 11image.png

@Test public void carFind() throws Exception { String sql = " select count from car"; conn = ConnUtil.getConnextion(); QueryRunner qr = new QueryRunner(); //查询 Long carBean = qr.query(conn,sql,new ScalarHandler<Long>; System.out.println; conn.close(); }

小鱼儿玄机30码 12

本文由小鱼儿玄机30码发布于编程,转载请注明出处:将下载好的文件夹解压到home下面,类中有变量

关键词: 小鱼儿玄机30码