元素从第173行一直延伸到了第311行,所以我们的目标代码就在这从173-311行这些代码之间。(旁白:这就是缩小目标范围,也是警察甄别犯罪嫌疑人的常用方法) 但是这段代码非常复杂,各种逻辑判断,我用肉眼已经没办法准确的判断走的流程了,只能借助调试器了。
首先,调试器在第88行到第93行会去获取当前languageId ,这里是"en_US" , 然后toLanguageId 为""
然后当运行到第 107 行 mainSections 时候,我眼前一亮,因为以往经验,为了让 jsp 片断能更好的重用,多数是以 section 的形式来存放一个一个小的页面片断的,稍微初级点的人一般会在页面上用 N 个 jsp:include 来引入这些页面片断,稍微高级点的人则会定义一个页面片断数组,然后把所有片断页面的名字都存放在这个数组中,至少我以前经常这么做,所以感觉很熟悉。
结果果然和我猜想一致(旁白:果然经验和感觉很重要啊) 因为我们是点“ 绿色加号”页面图标进来的,所以它的 mainSections 的取值就是上图第 107行的 PropsValues.JOURNAL_ARTICLE_FORM_ADD 指定的值,我们去 portal.properties 中找,果然找到了,而且从注释上看也证实了我们的猜想:
结合调试信息:
所以我们确定,要在这里添加多个 jsp片断的内容,包括 content.jsp,abstract.jsp等。并 且 categorySections:
然后因为我们的toLanguageId为"",所以符合第281行的条件Validator.isNull(toLanguageId)==true :
所以我们断定,这个标记对应的jsp片断就是应该包含若干jsp页面,它要包含的页面名字数组放在刚才生成的categorySections ,而页面的路径应该是jspPath 指定的路径,我们现在来证明这个猜想:
为此,我们去liferay-ui.tld 中找到这个标记对应的处理类:
所以,它对应的标记处理类是FormNavigatorTag 类:
而这个类的getPage() 方法会吧页面转到/html/taglib/ui/form_navigator/page.jsp 中:
我们看到,它会在第48行循环的吧所有的sectionJsp从传入的categorySections入参中读取出来,,然后分别拼接页面路径前缀(jspPath ),最后在第56行,分别包含这些页面内容插入到当前页面中。因为我们刚才已经分析了,这些页面列表都在categorySection 入参中,而jspPath 前缀也传递进来,叫/html/portlet/journal/article ,所以一切谜底都解开了,他们会从webapps/ROOT/html/portlet/journal/article 中吧相应的页面片断包含进来。
我们现在来看第一个页面content.jsp ,这个页面还是比较简单的, 它是一个典型的自顶向下结构:
结合页面很容易就把每块区域和对应的代码联系起来:
其中Structure:Default 和Template: None 这些所在的容器对应的是conent.jsp第211行的article-structure-template-toolbar
接下来Default language:所在的容器对应的是content.jsp第347行article-translation-toolbar
接下来Title(Required)所在容器对应的是content.jsp第480行journal-article-general-fields :
接下来的Content以及富文本编辑器对应的是content.jsp的第488行journal-article-container :
很快的, 我们就在journal-article-container 下面找到了富文本编辑器对应的代码,它也是用liferay-ui 标记库中的标记写的:
为此,我们又回到liferay-ui.tld 中找input-editor 对应的标记处理类为InputEditorTag :
从InputEditorTag类的调试信息中,我们终于发现,它使用ckeditor作为富文本编辑器的内容:(长叹一下:终于找到目标了)
从调试信息中看到,它会在108行包含一个页面叫/html/js/editor/ckeditor.jsp 。
我们进入这个页面继续调试后发现,这个ckeditor使用的配置信息(存于变量ckeditorConfigFileName 中)位于文件ckconfig.jsp 中:
稍微瞄了一眼ckconfig.jsp,发现它提供了ckeditor很多配置参数包括定制显示的按钮,甚至包括样式,这也能解释为什么我们看到的ckeditor和我们看到原版的有一定的区别.
第62-68行定义了ckeditor 的主要样式,让其绝对定位:
然后第74行指定了ckeditor控件的具体呈现,原来它是封装在一段叫ckeditor.js的javascript代码中的,它的路径在/html/js/editor/ckeditor/ckeditor.js 中
最后,在我们用ckeditor编辑完文章后,liferay会自动收集这个控件产生的内容和数据,并且进一步处理。
总结:
页面调试经验:
我从事框架研究,架构很多年了,虽然自己没怎么写过jsp页面:)。
我看过很多同事,对于这种复杂页面嵌套页面的调试,他们的做法是:直接打开Firebug然后对照Dom树去找对应的jsp文件,但是这样效果不好,一来是现在主流网站多数用了很多前端框架,比如tile框架,还大量使用自定义标记库,jstl等,所以你很难直接从最终的Dom找到对应的jsp片断来满足你要求。二来是这样泛搜经常搜不到结果或者搜到很多结果,你无法判断到底哪个片断才是你所需要的, 也许这些片断彼此都很相似。
我的经验是:对于简单的,你直接一目了然就可以看到页面,页帧的嵌套包含关系,那么只要go-through一下就可以了,但是对于复杂的,尤其是页面中嵌套许多这种分支,判断的,你也许无法直接判断走那个分支,那么必须通过调试器。java调试工具对于jsp页面的调试支持并不完美,但是至少其中的scriptlet和expression部分是可以敲断点调试的,而条件分支,判断,循环中用到的变量值往往来自于这些scriptlet和 expression,所以知道这些代码段中出现的变量的值可以帮助我们正确的选择分支。还有就是如果页面很乱很杂,那么就可以先尽量排除不想干代码,而把目标代码局限在很小的范围中,然后断点打的细一点,就很容易搞定了。在我写着文章时候,虽然我猜想可能是用ckeditor,但我没查证过,我完全是边写博客边调试,然后结果就自动出来了。
本文中的知识:
本文其实大多数我的篇幅都是在如何进行调试和从各种复杂文件包含,引入中准确定位我们的目标的。知识本身不是很多,主要就是以下几点:
(1)Liferay在编辑博客内容时使用的富文本编辑器是一个加强版本的ckeditor
ckeditor基本知识可以参见http://ckeditor.com/
(2)这个ckeditor其实封装在一段js脚本中,其内容在/html/js/editor/ckeditor/ckeditor.js中。
(3)Liferay对于ckeditor进行了很多配置和定制,这些配置内容放在/html/js/editor/ckeditor_diffs/ckconfig.jsp中
(4)Liferay使用了大量自定义标记库,其中和页面显示的很多都放在liferay-ui.tld中定义。
你可能感兴趣的:(ckeditor,页面调试技巧,Portal开发)
【网络安全】URL解析器混淆绕过CSP实现XSS
秋说
网络安全 web安全 xss 漏洞挖掘
未经许可,不得转载。文章目录前言正文前言许多流行的静态网站生成器都存在图像CDN功能,它们通过优化网站中的图像来加快页面加载速度。例如:1、OptimizingImages|Next.js利用内置的next/image组件优化图像(nextjs.org)2、NuxtImage:Nuxt应用的图像优化即插即用的图像优化功能,使用内置优化器对图像进行调整(image.nuxt.com)这些工具的目标都
el-table实现当内容过多时,el-table显示滚动条,页面不显示滚动条
遇事不决AI解决
vue.js javascript elementui
估计有不少小伙伴在开发公司的ERP使用el-table都会遇到这么一个问题,就是产品经理提出,页面不出现滚动条,因为不美观。但是当el-table内容过多,超过页面的宽度时候,页面就会有滚动条。那应该如何解决呢?能不能让滚动条出现在el-table的容器中,而不是出现在页面上呢?实现方案就是resize时间结合el-table的max-height属性然后根据页面大小实现自适应定义auto-hei
linux访问外网的设置
错误重复学习记录
linux 运维 服务器
Ubuntu|LUCKFOXWIKI开发板配置添加路由信息sudorouteadddefaultgw172.32.0.100添加DNSservers打开文件sudovi/etc/resolv.conf添加以下内容:nameserver8.8.8.8联网测试pingwww.baidu.com开机自动配置路由信息和DNSservers重启后会被清除,我们创建一个脚本开机后自动帮我们完成配置cd/etc
行业趋势|揭秘益生菌产业链上下游现状
趋势洞察
益生菌产业链上游主要可分为国际益生菌专利申请、益生菌原料销售与益生菌产品技术解决方案提供三类,全球益生菌产业链上游具有以下特点:国际专利多为发酵菌种。数据显示,1985-2004年间全球益生菌专利申请主要集中在植物乳杆菌(80件)、干酪乳杆菌(68件)和嗜酸乳杆菌(113件)三种,均属于发酵用菌种。这一数据从侧面反映出发酵食品是益生菌产业中的开发重心。从应用层面来看,益生菌专利多集中在乳制品加工制
在家能干什么副业(零基础在家就可以做的副业)
声优配音圈
赚钱的副业项目有哪些?网络上能做的副业真的很多,只是很多时候自己都没坚持下来,兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。甚至不知道怎么开始。当下最火的短视频,在这上面挣钱的人很多。我相信很多人肯定都尝试过,梦想着有一天自己的
调查了 12,000 名女性开发者发现,女性比男性更懂 Java!
Java架构学习者
华为的中国芯将何庭波这位神秘低调的程序媛推入公众视野。在华为地位堪比任正非的她在谈及“工程师”这一身份时表示,“我觉得工程师本身就是一个很不了的职业,这也是我一生的荣耀和自豪”。理工科行业的性别鄙视链由来已久,“女子本弱”论和对于有色人种的偏见一样扎根于各文化背景下。而放眼当下,年轻一代女性已经为进入科技行业做好了准备。“精英统治下,技能即一切”——程序媛arecoming!近日,HackerRa
react native 大坑之react-navigation导航
我的铁锤妹妹
1、stacknagator路由嵌套,会在最外层多出一个头部title组件,在属性中隐藏navigationOptions:{header:null,}2、导航嵌套,需先声明,后引入。引入的二级导航应放在之前(上面)先声明。3、多个路由可以相互嵌套,暂时解决问题:登录成功后,跳转到主页面,安卓版本点击物理返回键,从主页面中直接退出,而不会回退回到登录页面。其他页面跳转到主页会重置路由,点击物理返回
Java封装大华SDK,实现门禁一体机的常用功能
香蕉i
java 物联网
Java封装大华SDK,实现门禁人脸一体机的常用功能大华sdk的相关资料在网上很少,刚接触比较难上手,这里将本人近期的研究成果进行分享。从大华官网下载相应环境下的sdk:自定义开发的工具类,这里主要实现的功能有://1、远程开门//openDoor();//2、开门记录//findAccessRecords();//3、指定数量查询人员信息//findUserInfos();//4、通过ID查询人
MYSQL数据库的实验总结_MySQL数据库基础总结
weixin_39993623
MYSQL数据库的实验总结
来源:实验楼链接:https://www.shiyanlou.com/courses/9一、开发准备#打开MySQL服务sudoservicemysqlstart#使用root用户登录,密码为空mysql-uroot二、查看数据库SHOWDATABASES三、新建数据库首先,我们创建一个数据库,给它一个名字,比如mysql_shiyan,以后的几次实验也是对mysql_shiyan这个数据库进行操
【数据获取与读取】JSON & CSV
yogurt=b
数据分析 json python
数据分析流程获取数据-读取数据-评估数据-清洗数据-整理数据-分析数据-可视化数据公开数据集飞桨(百度旗下深度学习平台)数据集:https:/aistudio.baidu.com/aistudio/datasetoverview天池(阿里云旗下开发者竞赛平台):https:/tianchiaiyun.com/dataset/和鲸社区(数据科学开源社区)数据集:htps://www.heywhale
PySpark
静听山水
Spark spark
PySpark的本质确实是Python的一个接口层,它允许你使用Python语言来编写ApacheSpark应用程序。通过这个接口,你可以利用Spark强大的分布式计算能力,同时享受Python的易用性和灵活性。1、PySpark的工作原理PySpark的工作原理可以概括为以下几个步骤:编写Python代码:开发者使用Python语法来编写Spark应用程序。这些程序通常涉及创建RDDs(弹性分布
如何将wordpress网站做成微信小程序(我的第一款微信小程序)
shuihan198712
01作品信息作品名称:Axure技术小站作品类型:微信小程序开发日期:2019-07-25目前状态:刚开始,还在开发,上线时间未知02背景1、之前在做wordpress微信支付时候,偶尔发现了一篇,将wordpress网站做成微信小程序的文章。2、微信小程序这么火3、学习一下,了解下小程序开发的一些知识03准备工作1、个人知识储备:我没有相关的代码经验,之前稍微接触过一点点,零零散散,不足以独立写
读者文摘精选│改变你人生的励志名言
小说故事研究院
失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。让我们将事前的忧虑,换为事前的思考和计划吧!再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。任何业绩的质变都来自于量变的积累。成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。一个有信念者所开发出的力量,大于99个只有兴趣者。每一发奋努力的背后,必有加倍的赏赐。做对的
ASP.NET Core 入门教学二十一 分布式追踪技术
充值内卷
asp.net 分布式
分布式追踪技术在微服务架构中非常重要,它可以帮助开发者理解和监控应用程序在分布式环境中的行为。ASP.NETCore提供了对分布式追踪的原生支持,主要通过OpenTelemetry和ApplicationInsights实现。1.OpenTelemetryOpenTelemetry是一个开源的观测框架,用于生成、收集和导出遥测数据(如追踪、指标和日志)。ASP.NETCore可以通过集成OpenT
中间件的学习理解总结
DCDDDDcccc
中间件 学习
目录一、定义与作用二、主要类型数据库中间件远程过程调用中间件面向消息的中间件事务处理中间件三、特点与优势独立性高效性可扩展性可靠性四、应用场景企业应用集成分布式系统电子商务移动应用开发五、数据库中间件功能细节:应用优势:六、远程过程调用中间件功能细节:应用优势:七、面向消息的中间件功能细节:应用优势:八、事务处理中间件功能细节:应用优势:数据库中间件MyCat:ShardingSphere:远程过
深入解析五大 LLM 可视化工具:Langflow、Flowise、Dify、AutoGPT UI 和 AgentGPT
花千树-010
AI编程 langchain 机器学习 AI编程 python 机器人
近年来,大语言模型(LLM)技术的迅猛发展推动了智能代理(Agent)应用的广泛应用。从任务自动化到智能对话系统,LLM代理可以极大简化复杂任务的执行。为了帮助开发者更快地构建和部署这些智能代理,多个开源工具应运而生,尤其是那些提供可视化界面的工具,让开发者通过简单的图形界面设计、调试和管理智能代理。本文将详细介绍五款热门的LLM可视化工具,分别是Langflow、Flowise、Dify、Aut
DL参考资源(二)
antkillerfarm
深度学习
DL参考资源推荐系统https://zhuanlan.zhihu.com/p/26237106深度学习在推荐算法上的应用进展http://i.dataguru.cn/mportal.php?mod=view&aid=11463深度学习在推荐领域的应用https://mp.weixin.qq.com/s/hGvQvddD3i858XSK4z08Ug主要推荐系统算法总结及Youtube深度学习推荐算法
软件测试面试题(Python全栈自动化测试面试题)
爱学习的执念
软件测试 面试 软件测试面试 python 开发语言 面试 软件测试面试 软件测试
1、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。2、你认为测试人员需要具备哪些素质做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好
像素流送技术,潜力巨大还是功能不足?
DolitD
3d ue4 交互 云计算
像素流送技术作为UE引擎自带的一款扩展性模块,尽管这项技术拥有一定的潜力,但与市场上成熟的云推流产品相比,它在配套功能方面仍显薄弱。都有哪些具体表现呢?一、维护和更新成本高像素流送云推流需要开发团队在研发阶段投入大量的人力进行维护,以解决不断出现的各种问题。此外像素流送插件作为UE引擎的官方组件,在使用中随着平台的更新而更新,需要大量的维护和更新,这部分成本也是比较高的。二、平台管理功能的缺失成熟
Windows系统上更换pip源的详细指南
2402_85758349
windows pip
Python的包管理工具pip允许用户从Python包索引(PyPI)下载和安装第三方库。然而,默认的PyPI源有时可能因为网络问题或地理位置导致访问速度较慢。更换为更快的源可以显著提高下载和安装Python包的速度。本文将详细介绍如何在Windows系统上更换pip的源。1.理解pip源的重要性更换pip源是优化Python开发环境的重要步骤之一。一个快速且稳定的源可以提高包管理的效率,尤其是在
中间件是什么
Amagi.
中间件
中间件是指在操作系统和应用程序之间提供服务的软件层。它充当了不同软件组件之间的桥梁,帮助它们进行通信和数据管理。中间件的主要目的是简化和加速应用程序的开发过程,提供通用的功能和服务,使开发者能够专注于业务逻辑而不是底层的技术细节。中间件的主要功能通信:中间件提供了不同应用程序或服务之间的通信机制,支持消息传递、远程过程调用(RPC)等。数据管理:中间件可以处理数据的存储、检索和管理,通常与数据库系
二、主流的架构方法论
伯牙碎琴
架构 架构
在企业软件开发和系统设计中,架构方法论提供了指导原则、最佳实践和框架来帮助架构师和开发团队设计和实施高质量的软件系统。以下是一些主流的架构方法论及其特点分析:1.TOGAF(TheOpenGroupArchitectureFramework)特点:广泛应用:TOGAF是一个行业标准的企业架构框架,广泛用于大型企业架构设计。架构开发方法(ADM):TOGAF的核心是架构开发方法(Architectu
农场游戏app开发公司
红匣子实力推荐
在数字化时代,移动应用已成为人们生活中不可或缺的一部分。随着智能手机的普及和移动互联网的发展,各种类型的App应运而生,其中,农场游戏App因其独特的娱乐性和教育意义而受到了广泛的欢迎。农场游戏App开发公司便是专门致力于设计和开发这类游戏的创新型企业。###公司简介农场游戏App开发公司通常是一家集软件开发、游戏设计和用户体验研究为一体的高科技企业。这些公司专注于创造模拟农场经营的游戏应用,让玩
css之雪碧图(精灵图)
星月心城
css css 前端
听到雪碧图是不是跟我一样,啥?雪碧图?不知所以。如果一张大图由许多小图构成,那么每张小图都需要进行网络请求,这样一来就会有很多请求,为了减少网络请求,雪碧图就出现了。雪碧图(Sprite)是一种在Web开发中常用的图像合并技术,将多个小图标或图片合并成一张大图,然后通过CSS来显示其不同部分。这种技术可以减少HTTP请求数量,提高网页加载速度。以下是本人自己写的例子,大图的图片是在百度找的http
COI实验室技能:图像到图像的深度学习开发框架(pytorch版)
山颠海涯
深度学习 pytorch 人工智能
Basicdeeplearningframeworkforimage-to-image这个开发框架旨在帮助科研人员快速地实现图像到图像之间的模型开发。github连接:https://github.com/SituLab/Basic-deep-learning-framework-for-image-to-image目录1模型开发1-1克隆项目到本地1-2深度学习开发2环境配置2-1安装conda
在线预览PDF和图片
oyxm____
pdf vue.js javascript
项目中遇到一个需要在线预览pdf以及图片功能,在网上找了很多插件发现都达不到理想需求,所有自己通过iframe标签自己封装了一个内嵌pdf页面通过判断当前文件流的后缀名来区分是pdf还是图片或者是其他类文档组件如下,需要的自取直接可用-->-->下载图片关闭import{online}from'@/api/system/user.js'exportdefault{props:{pdfDialog:
谷歌浏览器ChromeDriver 128,129,130驱动下载
下东西不要币多好
Python python
可以试试这个页面:https://googlechromelabs.github.io/chrome-for-testing/#stable我需要的128.0.6613.120就是在这里找到的,浏览器,驱动都能下
Python API操作RocketMQ
京城小筑
# Python编程 python
背景:开发背景:公司相关报表需求需要将订单业务数据同步至RocketMQ中,由于需要保证开发的一致性(多个部门协同开发),所以采用读取Hive离线数据的方式通过PythonAPI写入RocketMQ中,便于其他开发同事调用~开发环境:本地调试系统MacPython3.7.5rocketmq0.4.4(Python模块)rocketmq-client-python2.0.0(Python模块)服务器
【无标题】
真不爱学习
【乌卡时代】开发工具及技巧 intellij-idea idea
IntelliJIDEA的TODO功能:一个强大的代码注释工具IntelliJIDEA)IntelliJIDEAIntelliJIDEA是一款流行的Java集成开发环境(IDE),它提供了许多强大的功能,以帮助开发人员更高效地编写和调试代码。其中,TODO功能是其核心特性之一,它可以帮助开发人员在代码中标记出需要注意、尚未完成或需要进一步处理的部分。在IntelliJIDEA中,TODO是一种特殊
Java+selenium+chrome+linux/windows实现数据获取
fox_初始化
Java selenium chrome 测试工具 java linux windows
背景:在进行业务数据获取或者自动化测试时,通常会使用模拟chrome方式启动页面,然后获取页面的数据。在本地可以使用windows的chromedriver.exe进行打开chrome页面、点击等操作。在linux下通常使用无界面无弹窗的方式进行操作。接下来是实现方案。代码层面:关键工具类:ChromeDriverUtilpublicclassChromeDriverUtil{publicWebD
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多