数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

HDC调试需求开发(15万预算),能者速来!>>> 如果当前分支是master,那么执行git pull origin test:test不仅会合并test-->origin/test,还会合并当前分支master-->origin/test
来源:开源中国
发布时间:2019-05-29 11:59:00
HDC调试需求开发(15万预算),能者速来!>>> 第一次用git提交master,登录了git的账号密码还是报这个错误 ,求大佬帮忙 fatal: AggregateException encountered. One or more errors occurred.
来源:开源中国
发布时间:2019-05-28 16:09:00
HDC调试需求开发(15万预算),能者速来!>>> 具体描述: 1. 多人协作一个项目 2. 我半年没有改动过这个项目的代码了, 没有pull, 没有push; 但是同事们还在开发, 他们删除了一些老分支, 新建了一些新分支, 改动了若干代码. 我本地的代码库是半年前的老代码. 3. 由于突发需求, 我改了代码, 忘了pull直接commit, push了. 4. 结果导致线上的所有最新分支都丢失了, 被我本地的半年前的所有老分支替换了; 也就是说同事们这半年来的改动全丢失了, 线上和我本地仓库都只有半年前的代码加上我最近改动的代码了.... 5. 我试图回滚版本, 发现无论线上还是我本地仓库, 都找不到同事们最近半年的提交记录, 只有半年前的和最近我的提交记录, 所以我也没能找回这半年同事们的代码了, 所以真心求助各位高手们~~拜谢啦!!
来源:开源中国
发布时间:2019-04-30 16:36:00
HDC调试需求开发(15万预算),能者速来!>>> 比方说,我用android studi 建立一个工程,其目录是TestProject 我在github上有自己的2个分支 https://github.com/test2468/huap.git (另一分支 huap) https://github.com/test2468/project.git(主分支master) 我先在主分支下,使用 git add TestProject git commit -m "add TestProject master" git push https://github.com/test2468/project.git 上传到远程分支成功。而且,通过浏览器查看了下,发现其工程完整的上传过来了。 然后我切换分支 git checkout huap 然后再用同样的命令 git add TestProject git commit -m "add TestProject huap" git push https://github.com/test2468/huap.git 也上传成功,可是,我通过浏览器查看,发现这个工程是不完整的,缺少很多文件,请问这是怎么回事啊? 我只是想验证下 1,本地同一个工程,如何做到本地修改同一个文件,然后分别上传到2个不同的远程分支? 2,本地同一个工程,如何做到本地对同一个文件做不同的修改,然后分别上传到2个不同的远程分支?
来源:开源中国
发布时间:2019-04-18 08:09:00
HDC调试需求开发(15万预算),能者速来!>>> 如上图想要添加这其中三个文件,但是总是不行,应该如何操作?
来源:开源中国
发布时间:2019-03-23 16:39:00
HDC调试需求开发(15万预算),能者速来!>>> 三款工具,这里用的最多是哪一个啊
来源:开源中国
发布时间:2010-09-10 17:07:00
HDC调试需求开发(15万预算),能者速来!>>> 这个还不能在 PyCharm上使用吗?
来源:开源中国
发布时间:2017-03-13 10:28:00
HDC调试需求开发(15万预算),能者速来!>>> 服务器centos7.2 hive版本0.12 hadoop版本2.7.6 ----------------分割线----------------- 创建table的时候,用的外部表,放置于mysql,其中使用了partitioned by 关键字 ( partitioned by (logdate string,hour string) )。 具体代码片段为: create external table people(id int,name string) partitioned by (logdate string,hour string) row format delimited fields terminated by ','; -------------------------------- 但是!! 往表里面存入数据时就报错为 hive.partition doesn't exists !!!! java.sql.SQLSyntaxErrorException: Table 'hive.PARTITIONS' doesn't exist mysql那边看了,hive数据库生成了,但确实没有partition表。只有下图。 select * 之后确实是我添加的partition字段 可是没办法改这个表的名字为partition啊(似乎是因为mysql关键字存在partition)!! 那我该如何存取数据进入这个hive表?? 求帮助,谢谢。
来源:开源中国
发布时间:2018-09-01 16:07:00
HDC调试需求开发(15万预算),能者速来!>>> 软件运行环境:redhat 6 hadoop-2.6.0-cdh5.9.0 hive-1.1.0-cdh5.9.0 sqoop-1.4.6-cdh5.9.0 hive在主节点,sqoop在从节点上 sqoop导入hive表示报错 16/12/09 17:18:47 INFO mapreduce.ImportJobBase: Transferred 49 bytes in 19.624 seconds (2.4969 bytes/sec) 16/12/09 17:18:47 INFO mapreduce.ImportJobBase: Retrieved 6 records. 16/12/09 17:18:47 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `sss` AS t LIMIT 1 16/12/09 17:18:47 INFO hive.HiveImport: Loading uploaded data into Hive 16/12/09 17:18:47 ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly. 16/12/09 17:18:47 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:50) at org.apache.sqoop.hive.HiveImport.getHiveArgs(HiveImport.java:392) at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:379) at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:337) at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:241) at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:524) at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615) at org.apache.sqoop.Sqoop.run(Sqoop.java:143) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) at org.apache.sqoop.Sqoop.main(Sqoop.java:236) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:44) ... 12 more 我的hive能正常启动, 网上说的环境变量的问题也配置了,还有什么问题可以去检查 export HIVE_HOME=/home/hadoop/hive-1.1.0-cdh5.9.0 export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.9.0 export HIVE_CONF_DIR=/home/hadoop/hive-1.1.0-cdh5.9.0/conf export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
来源:开源中国
发布时间:2016-12-09 17:38:00
HDC调试需求开发(15万预算),能者速来!>>> 2015-08-26 16:48:55,941 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - Changing view acls to: root2015-08-26 16:48:55,946 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - Changing modify acls to: root 2015-08-26 16:48:55,947 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); users with modify permissions: Set(root) 2015-08-26 16:48:56,403 INFO [sparkDriver-akka.actor.default-dispatcher-4] slf4j.Slf4jLogger (Slf4jLogger.scala:applyOrElse(80)) - Slf4jLogger started 2015-08-26 16:48:56,456 INFO [sparkDriver-akka.actor.default-dispatcher-4] Remoting (Slf4jLogger.scala:apply$mcV$sp(74)) - Starting remoting 2015-08-26 16:48:56,816 INFO [sparkDriver-akka.actor.default-dispatcher-5] Remoting (Slf4jLogger.scala:apply$mcV$sp(74)) - Remoting started; listening on addresses :[akka.tcp://sparkDriver@hadoop05:54033] 2015-08-26 16:48:56,820 INFO [sparkDriver-akka.actor.default-dispatcher-5] Remoting (Slf4jLogger.scala:apply$mcV$sp(74)) - Remoting now listens on addresses: [akka.tcp://sparkDriver@hadoop05:54033] 2015-08-26 16:48:56,832 INFO [main] util.Utils (Logging.scala:logInfo(59)) - Successfully started service 'sparkDriver' on port 54033. 2015-08-26 16:48:56,857 INFO [main] spark.SparkEnv (Logging.scala:logInfo(59)) - Registering MapOutputTracker 2015-08-26 16:48:56,870 INFO [main] spark.SparkEnv (Logging.scala:logInfo(59)) - Registering BlockManagerMaster 2015-08-26 16:48:56,889 INFO [main] storage.DiskBlockManager (Logging.scala:logInfo(59)) - Created local directory at /tmp/spark-local-20150826164856-d539 2015-08-26 16:48:56,893 INFO [main] storage.MemoryStore (Logging.scala:logInfo(59)) - MemoryStore started with capacity 530.3 MB 2015-08-26 16:48:57,347 WARN [main] util.NativeCodeLoader (NativeCodeLoader.java:(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2015-08-26 16:48:57,538 INFO [main] spark.HttpFileServer (Logging.scala:logInfo(59)) - HTTP File server directory is /tmp/spark-8ea80eb5-5ae9-4f11-8c5f-4616d14fc3d3 2015-08-26 16:48:57,543 INFO [main] spark.HttpServer (Logging.scala:logInfo(59)) - Starting HTTP Server 2015-08-26 16:48:57,603 INFO [main] server.Server (Server.java:doStart(272)) - jetty-8.y.z-SNAPSHOT 2015-08-26 16:48:57,624 INFO [main] server.AbstractConnector (AbstractConnector.java:doStart(338)) - Started SocketConnector@0.0.0.0:50271 2015-08-26 16:48:57,624 INFO [main] util.Utils (Logging.scala:logInfo(59)) - Successfully started service 'HTTP file server' on port 50271. 2015-08-26 16:48:57,739 INFO [main] server.Server (Server.java:doStart(272)) - jetty-8.y.z-SNAPSHOT 2015-08-26 16:48:57,752 INFO [main] server.AbstractConnector (AbstractConnector.java:doStart(338)) - Started SelectChannelConnector@0.0.0.0:4040 2015-08-26 16:48:57,753 INFO [main] util.Utils (Logging.scala:logInfo(59)) - Successfully started service 'SparkUI' on port 4040. 2015-08-26 16:48:57,756 INFO [main] ui.SparkUI (Logging.scala:logInfo(59)) - Started SparkUI at http://hadoop05:4040 2015-08-26 16:48:57,885 INFO [main] spark.SparkContext (Logging.scala:logInfo(59)) - Added JAR /home/hbase/cdrp-0.0.2-SNAPSHOT.jar at http://10.2.98.144:50271/jars/cdrp-0.0.2-SNAPSHOT.jar with timestamp 1440578937884 2015-08-26 16:48:57,886 INFO [main] spark.SparkContext (Logging.scala:logInfo(59)) - Added JAR /home/hbase/oozie-client-4.0.0-cdh5.2.0.jar at http://10.2.98.144:50271/jars/oozie-client-4.0.0-cdh5.2.0.jar with timestamp 1440578937886 2015-08-26 16:48:58,052 INFO [main] client.RMProxy (RMProxy.java:createRMProxy(98)) - Connecting to ResourceManager at /0.0.0.0:8032 2015-08-26 16:48:58,283 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Requesting a new application from cluster with 7 NodeManagers 2015-08-26 16:48:58,298 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Verifying our application has not requested more than the maximum memory capability of the cluster (9990 MB per container) 2015-08-26 16:48:58,299 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Will allocate AM container, with 1408 MB memory including 384 MB overhead 2015-08-26 16:48:58,300 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Setting up container launch context for our AM 2015-08-26 16:48:58,305 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Preparing resources for our AM container 2015-08-26 16:48:58,442 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Source and destination file systems are the same. Not copying file:/opt/cloudera/parcels/CDH-5.3.5-1.cdh5.3.5.p0.4/jars/spark-assembly-1.2.0-cdh5.3.5-hadoop2.5.0-cdh5.3.5.jar 2015-08-26 16:48:58,526 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Setting up the launch environment for our AM container 2015-08-26 16:48:58,731 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - Changing view acls to: root 2015-08-26 16:48:58,732 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - Changing modify acls to: root 2015-08-26 16:48:58,732 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) - SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); users with modify permissions: Set(root) 2015-08-26 16:48:58,735 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Submitting application 42 to ResourceManager 2015-08-26 16:48:58,776 INFO [main] impl.YarnClientImpl (YarnClientImpl.java:submitApplication(236)) - Submitted application application_1440484199657_0042 2015-08-26 16:48:59,782 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:48:59,790 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - client token: N/A diagnostics: N/A ApplicationMaster host: N/A ApplicationMaster RPC port: -1 queue: root.root start time: 1440578938748 final status: UNDEFINED tracking URL: http://hadoop05:8088/proxy/application_1440484199657_0042/ user: root 2015-08-26 16:49:00,794 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:01,798 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:02,803 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:03,807 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:04,812 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:05,818 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:06,823 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:07,828 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:08,832 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:09,837 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:10,844 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:11,849 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: ACCEPTED) 2015-08-26 16:49:12,853 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - Application report for application_1440484199657_0042 (state: FAILED) 2015-08-26 16:49:12,855 INFO [main] yarn.Client (Logging.scala:logInfo(59)) - client token: N/A diagnostics: Application application_1440484199657_0042 failed 2 times due to AM Container for appattempt_1440484199657_0042_000002 exited with exitCode: 1 due to: Exception from container-launch. Container id: container_1440484199657_0042_02_000001 Exit code: 1 Stack trace: ExitCodeException exitCode=1: at org.apache.hadoop.util.Shell.runCommand(Shell.java:538) at org.apache.hadoop.util.Shell.run(Shell.java:455) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:197) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:299) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:81) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Container exited with a non-zero exit code 1 .Failing this attempt.. Failing the application. ApplicationMaster host: N/A ApplicationMaster RPC port: -1 queue: root.root start time: 1440578938748 final status: FAILED tracking URL: http://hadoop05:8088/cluster/app/application_1440484199657_0042 user: root Exception in thread "main" org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master. at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:102) at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:58) at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:140) at org.apache.spark.SparkContext.(SparkContext.scala:335) at org.apache.spark.api.java.JavaSparkContext.(JavaSparkContext.scala:61) at com.goodwill.cdr.hadoop.spark.PatientCountJHMK.execute(PatientCountJHMK.java:56) at com.goodwill.cdr.hadoop.spark.PatientCountJHMK.main(PatientCountJHMK.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
来源:开源中国
发布时间:2015-08-26 17:01:00
HDC调试需求开发(15万预算),能者速来!>>> 1.Linux版本centos7.5 2.java jdk 1.8 3.hadoop版本2.7.3 4.java环境变量以及Hadoop环境变量截图 5.查看java版本 6.查看haoop版本 7.Hadoop格式华Namenode的截图图下 7.1:前面运行截图 7.2:格式化完成后的最后INFO的显示 8.最后进入sbin目录运行./start-dfs.sh(在这之前,我还从新生效了环境变量) 9.以下是hadoop配置文件截图 =》core-site.xml: 9.1 core-site.xml: 9.2 hdfs-site.xml: 9.3 mapred-site.xml 9.4 yarn-site.xml: 求个大佬指点一下,这是个什么情况,今天刚刚搭建的服务器。不知道为什么运行不起来。。。。。。SOS SOS SOS 有思路的大佬加请指点值点!!!!!!
来源:开源中国
发布时间:2019-05-21 17:25:00
HDC调试需求开发(15万预算),能者速来!>>> 问:不同的语言在数据处理以及算法计算过程中性能的差别是否很大? 答:就目前的经验来看,使用C或者C++的效率确实要比PYTHON高一些,但是没有差到一个数量级的差别。PYTHON程序的维护成本比C或C++感觉还是要略低一些,在生产中可以考虑用硬件数量进行弥补。 问:请问入门机器学习需要哪些基础知识呢? 答:如果想走得远,微积分、概率,这些肯定是跑不了的。 然后就可以是各种聚类分类算法,这部分还是比较好理解的,甚至没有微积分的知识也基本不影响理解。 最后是深度学习的部分,这部分说实话其实还是挺有难度的。 问:算法模型是自己建造,还是有专家开源 答: 开源的工具能解决很多问题,算法一般不用调整。但是不排除你在优化的时候根据自己的需求做修改。 问:目前机器学习进行到了哪个阶段? 对于软件功能的自动化测试,是否可以让机器人自己学习需求,根据设计文档来进行测试? 答:理论上确实是可行的。 不过对设计文档进行特征化的过程恐怕是个非常不确定的过程。 问题一、设计文档的标准化问题是不是做到位了?问题二、有多少样本来供训练? 训练是一个监督学习的过程,要把“文档”和“对应的测试行为”这样的关联告诉学习引擎才可以。 问:数学基础对后面的学习很重要么?我是个高数很渣的java程序员 答:数学基础对后面还是比较重要的,很多书籍里讲解算法都有数学公式推导,至少需要能看懂公式是什么意思 问:在学习前是否要复习下微积分、概率论知识? 答:边学技术边复习数学知识就行,遇到问题再去学习,不用刻意先复习一遍。 问:我做了5年的Web开发。现在就职的公司不大,数据量也才百万级。我想知道您对数据分析的理解和如何正确利用数据分析得到的结果。我想在大数据方向有所发展,希望能在学习路线上给点建议。 答:大数据的真实含义不是数据量大,而是具有丰富的数据维度。数据的价值不在于多在于能够挖掘出有价值的信息从而消除不确定性,降低试错成本。 很大一部分的数据分析是有试探性的,日常的工作中更多的是做指标涨跌的关联分析,分析好这些已经能为公司解决很多问题了。 其它方面的应用其实不一定在每个公司里都有机会去做,比如推荐系统(典型的机器学习应用场景),如果你的数据维度不足够支撑,或者业务形态不是面向大众的,那很可能无法成行。 学习路线你可以看一下这篇文章: https://my.oschina.net/ijj/blog/878119 问:公司数据分析人员如何转入大数据? 答:先学一门容易入门的语言 R 或者pyhton,掌握基础后再使用它们处理数据、分析数据,我觉得这种对你切入比较容易。 问:我从事两年JavaWeb最近想转大数据这块,请问有什么直观的入门指引呢? 答:入门指引的话,不妨关注一下《Hadoop大数据实战手册》这里面对大数据和Hadoop生态圈做了比较详细的介绍,用来入门很不错。 我个人认为,在大数据这个领域还是要跟个人结合,扬长避短,对于是具体做可视化,工程应用,还是分析,这个还是要看个人是否擅长和喜欢。 给大家推荐一套Hadoop教学视频,老师是百度Hadoop核心架构师。内容包括Hadoop入门、Hadoop生态架构、Hadoop大型商业项目讲解,讲的很细致。需要的话可以联系微信 ganshiyu1026 ,备注OSC 免费获取。 问:我目前主要是做一些数据统计的工作,想要往推荐系统方向发展,这块儿我该怎么学习呢? 答:推荐系统现在用的比较多的是SVM算法或协同过滤等。 这个内容在我看来其实还是贝叶斯信念网络的延伸或变种,可以看一些关于推荐系统方面的专著。 问:业界采用的大数据解决方案有哪些? 答:现在的框架相对比较成熟的有hadoop,这是做离线处理的; spark可以做离线处理和准实时处理; storm,这是做实时处理的; mahout,spark mllib,离线机器学习; scikit-learn,离线机器学习; tensorflow,torch深度学习。 除此之外还有很多框架,解决方案也是使用这些工程与其它一些开源产品做组合。 问:个人对大数据没有太多的了解,主观地认为现在的大数据都基本是以Hadoop为核心,综合其他技术,如HBase, Hive等,根据行业实际建立相应的分析模型,但不知实施大数据项目时,在不同的行业中有没有标准的技术路线以及标准的架构呢? 我个人认为不要过于纠结这些。大数据的边界怎么划分会长期没有定义,不过有一点是确定的,就是一个人工作的价值。 一个人工作的价值是否能够帮助公司或者客户提高效率,消除不确定性,减小试错成本,找出好的改进方向,这些才是价值所在。 至于某一个工具都是有适用场景的,在不同项目里进行有侧重的选择使用就可以了。 问:个人对大数据的理解就是历史数据产生了很多,然后多表查询时效率很慢,怎么用一些缓存或数据库中间件解决性能的事? 答:如果单纯从你说的这个场景来看,应该属于海量数据存储的研究范畴。 大部分都是用类似分布式存储、表分区、索引、压缩存储等手段进行解决。 这个应该不属于大数据研究的重点。 问:机器学习有哪些最新的理论知识?如果要实现机器学习,业界是否有成熟的开源方案? 答:最新的理论知识多用google进行相关论文的查询,更新还是比较快的。 机器学习开源方案有不少,我们用的是scikit-learn,是python语言的框架,已经能解决不少问题了。 问:在大数据领域,机器学习首先应该是有足够多的数据来支撑其运算吧,但其实很多现实是数据量并没有到达那个级别,或者数据维度还有许多尚不被我们所认知。所以,有没有一个相对清晰的分界线,哪些情况下就可以使用机器学习,哪些还不足够呢? 答:在神经网络出现之前,对于特征抽取比较准确,解释比较清晰的领域都是可以使用机器学习的。 在神经网络出现之后,尤其是卷积神经网络出现之后,对于模式识别方面的加强是令人瞩目的。很多原来使用随机森林或者SVM都无法处理得很好的模式识别问题都有了进展。 如果一定要划界限的话,我想可以从特征提取的难易程度上来做划分。如果特征很难提取,甚至特征完全不明确,则十有八九在机器学习过程中得不到令人满意的模型解
来源:开源中国
发布时间:2017-04-21 18:11:00
HDC调试需求开发(15万预算),能者速来!>>> 1.用户数千万级 2.标签最高支持上万 3.标签会逐渐增多 4.支持依据多个标签进行查询,统计数量(秒级响应)(这是重点) 用什么存储能实现? Hbase 貌似不支持第4条 ES的话,数据量多了增加标签会很耗时 Neo4j?
来源:开源中国
发布时间:2019-05-08 11:21:00
HDC调试需求开发(15万预算),能者速来!>>> 我的问题: 环境:Hadoop2.6.0 jdk: 1.8.0_121 问题描述: 当下面程序中的输入文件目录(/init_data/)中 存在文件时,能够在输出目录中查看到输出文件,但是文件内容时空的, 当下面程序中的输入文件目录(/init_data/)中 不存在文件时,在输出目录中看不到文件,同时程序也没有存在错误! 那么想问的是,这个是怎么回事? 我的代码: package com.yangsen; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import java.io.IOException; public class mapreduce { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); conf.set("fs.defaultFS","hdfs://192.168.100.112:9000"); //conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); Job job = Job.getInstance(conf,"kieryum"); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); job.setJarByClass(mapreduce.class); job.setMapperClass(MyMapper.class); job.setNumReduceTasks(4); FileInputFormat.addInputPath(job, new Path("hdfs://192.168.100.112:9000/init_data")); //设置输出路径 Path output = new Path("hdfs://192.168.100.112:9000/clear_data"); //强制删除输出路径 output.getFileSystem(conf).delete(output,true); FileOutputFormat.setOutputPath(job, output); try { job.waitForCompletion(true); } catch (InterruptedException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } //System.out.println(job.getJobFile()); } class MyMapper extends Mapper { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { value.set("dd"); context.write(value,NullWritable.get()); } } } 结果图: 运行结果:
来源:开源中国
发布时间:2019-05-05 12:24:00
HDC调试需求开发(15万预算),能者速来!>>> 用的主备mysql,目前mysql高峰期一直冲高,有什么成熟的db解决方案
来源:开源中国
发布时间:2019-04-15 20:41:00
HDC调试需求开发(15万预算),能者速来!>>> hadoop mapper : mapper 输出的时 在reduce的时候 怎么知道reduce的输入类型的? mapper : reduce : output: input: text --> IntWriteable text --> iteratable text --> IntWriteable text --> iteratable text --> IntWriteable text --> iteratable 这种关系时怎么对应的? 谢谢你们的回答
来源:开源中国
发布时间:2019-04-08 15:27:00
HDC调试需求开发(15万预算),能者速来!>>> Apache kylin build cube fial log is "no counters for job" I created a model olap left join dimension table ,and build success. But olap inner join dimension table ,build cube fial. Who can help me?
来源:开源中国
发布时间:2019-04-02 19:49:00
HDC调试需求开发(15万预算),能者速来!>>> http://www.blogjava.net/ghostdog/archive/2008/06/10/206874.html
来源:开源中国
发布时间:2008-10-24 19:34:00
HDC调试需求开发(15万预算),能者速来!>>> 1、点评 本文主要分享的是如何从零设计开发一个中大型推送系统,因限于篇幅,文中有些键技术只能一笔带过,建议有这方面兴趣的读者可以深入研究相关知识点,从而形成横向知识体系。 本文适合有一定开发、架构经验的后端程序员阅读,文内个别技术点可能并非最佳实践,但至少都是生动的实践分享,至少能起到抛砖引玉的作用。希望即时通讯网本次整理的文章能给予你一些启发。 (本文同步发布于: http://www.52im.net/thread-2096-1-1.html ) 2、引言 先简单介绍下本次要分享的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的数据通信(交互)。其中最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息,同时还得满足大量设备接入的需求。 正好借本文,总结和沉淀一下近期的技术心得。 所以本次分享的内容不但可以满足物联网领域同时还支持以下场景: 1)基于 WEB 的聊天系统(点对点、群聊); 2)WEB 应用中需求服务端推送的场景; 3)基于 SDK 的消息推送平台。 3、关于作者 crossoverJie(陈杰): 90后,毕业于重庆信息工程学院,现供职于重庆猪八戒网络有限公司。 作者的博客: https://crossoverjie.top 作者的Github: https://github.com/crossoverJie 4、技术选型 要满足大量的连接数、同时支持双全工通信,并且性能也得有保障。在 Java 技术栈中进行选型首先自然是排除掉了传统 IO。 那就只有选 NIO 了,在这个层面其实选择也不多,考虑到社区、资料维护等方面最终选择了 Netty。 Netty源码在线阅读: Netty-4.1.x地址是: http://docs.52im.net/extend/docs/src/netty4_1/ Netty-4.0.x地址是: http://docs.52im.net/extend/docs/src/netty4/ Netty-3.x地址是: http://docs.52im.net/extend/docs/src/netty3/ Netty在线API文档: Netty-4.1.x API文档(在线版): http://docs.52im.net/extend/docs/api/netty4_1/ Netty-4.0.x API文档(在线版): http://docs.52im.net/extend/docs/api/netty4/ Netty-3.x API文档(在线版): http://docs.52im.net/extend/docs/api/netty3/ 有关Netty的其它精华文章: 《 有关“为何选择Netty”的11个疑问及解答 》 《 开源NIO框架八卦——到底是先有MINA还是先有Netty? 》 《 选Netty还是Mina:深入研究与对比(一) 》 《 选Netty还是Mina:深入研究与对比(二) 》 《 Netty 4.x学习(一):ByteBuf详解 》 《 Netty 4.x学习(二):Channel和Pipeline详解 》 《 Netty 4.x学习(三):线程模型详解 》 《 实践总结:Netty3.x升级Netty4.x遇到的那些坑(线程篇) 》 《 实践总结:Netty3.x VS Netty4.x的线程模型 》 《 详解Netty的安全性:原理介绍、代码演示(上篇) 》 《 详解Netty的安全性:原理介绍、代码演示(下篇) 》 《 详解Netty的优雅退出机制和原理 》 《 NIO框架详解:Netty的高性能之道 》 《 Twitter:如何使用Netty 4来减少JVM的GC开销(译文) 》 《 绝对干货:基于Netty实现海量接入的推送服务技术要点 》 《 Netty干货分享:京东京麦的生产级TCP网关技术实践总结 》 最终的架构图如下: 现在看着蒙没关系,下文一一介绍。 5、协议解析 既然是一个消息系统,那自然得和客户端定义好双方的协议格式。 常见和简单的是 HTTP 协议,但我们的需求中有一项需要是双全工的交互方式,同时 HTTP 更多的是服务于浏览器。我们需要的是一个更加精简的协议,减少许多不必要的数据传输。 因此我觉得最好是在满足业务需求的情况下定制自己的私有协议,在这个场景下有标准的物联网协议。 如果是其他场景可以借鉴现在流行的 RPC 框架定制私有协议,使得双方通信更加高效。 不过根据这段时间的经验来看,不管是哪种方式都得在协议中预留安全相关的位置。协议相关的内容就不过多讨论了,更多介绍具体的应用。 有关通信协议、协议格式的选择,可以阅读以下文章: 《 Protobuf通信协议详解:代码演示、详细原理介绍等 》 《 一个基于Protocol Buffer的Java代码演示 》 《 简述传输层协议TCP和UDP的区别 》 《 为什么QQ用的是UDP协议而不是TCP协议? 》 《 移动端即时通讯协议选择:UDP还是TCP? 》 《 如何选择即时通讯应用的数据传输格式 》 《 强列建议将Protobuf作为你的即时通讯应用数据传输格式 》 《 全方位评测:Protobuf性能到底有没有比JSON快5倍? 》 《 移动端IM开发需要面对的技术问题(含通信协议选择) 》 《 简述移动端IM开发的那些坑:架构设计、通信协议和客户端 》 《 理论联系实际:一套典型的IM通信协议设计详解 》 《 58到家实时消息系统的协议设计等技术实践分享 》 《 详解如何在NodeJS中使用Google的Protobuf 》 《 技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解 》 《 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(原理篇) 》 《 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(实战篇) 》 >> 更多同类文章 …… 6、简单实现 首先考虑如何实现功能,再来思考百万连接的情况。 6.1 注册鉴权 在做真正的消息上、下行之前首先要考虑的就是鉴权问题。就像你使用微信一样,第一步怎么也得是登录吧,不能无论是谁都可以直接连接到平台。所以第一步得是注册才行。 如上面第4节架构图中的注册/鉴权模块。通常来说都需要客户端通过 HTTP 请求传递一个唯一标识,后台鉴权通过之后会响应一个 Token,并将这个 Token 和客户端的关系维护到 Redis 或者是 DB 中。 客户端将这个 Token 也保存到本地,今后的每一次请求都得带上这个 Token。一旦这个 Token 过期,客户端需要再次请求获取 Token。 鉴权通过之后客户端会直接通过 TCP 长连接到图中的 push-server 模块。这个模块就是真正处理消息的上、下行。 6.2 保存通道关系 在连接接入之后,真正处理业务之前需要将当前的客户端和 Channel 的关系维护起来。 假设客户端的唯一标识是手机号码,那就需要把手机号码和当前的 Channel 维护到一个 Map 中。 这点和之前 Spring Boot 整合长连接心跳机制 类似,如下图: 同时为了可以通过 Channel 获取到客户端唯一标识(手机号码),还需要在 Channel 中设置对应的属性: publicstaticvoidputClientId(Channel channel, String clientId) { channel.attr(CLIENT_ID).set(clientId); } 获取手机号码时: publicstaticString getClientId(Channel channel) { return(String)getAttribute(channel, CLIENT_ID); } 这样当我们客户端下线时便可以记录相关日志: String telNo = NettyAttrUtil.getClientId(ctx.channel()); NettySocketHolder.remove(telNo); log.info("客户端下线,TelNo="+ telNo); 这里有一点需要注意:存放客户端与 Channel 关系的 Map 最好是预设好大小(避免经常扩容),因为它将是使用最为频繁同时也是占用内存最大的一个对象。 6.3 消息上行 接下来则是真正的业务数据上传,通常来说第一步是需要判断上传消息输入什么业务类型。在聊天场景中,有可能上传的是文本、图片、视频等内容。 所以我们得进行区分,来做不同的处理,这就和客户端协商的协议有关了: 1)可以利用消息头中的某个字段进行区分; 2)更简单的就是一个 JSON 消息,拿出一个字段用于区分不同消息。 不管是哪种只要可以区分出来即可。 6.4 消息解析与业务解耦 消息可以解析之后便是处理业务,比如可以是写入数据库、调用其他接口等。 我们都知道在 Netty 中处理消息一般是在 channelRead() 方法中: 在这里可以解析消息,区分类型。但如果我们的业务逻辑也写在里面,那这里的内容将是巨多无比。 甚至我们分为好几个开发来处理不同的业务,这样将会出现许多冲突、难以维护等问题。所以非常有必要将消息解析与业务处理完全分离开来。 这时面向接口编程就发挥作用了。这里的核心代码和 「造个轮子」—— cicada(轻量级 Web 框架) 是一致的(另外,即时通讯网的 MobileIMSDK工程 也使用了同样的API解偶设计思路)。 都是先定义一个接口用于处理业务逻辑,然后在解析消息之后通过反射创建具体的对象执行其中的处理函数即可。 这样不同的业务、不同的开发人员只需要实现这个接口同时实现自己的业务逻辑即可。 伪代码如下: 想要了解 cicada 的具体实现请点击这里: https://github.com/TogetherOS/cicada 上行还有一点需要注意:由于是基于长连接,所以客户端需要定期发送心跳包用于维护本次连接。 同时服务端也会有相应的检查,N 个时间间隔没有收到消息之后,将会主动断开连接节省资源。 这点使用一个 IdleStateHandler 就可实现。 6.5 消息下行 有了上行自然也有下行。比如在聊天的场景中,有两个客户端连上了 push-server,它们直接需要点对点通信。 这时的流程是: 1)A 将消息发送给服务器; 2)服务器收到消息之后,得知消息是要发送给 B,需要在内存中找到 B 的 Channel; 3)通过 B 的 Channel 将 A 的消息转发下去。 这就是一个下行的流程。甚至管理员需要给所有在线用户发送系统通知也是类似:遍历保存通道关系的 Map,挨个发送消息即可。这也是之前需要存放到 Map 中的主要原因。 伪代码如下: 具体可以参考: https://github.com/crossoverJie/netty-action/ 7、分布式方案 单机版的实现了,现在着重讲讲如何实现百万连接。 百万连接其实只是一个形容词,更多的是想表达如何来实现一个分布式的方案,可以灵活的水平拓展从而能支持更多的连接。在做这个事前,首先得搞清楚我们单机版的能支持多少连接。 影响这个的因素就比较多了: 1)服务器自身配置:内存、CPU、网卡、Linux 支持的最大文件打开数等; 2)应用自身配置:因为 Netty 本身需要依赖于堆外内存,但是 JVM 本身也是需要占用一部分内存的,比如存放通道关系的大 Map。这点需要结合自身情况进行调整。 结合以上的情况可以测试出单个节点能支持的最大连接数。单机无论怎么优化都是有上限的,这也是分布式主要解决的问题。 7.1 架构介绍 在讲具体实现之前首先得讲讲上文贴出的整体架构图: 先从左边开始。上文提到的注册鉴权模块也是集群部署的,通过前置的 Nginx 进行负载。之前也提过了它主要的目的是来做鉴权并返回一个 Token 给客户端。 但是 push-server 集群之后它又多了一个作用。那就是得返回一台可供当前客户端使用的 push-server。 右侧的平台一般指管理平台,它可以查看当前的实时在线数、给指定客户端推送消息等。推送消息则需要经过一个推送路由(push-server)找到真正的推送节点。 其余的中间件如: Redis、ZooKeeper、Kafka、MySQL 都是为了这些功能所准备的,具体看下面的实现。 7.2 注册发现 首先第一个问题则是 注册发现,push-server 变为多台之后如何给客户端选择一台可用的节点是第一个需要解决的。 这块的内容其实已经在 分布式(一) 搞定服务注册与发现中详细讲过了。所有的 push-server 在启动时候需要将自身的信息注册到 ZooKeeper 中。 注册鉴权模块会订阅 ZooKeeper 中的节点,从而可以获取最新的服务列表,结构如下: 以下是一些伪代码: 应用启动注册 ZooKeeper 对于注册鉴权模块来说只需要订阅这个 ZooKeeper 节点: 7.3 路由策略 既然能获取到所有的服务列表,那如何选择一台刚好合适的 push-server 给客户端使用呢? 这个过程重点要考虑以下几点: 1)尽量保证各个节点的连接均匀; 2)增删节点是否要做 Rebalance。 首先保证均衡有以下几种算法: 1)轮询:挨个将各个节点分配给客户端。但会出现新增节点分配不均匀的情况; 2)Hash 取模的方式:类似于 HashMap,但也会出现轮询的问题。当然也可以像 HashMap 那样做一次 Rebalance,让所有的客户端重新连接。不过这样会导致所有的连接出现中断重连,代价有点大。由于 Hash 取模方式的问题带来了一致性 Hash 算法,但依然会有一部分的客户端需要 Rebalance; 3)权重:可以手动调整各个节点的负载情况,甚至可以做成自动的,基于监控当某些节点负载较高就自动调低权重,负载较低的可以提高权重。 还有一个问题是: 当我们在重启部分应用进行升级时,在该节点上的客户端怎么处理? 由于我们有心跳机制,当心跳不通之后就可以认为该节点出现问题了。那就得重新请求注册鉴权模块获取一个可用的节点。在弱网情况下同样适用。 如果这时客户端正在发送消息,则需要将消息保存到本地等待获取到新的节点之后再次发送。 7.4 有状态连接 在这样的场景中不像是 HTTP 那样是无状态的,我们得明确的知道各个客户端和连接的关系。 在上文的单机版中我们将这个关系保存到本地的缓存中,但在分布式环境中显然行不通了。 比如在平台向客户端推送消息的时候,它得首先知道这个客户端的通道保存在哪台节点上。 借助我们以前的经验,这样的问题自然得引入一个第三方中间件用来存放这个关系。 也就是架构图中的存放路由关系的 Redis,在客户端接入 push-server 时需要将当前客户端唯一标识和服务节点的 ip+port 存进 Redis。 同时在客户端下线时候得在 Redis 中删掉这个连接关系。这样在理想情况下各个节点内存中的 Map 关系加起来应该正好等于 Redis 中的数据。 伪代码如下: 这里存放路由关系的时候会有并发问题,最好是换为一个 Lua 脚本。 7.5 推送路由 设想这样一个场景: 管理员需要给最近注册的客户端推送一个系统消息会怎么做? 结合架构图,假设这批客户端有 10W 个,首先我们需要将这批号码通过平台下的 Nginx 下发到一个推送路由中。 为了提高效率甚至可以将这批号码再次分散到每个 push-route 中。拿到具体号码之后再根据号码的数量启动多线程的方式去之前的路由 Redis 中获取客户端所对应的 push-server。 再通过 HTTP 的方式调用 push-server 进行真正的消息下发(Netty 也很好的支持 HTTP 协议)。 推送成功之后需要将结果更新到数据库中,不在线的客户端可以根据业务再次推送等。 7.6 消息流转 也许有些场景对于客户端上行的消息非常看重,需要做持久化,并且消息量非常大。 在 push-sever 做业务显然不合适,这时完全可以选择 Kafka 来解耦。将所有上行的数据直接往 Kafka 里丢后就不管了。再由消费程序将数据取出写入数据库中即可。 8、分布式带来的问题 分布式解决了性能问题但却带来了其他麻烦。 8.1 应用监控 比如如何知道线上几十个 push-server 节点的健康状况?这时就得监控系统发挥作用了,我们需要知道各个节点当前的内存使用情况、GC。 以及操作系统本身的内存使用,毕竟 Netty 大量使用了堆外内存。同时需要监控各个节点当前的在线数,以及 Redis 中的在线数。理论上这两个数应该是相等的。 这样也可以知道系统的使用情况,可以灵活的维护这些节点数量。 8.2 日志处理 日志记录也变得异常重要了,比如哪天反馈有个客户端一直连不上,你得知道问题出在哪里。 最好是给每次请求都加上一个 traceID 记录日志,这样就可以通过这个日志在各个节点中查看到底是卡在了哪里。以及 ELK 这些工具都得用起来才行。 9、本文小结 本次是结合我日常经验得出的,有些坑可能在工作中并没有踩到,所以还会有一些遗漏的地方。 就目前来看想做一个稳定的推送系统是比较麻烦的,其中涉及到的点非常多,只有真正做过之后才会知道。 附录:更多推送技术相关文章 《 iOS的推送服务APNs详解:设计思路、技术原理及缺陷等 》 《 信鸽团队原创:一起走过 iOS10 上消息推送(APNS)的坑 》 《 Android端消息推送总结:实现原理、心跳保活、遇到的问题等 》 《 扫盲贴:认识MQTT通信协议 》 《 一个基于MQTT通信协议的完整Android推送Demo 》 《 IBM技术经理访谈:MQTT协议的制定历程、发展现状等 》 《 求教android消息推送:GCM、XMPP、MQTT三种方案的优劣 》 《 移动端实时消息推送技术浅析 》 《 扫盲贴:浅谈iOS和Android后台实时消息推送的原理和区别 》 《 绝对干货:基于Netty实现海量接入的推送服务技术要点 》 《 移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信) 》 《 为何微信、QQ这样的IM工具不使用GCM服务推送消息? 》 《 极光推送系统大规模高并发架构的技术实践分享 》 《 从HTTP到MQTT:一个基于位置服务的APP数据通信实践概述 》 《 魅族2500万长连接的实时消息推送架构的技术实践分享 》 《 专访魅族架构师:海量长连接的实时消息推送系统的心得体会 》 《 深入的聊聊Android消息推送这件小事 》 《 基于WebSocket实现Hybrid移动应用的消息推送实践(含代码示例) 》 《 一个基于长连接的安全可扩展的订阅/推送服务实现思路 》 《 实践分享:如何构建一套高可用的移动端消息推送系统? 》 《 Go语言构建千万级在线的高并发消息推送系统实践(来自360公司) 》 《 腾讯信鸽技术分享:百亿级实时消息推送的实战经验 》 《 百万在线的美拍直播弹幕系统的实时推送技术实践之路 》 《 京东京麦商家开放平台的消息推送架构演进之路 》 《 了解iOS消息推送一文就够:史上最全iOS Push技术详解 》 《 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇) 》 《 解密“达达-京东到家”的订单即时派发技术原理和实践 》 《 技术干货:从零开始,教你设计一个百万级的消息推送系统 》 >> 更多同类文章 …… (本文同步发布于: http://www.52im.net/thread-2096-1-1.html )
来源:开源中国
发布时间:2018-11-27 20:50:00
HDC调试需求开发(15万预算),能者速来!>>> java.io.IOException: 远程主机强迫关闭了一个现有的连接。 at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233) at sun.nio.ch.IOUtil.read(IOUtil.java:206) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236) at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:280) at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:44) at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:695) at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668) at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657) at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68) at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)
来源:开源中国
发布时间:2012-03-20 10:56:00
HDC调试需求开发(15万预算),能者速来!>>> Apache Mina 如何做负载均衡,或是集群,因特网上现在都没有找到现成成熟的解决方案,大家有没有思路啊?
来源:开源中国
发布时间:2013-03-04 16:21:04
HDC调试需求开发(15万预算),能者速来!>>> 各位好,想请教一个比较奇怪的问题。在项目中,通过mina接受远程telnet命令,然后将命令中的请求参数放到消息队列里面,由消费者端去异步处理。但是在测试过程中发现,第一次的telnet命令,mq消费者端日志显示确认完成,但是onMessage方法日志内并未打印,业务代码就没执行。但是第二次发送同一个命令之后,一切就正常了。 1. spring-mq配置文件 2. consumer端代码 @Component("workerListener") public class LaneWorkerListener implements ChannelAwareMessageListener { private static final Logger log = LoggerFactory.getLogger(LaneWorkerListener.class); @Autowired private LaneProcessor processor; public LaneWorkerListener() { } public void onMessage(Message message, Channel channel) throws Exception { try { Object receivedObject = SerializationUtils.deserialize(message.getBody()); log.info("消费者端接收到消息:{}, 消息properties:{} ", receivedObject, message.getMessageProperties()); // business operations. if (receivedObject instanceof ParamsWrapper) { ParamsWrapper wrapper = (ParamsWrapper) receivedObject; processor.process(SessionManager.getSession(wrapper.getSessionId()), wrapper.getParams()); } channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); // false只确认当前一个消息收到,true确认所有consumer获得的消息 } catch (Exception e) { log.error(String.format("消息确认失败,详细信息:", e)); if (message.getMessageProperties().getRedelivered()) { log.error("消息MessageId:{}已重复处理失败,拒绝再次接收...", message.getMessageProperties().getMessageId()); channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); // 拒绝消息 } else { log.error("消息MessageId:{}即将再次返回队列处理...", message.getMessageProperties().getMessageId()); channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); // requeue为是否重新回到队列 } } } } 3.另外还有两个确认机制的监听器 @Component("callbackListener") public class LaneWorkerCallbackListener implements ConfirmCallback { private static final Logger log = Logger.getLogger(LaneWorkerCallbackListener.class); public void confirm(CorrelationData correlationData, boolean ack, String cause) { log.info(String.format("确认消息完成...,{%s},{%s},{%s}", correlationData, ack, cause)); } } @Component("returnCallbackListener") public class LaneWorkerReturnedCallbackListener implements ReturnCallback { private static final Logger log = Logger.getLogger(LaneWorkerCallbackListener.class); public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) { log.info(String.format("消息返回处理中...,{%s},{%s},{%s},{%s},{%s}", message, replyCode, replyText,exchange,routingKey)); } } 在mina中的消息发送: 1. mina spring 配置 2. 主要的消息接受处理handler ServerIOHandler @Service public class ServerIoHandler extends IoHandlerAdapter { private static final Logger LOGGER = Logger.getLogger(ServerIoHandler.class); @Autowired private CacheManager cacheManager; @Autowired private ILaneMessageProducer producer; @Autowired private LaneQueueContainer queues; @Override public void sessionCreated(IoSession session) throws Exception { //为session设置唯一主键id,暂用毫秒时间戳策略。缓存session session.setAttributeIfAbsent(LaneConstants.MINA_SESSION_PRIMARY_KEY, System.currentTimeMillis()); Object sessionId = session.getAttribute(LaneConstants.MINA_SESSION_PRIMARY_KEY); SessionManager.addSession(Long.valueOf(sessionId.toString()), session); //并且存在缓存中 String address = ((InetSocketAddress)session.getRemoteAddress()).getAddress().getHostAddress(); cacheManager.setPerpetual(LaneConfig.getEnv().concat(LaneConstants.CACHE_LANE_SESSION_KEY), address); } @Override public void messageReceived(IoSession session, Object message) throws Exception { try { LOGGER.info(String.format("Start: [%s] -- address:[%s]",message.toString(),session.getRemoteAddress().toString())); // 解密消息 if (LaneConfig.isEncryptedMsg()) { message = AESUtils.decrypt(message.toString()); } JSONObject msg = parseParam(message.toString()); Long spid = Long.valueOf(session.getAttribute(LaneConstants.MINA_SESSION_PRIMARY_KEY).toString());//session id. //消息存入消息队列 producer.sendMessage(queues.getQueueLane(), new ParamsWrapper(spid, msg)); LOGGER.info(String.format(">>>>>>消息{%s}已被放入队列中.....时间:[%s]", message.toString(),DateUtils.getCurrentDateTimeMilliSecond(new Date()))); } catch (Exception e) { SocketResponse srs = new SocketResponse(); srs.setCode(SocketResponse.INTERNAL_SERVER_ERROR); srs.setMsg("内部错误"); session.write(LaneUtils.parseReturn(srs)); LOGGER.error("Exception:", e); } finally { message = null; } } 还请各位大侠多多指点。。。。谢谢!
来源:开源中国
发布时间:2017-09-26 10:35:00
HDC调试需求开发(15万预算),能者速来!>>> 如题,Netty和MINA该如何选择,如果选择Netty该用哪个版本?谢谢!
来源:开源中国
发布时间:2014-09-16 17:53:00
HDC调试需求开发(15万预算),能者速来!>>> 我的项目要求在客户端连接到服务器的时候,就会时时的给他每秒一次的推送数据,还有其他的数据有的是5秒一次,有的是1分一次。我试着自己建了多个线程传入ISsession 发送数据 总是报错。如果只开启一个线程就正常。 下面是hander中的代码: @Override public void sessionOpened(IoSession session) throws Exception { System.out.println("【server】sessionOpened ID:" + session.getId()); if (allIoSessions == null) { allIoSessions = session.getService().getManagedSessions(); } System.out.println("有人连接,当前客户数:" + allIoSessions.size()); new Thread(new AllPoliceCoordsThread(session, service)).start(); new Thread(new HotPoliceCoordsThread(session, service)).start(); new Thread(new UserCoordsThread(session, service)).start(); } 注释掉两个线程的话,只留一个(1秒发一次)就正常了。可是如果把频率改成1毫秒一次。就算一个线程也要不停地报错
来源:开源中国
发布时间:2016-01-12 20:58:00
HDC调试需求开发(15万预算),能者速来!>>> 信息: Initializing Spring root WebApplicationContext2017-01-06 17:33:12:670[ERROR]: Context initialization failed java.lang.NoClassDefFoundError: org/springframework/core/DefaultParameterNameDiscoverer at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.(AbstractAutowireCapableBeanFactory.java:123) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.(AbstractAutowireCapableBeanFactory.java:170) at org.springframework.beans.factory.support.DefaultListableBeanFactory.(DefaultListableBeanFactory.java:171) at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:127) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5077) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5591) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.springframework.core.DefaultParameterNameDiscoverer at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705) ... 19 more 一月 06, 2017 5:33:12 下午 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.NoClassDefFoundError: org/springframework/core/DefaultParameterNameDiscoverer at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.(AbstractAutowireCapableBeanFactory.java:123) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.(AbstractAutowireCapableBeanFactory.java:170) at org.springframework.beans.factory.support.DefaultListableBeanFactory.(DefaultListableBeanFactory.java:171) at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:127) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5077) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5591) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.springframework.core.DefaultParameterNameDiscoverer at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705) ... 19 more 一月 06, 2017 5:33:12 下午 org.apache.catalina.core.StandardContext startInternal 严重: One or more listeners failed to start. Full details will be found in the appropriate container log file 一月 06, 2017 5:33:13 下午 org.apache.catalina.core.StandardContext startInternal 严重: Context [/grain_detection] startup failed due to previous errors 一月 06, 2017 5:33:13 下午 org.apache.catalina.core.ApplicationContext log 信息: Closing Spring root WebApplicationContext 一月 06, 2017 5:33:13 下午 org.apache.catalina.core.StandardContext listenerStop 严重: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:171) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1090) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1064) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1010) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:586) at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5124) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5786) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
来源:开源中国
发布时间:2017-01-06 17:35:00
HDC调试需求开发(15万预算),能者速来!>>> 最近接了个项目,需要用异步单工长连接,同银联方进行交互,因为对方用的就是这实现,但是我们用的是mina同步短连接,这里我试了mina的异步长短通讯、socket的通讯、netty的通讯连接,都不完美,第一个,多几笔,提示hander未关闭,第二个发过去的数据对方不认识。第三个,发过去但收不到响应。。。。,用短连接发送再加一个client端口启动接收,能发能收,但并发量和接收数据处理这块也容易混乱!求大神指导下,或者给个这种类型的demo 灰常感谢!!! demo: sendMsg(Object msg) throws CharacterCodingException, UnsupportedEncodingException{ NioSocketConnector connector = new NioSocketConnector(); //connector.getSessionConfig().setIdleTime(IdleStatus.WRITER_IDLE,10); //写 通道均在10 秒内无任何操作就进入空闲状态 //connector.getSessionConfig().setIdleTime(IdleStatus.READER_IDLE,10); //读 通道均在10 秒内无任何操作就进入空闲状态 connector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,10); //读写 通道均在10 秒内无任何操作就进入空闲状态 connector.getSessionConfig().setWriteTimeout(3000); connector.getSessionConfig().setReadBufferSize(2048); connector.setConnectTimeoutMillis(4000); connector.getFilterChain().addLast("codec", CODEC_FILTER); connector.setHandler(new MinaClientHander() ); ConnectFuture cf = connector.connect(new InetSocketAddress(IP,PORT)); cf.join(); // 等待连接成功 cf.awaitUninterruptibly(); IoSession session = cf.getSession(); System.out.println("开始发消息【"+msg+"】去通道方!!!"); if(msg.toString().length()>20){ String msgStr = ""; Charset charset =Charset.forName("ISO-8859-1"); CharsetEncoder encoder = charset.newEncoder(); if (msg instanceof byte[]) { msgStr = new String((byte[]) msg, "ISO-8859-1"); } else { msgStr = msg.toString(); } String value; value =setMsgLength(msgStr); IoBuffer buf = IoBuffer.allocate(value.length()) .setAutoExpand(true); buf.putString(value, encoder); buf.flip(); System.out.println("MsgHeadProcess 报文发送编码 【 " + new Date(System.currentTimeMillis()) + "】 data【" +buf.getHexDump()); session.write(buf); session.getCloseFuture().awaitUninterruptibly();// 等待连接断开 connector.dispose(); session.close(); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else{ session.write(msg); session.getCloseFuture().awaitUninterruptibly();// 等待连接断开 connector.dispose(); session.close(); } static{ // 服务端的实例 NioSocketAcceptor accept = new NioSocketAcceptor(); // 添加filter accept.getFilterChain().addLast("codec",new ProtocolCodecFilter( new MinaEncoder(), new MinaDecoder() )); // 添加filter,日志信息 // accept.getFilterChain().addLast("logging", new LoggingFilter()); // 添加线程池 accept.getFilterChain().addLast("ThreadPool", new ExecutorFilter(Executors.newCachedThreadPool())); accept.getSessionConfig().setReadBufferSize(2048); accept.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,10); // 设置服务端的handler accept.setHandler(new MinaServerHander()); try { int PORT=10006; accept.bind(new InetSocketAddress(PORT)); log.info("服务端启动!端口:"+PORT); } catch (IOException e) { log.error("socket listener start exception", e); } log.info("mina server started."); }
来源:开源中国
发布时间:2017-01-09 17:36:00
HDC调试需求开发(15万预算),能者速来!>>> 需求:大量无线传感器(2000-3000)需要定时向服务器发送请求,提交数据。想到的解决方案是mina,不知道对不对。 客户端要请求服务器,查看传感器传回来的数据。使用tomcat。 如何让mina随着tomcat启动和销毁?
来源:开源中国
发布时间:2017-01-05 18:01:00
HDC调试需求开发(15万预算),能者速来!>>> 麻烦各位大神看看这是什么原因 第一次尝试用mina做发送指令通讯,结果发现服务器卡死,用jmap 测试后 发现的
来源:开源中国
发布时间:2016-11-16 21:05:00
HDC调试需求开发(15万预算),能者速来!>>> 概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo。 当前由于NIO框架的流行,使得开发大并发、高性能的互联网服务端成为可能。这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是 MINA2 、而Netty的主要版本是 Netty3 和 Netty4 (Netty5已经被取消开发了: 详见此文 )。 本文中,服务端将分别用MINA2和Netty4进行实现,但在你实际的项目中服务端实现只需选其一就行了。本文中的Demo同时用MINA2和Netty4分别实现服务端的目的,是因为很多人都在纠结到底是用MINA还是Netty来实现高并发的Java网络通信服务端,在此干脆两个都实现了,就看你怎么选择。 实际上,MINA2和Netty4的官方代码里有UDP通信的Demo代码,但却不存在针对移动端(主要是Android和iOS端)的Demo,本文将演示用Android客户端来实现这种跨平台的双向网络通信。Demo中,已经解决跨平台通信时的常见的乱码、数据字节异常等问题,如觉得有用,你可直接使用之。 学习交流 - 更多即时通讯技术资料: http://www.52im.net/forum.php?mod=collection&op=all - 移动端即时通讯交流群: 215891622 推荐 《NIO框架入门》系列文章目录 有关MINA和Netty的入门文章很多,但多数都是复制、粘贴的未经证实的来路不明内容,对于初次接触的人来说,一个可以运行且编码规范的Demo,显然要比各种“详解”、“深入分析”之类的要来的直接和有意义。本系列入门文章正是基于此种考虑而写,虽无精深内容,但至少希望对初次接触MINA、Netty的人有所启发,起到抛砖引玉的作用。 本文是《NIO框架入门》系列文章中的第 4 篇,目录如下: 《 NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 》 《 NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 》 《 NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战 》 《 NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战 》(本文) 本篇亮点 客户端基于Android移动端平台: 直接使用Android的标准UDP代码,不依赖第3方包,且已解决与Java NIO服务端的跨平台通信问题,是个难得的Android端实践入门示例; 完整可执行源码、方便学习: 完整的Demo源码,适合新手直接运行,便于学习和研究。 Demo中的代码源自作者的开源工程,有实用价值: 源码均修改自作者的即时通讯开源工程 MobileIMSDK ,只是为了方便学习理解而作了简化,有一定的实用价值; 本文中Demo演示的功能 本文中的Demo代码实现包含两部分,Android UDP客户端和NIO框架实现的服务端(包括MINA2和Netty4实现两个方案),客户端每隔5秒向服务端发送消息,而服务端在收到消息后马上回复一条消息给客户端。 如上所述,服务端(PC服务器)和客户端(Android移动端)都要实现消息的发送和接收,即实现跨平台的双向通信。下节将将给出真正的实现代码。 Android客户端准备工作 [Step 1]:准备好开发环境 这两年,Google官方已经基本放弃Eclipse+ADT这样的IDE组合,转而大力开发Android Studio,但不得不承认,由于我的OS仍然是XP(Android Studio不支持XP),所以Eclipse+ADT还得继续用(这个组合虽然一直被吐槽,但又不得不用)。 如果你习惯使用Eclipse+ADT这样的IDE,可以 下载我打好包的版本 ,内含Eclipse4.2+ADT+Android SDK: 如果你需要Android Studio, 可进入此链接下载 。 [Step 2]:新建一个普通的Android工程,准备开撸 本文以Eclipse+ADT为开发Android开发工具(如你使用Android Studio道理也是一样的),按照提示新建工程即可,无需特殊的设置或其它前前置条件。 我建好的工程,如下图所示(很多都是默认生成的,用不上的东西就别去管它了): 补充说明:因为需要进行网络通信,建好的工程里,请务必在 AndroidManifest.xml 加上网络权限的许可,如下图: Android客户端代码实现 [1] 客户端主类 MainActivity.java: /* * Copyright (C) 2016 即时通讯网(52im.net) - 即时通讯开发者社区. * All rights reserved. */ package net.x52im.example.android.udp; import net.x52im.example.android.udp.utils.UDPUtils; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.util.Log; /** * Demo主类。 * * @author jack.jiang@52im.net, 2016-06-27 * @version 1.0 */ public class MainActivity extends ActionBarActivity { private final static String TAG = MainActivity.class.getSimpleName(); // 重复发送的时间间隔(单位:毫秒) public static int INTERVAL = 5000 ; private Handler handler = null ; private Runnable runnable = null ; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化本地UDP的Socket LocalUDPSocketProvider.getInstance().initSocket(); // 启动本地UDP监听(接收数据用的) LocalUDPDataReciever.getInstance( this ).startup(); // 自动循环发送 handler = new Handler(); runnable = new Runnable(){ @Override public void run () { sendMessageToServer(); // 开始下一次循环 handler.postDelayed(runnable, INTERVAL); } }; // 立即开始发送 handler.postDelayed(runnable, 0 ); } private void sendMessageToServer () { try { // 要发送的数据 String toServer = "Hi,我是客户端,我的时间戳" +System.currentTimeMillis(); byte [] soServerBytes = toServer.getBytes( "UTF-8" ); // 开始发送 boolean ok = UDPUtils.send(soServerBytes, soServerBytes.length); if (ok) Log.d(TAG, "发往服务端的信息已送出." ); else Log.e(TAG, "发往服务端的信息没有成功发出!!!" ); } catch (Exception e) { Log.w(TAG, e.getMessage(), e); } } } 补充说明: 本类没有去写UI代码,只是作为本次Demo的主入口类而已,需要查看数据输出的,请在Eclipse下的DDMS控制台看查看log输出哦。 [2] 客户端本地 UDP Socket 管理类 LocalUDPSocketProvider.java: /* * Copyright (C) 2016 即时通讯网(52im.net) - 即时通讯开发者社区. * All rights reserved. */ package net.x52im.example.android.udp; import java.net.DatagramSocket; import java.net.InetAddress; import net.x52im.example.android.udp.utils.ConfigEntity; import android.util.Log; /** * 本地 UDP Socket 管理类。 * * @author jack.jiang@52im.net, 2016-06-27 * @version 1.0 */ public class LocalUDPSocketProvider { private static final String TAG = LocalUDPSocketProvider.class.getSimpleName(); private static LocalUDPSocketProvider instance = null ; private DatagramSocket localUDPSocket = null ; public static LocalUDPSocketProvider getInstance () { if (instance == null ) instance = new LocalUDPSocketProvider(); return instance; } public void initSocket () { try { // UDP本地监听端口(如果为0将表示由系统分配,否则使用指定端口) this .localUDPSocket = new DatagramSocket(ConfigEntity.localUDPPort); // 调用connect之后,每次send时DatagramPacket就不需要设计目标主机的ip和port了 // * 注意:connect方法一定要在DatagramSocket.receive()方法之前调用, // * 不然整send数据将会被错误地阻塞。这或许是官方API的bug,也或许是调 // * 用规范就应该这样,但没有找到官方明确的说明 this .localUDPSocket.connect( InetAddress.getByName(ConfigEntity.serverIP), ConfigEntity.serverUDPPort); this .localUDPSocket.setReuseAddress( true ); Log.d(TAG, "new DatagramSocket()已成功完成." ); } catch (Exception e) { Log.w(TAG, "localUDPSocket创建时出错,原因是:" + e.getMessage(), e); } } public DatagramSocket getLocalUDPSocket () { return this .localUDPSocket; } } [3] 客户端本地UDP端口监听和数据接收类 LocalUDPDataSender.java: /* * Copyright (C) 2016 即时通讯网(52im.net) - 即时通讯开发者社区. * All rights reserved. */ package net.x52im.example.android.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import net.x52im.example.android.udp.utils.ConfigEntity; import android.content.Context; import android.util.Log; /** * 本地UDP端口监听和数据接收类。 * * @author jack.jiang@52im.net, 2016-06-27 * @version 1.0 */ public class LocalUDPDataReciever { private static final String TAG = LocalUDPDataReciever.class.getSimpleName(); private static LocalUDPDataReciever instance = null ; private Thread thread = null ; private Context context = null ; public static LocalUDPDataReciever getInstance (Context context) { if (instance == null ) instance = new LocalUDPDataReciever(context); return instance; } private LocalUDPDataReciever (Context context) { this .context = context; } public void startup () { this .thread = new Thread( new Runnable() { public void run () { try { Log.d(LocalUDPDataReciever.TAG, "本地UDP端口侦听中,端口=" + ConfigEntity.localUDPPort + "..." ); //开始侦听 LocalUDPDataReciever. this .udpListeningImpl(); } catch (Exception eee) { Log.w(LocalUDPDataReciever.TAG, "本地UDP监听停止了(socket被关闭了?)," + eee.getMessage(), eee); } } }); this .thread.start(); } private void udpListeningImpl () throws Exception { while ( true ) { byte [] data = new byte [ 1024 ]; // 接收数据报的包 DatagramPacket packet = new DatagramPacket(data, data.length); DatagramSocket localUDPSocket = LocalUDPSocketProvider.getInstance().getLocalUDPSocket(); if ((localUDPSocket == null ) || (localUDPSocket.isClosed())) continue ; // 阻塞直到收到数据 localUDPSocket.receive(packet); // 解析服务端发过来的数据 String pFromServer = new String(packet.getData(), 0 , packet.getLength(), "UTF-8" ); Log.w(LocalUDPDataReciever.TAG, "【NOTE】>>>>>> 收到服务端的消息:" +pFromServer); } } } 补充说明:以上代码使用的是Android的标准UDP Socket代码,如果你对此不太熟悉请先查阅更多Android UDP通讯的相关实例。 服务端准备工作 本文将分别基于MINA2和Netty4实现两套服务端(你只需要使用其中之一即可),服务端准备工作已在本系列文章的前两篇详细记录了,具体如下: - Netty4实现服务端的准备工作请见:《 NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 》 - MINA2实现服务端的准备工作请见:《 NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 》 服务端代码实现 因两套方案的服务端代码都不复杂,且已经本系列文章的前两篇中详细介绍,本文就不在重复粘贴了。 - Netty4实现的服务端请见:《 NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 》 - MINA2实现的服务端请见:《 NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 》 Demo 运行截图 [1] Android客户端运行结果: [2] 服务端运行结果(MINA2方案): [3] 服务端运行结果(Netty4方案): 本文小结 Demo中的客户端代码是从 开源即时通讯框架MobileIMSDK 的Android端中复制出来的(为了方便理解做了大幅简化),有兴趣的可看看 MobileIMSDK Android端 、 Server端 ,简化一下可以用作你自已的各种用途。 本文的姊妹篇《 NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战 》,演示的是iOS端的跨平台UDP双向通信,需要的话可以看看。 对于服务端的NIO框架来说,如果你阅读过本系列的《 NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示 》和《 NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示 》,应该能明显地感觉的出来MINA2的UDP服务端API接口使用要是Netty4的繁琐,而且MINA2还存在独立客户端(非依赖于MINA2客户端)实现时的多余字节和乱码问题。但个人认为MINA2的代码风格更符合一般程序员的编码习惯,更好懂一些,而Netty4因历经多个大版本的进化,虽起来非常简洁,但实现并不是那么直观。当然,至于MINA还是Netty,请客观一评估和使用,因为二者并无本质区别。 更多NIO框架资料整理 [1] MINA和Netty的源码在线学习和查阅: MINA-2.x地址是: http://docs.52im.net/extend/docs/src/mina2/ MINA-1.x地址是: http://docs.52im.net/extend/docs/src/mina1/ Netty-4.x地址是: http://docs.52im.net/extend/docs/src/netty4/ Netty-3.x地址是: http://docs.52im.net/extend/docs/src/netty3/ [2] MINA和Netty的API文档在线查阅: MINA-2.x API文档(在线版): http://docs.52im.net/extend/docs/api/mina2/ MINA-1.x API文档(在线版): http://docs.52im.net/extend/docs/api/mina1/ Netty-4.x API文档(在线版): http://docs.52im.net/extend/docs/api/netty4/ Netty-3.x API文档(在线版): http://docs.52im.net/extend/docs/api/netty3/ [3] 更多有关NIO编程的资料: 请进入精华资料专辑: http://www.52im.net/forum.php?mod=collection&action=view&ctid=9 [4] 有关IM聊天应用、消息推送技术的资料: 请进入精华资料专辑: http://www.52im.net/forum.php?mod=collection&op=all [5] 技术交流和学习: 可直接进入 即时通讯开发者社区 讨论和学习网络编程、IM聊天应用、消息推送应用的开发。 完整源码工程下载 如需完整Eclipse源码工程请联系作者,或者进入链接 http://www.52im.net/thread-388-1-1.html 自行下载。 完整源码工程截图如下: 截图说明: 左右是Android客户端源码、右边是服务端(MINA2和Netty4两个方案)。 (本文同步发布于: http://www.52im.net/thread-388-1-1.html )
来源:开源中国
发布时间:2016-06-30 17:17:00
HDC调试需求开发(15万预算),能者速来!>>> 同时开启 JFinal和mina服务器,把登录用户session 存入 , 在JFinal的action中根据id得到对应用户的session并发送消息,实现订单消息同步提醒, session存入成功, 但是寻找 session 返回结果为空,是线程问题?或者JFinal与mina冲突?求大神 public void send(){ boolean flag; Indent indentBack = getModel(Indent.class); System.out.println(indentBack); flag = indentBack.save(); if(flag){ String[] carPark_id = new String[]{"1"}; //发送的信息 String jsonstr = "123"; SessionMap.newInstance().sendMessage(carPark_id, jsonstr); renderJson("{\"CAllBACK_STATUS\":100}"); }else { renderJson("{\"CAllBACK_STATUS\":-100}"); } } public void sendMessage(String[] keys, Object message){ IoSession session = this.getSession("1"); //logger.debug("反向发送消息到客户端Session---key=" + key + "----------消息=" + message); System.out.println("+++++session1"+session); if(session == null){ return; } System.out.print("+++++session"+session); session.write(message); }
来源:开源中国
发布时间:2016-06-19 14:04:00
HDC调试需求开发(15万预算),能者速来!>>> 前几天用了proxool,其他方面没什么优势,但它有一个连接池监控功能非常实用。进行如下简单配置: admin org.logicalcobwebs.proxool.admin.servlet.AdminServlet admin /admin 并在应用启动后访问:http://localhost:8080/myapp/admin这个url即可监控。 鉴于此,不知道使用c3p0的牛X们,如何对c3p0进行监控?
来源:开源中国
发布时间:2011-01-10 15:38:00
HDC调试需求开发(15万预算),能者速来!>>> 配置完成后,程序启动时卡一段时间后,一直报如下问题: 检查过确认不是用户名密码错误,配置文件如下: Spring datables config org.hibernate.dialect.Oracle10gDialect ${hibernate.show_sql} ${hibernate.format_sql} true true org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory net.sf.ehcache.hibernate.EhCacheProvider ${ehcache_config_file} 50 com.iris.egrant.consts.model com.iris.egrant.security.model com.iris.egrant.proposal.pojo.model.setting com.iris.egrant.tableConfig.model com.iris.egrant.component.model jbpm.repository.hbm.xml jbpm.execution.hbm.xml jbpm.history.hbm.xml jbpm.task.hbm.xml jbpm.identity.hbm.xml jndi 连接池 conn.jdbc.egrant=java\:/comp/env/jdbc/sun_egrant context配置文件 各位大神看下是否有什么问题?
来源:开源中国
发布时间:2019-08-06 15:15:00
HDC调试需求开发(15万预算),能者速来!>>> 有没有人知道怎么解决用c3p0连接池时会报错: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out. Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool 这个有会后端的大佬知道怎么解决吗?改配置文件也不没用。
来源:开源中国
发布时间:2019-03-03 15:31:03
HDC调试需求开发(15万预算),能者速来!>>> 配置文件的所有内容: c3p0.jdbcUrl=jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:ora10g c3p0.driverClass=oracle.jdbc.driver.OracleDriver c3p0.user=XXX c3p0.password=XXX c3p0.minPoolSize=3 c3p0.maxPoolSize=20 com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog com.mchange.v2.log.NameTransformer=com.mchange.v2.log.PackageNames com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=ALL 获取连接代码: ComboPooledDataSource cpds = new ComboPooledDataSource(); conn = cpds.getConnection(); 出错信息:log4j:WARN No appenders could be found for logger (com.mchange.v2.log.MLog). log4j:WARN Please initialize the log4j system properly. java.sql.SQLException: Connections could not be acquired from the underlying database! at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at c3p0.testc3p0.main(testc3p0.java:21) Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319) at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525) ... 2 more 真心求助!谢谢大家!
来源:开源中国
发布时间:2012-04-19 13:23:00
HDC调试需求开发(15万预算),能者速来!>>> @JFinal 你好,想跟你请教个问题:正式环境发现c3p0的死锁问题,查阅相关资料,想修改c3p0的设置,但是在Jfinal的c3p0插件中,只发现了maxPoolSize、minPoolSize、initialPoolSize、maxIdleTime、acquireIncrement这五个参数,是否不能配置其它参数? -------附带c3p0的异常日志------- 12:13:31,948 WARN com.mchange.v2.async.ThreadPoolAsynchronousRunner.run():624 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@2804047 -- APPARENT DEADLOCK!!! Complete Status: Managed Threads: 3 Active Threads: 3 Active Tasks: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@13235e29 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0) com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@76fadf8f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1) com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@506b624f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2) Pending Tasks: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3a0359c8 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@31fb7739 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@745058d1 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@46f73cff com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@11c5adbf com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4911dfb6 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@34764b34 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@42435dd4 Pool thread stack traces: Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:562) Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:562) Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:562)
来源:开源中国
发布时间:2018-01-23 15:19:00
HDC调试需求开发(15万预算),能者速来!>>> 好好的就报异常了~~ 警告: com.mchange.v2.resourcepool.BasicResourcePool@8fce95 -- Thread unexpectedly interrupted while performing an acquisition attempt. java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
来源:开源中国
发布时间:2011-08-15 16:11:00
HDC调试需求开发(15万预算),能者速来!>>> 使用c3p0,程序会突然无法与数据库连接,所有数据操作无法执行,但不会报任何错误。而且不会恢复,只能重启Tomcat。而且程序并没有停止运行,不需要数据库交互的方法还能执行
来源:开源中国
发布时间:2017-03-16 16:28:00
HDC调试需求开发(15万预算),能者速来!>>> 一个项目通过c3p0获得连接池,相关代码如下: public class JdbcUtil { // 连接池的核心类 private static ComboPooledDataSource dataSource; //初始化连接池相关参数 static{ try { dataSource = new ComboPooledDataSource(); dataSource.setDriverClass(PropertiesUtil.getValue("jdbcName")); dataSource.setJdbcUrl(PropertiesUtil.getValue("dbUrl")); dataSource.setUser(PropertiesUtil.getValue("dbUserName")); dataSource.setPassword(PropertiesUtil.getValue("dbPassword")); dataSource.setInitialPoolSize(5); dataSource.setMinPoolSize(5); dataSource.setMaxPoolSize(20); // 以下两句用于设置自动重连 dataSource.setIdleConnectionTestPeriod(10); dataSource.setTestConnectionOnCheckin(true); } catch (Exception e) { e.printStackTrace(); } } //下面是getDataSource,getConnection等方法 } 关闭Tomcat的时候提示: 警告: The web application [uavmonitor] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) java.util.TimerThread.mainLoop(Timer.java:552) java.util.TimerThread.run(Timer.java:505) 二月 13, 2017 3:51:45 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 警告: The web application [uavmonitor] appears to have started a thread named [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534) 二月 13, 2017 3:51:45 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 警告: The web application [uavmonitor] appears to have started a thread named [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534) 二月 13, 2017 3:51:45 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 警告: The web application [uavmonitor] appears to have started a thread named [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534) 主要是这几句: 1. 警告: The web application [uavmonitor] appears to have started a thread named [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534) 2. The web application [uavmonitor] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) java.util.TimerThread.mainLoop(Timer.java:552) java.util.TimerThread.run(Timer.java:505) 查询c3p0官方文档 http://www.mchange.com/projects/c3p0/#cleaning 说是“ c3p0 spawns a variety of Threads ( helper threads , java.util.Timer threads) ”,结合上面的出错信息,推断应该是Tomcat关闭的时候没有关闭JdbcUtil类创建出来的c3p0的datasource。 写了一个监听器 try { DataSources.destroy(JdbcUtil.getDataSource()); System.out.println("关闭数据库连接池成功!"); } catch (SQLException e) { e.printStackTrace(); } 可以解决相关问题。 然而Tomcat关闭前清理c3p0的datasource应该是一个很常见的需求,有没有更优雅一点的方法来做这种清理。或者说应该在哪里配置一下,就可以让tomcat关闭前自动destory这个datasource??
来源:开源中国
发布时间:2017-02-13 16:01:00
HDC调试需求开发(15万预算),能者速来!>>> 大家好,最近用jfinal开发了一个项目,连建池组件用的c3p0,周六周日连续跑了两天,发现如下错误日志, 2017-01-13 22:15:08 [INFO]-[Thread: http-bio-80-exec-7]-[com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection()]: [c3p0 -- conection resource close Exception] java.sql.SQLRecoverableException: 关闭的连接 at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5389) at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1578) at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1563) at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94) at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:80) at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:752) at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:401) at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1660) at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.plugin.activerecord.SqlReporter.invoke(SqlReporter.java:58) at com.sun.proxy.$Proxy12.close(Unknown Source) at com.jfinal.plugin.activerecord.Config.close(Config.java:222) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:325) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:334) at com.jfinal.plugin.activerecord.Db.find(Db.java:233) at CommonSearch.Mtcx.rzddclcxAc(Mtcx.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55) at com.jfinal.ext.interceptor.SessionInViewInterceptor.intercept(SessionInViewInterceptor.java:44) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 2017-01-13 22:15:08 [INFO]-[Thread: http-bio-80-exec-8]-[com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection()]: [c3p0 -- conection resource close Exception] java.sql.SQLRecoverableException: 关闭的连接 at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5389) at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1578) at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1563) at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94) at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:80) at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:752) at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:401) at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1660) at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.plugin.activerecord.SqlReporter.invoke(SqlReporter.java:58) at com.sun.proxy.$Proxy12.close(Unknown Source) at com.jfinal.plugin.activerecord.Config.close(Config.java:222) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:325) at com.jfinal.plugin.activerecord.DbPro.findFirst(DbPro.java:353) at com.jfinal.plugin.activerecord.Db.findFirst(Db.java:251) at com.qqctweb.function.Customer.login(Customer.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55) at com.jfinal.ext.interceptor.SessionInViewInterceptor.intercept(SessionInViewInterceptor.java:44) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 2017-01-13 22:15:08 [ERROR]-[Thread: http-bio-80-exec-7]-[com.jfinal.core.ActionHandler.handle()]: /mtcx/rzddclcxAc?_dc=1484316909006&page=1&start=0&limit=5&jsonPCallback=Ext.data.JsonP.callback2 com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLRecoverableException: IO 错误: Connection reset by peer: socket write error at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:323) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:334) at com.jfinal.plugin.activerecord.Db.find(Db.java:233) at CommonSearch.Mtcx.rzddclcxAc(Mtcx.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55) at com.jfinal.ext.interceptor.SessionInViewInterceptor.intercept(SessionInViewInterceptor.java:44) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLRecoverableException: IO 错误: Connection reset by peer: socket write error at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:897) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:248) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:308) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:321) ... 29 more Caused by: java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at oracle.net.ns.DataPacket.send(DataPacket.java:210) at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:230) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:312) at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884) ... 37 more 2017-01-13 22:15:08 [ERROR]-[Thread: http-bio-80-exec-8]-[com.jfinal.core.ActionHandler.handle()]: /customer/login?_dc=1484316908936&code=irxahxngks&page=1&start=0&limit=25&jsonPCallback=Ext.data.JsonP.callback1 com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLRecoverableException: IO 错误: Connection reset by peer: socket write error at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:323) at com.jfinal.plugin.activerecord.DbPro.findFirst(DbPro.java:353) at com.jfinal.plugin.activerecord.Db.findFirst(Db.java:251) at com.qqctweb.function.Customer.login(Customer.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55) at com.jfinal.ext.interceptor.SessionInViewInterceptor.intercept(SessionInViewInterceptor.java:44) at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLRecoverableException: IO 错误: Connection reset by peer: socket write error at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:897) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:248) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:308) at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:321) ... 29 more Caused by: java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at oracle.net.ns.DataPacket.send(DataPacket.java:210) at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:230) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:312) at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884) ... 37 more 当访问失败时,服务器报出如上错误,一段时间无访问时报出如下错误 2017-01-13 22:48:24 [INFO]-[Thread: C3P0PooledConnectionPoolManager[identityToken->1bqq1on9l15wq40humk8vk|1d72b61]-HelperThread-#0]-[com.mchange.v2.c3p0.impl.NewPooledConnection.logCloseExceptions()]: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally. 2017-01-13 22:48:24 [INFO]-[Thread: C3P0PooledConnectionPoolManager[identityToken->1bqq1on9l15wq40humk8vk|1d72b61]-HelperThread-#0]-[com.mchange.v2.c3p0.impl.NewPooledConnection.logCloseExceptions()]: [c3p0] NewPooledConnection close Exception. java.sql.SQLRecoverableException: IO 错误: Connection reset by peer: socket write error at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:556) at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:3984) at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642) at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:621) at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1024) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) Caused by: java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at oracle.net.ns.DataPacket.send(DataPacket.java:210) at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:230) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:312) at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) at oracle.jdbc.driver.T4C7Ocommoncall.doOLOGOFF(T4C7Ocommoncall.java:61) at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:543) ... 6 more 2017-01-13 22:48:24 [WARN]-[Thread: C3P0PooledConnectionPoolManager[identityToken->1bqq1on9l15wq40humk8vk|1d72b61]-HelperThread-#2]-[com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run()]: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@1f7fc32 java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@1f7fc32 at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:664) at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:621) at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1024) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) 因为测试期间基本就我一个人偶尔访问,连接数不可能超限,跟踪oracle中的连接情况,该项目最低维持2个瘦连接,最多时也只有8个,当连接被创建后,可以复用,但连接空闲时并未按照我配置的空闲保持时间断开,而是一直保持连接,过了许久才断开。 下面贴出c3p0的配置 int maxPoolSize = 26;//最多保持X个数据库连接 int minPoolSize = 2;//始终保持至少X个数据库连接 int initialPoolSize = 2;//第一次启动创建X个数据库连接 int maxIdleTime = 10;//当连接空闲时最多保持X秒再断开 int acquireIncrement = 2;//当需要创建新连接时,一次性创建X
来源:开源中国
发布时间:2017-01-16 09:57:00
HDC调试需求开发(15万预算),能者速来!>>> 我的框架是Spring没有使用hibernate,数据库连接使用的是c3p0最新版本:c3p0-0.9.5.2.jar同时与oracle相关jar包c3p0-oracle-thin-extras-0.9.5.2.jar已导入,mchange-commons-java-0.2.11.jar也导入,调用oracle存储过程,如果传入参数是字符串没问题,可以正常连接数据库并正常调用,但是传入的是List在list与oracle类型转换的时候报错:com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to oracle.jdbc.OracleConnection 报错的语句:StructDescriptor structdesc = StructDescriptor.createDescriptor(oracleObj, conn); 这是oracle.sql.StructDescriptor里面的构造函数 但是在spring使用自带的dataSource配置: 是没问题的,使用
来源:开源中国
发布时间:2016-09-21 08:41:00