Web服务器与数据库服务器分离 导入 Excel数据至数据库

一般情况一般项目WEB服务器与数据库均部署在一台服务器,文件上传,数据导入在一台服务器完成。web服务器与数据库服务器分离,文件上传与数据导入将分布在两台服务器或多台服务器之间。本案例为两台服务器,具体实施步骤如下:

一.两台服务器(a:web服务器,b:数据库服务器),a,b均安装Windows Server 2008 R2操作系统,a服务器安装IIS7.5,.NET FrameWork4.5,b服务器安装SQL Server 2008数据库。a服务器安装网域,并创建一个域用户(dataFileUploadUser),取消新建域用户远程控制权限,将b服务器加入网域(Windows Server 域的创建与加入可在网上搜索相关文章)。

二.在b数据库服务器创建存放excel文件夹,并将此文件夹设置为共享,文件夹的访问权限和共享权限设置为*步创建的域用户(dataFileUploadUser),赋于读/写权限。

三.在a服务器通过“映射网络驱动器测试”,挂载b服务器的共享文件夹设置是否正常。

四.以上步骤测试通过后,对web服务器进行设置。

五.在a服务器的“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的文件夹,赋于域用户(dataFileUploadUser)修改权限。

六:修改a服务器web程序web.config文件:

<appSettings>

<!–上传文件保存路径–>

<add key=”WebTemp” value=”\\xx.xx.xx.xx\exceldata” />

</appSettings>

<system.web>

<!–访问共享文件夹帐号密码–>
<identity impersonate=”true” userName=”dataFileUploadUser” password=”123″/>
</system.web>

七:上传文件至共享文件夹代码:

string uploadPath = System.Configuration.ConfigurationManager.AppSettings[“WebTemp”];

if (file != null)
{
string ExcellastName=Guid.NewGuid().ToString().Replace(“-“, “”) + “.xls”;
string filePath = Path.Combine(uploadPath, ExcellastName);
file.SaveAs(filePath);

}

八.b数据库服务器读取上传文件,导入数据。

web服务器与文件服务器,图片服务器分离上传文件适用此方法。

服务器与交换机连接及校园网搭建方案

本篇文章易天光通信(ETU-LINK)为大家介绍下服务器与交换机连接及校园网搭建方案,说到服务器,其实和我们日常用的计算机有点相似,是提供计算服务的设备。服务器的构成包括处理器、硬盘、内存、系统总线等,由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器有单路、双路、四路、八路可选,对应代表的是装载CPU的数量,例如四路服务器有4个CPU处理器,线路越多的服务器代表数据处理能力越强。通常服务器主板上并没有光口,只有总线接口,接口标准有PCI、PCI-X、PCI-E等,这些插口是插光纤网卡的,然后再通过光纤网卡插入光模块+光纤跳线实现与交换机的连接。
%title插图%num

我们可以以组建校园信息门户网为案例,信息门户网由门户界面管理、统一身份认证服务和应用管理服务三部分组成。这套方案主要包含实现负载均衡的Web发布子系统、数据库双机高可用子系统、FC-SAN存储及备份子系统和硬件安全防火墙。考虑到系统的可靠性和稳定性,对于存储系统,建议采用冗余结构提升系统的整体可靠性,配置双控制器的在线全光纤盘阵和冗余光纤交换机。

一、Web发布子系统的搭建:

Web服务器是应用系统的信息发布平台。在应用系统的多层体系结构中,门户网站作为信息发布层,提供信息浏览、服务定位等功能。WEB服务器主要完成以下的工作,首先是接收用户访问请求,并保持用户连接;接着是将用户访问请求发送给应用服务,并等待应用服务的查询处理结果;*后是接收应用服务的处理结果页面,提供给用户浏览。

我们在选择WEB服务器的时候,可以根据业务预测数据来选择,以两万人的学校估算,其SPECweb2005值约为57000,可选配至强CPU、3TB内存、16G的运行内存。

二、数据库双机高可用子系统搭建:

一个2万人的学校,对数据库服务器需求的TPC-C值大概在80万左右。我们可根据业务压力和应用规模,来选择数据库服务器。另外,每台服务器上配置双口8GB FC HBA卡,用于连接存储设备。

三、存储系统搭建:

系统设计考虑关键应用的可靠性和数据的安全性,可采用全冗余的FC SAN架构(2块FC HBA卡,2个光纤交换机以及冗余的磁盘阵列控制器)保证关键数据的可靠性;其中主存储盘阵建议采用全光纤AS5500磁盘阵列,同时配置2个控制器,配置8个16Gb光纤接口,8个16Gb光纤接口可选用易天光通信(ETU-LINK)16G FC SFP+光纤通道光模块。

