一、将增删改方法合并,优化代码

  • 第十七篇的UserPOImpl.java类代码可以进行优化,因为增删改方法用的都是同一种执行方法executeUpdate(),对十七篇的例子进行优化如下:

2.1  搭建实验环境

    A. 启动mysql数据库,即开启mysql/bin/mysqld.exe。

    B. 创建数据库,并创建所需的表。如下图(在创建数据库和表的时候请对其编码设置为utf-8编码否则后期容易出错):

  2.2  创建一个web工程,并导入数据库驱动包。

  2.3  编写javabean,即PO对象又叫持久化对象,此对象的成员属性与数据库的列一一对应,本例中数据库与userName和passWd两列,则PO对象中也应该有这两个成员属性。

UserPO.java

package po;

public class UserPO {
private String userName;
private String passWd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWd() {
return passWd;
}
public void setPassWd(String passWd) {
this.passWd = passWd;
} }

解析: javabean对象中成员属性应该是private的,且必须要有get()和set()方法。

  2.4  创建DAO包,专门用于操作数据(即与数据库互动,进行增删改差操作),一般有接口类和实现类。

  • UserPOI.java

     package dao;
    
     import java.util.List;
    
     import po.UserPO;
    
     public interface UserPOI {
    public boolean addUser(UserPO user); //增
    public boolean delUser(String userName); //删
    public boolean uptUser(UserPO user); //修改
    public List<UserPO> gets(); //查
    }
  • UserPOImpl.java()
 package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import po.UserPO; public class userPOImpl implements UserPOI { public boolean addUser(UserPO user) { //增加 String sql="insert into user values('"+user.getUserName()+"','"+user.getPassWd()+"') ";
return cud(sql);
} public boolean delUser(String userName) { //删除 String sql="delete from user where userName='"+userName+"'"; return cud(sql);
} public boolean uptUser(UserPO user){ //修改
String sql="update user set passWd='"+user.getPassWd()+"'where userName='"+user.getUserName()+"'";
return cud(sql);
} public List<UserPO> gets() { //查找全部
List<UserPO> list=new ArrayList<UserPO>();
Connection conn=null;
Statement stat=null;
ResultSet res=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8", "root", "");
stat=conn.createStatement();
res=stat.executeQuery("select * from user");
while(res.next()){ //不能是if
UserPO user=new UserPO();
user.setUserName(res.getString("userName"));
user.setPassWd(res.getString("passWd"));
list.add(user); } } catch (Exception e) { e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && stat.isClosed()){
stat.close();
}
if(res!=null && res.isClosed()){
res.close();
}
}catch(Exception e){
e.printStackTrace();
} } return list;
} public boolean cud(String sql){ //增删改方法合并
boolean flag=false;
Connection conn=null;
Statement stat=null;
final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
final String USER="root";
final String PASSWORD=""; try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(URL,USER,PASSWORD);
stat=conn.createStatement(); int res=stat.executeUpdate(sql);
flag=(res>0)?true:false; }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && !stat.isClosed()){
stat.close();
}
}catch(Exception e){
e.printStackTrace();
}
} return flag;
} }

  解析:  把增删改方法合并为cud方法,使代码更简便。

  2.5  创建测试类进行测试。

  • UserTest.java
 package test;

 import java.util.List;

 import org.junit.Test;

 import dao.userPOImpl;
import po.UserPO; public class UserTest {
@Test
public void UserPOTest(){
userPOImpl im=new userPOImpl(); UserPO user=new UserPO();
user.setUserName("张三");
user.setPassWd("123");
im.addUser(user);
} @Test
public void userPOget(){
userPOImpl im=new userPOImpl();
List<UserPO> list=im.gets();
for(int i=0;i<list.size();i++)
System.out.println(list.get(i).getUserName()); } @Test
public void delUserTest(){
userPOImpl im=new userPOImpl();
im.delUser("张三");
}
@Test
public void uptUserTest(){
userPOImpl im=new userPOImpl();
UserPO user=new UserPO();
user.setUserName("张三");
user.setPassWd("456");
im.uptUser(user);
}
}
 




二、使用预处理prepareStatement语句优化

  2.1  编写javabean

UserPO.java

package po;

public class UserPO {
private String userName;
private String passWd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWd() {
return passWd;
}
public void setPassWd(String passWd) {
this.passWd = passWd;
} }

  2.2  创建DAO包,专门用于操作数据(即与数据库互动,进行增删改差操作),一般有接口类和实现类。

  • UserPOI.java
 1 package dao;
