C#连接mysql然后查询存储过程

C#连接mysql 然后查询一个名为userinfo的存储过程,传参5

sql:call userinfo(5);

这个是查询用户的信息的存储过程,执行这个sql,然后获得查询出来的结果,并且输出。

有没有大神写个demo我学习一下,谢谢!

//正常执行sql语句我会,不会查存储过程

1个回答

C#调用mysql查询存储过程
c#连接mysql 找不到存储过程
mysql 树形结构查询(存储过程)
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Diagnostics;

//*************************** 
//* * 功 能: 查询,添加,更新,删除,集数调用储存过程的封装,
//* * 创 建 人:*****
//* * 创 建 日 期:2013-8-10 11:30:30  
//* * 状 态:********
//* * 完 成 日 期:******
//* * 修 改 人: *****
//* * 修 改 日 期:   *****
//* * 修 改 内 容:****
//* * 备 注 描 述:    ********       
//***************************

namespace KFTV.DB
{
   public  class BaseDB
    {
      static string strcon = KFTV.Properties.Settings.Default.kftvConnectionString;
       ///
       /// 查询的储存过程调用
       ///
       /// 储存过程名
       /// 查询条件的数组参数
       ///
       public static DataSet RunProcedureForQuery(string storedProcName, IDataParameter[] parameteres)
       {
           using (MySqlConnection conn = new MySqlConnection(strcon))
           {
               DataSet ds = new DataSet();
               try
               {
                   conn.Open();
                   MySqlCommand cm = new MySqlCommand();
                   cm.Connection = conn;
                   cm.CommandText = storedProcName;
                   cm.CommandType = CommandType.StoredProcedure;
                   cm.Parameters.AddRange(parameteres);
                   MySqlDataAdapter adapter = new MySqlDataAdapter(cm);
                   adapter.Fill(ds);
                   conn.Close();
                   return ds;
               }
               catch
               {
                   if (MessageBox.Show("执行出错了!\n\r可能服务器不稳定!\n\r请关闭后重试!", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                   {
                       Application.Exit();
                   }
                   return null;
               }
           } 
       }
       ///
       /// 更新,添加,删除的储存过程调用
       ///
       /// 储存过程名
       /// 更新,添加,删除所需参数
       ///
       public static int RunProcedureForNonQuery(string storedProcName, IDataParameter[] parameteres)
       {
           using (MySqlConnection conn = new MySqlConnection(strcon))
           {
               int rowsAffected = 0;
               try
               {
                   conn.Open();
                   MySqlCommand cm = new MySqlCommand();
                   cm.Connection = conn;
                   cm.CommandText = storedProcName;
                   cm.CommandType = CommandType.StoredProcedure;
                   cm.Parameters.AddRange(parameteres);
                   rowsAffected = cm.ExecuteNonQuery();
                   conn.Close();
               }
               catch 
               {
                   if (MessageBox.Show("执行出错了!\n\r可能服务器不稳定!\n\r请关闭后重试!", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                   {
                       Application.Exit();
                   }
               }
               return rowsAffected;
           }
       }
       ///
       /// 求符合条件的总个数
       ///
       /// 储存过程名
       ///
       public static int RunProcedureForScaler(string storedProcName)
       {
           using (MySqlConnection conn = new MySqlConnection(strcon))
           {
               int sum = 0;
               try
               {
                   conn.Open();
                   MySqlCommand cm = new MySqlCommand();
                   cm.Connection = conn;
                   cm.CommandText = storedProcName;
                   cm.CommandType = CommandType.StoredProcedure;
                   sum =(int)cm.ExecuteScalar();
                   conn.Close();
               }
               catch 
               {
                   if (MessageBox.Show("执行出错了!\n\r可能服务器不稳定!\n\r请关闭后重试!", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                   {
                       Application.Exit();
                   }
               }
               return sum;
           }
       }

  }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#连接mysql存储存储过程
C#传值给sql存储过程空值可以用DBNull.Value,mysql用了报错,mysql可用的空值传递
C#程序调用SQL SERVER存储过程的output参数始终为空,求助?
C#中的如下两条语句调用存储过程output参数始终为空(dataGridView1能正确调用到想要的select数据,但是存储过程的两个输出参数值不能传递给两个texBox.Text),不知为何? textBox1.Text = parameters[2].Value.ToString(); textBox2.Text = nowpage + "/" + parameters[3].Value.ToString(); 存储过程代码: ``` USE [tushu] GO /****** Object: StoredProcedure [dbo].[fenye] Script Date: 12/05/2015 11:03:20 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[fenye] @pagenow int, @pagesize int, @countrow int output, @countpage int output AS IF(@pagesize=10) BEGIN declare @startRow int, @endRow int set @startRow = (@pagenow - 1) * @pagesize +1 set @endRow = @startRow + @pagesize -1 select checkbox,id,shuming,zuozhe,xueduan,nianji,beizhu from book where id between @startRow and @endRow order by id desc select @countrow=count(*) from book SET @countpage=(@countrow/@pagesize)+1 END ``` C#代码片段: ``` private void chaxun_Click(object sender, EventArgs e) { //查询条件默认 xueduan.SelectedIndex = 0; nianji.SelectedIndex = 0; hangshu.SelectedIndex = 0;//每页行数,默认10条每页 //tiaopage.Text = ""; //数据统计 //int counthang = 0; //int countpage = 0; int nowpage = 1; int sizepage = 10; int tiaopage = int.Parse(tiaozhuan.Text.Trim()); string xueDuan = xueduan.Text; string nianJi = nianji.Text; string shuMing = shuming.Text.Trim();//自动剔除收尾空格 string condatabase = ConfigurationManager.ConnectionStrings["mysql"].ConnectionString; string sql = "exec fenye @pagenow,@pagesize,NULL,NULL";//@countrow,@countpage SqlConnection conn = new SqlConnection(condatabase); dataGridView1.Rows.Clear(); try { SqlCommand cmmd = new SqlCommand(sql, conn);//执行SQL查询 // 创建参数 IDataParameter[] parameters = { new SqlParameter("@pagenow", SqlDbType.Int) , new SqlParameter("@pagesize", SqlDbType.Int) , new SqlParameter("@countrow", SqlDbType.Int) , new SqlParameter("@countpage", SqlDbType.Int) }; // 设置参数类型 parameters[0].Value = nowpage; parameters[1].Value = sizepage; // 设置为输出参数 parameters[2].Direction = ParameterDirection.Output; //设置为输出参数 parameters[3].Direction = ParameterDirection.Output; // 添加参数 cmmd.Parameters.Add(parameters[0]); cmmd.Parameters.Add(parameters[1]); cmmd.Parameters.Add(parameters[2]); cmmd.Parameters.Add(parameters[3]); conn.Open(); System.Data.DataTable dt = new System.Data.DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmmd); da.Fill(dt); for (int i = 0; i < dt.Rows.Count; i++) { this.dataGridView1.Rows.Add(dt.Rows[i][0], dt.Rows[i][1], dt.Rows[i][2], dt.Rows[i][3], dt.Rows[i][4], dt.Rows[i][5], dt.Rows[i][6]); } if (dataGridView1.RowCount != 0) { dataGridView1.Rows[0].Cells[0].Selected = false;//设置列表首行默认不选中 } textBox1.Text = parameters[2].Value.ToString(); textBox2.Text = nowpage + "/" + parameters[3].Value.ToString(); } catch (Exception yichang) { MessageBox.Show(yichang.Message); } finally { conn.Close();//关闭数据库连接 } } ```
如何使用c++通过ADO调用mysql有参存储过程并获取结果集
先放代码,遇到的问题是 调用mysql**有参**存储过程时获取不到结果集 ``` #include <iostream> #include <atlstr.h> #import "MSADO15.DLL" rename_namespace("ADOCG") rename("EOF","EndOfFile") using namespace ADOCG; using namespace std; int main() { try { HRESULT hr = CoInitialize(NULL); assert(SUCCEEDED(hr));//返回值可判断初始化COM是否成功,请用SUCCEEDED来判断 _CommandPtr m_DBCommand; //命令对象 _RecordsetPtr m_DBRecordset; //记录对象 _ConnectionPtr m_DBConnection; //数据对象 //创建对象 m_DBCommand.CreateInstance(__uuidof(Command)); m_DBRecordset.CreateInstance(__uuidof(Recordset)); m_DBConnection.CreateInstance(__uuidof(Connection)); //效验数据 if (m_DBCommand == NULL) throw TEXT("创建 m_DBCommand 对象失败"); if (m_DBRecordset == NULL) throw TEXT("创建 m_DBRecordset 对象失败"); if (m_DBConnection == NULL) throw TEXT("创建 m_DBConnection 对象失败"); CString m_strConnect; //构造连接 m_strConnect.Format(TEXT("Driver={MySQL ODBC 8.0 Unicode Driver};UID=%s;PWD=%s;DataBase=%s;Persist Security Info=True;Server=%s;Port=%d;Option=3"), "hhh", "123456", "Test", "192.168.1.115", 3306); //打开连接 m_DBConnection->Open(_bstr_t(m_strConnect), L"", L"", adConnectUnspecified); m_DBConnection->CursorLocation = adUseClient; m_DBCommand->ActiveConnection = m_DBConnection; assert(SUCCEEDED(hr));//返回值可判断初始化COM是否成功,请用SUCCEEDED来判断 LONG lParameterCount = m_DBCommand->Parameters->Count; if (lParameterCount > 0L) { for (LONG i = lParameterCount; i > 0; i--) { m_DBCommand->Parameters->Delete(i - 1); } } //添加参数 _ParameterPtr Parameter; Parameter = m_DBCommand->CreateParameter("wServerID", adInteger, adParamInput, sizeof(LONG), _variant_t((LONG)0)); m_DBCommand->Parameters->Append(Parameter); Parameter = m_DBCommand->CreateParameter("wMachineID", adInteger, adParamInput, sizeof(LONG), _variant_t((LONG)0)); m_DBCommand->Parameters->Append(Parameter); m_DBCommand->CommandText = "LoadGameRoomItem2"; m_DBCommand->CommandType = adCmdText; m_DBRecordset = m_DBCommand->Execute(NULL, NULL, adCmdStoredProc); long RecordCount = m_DBRecordset->GetRecordCount(); cout << RecordCount << endl; _variant_t DBVarValue; if (m_DBRecordset->EndOfFile != VARIANT_TRUE) { FieldsPtr RecordFields = m_DBRecordset->GetFields(); DBVarValue = RecordFields->GetItem("ServerID")->GetValue(); WORD wValue = DBVarValue; } } catch (_com_error& ComError) { cout << ComError.Description() << endl; } return 0; } ``` 储存过程如下 ``` CREATE DEFINER=`root`@`%` PROCEDURE `LoadGameRoomItem2`( in wServerID INT, in wMachineID INT ) BEGIN SELECT * from gameroominfo; END ``` 目前遇到的问题就是,怎么也获取不到结果集,RecordCount始终为零(强行读取提示“BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。”并不是 显示没有其实有,而是确实没有结果集),但是如果我将参数去掉 ``` //添加参数 // _ParameterPtr Parameter; // Parameter = m_DBCommand->CreateParameter("wServerID", adInteger, adParamInput, sizeof(LONG), _variant_t((LONG)0)); // m_DBCommand->Parameters->Append(Parameter); // Parameter = m_DBCommand->CreateParameter("wMachineID", adInteger, adParamInput, sizeof(LONG), _variant_t((LONG)0)); // m_DBCommand->Parameters->Append(Parameter); CREATE DEFINER=`root`@`%` PROCEDURE `LoadGameRoomItem2`( ) BEGIN SELECT * from gameroominfo; END ``` 那么则可以获得结果集(RecordCount数量为40,if (m_DBRecordset->EndOfFile != VARIANT_TRUE)判断能进去,ServerID也能读取到),我试过在存储过程前面后面分别加一个update判断过是不是存储过程没执行成功,但是不管有参无参存储过程,两个Updata都走到了,而且不管有参无参直接在数据库调用都是有结果集的 数据库日志如下 ``` 190923 15:32:38 7534 Connect hhh@DESKTOP-989OGGH on Test 7534 Query SET NAMES utf8 7534 Query SET character_set_results = NULL 7534 Query SET SQL_AUTO_IS_NULL = 0 7534 Query select database() 7534 Query select database() 7534 Query SELECT @@tx_isolation 7534 Query set @@sql_select_limit=DEFAULT 7534 Query call LoadGameRoomItem2 7534 Quit 190923 15:47:54 7621 Connect hhh@DESKTOP-989OGGH on Test 7621 Query SET NAMES utf8 7621 Query SET character_set_results = NULL 7621 Query SET SQL_AUTO_IS_NULL = 0 7621 Query select database() 7621 Query select database() 7621 Query SELECT @@tx_isolation 7621 Prepare call LoadGameRoomItem2(?, ?) 7621 Query set @@sql_select_limit=DEFAULT 7621 Execute call LoadGameRoomItem2('0', '0') 7621 Close stmt 7621 Quit ``` 困扰小弟好几天了,希望各位神仙大佬能帮帮小弟T_T ----------------------------------编辑分界线-------------------------------- ![图片说明](https://img-ask.csdn.net/upload/201909/23/1569232509_546308.png)![图片说明](https://img-ask.csdn.net/upload/201909/23/1569232516_421262.png) 如图,是要像这样处理一张表的内容的,单单用output参数是做不到的,主要问题在如果不加参数这些东西是可以读出来的,但是加了参数就获取不到结果集了。。。。
【mysql不能登陆root】
mysql无法登陆root: ``` ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) ``` 查了一下,删掉data文件夹下和数据库无关的文件,在my-default.ini中加上'skip-grant-tables'选项,跳过密码登陆依然失败,加tmpdir路径也不可以; ``` PS C:\Program Files\MySQL\MySQL Server 5.6\bin> mysqld --skip-grant-tables 2019-10-21 14:48:07 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-10-21 14:48:07 4416 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.6\data\DESKTOP-FVGQVE8.lower-test 2019-10-21 14:48:07 4416 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.6\data\DESKTOP-FVGQVE8.lower-test 2019-10-21 14:48:07 4416 [Note] Plugin 'FEDERATED' is disabled. 2019-10-21 14:48:07 4416 [Note] InnoDB: The InnoDB memory heap is disabled 2019-10-21 14:48:07 4416 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 2019-10-21 14:48:07 4416 [Note] InnoDB: Compressed tables use zlib 1.2.3 2019-10-21 14:48:07 4416 [Note] InnoDB: CPU does not support crc32 instructions 2019-10-21 14:48:07 4416 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2019-10-21 14:48:07 4416 [Note] InnoDB: Completed initialization of buffer pool 2019-10-21 14:48:07 32d4 InnoDB: Operating system error number 5 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. It may also be you have created a subdirectory InnoDB: of the same name as a data file. 2019-10-21 14:48:07 32d4 InnoDB: File name .\ibdata1 2019-10-21 14:48:07 32d4 InnoDB: File operation call: 'create' returned OS error 105. 2019-10-21 14:48:07 32d4 InnoDB: Cannot continue operation. ``` 这是配置文件: ``` [mysqld] explicit_defaults_for_timestamp=true tmpdir="C:/Program Files/MySQL Server 5.6/temp/" skip-grant-tables old_passwords=0 # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir="C:/Program Files/MySQL/MySQL Server 5.6 "# 设置mysql数据库的数据的存放目录 datadir="C:/Program Files/MySQL/MySQL Server 5.6/data "# 允许最大连接数 max_connections=200 # 允许连接失败的次数 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=MYISAM # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 innodb_buffer_pool_size=32M innodb_force_recovery = 1 ``` 请大神解答这是什么问题?
MySQL 8.0.11 安装失败 cmd提示:服务没有响应控制功能
my.ini 配置以下基本信息: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\web\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=C:\web\sqldata # 允许最大连接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 接下来我们来启动下 MySQL 数据库: 以管理员身份打开 cmd 命令行工具,切换目录: cd C:\web\mysql-8.0.11\bin 初始化数据库: mysqld --initialize --console 执行完成后,会输出 root 用户的初始默认密码,如: ... 2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ ... APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。 输入以下安装命令: mysqld install 启动输入以下命令即可: net start mysql 但是输入 net start mysql 的时候失败了 ![图片说明](https://img-ask.csdn.net/upload/201810/29/1540817565_776189.png)
关于数程序链接数据库的问题,向老手请教一下
目前还在学习阶段,语言是C/C#数据库是MYSQL,想请教一下几个问题; 1.客户端每次链接数据库的时候,有没有必要检查数据是否以及开启?测试的时候发现如果数据库没有启动或中途关关闭的话,程序会直接卡死或退出,本人的想法是每次连接数据库的时候用try catch之类的语句测试一下,不让程序卡死影响其它的功能,但是这样好像比较费性能,由于没有参与过比较好的案子这里向大家请教一下这样做好不好,或者有什么更好的解决方法。 2.给客户端调用的存储过程,输入的参数要不要检验是否合法,同样是性能问题,因为经验告诉我们不要信任用户的任何输入,前辈们也这样讲,我担心的是通过破解客户端中的内容,拿到数据库的一些信息以后直接绕过登录验证向存储过程传数据,从而污染数据库,不知道这种担心是否多余,另外还是性能问题,如果存储过程中的语句过多的话势必影响数据库的性能,是否有必要做取舍? 3.以我目前的水平来理解,如果一个程序要向数据库中读/取数据,那么这个程序中应该是要保存相应的数据库用户名和密码的,那么如何保证它们的安全?用户权限肯定是要设置的,但是只要有写权限就有可能向数据库中写入垃圾信息,一般比较正规的处理方法是怎样? 水平有限,可能讲的不是很清楚,大概就是那么回事,麻烦大家了!
如何用C++调用jeesite的库中的内容
如题,我想用C++来调用jeesite的库中的内容。 现在的问题是,项目之前用的jeesite的web库是基于mysql的,而我已经能够使用C++连接mysql库,但是对于如何调用库中的内容却不知道该怎么做。。。 因为不清楚之前上传到jeesite里的内容,是否就存储在名为jeesite的那个mysql库里?好像C++调用那个库的时候显示没法查询库中的内容? ![这是jeesite的web库的已上传的资源搜索的截图](https://img-ask.csdn.net/upload/201903/03/1551581128_94783.png) 而C++调用mysql库的代码如下: ``` #include "stdafx.h" #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> //下面两个头文件的顺序不能颠倒 #include "winsock2.h" #include "windows.h" #include "mysql.h" using namespace std; void main() { MYSQL *pConn; pConn = mysql_init(NULL); //第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306) if(!mysql_real_connect(pConn,"localhost","root","wtk123","jeesite",3306,NULL,0)) { printf("无法连接数据库:%s",mysql_error(pConn)); return; } mysql_query(pConn,"set names gbk");//防止乱码。设置和数据库的编码一致就不会乱码 //SET NAMES x 相当于 SET character_set_client = x;SET character_set_results = x;SET character_set_connection = x; //写set character set gbk;查询不会乱码,但是参数化插入会报错。而set names gbk则都不会乱码 //mysql_real_query比mysql_query多了个参数: 字符串query的长度, 所以适合有二进制数据的query, 而mysql_query的字符串query不能包含二进制,因为它以\0为结尾 //mysql_query() 不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。 mysql_real_query() 则可以。 if(mysql_query(pConn,"select * from 大臂")) { printf("查询失败:%s",mysql_error(pConn)); return; } //mysql_store_result是把查询结果一次性取到客户端的离线数据集,当结果比较大时耗内存。 //mysql_use_result则是查询结果放在服务器上,客户端通过指针逐行读取,节省客户端内存。但是一个MYSQL*连接同时只能有一个未关闭的mysql_use_result查询 MYSQL_RES *result = mysql_store_result(pConn); MYSQL_ROW row; while(row = mysql_fetch_row(result)) { printf("%s %s\n",row[1],row[2]); } mysql_free_result(result); mysql_close(pConn); } ``` 调试后的结果如下: ![图片说明](https://img-ask.csdn.net/upload/201903/03/1551581698_811644.png) 可见同样是搜索一样的名字,C++却显示是空的?! 求问应该怎么做呢?如何才能在C++搜索并调用jeesite的库中想要的内容乃至于进一步地下载资源? 注:jeesite的web库中提供了可下载的途径,现在我的问题是,如何在C++端编代码实现在C++端能够搜索、调用、下载所需的库中的资源呢? jeesite库中的资源具体情况如下图所示,可以看到,在网页端是可以下载的 ![图片说明](https://img-ask.csdn.net/upload/201903/03/1551582215_207327.png)
hive beeline 连接 User: root is not allowed to impersonate root
beeline 连接不上。已经困扰我半个月,请各位师兄指点一下。我部署hadoop是单机版的。hive 能做查询,能简历数据库。 用!connect jdbc:hive2://devcrm:10000 出现权限问题 ``` beeline> !connect jdbc:hive2://devcrm:10000 Connecting to jdbc:hive2://devcrm:10000 Enter username for jdbc:hive2://devcrm:10000: hadoop Enter password for jdbc:hive2://devcrm:10000: ****** 19/04/23 15:36:53 [main]: WARN jdbc.HiveConnection: Failed to connect to devcrm:10000 Error: Could not open client transport with JDBC Uri: jdbc:hive2://devcrm:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop (state=08S01,code=0) ``` 用 beeline -u jdbc:hive2//devcrm:10000 -n hadoop连接也不行 ``` [root@devcrm hadoop]# beeline -u jdbc:hive2//devcrm:10000 -n hadoop SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/kafka/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/kafka/hadoop-2.7.6/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] scan complete in 1ms scan complete in 963ms No known driver to handle "jdbc:hive2//devcrm:10000" Beeline version 2.3.0 by Apache Hive ``` hive-site.xml文件 ``` <configuration> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123</value> <description>password to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.12.77:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>hive.server2.thrift.client.user</name> <value>hadoop</value> <description>Username to use against thrift client</description> </property> <property> <name>hive.server2.thrift.client.password</name> <value>hadoop</value> <description>Password to use against thrift client</description> </property> ``` core-site.xml文件 ``` <configuration> <!--指定namenode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.11.207:9000</value> </property> <!--用来指定使用hadoop时产生文件的存放目录--> <property> <name>hadoop.tmp.dir</name> <!--<value>file:/usr/local/kafka/hadoop-2.7.6/tmp</value>--> <value>file:/home/hadoop/temp</value> </property> <!--用来设置检查点备份日志的最长时间--> <!-- <name>fs.checkpoint.period</name> <value>3600</value> --> <!-- 表示设置 hadoop 的代理用户--> <property> <!--表示任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群--> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <!--表示代理用户的组所属--> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration> ``` hdfs-site.xml 文件 ``` <configuration> <!--指定hdfs保存数据的副本数量--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--指定hdfs中namenode的存储位置--> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/kafka/hadoop-2.7.6/tmp/dfs/name</value> </property> <!--指定hdfs中datanode的存储位置--> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/kafka/hadoop-2.7.6/tmp/dfs/data</value> </property> <property> <name>dfs.secondary.http.address</name> <value>192.168.11.207:50090</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <!-- 表示启用 webhdfs--> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration> ``` http://192.168.11.207:10002/页面能看到HiveServer2的启动时间 ![图片说明](https://img-ask.csdn.net/upload/201904/23/1556005658_291513.png) hive 的日志 ``` 2019-04-24T09:20:11,829 INFO [main] http.HttpServer: Started HttpServer[hiveserver2] on port 10002 2019-04-24T09:20:50,464 INFO [HiveServer2-Handler-Pool: Thread-38] thrift.ThriftCLIService: Client protocol version: HIVE_CLI_SERVICE_PROTOCOL_V10 2019-04-24T09:20:50,494 INFO [HiveServer2-Handler-Pool: Thread-38] conf.HiveConf: Using the default value passed in for log id: b0f59ac1-d17a-404f-8bf5-fbe4693c9964 2019-04-24T09:20:50,494 INFO [b0f59ac1-d17a-404f-8bf5-fbe4693c9964 HiveServer2-Handler-Pool: Thread-38] conf.HiveConf: Using the default value passed in for log id: b0f59ac1-d17a-404f-8bf5-fbe4693c9964 2019-04-24T09:20:50,494 INFO [HiveServer2-Handler-Pool: Thread-38] conf.HiveConf: Using the default value passed in for log id: b0f59ac1-d17a-404f-8bf5-fbe4693c9964 2019-04-24T09:20:50,495 INFO [b0f59ac1-d17a-404f-8bf5-fbe4693c9964 HiveServer2-Handler-Pool: Thread-38] conf.HiveConf: Using the default value passed in for log id: b0f59ac1-d17a-404f-8bf5-fbe4693c9964 2019-04-24T09:20:50,494 WARN [HiveServer2-Handler-Pool: Thread-38] service.CompositeService: Failed to open session java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:89) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy.access$000(HiveSessionProxy.java:36) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy$1.run(HiveSessionProxy.java:63) ~[hive-service-2.3.0.jar:2.3.0] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_80] at javax.security.auth.Subject.doAs(Subject.java:415) ~[?:1.7.0_80] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1758) ~[hadoop-common-2.7.6.jar:?] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:59) ~[hive-service-2.3.0.jar:2.3.0] at com.sun.proxy.$Proxy36.open(Unknown Source) ~[?:?] at org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:410) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:362) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.CLIService.openSessionWithImpersonation(CLIService.java:193) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:440) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:322) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1377) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1362) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) ~[hive-exec-2.3.0.jar:2.3.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80] Caused by: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:606) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:544) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionImpl.open(HiveSessionImpl.java:164) ~[hive-service-2.3.0.jar:2.3.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:78) ~[hive-service-2.3.0.jar:2.3.0] ... 21 more Caused by: org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate hadoop at org.apache.hadoop.ipc.Client.call(Client.java:1476) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.ipc.Client.call(Client.java:1413) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) ~[hadoop-common-2.7.6.jar:?] at com.sun.proxy.$Proxy29.getFileInfo(Unknown Source) ~[?:?] at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:776) ~[hadoop-hdfs-2.7.6.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) ~[hadoop-common-2.7.6.jar:?] at com.sun.proxy.$Proxy30.getFileInfo(Unknown Source) ~[?:?] at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2117) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1305) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1301) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1317) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1425) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:704) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:650) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:582) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:544) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionImpl.open(HiveSessionImpl.java:164) ~[hive-service-2.3.0.jar:2.3.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:78) ~[hive-service-2.3.0.jar:2.3.0] ... 21 more 2019-04-24T09:20:50,494 INFO [HiveServer2-Handler-Pool: Thread-38] session.SessionState: Updating thread name to b0f59ac1-d17a-404f-8bf5-fbe4693c9964 HiveServer2-Handler-Pool: Thread-38 2019-04-24T09:20:50,494 INFO [HiveServer2-Handler-Pool: Thread-38] session.SessionState: Resetting thread name to HiveServer2-Handler-Pool: Thread-38 2019-04-24T09:20:50,494 INFO [HiveServer2-Handler-Pool: Thread-38] session.SessionState: Updating thread name to b0f59ac1-d17a-404f-8bf5-fbe4693c9964 HiveServer2-Handler-Pool: Thread-38 2019-04-24T09:20:50,495 INFO [HiveServer2-Handler-Pool: Thread-38] session.SessionState: Resetting thread name to HiveServer2-Handler-Pool: Thread-38 2019-04-24T09:20:50,509 WARN [HiveServer2-Handler-Pool: Thread-38] thrift.ThriftCLIService: Error opening session: org.apache.hive.service.cli.HiveSQLException: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop at org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:419) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:362) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.CLIService.openSessionWithImpersonation(CLIService.java:193) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:440) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:322) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1377) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.rpc.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1362) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) ~[hive-exec-2.3.0.jar:2.3.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80] Caused by: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:89) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy.access$000(HiveSessionProxy.java:36) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy$1.run(HiveSessionProxy.java:63) ~[hive-service-2.3.0.jar:2.3.0] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_80] at javax.security.auth.Subject.doAs(Subject.java:415) ~[?:1.7.0_80] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1758) ~[hadoop-common-2.7.6.jar:?] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:59) ~[hive-service-2.3.0.jar:2.3.0] at com.sun.proxy.$Proxy36.open(Unknown Source) ~[?:?] at org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:410) ~[hive-service-2.3.0.jar:2.3.0] ... 13 more Caused by: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hadoop at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:606) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:544) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionImpl.open(HiveSessionImpl.java:164) ~[hive-service-2.3.0.jar:2.3.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:78) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy.access$000(HiveSessionProxy.java:36) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy$1.run(HiveSessionProxy.java:63) ~[hive-service-2.3.0.jar:2.3.0] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_80] at javax.security.auth.Subject.doAs(Subject.java:415) ~[?:1.7.0_80] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1758) ~[hadoop-common-2.7.6.jar:?] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:59) ~[hive-service-2.3.0.jar:2.3.0] at com.sun.proxy.$Proxy36.open(Unknown Source) ~[?:?] at org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:410) ~[hive-service-2.3.0.jar:2.3.0] ... 13 more Caused by: org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate hadoop at org.apache.hadoop.ipc.Client.call(Client.java:1476) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.ipc.Client.call(Client.java:1413) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) ~[hadoop-common-2.7.6.jar:?] at com.sun.proxy.$Proxy29.getFileInfo(Unknown Source) ~[?:?] at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:776) ~[hadoop-hdfs-2.7.6.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) ~[hadoop-common-2.7.6.jar:?] at com.sun.proxy.$Proxy30.getFileInfo(Unknown Source) ~[?:?] at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2117) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1305) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1301) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1317) ~[hadoop-hdfs-2.7.6.jar:?] at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1425) ~[hadoop-common-2.7.6.jar:?] at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:704) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:650) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:582) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:544) ~[hive-exec-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionImpl.open(HiveSessionImpl.java:164) ~[hive-service-2.3.0.jar:2.3.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_80] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_80] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:78) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy.access$000(HiveSessionProxy.java:36) ~[hive-service-2.3.0.jar:2.3.0] at org.apache.hive.service.cli.session.HiveSessionProxy$1.run(HiveSessionProxy.java:63) ~[hive-service-2.3.0.jar:2.3.0] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_80] at javax.security.auth.Subject.doAs(Subject.java:415) ~[?:1.7.0_80] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1758) ~[hadoop-common-2.7.6.jar:?] at org.apache.hive.service.cli.session.HiveSessionProxy.invoke(HiveSessionProxy.java:59) ~[hive-service-2.3.0.jar:2.3.0] at com.sun.proxy.$Proxy36.open(Unknown Source) ~[?:?] at org.apache.hive.service.cli.session.SessionManager.createSession(SessionManager.java:410) ~[hive-service-2.3.0.jar:2.3.0] ... 13 more ```
对List<Bean>形式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>各位大师,现在有个问题比较纠结,所以发到这里希望有哪位大神能提供给个解决思路,不甚感激! <br><br>言归正转,通过后端逻辑处理获得List&lt;User&gt; list ,格式如下</p> <table style="width: 747px; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"> <colgroup> <col style="width: 27pt;" width="36"> <col style="width: 57pt;" width="76"> <col style="width: 130pt;" width="173"> <col style="width: 63pt;" width="84"> <col style="width: 110pt;" width="147"> <col style="width: 90pt;" width="120"> <col style="width: 83pt;" width="111"> </colgroup> <tbody> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; width: 27pt; height: 13.5pt; border: #f0f0f0;" width="36" height="18"><span style="font-family: 宋体; font-size: medium;">uid</span></td> <td class="xl65" style="background-color: transparent; width: 57pt; border: #f0f0f0;" width="76"><span style="font-family: 宋体; font-size: medium;">username</span></td> <td class="xl65" style="background-color: transparent; width: 130pt; border: #f0f0f0;" width="173"><span style="font-family: 宋体; font-size: medium;">phs_number</span></td> <td class="xl65" style="background-color: transparent; width: 63pt; border: #f0f0f0;" width="84"><span style="font-family: 宋体; font-size: medium;">people_id</span></td> <td class="xl65" style="background-color: transparent; width: 110pt; border: #f0f0f0;" width="147"><span style="font-family: 宋体; font-size: medium;">destSendUserName</span></td> <td class="xl65" style="background-color: transparent; width: 90pt; border: #f0f0f0;" width="120"><span style="font-family: 宋体; font-size: medium;">people_mobile</span></td> <td class="xl65" style="background-color: transparent; width: 83pt; border: #f0f0f0;" width="111"><span style="font-family: 宋体; font-size: medium;">people_birth</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">32</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1111</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">528</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a1</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">5555</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1979/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">32</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1111</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">826</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a2</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">6666</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1971/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">32</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1111</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1268</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a3</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">7777</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1980/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">32</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1111</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1290</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a4</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">8888</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1989/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">32</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1111</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1728</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a5</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">9999</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1955/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">4</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">bbb</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">2222</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">3141</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">b1</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">0</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1981/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">30</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">ccc</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">3333</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4224</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">c1</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1112</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1976/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">30</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">ccc</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">3333</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4313</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">c2</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1132</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1977/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">14</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">ddd</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4444</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4578</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">d1</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">3234</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1984/7/13</span></td> </tr> <tr style="height: 13.5pt;"> <td class="xl65" style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">14</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">ddd</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4444</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">4984</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">d2</span></td> <td class="xl65" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">3424</span></td> <td class="xl66" style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">1969/7/13</span></td> </tr> </tbody> </table> <p><br>现在希望对username相同的进行合并,生成类似以下的数据,准备通过Map&lt;String,String&gt;存储</p> <table style="width: 249px; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"> <colgroup> <col style="width: 57pt;" width="76"> <col style="width: 130pt;" width="173"> </colgroup> <tbody> <tr style="height: 13.5pt;"> <td style="background-color: transparent; width: 57pt; height: 13.5pt; border: #f0f0f0;" width="76" height="18"><span style="font-family: 宋体; font-size: medium;">username</span></td> <td style="background-color: transparent; width: 130pt; border: #f0f0f0;" width="173"><span style="font-family: 宋体; font-size: medium;">destSendUserNameAll</span></td> </tr> <tr style="height: 13.5pt;"> <td style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">aaa</span></td> <td style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">a1,a2,a3,a4,a5</span></td> </tr> <tr style="height: 13.5pt;"> <td style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">bbb</span></td> <td style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">b1</span></td> </tr> <tr style="height: 13.5pt;"> <td style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">ccc</span></td> <td style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">c1,c2</span></td> </tr> <tr style="height: 13.5pt;"> <td style="background-color: transparent; height: 13.5pt; border: #f0f0f0;" height="18"><span style="font-family: 宋体; font-size: medium;">ddd</span></td> <td style="background-color: transparent; border: #f0f0f0;"><span style="font-family: 宋体; font-size: medium;">d1,d2</span></td> </tr> </tbody> </table> <p><br><br>中间的逗号是分隔符,可以使任何字符 <br><br>有哪位看到后给说明的解决思路?十分感谢 <br><br>PS:后端用的DbUtils连接Mysql数据库</p> <p> </p> </div>
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
Android 9.0系统新特性,对刘海屏设备进行适配
其实Android 9.0系统已经是去年推出的“老”系统了,这个系统中新增了一个比较重要的特性,就是对刘海屏设备进行了支持。一直以来我也都有打算针对这个新特性好好地写一篇文章,但是为什么直到拖到了Android 10.0系统都发布了才开始写这篇文章呢?当然,一是因为我这段时间确实比较忙,今年几乎绝大部分的业余时间都放到写新书上了。但是最主要的原因并不是这个,而是因为刘海屏设备的适配存在一定的特殊性
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
MySQL数据库总结
文章目录一、数据库简介二、MySQL数据类型(5.5版本)三、Sql语句(1)Sql语句简介(2)数据定义语言DDLcreate,alter,drop(3)数据操纵语言DMLupdate,insert,delete(4)数据控制语言DCLgrant,revoke(5)数据查询语言DQLselect(6)分组查询与分页查询group by,limit四、完整性约束(单表)五、多表查询六、MySQL数
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
程序设计的5个底层逻辑,决定你能走多快
阿里妹导读:肉眼看计算机是由CPU、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天董鹏为你一一揭秘。 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课
阿里靠什么武功秘籍渡过“双十一“的天量冲击
双十一大概会产生多大的数据量呢,可能大家没概念,举个例子央视拍了这么多年电视新闻节目,几十年下来他存了大概80P的数据。而今年双11一天,阿里要处理970P的数据,做为一个IT人,笔者认为今年”双十一“阿里最大的技术看点有有以下两个: 阿里的数据库,也就是刚刚拿下TPC冠军的OcceanBase,处理峰值也达到了骇人听闻的6100万次/秒, 阿里核心系统百分百上云了。 如果把信息系统比做一个武
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问