以上就是易天光通信(ETU-LINK)给大家提供的校园网组网方案,该方案在适应目前需求的基础上,为将来性能扩展留有余地,可以根据业务发展需要进行灵活、快速的调整,实现信息应用的快速部署,而且可在不影响系统运行地情况下实现新功能、新业务的增加。

%title插图%num

WEB和数据库分别在两个服务器上的几个小问题

1、WEB服务器访问慢
修改数据库服务器的my.ini或者my.cnf,在[mysqld]下添加skip-name-resolve

2、WEB服务器连接数据库服务器时,提示Can’t connect to MYSQL server on ‘IP’ (13)
linux系统安装的时候自动启动了selinux功能,需要关掉
修改文件/etc/selinux/config
将SELINUX设为disabled
SELINUX=disabled

为什么要前后端分离

一、前戏

前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。

核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。

在互联网架构中,名词解释:

Web服务器:一般指像nginx,apache这类的服务器,他们一般只能解析静态资源。

应用服务器:一般指像tomcat,jetty,resin这类的服务器可以解析动态资源也可以解析静态资源,但解析静态资源的能力没有web服务器好。

一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。

二、术业有专攻(开发人员分离)

以前的JavaWeb项目大多数都是java程序员又当爹又当妈,又搞前端,又搞后端。

随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。

大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。

1、对于后端java工程师:

把精力放在java基础,设计模式,jvm原理,spring+springmvc原理及源码,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,java性能优化,以及相关的项目管理等等。

后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。

2、对于前端工程师:

把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8引擎,javascript多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。

前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。

术业有专攻,这样你的核心竞争力才会越来越高,正所谓你往生活中投入什么,生活就会反馈给你什么。并且两端的发展都越来越高深,你想什么都会,那你毕竟什么都不精。

通过将team分成前后端team,让两边的工程师更加专注各自的领域,独立治理,然后构建出一个全栈式的精益求精的team。

三、原始人时代(各种耦合)

几曾何时,我们的JavaWeb项目都是使用了若干后台框架,springmvc/struts + spring + spring jdbc/hibernate/mybatis 等等。

大多数项目在java后端都是分了三层,控制层,业务层,持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由&渲染到jsp页面。然后jsp页面上使用各种标签或者手写java表达式将后台的数据展现出来,玩的是MVC那套思路。

我们先看这种情况:需求定完了,代码写完了,测试测完了,然后呢?要发布了吧?你需要用maven或者eclipse等工具把你的代码打成一个war包,然后把这个war包发布到你的生产环境下的web容器里,对吧?

发布完了之后,你要启动你的web容器,开始提供服务,这时候你通过配置域名,dns等等相关,你的网站就可以访问了(假设你是个网站)。那我们来看,你的前后端代码是不是全都在那个war包里?包括你的js,css,图片,各种第三方的库,对吧?

好,下面在浏览器中输入你的网站域名(www.xxx.com),之后发生了什么?(这个问题也是很多公司的面试题)我捡干的说了啊,基础不好的童鞋请自己去搜。

浏览器在通过域名通过dns服务器找到你的服务器外网ip,将http请求发送到你的服务器,在tcp3次握手之后(http下面是tcp/ip),通过tcp协议开始传输数据,你的服务器得到请求后,开始提供服务,接收参数,之后返回你的应答给浏览器,浏览器再通过content-type来解析你返回的内容,呈现给用户。

那么我们来看,我们先假设你的首页中有100张图片,此时,用户的看似一次http请求,其实并不是一次,用户在*次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器要连着请求100次http请求(有人会跟我说http长连短连的问题,不在这里讨论),你的服务器接收这些请求,都需要耗费内存去创建socket来玩tcp传输(消耗你服务器上的计算资源)。

重点来了,这样的话,你的服务器的压力会非常大,因为页面中的所有请求都是只请求到你这台服务器上,如果1个人还好,如果10000个人并发访问呢(先不聊服务器集群,这里就说是单实例服务器),那你的服务器能扛住多少个tcp连接?你的带宽有多大?你的服务器的内存有多大?你的硬盘是高性能的吗?你能抗住多少IO?你给web服务器分的内存有多大?会不会宕机?

这就是为什么,越是大中型的web应用,他们越是要解耦。理论上你可以把你的数据库+应用服务+消息队列+缓存+用户上传的文件+日志+等等都扔在一台服务器上,你也不用玩什么服务治理,也不用做什么性能监控,什么报警机制等等,就乱成一锅粥好了。但是这样就好像是你把鸡蛋都放在一个篮子里,隐患非常大。如果因为一个子应用的内存不稳定导致整个服务器内存溢出而hung住,那你的整个网站就挂掉了。