2
3 import java.util.List;
4
5 import po.UserPO;
6
7 public interface UserPOI {
8 public boolean addUser(UserPO user); //增
9 public boolean delUser(String userName); //删
10 public boolean uptUser(UserPO user); //修改
11 public List<UserPO> gets(); //查
12 }
  • 一般我们专门编写一个DBUtil工具类,以实现数据库的各种操作方法:

DButils.java

 package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.List; public class DButils {
public static boolean cud(String sql,List<Object> list){ //增删改方法合并
boolean flag=false;
Connection conn=null;
PreparedStatement stat=null;
final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
final String USER="root";
final String PASSWORD=""; try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(URL,USER,PASSWORD);
stat=conn.prepareStatement(sql); //对sql语句进行预处理 if(list!=null){
for(int i=0;i<list.size();i++){ //对list中存放的?里的值循环,并对sql中的?赋值
stat.setObject(i+1, list.get(i));
}
} int res=stat.executeUpdate(); //执行预处理语句指令
flag=(res>0)?true:false; }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && !stat.isClosed()){
stat.close();
}
}catch(Exception e){
e.printStackTrace();
}
} return flag;
}
}
  • 编写实现类(UserPOImpl.java)
 package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import po.UserPO; public class userPOImpl implements UserPOI { public boolean addUser(UserPO user) { //增加 String sql="insert into user values(?,?)";
18 List<Object> list=new ArrayList<Object>();
19 list.add(user.getUserName());
20 list.add(user.getPassWd());
21 return DButils.cud(sql,list);
} public boolean delUser(String userName) { //删除 String sql="delete from user where userName=?";
27 List<Object> list=new ArrayList<Object>();
28 list.add(userName);
29 return DButils.cud(sql,list);
} public boolean uptUser(UserPO user){ //修改
String sql="update user set passWd=? where userName=?";
35 List<Object> list=new ArrayList<Object>();
36 list.add(user.getPassWd());
37 list.add(user.getUserName());
38 return DButils.cud(sql,list); } public List<UserPO> gets() { //查找全部
List<UserPO> list=new ArrayList<UserPO>();
Connection conn=null;
Statement stat=null;
ResultSet res=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8", "root", "");
stat=conn.createStatement();
res=stat.executeQuery("select * from user");
while(res.next()){ //不能是if
UserPO user=new UserPO();
user.setUserName(res.getString("userName"));
user.setPassWd(res.getString("passWd"));
list.add(user); } } catch (Exception e) { e.printStackTrace();
}finally{
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(stat!=null && stat.isClosed()){
stat.close();
}
if(res!=null && res.isClosed()){
res.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return list;
}
}

  2.3  创建测试类进行测试。

  • UserTest.java
 1 package test;
2
3 import java.util.List;
4
5 import org.junit.Test;
6
7 import dao.userPOImpl;
8 import po.UserPO;
9
10 public class UserTest {
11 @Test
12 public void UserPOTest(){
13 userPOImpl im=new userPOImpl();
14
15 UserPO user=new UserPO();
16 user.setUserName("张三");
17 user.setPassWd("123");
18 im.addUser(user);
19 }
20
21 @Test
22 public void userPOget(){
23 userPOImpl im=new userPOImpl();
24 List<UserPO> list=im.gets();
25 for(int i=0;i<list.size();i++)
26 System.out.println(list.get(i).getUserName());
27
28 }
29
30 @Test
31 public void delUserTest(){
32 userPOImpl im=new userPOImpl();
33 im.delUser("张三");
34 }
35 @Test
36 public void uptUserTest(){
37 userPOImpl im=new userPOImpl();
38 UserPO user=new UserPO();
39 user.setUserName("张三");
40 user.setPassWd("456");
41 im.uptUser(user);
42 }
43 }
 
  • 本例中的DBUtils代码可以优化为:
 package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List; public class DButils { /**
* 单例模式
*
*/
public static Connection conn=null;
static{
/*
* 把常量和公用的放在static块里加载
* */
final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
final String USER="root";
final String PASSWORD=""; try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(URL,USER,PASSWORD);
}catch(Exception e){
e.printStackTrace();
} } public static boolean cud(String sql,List<Object> list){ //增删改方法合并
boolean flag=false;
PreparedStatement stat=null;
try{
stat=conn.prepareStatement(sql); //对sql语句进行预处理 if(list!=null){
for(int i=0;i<list.size();i++){ //对list中存放的?里的值循环,并对sql中的?赋值
stat.setObject(i+1, list.get(i));
}
} int res=stat.executeUpdate(); //执行预处理语句指令
flag=(res>0)?true:false; }catch(Exception e){
e.printStackTrace();
}finally{
close(conn, stat, null);
} return flag;
} /**
* 关闭流
* @param conn 数据库连接
* @param stat 预处理指令
* @param res 返回结果集
*/
public static void close(Connection conn,PreparedStatement stat,ResultSet res){
try{
if(conn!=null && !conn.isClosed()){
conn.close();
if(stat!=null && !stat.isClosed()){
stat.close();
}
if(res!=null && !res.isClosed()){
res.close();
}
}
}catch(Exception e){
e.printStackTrace();
} } }

