一、什么是smarty?
smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分
离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目
中显的尤为重要。
二、smarty优点:
1. 速度:采用smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访
问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
3. 缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为
true时,在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4. 插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
三、不适合使用smarty的地方:
1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty返而会使模板处理速度变慢。
2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty返而会丧失php开发迅速的优点。
四、安装smarty类:
安装smarty的环境:php版本4.06以上版本。
安装smarty方法非常简单,从http://samrty.php.net中下载smarty.tar.gz,解压后找到LIB目录,在当前站点中建立目录comm,将LIB中所有文件
拷入comm目录,完成基本安装.
其它高级安装使用方法请看手册.
五、smarty在模板中的使用:
本节通过几个实例来讲一讲smarty的使用。smarty模板通常使用.tpl来标识,有些人为了美工方便,将扩展名直接写成.html,也是可以
的。本文中采用smarty标准写法:以.tpl来表示为一个smarty模板。
实例1:
先来看一个简单的例子。
=====================================================
index.tpl
=====================================================
{* 显示是smarty变量识符里的用*包含的文字为注释内容 *}
{include file="header.tpl"}{*页面头*}
大家好,我叫{$name}, 欢迎大家阅读我的smarty学习材料。
{include file="foot.tpl"}{*页面尾*}
上边的这个例子是一个tpl模板,其中:
1. {**}是模板页的注释,它在smarty对模板进行解析时不进行任何输出,仅供模板设计师对模板进行注释。
2. {include file="xxx.tpl"}使用此句将一个模板文件包含到当前页面中,例子中将在网站中公用事的head.tpl与foot.tpl进行了包含,你可以
这样想,使用这一句将xxx.tpl中的内容全部复制在当前语句处。当然,你不使用这一句也可以,将XXX.tpl中的内容复制到当前语句处
也是完全可以了。
3.{$name}: 模板变量,smarty中的核心组成,采用smarty定义的左边界符{与右边界符}包含着、以PHP变量形式给出,在smarty程序中将使用
$smarty->assign("name", "李晓军");将模板中的$name替换成“李晓军”三个字。
整个实例源程序如下:
=============================
header.tpl
=============================
===============================
foot.tpl
===============================
CopyRight(C) by 大师兄 2004年8月 Email: [email protected]
=====================================================
index.tpl
=====================================================
{* 显示是smarty变量识符里的用*包含的文字为注释内容 *}
{include file="header.tpl"}{*页面头*}
大家好,我叫{$name}, 欢迎大家阅读我的smarty学习材料。
{include file="foot.tpl"}{*页面尾*}
================================================
index.php
================================================
/*********************************************
*
* 文件名: index.php
* 作用: 显示实例程序
*
* 作者: 大师兄
* Email:
[email protected]
*
*********************************************/
include_once("./comm/Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty();//建立smarty实例对象$smarty
$smarty->templates("./templates"); //设置模板目录
$smarty->templates_c("./templates_c"); //设置编译目录
//----------------------------------------------------
//左右边界符,默认为{},但实际应用当中容易与JavaScript
//相冲突,所以建议设成<{}>或其它。
//----------------------------------------------------
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
$smarty->assign("name", "李晓军"); //进行模板变量替换
//编译并显示位于./templates下的index.tpl模板
$smarty->display("index.tpl");
?>
最终执行这个程序时将显示为:
================================
执行index.php
================================
大家好,我叫李晓军, 欢迎大家阅读我的smarty学习材料。
CopyRight(C) by 大师兄 2004年8月 Email: [email protected]
实例2:
这个例子是综合使用smarty模板参数的一个例子,这些参数用来控制模板的输出,我只选其中几个,其它的参数你去看参考吧。
================================================
exmple2.tpl
================================================
1. 第一句首字母要大写:{$str1|capitalize}
2. 第二句模板变量 + 李晓军:{$str2|cat:"李晓军"}
3. 第三句输出当前日期:{$str3|date_format:"%Y年%m月%d日"}
4. 第四句.php程序中不处理,它显示默认值:{$str4|default:"没有值!"}
5。第五句要让它缩进8个空白字母位,并使用"*"取替这8个空白字符:
{$str5|indent:8:"*"}}
6. 第六句把
[email protected] 全部变为小写:{$str6|lower}
7. 第七句把变量中的teacherli替换成:李晓军:{$str7|replace:"teacherli":"李晓军"}
8. 第八句为组合使用变量修改器:{$str8|capitalize|cat:"这里是新加的时间:"|date_format:"%Y年%m月%d日"|lower}
===============================================
example2 .php
===============================================
/*********************************************
*
* 文件名: example2.php
* 作用: 显示实例程序2
*
* 作者: 大师兄
* Email:
[email protected]
*
*********************************************/
include_once("./Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty();//建立smarty实例对象$smarty
$smarty->templates("./templates"); //设置模板目录
$smarty->templates_c("./templates_c"); //设置编译目录
//----------------------------------------------------
//左右边界符,默认为{},但实际应用当中容易与JavaScript
//相冲突,所以建议设成<{}>或其它。
//----------------------------------------------------
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
$smarty->assign("str1", "my name is xiao jun, li."); //将str1替换成My Name Is Xiao Jun, Li.
$smarty->assign("str2", "我的名字叫:"); //输出: 我的名字叫:李晓军
$smarty->assign("str3", "公元"); //输出公元2004年8月21日(我的当前时间)
//$smarty->assign("str4", ""); //第四句不处理时会显示默认值,如果使用前面这一句则替换为""
$smarty->assign("str5", "前边8个*"); //第五句输出:********前边8个*
$smarty->assign("str6", "
[email protected] "); //这里将输出
[email protected]
$smarty->assign("str7", "this is teacherli"); //在模板中显示为:this is 李晓军
$smarty->assign("str8", "HERE IS COMBINING:");
//编译并显示位于./templates下的index.tpl模板
$smarty->display("example2.tpl");
?>
最终输出效果:
======================================================
example2.php输出效果:
======================================================
1. 第一句首字母要大写:My Name Is Xiao Jun, Li.
2. 第二句模板变量 + 李晓军:我的名字叫:李晓军
3. 第三句输出当前日期:公元2004年8月21日
4. 第四句.php程序中不处理,它显示默认值:没有值!
5。第五句要让它缩进8个空白字母位,并使用"*"取替这8个空白字符:
********前边8个*
6. 第六句把
[email protected] 全部变为小写:
[email protected]
7. 第七句把变量中的teacherli替换成:李晓军:this is 李晓军
8. 第八句为组合使用变量修改器:Here is Combining:这里是新加的时间:2004年8月21日
在模板中的这些参数被称为变量修改器(variable modifiers),使用这些参数可对模板进行一系列的修改控制。变量修改器
使用"|"和调节器名称应用修改器, 使用":"分开修改器参数。变量修改器可以组合使用,像第八句一样,实际使用中可以灵活应用。
实例3. ================================================== example3.tpl ==================================================
模板中内定的一些函数
{*下面的这一段相当于在模板内部定义一个变量UserName*}
{assign var="UserName" value="大师兄"}
这里将显示模板内部定义的一个变量:UserName = {$UserName}
下面的这一行将显示3个checkBox:
{html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator="
"}
下面在这一行将显示3个radio:
{html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator="
"}
下面显示一个月,日, 年选择框:
{html_select_date}
CopyRight(C) By XiaoJun, Li 2004{mailto address="[email protected] " text="联系作者"} ====================================================== example3.php ====================================================== /********************************************* * * 文件名: example3.php * 作用: 显示实例程序3 * * 作者: 大师兄 * Email:[email protected] * *********************************************/ require_once ("./comm/Smarty.class.php"); $smarty = new F117_Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir= './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir= './cache/'; $smarty->caching= false; //-------------------------------------------------------------------------------------- //处理{html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator=" "} //-------------------------------------------------------------------------------------- $smarty->assign('CheckName', array( 1001 => '语文', 1002 => '数学', 1003 => '外语')); $smarty->assign('IsChecked', 1001); //-------------------------------------------------------------------------------------- //处理{html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator=" "} //-------------------------------------------------------------------------------------- $smarty->assign('RadioName', array( 1001 => '语文', 1002 => '数学', 1003 => '外语')); $smarty->assign('IsChecked', 1001); //-------------------------------------------------------------------------------------- //{html_select_date}不用处理会自动输出 //-------------------------------------------------------------------------------------- $smarty->display("example3.tpl"); ?> ====================================================== example3.php输出效果: ====================================================== 模板中内定的一些函数 {assign var="UserName" value="大师兄"} 这里将显示模板内部定义的一个变量:UserName = 大师兄 下面的这一行将显示3个checkBox: 语文 数学 外语 下面在这一行将显示3个radio: 语文 数学 外语 下面显示一个月,日, 年选择框: January February March April May June July August September October November December 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2004 CopyRight(C) By XiaoJun, Li 2004联系作者 例3使用了一些smarty模板中内置的一些函数,相似的函数大家可以在手册中查到,使用方法很简单,大家可以自己去查找. 例4.模板控制(if / elseif / else/ endif ) ======================================================= example4.tpl ======================================================= 模板中的流程控制 {assign var="tbColor" value="#D4D0C8"} 色彩:{$tbColor} {section name=loop loop=$News} {if $tbColor == "#D4D0C8"} {assign var="tbColor" value="#EEEEEE"} {else $tbColor == "#EEEEEE"} {assign var="tbColor" value="#D4D0C8"} {/if} {$News[loop].newsID} {$News[loop].newsTitle} {/section}
======================================================= example4.php ======================================================= /********************************************* * * 文件名: example4.php * 作用: 显示实例程序4 * * 作者: 大师兄 * Email:[email protected] * *********************************************/ require_once ("./public/inc/F117_Smarty.php"); $smarty = new F117_Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir= './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir= './cache/'; $smarty->caching= false; $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻"); $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻"); $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻"); $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻"); $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻"); $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻"); $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻"); $smarty->assign("News", $array); $smarty->display("example4.tpl"); ?> ================================================== example4.php输出: ================================================== 模板中的流程控制 001 第1条新闻 002 第2条新闻 003 第3条新闻 004 第4条新闻 005 第5条新闻 006 第6条新闻 007 第7条新闻 008 第8条新闻
模板文件中使用: {if $tbColor == "#D4D0C8"} {assign var="tbColor" value="#EEEEEE"} {else $tbColor == "#EEEEEE"} {assign var="tbColor" value="#D4D0C8"} {/if} 这一语句块进行设置每一行的背景颜色, {assign var="tbColor" value="#D4D0C8"}还记的吧,是例3中设置模板内部变量的定义方法, 使用模板内置 的流程控制语句有时可以极大程度上提高程序的控制能力,下面一个例子是phpx.com中曾经有位朋友问过的,我将它作为 实例放在这里供大家学习. 例5: 使用模板内置流程控制语句进行一行多单元格内容输出, 也就是在视觉上smarty每记输出几条记录: ================================================ example5.tpl ================================================ 一行输出多条记录 {section name=loop loop=$News step=1} {if $smarty.section.loop.index % 4 == 0} {/if} {$News[loop].newsID} {$News[loop].newsTitle} {/section}
==================================================== example5.php ==================================================== /********************************************* * * 文件名: example5.php * 作用: 显示实例程序5 * * 作者: 大师兄 * Email:[email protected] * *********************************************/ require_once ("./public/inc/F117_Smarty.php"); $smarty = new F117_Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir= './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir= './cache/'; $smarty->caching= false; $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻"); $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻"); $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻"); $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻"); $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻"); $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻"); $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻"); $smarty->assign("News", $array); $smarty->display("example5.tpl"); ?> ================================================== example5.php输出内容: ================================================== 一行输出多条记录 001 第1条新闻 002 第2条新闻 003 第3条新闻 004 第4条新闻 005 第5条新闻 006 第6条新闻 007 第7条新闻 008 第8条新闻
说明:本来还可以优化,使得第一行不输出一个空行的 ,但是学习程序,简单为好,先就这么用了. 在这里说明一下: {section name=loop loop=$News step=1} {if $smarty.section.loop.index % 4 == 0} {/if} {$News[loop].newsID} {$News[loop].newsTitle} {/section} {section}{/section}指的是一个循环部分,在下一节会有详细的介绍,我们主要来看看这一句: {if $smarty.section.loop.index % 4 == 0} $smarty.section.loop指出$smarty的实例中的section段有一个叫loop的部分, 它有一个属性叫index, 它的表示当前循环的索引值, 从0开始递增, 我们把它%4后与0相比较,也就是说,如果当前的索引值是4的倍数,它就输出一个 ,否则执行下面的部分, 很简单的就解决了一个在程序上实现起来很麻烦的事情.
你可能感兴趣的:(smarty实例教程-模板设计篇)
男士护肤品哪个牌子好?十大男士护肤品排行榜
高省APP珊珊
很多男生意识到护肤的必要性,开始着手护肤,但不知道该选哪个男士护肤品品牌使用好。目前市面上很多男士护肤品品牌,可谓琳琅满目,让人眼花缭乱。男士挑选护肤品时,根据自己皮肤需求去正规渠道挑选合适的知名护肤品比较放心靠谱。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,也期待你的加入
程翔授《评价一篇记叙文》
行吟斯基
桂林十一中高一2中学生自读程老师学生文章板书课题师巡看。看完举手。问:它是记叙文。不商量。独立打分。学生评价打分。师:高低都正常,不受干扰。师巡,略评。打完举手。调查:分层次举手——高分先举手。最低分。最高95分。最低45分。女:差距太大!师:同一篇,相差55分。若是你的文章,愿落谁手?男:身临其境感觉。师:你有此经历?没也没关系。女:不优美……,结尾无升华……无感悟……师:辞藻不美?(师追问)男
移动端城市区县二级联动选择功能实现包
good2know
本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery
自律打卡第四天:比昨天进步一点点
花儿的念想
今天新闻我们县城又确诊了一例,截止目前已经确诊的三例了,打开,看了一篇简友写的武汉的真实情况,有病住不了院,还没等到床位已经去世的消息,心里更加的难受,武汉尚且这样,如果是我们这没有高速没有火车的十八线的小县城发生这种情况,那情况将是更加的不堪设想,不敢想,唯有祈求灾难早点快去,平安才是最大的福气。突然觉得我的自律打卡,比昨天进步一点点。更希望疫情战争每一天都要比昨天好一点,希望一觉醒来听到的是好
25-1-2019
树藤与海岛呢
hello八月来报道了今天看到了一篇文章就只想记下那两句话:良田千顷不过一日三餐广夏万间只睡卧榻三尺大概的意思就是要珍惜当下不要等来不及的时候才珍惜分享今天的两餐最近没有时间运动呢下个月补回好了说完了哈哈goodnight图片发自App图片发自App
别再讲道理啦,对方听不进去的
方所
我之前写过一篇叫做《你总妄想改变他人》,然后就有朋友跟我说,有一些方法可以改变他人之类的。嗯,是这样,但是任何具体的问题,都要限定好语境,描述清楚前提条件,然后再表达观点,我的这位朋友的说法就犯了一刀切的错误,这样并不能让讨论正常展开(这篇我得先给她看看,不然可能会挨揍)。好了,hhhh,谁让她不能写文章呢,我就来再说一说吧。我前面说过,我们在学到一个道理、学会一种方法之后,总是迫不及待地想要去与
Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程
倾听铃的声
后端 spring java mvc 开发语言 分布式
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的
ARM 和 AMD 架构的区别
m0_69576880
arm开发 windows 架构
ARM架构和AMD架构是两种不同的计算机处理器架构,它们有以下几个主要区别:设计出发点、兼容性、性能特点、市场定价。设计出发点:①ARM构架:ARM架构最初是为嵌入式系统设计的,旨在提供低功耗和高效能的解决方案。它主要应用于移动设备、嵌入式系统和物联网设备②AMD架构:AMD架构是基于x86架构的扩展,旨在提供与Intel架构兼容的处理器。它主要用于台式机、服务器和工作站等计算机系统。兼容性:AR
Flowable 高级扩展:自定义元素与性能优化实战
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 流程图 flowable BPMN 流程引擎 java
在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定
SpringMVC的执行流程
1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,
企业级区块链平台Hyperchain核心原理剖析
boyedu
区块链 区块链 企业级区块链平台 Hyperchain
Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)
力扣面试题07 - 旋转矩阵
茶猫_
leetcode 矩阵 算法 c语言
题目:给你一幅由N×N矩阵表示的图像,其中每个像素的大小为4字节。请你设计一种算法,将图像旋转90度。不占用额外内存空间能否做到?示例1:给定matrix=[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例2:给定matrix=[[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,
车载刷写架构 --- 刷写思考扩展
汽车电子实验室
电子电器架构——刷写方案 架构 开发语言 关于网关转发性能引起的思考 汽车中央控制单元HPC软件架构 车载诊断进阶篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是系统思考、大胆设计、小心求证;三是“一张纸制度”,也就是无论多么复杂的工作内容,要在一张纸上描述清楚;四是要坚决反对虎头蛇尾,反对繁文缛节,反对老
在线人数统计业务设计(场景八股文)
业务问题在当经的网站中,在线人数的实时统计已经是一个必不可少的模块了,并且该统计功能最好能够按不同的时间间隔做的统计,现在需要你设计一个在线人数统计的模块,你应该怎么进行设计的呢?背景一个网校下会有多个学员。目前平台大概有十个,平台对应的网校大概五十几个,平均一个网校会有5w个用户,预计总人数为200w,最该学员的在线人数在10w左右。设计思路最开始的时候,想到的就是使用mysql直接实现,但是明
12张思维导图读懂《关键对话》
蜜蜂学堂
你一定遇到过下列情况:·向上司提出你精心设计的方案,却被泼了一头冷水。·要求下属加班,下属以沉默相对抗。·和家人谈“开源节流”,他却只当是耳边风。·要邻居遵守公德,对方却依然我行我素。·要你的另一半浪漫些,对方却还是像根木头一样。·请朋友还钱,朋友却总是找各种借口推托。当你遇到这些情况时,你是沉默以对,还是尖刻批评,抑或拍案而起?别觉得灰心丧气,因为大部分人都和你一样,在面对难以解决却又会对生活产
免费排版助手:智能修正段落 + 删除干扰符,杂乱文本一键变规范
各位文字工作者们!你们有没有被排版折磨到崩溃的时候?我跟你们说,我之前排版一篇文章,那简直就像在走迷宫,头晕眼花的!不过后来我发现了一款软件——排版助手!软件下载地址安装包这玩意儿是个文章智能排版工具,专门给新闻编辑、文摘网站这些文字工作者用的。它功能老多了,能修正段落,把那些乱七八糟的段落变得规规矩矩;还能删除干扰符,就像给文章做了个大扫除,把没用的东西都清理掉;简繁转换也不在话下,不管是简体还
900 万人次都在用!打印机驱动大师:兄弟 驱动安装一步到位
文哥工具箱2
软件工程 电脑 开源软件
各位打印界的老铁们,你们知道吗?我就是那个传说中服务PT-18R标签打印机的“最佳损友”小助手!当你想把电脑里那些花里胡哨的标签设计变成能摸得着的实物时,嘿嘿,软件下载地址本助手就闪亮登场啦!插上USB线的瞬间,我立马在你电脑里“安营扎寨”,悄悄给你和打印机搭起一座“鹊桥”,让你们无障碍沟通,那叫一个丝滑!你在编辑软件里鼓捣的文字、条形码,甚至那些可可爱爱的小图标,全靠我这个“翻译官”精准转换成打
深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言 开发语言 汇编 算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
【老房翻新】92平轻奢简约风,将和谐之美融入空间!
没人比我更懂装修
在客厅空间中,设计师于冷静的空间基调中选用了层次感丰富的黄蓝色作为主要跳色,搭配黑白纹理的地毯与单椅,为空间增加了时尚摩登的气息。艺术感的单品突出点亮了空间,绿植的点缀、留白的软饰则增强了空间的呼吸性。点击此处添加图片说明文字点击此处添加图片说明文字设计师力求使每一处的设立都在空间中达到相互间的呼应与制衡,将艺术的跃动之美赋于空间之上,也将空间的和谐之美融于生活之中。点击此处添加图片说明文字点击此
小白买保险科普篇-意外险
手牵手走
意外险顾名思义,就是️对因意外导致的损失进行经济补偿的保险产品。我们看保险产品一定要看包含的责任。意外险通常包含:意外身故理赔金,额度10万-几百万不等。意外残疾理赔金,额度10万-几百万不等。意外医疗理赔金,额度通常在1-5万之间。这里的意外到底包含哪些意外事件,不能一概而论。综合意外险,我们重点看免责条款里的除外责任。比如:酒驾、违法不属于赔偿范围。这类产品小朋友和老人家往往有专属产品。年轻人
人物系列首篇|总会有人陪你走一段路
诗小蛮5786400
主题纲要:1.总会有人陪你走一段路2.不打扰也是一种幸福3.留在身边的,哪怕瞎逼逼一番也是珍贵一、总会有人陪你走一段路在综艺《向往的生活》,任嘉伦曾问过这样一个问题:“你们有没有过那样一种朋友:你们小时候关系很好,但因为你事业越来越好;他觉得你们之间的距离越来越远,然后他就自己疏远你的那种。”何炅说:我们要接受这是常态,我们每个人都有在乎的、喜欢的人,但我从来没有奢望,要把谁留在身边一辈子,因为这
Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)
bug菌¹
Java实战(进阶版) java Java零基础入门 Java并发 线程池 多线程篇
本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行
5G基站信号加速器!AD8021ARZ-REEL7亚德诺 超低噪声高速电压放大器 专利失真消除技术!
深圳市尚想信息技术有限公司
5G通信 高速运放 ADI黑科技 8K视频 医疗超声
AD8021ARZ-REEL7ADI:重新定义高速放大器的性能极限!一、产品简介AD8021ARZ-REEL7是ADI(亚德诺半导体)推出的超低噪声高速电压反馈放大器,采用XFCB工艺和专利失真消除技术,专为4K/8K视频处理、医疗成像、5G通信等超高频应用设计。以1.8GHz带宽和0.1nV/√Hz超低噪声,成为高速信号调理的终极解决方案!二、五大颠覆性优势军工级信号保真度1.8GHz-3dB带
常规笔记本和加固笔记本的区别
luchengtech
电脑 三防笔记本 加固计算机 加固笔记本
在现代科技产品中,笔记本电脑因其便携性和功能性被广泛应用。根据使用场景和需求的不同,笔记本可分为常规笔记本和加固笔记本,二者在多个方面存在显著区别。适用场景是区分二者的重要标志。常规笔记本主要面向普通消费者和办公人群,适用于家庭娱乐、日常办公、学生学习等相对稳定的室内环境。比如,人们在家用它追剧、处理文档,学生在教室用它完成作业。而加固笔记本则专为特殊行业设计,像军事、野外勘探、工业制造、交通运输
我最喜欢的公众号
素颜创始人小云
一年多前,也是因为工作的原因。认识了她,她是我七个人物法其一,她在我心里也是很敬佩的一个女孩子。她会讲一些护肤知识,哪些产品好用哪些不好用而他讲解的产品都是我跃跃欲试的。图片发自App她做的每一篇文章都很精美,可以吸引到我从头看到尾,看每一个字都会很珍惜很期待,做事也特别的认真仔细。去年出了一本《活得漂亮》我也看了她的创业故事,很厉害!她的认真及敬业精神我觉得是很难学得来的,现在怀孕3个月了,依然
提升在直返APP中的等级:解锁更多特权与收益的秘诀
古楼
在直返APP的世界里,每个用户都渴望提升自己的等级,以解锁更多特权与收益。那么,如何提升在直返APP中的等级呢?接下来,我们将为您揭示这一秘密。【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,运行三年,稳定可靠。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。高省是公认的返利最高的软件。古楼导师高省邀请
D124:如何训练独立思考力?
大栗子_
当我们要判断一个理论或者思想是否正确,需要有三个层次,分别是体验、解释和分析。首先看体验。很多时候,我们会相信“听上去、感觉是对的”的事情。我们之前讲的太空笔的故事之所以大多数人都认为是对的,就是有一些看似真实的关键词,比如美国,NASA,设计等,这些词看起来非常权威,但是离我们又遥远,这时候我们的大脑就会放松警惕了。于是,我们毫不犹豫就接受了。说到这里,你有没有发现之前的电视广告中的各种高让我们
仿品百达翡丽男表价格(仿品百达翡丽价格一览表)
爱表之家
百达翡丽作为世界顶级的钟表品牌,其男表以精湛的工艺、卓越的品质和独特的设计赢得了众多钟表爱好者的青睐。然而,由于其高昂的价格,许多消费者转向仿品市场,以较低的价格体验类似的设计与风格【重要提醒】文章最下面有联系方式将对仿品百达翡丽男表的价格进行详细解析,帮助消费者更好地了解这一市场。一、仿品百达翡丽男表价格区间仿品百达翡丽男表的价格因其品质、材质、功能等因素而差异较大,大致可以分为以下几个价格区间
Android 应用权限管理详解
文章目录1.权限类型2.权限请求机制3.权限组和分级4.权限管理的演进5.权限监控和SELinux强制访问控制6.应用权限审核和GooglePlayProtect7.开发者最佳实践8.用户权限管理9.Android应用沙箱模型10.ScopedStorage(分区存储)11.背景位置权限(BackgroundLocationAccess)12.权限回收和自动清理13.权限请求的用户体验设计14.G
【Coze搞钱实战】3. 避坑指南:对话流设计中的6个致命错误(真实案例)
AI_DL_CODE
Coze平台 对话流设计 客服Bot避坑 用户流失 封号风险 智能客服配置 故障修复指南
摘要:对话流设计是智能客服Bot能否落地的核心环节,直接影响用户体验与业务安全。本文基于50+企业Bot部署故障分析,聚焦导致用户流失、投诉甚至封号的6大致命错误:无限循环追问、人工移交超时、敏感词过滤缺失、知识库冲突、未处理否定意图、跨平台适配失败。通过真实案例拆解每个错误的表现形式、技术根因及工业级解决方案,提供可直接复用的Coze配置代码、工作流模板和检测工具。文中包含对话流健康度检测工具使
TOMCAT在POST方法提交参数丢失问题
357029540
java tomcat jsp
摘自http://my.oschina.net/luckyi/blog/213209
昨天在解决一个BUG时发现一个奇怪的问题,一个AJAX提交数据在之前都是木有问题的,突然提交出错影响其他处理流程。
检查时发现页面处理数据较多,起初以为是提交顺序不正确修改后发现不是由此问题引起。于是删除掉一部分数据进行提交,较少数据能够提交成功。
恢复较多数据后跟踪提交FORM DATA ,发现数
在MyEclipse中增加JSP模板 删除-2008-08-18
ljy325
jsp xml MyEclipse
在D:\Program Files\MyEclipse 6.0\myeclipse\eclipse\plugins\com.genuitec.eclipse.wizards_6.0.1.zmyeclipse601200710\templates\jsp 目录下找到Jsp.vtl,复制一份,重命名为jsp2.vtl,然后把里面的内容修改为自己想要的格式,保存。
然后在 D:\Progr
JavaScript常用验证脚本总结
eksliang
JavaScript javaScript表单验证
转载请出自出处:http://eksliang.iteye.com/blog/2098985
下面这些验证脚本,是我在这几年开发中的总结,今天把他放出来,也算是一种分享吧,现在在我的项目中也在用!包括日期验证、比较,非空验证、身份证验证、数值验证、Email验证、电话验证等等...!
&nb
微软BI(4)
18289753290
微软BI SSIS
1)
Q:查看ssis里面某个控件输出的结果:
A MessageBox.Show(Dts.Variables["v_lastTimestamp"].Value.ToString());
这是我们在包里面定义的变量
2):在关联目的端表的时候如果是一对多的关系,一定要选择唯一的那个键作为关联字段。
3)
Q:ssis里面如果将多个数据源的数据插入目的端一
定时对大数据量的表进行分表对数据备份
酷的飞上天空
大数据量
工作中遇到数据库中一个表的数据量比较大,属于日志表。正常情况下是不会有查询操作的,但如果不进行分表数据太多,执行一条简单sql语句要等好几分钟。。
分表工具:linux的shell + mysql自身提供的管理命令
原理:使用一个和原表数据结构一样的表,替换原表。
linux shell内容如下:
=======================开始 
本质的描述与因材施教
永夜-极光
感想 随笔
不管碰到什么事,我都下意识的想去探索本质,找寻一个最形象的描述方式。
我坚信,世界上对一件事物的描述和解释,肯定有一种最形象,最贴近本质,最容易让人理解
&
很迷茫。。。
随便小屋
随笔
小弟我今年研一,也是从事的咱们现在最流行的专业(计算机)。本科三流学校,为了能有个更好的跳板,进入了考研大军,非常有幸能进入研究生的行业(具体学校就不说了,怕把学校的名誉给损了)。
先说一下自身的条件,本科专业软件工程。主要学习就是软件开发,几乎和计算机没有什么区别。因为学校本身三流,也就是让老师带着学生学点东西,然后让学生毕业就行了。对专业性的东西了解的非常浅。就那学的语言来说
23种设计模式的意图和适用范围
aijuans
设计模式
Factory Method 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
Abstr
Java中的synchronized和volatile
aoyouzi
java volatile synchronized
说到Java的线程同步问题肯定要说到两个关键字synchronized和volatile。说到这两个关键字,又要说道JVM的内存模型。JVM里内存分为main memory和working memory。 Main memory是所有线程共享的,working memory则是线程的工作内存,它保存有部分main memory变量的拷贝,对这些变量的更新直接发生在working memo
js数组的操作和this关键字
百合不是茶
js 数组操作 this关键字
js数组的操作;
一:数组的创建:
1、数组的创建
var array = new Array(); //创建一个数组
var array = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]
别人的阿里面试感悟
bijian1013
面试分享 工作感悟 阿里面试
原文如下:http://greemranqq.iteye.com/blog/2007170
一直做企业系统,虽然也自己一直学习技术,但是感觉还是有所欠缺,准备花几个月的时间,把互联网的东西,以及一些基础更加的深入透析,结果这次比较意外,有点突然,下面分享一下感受吧!
&nb
淘宝的测试框架Itest
Bill_chen
spring maven 框架 单元测试 JUnit
Itest测试框架是TaoBao测试部门开发的一套单元测试框架,以Junit4为核心,
集合DbUnit、Unitils等主流测试框架,应该算是比较好用的了。
近期项目中用了下,有关itest的具体使用如下:
1.在Maven中引入itest框架:
<dependency>
<groupId>com.taobao.test</groupId&g
【Java多线程二】多路条件解决生产者消费者问题
bit1129
java多线程
package com.tom;
import java.util.LinkedList;
import java.util.Queue;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.loc
汉字转拼音pinyin4j
白糖_
pinyin4j
以前在项目中遇到汉字转拼音的情况,于是在网上找到了pinyin4j这个工具包,非常有用,别的不说了,直接下代码:
import java.util.HashSet;
import java.util.Set;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin
org.hibernate.TransactionException: JDBC begin failed解决方案
bozch
ssh 数据库异常 DBCP
org.hibernate.TransactionException: JDBC begin failed: at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:68) at org.hibernate.impl.SessionImp
java-并查集(Disjoint-set)-将多个集合合并成没有交集的集合
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.ut
Java PrintWriter打印乱码
chenbowen00
java
一个小程序读写文件,发现PrintWriter输出后文件存在乱码,解决办法主要统一输入输出流编码格式。
读文件:
BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因
[天气与气候]极端气候环境
comsci
环境
如果空间环境出现异变...外星文明并未出现,而只是用某种气象武器对地球的气候系统进行攻击,并挑唆地球国家间的战争,经过一段时间的准备...最大限度的削弱地球文明的整体力量,然后再进行入侵......
那么地球上的国家应该做什么样的防备工作呢?
&n
oracle order by与union一起使用的用法
daizj
UNION oracle order by
当使用union操作时,排序语句必须放在最后面才正确,如下:
只能在union的最后一个子查询中使用order by,而这个order by是针对整个unioning后的结果集的。So:
如果unoin的几个子查询列名不同,如
Sql代码
select supplier_id, supplier_name
from suppliers
UNI
zeus持久层读写分离单元测试
deng520159
单元测试
本文是zeus读写分离单元测试,距离分库分表,只有一步了.上代码:
1.ZeusMasterSlaveTest.java
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.j
Yii 截取字符串(UTF-8) 使用组件
dcj3sjt126com
yii
1.将Helper.php放进protected\components文件夹下。
2.调用方法:
Helper::truncate_utf8_string($content,20,false); //不显示省略号 Helper::truncate_utf8_string($content,20); //显示省略号
&n
安装memcache及php扩展
dcj3sjt126com
PHP
安装memcache tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5/ /usr/local/php/bin/phpize (?) ./configure --with-php-confi
JsonObject 处理日期
feifeilinlin521
java json JsonOjbect JsonArray JSONException
写这边文章的初衷就是遇到了json在转换日期格式出现了异常 net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 原因是当你用Map接收数据库返回了java.sql.Date 日期的数据进行json转换出的问题话不多说 直接上代码
&n
Ehcache(06)——监听器
234390216
监听器 listener ehcache
监听器
Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListener和监听Cache的CacheEventListener。在Ehcache中,Listener是通过对应的监听器工厂来生产和发生作用的。下面我们将来介绍一下这两种类型的监听器。
activiti 自带设计器中chrome 34版本不能打开bug的解决
jackyrong
Activiti
在acitivti modeler中,如果是chrome 34,则不能打开该设计器,其他浏览器可以,
经证实为bug,参考
http://forums.activiti.org/content/activiti-modeler-doesnt-work-chrome-v34
修改为,找到
oryx.debug.js
在最头部增加
if (!Document.
微信收货地址共享接口-终极解决
laotu5i0
微信开发
最近要接入微信的收货地址共享接口,总是不成功,折腾了好几天,实在没办法网上搜到的帖子也是骂声一片。我把我碰到并解决问题的过程分享出来,希望能给微信的接口文档起到一个辅助作用,让后面进来的开发者能快速的接入,而不需要像我们一样苦逼的浪费好几天,甚至一周的青春。各种羞辱、谩骂的话就不说了,本人还算文明。
如果你能搜到本贴,说明你已经碰到了各种 ed
关于人才
netkiller.github.com
工作 面试 招聘 netkiller 人才
关于人才
每个月我都会接到许多猎头的电话,有些猎头比较专业,但绝大多数在我看来与猎头二字还是有很大差距的。 与猎头接触多了,自然也了解了他们的工作,包括操作手法,总体上国内的猎头行业还处在初级阶段。
总结就是“盲目推荐,以量取胜”。
目前现状
许多从事人力资源工作的人,根本不懂得怎么找人才。处在人才找不到企业,企业找不到人才的尴尬处境。
企业招聘,通常是需要用人的部门提出招聘条件,由人
搭建 CentOS 6 服务器 - 目录
rensanning
centos
(1) 安装CentOS
ISO(desktop/minimal)、Cloud(AWS/阿里云)、Virtualization(VMWare、VirtualBox)
详细内容
(2) Linux常用命令
cd、ls、rm、chmod......
详细内容
(3) 初始环境设置
用户管理、网络设置、安全设置......
详细内容
(4) 常驻服务Daemon
【求助】mongoDB无法更新主键
toknowme
mongodb
Query query = new Query(); query.addCriteria(new Criteria("_id").is(o.getId())); &n
jquery 页面滚动到底部自动加载插件集合
xp9802
jquery
很多社交网站都使用无限滚动的翻页技术来提高用户体验,当你页面滑到列表底部时候无需点击就自动加载更多的内容。下面为你推荐 10 个 jQuery 的无限滚动的插件:
1. jQuery ScrollPagination
jQuery ScrollPagination plugin 是一个 jQuery 实现的支持无限滚动加载数据的插件。
2. jQuery Screw
S