首页 文章 精选 留言 我的

精选列表

搜索[Linux内核],共10000篇文章
优秀的个人博客,低调大师

linux下安装python

Android服务被设计用来执行很多操作,比如说,可以执行运行时间长的耗时操作,比较耗时的网络操作,甚至是在一个单独进程中的永不会结束的操作。实现这些操作之一是通过Android接口定义语言(AIDL)来完成的。AIDL被设计用来执行进程间通信,另一种实现方式见博文Android进程间的通信之Messenger。本文我们将学习如何创建AIDL文件实现Android进程间通信。在正式学习之前,我们先澄清一些“事实”。 关于Android Service 1、Android服务不是后台任务,它们默认只运行在你的app的主线程中 2、Android服务可以通过设置来运行在不同进程中 3、如果Android服务在不同进程中启动,你将不能使用通常的IBinder接口与其通信 AIDL:Android Interface Definition Language 为了在Android应用中实现进程间通信,我们需要在远端进程中定义一系列可被当前进程访问的方法。通过AIDL我们可以定义这样的一系列方法。AIDL就好像Java中的其它接口一样可以在其中定义一些抽象方法。我们首先需要创建一个以.aidl为后缀的文件并在里面定义所需的抽象方法。 AIDL的一个主要特征是,通过使用AIDL,我们可以在两个不同的应用中进行通信(其实Messenger也可以实现同样的操作,两者区别请见博文Android进程间的通信之Messenger);当然,如果你的应用不需要跟另外一个应用进行通信,那就尽量避免使用AIDL机制吧。aidl文件中定义的抽象方法中,只有一些原始数据类型以及一些基本数据类型如String,lists,maps等可以作为这些方法的参数,如果你想使用一个自定义类作为参数,那么你的自定义类必须实现Parcelable接口,并且该类要被导入AIDL文件中,这一点应该在单独的课程中进行讲解。本文只学习简单的AIDL用法。 AIDL实现思路 AIDL通过定义服务端暴露的接口,以提供给客户端来调用,AIDL使服务端可以并行处理(因此你可能需要考虑多线程并发访问的线程安全性问题)。通过编写aidl文件来设计想要暴露的接口,编译后会自动生成相应的Java文件,服务端将接口的具体实现写入Stub中,通过IBinder对象传递给客户端,客户端bindService时,通过asInterface方法将IBinder还原成接口,供客户端调用其中的方法。 简单示例 AndroidManifest.xml <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <serviceandroid:name=".BoundService"android:process=":custom_process"/> </application> IBoundService.aidl packageyf.exam.service.aidl; interfaceIBoundService{ intgetResult(inta,intb); } BoundService.java publicclassBoundServiceextendsService{ privateIBoundService.StubmBinder=newIBoundService.Stub(){ @Override publicintgetResult(inta,intb)throwsRemoteException{ returna+b; } }; @Override publicIBinderonBind(Intentintent){ returnmBinder; } } MainActivity.java publicclassMainActivityextendsActivity{ privateButtonbtn=null; privateIBoundServicemIBoundService; privatebooleanmServiceConnected=false; privateServiceConnectionconn=newServiceConnection(){ @Override publicvoidonServiceDisconnected(ComponentNamename){ mServiceConnected=false; } @Override publicvoidonServiceConnected(ComponentNamename,IBinderservice){ mIBoundService=IBoundService.Stub.asInterface(service); mServiceConnected=true; } }; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); Intentintent=newIntent(this,BoundService.class); bindService(intent,conn,Context.BIND_AUTO_CREATE); btn.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ if(mServiceConnected){ try{ intresult=mIBoundService.getResult(2,4); Toast.makeText(MainActivity.this,"result="+result, Toast.LENGTH_SHORT).show(); }catch(RemoteExceptione){ e.printStackTrace(); } } } }); } @Override protectedvoidonDestroy(){ super.onDestroy(); if(mServiceConnected){ unbindService(conn); mServiceConnected=false; } } } 本文转自 zddnd 51CTO博客,原文链接:http://blog.51cto.com/13013666/1939696

优秀的个人博客,低调大师

docker linux redis 安装

