首页 文章 精选 留言 我的

精选列表

搜索[页面布局],共10000篇文章
优秀的个人博客,低调大师

纯html页面中js如何获得项目路径

js,全称javascript,不过虽然是以java开头,不过与java一点关系都没有。 js和java有如下区别: (1)js是浏览器端的语言,而java是服务器端的语言。 (2)js是动态语言,java是静态语言。 (3)java是基于面向对象的编程语言,而js虽有对象这个概念,但是只是基于对象而不能直接继承; 这里要提一点动态和静态是什么意思? 简单的说,动态就是不需要编译就能执行,而静态需要编译执行。 现在比较流行的就是前后端分离,如果用纯html开发+js获取后台数据,那么路径又怎么获得的呢? 既然是浏览器,那不得不提一个web开发最基础也最重要的东西,HTTP协议。 这里我要引用一位朋友的话: HTTP请求具有如下特点: (1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 (2)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (3)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 (4)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。(5)支持B/S及C/S模式。 这里还不得不提一个概念: HTTP请求中的URL HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息 URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成: http://www.yc520.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name 从上面的URL可以看出,一个完整的URL包括以下几部分:(1)协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符 (2)域名部分:该URL的域名部分为“www.yc520.com”。一个URL中,也可以使用IP地址作为域名使用 (3)端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口 (4)虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/” (5)文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名 (6)锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分 (7)参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。 下面我们进入正题,如何通过js获取项目路径? 如下js代码即可获取: /** * 项目路径 */ window.onload=function(){ getPath(); } function getPath(){ var pathName = document.location.pathname; var index = pathName.substr(1).indexOf("/"); var result = pathName.substr(0,index+1); $("#path").val(result); } 关于js这部分,我将在后续写一个连载系统篇为大家详细介绍和讲解js。一来分享心得,二来总结。

优秀的个人博客,低调大师

Nginx开启gzip压缩大幅提高页面加载速度

1、Vim打开Nginx配置文件 vim/usr/local/nginx/conf/nginx.conf 2、找到如下一段,进行修改 gzip on;gzip_min_length 1k;gzip_buffers 4 16k;#gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/font-woff;gzip_vary off;gzip_disable "MSIE [1-6]\."; 3、解释一下 第1行:开启Gzip 第2行:不压缩临界值,大于1K的才压缩,一般不用改 第3行:buffer,就是,嗯,算了不解释了,不用改 第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1 第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧 第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了 第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧 第8行:IE6对Gzip不怎么友好,不给它Gzip了 4、:wq保存退出,重新加载Nginx /usr/local/nginx/sbin/nginx -s reload 5、用curl测试Gzip是否成功开启 curl -I -H "Accept-Encoding: gzip, deflate" "http://www.slyar.com/blog/" HTTP/1.1 200 OKServer: nginx/1.0.15Date: Sun, 26 Aug 2012 18:13:09 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/5.2.17p1X-Pingback: http://www.slyar.com/blog/xmlrpc.phpContent-Encoding: gzip 谋胆并重

优秀的个人博客,低调大师

【Android Demo】获取指定网页的页面源代码

1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * 获取HTML数据 * * @author David * */ public class HtmlService { public static String getHtml(String path) throws Exception { // 通过网络地址创建URL对象 URL url = new URL(path); // 根据URL // 打开连接,URL.openConnection函数会根据URL的类型,返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设定URL的请求类别,有POST、GET 两类 conn.setRequestMethod("GET"); //设置从主机读取数据超时(单位:毫秒) conn.setConnectTimeout(5000); //设置连接主机超时(单位:毫秒) conn.setReadTimeout(5000); // 通过打开的连接读取的输入流,获取html数据 InputStream inStream = conn.getInputStream(); // 得到html的二进制数据 byte[] data = readInputStream(inStream); // 是用指定的字符集解码指定的字节数组构造一个新的字符串 String html = new String(data, "utf-8"); return html; } /** * 读取输入流,得到html的二进制数据 * * @param inStream * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } inStream.close(); return outStream.toByteArray(); } } MainActivity.java修改如下: public class MainActivity extends Activity { private String path = "http://www.cnblogs.com/yc-755909659/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView)this.findViewById(R.id.textView); try { String htmlContent = HtmlService.getHtml(path); textView.setText(htmlContent); } catch (Exception e) { textView.setText("程序出现异常:"+e.toString()); } } } activity_main.xml很简单,还是放上来吧 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </ScrollView> 最后,记得添加网络访问权限哦 <uses-permission android:name="android.permission.INTERNET"/> 本文转自叶超Luka博客园博客,原文链接:http://www.cnblogs.com/yc-755909659/p/4193947.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

android页面切换和常用方法的执行顺序

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 package com.example.android.active; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; /** *@deprecatedActivity生命周期中的7大方法和四中状态 **/ public class MainActivity extends Activity{ /** *Activity被创建时调用 *可以在该方法中初始化UI组件 *该方法调用完毕会调用onStart()方法 **/ @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println( "MainActivity-onCreate()" ); } /** *被onCreate()调用,此时activity课件,但不能被操作 *该方法会调用onResume()或者onStop()方法 **/ @Override protected void onStart(){ //TODOAuto-generatedmethodstub super .onStart(); System.out.println( "MainActivity-onStart()" ); } /** *当一个处于stop状态下的activity重新获取焦点时调用 *该方法会调用onStart方法 * * **/ @Override protected void onRestart(){ //TODOAuto-generatedmethodstub super .onRestart(); System.out.println( "MainActivity-onRestart()" ); } /** *被onStart()调用,此时activity可见可交互, *此时,activity处于激活(Running)状态 * **/ @Override protected void onResume(){ super .onResume(); System.out.println( "MainActivity-onResume()" ); } /** *当activity处于运行状态,被其他activity覆盖(位完全覆盖式调用) *此时activity处于暂停状态,失去焦点,不可操作 *此状态下activity可以被kill掉 *如果当用户返回该activity,那么会调用onResume方法,重新获取焦点 **/ @Override protected void onPause(){ //TODOAuto-generatedmethodstub super .onPause(); System.out.println( "MainActivity-onPause()" ); } /** *当activity完全被另一个activity覆盖时被调用 *此时activity进入停止状态,完全不可见 *此状态下activity可以被kill掉 *当用户重新回到改activity,会调用restart方法 * * **/ @Override protected void onStop(){ //TODOAuto-generatedmethodstub super .onStop(); System.out.println( "MainActivity-onStop()" ); } /** *当activity调用了finish方法,或被系统销毁时被调用 *可以在该方法中进行资源释放的工作 **/ @Override protected void onDestroy(){ //TODOAuto-generatedmethodstub super .onDestroy(); System.out.println( "MainActivity-onDestory()" ); } @Override public boolean onCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); return true ; } /** *通过这个方法跳转到activity2界面*/ public void gotoActivity2(Viewv){ //创建一个意图 Intentintent= new Intent( this ,MainActivity2. class ); //启动另一个activity startActivity(intent); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 package com.example.android.active; import android.app.Activity; import android.os.Bundle; import android.view.Menu; public class MainActivity2 extends Activity{ /** *Activity被创建时调用 *可以在该方法中初始化UI组件 *该方法调用完毕会调用onStart()方法 **/ @Override protected void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println( "MainActivity2-onCreate()" ); } /** *被onCreate()调用,此时activity课件,但不能被操作 *该方法会调用onResume()或者onStop()方法 **/ @Override protected void onStart(){ //TODOAuto-generatedmethodstub super .onStart(); System.out.println( "MainActivity2-onStart()" ); } /** *当一个处于stop状态下的activity重新获取焦点时调用 *该方法会调用onStart方法 * * **/ @Override protected void onRestart(){ //TODOAuto-generatedmethodstub super .onRestart(); System.out.println( "MainActivity2-onRestart()" ); } /** *被onStart()调用,此时activity可见可交互, *此时,activity处于激活(Running)状态 * **/ @Override protected void onResume(){ super .onResume(); System.out.println( "MainActivity2-onResume()" ); } /** *当activity处于运行状态,被其他activity覆盖(位完全覆盖式调用) *此时activity处于暂停状态,失去焦点,不可操作 *此状态下activity可以被kill掉 *如果当用户返回该activity,那么会调用onResume方法,重新获取焦点 **/ @Override protected void onPause(){ //TODOAuto-generatedmethodstub super .onPause(); System.out.println( "MainActivity2-onPause()" ); } /** *当activity完全被另一个activity覆盖时被调用 *此时activity进入停止状态,完全不可见 *此状态下activity可以被kill掉 *当用户重新回到改activity,会调用restart方法 * * **/ @Override protected void onStop(){ //TODOAuto-generatedmethodstub super .onStop(); System.out.println( "MainActivity2-onStop()" ); } /** *当activity调用了finish方法,或被系统销毁时被调用 *可以在该方法中进行资源释放的工作 **/ @Override protected void onDestroy(){ //TODOAuto-generatedmethodstub super .onDestroy(); System.out.println( "MainActivity2S-onDestory()" ); } @Override public boolean onCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); return true ; } } 文件配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <application android:allowBackup= "true" android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" android:theme= "@style/AppTheme" > <activity android:name= "com.example.android.active.MainActivity" android:label= "@string/app_name" > <intent-filter> <actionandroid:name= "android.intent.action.MAIN" /> <categoryandroid:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name= ".MainActivity2" > </activity> </application> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <RelativeLayoutxmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android:layout_width= "match_parent" android:layout_height= "match_parent" android:paddingBottom= "@dimen/activity_vertical_margin" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop= "@dimen/activity_vertical_margin" tools:context= ".MainActivity" > <TextView android:id= "@+id/textView1" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/hello_world" /> <Button android:id= "@+id/button1" style= "?android:attr/buttonStyleSmall" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_below= "@+id/textView1" android:layout_marginLeft= "15dp" android:layout_marginTop= "32dp" android:layout_toRightOf= "@+id/textView1" android:text= "启动第二个activity" android:onClick= "gotoActivity2" /> </RelativeLayout> 运行项目 点击启动第二个activity后 点击返回按钮后 本文转自 matengbing 51CTO博客,原文链接:http://blog.51cto.com/matengbing/1880918

优秀的个人博客,低调大师

Oracle Database 12c新特性汇总页面

clean Liu关于DB 12c新特性的研究文章如下: 【Oracle Database 12c新特性】 In-Database Archiving数据库内归档【Oracle Database 12c新特性】SYS_AUTO_SPM_EVOLVE_TASK 自动作业【Oracle Database 12c新特性】Online Statistics Gathering for Bulk-Load 针对批量数据加载的在线统计信息收集【Oracle Database 12c新特性】32k varchar2 max_string_size【12c新特性】RAC Cluster Hub Node-Leaf Node【Oracle Database 12c新特性】ASM Scrubbing Disk Groups【Oracle Database 12c新特性】TTnn TMON新的redo传输后台进程【12c database 新特性】Adaptive Execution Plans 自适应的执行计划【Oracle Database 12c新特性】wait event DISPLAY_NAME【Oracle Database 12c新特性】Information Lifecycle Management ILM和Storage Enhancements【Oracle Database 12c新特性】ORACLE_MAINTAINED12c Pluggable Database Container Database可插拔数据库特性专题从谷歌趋势看谁在研究Oracle 12c【12c新特性】12cR1 ROWID IO Batching特性【12c新特性】12cR1中新加入的Statistic【12c新特性】12c中新后台进程【12c新特性】12c中新加入的Enqueue Lock【12c新特性】12c中新增的V$动态视图【12c新特性】多LGWR进程SCALABLE LGWR “_use_single_log_writer”【12c新特性】12cR1 diff 11gR2 Hidden Parameters【12c新特性】CBO Optimizer优化器新特性列表【12c新特性】12c中如何自动启动PDB Pluggable DatabaseOracle Database 12c架构图【Maclean Liu技术分享】12c 12.1.0.1 RAC安装教学视频 基于Vbox+Oracle Linux 5.7oracle database 12c release 1 (12.1.0.1.0) 正式公开发布了12c Pluggable Database Container Database权限与角色管理【12c新特性】安装12c Standalone Grid Infrastructure【12c新特性】EM Database Express将在版本11.2之后废弃或不再支持的特性解读Tom介绍的Oracle Database 12c的12个新特性解读Oracle Database 12.1新特性Pluggable Databases12c分页查询特性FETCH FIRST ROWS,OFFSET ROWS FETCH NEXT ROW LIMIT Clause子句【12c新特性】dbms_stats report_gather_auto_stats统计信息报告特性12c新特性:Recover TableOracle Database 12c(12.1) Beta已经开始内部测试【Database 12c】手动创建CDB Container Database容器数据库【Oracle Database 12c新特性】 12c DataPump Expdp/Impdp新特性 DB 12c的课程列表: 本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278590

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册