三、使用连接池优化jdbc

  • 上个例子的DBUtils可以优化为:
 package dao;

 import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DButils { /**
* 连接池
*/
static ComboPooledDataSource dateSource;
static{
dateSource=new ComboPooledDataSource();
final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
final String USER="root";
final String PASSWORD="";
final String DRIVER="com.mysql.jdbc.Driver";
try {
dateSource.setDriverClass(DRIVER);
dateSource.setJdbcUrl(URL);
dateSource.setUser(USER);
dateSource.setPassword(PASSWORD);
dateSource.setMaxPoolSize(100);
dateSource.setMinPoolSize(10);
dateSource.setMaxStatements(10000);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
} /**
* 单例模式
*/
// public static Connection conn=null;
// static{
// /*
// * 把常量和公用的放在static块里加载
// * */
// final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
// final String USER="root";
// final String PASSWORD="";
//
// try{
// Class.forName("com.mysql.jdbc.Driver");
// conn=DriverManager.getConnection(URL,USER,PASSWORD);
// }catch(Exception e){
// e.printStackTrace();
// }
//
// } public static boolean cud(String sql,List<Object> list){ //增删改方法合并
boolean flag=false;
PreparedStatement stat=null;
Connection conn=null;
try{
conn=dateSource.getConnection();
stat=conn.prepareStatement(sql); //对sql语句进行预处理 if(list!=null){
for(int i=0;i<list.size();i++){ //对list中存放的?里的值循环,并对sql中的?赋值
stat.setObject(i+1, list.get(i));
}
} int res=stat.executeUpdate(); //执行预处理语句指令
flag=(res>0)?true:false; }catch(Exception e){
e.printStackTrace();
}finally{
close(conn, stat, null);
} return flag;
} /**
* 关闭流
* @param conn 数据库连接
* @param stat 预处理指令
* @param res 返回结果集
*/
public static void close(Connection conn,PreparedStatement stat,ResultSet res){
try{
if(conn!=null && !conn.isClosed()){
conn.close();
if(stat!=null && !stat.isClosed()){
stat.close();
}
if(res!=null && !res.isClosed()){
res.close();
}
}
}catch(Exception e){
e.printStackTrace();
} } }
  • 使用C3P0连接池需要导入相应的jar包。


四、优化总结

4.1  搭建实验环境

    A. 启动mysql数据库,即开启mysql/bin/mysqld.exe。

    B. 创建数据库,并创建所需的表。如下图(在创建数据库和表的时候请对其编码设置为utf-8编码否则后期容易出错):

  4.2  创建一个web工程,并导入数据库驱动包。

  4.3  编写javabean,即PO对象又叫持久化对象,此对象的成员属性与数据库的列一一对应,本例中数据库与userName和passWd两列,则PO对象中也应该有这两个成员属性。

UserPO.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package po;
 
public class UserPO {
    private String userName;
    private String passWd;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWd() {
        return passWd;
    }
    public void setPassWd(String passWd) {
        this.passWd = passWd;
    }
     
}

