首页 文章 精选 留言 我的

精选列表

搜索[最权威安装],共10000篇文章
优秀的个人博客,低调大师

【Dubbo 开发者日北京站】这可能是微服务开发者们关注的技术盛宴

亮点解读 Dubbo 2019 将走向哪里?现场围观 Dubbo Roadmap 2019 Java 劝退师小马哥现场演绎《Apache Dubbo 服务自省设计与实现》 开源项目:Spring Cloud Alibaba/Seata/Sentinel/Nacos 等各路技术专家技艺切磋 若您无法来现场,参与调研,有机会免费拿《码出高效,Java 开发手册》等奖品。 报名链接:点击这里预约直播(云栖社区):点击这里

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

安卓开发学习笔记(五):史上简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法

一.我们先在XML当中自定义一个webview(Second_layout.xml) 代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context=".SecondActivity" 9 android:background="@drawable/ic_launcher"> 10 <WebView 11 android:id="@+id/webView" 12 13 android:layout_width="match_parent" 14 android:layout_height="match_parent" /> 15 </LinearLayout> 可以看到,这里我们使用了现行布局以及WebView控件,tools:context=".SecondActivity"告诉我们这个控件是定义在第二个主活动当中的。这个控件的唯一标识符是:@+id/webView。这个标识符有利于我们在第二个主活动当中对这个控件的布局进行调用。这样,我们的XML代码就写好了,是不是很简单呢?嘿嘿,下面我们进行第二个主活动的编写(当然您也可以使用第一个主活动当中编写Java代码来进行控件背后的业务逻辑的实现,笔者只是在第二个主活动当中进行了实现,并无实质上的区别哦!) 二.开始主活Java代码业务逻辑实现(SecondActivity.java) 首先我们开始导入必要的包,没有导入这些包的话,程序就会报错哦!需要导入的包有: 1 package com.example.lenovo.activitytest; 2 3 import android.net.http.SslError; 4 import android.os.Bundle; 5 import android.support.v7.app.AppCompatActivity; 6 import android.webkit.SslErrorHandler; 7 import android.webkit.WebSettings; 8 import android.webkit.WebView; 9 import android.webkit.WebViewClient; 然后开始主活动(或者说第二个活动也可以)的编写!这里我们继承的是AppCompatActivity这个类: 1 public class SecondActivity extends AppCompatActivity { 2 private WebView webView; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.second_layout); 7 init(); 8 } 9 10 private void init(){ 11 webView = (WebView) findViewById(R.id.webView); 12 //需要加载的网页的url 13 webView.loadUrl("https://www.baidu.com"); 14 WebSettings settings = webView.getSettings(); 15 // 如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript 16 settings.setJavaScriptEnabled(true); 17 webView.setWebViewClient(new WebViewClient(){ 18 public boolean shouldOverrideUrlLoading(WebView view, String url){ 19 view.loadUrl(url); 20 return true; 21 } 22 });}} 利用这种方法的话,就可以十分容易地实现对我们网页的访问了!是不是很激动了呢?但是我们可以看看我们WebView控件的代码后面加载的是https协议所对应的网站,但是仅应用这些代码我们是只能够实现在APP当中查看具有http协议的网站,如果您只想访问具有http协议的网站,那么这就够咯。不过您要是想要实现访问具有https协议的网站的话,我们还必须在下面加上这一段代码了!: 1 webView.setWebViewClient(new WebViewClient() { 2 @Override 3 public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 4 //等待证书响应 5 handler.proceed(); 6 } 7 }); 这个时候软件后面的逻辑就全部编写完毕了,但是当程序进行运行的时候,Android stuidio也不会报错,可我们打开我们的APP一看就会发现我们还是打不开网页的,APP上会显示NET::ERR_CACHE_MISS的错误,因此我们来到程序编写的最后一步,来华丽的实现我们的webview控件的编写。 三.在Manifest.xml当中注册 我们只需要在Manifest.xml文件下面,webview加载网页时提示NET::ERR_CACHE_MISS的错误,原因很简单,就是没有添加网络访问的权限,在AndroidManifest.xml中加下就好了,如下: 1 </application> 2 <uses-permission android:name="android.permission.INTERNET" /> 这样的话,就可以让安卓应用进行肆无忌惮地访问网站啦! 四.实现效果如下: 怎么样,还算简单吧!嘿嘿

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

用java实现简单的网络通信,相当于一个简单的控制台qq(附代码)

看完了《think in java》开始中文翻译的还行,到了后来就感觉有点乱了,干脆就看英文版的了。看完之后感触颇深。java!有前途! 开始学java网络方面的东西时,实在是无从下手,走了不少弯路。毕竟是在没有老师指导的情况下,网上文章多而不精,多是讲理论的东西。可能是太简单的缘故,高手都不屑一顾了。不过经过“不懈努力”还是给整明白了。 java网络通讯可以由"java.rmi"包和"java.net"来实现,rmi(remote method invocation)远程方法调用。如果想了解这两个包可以查看java帮助文档中的例子,本文就不做详细说明了。本文主要讲"java.net"中的"socket"通信方法. 那么什么是socket呢?一个socket连结就相当于一个生活中的电话连接。电话有电话号码,那么socket有需要什么呢?一个是主机名或域名如( [url]www.sina.com[/url])或ip地址,另一个是端口。什么是端口?如果说ip地址代表一个旅馆,那么端口就是房间号。这回明白了吧。 传统通信一般有服务端(server)和客户端(client)不过现在这种差别正在越来越小,甚至没有了c/s的差别。两个人聊qq,双方都是对等的。不过为方便起见还是按c/s讲了。 首先了解一下通讯的的基本模式。 服务端server ServerSocket listener = new ServerSocket(4700); //建立监听对象listener,端口自便不过不要设在0-1023之间 Socketserver = listener.accept(); //建立服务段对象 InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream();//创建输入输出流 server.close(); 客户端client Socket client = new Socket("192.168.1.12",4700); //建立socket对象连接到192.168.1.12端口为4700的服务端(如果你只有一台电脑那 //么可以把ip设为127.0.0.1 InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream();//创建输入输出流 server.close(); 好了客户端和服务端都通过in和out就可以通信了 详细代码: client: import java.io.*; import java.net.*; import ToolClass.*;//里面是一个输入类用于测试 public class Client { /** Creates a new instance of Client */ public Client() { } public static void main(String[] args){ System.out.println("this is client"); try{ String writetext=null; String get=null; Socket client = new Socket("192.168.1.12",4700); while(writetext!="bye"){ InputStream in = client.getInputStream(); OutputStream out = client.getOutputStream(); writetext = Input.readString();//send PrintWriter pout = new PrintWriter(out,true); pout.println(writetext); BufferedReader bin = new BufferedReader(new InputStreamReader(in));//receive get = bin.readLine(); System.out.println("client output:"+get); } client.close(); System.out.println("client:good bye"); } catch(IOException e){ System.out.println("err"); } } } server: import java.io.*; import java.net.*; import ToolClass.*; public class Server { /** Creates a new instance of Server */ public Server() { } public static void main(String[] args){ System.out.println("this is server"); try{ ServerSocket listener = new ServerSocket(4700); String receive=null; String send=null; Socket server = listener.accept(); while(receive!="bye"){ InputStream in = server.getInputStream(); OutputStream out = server.getOutputStream(); BufferedReader bin = new BufferedReader(new InputStreamReader(in));//receive receive = bin.readLine(); System.out.println("server output:"+receive); send = Input.readString();//sendinfo PrintWriter pout = new PrintWriter(out,true); pout.println(send); } server.close(); listener.close(); System.out.println("server:bye"); } catch(IOException e){ System.out.println("err"); } } } Input类: package ToolClass; import java.io.*; /** * * @author zsj1 */ public class Input { /** Creates a new instance of Input */ public Input() { } static InputStreamReader isr=new InputStreamReader(System.in); static BufferedReader br=new BufferedReader(isr); public static int readInt(){ int i=0; try{ i=Integer.parseInt(br.readLine()); } catch(Exception e){ System.out.println(e); } return i; } public staticfloat readFloat() { float f=0.0f; try{ f=Float.parseFloat(br.readLine()); } catch(Exception e){ System.out.println(e); } return f; } public staticString readString() { String s=""; try{ s=br.readLine(); } catch(Exception e){ System.out.println(e); } return s; } public staticdouble readDouble() { double d=0.0d; try{ d=Double.parseDouble(br.readLine()); } catch(Exception e){ System.out.println(e); } return d; } } 把三段代码放在三个.java文件里,并放在同一个文件夹下,就可以运行测试了。你愿意的话还可以改成图形界面的。 有不明白的email我 [email]xhinker@163.com[/email] 本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/134238,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册