如果出意外挂掉,而恰好这时你们的业务又处于井喷式发展高峰期,那么恭喜你,业务成功被技术卡住,很可能会流失大量用户,后果不堪设想。(注意:技术一定是要走在业务前面的,否则你将错过*佳的发展期哟,亲~)

此外,你的应用全部都耦合在一起,相当于一个巨石,当服务端负载能力不足时,一般会使用负载均衡的方式,将服务器做成集群,这样其实你是在水平扩展一块块巨石,性能加速度会越来越低,要知道,本身负载就低的功能or模块是没有必要水平扩展的,在本文中的例子就是你的性能瓶颈不在前端,那干嘛要水平扩展前端呢???还有发版部署上线的时候,我明明只改了后端的代码,为什么要前端也跟着发布呢???

正常的互联网架构,是都要拆开的,你的web服务器集群,你的应用服务器集群+文件服务器集群+数据库服务器集群+消息队列集群+缓存集群等等。

四、JSP的痛点

以前的javaWeb项目大多数使用jsp作为页面层展示数据给用户,因为流量不高,因此也没有那么苛刻的性能要求,但现在是大数据时代,对于互联网项目的性能要求是越来越高,因此原始的前后端耦合在一起的架构模式已经逐渐不能满足我们,因此我们需要需找一种解耦的方式,来大幅度提升我们的负载能力。

1、动态资源和静态资源全部耦合在一起,服务器压力大,因为服务器会收到各种http请求,例如css的http请求,js的,图片的等等。一旦服务器出现状况,前后台一起玩完,用户体验*差。

2、UI出好设计图后,前端工程师只负责将设计图切成html,需要由java工程师来将html套成jsp页面,出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。

3、jsp必须要在支持java的web服务器里运行(例如tomcat,jetty,resin等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。

4、*次请求jsp,必须要在web服务器中编译成servlet,*次运行会较慢。

5、每次请求jsp都是访问servlet再用输出流输出的html页面,效率没有直接使用html高(是每次哟,亲~)。

6、jsp内有较多标签和表达式,前端工程师在修改页面时会捉襟见肘,遇到很多痛点。

7、如果jsp中的内容很多,页面响应会很慢,因为是同步加载。

8、需要前端工程师使用java的ide(例如eclipse),以及需要配置各种后端的开发环境,你们有考虑过前端工程师的感受吗。

基于上述的一些痛点,我们应该把整个项目的开发权重往前移,实现前后端真正的解耦!

五、开发模式

以前老的方式是:

1、产品经历/领导/客户提出需求

2、UI做出设计图

3、前端工程师做html页面

4、后端工程师将html页面套成jsp页面(前后端强依赖,后端必须要等前端的html做好才能套jsp。如果html发生变更,就更痛了,开发效率低)

5、集成出现问题

6、前端返工

7、后端返工

8、二次集成

9、集成成功

10、交付

新的方式是:

1、产品经历/领导/客户提出需求

2、UI做出设计图

3、前后端约定接口&数据&参数

4、前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口&参数不变,就不用两边都修改代码,开发效率高)

5、前后端集成

6、前端页面调整

7、集成成功

8、交付

六、请求方式

以前老的方式是:

1、客户端请求

2、服务端的servlet或controller接收请求(后端控制路由与渲染页面,整个项目开发的权重大部分在后端)

3、调用service,dao代码完成业务逻辑

4、返回jsp

5、jsp展现一些动态的代码

新的方式是:

1、浏览器发送请求

2、直接到达html页面(前端控制路由与渲染页面,整个项目开发的权重前移)

3、html页面负责调用服务端接口产生数据(通过ajax等等,后台返回json格式数据,json数据格式因为简洁高效而取代xml)

4、填充html,展现动态效果,在页面上进行解析并操作DOM。

总结一下新的方式的请求步骤:

大量并发浏览器请求—>web服务器集群(nginx)—>应用服务器集群(tomcat)—>文件/数据库/缓存/消息队列服务器集群

同时又可以玩分模块,还可以按业务拆成一个个的小集群,为后面的架构升级做准备。

七、前后分离的优势

1、可以实现真正的前后端解耦,前端服务器使用nginx。前端/WEB服务器放的是css,js,图片等等一系列静态资源(甚至你还可以css,js,图片等资源放到特定的文件服务器,例如阿里云的oss,并使用cdn加速),前端服务器负责控制页面引用&跳转&路由,前端页面异步调用后端的接口,后端/应用服务器使用tomcat(把tomcat想象成一个数据提供者),加快整体响应速度。(这里需要使用一些前端工程化的框架比如nodejs,react,router,react,redux,webpack)