1.docker redis 查询 docker search redis 2.下载 reids docker pull redis 3.启动 redis docker run -d -v /docker/redis/data:/data --name baoyou-redis -p 6379:6379 redis redis-server --appendonly yes -v /docker/redis/data:/data 存储aof 文件位置 持久化文件目录 --name baoyou-redis 容器名称 -p 6379:6379 暴露端口 --appendonly yes 持久化 4.启动redis-cli docker run -it --link baoyou-redis:redis --rm redis redis-cli -h redis -p 6379 --link baoyou-redis:redis 链接到自己的容器 5.重启容器 docker restart baoyou-redis 重启后持久化还存在 捐助开发者 在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。 个人主页:http://knight-black-bob.iteye.com/ 谢谢您的赞助,我会做的更好!

优秀的个人博客,低调大师

Linux环境变量

环境变量作用:切换文件夹,查找执行文件等等 查看环境变量 env 和 set 命令,区别set查找的变量包括自定义变量和bash接口 export 将自定义变量转化为环境变量,环境变量可以被继承 malan@malan-Lenovo-G470 ~ $ name=Bell malan@malan-Lenovo-G470 ~ $ echo $name Bell malan@malan-Lenovo-G470 ~ $ bash malan@malan-Lenovo-G470 ~ $ echo $name malan@malan-Lenovo-G470 ~ $ exit exit malan@malan-Lenovo-G470 ~ $ export name malan@malan-Lenovo-G470 ~ $ bash malan@malan-Lenovo-G470 ~ $ echo $name Bell malan@malan-Lenovo-G470 ~ $ 注:bash表示开启一个新的bash进程 exit表示退出当前bash 环境变量是从一些环境变量的配置文件里读取出来的,那我门上面通过export设置的环境变量在shell一旦重启后就没有了. 要想永久的改变环境变量,那就要在配置文件中来设置环境变量 环境变量配置文件修改后必须要重启shell后才会重新读取,而source命令可以使配置文件立即生效 malan@malan-Lenovo-G470 ~ $ source 配置文件 配置文件详解 #先区别login shell 和non-login shell login shell non-login shell 需要登录 不需要登录 /etc/profile 系统整体配置 ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile <用户个人文件> 以上三个文件只读取一个,从前到后的优先级 所以综上所属:以后在用户个人文件中来更改环境变量,然后使用source立即生效即可使用,对于login shell 和non-login shell注意配置文件的不同 malan@malan-Lenovo-G470 ~ $ cat .bashrc malan@malan-Lenovo-G470 ~ $ echo $name malan@malan-Lenovo-G470 ~ $ echo "export name=Bell" > .bashrc malan@malan-Lenovo-G470 ~ $ source .bashrc malan@malan-Lenovo-G470 ~ $ echo $name Bell 重启终端,依旧生效

优秀的个人博客,低调大师

解决linux中文乱码

今天突然发现有个服务器上面的php输出的日志乱码,然后我查看php也是乱码,我下载windows本地,显示正常,我ctrl+c然后ctrl+v到服务器,还是乱码,各种转换,都不行, 查看xshell编码,utf-8的 查看系统编码echo $LANG,显示是en_US.UTF-8 再用file命令查看php,提示是个php script文件,然后机智的我直接删掉了<?php >,只保留php内容,然后file查看,提示是utf8的,这么就尴尬了, 后来发现有个修改系统编码的博文是这么说的 vi /etc/profile export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 然后我赶紧查看了下echo $LC_ALL 显示en_US 根据网上的另一个帖子是这么说的 locale的设定: LC_ALL和LANG优先级的关系: LC_ALL > LC_* >LANG 1、如果需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。 2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。 3、假如什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。 所以这个系统根本不支持中文, 虽然$LANG=en_US.UTF-8 把LC_ALL设置为空或者设置为en_US.UTF-8,不过看了下其他系统,我还是设置为了空

优秀的个人博客,低调大师

Linux关机重启命令

关机重启命令: shutdown [选项] 时间 选项: -c 取消前一个关机命令 -h 关机 -r 重启 例子: shutdown -r 05:30 & (&表示后台准备指定时间重启) #没法远程关机 可以远程重启 shutdown -hnow 立即关机 其它关机(都不安全):(halt) (poweroff) (init 0) 其它重启(reboot相对安全):(reboot) (init 6) 系统运行级别(0(关机)-6(重启)) 1、单用户 2、不完全多用户,不含有NSF服务 3、完全多用户 4、未分配 5、启动图形界面(前提装了图形界面) runlevel 查看当前系统上级运行级别和当前运行级别 #上一级别 当前级别 退出登录: logout(每次退出远程最好执行,不然会影响最大连接数目)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册