rk3288-android8-IR-mouse
IR问题:
mouse按键使用不了
然后排查:
1.排查上报
ir_key6{ rockchip,usercode = <0xbf00>;rockchip,key_table =<0xff KEY_POWER>,<0xfe KEY_MUTE>, <0xfd KEY_1>, <0xfc KEY_2>, <0xfb KEY_3>, <0xfa KEY_4>, <0xf9 KEY_5>, <0xf8 KEY_6>,<0xf7 KEY_7>, <0xf6 KEY_8>, <0xf5 KEY_9>, <0xf3 KEY_0>, <0xb5 KEY_CHANNELUP>, //pin+<0xb4 KEY_CHANNELDOWN>, //pin- <0xb7 KEY_VOLUMEUP>,<0xb6 KEY_VOLUMEDOWN>, <0x9e KEY_HOME>, <0xec KEY_UP>,<0xeb KEY_DOWN>,<0xee KEY_LEFT>,<0xed KEY_RIGHT>, <0xef KEY_ENTER>,//KEY_ENTER>, <0xe8 KEY_ENTER>,//KEY_ENTER>, <0xe9 KEY_MENU>, <0xbf KEY_SCREENLOCK>,//mouse switch pinxian<0xf0 388>,//mouse switch xinhao <0xea KEY_BACK>, <0xae KEY_PLAYPAUSE>, <0xb2 KEY_CLOSE>, //3d <0xad KEY_STOPCD>, <0xa9 KEY_REWIND>, <0xa8 KEY_FASTFORWARD>, <0xab KEY_PREVIOUSSONG>,<0xaa KEY_NEXTSONG>; };
可以知道<0xf0 388>,使我们这个博客的主角
//插播一下,IR就三个引脚,检查硬件接好后按动遥控器
echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print
可以在串口打印上看到键码值
rk3288:/ # cat proc/kmsg
<6>[ 753.280233] USERCODE=0xbf00
<6>[ 753.307258] RMC_GETDATA=ec
然后先获取到你的遥控器的CODE值和键码值
这时候硬件是好的
然后,
rk3288:/ # getevent
add device 1: /dev/input/event2name: "rk29-keypad"
add device 2: /dev/input/event1name: "SIGMACHIP Usb Mouse"
add device 3: /dev/input/event0name: "ff680020.pwm"
/dev/input/event0: 0001 0067 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0067 00000000
/dev/input/event0: 0000 0000 00000000
^C
130|rk3288:/ #
130|rk3288:/ # getevent -l
add device 1: /dev/input/event2name: "rk29-keypad"
add device 2: /dev/input/event1name: "SIGMACHIP Usb Mouse"
add device 3: /dev/input/event0name: "ff680020.pwm"
/dev/input/event0: EV_KEY KEY_UP DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY KEY_UP UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000
"ff680020.pwm"这个是映射表
#$_FOR_ROCKCHIP_RBOX_$
#$_rbox_$_modify_$_chenzhi_20120220: add for IR remotekey 28 ENTER
key 116 POWER
key 158 BACK
key 139 MENU
key 217 SEARCH
key 232 DPAD_CENTER
key 108 DPAD_DOWN
key 103 DPAD_UP
key 102 HOME
key 105 DPAD_LEFT
key 106 DPAD_RIGHT
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 143 NOTIFICATION
key 113 VOLUME_MUTE
key 388 TV_KEYMOUSE_MODE_SWITCH
key 164 MEDIA_PLAY_PAUSE
key 141 SETTINGSkey 2 1
key 3 2
key 4 3
key 5 4
key 6 5
key 7 6
key 8 7
key 9 8
key 10 9
key 11 0
key 14 DELkey 407 MEDIA_NEXT
key 412 MEDIA_PREVIOUS#key 400 TV_MEDIA_MULT_BACKWARD
#key 401 TV_MEDIA_MULT_FORWARD
#key 402 TV_MEDIA_PLAY_PAUSE
#key 64 TV_MEDIA_PLAY
#key 65 TV_MEDIA_PAUSE
#key 66 TV_MEDIA_STOP
#key 67 TV_MEDIA_REWIND
#key 68 TV_MEDIA_FAST_FORWARD
#key 87 TV_MEDIA_PREVIOUS
#key 88 TV_MEDIA_NEXT
key 388 TV_KEYMOUSE_MODE_SWITCH
就是驱动映射到android的键值
rk3288-8.1/sdk$ grep -rnH "AKEYCODE_TV_KEYMOUSE_MODE_SWITCH" ./frameworks/
./frameworks/native/include/android/keycodes.h:777: AKEYCODE_TV_KEYMOUSE_MODE_SWITCH = 289
./frameworks/native/services/inputflinger/InputReader.cpp:2478: if (keyCode == AKEYCODE_TV_KEYMOUSE_MODE_SWITCH) {
android会再把TV_KEYMOUSE_MODE_SWITCH映射成AKEYCODE_TV_KEYMOUSE_MODE_SWITCH=289
然后我发现遥控按键并没有反应
然后查阅资料发现这一段是关于遥控鼠标和遥控按键
查询log
374 446 D WindowManager: interceptKeyTq keycode=0 interactive=true keyguardActive=false policyFlags=22000000
发现这个按键的keycode=0
问题已经找到了,哪里回事导致=0呢
然后追查到
03-02 10:16:19.061 370 443 D InputReader: BatchSize: 2 Count: 2
03-02 10:16:19.061 370 443 D InputReader: Input event: device=3 type=0x0001 code=0x0184 value=0x00000000 when=189219995000
03-02 10:16:19.061 370 443 I InputReader: KeyboardInputMapper::processKey key= keyCode=0
03-02 10:16:19.061 370 443 I InputReader: InputDevice::process key= keyCode=388
03-02 10:16:19.062 370 443 D InputReader: Input event: device=3 type=0x0000 code=0x0000 value=0x00000000 when=189219995000
03-02 10:16:19.062 370 443 I InputReader: InputDevice::process key= keyCode=0
经过排查发现
这里上报的code=0x0184不就是我们的键值388吗?
然后我发现这里都上报到了,但是到
到这里就变成keycode=0了,我强行吧keycode拉到289发现功能正常,果然就是这中间丢失了keycode导致的,于是我在上面设置一个变量让num作为标志位,388上报的时候让num=1;
然后keycode=0的时候判断一下是不是388的上报,如果num==1,则手动keycode=289;强行到按键值后发现功能正常;
Index: InputReader.cpp
===================================================================
--- InputReader.cpp (revision 101)
+++ InputReader.cpp (working copy)
@@ -89,7 +89,8 @@static const int KEYCODE_ENTER = 28;static const int KEYCODE_DPAD_CENTER = 232;
-
+static const int KEYCODE_KEYMOUSE_MODE_SWITCH = 289;
+static int num=0; // --- Static Functions ---template<typename T>
@@ -1208,6 +1209,10 @@ALOGD("Input event: device=%d type=0x%04x code=0x%04x value=0x%08x when=%lld",rawEvent->deviceId, rawEvent->type, rawEvent->code, rawEvent->value,rawEvent->when);
+ if(rawEvent->code==0x0184)
+ {
+ num=1;
+ }#endifif (mDropUntilNextSync) {
@@ -2448,7 +2453,7 @@uint32_t policyFlags;if (getEventHub()->mapKey(getDeviceId(), scanCode, usageCode, mMetaState,
- &keyCode, &keyMetaState, &policyFlags)) {
+ &keyCode, &keyMetaState, &policyFlags)) { keyCode = AKEYCODE_UNKNOWN;keyMetaState = mMetaState;policyFlags = 0;
@@ -2463,6 +2468,12 @@sprintf(mID,"%d",getDeviceId());property_set("sys.ID.mID",mID);+ if(keyCode==0&&num==1)
+ {
+ num=0;
+ keyCode=289;
+ }
+if (down) {if (keyCode == AKEYCODE_TV_KEYMOUSE_MODE_SWITCH) {if (strcmp(mKeyMouseState, "on")==0) {
@@ -3760,28 +3771,8 @@newViewport.setNonDisplayViewport(rawWidth, rawHeight);}bool viewportChanged = mViewport != newViewport;
- char value_private[PROP_VALUE_MAX];if (viewportChanged) {mViewport = newViewport;
- property_get("persist.sys.displayrot", value_private, "0");
- int cmpRet = atoi(value_private);
- ALOGD("tp persist.sys.displayrot~~~~~~~~~~~~~~~~~~~~~~~~~ = %d",cmpRet);
- if (cmpRet == 0)
- {
- mViewport.orientation = DISPLAY_ORIENTATION_0;
- }
- else if(cmpRet == 90)
- {
- mViewport.orientation = DISPLAY_ORIENTATION_90;
- }
- else if(cmpRet == 180)
- {
- mViewport.orientation = DISPLAY_ORIENTATION_180;
- }
- else if(cmpRet == 270)
- {
- mViewport.orientation = DISPLAY_ORIENTATION_270;
- }if (mDeviceMode == DEVICE_MODE_DIRECT || mDeviceMode == DEVICE_MODE_POINTER) {// Convert rotated viewport to natural surface coordinates.
@@ -6380,6 +6371,8 @@mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_X, x);mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_Y, y);mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, 1.0f);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_X, deltaX);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y, deltaY);} else if (currentFingerCount == 0) {// Case 3. No fingers down and button is not pressed. (NEUTRAL)if (mPointerGesture.lastGestureMode != PointerGesture::NEUTRAL) {
@@ -6538,6 +6531,10 @@mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_Y, y);mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_PRESSURE,down ? 1.0f : 0.0f);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(
+ AMOTION_EVENT_AXIS_RELATIVE_X, deltaX);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(
+ AMOTION_EVENT_AXIS_RELATIVE_Y, deltaY);if (lastFingerCount == 0 && currentFingerCount != 0) {mPointerGesture.resetTap();
@@ -6784,6 +6781,10 @@mPointerGesture.referenceGestureX);mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_Y,mPointerGesture.referenceGestureY);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_X,
+ commonDeltaX);
+ mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y,
+ commonDeltaY);mPointerGesture.currentGestureCoords[0].setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, 1.0f);} else if (mPointerGesture.currentGestureMode == PointerGesture::FREEFORM) {// FREEFORM mode.
@@ -6880,6 +6881,10 @@AMOTION_EVENT_AXIS_Y, mPointerGesture.referenceGestureY + deltaY);mPointerGesture.currentGestureCoords[i].setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, 1.0f);
+ mPointerGesture.currentGestureCoords[i].setAxisValue(
+ AMOTION_EVENT_AXIS_RELATIVE_X, deltaX);
+ mPointerGesture.currentGestureCoords[i].setAxisValue(
+ AMOTION_EVENT_AXIS_RELATIVE_Y, deltaY);}if (mPointerGesture.activeGestureId < 0) {
@@ -7002,6 +7007,8 @@mPointerSimple.currentCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, y);mPointerSimple.currentCoords.setAxisValue(AMOTION_EVENT_AXIS_PRESSURE,hovering ? 0.0f : 1.0f);
+ mPointerSimple.currentCoords.setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_X, x);
+ mPointerSimple.currentCoords.setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y, y);mPointerSimple.currentProperties.id = 0;mPointerSimple.currentProperties.toolType =mCurrentCookedState.cookedPointerData.pointerProperties[currentIndex].toolType;
大概补丁就这样,仅供参考!
相关文章:
rk3288-android8-IR-mouse
IR问题: mouse按键使用不了 然后排查: 1.排查上报 ir_key6{ rockchip,usercode <0xbf00>;rockchip,key_table <0xff KEY_POWER>,<0xfe KEY_MUTE>, <0xfd KEY_1>, <0xfc KEY_2>, <0xfb KEY_3>, <0xfa KEY_4>, <0xf9 KEY_5>…...
2023-03-01干活小计
昨天组会,元气大伤,拖更直接。今天继续,三月加油! python魔术方法: __repr__:print()时候调用,注意函数返回值就是打印值。 __len__:len()时候调用 __call__:实例()时候调用 __getitem__:self[i]时候调…...
客户服务软件推荐榜:28款!
在这个竞争激烈的时代,做到服务对企业的存亡有着深刻的意义。改善客户服务,做好客户服务工作,是关键,因为客户服务团队代表着企业的形象,面孔,客户有可能 不大会记得企业的某个东西,但是他们将会…...
Spring注入和注解实现IOC
标题注入依赖注入的方式通过Set方法注入通过构造方法注入自动注入依赖注入的数据类型注入Bean对象注入基本数据类型和字符串注入List注入Set注入Map注入Properties注解实现IOCComponentRepository、Service、Controller注入 依赖注入的方式 在使用依赖注入时,如果…...
Python统计Labelme标注文件信息并绘制散点图
Python统计Labelme标注文件信息并绘制散点图前言前提条件相关介绍实验环境Python统计Labelme标注文件信息并绘制散点图前言 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击…...
远程接入方案 OpenText Exceed TurboX(ETX) 客户案例——ET Innovations
远程接入方案 OpenText Exceed TurboX(ETX) 客户案例——ET Innovations ET Innovations GmbH 助力奥地利各地的医疗保健专业人员提升患者体验 医疗保健信息系统开发商利用 OpenText™ Exceed™ TurboX 将远程访问其软件的稳定性提高了 95% 公司:ET I…...
Django4.1.7通过djongo1.3.6链接mongoDB6.0.4
网上中文版的djongo链接mongoDB基本都是抄袭州的先生大哥的文章。 文章成文比较久,至少是2019年成文的了,有一些情况发生了变化,今天就自己测试的情况做一些记录。 本文成文日期为:2023年3月2日,请注意参考 废话不多说…...
如何使用FindFunc在IDA Pro中寻找包含指定代码模式的函数代码
关于FindFunc FindFunc是一款功能强大的IDA Pro插件,可以帮助广大研究人员轻松查找包含了特定程序集、代码字节模式、特定命名、字符串或符合其他各种约束条件的代码函数。简而言之,FindFunc的主要目的就是在二进制文件中寻找已知函数。 使用规则过滤 …...
【C++】讲的最通透最易懂的关于结构体内存对齐的问题
目录1. 内存对齐规则2. 简单易懂的内存对齐示例2.1 简单结构体2.2 含位域的结构体2.3 空类的大小2.4 嵌套结构体3. 为什么需要内存对齐?4. 类型在不同系统下所占字节数1. 内存对齐规则 第一个成员在与结构体变量偏移量为0的位置处。其他成员变量要对齐到某个数字&a…...
Stochastic Approximation 随机近似方法的详解之(一)
随机近似的定义:它指的是一大类随机迭代算法,用于求根或者优化问题。 Stochastic approximation refers to a broad class of stochastic iterative algorithms solving root finding or optimization problems. temporal-difference algorithms是随机近…...
软件自动化测试工程师面试题集锦
以下是部分面试题目和我的个人回答,回答比较简略,仅供参考。不对之处请指出 1.自我介绍 答:姓名,学历专业,技能,近期工作经历等,可以引导到最擅长的点,比如说代码或者项目 参考&a…...
智合同丨教你做一个懂AI的法律人
作为一名法律人,合同审核工作是日常工作中最基本也是必不可少的一项事务。我们知道,一般在企业,合同审批会涉及到众多部门和职务角色,最关键的一环其实在法务或者律师建议,其他部门给出的审批意见基本上都是基于自己部…...
如何判断自己使用的IP是独享还是共享?
在互联网上,我们常常听到独享IP和共享IP这两个概念。独享IP指的是一个IP地址只被一个用户或一个网站所使用,而共享IP则是多个用户或多个网站共用一个IP地址。那么,如何分辨IP是不是独享呢?接下来,我们将从几个方面来看。在这之前…...
跳石头
题目描述 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳…...
上传gitee教程,Gitee怎么上传代码到仓库
目录 第一步:配置git的用户名和邮箱 第二步:上传到远程仓库 第三步:将仓库的master分支拉取过来和本地的当前分支进行合并 第四步:将修改的所有代码添加到暂存区 第五步:将缓存区内容添加到本地仓库(…...
netstat命令详解
1、下载netstat命令对应的软件包 yum install net-tools -y2、netsta命令介绍 [rootvm01 ~]# man netstatNETSTAT(8) Linux System Administrators Manual NETSTAT(8)NAMEnetstat - Print network connections, routing t…...
数据库三范式
文章目录数据库三范式1. 第一范式(1NF)2. 第二范式(2NF)3. 第三范式(3NF)数据库三范式 第一范式:有主键,具有原子性,字段不可分割第二范式:完全依赖…...
K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别
背景 2020 年 12 月初,Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时。 弃用 Docker 带来的,可能是一系列的改变,包括不限于: 容器镜像构建工具容器 CLI容器镜像仓…...
Vue2和Vue3响应式的区别
数据响应式是什么? 所谓 数据响应式 就是建立 响应式数据 与 依赖(调用了响应式数据的操作)之间的关系,当响应式数据发生变化时,可以通知那些使用了这些响应式数据的依赖操作进行相关更新操作,可以是DOM…...
模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)
Alex实现图像分类:模型原理+训练+预测 图像分类或者检索任务在浏览器中的搜索操作、爬虫搜图中应用较广,本文主要通过Alex模型实现猫狗分类,并且将可以复用的开源模型在文章中给出!!!数据集可以由此下载:Data本文将从以下内容做出讲述: 1.模型简介及环境搭建2.数据集准…...
【大数据】最全的大数据Hadoop|Yarn|Spark|Flink|Hive技术书籍分享/下载链接,持续更新中...
这里写目录标题Hadoop大数据处理Hadoop技术内幕:深入解析YARN架构设计与实现原理Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理Spark SQL内核剖析Hadoop 应用架构深度剖析Hadoop HDFSHadoop实战Hive编程指南Hadoop大数据处理 本书以…...
RIG Exploit Kit 仍然通过 IE 感染企业用户
RIG Exploit Kit 正处于最成功的时期,每天尝试大约 2000 次入侵并在大约 30% 的案例中成功,这是该服务长期运行历史中的最高比率。 通过利用相对较旧的 Internet Explorer 漏洞,RIG EK 已被发现分发各种恶意软件系列,包括 Dridex…...
GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化进阶
地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…...
SQL SERVER中SCHEMA的詳解
SQL SERVER中SCHEMA的講解1. Introduction1.1 優勢1.2 內置schema2. Create Schema2.1 Parameters2.2 Sql3.Awakening1. Introduction 1.1 優勢 数据库模式为我们提供了在数据库中创建逻辑对象组的灵活性。如果多个团队使用同一个数据库,我们可以设计各种模式来分組…...
【LeetCode】剑指 Offer(13)
目录 题目:剑指 Offer 31. 栈的压入、弹出序列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 31. 栈…...
帮助小型企业实现业务增长的7种数字营销策略
数字营销一直在不断地变化和发展,在过去的几年里我们已经见识到了其迅猛的发展速度。虽然我们在数字营销中看到了一些新的趋势,但对于小型企业来说很难利用并发挥其优势。相比较大型企业,小型企业的预算和资源通常有限,所以他们很…...
互联网行业的高级产品经理和普通产品经理有哪些区别?
普通产品经理的一天可能是这样的。 早上到公司想一想,这几天有哪些事情要处理。打开记事本,按照上面要求的任务一条一条开始做。 这里有个需求,是要给产品的聊天模块增加历史记录。嗯,看一下常见的几款社交工具 APP,他…...
aardio - 【库】简单信息框
昨晚得知aardio作者一鹤的妻子病情严重,深感悲痛。今日给一鹤捐赠少许,望其妻能挺过难关,早日康复。 aardio是一个很好的编程工具,我非常喜欢,这两年也一直在用。虽然未曾用其获利,但其灵活的语法ÿ…...
程序员必备!最值得收藏的宝藏网站大盘点
做为程序员,没有收藏点宝藏网站都说不过去。 除了常见的大家熟知的知乎、谷歌、b站、CSDN、掘金等,今天将介绍一些其他更加实用的宝藏网站,程序员小伙伴们可以按需收藏哦~ 1.菜鸟教程:https://www.runoob.com/ 国内…...
Android 10.0 Settings 关掉开发者模式
1.概述 在系统Settings中,系统默认在关于手机里面点击五下版本号进入开发者模式,开启某些功能, 在进行项目定制中,要求去掉进入开发者模式的这个功能,就需要找到关于开启开发者模式的相关代码屏蔽掉就可以了 2.关于屏蔽掉开发者模式的相关核心代码 packages/apps/Settings…...
查看网站建设时间/广州营销型网站
自由软件永远是自由的! 近两天,很多媒体都转发了一篇文章,是讲 ASF(Apache Software Foundation) 和 GitHub 受美国法律限制的事情,部分业内人士也在担心,是否有可能中国的程序员们会受到限制的影响而不能使用 Apache …...
网站发布系统/1小时快速搭建网站
7.OSPF协议工作过程 OSPF路由协议针对每一个区域分别运行一套独立的计算法则,对于ABR来说, 由于一个区域边界路由器同时与几个区域相联,因此一个区域边界路由器上会同时运行几套OSPF计算方法, 每一个方法针对一个OSPF区域。下面对…...
视频的网站自助建站/广州做seo的公司
part 1--入门:1. xcode 版本下载 以及 iphone sdk 下载:最新版本在此下载:http://developer.apple.com/devcenter/ios/index.action其他版本请看http://connect.apple.com/cgi-bin ... 1.0.1.1.0.3.3.3.3.12. 入门教程:http://www…...
wordpress 简洁模板/市场营销策略有哪4种
文章目录1.标准参数1.1.概述1.2.-x参数1.2.1. java -version1.2.1.java -help 获取java参数帮助命令2.非标准参数2.1.-xx参数2.1.1.Boolean类型:是否使用启动参数2.1.2.非Boolean类型2.2.其他参数2.2.1.比如:设置栈深度 -Xss100K等价于-XX:ThreadStackSi…...
建设信息网站/国外网站推广平台有哪些?
http://dev.csdn.net/develop/article/30/30672.shtm转载于:https://www.cnblogs.com/kaima/articles/1200229.html...
minecraft做图网站/sem 推广软件
环境:阿里云服务器CentOS7,JDK8,SpringBoot2.0,网易163邮箱账号和授权码 application.yaml邮件配置 spring:mail:default-encoding: utf-8#邮箱服务器host: smtp.163.com#host: stmp.qq.com#邮箱授权码password: 你的授权码#邮箱u…...