2、发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,全部由前端工程师来负责。接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。双方互不干扰,前端与后端是相亲相爱的一家人。

3、在大并发情况下,我可以同时水平扩展前后端服务器,比如淘宝的一个首页就需要2000+台前端服务器做集群来抗住日均多少亿+的日均pv。(去参加阿里的技术峰会,听他们说他们的web容器都是自己写的,就算他单实例抗10万http并发,2000台是2亿http并发,并且他们还可以根据预知洪峰来无限拓展,很恐怖,就一个首页。。。)

4、减少后端服务器的并发/负载压力。除了接口以外的其他所有http请求全部转移到前端nginx上,接口的请求调用tomcat,参考nginx反向代理tomcat。且除了*次页面请求外,浏览器会大量调用本地缓存。

5、即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。

6、也许你也需要有微信相关的轻应用,那样你的接口完全可以共用,如果也有app相关的服务,那么只要通过一些代码重构,也可以大量复用接口,提升效率。(多端应用)

7、页面显示的东西再多也不怕,因为是异步加载。

8、nginx支持页面热部署,不用重启服务器,前端升级更无缝。

9、增加代码的维护性&易读性(前后端耦在一起的代码读起来相当费劲)。

10、提升开发效率,因为可以前后端并行开发,而不是像以前的强依赖。

11、在nginx中部署证书,外网使用https访问,并且只开放443和80端口,其他端口一律关闭(防止黑客端口扫描),内网使用http,性能和安全都有保障。

12、前端大量的组件代码得以复用,组件化,提升开发效率,抽出来!

八、注意事项

1、在开需求会议的时候,前后端工程师必须全部参加,并且需要制定好接口文档,后端工程师要写好测试用例(2个维度),不要让前端工程师充当你的专职测试,推荐使用chrome的插件postman或soapui或jmeter,service层的测试用例拿junit写。ps:前端也可以玩单元测试吗?

2、上述的接口并不是java里的interface,说白了调用接口就是调用你controler里的方法。

3、加重了前端团队的工作量,减轻了后端团队的工作量,提高了性能和可扩展性。

4、我们需要一些前端的框架来解决类似于页面嵌套,分页,页面跳转控制等功能。(上面提到的那些前端框架)。

5、如果你的项目很小,或者是一个单纯的内网项目,那你大可放心,不用任何架构而言,但是如果你的项目是外网项目,呵呵哒。

6、 以前还有人在使用类似于velocity/freemarker等模板框架来生成静态页面,仁者见仁智者见智。

7、这篇文章主要的目的是说jsp在大型外网java web项目中被淘汰掉,可没说jsp可以完全不学,对于一些学生朋友来说,jsp/servlet等相关的java web基础还是要掌握牢的,不然你以为springmvc这种框架是基于什么来写的?

8、如果页面上有一些权限等等相关的校验,那么这些相关的数据也可以通过ajax从接口里拿。

9、对于既可以前端做也可以后端做的逻辑,我建议是放到前端,为什么?因为你的逻辑需要计算资源进行计算,如果放到后端去run逻辑,则会消耗带宽&内存&cpu等等计算资源,你要记住一点就是服务端的计算资源是有限的,而如果放到前端,使用的是客户端的计算资源,这样你的服务端负载就会下降(高并发场景)。类似于数据校验这种,前后端都需要做!

10、前端需要有机制应对后端请求超时以及后端服务宕机的情况,友好的展示给用户。

九、扩展阅读

1、其实对于js,css,图片这类的静态资源可以考虑放到类似于阿里云的oss这类文件服务器上(如果是普通的服务器&操作系统,存储在到达pb级的文件后,或者单个文件夹内的文件数量达到3-5万,io会有很严重的性能问题),再在oss上配cdn(全国子节点加速),这样你页面打开的速度像飞一样, 无论你在全国的哪个地方,并且你的nginx的负载会进一步降低。

2、如果你要玩轻量级微服务架构,要使用nodejs做网关,用nodejs的好处还有利于seo优化,因为nginx只是向浏览器返回页面静态资源,而国内的搜索引擎爬虫只会抓取静态数据,不会解析页面中的js,这使得应用得不到良好的搜索引擎支持。同时因为nginx不会进行页面的组装渲染,需要把静态页面返回到浏览器,然后完成渲染工作,这加重了浏览器的渲染负担。浏览器发起的请求经过nginx进行分发,URL请求统一分发到nodejs,在nodejs中进行页面组装渲染;API请求则直接发送到后端服务器,完成响应。

