动态

动态库和静态库的制作与使用 【转载】原文链接https://www.cnblogs.com/WindSun/p/11287927.html

瘦欲@ 提交于 2019-12-02 19:59:12
概述 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。 静态函数库:   这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。 动态函数库:   这类库的名字一般是libxxx.so,动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。而且如果多个应用程序都要使用同一函数库,动态库就非常适合,可以减小应用程序的体积。 Linux静态函数库的创建和使用 例程add.h add.c sub.h sub.c main.c: add.h #ifndef ADD_H #define ADD_H int add(int x,int y);

浅谈Android虚拟机的动态加载技术

前提是你 提交于 2019-12-02 19:34:46
Android虚拟机的动态加载技术分为两种: 一种是加载基于NDK的so库;另一种是加载用java语言开发的zip包 。我今天主要讨论后者。 先简单说明一下so库加载。 NDK的执行效率很高,加密性很好,但同时开发入门难度大,一般用于加解密、数学运算等场合 。so的加载很简单,如果APK发布时已经携带了so文件,只需要在加载时调用 System.loadLibrary(libName) 方法即可。由于软件的安装目录中存放so的目录是没有写权限的,开发者不能更改该目录的内容,所以如果要动态加载存放在其他地方的so文件,用 System.load(pathName) 方法即可。 现在我们重点来看一下如何用java开发android的动态包。之所以前面称之为zip包,是因为 jar和apk其实都是zip格式的 。android虚拟机支持这两种文件后缀的包。 android虚拟机支持加载zip包中的dex格式的代码文件 。所以我们要用到一个很重要的类 DexClassLoader ,这个类是动态加在技术的关键。提到动态加载,还需要用到的一个就是 java的反射技术 ,下面就举一个调用伪代码: DexClassLoader dcl = new DexClassLoader( zip文件所在绝对路径 , zip文件所在目录 , 默认加载so所在目录 ,

Java动态代码

烈酒焚心 提交于 2019-12-02 19:21:15
比较C++和java ,后者是编译成java class文件,执行时动态生产java类,所以就有泛型时不能通过设置值就确定了具体的class类型,也有了动态生产可执行的方法和类,这里持续记录 --------------------------------- 一 JDK动态代理 为了方便理解动态代理 ,我先一句话说明白静态代理: 就是代理类和被代理类都继承一个接口,代理类里有个被代理类的field,暴露给外界的时代理类,代理类的每个方法都执行一下代理的逻辑,再调用被代理类。 开始说jdk的动态代理,还是需要一个接口类,就是把原来代码里直接的 被代理类.方法()的调用方式, 换成了反射方式调用,代码的编写上少了许多,不需要每个方法都写一遍了。 二 cglib动态生成类来实现代理模式: public class MainTest5 { public static void main(String[] args) { if (true) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(OOMObject.class); enhancer.setUseCache(false); enhancer.setCallback(new MethodInterceptor() { public Object intercept

MyBatis(三)动态SQL与缓存

断了今生、忘了曾经 提交于 2019-12-02 19:04:52
一、动态SQL语句 准备工作: public class User { private int id; private String lastName; private int sex; 1、if 语句 说明: if语句,可以动态的根据你的值来决定,是否需要动态的添加查询条件。 方法代码: public interface UserMapper { /** * 根据用户的lastName属性和sex属性查询用户信息<br/> * 前提条件是lastName属性和sex属性值都合法。<br/> * 如果lastName属性和sex属性哪个不合法,就不要加入查询条件 */ public List<User> queryUserByNameAndSex(User user); } 配置信息: <select id="queryUserByNameAndSex" resultType="com.webcode.pojo.User"> select id,last_name lastName,sex from t_user where <!-- 做if判断 --> <if test="lastName != null"> last_name like concat('%',#{lastName},'%') </if> <if test="sex == 0 || sex == 1"> and

thinkphp 动态配置

北城以北 提交于 2019-12-02 18:32:57
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数。 设置新的值: C('参数名称','新的参数值'); 例如,我们需要动态改变数据缓存的有效期的话,可以使用 // 动态改变缓存有效期 C ( 'DATA_CACHE_TIME' , 60 ); 动态配置赋值仅对当前请求有效,不会对以后的请求造成影响。 动态改变配置参数的方法和读取配置的方法在使用上面非常接近,都是使用C方法,只是参数的不同。 也可以支持二维数组的读取和设置,使用点语法进行操作,如下: // 获取已经设置的参数值 C ( 'USER_CONFIG.USER_TYPE' ); //设置新的值 C ( 'USER_CONFIG.USER_TYPE' , 1 ); 来源: https://www.cnblogs.com/furuihua/p/11757898.html

js动态改变css伪类样式

匿名 (未验证) 提交于 2019-12-02 16:56:17
js动态改变css伪类样式 首先我们来看下页面上需要实现的基本效果,如下图所示: 因此我们可以使用如下js代码来试试看,是否能使用js改变伪类?如下代码所示: $(function() { $('.listnav li').click(function(){ var index = $(this).index(); var offset = 11; // 左侧偏移 11像素 var imgWidth = 240; // 图片的宽度是240 var pos = 0; // 因此第一个tab项的居中位置就是 240/2 + 11 if (index === 0) { pos = imgWidth / 2 + offset + 'px'; } else { /* 如果不是第一个tab项的话,那么计算方式就变为如下: pos = imgWidth / 2 + offset + imgWidth * index + 33 * index */ pos = imgWidth / 2 + offset + imgWidth * index + 33 * index; } console.log(pos); $(".tab-content:before, .tab-content:after").css({ "left": pos }); }); }); 如上代码并不生效,因此可以断定使用

css实现动态正在加载图标

匿名 (未验证) 提交于 2019-12-02 16:56:17
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34223398/article/details/84286645 利用keyframes动画实现, .er-button-loading .er-button-style:before { content: "\f110"; font-family: "FontAwesome"; display: inline-block; z-index: 2; background: inherit; font-size: 1.4em; padding: inherit; -webkit-animation: loading 1s step-start; -webkit-animation-iteration-count: infinite;///播放动画次数,infinite表示循环播放 } @keyframes loading { 0%{ transform: rotate(0deg); transform-origin: center;///旋转的基点位置,center表示从中间开始旋转 } 11%{ transform: rotate(40deg); transform-origin: center; } 22%{ transform: rotate(80deg);

代理模式 静态代理与动态代理

荒凉一梦 提交于 2019-12-02 15:43:50
代理模式 1 、什么是代理模式?   真实生活中有一种房屋中介是这样的,租客根本就不知道房东是谁,一切签合同、交租金、交钥匙等操作都直接和中介公司发生。我们把这种模式称之为代理模式。   代理模式:客户端直接使用的都是代理对象,不知道目标对象是谁,此时代理对象可以在客户端和目标对象之间起到中介的作用。 2 、特点   代理对象完全包含目标对象,客户端使用的都是代理对象的方法,和目标对象没有直接关系 3 、职责   把不是目标对象该做的事情从目标对象上撇开 —— 职责清晰。 4 、分类   静态代理:在程序运行前就已经存在代理类的字节码文件,代理对象和目标对象的关系在运行前就确定了。   动态代理:动态代理类是在程序运行期间由 JVM 通过反射等机制动态的生成的,所以不存在代理类的字节码文件。代理对象和真实对象的关系是在程序运行事情才确定的。    1. 静态代理 创建一个接口 PPP 被代理的类 Subject 继承接口方法 代理类 Ss 继承接口方法 测试类 Ptest 运行结果 2. 动态代理 (1) JDK 动态代理 创建一个接口 创建代理类 测试类 (2) CGLIB 创建代理类 测试类 来源: https://www.cnblogs.com/qinzhenyu/p/11752294.html

动态时钟

自闭症网瘾萝莉.ら 提交于 2019-12-02 15:27:57
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="js/jquery.js"></script> </head> <body> <div id="s2"> </div> <script> $(function(){ setInterval( function(){ var date = new Date();var one = date.getSeconds();var two = date.getMinutes();var three = date.getHours(); $("#s2").text(three+":"+two+":"+one); } , 1000); }); </script> </body> </html> 来源: https://blog.csdn.net/weixin_45747093/article/details/102779531

JAVA动态代理 你真的完全了解Java动态代理吗?

只谈情不闲聊 提交于 2019-12-02 14:40:20
摘自: https://www.cnblogs.com/chenyanbin/p/11743482.html JAVA动态代理 你真的完全了解Java动态代理吗? 网上讲JAVA动态代理,说的天花乱坠,发现一篇文章写的通俗易懂,特意转载过来 原文地址:https://www.jianshu.com/p/95970b089360   动态代理看起来好像是个什么高大上的名词,但其实并没有那么复杂,直接从字面就很容易理解。动态地代理,可以猜测一下它的含义,在运行时动态地对某些东西代理,代理它做了其他事情。先不去搞清楚这个动态代理真正的含义,我们来举个生动的例子来理解下它到底做了什么。 例子 #   一个程序员Developer,他会开发code,他调试debug。 程序员有很多分类,其中有Java程序员JavaDeveloper,他会开发Java代码,会调试Java代码。 但是呢,有个叫Zack的程序员它在开发之前,会祈祷一下,这样他开发的代码就不会有bug。 Zack的这种“特异功能”是后天练出来的,并没有哪种程序员有这种特性。虽然我们也可以定义一个拥有这样特性的程序员,但是拥有各种乱七八糟特性的程序千千万。我们什么时候才能定义完,而能保证不漏呢? 其实我们没有必要去定义他,因为他是后天养成的,我们应该在这个程序员的成长期去实现这个特性,而不是在他出生之前定义。