uni-app总结

内容更新时间:【2021-07-20

1、解决input输入后格式化生效问题、或闪啊闪的问题

// template


// js
changeInput() {
    this.$nextTick(() => {
        // code demo
        this.value = 0;
    });
}

2、popup弹框,底部适配及全屏(解决chrome、safari顶层遮盖)

底部适配可以参考官方论坛或者百度,修改mainif.json或者自行重写组件样式即可

全屏适配各个浏览器(主要是高度100%),重新修改组件,找到对应的class然后添加 height: 100%;

.uni-transition {
    height: 100%;
}
.uni-popup__wrapper-box {
    height: 100%;
}

3、在小程序当中,连续点击页面跳转报错

因为navigateTo在小程序当中缓存区只能存储有限个,且不会覆盖或更新
所以只能自己根据需求选择使用navigateTo或者redirectTo

4、NFC功能,onLoad中调用NFCListenAndroid,onShow中调用readData

// 包路径
const package_NdefRecord = "android.nfc.NdefRecord";
const package_NdefMessage = "android.nfc.NdefMessage";
const package_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
const package_TAG_DISCOVERED = "android.nfc.action.TAG_DISCOVERED";
const package_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
const package_Intent = "android.content.Intent"; 
const package_Activity = "android.app.Activity"; 
const package_PendingIntent = "android.app.PendingIntent"; 
const package_IntentFilter = "android.content.IntentFilter"; 
const package_NfcAdapter = "android.nfc.NfcAdapter"; 
const package_Ndef = "android.nfc.tech.Ndef"; 
const package_NdefFormatable = "android.nfc.tech.NdefFormatable"; 
const package_Parcelable = "android.os.Parcelable"; 
const package_String = "java.lang.String"; 