3、如果遇到跨域问题,spring4的CORS可以完美解决,但一般使用nginx反向代理都不会有跨域问题,除非你把前端服务和后端服务分成两个域名。JSONP的方式也被淘汰掉了。

4、如果想玩多端应用,注意要去掉tomcat原生的session机制,要使用token机制,使用缓存(因为是分布式系统),做单点,对于token机制的安全性问题,可以搜一下jwt。

5、前端项目中可以加入mock测试(构造虚拟测试对象来模拟后端,可以独立开发和测试),后端需要有详细的测试用例,保证服务的可用性与稳定性。

十、总结

前后端分离并非仅仅只是一种开发模式,而是一种架构模式(前后端分离架构)。千万不要以为只有在撸代码的时候把前端和后端分开就是前后端分离了,需要区分前后端项目。前端项目与后端项目是两个项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员。前后端工程师需要约定交互接口,实现并行开发,开发结束后需要进行独立部署,前端通过ajax来调用http请求调用后端的restful api。前端只需要关注页面的样式与动态数据的解析&渲染,而后端专注于具体业务逻辑。

linux下web服务器与数据库服务器的分离问题。

两台linux服务器,一个是web 服务器(有外网IP) ,用ftp传网站的源文件,装的是apache2+tomcat5.0+jdk1.5,另一台mysql5.0数据库服务器(只设置内网IP)。两台服务器同属一个内网段。

现在的问题是我在本地用FTP传源文件到WEB服务器,连接不上mysql数据库服务器,在web服务器做了一个jsp连接测试文件也连不通,任何提示都没有。后来我把用ftp传的源文件复制到了tomcat/webapps/目录下面,结果却连通了,我不明白这个是什么问题,请赐教。

安卓是否有办法让应用后台运行?

玩一个手游(冒险岛 m ),里面支持挂机,需要应用在前台挂机才行。 想挂机的时候顺便看小说的我想到了同屏双开,完全不影响。

这时候就会想,如果完全真后台,是否可以手游完全在后台挂机,这样就可以全屏看小说了。 因为分屏的时候能扛得住,那么性能就不是瓶颈了。可惜网上找了一圈完全没找到可行的方案……

我的理解是,*差也应该能够通过某种方式,用系统自带的分屏原理来做一个伪实现?

22 条回复    2021-08-18 09:27:17 +08:00

blueboyggh
    1

blueboyggh   2 天前

其实 miui 的小窗就挺好
NeezerGu
    2

NeezerGu   2 天前

@blueboyggh 想要完全的真后台, 一丁点都不影响干别的那种。。。
ThreeBody
    3

ThreeBody   2 天前 via Android   ❤️ 1

你的游戏支持虚拟机吗?支持的话用 vmos
A1B2C3D4
    4

A1B2C3D4   2 天前 via Android   ❤️ 1

你试试看手机多开系统行不行,副系统的状态主系统管不了
jsjjdzg
    5

jsjjdzg   2 天前

不太行,以前可以,现在都会玩了,不杀后台或者类似 IOS 的后台机制不能省电和流畅啊
codehz
    6

codehz   2 天前

其实主要是开发者故意不让你在后台跑(有意或无意的设计)
NeezerGu
    7

NeezerGu   2 天前

@ThreeBody pro 可行, 非常感谢;普通版不行
Cielsky
    8

Cielsky   2 天前 via Android

虚拟机应该可信。
另外可以看看 appops 权限里有没有类似权限
0o0o0o0
    9

0o0o0o0   2 天前

魅族的小窗可以贴边隐藏,只露出一个侧边条,基本上等于全屏,不过其他家的小窗目前都还得看得见。
AX5N
    10

AX5N   2 天前

还以为啥需求呢,只是挂游戏的话为啥不开个电脑挂-_-

philipjf
    11

philipjf   2 天前

安卓的后台不是给用户用的,是给厂商偷隐私用的
LiYanHong
    12

LiYanHong   2 天前

你这种叫伪装成前台运行
安卓本来就支持后台,但游戏开发会检测到后台就暂停游戏
keyuan
    13

keyuan   2 天前

去咸鱼花几百块钱买个备用机吧…省心省事
Kiriya
    14

Kiriya   2 天前

看小说买个百元备用机完全够用,旗舰机夏天反而烫手
NeezerGu
    15

NeezerGu   2 天前

