static

Java基础回顾-03

独自空忆成欢 提交于 2020-01-20 21:26:21
一 并发 1 共享内存 每一个线程表示一条单独的执行流,有自己的程序计数器,有自己的栈,但线程之间可以共享内存,它们可以访问和操作相同的对象。 import java.util.ArrayList; import java.util.List; public class ShareMemoryDemo { private static int shared = 0; private static void incrShared() { shared++; } static class ChildThread extends Thread { List<String> list; public ChildThread(List<String> list) { this.list = list; } @Override public void run() { incrShared(); list.add(Thread.currentThread().getName()); } } public static void main(String[] args) throws InterruptedException { List<String> list = new ArrayList<String>(); Thread t1 = new ChildThread(list); Thread

jdk8中接口默认方法,以及在Mybatis中MapperProxy的应用

好久不见. 提交于 2020-01-20 20:52:15
默认方法的介绍 自jdk8开始接口中可以声明default方法。 oracle官网jdk各个版本更新信息的地址: https://docs.oracle.com/en/java/javase/index.html jdk8中对新增的默认方法的介绍: 官网介绍连接 Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces. 默认方法允许将新功能添加到库的接口,并确保与为这些接口的较早版本编写的代码二进制兼容。 默认方法的原理 default声明的方法编译后实际上是public修饰的非abstract方法 //声明接口 public interface Java8interface { int num = 100 ; void Method ( ) ; default void defaultMethod ( ) { System . out . println ( "I am default method!" ) ; } } //反编译结果 //默认修饰符 //方法:public abstract /

四、单件模式--创建型模式

跟風遠走 提交于 2020-01-20 15:20:52
单件模式:某一个类只有一个实例,并且这个实例是在类内部进行实例化,并向整个系统提供该实例。 单件模式UML类图: class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetSington(); Singleton s2 = Singleton.GetSington(); if (s1 == s2) { Console.WriteLine("相同"); } else { Console.WriteLine("不相同"); } Console.ReadKey(); } } public sealed class Singleton { private static Singleton _Singleton = null; private Singleton() { } public static Singleton GetSington() { if (_Singleton == null) { _Singleton = new Singleton(); } return _Singleton; } } View Code 示例说明: 示例中使用Singleton类的GetSington()方法对单例进行处理,如果私有对象_Singleton为空则调用私有构造函数创建对象

设计模式之单例模式(一)