let NfcAdapter;
let NdefRecord;
let NdefMessage;
let main;
let waiting;
let currentNFCInfo = [];
let readyWriteData = false; // 开启写
let readyRead = false; // 开启读
let noNFC = false; // 支持NFC
const techListsArray = [
    ["android.nfc.tech.IsoDep"],
    ["android.nfc.tech.NfcA"],
    ["android.nfc.tech.NfcB"],
    ["android.nfc.tech.NfcF"],
    ["android.nfc.tech.Nfcf"],
    ["android.nfc.tech.NfcV"],
    ["android.nfc.tech.NdefFormatable"],
    ["android.nfc.tech.MifareClassi"],
    ["android.nfc.tech.MifareUltralight"],
];
export default {
    toast: function(content){
        uni.showToast({
            title: content,
            icon: "none"
        });
        // plus.nativeUI.toast(msg);
    },
    NFCInit: function() {
        let that = this;
        function judgePlatform(){
            switch ( plus.os.name ) {
                case "Android":  
                // Android平台: plus.android.*  
                that.NFCListenAndroid();
                break;
                case "iOS":  
                // iOS平台: plus.ios.*  
                that.toast("暂不支持!");
                break;
                default:  
                // 其它平台  
                that.toast("暂不支持!");
                break;
            }
        }
    },
    NFCListenAndroid: function() {
        let that = this;
        try {
            main = plus.android.runtimeMainActivity();
            let Intent = plus.android.importClass(package_Intent);
            let Activity = plus.android.importClass(package_Activity);
            let PendingIntent = plus.android.importClass(package_PendingIntent);
            let IntentFilter = plus.android.importClass(package_IntentFilter);
            NfcAdapter = plus.android.importClass(package_NfcAdapter);
            let nfcAdapter = NfcAdapter.getDefaultAdapter(main);
            // let Uri = plus.android.importClass("android.net.Uri");
            // let Bundle = plus.android.importClass("android.os.Bundle");
            // let Handler = plus.android.importClass("android.os.Handler");
            
            if (nfcAdapter == null) {
                that.toast("设备不支持NFC!");
                noNFC = true;
                return ;
            } else if (!nfcAdapter.isEnabled()) {
                that.toast("请在系统设置中先启用NFC功能!");
                noNFC = true;
                return ;
            } else {
                noNFC = false;
                // nfcAdapter.enableForegroundDispatch(main, pendingIntent, IntentFilter, techListsArray);
            }
            
            let ndef = new IntentFilter(package_NDEF_DISCOVERED);
            ndef.addDataType("*/*");
            // ndef.addDataType("/");
            let tag = new IntentFilter(package_TAG_DISCOVERED);
            let tech = new IntentFilter(package_TECH_DISCOVERED);
            let intentFiltersArray = [ndef, tag, tech];
            
            let intent = new Intent(main, main.getClass());
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            let pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);
            
            plus.globalEvent.addEventListener("newintent", function() {
                console.error("newintent running");
                // 轮询调用 NFC
                setTimeout(() => { that.NFCRuning(); }, 1000);
            }, false);
            plus.globalEvent.addEventListener("pause", function(e) {
                console.error("pause running");
                if (nfcAdapter) {
                    // 关闭前台调度系统 恢复默认状态
                    nfcAdapter.disableForegroundDispatch(main);
                }
            }, false);
            plus.globalEvent.addEventListener("resume", function(e) {
                console.log("resume running");
                if (nfcAdapter) {
                    // 开启前台调度系统 优于所有其他NFC
                    nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
                }
            }, false);
            
            nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
        } catch(e){
            console.error(e);
        }
    },
    readData: function() {
        let that = this;
        if(noNFC){
            that.toast("请检查设备是否支持并开启 NFC 功能!");
            return ;
        }
        readyRead = true;
        that.toast("请将NFC标签靠近!");
        setTimeout(() => { that.NFCRuning(null); }, 1000);
    },
    writeData: function(writeBody) {
        let that = this;
        if(noNFC){
            that.toast("请检查设备是否支持并开启 NFC 功能!");
            return ;
        }
        // 轮询件
        readyWriteData = true;
        that.toast("请将NFC标签靠近!");
        setTimeout(() => { that.NFCRuning(writeBody); }, 1000);
    },
    NFCRuning: function(writeBody) {
        let that = this;
        NdefRecord = plus.android.importClass(package_NdefRecord);
        NdefMessage = plus.android.importClass(package_NdefMessage);
        // let main = plus.android.runtimeMainActivity();
        let intent = main.getIntent();
        console.log("action type:" + intent.getAction());
        if(package_TECH_DISCOVERED == intent.getAction()) {
            if(readyWriteData){
                that.NFCWrite(intent, writeBody);
                readyWriteData = false;
            } else if(readyRead){
                that.NFCRead(intent);
                readyRead = false;
            } else {
                console.log("what happend!");
            }
        }
    },
    NFCRead: function(intent) {
        let that = this;
        waiting = plus.nativeUI.showWaiting("请将NFC标签靠近!");
        waiting.setTitle("请勿移开标签\n正在读取数据...");
        try {
            let content = "";
            waiting.close();
            // let tag = plus.android.importClass("android.nfc.Tag");
            // let Parcelable = plus.android.importClass("android.os.Parcelable");
            // let rawmsgs = intent.getParcelableArrayExtra("android.nfc.extra.NDEF_MESSAGES");
            let rawmsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
            // let tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            let tagid = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
            console.log(that.ByteArray2HexString(tagid));
            //手机终端编码
            console.log(plus.device.imei);
            if (rawmsgs != null && rawmsgs.length > 0) {
                waiting.close();
                console.log(rawmsgs);
                let records = rawmsgs[0].getRecords();
                let result = records[0].getPayload();
                if (result != null) {
                    currentNFCInfo = plus.android.newObject(package_String, result);
                }
            } else {
                console.log("NFC获取失败");
                that.toast("NFC获取失败!");
            }
        } catch(e) {
            console.log("NFC获取失败,丢出异常", e);
            readyRead = true;
            waiting.close();
        }
    },
    NFCWrite: function(intent, content) {
        let that = this;
        if (!content) {
            content = {
                id: 1,
                name: nfc,
                stie: nfc.com
            };
        }
        waiting = plus.nativeUI.showWaiting("请将NFC标签靠近!");
        waiting.setTitle("请勿移开标签\n正在写入数据...");
        try{
            let textBytes = plus.android.invoke(content, "getBytes");
            // image/jpeg text/plain
            let textRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, plus.android.invoke("text/plain", "getBytes"), plus.android.invoke("", "getBytes"), textBytes);
            let message = new NdefMessage([textRecord]);
            let Ndef = plus.android.importClass(package_Ndef);
            let NdefFormatable = plus.android.importClass(package_NdefFormatable);
            let tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            let ndef = Ndef.get(tag);
            if (ndef != null) {
                let size = message.toByteArray().length;
                console.log("size=" + size);
                ndef.connect();
                if (!ndef.isWritable()) {
                    that.toast("tag不允许写入");
                    waiting.close();
                    return ;
                }
                if (ndef.getMaxSize() < size) {
                    that.toast("文件大小超出容量");
                    waiting.close();
                    return ;
                }
                ndef.writeNdefMessage(message);
                waiting.close();
                that.toast("写入数据成功.");
                return ;
            } else {
                let format = NdefFormatable.get(tag);
                if (format != null) {
                    try {
                        format.connect();
                        format.format(message);
                        that.toast("格式化tag并且写入message");
                        waiting.close();
                        return ;
                    } catch (e) {
                        that.toast("格式化tag失败.");
                        waiting.close();
                        return ;
                    }
                } else {
                    that.toast("Tag不支持NDEF");
                    waiting.close();
                    return ;
                }
            }
        } catch(e) {
            console.log("error=" + e);
            waiting.close();
            alert("写入失败");
        }
    },
    //将byte[] 转为Hex
    Bytes2HexString: function(arrBytes) {
        let that = this;
        let str = "";
        for (let i = 0; i < arrBytes.length; i++) {
            let tmp;
            let num = arrBytes[i];
            if (num < 0) {
                //Java中数值是以补码的形式存在的,应用程序展示的十进制是补码对应真值。补码的存在主要为了简化计算机底层的运算,将减法运算直接当加法来做
                tmp = (255 + num + 1).toString(16);
            } else {
                tmp = num.toString(16);
            }
            if (tmp.length == 1) {
                tmp = "0" + tmp;
            }
            str += tmp;
        }
        return str;
    },
    ByteArray2HexString: function(inarray) {
        let that = this;
        let i, j, tmp;
        let hex = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A","B", "C", "D", "E", "F" ];
        let out = "";
        console.log("here");
        for (j = 0; j < inarray.length; ++j) {
            tmp =  inarray[j] & 0xff;
            i = (tmp >> 4) & 0x0f;
            out += hex[i];
            i = tmp & 0x0f;
            out += hex[i];
        }
        return out;
    },
    readNfcV: function(intent) {
        let that = this;
        let NfcV = plus.android.importClass('android.nfc.tech.NfcV');
        let tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        // console.log(tag);
        console.log(NfcV.get(tag));
        let tech = NfcV.get(tag);
        if (tech != null) {
            try {
                tech.connect();
                console.log(tech.isConnected());
                if (tech.isConnected()) {
                    console.log('卡片字节数组ID:' + tag.getId());
                    let tagUid = tag.getId();
                    let buffer = [];
                    buffer[0] = 0x22;
                    buffer[1] = 0x23;
                    for (let i in tagUid) {
                        // console.log(tagUid[i]);
                        buffer.push(tagUid[i]);
                    }
                    buffer[10] = 0;
                    buffer[11] = 0;
                    console.log(buffer);
                    let res = tech.transceive(buffer);
                    if (res != null) {
                        console.log('标记:' + res);
                        if (String.fromCharCode(res[1]) == 'H' && String.fromCharCode(res[2]) == 'J' && String.fromCharCode(res[3]) == 'I') {
                            let blockAddress = 1;
                            let blocknum = res[4];
                            let cmd = [];
                            cmd[0] = 0x22;
                            cmd[1] = 0x23;
                            for (let i in tagUid) {
                                // console.log(tagUid[i]);
                                cmd.push(tagUid[i]);
                            }
                            cmd[10] = blockAddress & 0x0ff;
                            cmd[11] = (blocknum - 1) & 0x0ff;
                            console.log(cmd);
                            let response = tech.transceive(cmd);
                            let str = ""  
                            for(let j in response){
                                // console.log(typeof response[j])  
                                str +=this.bytesToString(response[j]);
                            }
                            console.log(str);
    
                        }
                    }
    
                }
            } catch (e) {
                //TODO handle the exception
                console.log("读取异常", e;)
            }
        } else {
            this.readNfc(intent);
        }
    },
    writeNfcV: function(intent) {
        let that = this;
        try {
            waiting = plus.nativeUI.showWaiting('请将NFC标签靠近!');
            waiting.setTitle('请勿移开标签\n正在写入...');
            // let text = document.getElementById('text').value;
            console.log('text=' + this.writeCode);
            let textBytes = plus.android.invoke(this.writeCode, 'getBytes');
            let textRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, plus.android.invoke('text/plain', 'getBytes'), plus.android  
                .invoke('', 'getBytes'), textBytes);
            let message = new NdefMessage([textRecord]);
            let NfcV = plus.android.importClass('android.nfc.tech.NfcV');
            // let NdefFormatable = plus.android.importClass('android.nfc.tech.NdefFormatable');
            let tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            let nfcv = NfcV.get(tag);
            console.log('标签格式:' + nfcv);
            let bytesId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
            console.log('bytesId:' + bytesId);
            // console.log(nfcv.getTag().getId())  
            if (nfcv != null) {
                nfcv.connect();
                let size = nfcv.getMaxTransceiveLength();
                this.writeCode = '123456';//编辑内容  
                let strVal = this.writeCode;
                console.log("zijie:" + this.stringToByte(strVal))  
                let strValByte = this.stringToByte(strVal);
                console.log(strValByte.length)  
                console.log('最大字节数:' + size);
                let cmd = [];
                cmd[0] = 0x22;
                cmd[1] = 0x21;
                for (let i in bytesId) {
                    // console.log(tagUid[i]);
                    cmd.push(bytesId[i]);
                }
                console.log(cmd);
                let count = parseInt(strValByte.length + 3)/4 ;//存block数  
                console.log("count:"+count);
                let datav = new Array((count+1)*4);
                console.log("datav:"+datav)  
                // let mark = [];
                // mark[0]="72"; //H  
                // mark[1] = "74";//J  
                // mark[2] = "73";//I  
                // mark[3]=count;
                datav[0] = 72;
                datav[1] = 74;
                datav[2] = 73;
                datav[3] = count;
                // console.log("datav01:"+datav)  
                for(let j=0;j
                    
                    
  • 了解 UNPKG:前端开发者的包管理利器 小于负无穷 前端javascripttypescriptcsshtml5node.js
    在现代前端开发中,JavaScript包管理和模块化是至关重要的,而npm则是最流行的JavaScript包管理器之一。不过,随着前端项目复杂性的增加,有时候我们希望快速引入外部依赖,而无需本地安装和构建。此时,CDN(内容分发网络)成为了一种方便快捷的解决方案,而UNPKG就是这种方式中的佼佼者。什么是UNPKG?UNPKG是一个基于npm的内容分发网络(CDN),它允许开发者直接通过URL从n
  • HTML中"bgcolor"与"background-color"的区别 Sardar_ html
    bgcolor只是标签属性,而backgroud更多作为css的样式属性。它们俩大多数情况下效果完全相同。但在标签下效果不同。不支持bgcolor属性,只能用style标签添加CSS样式。作为table的属性而言:HelloWorld!和HelloWorld!效果完全相同。作为body属性而言:效果完全相同。不过个人推荐统一用CSS样式进行控制,把style统一放到.css文件中。backgrou
  • 2019-05-29 vue-router的两种模式的区别 Kason晨
    1、大家都知道vue是一种单页应用,单页应用就是仅在页面初始化的时候加载相应的html/css/js一单页面加载完成,不会因为用户的操作而进行页面的重新加载或者跳转,用javascript动态的变化html的内容优点:良好的交互体验,用户不需要刷新页面,页面显示流畅,良好的前后端工作分离模式,减轻服务器压力,缺点:不利于SEO,初次加载耗时比较多2、hash模式vue-router默认的是hash
  • 清除 Conda 缓存 Dmatteratall conda缓存
    清除Conda缓存:cssCopycodecondaclean--allcondaclean--all命令将会清除Conda缓存和临时文件,而不会删除已经安装的软件包和环境。它主要用于清理不必要的缓存和临时文件以释放磁盘空间。
  • sql统计相同项个数并按名次显示 朱辉辉33 javaoracle
    现在有如下这样一个表: A表 ID Name time ------------------------------ 0001 aaa 2006-11-18 0002 ccc 2006-11-18 0003 eee 2006-11-18 0004 aaa 2006-11-18 0005 eee 2006-11-18 0004 aaa 2006-11-18 0002 ccc 20
  • Android+Jquery Mobile学习系列-目录 白糖_ JQuery Mobile
    最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用。向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以基于html页面开发,不用去学习Android自带的七七八八的控件。然后加上Jquery mobile的样式渲染和事件等,就能非常方便的做动态应用了。   从现在起,往后一段时间,我打算
  • 如何给线程池命名 daysinsun 线程池
            在系统运行后,在线程快照里总是看到线程池的名字为pool-xx,这样导致很不好定位,怎么给线程池一个有意义的名字呢。参照ThreadPoolExecutor类的ThreadFactory,自己实现ThreadFactory接口,重写newThread方法即可。参考代码如下:     public class Named
  • IE 中"HTML Parsing Error:Unable to modify the parent container element before the 周凡杨 html解析errorreadyState
      错误: IE 中"HTML Parsing Error:Unable to modify the parent container element before the child element is closed"     现象: 同事之间几个IE 测试情况下,有的报这个错,有的不报。经查询资料后,可归纳以下原因。
  • java上传 g21121 java
    我们在做web项目中通常会遇到上传文件的情况,用struts等框架的会直接用的自带的标签和组件,今天说的是利用servlet来完成上传。 我们这里利用到commons-fileupload组件,相关jar包可以取apache官网下载:http://commons.apache.org/ 下面是servlet的代码: //定义一个磁盘文件工厂 DiskFileItemFactory fact
  • SpringMVC配置学习 510888780 springmvc
    spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。   一、Spring MVC环境搭建:(Spring 2.5.6 + Hi
  • spring mvc-jfreeChart 柱图(1) 布衣凌宇 jfreechart
    第一步:下载jfreeChart包,注意是jfreeChart文件lib目录下的,jcommon-1.0.23.jar和jfreechart-1.0.19.jar两个包即可; 第二步:配置web.xml; web.xml代码如下 <servlet>     <servlet-name>jfreechart</servlet-nam
  • 我的spring学习笔记13-容器扩展点之PropertyPlaceholderConfigurer aijuans Spring3
    PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java P
  • java 线程池使用 Runnable&Callable&Future antlove javathreadRunnablecallablefuture
    1. 创建线程池 ExecutorService executorService = Executors.newCachedThreadPool();   2. 执行一次线程,调用Runnable接口实现 Future<?> future = executorService.submit(new DefaultRunnable()); System.out.prin
  • XML语法元素结构的总结 百合不是茶 xml树结构
    1.XML介绍1969年   gml (主要目的是要在不同的机器进行通信的数据规范)1985年   sgml  standard generralized markup language1993年   html(www网)1998年  xml   extensible markup language
  • 改变eclipse编码格式 bijian1013 eclipse编码格式
    1.改变整个工作空间的编码格式         改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式。         Eclipse->window->preferences->General->workspace-
  • javascript中return的设计缺陷 bijian1013 JavaScriptAngularJS
    代码1: <script> var gisService = (function(window) { return { name:function () { alert(1); } }; })(this); gisService.name(); &l
  • 【持久化框架MyBatis3八】Spring集成MyBatis3 bit1129 Mybatis3
    pom.xml配置 Maven的pom中主要包括: MyBatis MyBatis-Spring Spring MySQL-Connector-Java Druid applicationContext.xml配置   <?xml version="1.0" encoding="UTF-8"?> &
  • java web项目启动时自动加载自定义properties文件 bitray javaWeb监听器相对路径
    创建一个类 public class ContextInitListener implements ServletContextListener 使得该类成为一个监听器。用于监听整个容器生命周期的,主要是初始化和销毁的。 类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类。 <listener> <des
  • 用nginx区分文件大小做出不同响应 ronin47
    昨晚和前21v的同事聊天,说到我离职后一些技术上的更新。其中有个给某大客户(游戏下载类)的特殊需求设计,因为文件大小差距很大——估计是大版本和补丁的区别——又走的是同一个域名,而squid在响应比较大的文件时,尤其是初次下载的时候,性能比较差,所以拆成两组服务器,squid服务于较小的文件,通过pull方式从peer层获取,nginx服务于较大的文件,通过push方式由peer层分发同步。外部发布
  • java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大 bylijinnan java
    package com.ljn.base; import java.util.Arrays; import java.util.Random; public class ContinuousPoker { /** * Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。 * 2-10为数字本身,A为1,J为1
  • 翟鸿燊老师语录 ccii 翟鸿燊
    一、国学应用智慧TAT之亮剑精神A 1. 角色就是人格     就像你一回家的时候,你一进屋里面,你已经是儿子,是姑娘啦,给老爸老妈倒怀水吧,你还觉得你是老总呢?还拿派呢?就像今天一样,你们往这儿一坐,你们之间是什么,同学,是朋友。     还有下属最忌讳的就是领导向他询问情况的时候,什么我不知道,我不清楚,该你知道的你凭什么不知道
  • [光速与宇宙]进行光速飞行的一些问题 comsci 问题
         在人类整体进入宇宙时代,即将开展深空宇宙探索之前,我有几个猜想想告诉大家     仅仅是猜想。。。未经官方证实      1:要在宇宙中进行光速飞行,必须首先获得宇宙中的航行通行证,而这个航行通行证并不是我们平常认为的那种带钢印的证书,是什么呢? 下面我来告诉
  • oracle undo解析 cwqcwqmax9 oracle
    oracle undo解析2012-09-24 09:02:01     我来说两句       作者:虫师收藏    我要投稿 Undo是干嘛用的?         &nb
  • java中各种集合的详细介绍 dashuaifu java集合
    一,java中各种集合的关系图 Collection       接口的接口     对象的集合  ├ List           子接口   &n
  • 卸载windows服务的方法 dcj3sjt126com windowsservice
    卸载Windows服务的方法 在Windows中,有一类程序称为服务,在操作系统内核加载完成后就开始加载。这里程序往往运行在操作系统的底层,因此资源占用比较大、执行效率比较高,比较有代表性的就是杀毒软件。但是一旦因为特殊原因不能正确卸载这些程序了,其加载在Windows内的服务就不容易删除了。即便是删除注册表中的相 应项目,虽然不启动了,但是系统中仍然存在此项服务,只是没有加载而已。如果安装其他
  • Warning: The Copy Bundle Resources build phase contains this target's Info.plist dcj3sjt126com iosxcode
        http://developer.apple.com/iphone/library/qa/qa2009/qa1649.html Excerpt: You are getting this warning because you probably added your Info.plist file to your Copy Bundle
  • 2014之C++学习笔记(一) Etwo C++EtwoEtwoiterator迭代器
            已经有很长一段时间没有写博客了,可能大家已经淡忘了Etwo这个人的存在,这一年多以来,本人从事了AS的相关开发工作,但最近一段时间,AS在天朝的没落,相信有很多码农也都清楚,现在的页游基本上达到饱和,手机上的游戏基本被unity3D与cocos占据,AS基本没有容身之处。so。。。最近我并不打算直接转型
  • js跨越获取数据问题记录 haifengwuch jsonpjsonAjax
    js的跨越问题,普通的ajax无法获取服务器返回的值。   第一种解决方案,通过getson,后台配合方式,实现。 Java后台代码: protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String ca
  • 蓝色jQuery导航条 ini JavaScripthtmljqueryWebhtml5
    效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/39.htmHTML文件代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery鼠标悬停上下滑动导航条 - 柯乐义<
  • linux部署jdk,tomcat,mysql kerryg jdktomcatlinuxmysql
    1、安装java环境jdk:     一般系统都会默认自带的JDK,但是不太好用,都会卸载了,然后重新安装。    1.1)、卸载:      (rpm -qa :查询已经安装哪些软件包;        rmp -q 软件包:查询指定包是否已
  • DOMContentLoaded VS onload VS onreadystatechange mutongwu jqueryjs
    1. DOMContentLoaded 在页面html、script、style加载完毕即可触发,无需等待所有资源(image/iframe)加载完毕。(IE9+) 2. onload是最早支持的事件,要求所有资源加载完毕触发。 3. onreadystatechange 开始在IE引入,后来其它浏览器也有一定的实现。涉及以下 document , applet, embed, fra
  • sql批量插入数据 qifeifei 批量插入
    hi,   自己在做工程的时候,遇到批量插入数据的数据修复场景。我的思路是在插入前准备一个临时表,临时表的整理就看当时的选择条件了,临时表就是要插入的数据集,最后再批量插入到数据库中。    WITH tempT AS ( SELECT item_id AS combo_id, item_id, now() AS create_date FROM a
  • log4j打印日志文件 如何实现相对路径到 项目工程下 thinkfreer Weblog4j应用服务器日志
    最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下 需求: 用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名
  • linux下mysql-5.6.23.tar.gz安装与配置 笑我痴狂 mysqllinuxunix
    1.卸载系统默认的mysql [root@localhost ~]# rpm -qa | grep mysql mysql-libs-5.1.66-2.el6_3.x86_64 mysql-devel-5.1.66-2.el6_3.x86_64 mysql-5.1.66-2.el6_3.x86_64 [root@localhost ~]# rpm -e mysql-libs-5.1