@AX5N 因为麻烦。
电脑挂还要改锁屏设置, 不然锁屏自动断网;
换台式机挂更麻烦, 每次要点个啥还要专门跑到台式机前;

相反手机直接解决,随时随地可以操作,不香吗

NeezerGu
    16

NeezerGu   2 天前

@Kiriya 会有其他需求。 比如挂着游戏,要回家了, 滴滴打车? 抱歉我大滴滴不支持分屏。
为了防止游戏掉线,就必须两边切换着来, 非常麻烦
YNaN
    17

YNaN   2 天前

魅族小窗+1,小窗模式基本*其他厂牌一个版本
2i2Re2PLMaDnghL
    18

2i2Re2PLMaDnghL   2 天前

@NeezerGu 台式机+远程控制
noahhhh
    19

noahhhh   1 天前

锤子手机?看坚果 r2 也是骨折价
honglei92
    20

honglei92   1 天前

要不写个 app 后台播放音乐,然后插件化把游戏整进去。
af463419014
    21

af463419014   1 天前

换个思路,用云手机来挂机如何,比如红手指
24 小时挂着都没问题,还不影响自己的手机
VFHPDCWY
    22

VFHPDCWY   3 小时 50 分钟前

安装虚拟机 VMOS,虚拟机可以在后台自动挂着。

有没有人能够搞定微信的 fcm 推送

有没有人能够搞定微信的 fcm 推送

 

Oswald · 1 天前 via Android · 2225 次点击

研究了好几天都弄不了

11 条回复    2021-08-17 13:37:22 +08:00

cst4you
    1

cst4you   1 天前

没有, 睡会起来再问吧
JensenQian
    2

JensenQian   1 天前 via Android   ❤️ 1

没有,搞定 fcm 不如期望张小龙接入 mipush
JoeBreeze
    3

JoeBreeze   1 天前

不懂就问: 小米开放平台怎么不能注册个人开发者了
kwanzaa
    4

kwanzaa   1 天前

设立资质门槛,方便过审呗。
dingwen07
    5

dingwen07   1 天前   ❤️ 2

挂梯+开启电池优化+非中国区注册的账号,缺一不可
admin601
    6

admin601   1 天前

https://v2ex.com/t/715786
VinsonGuo
    7

VinsonGuo   1 天前

别折腾了,浪费生命,还是让微信这坨?占我 600m 内存吧
tuwulin365
    8

tuwulin365   1 天前

辣个没妈的蓝人
kingfalse
    9

kingfalse   1 天前

@JoeBreeze 小米开放平台不开放了呗
banricho
    10

banricho   23 小时 56 分钟前

别想,没?龙故意的
要收消息 -> 必须常挂后台 -> 不再需要冷启动 -> 秒开 app 会更愿意去开

这时候支付场景可能就优先微信了
看新闻也觉得微信搜一下方便~

starcraft
    11

starcraft   23 小时 39 分钟前

thanox 。并且也不是完全没后台,还是得要吃一部分内存。

请教安卓 11 的系统字体如何调粗

liang00 · 1 天前 · 618 次点击

请教各位安卓 11 的系统字体如何调粗

  • 先说一下我的手机情况,手机型号是小米 10 Pro,ROM 是基于 AOSP 的第三方安卓 11ROM ( Evolution X ),目前已经安装 Magisk 。
  • 目前的想请教大家的问题是:安卓 11 的系统字体如何调粗?
  • 我的系统语言设置的是中文,我发现系统设置里只有更改字体大小和显示大小两个字体选项,可是调整后发现都是改变字体大小而不是字体的粗细。
  • 我尝试过谷歌看有什么解决方法,大概就是刷 Magisk 字体模块和修改 system/etc/fonts.xml 这两种方法。修改 system/etc/fonts.xml 然后把想要的字体放到 system/fonts,这个方法需要 system 的写权限,所以没有成功,安装 Magisk 字体模块倒是成功了,但是 Magisk 字体模块安装完重启只是改变了字体样式,粗细并没有改变 。
  • 目前我看到的都是些针对安卓 10 或者更早之前的方法,所以请教一下,安卓 11 有什么可行的方法,我只不需要换什么稀奇古改的字体,我只是想要达到类似 iOS 那种字体加粗的效果。

5 条回复    2021-08-17 17:32:22 +08:00

cst4you
    1

cst4you   1 天前

11 需要自己做 magisk 模块, 去找模版吧, 很简单的 zip 文件
xuxinglin8888
    2

xuxinglin8888   1 天前 via Android

戴老花眼镜然后靠近点看
liangch
    3

liangch   22 小时 55 分钟前

