以前的mark

c++delete和delete[]区别

很多书上都直接说用new申请就用delete释放,用new[]就用delete[]释放,具体原因没有写的太清楚,今天仔细搜索了下关于这两个用法的区别,觉得说的比较好容易理解的是下面的两位链接:
http://anwj336.blog.163.com/blog/static/8941520920106795122306/
http://shokey520.ycool.com/post.4374798.html

c++程序设计书籍

C++程序设计谭浩强 比较不错 适合入门
http://wenku.baidu.com/view/8dc3d27602768e9951e738d6.html

extern C详解

觉得不错的文章:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html

javascript检查日期格式mark下

<pre code_snippet_id="145607" snippet_file_name="blog_20140107_3_8874783" name="code" class="javascript"><script language=jscript>  
function dateValidationCheck(str){  
    var re = new RegExp("^([0-9]{4})[./]{1}([0-9]{1,2})[./]{1}([0-9]{1,2})$");  
    var strDataValue;  
    var infoValidation = true;  
       
    if ((strDataValue = re.exec(str)) != null){  
        var i;  
        i = parseFloat(strDataValue[1]);  
        if (i <= 0 || i > 9999){ // 年  
            infoValidation = false;  
        }  
        i = parseFloat(strDataValue[2]);  
        if (i <= 0 || i > 12){ // 月  
            infoValidation = false;  
        }  
        i = parseFloat(strDataValue[3]);  
        if (i <= 0 || i > 31){ // 日  
            infoValidation = false;  
        }  
    }else{  
        infoValidation = false;  
    }  
   
    if (!infoValidation){  
        alert('請輸入 YYYY/MM/DD 日期格式');  
    }  
    return infoValidation;  
}  
</script></pre><br>  
<br>  
<p></p>  
<pre></pre>  
<pre code_snippet_id="145607" snippet_file_name="blog_20140107_4_1001355" name="code" class="html"><pre code_snippet_id="145607" snippet_file_name="blog_20140107_4_1001355" name="code" class="javascript">function IsInt(v)  
{  
    var vArr = v.match(/^[0-9]+$/);  
    if (vArr == null)  
    {  
        return false;  
    } else {  
        return true;  
    }  
}</pre><pre code_snippet_id="145607" snippet_file_name="blog_20140107_5_9191211" name="code" class="html">日期时间</pre><pre code_snippet_id="145607" snippet_file_name="blog_20140107_6_3269630" name="code" class="html"><pre code_snippet_id="145607" snippet_file_name="blog_20140107_6_3269630" name="code" class="javascript">function check(){  
str = form1.txt.value;  
str = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);  
if (str == null){  
alert('你输入的时间格式无效');  
return false;  
}else if (str[1]>23 || str[3]>59 || str[4]>59){  
alert("你输入的时间格式无效");  
return false  
}else{  
alert("你输入的时间格式有效");  
return true;  
}  
}</pre><br>  
<pre></pre>  
<br>  
2比较全的  
<pre></pre>  
<pre code_snippet_id="145607" snippet_file_name="blog_20140107_7_7555791" name="code" class="html">日期<pre code_snippet_id="145607" snippet_file_name="blog_20140107_7_7555791" name="code" class="javascript">//用于日期的文本框 name = "indate"   
function check1(Form)   
{   
for (i = 0; i < Form.length; i++)   
{   
if (Form.elements[i].value == "")   
{   
alert("请填写完整!")   
Form.elements[i].focus();   
return;   
}   
  
if (Form.elements[i].name == "indate")   
{   
var date = Form.elements[i].value;   
len = date.length;   
var datearray = date.split("-")   
//alert(datearray[1]);   
var year = parseInt(datearray[0]);   
var month = parseInt(datearray[1]);   
var day = parseInt(datearray[2]);   
  
if (len == "")   
{   
alert("时间不能为空");   
return;   
}   
else if (len > 10)   
{   
alert("日期格式不正确");   
return;   
}   
else if (isNaN(year))   
{   
alert("日期格式不正确");   
return;   
}   
else if ((year > 9999) || (year < 100))   
{   
alert("日期格式不正确");   
return;   
}   
else if (isNaN(month))   
{   
alert("日期格式不正确");   
return;   
}   
else if ((month > 12) || (month < 1))   
{   
alert("日期格式不正确");   
return;   
}   
else if (isNaN(day))   
{   
alert("日期格式不正确");   
return;   
}   
else   
{   
switch (month)   
{   
case 1:   
case 3:   
case 5:   
case 7:   
case 8:   
case 10:   
case 12:   
if ((dat < 0) || (day > 31))   
{   
alert("日期格式不正确");   
return;   
}   
break;   
case 4:   
case 6:   
case 9:   
case 11:   
if ((day < 0) || (day > 30))   
{   
alert("日期格式不正确");   
return;   
}   
break;   
default:   
if ((year % 100 == 0) && (year % 4 == 0))   
{   
if ((day < 0) || (day > 29))   
{   
alert("日期格式不正确");   
return;   
}   
}   
else   
{   
if ((day < 0) || (day > 28))   
{   
alert("日期格式不正确");   
return;   
}   
}   
}   
}   
}   
}   
Form.submit();   
}</pre><br>  
<pre></pre>  
<pre code_snippet_id="145607" snippet_file_name="blog_20140107_8_8253902" name="code" class="html">时间类似</pre><pre code_snippet_id="145607" snippet_file_name="blog_20140107_12_489941" name="code" class="html"></pre><pre code_snippet_id="145607" snippet_file_name="blog_20140107_10_6585462" name="code" class="html">3 正则表达式</pre><pre code_snippet_id="145607" snippet_file_name="blog_20140107_11_9235421" name="code" class="html"><pre code_snippet_id="145607" snippet_file_name="blog_20140107_11_9235421" name="code" class="javascript">js正则验证日期时间:  
  
