首页 文章 精选 留言 我的

精选列表

搜索[代码生成],共10000篇文章
优秀的个人博客,低调大师

[转]区块链代码快速学习实践

如何使用Python编写一个简单且安全的区块链数据库API? GitHub项目链接:https://github.com/adamchinkc/blockchain_database 当我们讨论区块链时,我们总是把它与p2p网络联系起来,认为数据必须分散在网络上。这也会使人们担心区块链将会破坏数据的机密性。 事实上,区块链本身的数据架构已经为保护数据免受未经授权操作提供了一个好的解决方案,并且考虑到服务器受到足够的控制(如访问控制、网络和系统安全控制)的保护,最好是在内部网络。 因此,我尝试通过使用Python, Sqlite和RESTful API框架基于区块链的数据架构创建一个数据库。 区块链的数据架构及其完整性 摘自于中本聪发表的比特币白皮书《比特币:一种点对点电子现金系统》https://bitcoin.org/bitcoin.pd

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

05.Java网络编程(代码实践)

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统,网络管理软件及网络通信协议的协调下,实现资源贡献和信息传递的计算机系统 网络编程就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换 网络编程三要素: IP:每个设备在网络中的唯一标识,每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址 ipconfig:查看本机IP地址,ipv4地址 ping:测试连接 端口:每个程序在设备上的唯一标识,每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发送到哪台机器上,还需要确定发送到哪个程序,端口号范围:0~65535,编写的网络应用端口号尽量设置1024以上的,1024之下的基本上都被系统程序占用了 协议:为计算机网络进行数据交换而建立的规则,标准或约定的集合 UDP:面向无连接,数据不安全,速度快,不区分客户端与服务端 TCP:面向链接,三次握手,数据安全但效率低,分为客户端和服务端,三次握手的过程,客户端向服务端发起请求,服务端响应请求,传输数据 Socke套接字通信: 网络上具有唯一标识的IP地址和端口号组合在一起,才能构成唯一能识别的标识符套接字 通信的两端都有socket,网络通信其实就是socket间的通信,它通过IO流进行传输,Socket在应用程序中创建,通过一种绑定机制与驱动机制建立关系,告诉自己所对应的IP和端口 新建一个Java工程模拟UDP通信 图片1.png package com.ren.socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; /** * socket好比发货的码头,packet就是需要发送的集装箱货物,这个货物需要发送到哪里,它的地址 * 信息是在货物上标明的,所以packet构造方法上传递了发送目的地的地址和该地址上接收程序的端口 * @author renzhenming * */ public class Send { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); DatagramSocket socket = new DatagramSocket(); while(true){ String scan = sc.nextLine(); DatagramPacket packet = new DatagramPacket(scan.getBytes(), //或者用127.0.0.1也可以 scan.getBytes().length, InetAddress.getByName("192.168.1.103"), 9999); socket.send(packet); } } } package com.ren.socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 创建接收端 * @author renzhenming * */ public class Receive { public static void main(String[] args) throws IOException { //用于接收传递过来的数据 DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); //指定端口号,用于接收指定端口传递的数据 DatagramSocket socket = new DatagramSocket(9999); while(true){ //执行之后会将接收到的数据放在packet中 socket.receive(packet); //转换成字符串打印 byte[] arr = packet.getData(); int len = packet.getLength(); String ip = packet.getAddress().getHostAddress(); int port = packet.getPort(); System.out.println(ip+":"+port+":"+new String(arr,0,len)); } } } 为了演示效果,我们打开两个命令行,在命令行中分别执行这两个Java方法,先执行Receive端,注意要在bin目录下运行命令 图片1.png 开启线程执行 package com.ren.socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; /** * socket好比发货的码头,packet就是需要发送的集装箱货物,这个货物需要发送到哪里,它的地址 * 信息是在货物上标明的,所以packet构造方法上传递了发送目的地的地址和该地址上接收程序的端口 * @author renzhenming * */ public class SocketDemo { public static void main(String[] args) throws IOException { new Receive().start(); new Sender().start(); } } class Receive extends Thread{ @Override public void run() { super.run(); try { //用于接收传递过来的数据 DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); //指定端口号,用于接收指定端口传递的数据 DatagramSocket socket = new DatagramSocket(9999); while(true){ //执行之后会将接收到的数据放在packet中 socket.receive(packet); //转换成字符串打印 byte[] arr = packet.getData(); int len = packet.getLength(); String ip = packet.getAddress().getHostAddress(); int port = packet.getPort(); System.out.println(ip+":"+port+":"+new String(arr,0,len)); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Sender extends Thread{ @Override public void run() { super.run(); try { Scanner sc = new Scanner(System.in); DatagramSocket socket = new DatagramSocket(); while(true){ String scan = sc.nextLine(); DatagramPacket packet = new DatagramPacket(scan.getBytes(), //或者用127.0.0.1也可以 scan.getBytes().length, InetAddress.getByName("192.168.1.103"), 9999); socket.send(packet); } } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 新建一个Java工程模拟TCP通信 TCP协议的Socket通信,客户端通过Socket处理发送和接收,服务端通过ServerSocket 处理发送和接收 Socket_TCP_Client package com.ren.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; public class Socket_TCP_Client { public static void main(String[] args) throws UnknownHostException, IOException { //socket1(); socket2(); } //多个 private static void socket2() throws UnknownHostException, IOException { Socket socket = new Socket("127.0.0.1",12345); BufferedReader br = new BufferedReader (new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); System.out.println(br.readLine()); ps.println("我可以去哪里逛逛呢"); System.out.println(br.readLine()); ps.println("谢谢"); socket.close(); } //一次读取一个 private static void socket1() throws UnknownHostException, IOException { Socket socket = new Socket("127.0.0.1",12345); //输入流可以读取服务端输出流写出的数据 InputStream in = socket.getInputStream(); //输出流可以写出数据到服务端输入流 OutputStream out = socket.getOutputStream(); out.write("打开百度首页".getBytes()); byte[] arr = new byte[1024]; int len = in.read(arr); System.out.println("收到服务端数据:"+new String(arr,0,len)); } } Socket_TCP_Server package com.ren.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Socket_TCP_Server { public static void main(String[] args) throws Exception { //socket1(); //socket2(); socket3(); } //多线程开启服务器,可以接收多个客户端来咨询 private static void socket3() throws IOException { final ServerSocket serverSocket = new ServerSocket(12345); while(true){ new Thread(new Runnable() { @Override public void run() { try { Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader (new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println("欢迎来到中国"); //readLine是以换行为结束符读取一行数据的,如果客户端写入数据的时候使用了print而不是println,就会导致 //数据无法读取 System.out.println(br.readLine()); ps.println("你可以先去游览北京长城"); System.out.println(br.readLine()); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } } //实现多次读取 private static void socket2() throws Exception { ServerSocket serverSocket = new ServerSocket(12345); Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader (new InputStreamReader(socket.getInputStream())); PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println("欢迎来到中国"); //readLine是以换行为结束符读取一行数据的,如果客户端写入数据的时候使用了print而不是println,就会导致 //数据无法读取 System.out.println(br.readLine()); ps.println("你可以先去游览北京长城"); System.out.println(br.readLine()); socket.close(); } //实现单词读取 private static void socket1() throws IOException { //注意端口号不能超过65535 ServerSocket server = new ServerSocket(12345); //接收服务端数据,这个操作会阻塞线程,直到收到数据才往下执行 Socket socket = server.accept(); //接收到的客户端消息 InputStream is = socket.getInputStream(); byte[] arr = new byte[1024]; int len = is.read(arr); System.out.println("收到客户端数据:"+new String(arr,0,len)); //向客户端发送消息需要获取一个输入流然后write OutputStream os = socket.getOutputStream(); os.write("百度一下,你就知道".getBytes()); } }

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

Android中的intent调用代码总结

显示Web网页 Uri uri = Uri.parse("http://www.android123.com.cn"); Intent it = new Intent(Intent.ACTION_VIEW,uri); startActivity(it); 显示Google地图 Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.Action_VIEW,uri); startActivity(it); Maps路径规划 Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); Intent it = new Intent(Intent.ACTION_VIEW,URI); startActivity(it); 拨打电话 Uri uri = Uri.parse("tel:xxxxxx"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it); Uri uri = Uri.parse("tel.xxxxxx"); Intent it =new Intent(Intent.ACTION_CALL,uri); 注意需要权限android.permission.CALL_PHONE 发送SMS/MMS Intent it = new Intent(Intent.ACTION_VIEW); it.putExtra("sms_body", "android开发网欢迎您"); it.setType("vnd.android-dir/mms-sms"); startActivity(it); 发送短信 Uri uri = Uri.parse("smsto:10086"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); it.putExtra("sms_body", "10086"); //正文为10086 startActivity(it); 发送彩信 Uri uri = Uri.parse("content://media/external/images/media/10"); //该Uri根据实际情况修改,external代表外部存储即sdcard Intent it = new Intent(Intent.ACTION_SEND); it.putExtra("sms_body", "android123.com.cn"); it.putExtra(Intent.EXTRA_STREAM, uri); it.setType("image/png"); startActivity(it); 发送Email Uri uri = Uri.parse("mailto:android123@163.com"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); startActivity(it); Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_EMAIL, "android123@163.com"); it.putExtra(Intent.EXTRA_TEXT, "android开发网测试"); it.setType("text/plain"); startActivity(Intent.createChooser(it, "选择一个Email客户端")); Intent it=new Intent(Intent.ACTION_SEND); String[] tos={"android123@163.com"}; //发送到 String[] ccs={"ophone123@163.com"}; //抄送 it.putExtra(Intent.EXTRA_EMAIL, tos); it.putExtra(Intent.EXTRA_CC, ccs); it.putExtra(Intent.EXTRA_TEXT, "正文"); it.putExtra(Intent.EXTRA_SUBJECT, "标题"); it.setType("message/rfc822"); //编码类型 startActivity(Intent.createChooser(it, "选择一个Email客户端")); Email添加附件 Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_SUBJECT, "正文"); it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/nobody.mp3"); //附件为sd卡上的nobody MP3文件 sendIntent.setType("audio/mp3"); startActivity(Intent.createChooser(it, "选择一个Email客户端")); 播放多媒体 Intent it = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("file:///sdcard/nobody.mp3"); it.setDataAndType(uri, "audio/mp3"); startActivity(it); Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); //从系统内部的MediaProvider索引中调用播放 Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); Uninstall卸载程序 Uri uri = Uri.fromParts("package", packageName, null); //packageName为包名,比如com.android123.apkInstaller Intent it = new Intent(Intent.ACTION_DELETE, uri); startActivity(it); 进入联系人界面 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(People.CONTENT_URI); startActivity(intent); 查看某个联系人,当然这里是ACTION_VIEW,如果为选择并返回action改为ACTION_PICK,当然处理intent时返回需要用到startActivityforResult Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, ID);//最后的ID参数为联系人Provider中的数据库BaseID,即哪一行 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(personUri); startActivity(intent); 选择一个图片 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*");//此处->audio/*对应选择音频 video/*对应选择视频 startActivityForResult(intent, 0); 调用Android设备的照相机,并设置拍照后存放位置 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/cwj", android123 + ".jpg"))); //存放位置为sdcard卡上cwj文件夹,文件名为android123.jpg格式 startActivityForResult(intent, 0); 搜索指定package name在market上 Uri uri = Uri.parse("market://search?q=pname:com.android123.cwj"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 原文出处:后端技术杂谈 原文链接 转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册