做 magisk 模块。改 fonts.xml ,把字重 400 的去掉试试?
noahhhh
    4

noahhhh   22 小时 5 分钟前

中文 variable font 模块 https://github.com/simonsmh/notocjk
MiketsuSmasher
    5

MiketsuSmasher   19 小时 41 分钟前

找个中等粗细的字体(比如说苹方),自己做一个模块

目前安卓各个 ui 的应用抽屉好用吗

目前安卓各个 ui 的应用抽屉好用吗

 

archiyuan · 1 天前 · 1017 次点击

  • oppo 和小米都没办法使用第三方桌面,oppo 第三方桌面没法设为默认总是自动退出,小米设置第三方为默认后就禁用全面屏手势。
  • oppo 自带桌面没有分类,所有应用包括系统应用全堆在一起。小米自带桌面虽然有分类但是但是始终有一栏全部是囊括了所有应用的。
  • 之前用了大半年的氢 os,可以完美设置 nova launcher,所有不常用的应用都可以分门别类的放进抽屉的不同页面,想用的时候也不难找,真的非常舒服。
  • 因此比较好奇三星华为 vivo 魅族或者 pixel 的自带应用抽屉好用吗,以及现在是不是基本都不支持第三方桌面了?

13 条回复    2021-08-18 10:34:12 +08:00

fromzero
    1

fromzero   1 天前   ❤️ 1

魅族不行,设置了第三方桌面后,时不时的还会弹出魅族的桌面。
xloger
    2

xloger   1 天前

MIUI 的应用抽屉烂得不行…用应用抽屉的目的自然是分类,分成一组一组然后一个杂项,可以快速找到自己想要的 App 。结果硬是不能拆分,每个抽屉都是无筛选的,有跟没有一样。*后迫于用自带的分类,连个游戏分组都没有。

当然,*烂的还是努比亚的桌面,没有之一。

zoharSoul
    3

zoharSoul   1 天前

氧 os 的不错
israinbow
    4

israinbow   1 天前

emui 的很好用.
TheBlade
    5

TheBlade   23 小时 49 分钟前

one ui 支持第三方启动器, 但是我个人更喜欢 one ui 本身+good lock 套件
archiyuan
    6

archiyuan   23 小时 28 分钟前

@zoharSoul 已经是历史了,也不知道还能活多久
archiyuan
    7

archiyuan   23 小时 20 分钟前

@xloger miui 这个确实,看着好像好用,实际用起来挺难受的
archiyuan
    8

archiyuan   23 小时 17 分钟前

@TheBlade good lock 套件可以自定义应用抽屉吗?之前短暂体验过 oneui,息屏、多任务样式什么的,调了半天总是很违和就出掉了
TheBlade
    9

TheBlade   22 小时 2 分钟前

@archiyuan one ui 只有传统的 apps screen, 默认关闭状态, 也没有类似 ios app library 的应用自动分类需要用户手动分类建立文件夹, 挺烂的
noahhhh
    10

noahhhh   21 小时 35 分钟前

Android 10 和 11 把 gesture 和 launcher 整合在一起了,一般机子只有靠刷 magisk 模块才能完美实现桌面和手势更换。
可以看下这篇做参考 https://www.xda-developers.com/third-party-launchers-animation-pixel-phones/

archiyuan
    11

archiyuan   21 小时 14 分钟前

@noahhhh 好的,谢谢。
FaneLau
    12

FaneLau   3 小时 36 分钟前 via Android

应用抽屉是说文件夹对吧?我用 Pixel,Android 11,系统没有自动分类文件夹的功能,需要自己在桌面建立,我试了下把 fb 的图标拉到 tg 的图标上覆盖住,会自动生成名为 Chat 的文件夹,但是靠自己整理太费事了,我有 200 多个 app,只把*常用的放桌面。Play 商店上有一个软件叫 Smart Sort Launcher,我用这个来自动归类我的 app,但我不将它设置为默认的 launcher,只是偶尔有些不常用的 app 但又想不起名字比较难找的时候,才会点进去 Smart Sort Launcher 里,根据目标软件的功能去对应的文件夹里面找。另外我设置了一个 Smart Sort Launcher 的快捷键在主屏,点击的时候会弹出来一个 26 位英文键盘,可以用来搜索联系人或 app,比如搜索张三的话直接打 zs 两个字母就可以了,搜索云闪付的话打 ysf 几个字母,它就会在键盘位上方显示对应的联系人或 app 图标,很方便,事实上我已经把这个快捷键替换掉我原来的 Home 键了。如果说不借助第三方应用的话,Android 11 本身主屏*下方有个 Search Bar (搜索框), 点击展开可以搜索相关词语会显示对应的网页搜索推荐以及本机 app 名称,比如搜索 “YouTube”,他会显示我手机上安装的 YouTube 和 YT Music 这两个;我搜索 “微信”,他会显示出 Wechat,搜中英文应用名都能得到对应结果。以上可能有些术语用得不是很准确,我尽量表达得清楚了。
wsrlyk
    13