解析: javabean对象中成员属性应该是private的,且必须要有get()和set()方法。

  4.4  创建DAO包,专门用于操作数据(即与数据库互动,进行增删改差操作),一般有接口类和实现类和工具类。

  • UserPOI.java

     package dao;
    
     import java.util.List;
    
     import po.UserPO;
    
     public interface UserPOI {
    public boolean addUser(UserPO user); //增
    public boolean delUser(String userName); //删
    public boolean uptUser(UserPO user); //修改
    public List<UserPO> gets(); //查全部
    public UserPO getByName(String userName); //按名字查人
    }
  • UserPOImpl.java()
 package dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import po.UserPO; public class userPOImpl implements UserPOI { public boolean addUser(UserPO user) { //增加 String sql="insert into user values(?,?)";
List<Object> list=new ArrayList<Object>();
list.add(user.getUserName());
list.add(user.getPassWd());
return DButils.cud(sql,list);
} public boolean delUser(String userName) { //删除 String sql="delete from user where userName=?";
List<Object> list=new ArrayList<Object>();
list.add(userName);
return DButils.cud(sql,list);
} public boolean uptUser(UserPO user){ //修改
String sql="update user set passWd=? where userName=?";
List<Object> list=new ArrayList<Object>();
list.add(user.getPassWd());
list.add(user.getUserName());
return DButils.cud(sql,list); } public List<UserPO> gets() { //查找全部 String sql="select * from user";
return DButils.get(sql, null);
} public UserPO getByName(String userName){ //按名字找人
String sql="select * from user where userName=?";
List<Object> list=new ArrayList<Object>();
list.add(userName);
return (DButils.get(sql, list).size()==1)?DButils.get(sql, list).get(0):null; }
}

  DButils.java

 package dao;

 import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import com.mchange.v2.c3p0.ComboPooledDataSource; import po.UserPO; public class DButils { /**
* 连接池
*/
static ComboPooledDataSource dateSource;
static{
dateSource=new ComboPooledDataSource();
final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
final String USER="root";
final String PASSWORD="";
final String DRIVER="com.mysql.jdbc.Driver";
try {
dateSource.setDriverClass(DRIVER);
dateSource.setJdbcUrl(URL);
dateSource.setUser(USER);
dateSource.setPassword(PASSWORD);
dateSource.setMaxPoolSize(100);
dateSource.setMinPoolSize(10);
dateSource.setMaxStatements(10000);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
} /**
* 单例模式
*/
// public static Connection conn=null;
// static{
// /*
// * 把常量和公用的放在static块里加载
// * */
// final String URL="jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=UTF-8";
// final String USER="root";
// final String PASSWORD="";
//
// try{
// Class.forName("com.mysql.jdbc.Driver");
// conn=DriverManager.getConnection(URL,USER,PASSWORD);
// }catch(Exception e){
// e.printStackTrace();
// }
//
// } public static boolean cud(String sql,List<Object> list){ //增删改方法合并
boolean flag=false;
PreparedStatement stat=null;
Connection conn=null;
try{
conn=dateSource.getConnection();
stat=conn.prepareStatement(sql); //对sql语句进行预处理 if(list!=null){
for(int i=0;i<list.size();i++){ //对list中存放的?里的值循环,并对sql中的?赋值
stat.setObject(i+1, list.get(i));
}
} int res=stat.executeUpdate(); //执行预处理语句指令
flag=(res>0)?true:false; }catch(Exception e){
e.printStackTrace();
}finally{
close(conn, stat, null);
} return flag;
} /**
* 关闭流
* @param conn 数据库连接
* @param stat 预处理指令
* @param res 返回结果集
*/
public static void close(Connection conn,PreparedStatement stat,ResultSet res){
try{
if(conn!=null ){
conn.close();
if(stat!=null ){
stat.close();
}
if(res!=null ){
res.close();
}
}
}catch(Exception e){
e.printStackTrace();
} } /**
* 获取连接池中的连接
*/
public static Connection getConn(){
try {
return dateSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
} /**
* 数据库查找
* @param sql
* @param list
* @return
*/
public static List<UserPO> get(String sql,List<Object> list){
List<UserPO> users=new ArrayList<UserPO>(); Connection conn=getConn();
PreparedStatement stat=null;
ResultSet res=null;
try {
stat=conn.prepareStatement(sql); //sql语句预处理 if(list!=null){
for(int i=0;i<list.size();i++){
stat.setObject(i+1, list.get(i)); //预处理语句?赋值
}
} res=stat.executeQuery(); //执行sql语句
UserPO user=null;
while(res.next()){
user=new UserPO();
user.setUserName(res.getString("userName"));
user.setPassWd(res.getString("passWd"));
users.add(user);
} } catch (SQLException e) {
e.printStackTrace();
}finally{
close(conn,stat,res);
}
return users;
}
}

  2.5  创建测试类进行测试。

  • UserTest.java
 1 package test;