var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;  
  
var isDateTime = reDateTime.test('2012-01-31 09:00:22');  
js正则表达式只验证日期部分:  
  
function isValidDate(val) {  
    //var datePattern = /^\d{4}-\d{1,2}-\d{1,2}$/;  
    var datePattern = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))$/;  
    return datePattern.test(val);  
}  
js正则表达式验证时间部分:  
  
function isValidTime(val) {  
    var datePattern = /^(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;  
    return datePattern.test(val);  
}</pre><br>  
<br>  
<pre></pre>  
<p></p>  
<p></p><pre code_snippet_id="145607" snippet_file_name="blog_20140107_12_489941" name="code" class="html"></pre><p></p>  
      
        <div style="padding-top:20px">           
            <p style="font-size:12px;">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>  
        </div>  
</pre></pre></pre></pre>  

lua string字符串固定格式字符大小写替换

突然一个功能需要用,就开始找资料做,基本能满足自己的功能,mark下
[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
local tmp = "HELLO_WORLD_LUA"  
local first = {}  
local r_first = {}  
while(1) do  
    i,j = string.find(tmp,"_%w")  
    if i == nil then  
        table.insert(r_first, string.lower(tmp))  
        break  
    end  
    if i ~= 0 and i~= 1 then  
        local r = string.sub(tmp, 1, i-1)  
        table.insert(r_first, string.lower(r))  
    end   
    tp = string.sub(tmp, i,j)  
    tmp = string.sub(tmp, j+1,-1)  
    table.insert(first, tp)  
end  
  
local str = ""  
for i,char in pairs(first) do  
    str = str..r_first[i]..char  
end  
str = str..r_first[table.getn(r_first)]  
  
print(str)  

lua检测过滤字

几天弄lua过滤字,找了很多资料,都也有例子,但最后都不能满足我需要的(或许为了防懒人,不愿贴完整代码偷笑),还好,最终基本搞定或许方法比较丑但能用,mark下,欢迎给更好的方法!
因table里面塞满过滤字,关键是包括特殊字符,所以只能自己写函数check,不啰嗦贴代码。
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
local chars = {}  
table.insert(chars, "%^")  
table.insert(chars, "%$")  
table.insert(chars, "%(")  
table.insert(chars, "%)")  
table.insert(chars, "%%")  
table.insert(chars, "%.")  
table.insert(chars, "%[")  
table.insert(chars, "%]")  
table.insert(chars, "%*")   
table.insert(chars, "%+")  
table.insert(chars, "%-")  
table.insert(chars, "%?")  
  
local function checkspecialcharacter()  
    for i, permitWord in pairs(filter_record) do  
        -- 检查是否是特殊字符替换掉  
        for m,char in pairs(chars) do   
            if string.find(permitWord, char) ~= nil then  
                permitWord = string.gsub(permitWord, char, "%%"..char)  
            end  
        end  
        filter_record[i]= permitWord          
    end  
end  
  
local function check(message)  
    -- 输入的字符要转义成安全的  
    message = string.format("%q", message)  
    for _, permitWord in pairs(filter_record) do  
        if string.find(message, permitWord) ~= nil then  
            message = string.gsub(message, permitWord, "**")  
        end  
    end  
end  




另,在过滤字table中,过滤顺序是以table顺序过滤,那后面的过滤字符如果含前面的过滤字符,就不匹配了

lua中newkey

/* 
** inserts a new key into a hash table; first, check whether key's main  
** position is free. If not, check whether colliding node is in its main  
** position or not: if it is not, move colliding node to an empty place and  
** put new key in its main position; otherwise (colliding node is in its main  
** position), new key goes to an empty position.  
*/  
static TValue *newkey (lua_State *L, Table *t, const TValue *key) {  
  Node *mp = mainposition(t, key);// 计算新key的hash位置1  
  if (!ttisnil(gval(mp)) || mp == dummynode) {// 如果1位置值不为空 或者就是空节点  
    Node *othern;  
    Node *n = getfreepos(t);  /* get a free place */    // 从后向前获得一个空位  
    if (n == NULL) {  /* cannot find a free place? */   // 没有空位了重新rehash  
      rehash(L, t, key);  /* grow table */  
      return luaH_set(L, t, key);  /* re-insert key into grown table */  
    }  
    lua_assert(n != dummynode); // 有空的位置2  
    othern = mainposition(t, key2tval(mp)); // 查看现在占着1位置上面的key的应该在什么样的hash位置x  
    if (othern != mp) {  /* is colliding node out of its main position? */     // 如果x不等于1即 不该在当前1位置上  
      /* yes; move colliding node into free position */  
      while (gnext(othern) != mp) othern = gnext(othern);  /* find previous */ // 从1位置的链头开始找到这个当前占着1的节点  
      gnext(othern) = n;  /* redo the chain with `n' in place of `mp' */       // 把这个节点的下个next指向新节点  
      *n = *mp;  /* copy colliding node into free pos. (mp->next also goes) */ // 把节点的值转到新位置2  
      gnext(mp) = NULL;  /* now `mp' is free */                    // 把1这个位置空出来,放新key  
      setnilvalue(gval(mp));  
    }  
    else {  /* colliding node is in its own main position */  
      /* new node will go into free position */  
      gnext(n) = gnext(mp);  /* chain new position */ // 2位置指向原来主链的后面  
      gnext(mp) = n;                      // 主链指向新的位置2  
      mp = n;                         // 重新指向方便后面负值  
    }  
  }  
  gkey(mp)->value = key->value; gkey(mp)->tt = key->tt; // 赋key  
  luaC_barriert(L, t, key);  
  lua_assert(ttisnil(gval(mp)));  
  return gval(mp);  
}  
方便理解 用了 1,2,x表位置,脑袋简单喜欢简单解释。

NGUI scrollview例子

NGUI 里面scrollview的例子,我做了一遍,结果怎么都无法拖拽滚动,原来是Box Collider的size问题,mark下

socket编程

想要整合下讲的比较好的关于socket编程的文章,以后会看到好的就mark下
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html

UILoadingBar里面的setPercent的故事啊……

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
void UILoadingBar::setPercent(int percent)  
{  
    if ( percent < 0 || percent > 100)  
    {  
        return;  
    }  
    ……  
}  


弄了一下午的bug,原来是它!
一直用lua写,没注意这个setPercent里面的实现,今天弄了个bug,当然也得感谢这个bug,理解更进一步,其实看一眼就知道的问题
俺的这个percent超了100,所以你懂的……

用批处理建立文件夹

[plain] view plaincopy
[plain]  
:home  
@echo off    
cls    
@echo  
set /p testa=输入目录:  
set /p testb=输入创建文件夹个数:  
if /i %testb% LSS 10 goto test0  
if /i %testb% GEQ 10 goto test0 test1  
  
:test0  
for /L %%n in (1,1,9) do (  
md %testa%0%%n  
  
md %testa%0%%n\\公司_0%%n  
)  
  
:test1  
for /L %%n in (10,1,%testb%) do (  
md %testa%%%n  
  
md %testa%%%n\\公司_%%n  
)  
echo 创建完成!  
echo. & pause   
没弄过批处理 仿例子写了个 能用就行

字符串和字符数组

[cpp] view plaincopy
char str[] = "0123456789";  
int i = sizeof(str); // i = 11;包括后面的'\0'  
int j = strlen(str); // j = 10;字符串的长度  
  
char str1[10] = "012345678"; // 只能到8,最后一个字符存放'\0'  
int i1 = sizeof(str1); // i1 = 10;包括后面的'\0'  
int j1 = strlen(str1); // j1 = 9;字符串的长度  
  
char str2[10] = {'0','1','2','3','4','5','6','7','8','9'}; // 存放10个字符  
int i2 = sizeof(str2); // i2 = 10;  
int j2 = strlen(str2); // j2 = ?;不确定的长度,不知道什么地方有字符'\0'出现  


// 分不清时,一个例子搞定
sizeof 返回一个对象或者类型所占的内存字节
strlen返回字符串的长度
以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值