冷暖自知 提交于 2020-01-20 08:35:02
目录 一,什么是单例模式。 二,实现方式。 2.1 使用普通的方式改进 2.2 使用加锁的方式改进 2.2.1 直接加锁 2.2.2 双重检查 三, 总结 一,什么是单例模式。 举个最简单的例子,一山容不得二虎,简单地说就是一座山不能同时生活两只老虎,以此引入到oop的世界也就是一个类只能有一个实例化的对象,再多就不行了。那么什么时候会有这种需求呢?比较常见的就是数据库的连接池,线程池,windows的控制面板等,为什么同时只能实例化一个对象呢?针对前两者,无论是数据库的连接池还是线程池创建的目的就是用于公共,循环使用的有限资源,你要是同时创建多个,没能复用,不白白地浪费了资源;而对于控制面板则更好理解,要是能同时创建多个控制面板的实例,当我对不同的实例进行不同的操作,那么设置肯定会出问题的,比如一个设置让我向东,一个设置让我向西,为了避免此类情况,只能有一个控制面板的设置有效。 二,实现方式。 在Java中创建类对象是使用new关键字,要想达到阻止客户端调用时随便new对象,不难想到只要将类的构造器设为私有的,就能达成目的;但是不能new了,那么该如何获取类的对象呢?此时可以通过暴露公共的接口,然后每次返回同一个类对象即可,代码如下: public class Singleton { private Singleton(){} private static Singleton

复习java基础第一天

假装没事ソ 提交于 2020-01-20 06:44:26
一:static static: 静态的. 1. 若需要一个类的多个对象共享一个变量,则该变量需要使用 static 修饰. 2. 因为 static 修饰的变量为类的所有的实例所共享,所以 static 成员不属于某个类的实例, 而属于整个类. 所以 在访问权限允许的情况下,可以使用 "类名." 直接访问静态成员 (成员包括属性和方法). 3. 注意: 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员 . 这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象. 4. 同 3 的道理: 静态方法不能以任何方式引用this和super关键字 . 5. 非静态方法中可以直接来访问类的静态成员. 6. main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象. 7. 静态初始化指对类的静态属性进行初始化. 7.1 不应该在构造器中对静态成员进行初始化: 因为静态成员不因类的实例而改变. 7.2 1 //非静态代码块: 先于构造器执行,每创建一个对象都会执行一次. 2 { 3 System.out.println("非静态代码块"); 4 } 7.3 1 //静态代码块: 使用 static 修饰的代码块 2 //在类被加载时执行一次,且执行一次.

Djnago项目部署之 uWSGI+Nginx

两盒软妹~` 提交于 2020-01-20 04:11:45
1、搭建服务器虚拟环境 (1)进入乌班图系统并创建虚拟python3环境 mkvirtualenv -p python3 环境名称 (2)打开虚拟环境 workon 环境名称 (3) 退出虚拟环境 deactivate (4)删除洵虚拟环境 rmvirtualenv 虚拟环境名 (5)通过ftp软件将项目代码和plist.txt文件上传到服务器。 (6)在本机进入虚拟环境,执行命令导出当前需要的所有包。 pip freeze > plist.txt (7)在虚拟环境上安装包。 pip install -r plist.txt 2、WSGI 和 uWSGI WSGI:全拼为Python Web服务器网关接口,Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。没有正式的实现,因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。 项目标准化会生成一个wsgi.py文件,确定了设置模块,应用程序对象。 application对象:在Python模块中使用application对象与应用服务器交互。 settings模块:用于进行项目配置。 uWSGI:uWSGI实现了WSGI的所有接口,是一个快速,自我修复,开发人员和系统管理员友好的服务器

树莓派设置静态IP

走远了吗. 提交于 2020-01-20 00:08:16
通过配置树莓派的静态ip,这样就可以避免重启后树莓派ip改变,从而我们需要重新查看器ip地址等等。 修改/etc/dhcpcd.conf,大概有以下几种指令: #测试可以使用,会打开GNN编辑器 sudo nano / etc / dhcpcd . conf #测试可以读取文本,无法编辑 sudo vi / etc / dhcpcd . conf #测试无法使用 sudo vim / etc / dhcpcd . conf 注:GNN为Linux自带的编辑器 步骤: 1 打开 sudo nano /etc/dhcpcd.conf 2 在文本末尾添加如下代码 interface eth0 static ip_address = 192.168 .1 .12 / 24 static routers = 192.168 .1 .1 static domain_name_servers = 192.168 .1 .1 interface wlan0 static ip_address = 192.168 .1 .100 / 24 static routers = 192.168 .1 .1 static domain_name_servers = 192.168 .1 .1 3 按下crtl+x返回 4 sudo reboot重启 测试 方法一:可以使用网线连接树莓派

单例模式

落花浮王杯 提交于 2020-01-19 15:49:56
Java 单例模式 单例模式 非延迟加载单例类 public class Singleton {    private Singleton ( ) { }    private static final Singleton instance = new Singleton ( ) ;    public static Singleton getInstance ( ) {      return instance ;    } } 简单的同步延迟加载 public class Singleton {    private static Singleton instance = null ;    public static synchronized Singleton getInstance ( ) {      if ( instance == null )       instance = new Singleton ( ) ;      return instance ;    } } 双重检查成例延迟加载 public class Singleton {    private static volatile Singleton instance = null ;    public static Singleton getInstance ( ) {      if (

17_常用API_第17天(包装类、System、Math、Arrays、大数据运算)_讲义

依然范特西╮ 提交于 2020-01-19 11:52:29
今日内容介绍 1、基本类型包装类 2、System类 3、Math类 4、Arrays类 5、大数据运算 01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。 而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型, 如年龄需要转换成int类型,考试成绩需要转换成double类型等 *b.八种基本类型对应的包装类 char Character int Integer byte Byte short Short long Long float Float double Double boolean Boolean 02Integer类parseInt方法 *A:Integer类parseInt方法: *a:parseInt() int i = Integer.parseInt("12"); System.out.println(i/2);//6 *b:parseInt(String s, int radix) /* * Integer类静态方法parseInt(String s, int radix) * radix基数,进制 * "110",2 含义 前面的数字是二进制的,但是方法parseInt运行结果都是十进制 * 指定进制的字符串转换为十进制的整数 *

条件变量为什么要和互斥量一起使用?

我是研究僧i 提交于 2020-01-19 06:11:12
一个简单的使用条件变量的场景:主线程从stdin读取一个字符串,然后由echo线程打印这个字符串,正确的代码是这样的: # include <iostream> # include <condition_variable> # include <mutex> # include <thread> # include <string> # include <stdio.h> static std :: condition_variable cv ; static std :: mutex m ; static bool ready = false ; static std :: string s ; static void echoWorker ( ) { std :: unique_lock < std :: mutex > lock ( m ) ; while ( ! ready ) { cv . wait ( lock ) ; } std :: cout << "echo string: " << s << std :: endl ; } int main ( ) { const int BUF_LEN = 20 ; std :: thread t ( [ ] ( ) { echoWorker ( ) ; } ) ; char buffer [ BUF_LEN ] ;