2
3 import java.util.List;
4
5 import org.junit.Test;
6
7 import dao.userPOImpl;
8 import po.UserPO;
9
10 public class UserTest {
11 @Test
12 public void UserPOTest(){
13 userPOImpl im=new userPOImpl();
14
15 UserPO user=new UserPO();
16 user.setUserName("张三");
17 user.setPassWd("123");
18 im.addUser(user);
19 }
20
21 @Test
22 public void userPOget(){
23 userPOImpl im=new userPOImpl();
24 List<UserPO> list=im.gets();
25 for(int i=0;i<list.size();i++)
26 System.out.println(list.get(i).getUserName());
27
28 }
29
30 @Test
31 public void delUserTest(){
32 userPOImpl im=new userPOImpl();
33 im.delUser("张三");
34 }
35 @Test
36 public void uptUserTest(){
37 userPOImpl im=new userPOImpl();
38 UserPO user=new UserPO();
39 user.setUserName("张三");
40 user.setPassWd("456");
41 im.uptUser(user);
42 }
43 }

(十八)JDBC优化使用(一)的更多相关文章

  1. 燕十八MySQL优化学习笔记

    观察 show status; 里面的这三个参数;Queries Threads_connected Threads_running判断周期性变化 -------------------------- ...

  2. (转载)Android项目实战(二十八):Zxing二维码实现及优化

    Android项目实战(二十八):Zxing二维码实现及优化   前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...

  3. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...

  4. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  5. 最全的MySQL基础【燕十八传世】

    1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...

  6. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  8. NeHe OpenGL教程 第二十八课:贝塞尔曲面

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. COS访谈第十八期:陈天奇

    COS访谈第十八期:陈天奇 [COS编辑部按] 受访者:陈天奇      采访者:何通   编辑:王小宁 简介:陈天奇,华盛顿大学计算机系博士生,研究方向为大规模机器学习.他曾获得KDD CUP 20 ...

  10. Java进阶(三十八)快速排序

    Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...

随机推荐

  1. Kubernetes概览

    Kuberbetes这个名字是什么意思?k8s又是什么?Kubernetes这个名字源自希腊语,意思是“舵手”,也是“管理者”,“治理者”等词的源头.k8s是 Kubernetes的简称(用数字『8』 ...

  2. VS Code 常用插件配置

    Debugger for Chrome 该扩展可以在两种模式下运行--它可以启动(launch)导航到你的应用程序的Chrome实例,也可以附加(attach)到正在运行的Chrome实例.这两种模式 ...

  3. win10 注册DLL

    昨天用c++写了一个ocx插件,注册就死活注册不上,折腾了半天1.打开C:\Windows\SysWOW64 文件夹 找到cmd  右键管理员运行 2.将你的插件或者dll放到此目录下3.regsvr ...

  4. fiddler修改请求和返回

    一.修改请求 1.先设置请求前断点 2.设置拦截,在左下角的QuickExec命令行中输入bpu www.baidu.com/XXXX 3.选中需要修改的请求,选中Inspectors面板,使用Raw ...

  5. jquery轮播事件效果

    今天闲着有时间把轮播事件重新写了一下,发现以前用的很多插件大多支持度不算太友好,很多小问题 自己写了一个,不好地方请指教 先建立文件,css,js,图片,引入jquery <!DOCTYPE h ...

  6. BZOJ 1495 [NOI2006]网络收费(暴力DP)

    题意 给定一棵满二叉树,每个叶节点有一个状态0/10/10/1,对于每两个叶节点i,ji,ji,j,如果这两个叶节点状态相同但他们的LCALCALCA所管辖的子树中的与他们状态相同的叶节点个数较少(少 ...

  7. zookeeper 集群简单搭建,以及Error contacting service,It is probably not running问题解决

    第一步:现在http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.9/ 下载一个gz包,然后解压.当然,zookeeper 需要在java 的环境 ...

  8. AutoFileName 使用src ,href 引入文件时,会自动补全路径的插件

    AutoFileName功能:快捷输入文件名 简介:自动完成文件名的输入,如图片选取 使用:输入”/”即可看到相对于本项目文件夹的其他文件 只要输入 src="" 输入双引号就立马 ...

  9. sql的九个常用语句是什么

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

  10. 005_硬件基础电路_PCB安规设计规范

    包含两个文件:讲解pcb绘制过程中的安规要求 002_2_PCB安规设计规范(原创-绝对经典全面-玩转高压PCB设计)总结 002_3_电气间隙和爬电距离规定 链接:https://pan.baidu ...