wsrlyk   2 小时 37 分钟前

目前为止还是一加桌面用起来舒服。
常用应用直接放桌面。
不常用应用根本不用管分类,桌面上滑 打开所有应用抽屉并自动打开九宫格键盘,输入首字母即可筛选出包含该首字母的应用。比如连敲 3 个 9,就可以筛选出网易云音乐(wyyyy)。
页面上方也有自带的一些分类可以点,虽然我没怎么用过,都是直接搜的。
抽屉里的应用列表 还会按搜索频率排序,搜过多次的应用在*前面,直接开就行。只需要搜那种一年开一次的家伙,什么所得税啥的

缺点就是 名字比较短的应用比如 qq,只能敲 2 个数字,筛选出的重码结果会相对比较多,要稍微找找。但既然已经是不常用应用了,影响不大

安卓摄像头录制 60fps 并使用 MediaCodec 编码成 H.265 的视频

安卓摄像头录制 60fps 并使用 MediaCodec 编码成 H.265 的视频

 

GGMM · 16 小时 5 分钟前 · 633 次点击

如题所示,这是我目前的需求。我目前实现到的程度:使用安卓 Camera2 API 可以实现OnImageAvailable回调函数的 60fps 的输出(即 16.6ms ),但是当我使用 MediaCodec 进行 H.265 视频编码时,编码的速度只有大约 50fps,平均 20ms 。使用 H.265 是因为博士师兄是想要用 H.265 来做,所以必须用 H.265 格式编码。

我尝试了一些解决方案,但是它们大部分都是输出 30fps,或者是预览 120fps,我想要的是编码 H.265 的视频是 60fps 。我认为我这里的瓶颈主要出在编码速度上。大致的流程是:OnImageAvailable得到 YUV 数组->转换为 NV12 的格式并送入缓冲池->编码线程从缓冲池中读取 NV12 的 byte 数组并进行编码。

我上面可能说得有点含糊,主要是想问一下大家有没有试过使用MediaCodec进行硬编码,以及相应的编码速度大概是多少。

7 条回复    2021-08-18 09:23:26 +08:00

winterbells
    1

winterbells   15 小时 36 分钟前 via Android

不是很懂,是通用需求吗
有些手机系统相机可以设置 hevc 编码
JayFang1993
    2

JayFang1993   15 小时 25 分钟前

插帧
felixlong
    3

felixlong   14 小时 21 分钟前

使用 MediaCodec.createInputSurface, 不要用软件做 YUV 的转换, 软件肯定达不到 60FPS.
rpw
    4

rpw   13 小时 18 分钟前

@GGMM 三楼正解,直接用 MediaCodec 编码就可以了,不需要做软件转换。想想,现在手机上录制高帧率视频基本都是标配了
rpw
    5

rpw   13 小时 11 分钟前

参考下 Android 的 Demo: https://github.com/android/camera-samples/blob/main/Camera2Video
mxT52CRuqR6o5
    6

mxT52CRuqR6o5   12 小时 46 分钟前 via Android

这种都是借助硬件编码能力的,你要是用 cpu 编码就手机那种性能肯定实时不了,有可能就是硬件达不到,不知道你们用的什么手机
z42514
    7

z42514   3 小时 45 分钟前

关注一下,*近也在折腾类似的需求,打算用 camerax 进行实现
largek
    8

largek   7 天前

有没有尝试过降低分辨率和帧率?
largek
    9

largek   7 天前

说错:分辨率和码率
GGMM
    10

GGMM   7 天前

@felixlong 谢谢,我用的是谷歌 cpp 写的 libyuv 转换的 YUV 格式,这部分花了 8ms,对于 60fps 还是慢了点。
@rpw 谢谢,我今天尝试一下(因为昨天赶着回家)
@mxT52CRuqR6o5 我在自己的荣耀 v30 pro 上测试的,实验室里还有个小米 11pro 我还没测。
@largek 我之前把分辨率降低到了 720P,但是帧率还下降了 2fps 左右。

bitdepth
    11

bitdepth   3 天前 via iPad

能用硬體加速盡量加速,能 DMA 盡量 DMA
不用想 cpu 效能更好,硬體不行就換更好的