- React Native通讯原理
zbl_zbl
androidReactNativ
之前写过一篇文章ReactNativeAndroid源码分析,在此文章的基础上分析和总结下RN与Native的通讯流程。本文基于Android代码分析,iOS实现原理类似。1.通讯框架图先来解析下各个模块的角色与作用:Java层,这块的实现在ReactAndroid中-ReactContext:Android上下文子类,包含一个CatalystInstance实例,用于获取NativeModule
- Android 源码中jni项目 加载so目录小结
峥嵘life
JniAndroid系统androidandroid
Android源码中jni项目加载so目录小结文章目录Android源码中jni项目加载so目录小结一、前言二、so目录验证测试1、jniso文件错误报错(1)报错1-未找到so文件:(2)报错2-so文件中未找到native方法:2、验证的几种情况(1)apk下面的lib/arm64/放置正确的so文件(2)apk下面的lib/arm64/放置错误的so文件所以上面两个测试,验证了lib/arm
- VSCode查看Android源码,从入门到放弃
阳哥说全栈
Androidandroidvscodejava
VSCode查看Android源码比较简单,首先下载Android源码,我用的Mac,所以比较方便,对了repo在homebrew里面就有,直接brewinstallrepo就可以,但是版本比官方的略低,但是可以用,只是有警告。下载之后直接用VSCode加载文件夹即可,直接可以在目录里面打开文件,对于非jdk的类能定位到文件位置,但是jdk的源码无法定位,显示的是.class文件反编译出来的代码,
- AS高版本SDK编译生成的apk放入低版本android源码中集成编译错误
辉色投像
android系统中内置app:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)#ModulenameshouldmatchapknametobeinstalledLOCAL_MODULE:=DemoLOCAL_MODULE_TAGS:=optionalLOCAL_SRC_FILES:=$(LOCAL_MODULE).apkLOCAL_MODULE_CLA
- android:configChanges分析
l309681481
androidgitee
android:configChanges如果要在android源码确认是否是configChanges导致了Activity重启,建议把ActivityThread.DEBUG_CONFIGURATION改为true。Activity无法内部消化此次配置改变时,会调用relaunchActivityLocked方法。不同的是,如果此Activity正在前台,那立即调用;在后台的,则等切到前台后再
- 学习GPG
stxinu
GPG
0.前言在使用repo下载android源码和git下载kernel源码里会使用到gpg,那gpg是什么?该如何使用?这里说到的GPG是GnuPG,是GnuPrivacyGuard的缩写,它提供钥匙管理、加解密和数字签名等功能,其涉及到非对称加密算法,在学习每一项新技术时都先学会用再去深究其实现,故而我们在这里简说原理后立马学习如何用,品尝非对称加密算法应用下的GPG味道。非对称加密算法使用公钥和
- Android源码分析--启动时序图
linuxMinx
Android源码分析Android源码分析
为什么Android系统启动比较慢Build的产物中最重要的是三个镜像文件,位于/out/target/product//目录下ramdisk.img:在启动时将被Linux内核挂载为只读分区,它包含了/init文件和一些配置文件。它用来挂载其他系统镜像并启动init进程。解析步骤:Init.c(system\core\init)Init.c{main(......init_parse_confi
- 下载Android源码
赛非斯
repoinit-uhttps://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest-bandroid-10.0.0_r411.首先下载repo:a)终端运行gitclonegit://codeaurora.org/tools/repo.gitb)mkdir~/binc)拷贝repo到~/bin下面,修改repo权限,chmoda+x~
- Android源码剖析----EventBus的工作原理
简书不简单iiii
现实开发中用到的框架为了方便更好的理解加深记忆,归纳如下:在开发中使用eventbus主要是为了进行传值和传递一些意图,第一次使用后就被这个框架的灵活和解耦性给折服。。。去熟悉eventbus的工作原理之前得首先知道一个设计模式那就是观察者模式,什么是观察者模式呢?就是为了定义对象间的一种一对多的依赖关系,即当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。整个eventbus
- 【最全面】Android静默安装的两种方案
凉亭下
Androidandroidjava开发语言
一些产品要求APP在升级时能够实现静默安装,而无需弹出安装界面让用户确认。这里提出两种实现方案:方案一:通过pm命令安装APP调用『pm』命令实现静默安装,此方案无须修改Android源码,但需要root权限。实现如下:/***Silentinstall**@parampathPackage*@returntrue:successfalse:failed*/publicstaticbooleani
- java 串行线程_Java并发之串行线程池实例解析
笨zhu
java串行线程
前言做Android的这两年时间,通过研究Android源码,也会Java并发处理多线程有了自己的一些理解。那么问题来了,如何实现一个串行的线程池呢?思路何为串行线程池呢?也就是说,我们的Runnable对象应该有个排队的机制,它们顺序从队列尾部进入,并且从队列头部选择Runnable进行执行。既然我们有了思路,那我们就考虑一下所需要的数据结构?既然是从队列尾部插入Runnable对象,从队列头部
- Android AOSP源码研究之万事开头难----经验教训记录
职场007
AndoridAOSPAndroidAOSPandroid源码下载编译Android源码烧录AOSP避坑指南
文章目录1.概述2.Android源下载1.配置环境变量2.安装curl3.下载repo并授权4.创建一个文件夹保存源码5.设置repo的地址并配置为清华源6.初始化仓库7.指定我们需要下载的源码分支并初始化2.1使用移动硬盘存放Android源码的坑2.2解决方法3.Android源码编译4.Android源烧录1.概述做了四五年的android应用层开发后,想研究下底层源码的实现,所以想下载源
- 【转载】原生社区交友婚恋视频即时通讯双端APP源码 ONE兔2.0版
ms3_ishenglu
交友微信小程序小程序
原生社区交友婚恋视频即时通讯双端APP源码下载ONE兔2.0版包含后端、H5源码源码,Android源码,IOS源码
- Adb显示第3方应用的包名原理
亚瑟-小郎
adblistframeworkandroid
Android早期版本实现原理请看Android源码分析-pm命令的实现,列出包名pmlistpackage,列出系统库pmlistlibraries_pmlistpackages-CSDN博客Android12对adbshellpm实现原理做了重构:改成了template模式PackageManagerShellCommandextendsShellCommandadbshellpmlistpa
- Android Jack Server Build
Nothing_655f
从AndroidM(6.0)之后,Android源码build引入了jack官方文档Jack工具的主要优势•完全开放源码源码均在AOSP中,合作伙伴可贡献源码•加快编译源码Jack提供特殊的配置,减少编译时间:pre-dexing,增量编译和Jack编译服务器.•支持代码压缩,混淆,重打包和multidex不在使用额外单独的包,例如ProGuard。1The.jacklibraryformatJa
- Android 系统apk源码目录结构匹配成Android Studio目录
峥嵘life
androidAndroid系统apkandroidandroidstudiogradle
Android系统apk源码目录结构匹配成AndroidStudio目录本文针对系统源码apk开发,一般是拥有整个Android源码的开发。系统apk源码目录结构匹配成AndroidStudio目录的好处:1、能够方便使用Studio查看代码、修改代码;2、并且修改后容易对比,不用错开目录对比;3、导入相关类库和系统签名文件,可以直接编译出系统应用。一、Android系统源码默认目录结构和Stud
- Android源码分析之消息机制
AN_9c94
说明:本文是基于Android6.0源码来分析的这片文章主要是从源码的角度来分析Android中的消息机制是如何运行的,并不会介绍如何使用Handler。Android的消息机制可以说是Android的血液,流淌在不同的app之间,催动这各种事件有序的执行。Android进程在启动的时候会调用ThreadActivity的main方法,从main方法中我们可以看出,Android的app进程启动以
- Android13源码下载及全编译流程
demodashi666
Android系统
目录一、源码下载1.1、配置要求1.1.1、硬件配置要求1.1.2、软件要求1.2、下载环境搭建1.2.1、依赖安装1.2.2、工具安装1.2.3、git配置1.2.4、repo配置1.3、源码下载1.3.1、明确下载版本1.3.2、替换为清华源1.3.3、初始化仓库并指定分支1.3.4、同步全部源码二、Android源码编译2.1、编译环境搭建2.2、全编译2.2.1、初始化编译环境2.2.2、
- Android源码中示例代码的查看方式
Mr_Tony
JetPackandroid
一、前言在实际开发中查看官方api定义的时候会看到如下内容其中如下内容是代码示例:Samples:androidx.compose.runtime.samples.rememberUpdatedStateSampleWithDisposableEffect//Unresolvedandroidx.compose.runtime.samples.rememberUpdatedStateSampleW
- 消息机制--Handler、Looper、MessageQueue机制
erki_stwee
songmiaomiaoAndroid中一切皆为消息,包括触摸事件和试图绘制机制,刷新,显示都是消息。Android源码查询消息机制总览Handler机制发送和处理消息。Handler的创建Handler()Handler(Callbackcallback)Handler(Looperlooper)Handler(Looperlooper,Callbackcallback)Handler(bool
- Android源码分析:Activity启动流程
LeaYw
分析流程基于Android8.0源码一般情况下我们通过Activity中的startActivity方法启动一个Activity。这个流程中涉及一下几个类:android.app.Activityandroid.app.Instrumentationcom.android.server.am.ActivityManagerServicecom.android.server.am.ActivityS
- 自定义 ADB 指令
kkklzc
adbandroid
adb命令源码位于frameworks\base\cmds\在编译Android源码的时候,build/make/target/product/base.mk文件下将指令编译进去。PRODUCT_PACKAGES+=\20-dns.conf\95-configured\org.apache.http.legacy.boot\appwidget\appops\am\android.policy\an
- Android SystemUI的客制化 (2)
poulwalker
Android系统的客制化开发androidSystemUIsystemui客制化
本章主要探讨SYstemUI如何将从源码中拷贝出来,放在AndroidStudio中编译上前我们了解了Android源码如何下载,以及对SystemUI有个大概的了解,这期我们主要讲解上期抛出来的问题,即如何将AndroidSystemUI应用转成AndroidStudio工程项目文章目录前言一、第一步:编译源码的SystemUI应用1、编译源码SystemUI模块2、编译Android源码二、第
- android源码--view创建原理总结
神迹12
一、android界面构成android窗口组成.pngActivity:控制模型,控制Window。Window:承载模型,负责承载视图(View)。View:显示模型,用于显示。ViewRoot(ViewRootImpl):是连接WindowManager和DecorView的纽带。二、View创建整体流程总结1、在ActivityThread的performLaunchActivity中调用
- AOSP 源码整编单编
迷途小码农h
《AOSP源码下载》完成后,就可以开编了。整编整编,顾名思义就是编译整个Android源码,最终out目录会生成几个重要的镜像文件,其中有system.img、userdata.img、ramdisk.img等,这些是可以刷机的。初始化编译环境项目目录,打开终端,输入命令:sourcebuild/envsetup.sh选择编译目标命令:lunch输出:You'rebuildingonLinuxLu
- Android源码设计模式解析与实战第2版笔记(五)
VaIOReTto1
设计模式笔记设计模式笔记javaandroid
第七章时势造英雄–策略模式策略模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全地封装多种同一类型的操作时。出现同一抽象类有多个子类,而又需要使用if-else或者switch-case来选择具体子类时。策略模式的UML类图Contex
- Android源码设计模式解析与实战第2版笔记(四)
VaIOReTto1
设计模式笔记android设计模式笔记java
第三章自由扩展你的项目–Builder模式Builder模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式的使用场景相同的方法,不同的执行顺序,产生不同的事件结果时多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适初始化一个对象特别复杂,如
- Android定位backtrace地址
bug猎人
linux运维服务器
一,backtrace地址定位方式shell指令如下:#cd[Android源码根目录]#./prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-addr2line[address]-e[symbolsso]-f-c注意:一定要使用symbol库。二,新手用例示范手写一个空指针访问内存简单样例,如下:#includevoidtest_s
- 《Android源码设计模式解析与实战》读书笔记(六)——抽象工厂模式
禽兽先生不禽兽
Android书籍读书笔记android读书笔记
一不小心都看了十种设计模式了,准备好好整理下,才发现还有个抽象工厂模式是被之前搁置下来的,是时候理解真正的抽象工厂模式了。第六章创建型设计模式——抽象工厂模式抽象工厂模式起源于以前对不同操作系统的图形化解决方案,如不同的操作系统中的按钮和文本框其实现不同,展现效果也不一样,对每一个操作系统而言,其本身就可以构成一个产品类,而按钮和文本框控件又是其下属的产品类。1.定义为创建一组相关或者是相互依赖的
- 《Android源码设计模式解析与实战》读书笔记(三)——建造者模式
禽兽先生不禽兽
Android书籍读书笔记
在使用别人的框架的时候,总觉得那些链式调用的写法看起来很厉害很优雅,一直以为挺难的呢,在书上看到之后才发现也是一种基本设计模式。第三章自由扩展你的项目——Builder模式Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。1.定义将一个复杂对象的构建与它的表示分离开,使同样的构建过程可以创建不同的表示。2.使用场景1)
- eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
- timer cancel方法的一个小实例
alleni123
多线程timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
- MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
- spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
springbean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
- maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
- MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
- ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
- Java编码转义
adminjun
java编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
- Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
- Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
- linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
- jedis连接池使用实例
bijian1013
redisjedis连接池jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
- 关于朋友
bingyingao
朋友兴趣爱好维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
- 【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
- ktap 0.1 released
bookjovi
kerneltracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
- 能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
- 读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
- After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
- Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
- Shell学习 之 变量赋值和引用
daizj
shell变量引用赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
- Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
javajdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
- YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
- Lucene使用说明
dyy_gusi
Lucenesearch分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
- 学习编程并不难,做到以下几点即可!
gcq511120594
数据结构编程算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
- Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
javaC++finalize()堆栈内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
- 第二章 Nginx+Lua开发入门
jinnianshilongnian
nginxlua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
- MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
- Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
- WEB开发编程的职业生涯4个阶段
shw3588
编程Web工作生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
- 遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj